summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.devcontainer/devcontainer.json2
-rw-r--r--CHANGELOG.md12
-rw-r--r--locales/ca-ES.yml21
-rw-r--r--locales/de-DE.yml4
-rw-r--r--locales/en-US.yml10
-rw-r--r--locales/es-ES.yml70
-rw-r--r--locales/index.d.ts11
-rw-r--r--locales/it-IT.yml2
-rw-r--r--locales/ja-JP.yml2
-rw-r--r--locales/ko-KR.yml2
-rw-r--r--locales/nl-NL.yml459
-rw-r--r--locales/pt-PT.yml240
-rw-r--r--locales/ro-RO.yml770
-rw-r--r--locales/th-TH.yml15
-rw-r--r--locales/vi-VN.yml138
-rw-r--r--locales/zh-CN.yml3
-rw-r--r--locales/zh-TW.yml4
-rw-r--r--package.json22
-rw-r--r--packages/backend/package.json70
-rw-r--r--packages/backend/src/core/DriveService.ts7
-rw-r--r--packages/backend/src/core/FanoutTimelineEndpointService.ts20
-rw-r--r--packages/backend/src/core/ImageProcessingService.ts1
-rw-r--r--packages/backend/src/core/QueryService.ts38
-rw-r--r--packages/backend/src/core/RoleService.ts3
-rw-r--r--packages/backend/src/core/SearchService.ts12
-rw-r--r--packages/backend/src/models/json-schema/role.ts4
-rw-r--r--packages/backend/src/server/ServerService.ts7
-rw-r--r--packages/backend/src/server/api/ApiCallService.ts166
-rw-r--r--packages/backend/src/server/api/endpoint-base.ts10
-rw-r--r--packages/backend/src/server/api/endpoints/antennas/notes.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/channels/timeline.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/chat/messages/delete.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/chat/messages/react.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/chat/messages/unreact.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/chat/rooms/delete.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/chat/rooms/invitations/ignore.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/chat/rooms/join.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/chat/rooms/leave.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/chat/rooms/mute.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/clips/notes.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/drive/files/create.ts7
-rw-r--r--packages/backend/src/server/api/endpoints/notes/children.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/notes/featured.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/notes/local-timeline.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/notes/mentions.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/notes/renotes.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/notes/replies.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/notes/search-by-tag.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/notes/timeline.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/roles/notes.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/users/featured-notes.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/users/notes.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/users/reactions.ts1
-rw-r--r--packages/backend/src/server/web/style.css1
-rw-r--r--packages/backend/src/server/web/style.embed.css1
-rw-r--r--packages/backend/test-federation/compose.tpl.yml4
-rw-r--r--packages/backend/test-federation/compose.yml8
-rw-r--r--packages/backend/test/e2e/api.ts4
-rw-r--r--packages/backend/test/unit/server/api/drive/files/create.ts108
-rw-r--r--packages/frontend-embed/package.json24
-rw-r--r--packages/frontend-shared/js/collapsed.ts37
-rw-r--r--packages/frontend-shared/js/const.ts1
-rw-r--r--packages/frontend-shared/package.json10
-rw-r--r--packages/frontend/.storybook/changes.ts2
-rw-r--r--packages/frontend/package.json38
-rw-r--r--packages/frontend/src/components/MkAbuseReportWindow.vue4
-rw-r--r--packages/frontend/src/components/MkAntennaEditor.vue4
-rw-r--r--packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue4
-rw-r--r--packages/frontend/src/components/MkDrive.vue7
-rw-r--r--packages/frontend/src/components/MkFileCaptionEditWindow.vue4
-rw-r--r--packages/frontend/src/components/MkFolder.vue40
-rw-r--r--packages/frontend/src/components/MkForgotPassword.vue4
-rw-r--r--packages/frontend/src/components/MkFormDialog.vue4
-rw-r--r--packages/frontend/src/components/MkInfo.vue1
-rw-r--r--packages/frontend/src/components/MkNote.vue2
-rw-r--r--packages/frontend/src/components/MkNoteDetailed.vue2
-rw-r--r--packages/frontend/src/components/MkNotes.vue30
-rw-r--r--packages/frontend/src/components/MkNotificationSelectWindow.vue4
-rw-r--r--packages/frontend/src/components/MkPageWindow.vue3
-rw-r--r--packages/frontend/src/components/MkPasswordDialog.vue4
-rw-r--r--packages/frontend/src/components/MkReactionsViewer.reaction.vue1
-rw-r--r--packages/frontend/src/components/MkReactionsViewer.vue2
-rw-r--r--packages/frontend/src/components/MkRemoteEmojiEditDialog.vue4
-rw-r--r--packages/frontend/src/components/MkRoleSelectDialog.vue5
-rw-r--r--packages/frontend/src/components/MkSchedulePostListDialog.vue4
-rw-r--r--packages/frontend/src/components/MkSignupDialog.form.vue4
-rw-r--r--packages/frontend/src/components/MkSignupDialog.rules.vue4
-rw-r--r--packages/frontend/src/components/MkSystemWebhookEditor.vue4
-rw-r--r--packages/frontend/src/components/MkTimeline.vue110
-rw-r--r--packages/frontend/src/components/MkTokenGenerateWindow.vue4
-rw-r--r--packages/frontend/src/components/MkTutorialDialog.vue28
-rw-r--r--packages/frontend/src/components/MkUserAnnouncementEditDialog.vue4
-rw-r--r--packages/frontend/src/components/MkUserSetupDialog.vue26
-rw-r--r--packages/frontend/src/components/SkMfmWindow.vue4
-rw-r--r--packages/frontend/src/components/global/MkPageHeader.vue27
-rw-r--r--packages/frontend/src/components/global/MkSpacer.vue58
-rw-r--r--packages/frontend/src/components/global/PageWithHeader.vue47
-rw-r--r--packages/frontend/src/components/global/RouterView.vue46
-rw-r--r--packages/frontend/src/components/grid/MkGrid.vue60
-rw-r--r--packages/frontend/src/components/index.ts3
-rw-r--r--packages/frontend/src/di.ts1
-rw-r--r--packages/frontend/src/pages/about-sharkey.vue4
-rw-r--r--packages/frontend/src/pages/about.vue29
-rw-r--r--packages/frontend/src/pages/achievements.vue4
-rw-r--r--packages/frontend/src/pages/admin-file.vue4
-rw-r--r--packages/frontend/src/pages/admin-user.vue4
-rw-r--r--packages/frontend/src/pages/admin/abuse-report/notification-recipient.editor.vue4
-rw-r--r--packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue4
-rw-r--r--packages/frontend/src/pages/admin/abuses.vue4
-rw-r--r--packages/frontend/src/pages/admin/ads.vue4
-rw-r--r--packages/frontend/src/pages/admin/announcements.vue4
-rw-r--r--packages/frontend/src/pages/admin/approvals.vue4
-rw-r--r--packages/frontend/src/pages/admin/branding.vue8
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.local.list.logs.vue4
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.local.list.search.vue4
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue2
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.local.vue35
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.register.vue (renamed from packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue)112
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue11
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager2.vue22
-rw-r--r--packages/frontend/src/pages/admin/database.vue4
-rw-r--r--packages/frontend/src/pages/admin/email-settings.vue8
-rw-r--r--packages/frontend/src/pages/admin/external-services.vue4
-rw-r--r--packages/frontend/src/pages/admin/federation-job-queue.vue4
-rw-r--r--packages/frontend/src/pages/admin/federation.vue4
-rw-r--r--packages/frontend/src/pages/admin/files.vue4
-rw-r--r--packages/frontend/src/pages/admin/index.vue4
-rw-r--r--packages/frontend/src/pages/admin/invites.vue4
-rw-r--r--packages/frontend/src/pages/admin/job-queue.vue8
-rw-r--r--packages/frontend/src/pages/admin/moderation.vue4
-rw-r--r--packages/frontend/src/pages/admin/modlog.vue4
-rw-r--r--packages/frontend/src/pages/admin/object-storage.vue8
-rw-r--r--packages/frontend/src/pages/admin/overview.vue4
-rw-r--r--packages/frontend/src/pages/admin/performance.vue4
-rw-r--r--packages/frontend/src/pages/admin/relays.vue4
-rw-r--r--packages/frontend/src/pages/admin/roles.edit.vue8
-rw-r--r--packages/frontend/src/pages/admin/roles.editor.vue20
-rw-r--r--packages/frontend/src/pages/admin/roles.role.vue4
-rw-r--r--packages/frontend/src/pages/admin/roles.vue12
-rw-r--r--packages/frontend/src/pages/admin/security.vue4
-rw-r--r--packages/frontend/src/pages/admin/server-rules.vue4
-rw-r--r--packages/frontend/src/pages/admin/settings.vue4
-rw-r--r--packages/frontend/src/pages/admin/system-webhook.vue4
-rw-r--r--packages/frontend/src/pages/admin/users.vue4
-rw-r--r--packages/frontend/src/pages/ads.vue4
-rw-r--r--packages/frontend/src/pages/announcement.vue4
-rw-r--r--packages/frontend/src/pages/announcements.vue7
-rw-r--r--packages/frontend/src/pages/antenna-timeline.vue4
-rw-r--r--packages/frontend/src/pages/api-console.vue4
-rw-r--r--packages/frontend/src/pages/auth.vue4
-rw-r--r--packages/frontend/src/pages/avatar-decoration-edit-dialog.vue4
-rw-r--r--packages/frontend/src/pages/avatar-decorations.vue4
-rw-r--r--packages/frontend/src/pages/channel-editor.vue4
-rw-r--r--packages/frontend/src/pages/channel.vue11
-rw-r--r--packages/frontend/src/pages/channels.vue99
-rw-r--r--packages/frontend/src/pages/chat/home.vue17
-rw-r--r--packages/frontend/src/pages/chat/message.vue4
-rw-r--r--packages/frontend/src/pages/chat/room.vue16
-rw-r--r--packages/frontend/src/pages/clicker.vue4
-rw-r--r--packages/frontend/src/pages/clip.vue4
-rw-r--r--packages/frontend/src/pages/contact.vue4
-rw-r--r--packages/frontend/src/pages/custom-emojis-manager.vue4
-rw-r--r--packages/frontend/src/pages/drive.file.vue8
-rw-r--r--packages/frontend/src/pages/drop-and-fusion.game.vue4
-rw-r--r--packages/frontend/src/pages/drop-and-fusion.vue4
-rw-r--r--packages/frontend/src/pages/emoji-edit-dialog.vue4
-rw-r--r--packages/frontend/src/pages/explore.featured.vue4
-rw-r--r--packages/frontend/src/pages/explore.roles.vue4
-rw-r--r--packages/frontend/src/pages/explore.users.vue4
-rw-r--r--packages/frontend/src/pages/explore.vue24
-rw-r--r--packages/frontend/src/pages/favorites.vue4
-rw-r--r--packages/frontend/src/pages/flash/flash-edit.vue8
-rw-r--r--packages/frontend/src/pages/flash/flash-index.vue47
-rw-r--r--packages/frontend/src/pages/flash/flash.vue4
-rw-r--r--packages/frontend/src/pages/follow-requests.vue59
-rw-r--r--packages/frontend/src/pages/gallery/edit.vue4
-rw-r--r--packages/frontend/src/pages/gallery/index.vue61
-rw-r--r--packages/frontend/src/pages/gallery/post.vue4
-rw-r--r--packages/frontend/src/pages/games.vue4
-rw-r--r--packages/frontend/src/pages/install-extensions.vue4
-rw-r--r--packages/frontend/src/pages/instance-info.vue7
-rw-r--r--packages/frontend/src/pages/invite.vue8
-rw-r--r--packages/frontend/src/pages/list.vue8
-rw-r--r--packages/frontend/src/pages/lookup.vue4
-rw-r--r--packages/frontend/src/pages/my-antennas/index.vue4
-rw-r--r--packages/frontend/src/pages/my-clips/index.vue27
-rw-r--r--packages/frontend/src/pages/my-lists/index.vue4
-rw-r--r--packages/frontend/src/pages/my-lists/list.vue4
-rw-r--r--packages/frontend/src/pages/note.vue4
-rw-r--r--packages/frontend/src/pages/notifications.vue7
-rw-r--r--packages/frontend/src/pages/page-editor/page-editor.vue4
-rw-r--r--packages/frontend/src/pages/page.vue4
-rw-r--r--packages/frontend/src/pages/pages.vue53
-rw-r--r--packages/frontend/src/pages/registry.keys.vue4
-rw-r--r--packages/frontend/src/pages/registry.value.vue4
-rw-r--r--packages/frontend/src/pages/registry.vue4
-rw-r--r--packages/frontend/src/pages/reset-password.vue4
-rw-r--r--packages/frontend/src/pages/reversi/game.board.vue4
-rw-r--r--packages/frontend/src/pages/reversi/game.setting.vue8
-rw-r--r--packages/frontend/src/pages/reversi/index.vue10
-rw-r--r--packages/frontend/src/pages/role.vue12
-rw-r--r--packages/frontend/src/pages/scratchpad.vue9
-rw-r--r--packages/frontend/src/pages/search.vue27
-rw-r--r--packages/frontend/src/pages/settings/2fa.qrdialog.vue12
-rw-r--r--packages/frontend/src/pages/settings/avatar-decoration.dialog.vue4
-rw-r--r--packages/frontend/src/pages/settings/emoji-palette.vue6
-rw-r--r--packages/frontend/src/pages/settings/index.vue4
-rw-r--r--packages/frontend/src/pages/settings/preferences.vue9
-rw-r--r--packages/frontend/src/pages/share.vue4
-rw-r--r--packages/frontend/src/pages/tag.vue8
-rw-r--r--packages/frontend/src/pages/theme-editor.vue4
-rw-r--r--packages/frontend/src/pages/timeline.vue63
-rw-r--r--packages/frontend/src/pages/user-list-timeline.vue4
-rw-r--r--packages/frontend/src/pages/user-tag.vue4
-rw-r--r--packages/frontend/src/pages/user/achievements.vue4
-rw-r--r--packages/frontend/src/pages/user/activity.vue4
-rw-r--r--packages/frontend/src/pages/user/clips.vue4
-rw-r--r--packages/frontend/src/pages/user/files.vue4
-rw-r--r--packages/frontend/src/pages/user/flashs.vue4
-rw-r--r--packages/frontend/src/pages/user/followers.vue4
-rw-r--r--packages/frontend/src/pages/user/following.vue4
-rw-r--r--packages/frontend/src/pages/user/gallery.vue4
-rw-r--r--packages/frontend/src/pages/user/home.vue4
-rw-r--r--packages/frontend/src/pages/user/index.vue33
-rw-r--r--packages/frontend/src/pages/user/lists.vue5
-rw-r--r--packages/frontend/src/pages/user/pages.vue4
-rw-r--r--packages/frontend/src/pages/user/raw.vue4
-rw-r--r--packages/frontend/src/pages/user/reactions.vue4
-rw-r--r--packages/frontend/src/preferences/def.ts3
-rw-r--r--packages/frontend/src/store.ts4
-rw-r--r--packages/frontend/src/style.scss25
-rw-r--r--packages/frontend/src/ui/_common_/common.vue2
-rw-r--r--packages/frontend/src/ui/_common_/mobile-footer-menu.vue15
-rw-r--r--packages/frontend/src/ui/_common_/navbar-for-mobile.vue1
-rw-r--r--packages/frontend/src/ui/_common_/navbar.vue22
-rw-r--r--packages/frontend/src/ui/_common_/titlebar.vue87
-rw-r--r--packages/frontend/src/ui/deck.vue151
-rw-r--r--packages/frontend/src/ui/deck/column.vue2
-rw-r--r--packages/frontend/src/ui/universal.vue47
-rw-r--r--packages/frontend/src/utility/upload.ts2
-rw-r--r--packages/megalodon/package.json21
-rw-r--r--packages/misskey-bubble-game/package.json12
-rw-r--r--packages/misskey-js/etc/misskey-js.api.md32
-rw-r--r--packages/misskey-js/generator/package.json10
-rw-r--r--packages/misskey-js/package.json22
-rw-r--r--packages/misskey-js/src/autogen/endpoint.ts24
-rw-r--r--packages/misskey-js/src/autogen/entities.ts8
-rw-r--r--packages/misskey-js/src/autogen/types.ts65
-rw-r--r--packages/misskey-reversi/package.json12
-rw-r--r--packages/sw/package.json6
-rw-r--r--pnpm-lock.yaml3951
-rw-r--r--renovate.json52
-rw-r--r--scripts/dependency-patches/re2.patch13
255 files changed, 4750 insertions, 4062 deletions
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index c506c36f6b..25d9cfc1fb 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -8,7 +8,7 @@
"version": "22.11.0"
},
"ghcr.io/devcontainers-extra/features/pnpm:2": {
- "version": "10.6.1"
+ "version": "10.10.0"
}
},
"forwardPorts": [3000],
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ef02c8431b..87315a675a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,14 +2,22 @@
### General
- Feat: bull-boardã«ä»£ã‚るジョブキューã®ç®¡ç†ãƒ„ールãŒå®Ÿè£…ã•れã¾ã—ãŸ
+- Feat: アップロードå¯èƒ½ãªæœ€å¤§ãƒ•ァイルサイズをロールã”ã¨ã«è¨­å®šå¯èƒ½ã«
+ - デフォルトã§10MBã«ãªã£ã¦ã„ã¾ã™
- Enhance: ãƒãƒ£ãƒƒãƒˆã®æ–°è¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’プッシュ通知ã™ã‚‹ã‚ˆã†ã«
+- Enhance: サーãƒãƒ¼ãƒ–ロックã®å¯¾è±¡ã«ãªã£ã¦ã„るサーãƒãƒ¼ã«ã¤ã„ã¦ã€å½“該サーãƒãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚„既知投稿を見ãˆãªã„よã†ã«
+- Enhance: ä¾å­˜é–¢ä¿‚ã®æ›´æ–°
+- Enhance: ç¿»è¨³ã®æ›´æ–°
+- Fix: セキュリティã«é–¢ã™ã‚‹ä¿®æ­£
### Client
- Feat: ãƒãƒ£ãƒƒãƒˆã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã‚’追加
- Feat: デッキã«ãƒãƒ£ãƒƒãƒˆã‚«ãƒ©ãƒ ã‚’追加
+- Feat: タイトルãƒãƒ¼ã‚’表示ã§ãるよã†ã«
- Enhance: Unicode絵文字をslugã‹ã‚‰å…¥åŠ›ã™ã‚‹éš›ã«`:ok:`ã®ã‚ˆã†ã«æœ€å¾Œã®`:`を入力ã—ãŸã‚ã¨ã«Unicode絵文字ã«å¤‰æ›ã§ãるよã†ã«
- Enhance: コントロールパãƒãƒ«ã§ã‚¸ãƒ§ãƒ–キューをクリアã§ãるよã†ã«
- Enhance: テーマã§ãƒšãƒ¼ã‚¸ãƒ˜ãƒƒãƒ€ãƒ¼ã®è‰²ã‚’変更ã§ãるよã†ã«
+- Enhance: スワイプã§ã®ã‚¿ãƒ–切り替ãˆã‚’強化
- Enhance: デザインã®ãƒ–ラッシュアップ
- Fix: ログアウトã—ãŸéš›ã«å‡¦ç†ãŒçµ‚了ã—ãªã„å•題を修正
- Fix: 自動ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ãŒè¨­å®šã•れã¦ã„る環境ã§ãƒ­ã‚°ã‚¢ã‚¦ãƒˆç›´å‰ã«è¨­å®šã‚’ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã™ã‚‹ã‚ˆã†ã«
@@ -17,6 +25,7 @@
- Fix: タイムラインã®ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ä½ç½®ã‚’記憶ã™ã‚‹ã‚ˆã†ã«ä¿®æ­£
- Fix: ノートã®ç›´å¾Œã®ãƒŽãƒ¼ãƒˆã‚’表示ã™ã‚‹æ©Ÿèƒ½ã§è¡¨ç¤ºãŒé€†é †ã«ãªã£ã¦ã„ãŸå•題を修正 #15841
- Fix: アカウントã®ç§»è¡Œæ™‚ã«ã‚¢ãƒ³ãƒ†ãƒŠã®ãƒ•ィルターã®ãƒ¦ãƒ¼ã‚¶ãŒæ›´æ–°ã•れãªã„å•題を修正 #15843
+- Fix: タイムラインã§ãƒŽãƒ¼ãƒˆãŒé‡è¤‡ã—ã¦è¡¨ç¤ºã•れるã“ã¨ãŒã‚ã‚‹ã®ã‚’修正
### Server
- Enhance: ã‚¸ãƒ§ãƒ–ã‚­ãƒ¥ãƒ¼ã®æˆåŠŸ/失敗ã—ãŸã‚¸ãƒ§ãƒ–も一定数・一定期間ä¿å­˜ã™ã‚‹ã‚ˆã†ã«ã—ã€å¾Œã‹ã‚‰å•題を調査ã™ã‚‹ã“ã¨ã‚’容易ã«
@@ -24,8 +33,9 @@
(Cherry-picked from https://github.com/yojo-art/cherrypick/pull/568 and https://github.com/team-shahu/misskey/pull/38)
- Enhance: ユーザーã”ã¨ã«ãƒŽãƒ¼ãƒˆã®è¡¨ç¤ºãŒé«˜é€ŸåŒ–ã™ã‚‹ã‚ˆã†ã«
- Fix: システムアカウントã®åå‰ãŒã‚µãƒ¼ãƒãƒ¼åã¨åŒæœŸã•れãªã„å•題を修正
-- Fix: 大文字をå«ã‚€ãƒ¦ãƒ¼ã‚¶ã® URL ã§ç´¹ä»‹ã•れãŸå ´åˆã« 404 エラーを返ã™å•題 #15813
+- Fix: 大文字をå«ã‚€ãƒ¦ãƒ¼ã‚¶ã® URL ã§ç…§ä¼šã•れãŸå ´åˆã« 404 エラーを返ã™å•題 #15813
- Fix: リードレプリカ設定時ã«ãƒ¬ã‚³ãƒ¼ãƒ‰ã®è¿½åŠ ãƒ»æ›´æ–°ãƒ»å‰Šé™¤ã‚’ä¼´ã†ã‚¯ã‚¨ãƒªã‚’発行ã—ãŸéš›ã¯masterノードã§å®Ÿè¡Œã•れるよã†ã«èª¿æ•´( #10897 )
+- Fix: ãƒ•ã‚¡ã‚¤ãƒ«ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰æ™‚ã®æŒ™å‹•を一部調整(#15895)
## 2025.4.0
diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml
index 129c3d24a5..23d20b8e13 100644
--- a/locales/ca-ES.yml
+++ b/locales/ca-ES.yml
@@ -280,7 +280,7 @@ featured: "Destacat"
usernameOrUserId: "Nom o ID d'usuari"
noSuchUser: "No s'ha trobat l'usuari"
lookup: "Cerca"
-announcements: "Anuncis"
+announcements: "Avisos"
imageUrl: "URL de la imatge"
remove: "Eliminar"
removed: "Eliminat"
@@ -871,7 +871,7 @@ gallery: "Galeria"
recentPosts: "Articles recents"
popularPosts: "Articles populars"
shareWithNote: "Comparteix amb una nota"
-ads: "Anuncis"
+ads: "Publicitat "
expiration: ""
startingperiod: "Inici"
memo: "Recordatori"
@@ -1110,7 +1110,7 @@ accountMigration: "Migració del compte"
accountMoved: "Aquest usuari té un compte nou:"
accountMovedShort: "Aquest compte ha sigut migrat"
operationForbidden: "Operació no permesa "
-forceShowAds: "Mostra els anuncis sempre "
+forceShowAds: "Mostrar publicitat sempre "
addMemo: "Afegir recordatori"
editMemo: "Editar recordatori"
reactionsList: "Reaccions"
@@ -1185,8 +1185,8 @@ iHaveReadXCarefullyAndAgree: "He llegit {x} i estic d'acord."
dialog: "Diàleg "
icon: "Icona"
forYou: "Per a tu"
-currentAnnouncements: "Informes actuals"
-pastAnnouncements: "Informes passats"
+currentAnnouncements: "Avisos actuals"
+pastAnnouncements: "Avisos passats"
youHaveUnreadAnnouncements: "Tens informes per llegir."
useSecurityKey: "Segueix les instruccions del teu navegador O dispositiu per fer servir el teu passkey."
replies: "Respostes"
@@ -1345,6 +1345,8 @@ embed: "Incrustar"
settingsMigrating: "Estem migrant la teva configuració. Si us plau espera un moment... (També pots fer la migració més tard, manualment, anant a Preferències → Altres → Migrar configuració antiga)"
readonly: "Només lectura"
goToDeck: "Tornar al tauler"
+federationJobs: "Treballs sindicats "
+driveAboutTip: "Al Disc veure's una llista de tots els arxius que has anat pujant.<br>\nPots tornar-los a fer servir adjuntant-los a notes noves o pots adelantar-te i pujar arxius per publicar-los més tard!<br>\n<b>Tingués en compte que si esborres un arxiu també desapareixerà de tots els llocs on l'has fet servir (notes, pàgines, avatars, imatges de capçalera, etc.)</b><br>\nTambé pots crear carpetes per organitzar les."
_chat:
noMessagesYet: "Encara no tens missatges "
newMessage: "Missatge nou"
@@ -1487,7 +1489,7 @@ _announcement:
needConfirmationToRead: "Es necessita confirmació de lectura de la notificació "
needConfirmationToReadDescription: "Si s'activa es mostrarà un diàleg per confirmar la lectura d'aquesta notificació. A més aquesta notificació serà exclosa de qualsevol funcionalitat com \"Marcar tot com a llegit\"."
end: "Final de la notificació "
- tooManyActiveAnnouncementDescription: "Tenir massa notificacions actives pot empitjorar l'experiència de l'usuari. Considera finalitzar els anuncis que siguin antics."
+ tooManyActiveAnnouncementDescription: "Tenir massa notificacions actives pot empitjorar l'experiència de l'usuari. Considera finalitzar els avisos que siguin antics."
readConfirmTitle: "Marcar com llegida?"
readConfirmText: "Això marcarà el contingut de \"{title}\" com llegit."
shouldNotBeUsedToPresentPermanentInfo: "Ja que l'ús de notificacions pot impactar l'experiència dels nous usuaris, és recomanable fer servir les notificacions amb el flux d'informació en comptes de fer-les servir en un únic bloc."
@@ -1914,6 +1916,7 @@ _role:
canManageCustomEmojis: "Gestiona els emojis personalitzats"
canManageAvatarDecorations: "Gestiona les decoracions dels avatars "
driveCapacity: "Capacitat del disc"
+ maxFileSize: "Mida màxima de l'arxiu que es pot carregar"
alwaysMarkNsfw: "Marca sempre els fitxers com a sensibles"
canUpdateBioMedia: "Permet l'edició d'una icona o un bàner"
pinMax: "Nombre màxim de notes fixades"
@@ -1926,7 +1929,7 @@ _role:
userEachUserListsMax: "Nombre màxim d'usuaris dintre d'una llista d'usuaris "
rateLimitFactor: "Limitador"
descriptionOfRateLimitFactor: "Límits baixos són menys restrictius, límits alts són més restrictius."
- canHideAds: "Pot amagar els anuncis"
+ canHideAds: "Pot amagar la publicitat"
canSearchNotes: "Pot cercar notes"
canUseTranslator: "Pot fer servir el traductor"
avatarDecorationLimit: "Nombre màxim de decoracions que es poden aplicar els avatars"
@@ -1991,8 +1994,8 @@ _ad:
reduceFrequencyOfThisAd: "Mostrar menys aquest anunci"
hide: "No mostrar mai"
timezoneinfo: "El dia de la setmana ve determinat del fus horari del servidor."
- adsSettings: "Configuració d'anuncis "
- notesPerOneAd: "Interval d'emplaçament d'anuncis en temps real (Notes per anuncis)"
+ adsSettings: "Configurar la publicitat"
+ notesPerOneAd: "Interval d'emplaçament publicitari en temps real (Notes per anuncis)"
setZeroToDisable: "Ajusta aquest valor a 0 per deshabilitar l'actualització d'anuncis en temps real"
adsTooClose: "L'interval actual pot fer que l'experiència de l'usuari sigui dolenta perquè l'interval és molt baix."
_forgotPassword:
diff --git a/locales/de-DE.yml b/locales/de-DE.yml
index 237603299c..41c3f495a2 100644
--- a/locales/de-DE.yml
+++ b/locales/de-DE.yml
@@ -979,6 +979,7 @@ document: "Dokumentation"
numberOfPageCache: "Seitencachegröße"
numberOfPageCacheDescription: "Das Erhöhen dieses Caches führt zu einer angenehmerern Benutzererfahrung, aber erhöht Last und Arbeitsspeicherauslastung auf dem Nutzergerät."
logoutConfirm: "Wirklich abmelden?"
+logoutWillClearClientData: "Beim Abmelden werden die Konfigurationsdaten des Clients aus dem Browser gelöscht. Um sicherzustellen, dass die Konfigurationsdaten beim erneuten Einloggen wiederhergestellt werden können, aktivieren Sie bitte die automatische Sicherung der Konfiguration."
lastActiveDate: "Zuletzt verwendet am"
statusbar: "Statusleiste"
pleaseSelect: "Wähle eine Option"
@@ -1344,6 +1345,8 @@ embed: "Einbetten"
settingsMigrating: "Ihre Einstellungen werden gerade migriert, Bitte warten Sie einen Moment... (Sie können die Einstellungen später auch manuell migrieren, indem Sie zu Einstellungen → Sonstiges → Alte Einstellungen migrieren gehen)"
readonly: "Nur Lesezugriff"
goToDeck: "Zurück zum Deck"
+federationJobs: "Föderation Jobs"
+driveAboutTip: "In Drive sehen Sie eine Liste der Dateien, die Sie in der Vergangenheit hochgeladen haben. <br>\nSie können diese Dateien wiederverwenden um sie zu beispiel an Notizen anzuhängen, oder sie können Dateien vorab hochzuladen, um sie später zu versenden! <br>\n<b>Wenn Sie eine Datei löschen, verschwindet sie auch von allen Stellen, an denen Sie sie verwendet haben (Notizen, Seiten, Avatare, Banner usw.).</b><br>\nSie können auch Ordner erstellen, um sie zu organisieren."
_chat:
noMessagesYet: "Noch keine Nachrichten"
newMessage: "Neue Nachricht"
@@ -1913,6 +1916,7 @@ _role:
canManageCustomEmojis: "Benutzerdefinierte Emojis verwalten"
canManageAvatarDecorations: "Profilbilddekorationen verwalten"
driveCapacity: "Drive-Kapazität"
+ maxFileSize: "Maximale Dateigröße, die hochgeladen werden kann"
alwaysMarkNsfw: "Dateien immer als NSFW markieren"
canUpdateBioMedia: "Kann ein Profil- oder ein Bannerbild bearbeiten"
pinMax: "Maximale Anzahl an angehefteten Notizen"
diff --git a/locales/en-US.yml b/locales/en-US.yml
index b695a9bc5c..230717f372 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -978,7 +978,8 @@ deleteAccount: "Delete account"
document: "Documentation"
numberOfPageCache: "Number of cached pages"
numberOfPageCacheDescription: "Increasing this number will improve convenience for but cause more load as more memory usage on the user's device."
-logoutConfirm: "Really log out?"
+logoutConfirm: "Are you sure you want to log out?"
+logoutWillClearClientData: "Logging out will erase the settings of the client from the browser. In order to be able to restore the settings upon logging in again, you must enable automatic backup of your settings."
lastActiveDate: "Last used at"
statusbar: "Status bar"
pleaseSelect: "Select an option"
@@ -1271,7 +1272,7 @@ notUsePleaseLeaveBlank: "Leave blank if not used"
useTotp: "Enter the One-Time Password"
useBackupCode: "Use the backup codes"
launchApp: "Launch the app"
-useNativeUIForVideoAudioPlayer: "Use UI of browser when play video and audio"
+useNativeUIForVideoAudioPlayer: "Use UI of browser when play video and audio\n"
keepOriginalFilename: "Keep original file name"
keepOriginalFilenameDescription: "If you turn off this setting, files names will be replaced with random string automatically when you upload files."
noDescription: "There is no explanation"
@@ -1344,6 +1345,8 @@ embed: "Embed"
settingsMigrating: "Settings are being migrated, please wait a moment... (You can also migrate manually later by going to Settings→Others→Migrate old settings)"
readonly: "Read only"
goToDeck: "Return to Deck"
+federationJobs: "Federation Jobs"
+driveAboutTip: "In Drive, a list of files you've uploaded in the past will be displayed. <br> \nYou can reuse these files when attaching them to notes, or you can upload files in advance to post later. <br> \n<b>Be careful when deleting a file, as it will not be available in all places where it was used (such as notes, pages, avatars, banners, etc.).</b> <br> \nYou can also create folders to organize your files."
_chat:
noMessagesYet: "No messages yet"
newMessage: "New message"
@@ -1913,6 +1916,7 @@ _role:
canManageCustomEmojis: "Can manage custom emojis"
canManageAvatarDecorations: "Manage avatar decorations"
driveCapacity: "Drive capacity"
+ maxFileSize: "Upload-able max file size"
alwaysMarkNsfw: "Always mark files as NSFW"
canUpdateBioMedia: "Can edit an icon or a banner image"
pinMax: "Maximum number of pinned notes"
@@ -2915,7 +2919,7 @@ _customEmojisManager:
confirmDeleteEmojisDescription: "Delete checked {count} Emoji(s). Are you sure to continue?"
confirmResetDescription: "This will reset any changes you have made so far"
confirmMovePageDesciption: "Changes have been made to the Emojis on this page.\nIf you leave the page without saving, all changes made on this page will be discarded."
- dialogSelectRoleTitle: "Search by roll set in Emojis"
+ dialogSelectRoleTitle: "Search by role set in Emojis"
_register:
uploadSettingTitle: "Upload settings"
uploadSettingDescription: "On this screen, you can configure the behavior when uploading Emojis."
diff --git a/locales/es-ES.yml b/locales/es-ES.yml
index 713478b67e..e14f37d1d6 100644
--- a/locales/es-ES.yml
+++ b/locales/es-ES.yml
@@ -424,6 +424,7 @@ antennaExcludeBots: "Excluir bots"
antennaKeywordsDescription: "Separar con espacios es una declaración AND, separar con una linea nueva es una declaración OR"
notifyAntenna: "Notificar nueva nota"
withFileAntenna: "Sólo notas con archivos adjuntados"
+excludeNotesInSensitiveChannel: "Excluir notas en canales sensibles"
enableServiceworker: "Activar ServiceWorker"
antennaUsersDescription: "Elegir nombres de usuarios separados por una linea nueva"
caseSensitive: "Distinguir mayúsculas de minúsculas"
@@ -978,6 +979,7 @@ document: "Documento"
numberOfPageCache: "Cantidad de páginas cacheadas"
numberOfPageCacheDescription: "Al aumentar el número mejora la conveniencia pero tambien puede aumentar la carga y la memoria a usarse"
logoutConfirm: "¿Cerrar sesión?"
+logoutWillClearClientData: "Al cerrar la sesión, la información de configuración del cliente se borra del navegador. Para garantizar que la información de configuración se pueda restaurar al volver a iniciar sesión, active la copia de seguridad automática de la configuración."
lastActiveDate: "Utilizado por última vez el"
statusbar: "Barra de estado"
pleaseSelect: "Selecciona una opción"
@@ -1073,7 +1075,7 @@ reactionAcceptance: "Aceptación de reacciones"
likeOnly: "Sólo 'me gusta'"
likeOnlyForRemote: "Sólo reacciones de instancias remotas"
nonSensitiveOnly: "Solo no sensible"
-nonSensitiveOnlyForLocalLikeOnlyForRemote: "Sólo no contenido sensible (sólo me gusta en remote)"
+nonSensitiveOnlyForLocalLikeOnlyForRemote: "Sólo no contenido sensible (sólo me gusta en remoto)"
rolesAssignedToMe: "Roles asignados a mí"
resetPasswordConfirm: "¿Realmente quieres cambiar la contraseña?"
sensitiveWords: "Palabras sensibles"
@@ -1295,35 +1297,81 @@ passkeyVerificationFailed: "La verificación de la clave de acceso ha fallado."
passkeyVerificationSucceededButPasswordlessLoginDisabled: "La verificación de la clave de acceso ha sido satisfactoria pero se ha deshabilitado el inicio de sesión sin contraseña."
messageToFollower: "Mensaje a seguidores"
target: "Para"
+testCaptchaWarning: "Esta función está pensada para probar CAPTCHAs.<strong>No utilizar en un entorno de producción.</strong>"
prohibitedWordsForNameOfUser: "Palabras prohibidas para nombres de usuario"
prohibitedWordsForNameOfUserDescription: "Si alguna de las cadenas de esta lista está incluida en el nombre del usuario, el nombre será denegado. Los usuarios con privilegios de moderador no se ven afectados por esta restricción."
yourNameContainsProhibitedWords: "Tu nombre contiene palabras prohibidas"
yourNameContainsProhibitedWordsDescription: "Si deseas usar este nombre, por favor contacta con tu administrador/a de tu servidor"
+thisContentsAreMarkedAsSigninRequiredByAuthor: " Establecido por el autor: requiere iniciar sesión para ver"
lockdown: "Bloqueo"
pleaseSelectAccount: "Seleccione una cuenta, por favor."
availableRoles: "Roles disponibles "
acknowledgeNotesAndEnable: "Activar después de comprender las precauciones"
federationSpecified: "Este servidor opera en una federación de listas blancas. No puede interactuar con otros servidores que no sean los especificados por el administrador."
federationDisabled: "La federación está desactivada en este servidor. No puede interactuar con usuarios de otros servidores"
+confirmOnReact: "Confirmar la reacción"
+reactAreYouSure: "¿Quieres añadir una reacción «{emoji}»?"
+markAsSensitiveConfirm: "¿Desea establecer este medio multimedia(Imagen,vídeo...) como sensible?"
+unmarkAsSensitiveConfirm: "¿Desea eliminar la designación de sensible para este adjunto?"
preferences: "Preferencias"
+accessibility: "Accesibilidad"
+preferencesProfile: "Configuración del perfil"
+copyPreferenceId: "Copiar ID de la configuración"
+resetToDefaultValue: "Revertir a valor predeterminado"
+overrideByAccount: "Anulado por la cuenta"
+untitled: "Sin título"
+noName: "No hay nombre."
+skip: "Saltar"
+restore: "Restaurar"
+syncBetweenDevices: "Sincronizar entre dispositivos"
+preferenceSyncConflictTitle: "Los valores configurados existen en el servidor."
+preferenceSyncConflictText: "Los ajustes de sincronización activados guardarán sus valores en el servidor. Sin embargo, hay valores existentes en el servidor. ¿Qué conjunto de valores desea sobrescribir?"
+preferenceSyncConflictChoiceServer: "Valores de configuración del servidor"
+preferenceSyncConflictChoiceDevice: "Valor configurado en el dispositivo"
+paste: "Pegar"
+emojiPalette: "Paleta emoji"
postForm: "Formulario"
information: "Información"
+chat: "Chat"
+migrateOldSettings: "Migrar la configuración anterior"
right: "Derecha"
bottom: "Abajo"
top: "Arriba"
embed: "Insertar"
settingsMigrating: "La configuración está siendo migrada, por favor espera un momento... (También puedes migrar manualmente más tarde yendo a Ajustes otros migrar configuración antigua"
readonly: "Solo Lectura"
+goToDeck: "Volver al Deck"
+federationJobs: "Trabajos de Federación"
_chat:
noMessagesYet: "Aún no hay mensajes"
newMessage: "Mensajes nuevos"
individualChat: "Chat individual"
individualChat_description: "Mantén una conversación privada con otra persona."
+ roomChat: "Sala de Chat"
+ roomChat_description: "Una sala de chat que puede tener varias personas.\nTambién puedes invitar a personas que no permiten chats privados si aceptan la invitación."
+ createRoom: "Crear sala"
+ inviteUserToChat: "Invitar usuarios para empezar a chatear"
+ yourRooms: "Salas creadas"
+ joiningRooms: "Salas que te has unido"
invitations: "Invitar"
+ noInvitations: "No hay invitación."
+ history: "Historial"
noHistory: "No hay datos en el historial"
+ noRooms: "Sala no encontrada"
+ inviteUser: "Invitar usuarios"
+ sentInvitations: "Invitaciones enviadas"
+ join: "Unirse"
+ ignore: "Ignorar"
+ leave: "Dejar sala"
members: "Miembros"
+ searchMessages: "Buscar mensajes"
home: "Inicio"
send: "Enviar"
+ newline: "Nueva línea"
+ muteThisRoom: "Silenciar esta sala"
+ deleteRoom: "Borrar sala"
+ chatNotAvailableForThisAccountOrServer: "El chat no está habilitado en este servidor ni para esta cuenta."
+ chatIsReadOnlyForThisAccountOrServer: "El chat es de sólo lectura en esta instancia o esta cuenta. No puedes escribir nuevos mensajes ni crear/unirte a salas de chat."
chatNotAvailableInOtherAccount: "La función de chat está desactivada para el otro usuario."
cannotChatWithTheUser: "No se puede iniciar un chat con este usuario"
cannotChatWithTheUser_description: "El chat no está disponible o la otra parte no ha habilitado el chat."
@@ -1342,9 +1390,27 @@ _chat:
none: "Nadie"
_emojiPalette:
palettes: "Paleta\n"
+ enableSyncBetweenDevicesForPalettes: "Activar la sincronización de paletas entre dispositivos"
_settings:
api: "API"
webhook: "Webhook"
+ timelineAndNote: "Líneas del tiempo y notas"
+ makeEveryTextElementsSelectable_description: "Activar esta opción puede reducir la usabilidad en algunas situaciones."
+ useStickyIcons: "Hacer que los iconos te sigan cuando desplaces"
+ showNavbarSubButtons: "Mostrar los sub-botones en la barra de navegación."
+ ifOn: "Si está activado"
+ enableSyncThemesBetweenDevices: "Sincronizar los temas instalados entre dispositivos."
+ _chat:
+ showSenderName: "Mostrar el nombre del remitente"
+ sendOnEnter: "Intro para enviar"
+_preferencesProfile:
+ profileName: "Nombre de perfil"
+ profileNameDescription: "Establece un nombre que identifique al dispositivo"
+ profileNameDescription2: "Por ejemplo: \"PC Principal\",\"Teléfono\""
+_preferencesBackup:
+ autoBackup: "Respaldo automático"
+ restoreFromBackup: "Restaurar desde copia de seguridad"
+ noBackupsFoundTitle: "No se encontró una copia de seguridad"
_accountSettings:
requireSigninToViewContents: "Se requiere iniciar sesión para ver el contenido"
requireSigninToViewContentsDescription1: "Requiere iniciar sesión para ver todas las notas y otros contenidos que hayas creado. Se espera que esto evite que los rastreadores recopilen información."
@@ -2235,6 +2301,7 @@ _widgets:
chooseList: "Seleccione una lista"
clicker: "Cliqueador"
birthdayFollowings: "Hoy cumplen años"
+ chat: "Chat"
_cw:
hide: "Ocultar"
show: "Ver más"
@@ -2482,6 +2549,7 @@ _deck:
mentions: "Menciones"
direct: "Notas directas"
roleTimeline: "Linea de tiempo del rol"
+ chat: "Chat"
_dialog:
charactersExceeded: "¡Has excedido el límite de caracteres! Actualmente {current} de {max}."
charactersBelow: "¡Estás por debajo del límite de caracteres! Actualmente {current} de {min}."
diff --git a/locales/index.d.ts b/locales/index.d.ts
index dae5d912fc..55b248b241 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -5403,6 +5403,13 @@ export interface Locale extends ILocale {
* 連åˆã‚¸ãƒ§ãƒ–
*/
"federationJobs": string;
+ /**
+ * ドライブã§ã¯ã€éŽåŽ»ã«ã‚¢ãƒƒãƒ—ロードã—ãŸãƒ•ァイルã®ä¸€è¦§ãŒè¡¨ç¤ºã•れã¾ã™ã€‚<br>
+ * ãƒŽãƒ¼ãƒˆã«æ·»ä»˜ã™ã‚‹éš›ã«å†åˆ©ç”¨ã—ãŸã‚Šã€ã‚ã¨ã§æŠ•稿ã™ã‚‹ãƒ•ァイルを予ã‚アップロードã—ã¦ãŠãã“ã¨ã‚‚ã§ãã¾ã™ã€‚<br>
+ * <b>ファイルを削除ã™ã‚‹ã¨ã€ä»Šã¾ã§ãã®ãƒ•ァイルを使用ã—ãŸå…¨ã¦ã®å ´æ‰€(ノートã€ãƒšãƒ¼ã‚¸ã€ã‚¢ãƒã‚¿ãƒ¼ã€ãƒãƒŠãƒ¼ç­‰)ã‹ã‚‰ã‚‚見ãˆãªããªã‚‹ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。</b><br>
+ * フォルダを作ã£ã¦æ•´ç†ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
+ */
+ "driveAboutTip": string;
"_chat": {
/**
* ã¾ã ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã‚りã¾ã›ã‚“
@@ -7489,6 +7496,10 @@ export interface Locale extends ILocale {
*/
"driveCapacity": string;
/**
+ * アップロードå¯èƒ½ãªæœ€å¤§ãƒ•ァイルサイズ
+ */
+ "maxFileSize": string;
+ /**
* ファイルã«NSFWを常ã«ä»˜ä¸Ž
*/
"alwaysMarkNsfw": string;
diff --git a/locales/it-IT.yml b/locales/it-IT.yml
index 75691d817f..787c110189 100644
--- a/locales/it-IT.yml
+++ b/locales/it-IT.yml
@@ -382,7 +382,7 @@ disconnectService: "Disconnetti"
enableLocalTimeline: "Abilita la timeline locale"
enableGlobalTimeline: "Abilita la timeline federata"
disablingTimelinesInfo: "Anche disabilitandole, gli Amministratori e i Moderatori potranno comunque accedervi."
-registration: "Iscriviti"
+registration: "Registrazione"
invite: "Invita"
driveCapacityPerLocalAccount: "Capienza del Drive per profilo locale"
driveCapacityPerRemoteAccount: "Capienza del Drive per profilo remoto"
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index fb2590d8fd..edb7914110 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1346,6 +1346,7 @@ settingsMigrating: "設定を移行ã—ã¦ã„ã¾ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ãã 
readonly: "読ã¿å–り専用"
goToDeck: "ãƒ‡ãƒƒã‚­ã¸æˆ»ã‚‹"
federationJobs: "連åˆã‚¸ãƒ§ãƒ–"
+driveAboutTip: "ドライブã§ã¯ã€éŽåŽ»ã«ã‚¢ãƒƒãƒ—ロードã—ãŸãƒ•ァイルã®ä¸€è¦§ãŒè¡¨ç¤ºã•れã¾ã™ã€‚<br>\nãƒŽãƒ¼ãƒˆã«æ·»ä»˜ã™ã‚‹éš›ã«å†åˆ©ç”¨ã—ãŸã‚Šã€ã‚ã¨ã§æŠ•稿ã™ã‚‹ãƒ•ァイルを予ã‚アップロードã—ã¦ãŠãã“ã¨ã‚‚ã§ãã¾ã™ã€‚<br>\n<b>ファイルを削除ã™ã‚‹ã¨ã€ä»Šã¾ã§ãã®ãƒ•ァイルを使用ã—ãŸå…¨ã¦ã®å ´æ‰€(ノートã€ãƒšãƒ¼ã‚¸ã€ã‚¢ãƒã‚¿ãƒ¼ã€ãƒãƒŠãƒ¼ç­‰)ã‹ã‚‰ã‚‚見ãˆãªããªã‚‹ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。</b><br>\nフォルダを作ã£ã¦æ•´ç†ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚"
_chat:
noMessagesYet: "ã¾ã ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã‚りã¾ã›ã‚“"
@@ -1934,6 +1935,7 @@ _role:
canManageCustomEmojis: "カスタム絵文字ã®ç®¡ç†"
canManageAvatarDecorations: "ã‚¢ãƒã‚¿ãƒ¼ãƒ‡ã‚³ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ç®¡ç†"
driveCapacity: "ドライブ容é‡"
+ maxFileSize: "アップロードå¯èƒ½ãªæœ€å¤§ãƒ•ァイルサイズ"
alwaysMarkNsfw: "ファイルã«NSFWを常ã«ä»˜ä¸Ž"
canUpdateBioMedia: "アイコンã¨ãƒãƒŠãƒ¼ã®æ›´æ–°ã‚’許å¯"
pinMax: "ノートã®ãƒ”ン留ã‚ã®æœ€å¤§æ•°"
diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml
index fb7db80186..57c66fad33 100644
--- a/locales/ko-KR.yml
+++ b/locales/ko-KR.yml
@@ -979,6 +979,7 @@ document: "문서"
numberOfPageCache: "페ì´ì§€ ìºì‹œ 수"
numberOfPageCacheDescription: "숫ìžê°€ í´ ìˆ˜ë¡ íŽ¸ë¦¬ì„±ì´ ë†’ì•„ì§€ì§€ë§Œ, 시스템 ìžì›ê³¼ 메모리를 ë” ë§Žì´ ì‚¬ìš©í•©ë‹ˆë‹¤."
logoutConfirm: "로그아웃 하시겠습니까?"
+logoutWillClearClientData: "로그아웃하면 í´ë¼ì´ì–¸íŠ¸ì˜ ì„¤ì • ë°ì´í„°ê°€ 브ë¼ìš°ì €ì—서 지워지게 ë©ë‹ˆë‹¤. 다시 로그ì¸í•  때 설정 ë°ì´í„°ë¥¼ ë³µì›í•  수 있ë„ë¡ í•˜ë ¤ë©´ 설정 ìžë™ ë°±ì—…ì„ í™œì„±í™”í•˜ì„¸ìš”."
lastActiveDate: "마지막 ì´ìš©"
statusbar: "ìƒíƒœë°”"
pleaseSelect: "ì„ íƒí•´ 주세요"
@@ -1344,6 +1345,7 @@ embed: "임베드"
settingsMigrating: "ì„¤ì •ì„ ì´ì „하는 중입니다. 잠시 기다려주십시오... (ë‚˜ì¤‘ì— '환경설정 → 기타 → 기존 설정 정보를 ì´ì „'ì—서 수ë™ìœ¼ë¡œ ì´ì „í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤)"
readonly: "ì½ê¸° ì „ìš©"
goToDeck: "ë±ìœ¼ë¡œ ëŒì•„가기"
+federationJobs: "연합 작업"
_chat:
noMessagesYet: "ì•„ì§ ë©”ì‹œì§€ê°€ 없습니다"
newMessage: "새로운 메시지"
diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml
index bc8c86f2c3..cc59d04595 100644
--- a/locales/nl-NL.yml
+++ b/locales/nl-NL.yml
@@ -118,6 +118,8 @@ renotedToX: "Renoted naar {name}"
cantRenote: "Dit bericht kan niet worden herdeeld"
cantReRenote: "Een herdeling kan niet worden herdeeld"
quote: "Quote"
+inChannelRenote: "Alleen-kanaal Renote"
+inChannelQuote: "Alleen-kanaal Citaat"
renoteToChannel: "Renote naar kanaal"
renoteToOtherChannel: "Renote naar ander kanaal"
pinnedNote: "Vastgemaakte notitie"
@@ -143,6 +145,8 @@ unmarkAsSensitive: "Geen NSFW"
enterFileName: "Invoeren bestandsnaam"
mute: "Dempen"
unmute: "Stop dempen"
+renoteMute: "Renotes dempen"
+renoteUnmute: "Dempen Renotes opheffen"
block: "Blokkeren"
unblock: "Deblokkeren"
suspend: "Opschorten"
@@ -152,7 +156,10 @@ unblockConfirm: "Ben je zeker dat je deze account wil blokkeren?"
suspendConfirm: "Ben je zeker dat je deze account wil suspenderen?"
unsuspendConfirm: "Ben je zeker dat je deze account wil opnieuw aanstellen?"
selectList: "Kies een lijst."
+editList: "Lijst bewerken"
+selectChannel: "Kanaal selecteren"
selectAntenna: "Kies een antenne"
+editAntenna: "Antenne bewerken"
createAntenna: "Antenne aanmaken"
selectWidget: "Kies een widget"
editWidgets: "Bewerk widgets"
@@ -166,6 +173,9 @@ addEmoji: "Toevoegen emoji"
settingGuide: "Aanbevolen instellingen"
cacheRemoteFiles: "Externe bestanden cachen"
cacheRemoteFilesDescription: "Als deze instelling uitgeschakeld is worden bestanden altijd direct van remote servers geladen. Hiermee wordt opslagruimte bespaard, maar doordat er geen thumbnails worden gegenereerd, zal netwerkverkeer toenemen."
+youCanCleanRemoteFilesCache: "Klik op de ðŸ—‘ï¸ knop in de bestandsbeheerweergave om de cache te wissen."
+cacheRemoteSensitiveFiles: "Gevoelige bestanden van externe instances in de cache bewaren"
+cacheRemoteSensitiveFilesDescription: "Als deze instelling is uitgeschakeld, worden gevoelige bestanden op afstand direct vanuit de instantie op afstand geladen zonder caching."
flagAsBot: "Markeer dit account als een robot."
flagAsBotDescription: "Als dit account van een programma wordt beheerd, zet deze vlag aan. Het aanzetten helpt andere ontwikkelaars om bijvoorbeeld onbedoelde feedback loops te doorbreken of om Misskey meer geschikt te maken."
flagAsCat: "Markeer dit account als een kat."
@@ -174,6 +184,7 @@ flagShowTimelineReplies: "Toon antwoorden op de tijdlijn."
flagShowTimelineRepliesDescription: "Als je dit vlag aanzet, toont de tijdlijn ook antwoorden op andere en niet alleen jouw eigen notities."
autoAcceptFollowed: "Accepteer verzoeken om jezelf te volgen vanzelf als je de verzoeker al volgt."
addAccount: "Account toevoegen"
+reloadAccountsList: "Accountlijst opnieuw laden"
loginFailed: "Aanmelding mislukt."
showOnRemote: "Toon op de externe instantie."
continueOnRemote: "Verder op remote server"
@@ -205,6 +216,7 @@ perHour: "Per uur"
perDay: "Per dag"
stopActivityDelivery: "Stop met versturen activiteiten"
blockThisInstance: "Blokkeer deze server"
+silenceThisInstance: "Instantie dempen"
mediaSilenceThisInstance: "Media van deze server dempen"
operations: "Verwerkingen"
software: "Software"
@@ -225,6 +237,7 @@ clearCachedFiles: "Cache opschonen"
clearCachedFilesConfirm: "Weet je zeker dat je alle externe bestanden in de cache wilt verwijderen?"
blockedInstances: "Geblokkeerde servers"
blockedInstancesDescription: "Maak een lijst van de servers die moeten worden geblokkeerd, gescheiden door regeleinden. Geblokkeerde servers kunnen niet meer communiceren met deze server."
+silencedInstances: "Gedempte instanties"
silencedInstancesDescription: "Geef de hostnamen van de servers die je wil dempen op, elk op hun eigen regel. Alle accounts die bij de opgegeven servers horen worden als gedempt behandeld, kunnen alleen maar volgverzoeken maken, en kunnen lokale accounts niet vermelden als ze niet gevolgd worden. Geblokkeerde servers worden hier niet door beïnvloed."
mediaSilencedInstances: "Media-gedempte servers"
mediaSilencedInstancesDescription: "Geef de hostnamen van de servers die je wil media-dempen op, elk op hun eigen regel. Alle accounts die bij de opgegeven servers horen worden als gedempt behandeld, en kunnen geen eigen emojis gebruiken. Geblokkeerde servers worden hier niet door beïnvloed."
@@ -291,6 +304,10 @@ noMoreHistory: "Er is geen verdere geschiedenis"
startChat: "Chat starten"
nUsersRead: "gelezen door {n}"
agreeTo: "Ik stem in met {0}"
+agree: "Akkoord"
+agreeBelow: "Ik ga akkoord met de volgende"
+basicNotesBeforeCreateAccount: "Belangrijke informatie"
+termsOfService: "Gebruiksvoorwaarden"
start: "Aan de slag"
home: "Startpagina"
remoteUserCaution: "Aangezien deze gebruiker van een externe server afkomstig is, kan de weergegeven informatie onvolledig zijn."
@@ -336,6 +353,7 @@ copyUrl: "URL kopiëren"
rename: "Hernoemen"
avatar: "Avatar"
banner: "Banner"
+displayOfSensitiveMedia: "Weergave van gevoelige media"
whenServerDisconnected: "Wanneer de verbinding met de server wordt onderbroken"
disconnectedFromServer: "Verbinding met de server onderbroken."
reload: "Verversen"
@@ -373,7 +391,10 @@ bannerUrl: "Banner URL"
backgroundImageUrl: "URL afbeelding"
basicInfo: "Basisinformatie"
pinnedUsers: "Vastgeprikte gebruikers"
+pinnedUsersDescription: "Een lijst met gebruikersnamen, gescheiden door regeleinden, die moet worden vastgemaakt in het tabblad “Verkennenâ€"
pinnedPages: "Vastgeprikte pagina's"
+pinnedPagesDescription: "Voer de paden in van de Pagina's die je aan de bovenste pagina van deze instantie wilt vastmaken, gescheiden door regeleinden."
+pinnedClipId: "ID van de clip die moet worden vastgepind"
pinnedNotes: "Vastgemaakte notitie"
hcaptcha: "hCaptcha"
enableHcaptcha: "Inschakelen hCaptcha"
@@ -392,6 +413,7 @@ turnstile: "Tourniquet"
enableTurnstile: "Inschakelen tourniquet"
turnstileSiteKey: "Site sleutel"
turnstileSecretKey: "Geheime sleutel"
+avoidMultiCaptchaConfirm: "Het gebruik van meerdere Captcha-systemen kan interferentie tussen deze systemen veroorzaken. Wil je de andere Captcha-systemen die momenteel actief zijn uitschakelen? Als je wilt dat ze ingeschakeld blijven, druk dan op annuleren."
antennas: "Antennes"
manageAntennas: "Antennes beheren"
name: "Naam"
@@ -399,6 +421,13 @@ antennaSource: "Bron antenne"
antennaKeywords: "Sleutelwoorden"
antennaExcludeKeywords: "Blokkeerwoorden"
antennaExcludeBots: "Bot-accounts uitsluiten"
+antennaKeywordsDescription: "Scheid met spaties voor een EN-voorwaarde of met regeleinden voor een OF-voorwaarde."
+notifyAntenna: "Houd een notificatie bij nieuwe notities"
+withFileAntenna: "Alleen notities met bestanden"
+excludeNotesInSensitiveChannel: "Sluit notities uit van gevoelige kanalen"
+enableServiceworker: "Activeer pushmeldingen in de browser"
+antennaUsersDescription: "Lijst één gebruikersnaam per regel"
+caseSensitive: "Hoofdlettergevoelig"
withReplies: "Antwoorden toevoegen"
connectedTo: "De volgende accounts zijn verbonden"
notesAndReplies: "Berichten en reacties"
@@ -419,18 +448,30 @@ about: "Over"
aboutMisskey: "Over Misskey"
administrator: "Beheerder"
token: "Token"
+2fa: "Twee factor authenticatie"
+setupOf2fa: "Tweefactorauthenticatie instellen"
+totp: "Verificatie-App"
+totpDescription: "Log in via de verificatie-app met het eenmalige wachtwoord"
moderator: "Moderator"
moderation: "Moderatie"
+moderationNote: "Moderatienotitie"
+moderationNoteDescription: "Voer hier notities in. Deze zijn alleen zichtbaar voor de moderators."
+addModerationNote: "Moderatienotitie toevoegen"
+moderationLogs: "Moderatieprotocollen"
nUsersMentioned: "Vermeld door {n} gebruikers"
+securityKeyAndPasskey: "Beveiligings- en pasjessleutels"
securityKey: "Beveiligingssleutel"
lastUsed: "Laatst gebruikt"
+lastUsedAt: "Laatst gebruikt: {t}"
unregister: "Uitschrijven"
passwordLessLogin: "Inloggen zonder wachtwoord"
+passwordLessLoginDescription: "Maakt aanmelden zonder wachtwoord mogelijk met een beveiligingstoken of -wachtsleutel"
resetPassword: "Wachtwoord terugzetten"
newPasswordIs: "Het nieuwe wachtwoord is „{password}â€."
reduceUiAnimation: "Verminder beweging in de UI"
share: "Delen"
notFound: "Niet gevonden"
+notFoundDescription: "Er is geen pagina gevonden onder deze URL."
uploadFolder: "Standaardmap voor uploaden"
markAsReadAllNotifications: "Markeer alle meldingen als gelezen"
markAsReadAllUnreadNotes: "Markeer alle berichten als gelezen"
@@ -449,13 +490,53 @@ retype: "Opnieuw invoeren"
noteOf: "Notitie van {user}"
quoteAttached: "Citaat"
quoteQuestion: "Toevoegen als citaat?"
+attachAsFileQuestion: "De tekst op het klembord is te lang. Wilt u het als een tekstbestand bijvoegen?"
+onlyOneFileCanBeAttached: "Per bericht kan slechts één bestand worden bijgevoegd"
+signinRequired: "Gelieve te registreren of in te loggen om verder te gaan"
signinOrContinueOnRemote: "Ga naar je eigen instantie of registreer je/log in op deze server om door te gaan."
invitations: "Uitnodigen"
+invitationCode: "Uitnodigingscode"
+checking: "Wordt gecheckt ..."
+available: "Beschikbaar"
+unavailable: "Onbeschikbaar"
+usernameInvalidFormat: "Je kunt kleine letters, hoofdletters, cijfers en onderstrepingstekens gebruiken."
+tooShort: "Te kort"
+tooLong: "Te lang"
+weakPassword: "Zwak wachtwoord"
+normalPassword: "Redelijke wachtwoord"
+strongPassword: "Sterk wachtwoord"
+passwordMatched: "Lucifers"
+passwordNotMatched: "Komt niet overeen"
+signinWith: "Aanmelden met {x}"
+signinFailed: "Inloggen mislukt. Controleer gebruikersnaam en wachtwoord."
+or: "Of"
+language: "Taal"
+uiLanguage: "Taal van gebruikersinterface"
+aboutX: "Over {x}"
+emojiStyle: "Emoji-stijl"
+native: "Inheems"
menuStyle: "Menustijl"
style: "Stijl"
drawer: "Lade"
popup: "Pop-up"
+showNoteActionsOnlyHover: "Toon notitiemenu alleen bij muisaanwijzer"
showReactionsCount: "Zie het aantal reacties op notities"
+noHistory: "Geen geschiedenis gevonden"
+signinHistory: "Inloggeschiedenis"
+enableAdvancedMfm: "Uitgebreide MFM activeren"
+enableAnimatedMfm: "Geanimeerde MFM activeren"
+doing: "In uitvoering..."
+category: "Categorie"
+tags: "Aliassen"
+docSource: "Broncode van dit document"
+createAccount: "Gebruikersaccount maken"
+existingAccount: "Bestaand gebruikersaccount"
+regenerate: "Regenereer"
+fontSize: "Lettergrootte"
+mediaListWithOneImageAppearance: "Hoogte van medialijsten met slechts één afbeelding"
+limitTo: "Beperken tot {x}"
+noFollowRequests: "Je hebt geen lopende volgverzoeken"
+openImageInNewTab: "Afbeeldingen in nieuw tabblad openen"
dashboard: "Overzicht"
local: "Lokaal"
remote: "Remote"
@@ -470,38 +551,388 @@ promote: "Promoot"
numberOfDays: "Aantal dagen"
hideThisNote: "Verberg deze notitie"
showFeaturedNotesInTimeline: "Laat featured notities in tijdlijn zien"
+objectStorage: "Object Storage"
+useObjectStorage: "Object Storage gebruiken"
+objectStorageBaseUrl: "Basis-URL"
+objectStorageBaseUrlDesc: "De URL die wordt gebruikt als referentie. Als je een CDN of proxy gebruikt, voer dan de URL daarvan in. Gebruik voor S3 ‘https://<bucket>.s3.amazonaws.com’. Gebruik voor GCS of vergelijkbaar ‘https://storage.googleapis.com/<bucket>’."
+objectStorageBucket: "Bucket"
+objectStorageBucketDesc: "Geef de bucketnaam op die bij je provider wordt gebruikt."
+objectStoragePrefix: "Prefix"
+objectStoragePrefixDesc: "Bestanden worden opgeslagen in de mappen onder deze prefix."
+objectStorageEndpoint: "Endpoint"
+objectStorageEndpointDesc: "Laat dit leeg als je AWS S3 gebruikt, anders geef je het eindpunt op als ‘<host>’ of ‘<host>:<port>’, afhankelijk van de service die je gebruikt."
+objectStorageRegion: "Region"
+objectStorageRegionDesc: "Voer een regio in zoals “xx-east-1â€. Als je provider geen onderscheid maakt tussen regio's, voer dan “us-east-1†in. Laat leeg als je AWS-configuratiebestanden of omgevingsvariabelen gebruikt."
+objectStorageUseSSL: "SSL gebruiken"
+objectStorageUseSSLDesc: "Deactiveer dit als u geen HTTPS gebruikt voor API-verbindingen"
+objectStorageUseProxy: "Verbinden via proxy"
+objectStorageUseProxyDesc: "Deactiveer dit als u geen proxy wilt gebruiken voor verbindingen met de API"
+objectStorageSetPublicRead: "Instellen op “public-read†op upload"
+s3ForcePathStyleDesc: "Als s3ForcePathStyle is geactiveerd, moet de bucketnaam niet worden opgegeven in de hostnaam van de URL, maar in het pad van de URL. Deze optie moet mogelijk worden geactiveerd als services zoals een zelfbediende Minio-instantie worden gebruikt."
+serverLogs: "Serverprotocollen"
+deleteAll: "Alles verwijderen"
+showFixedPostForm: "Het postingformulier bovenaan de tijdbalk weergeven"
+showFixedPostFormInChannel: "Het postingformulier bovenaan de tijdbalk weergeven (Kanalen)"
+withRepliesByDefaultForNewlyFollowed: "Toon replies van nieuw gevolgde gebruikers standaard in de tijdlijn"
+newNoteRecived: "Er zijn nieuwe notities"
+sounds: "Geluiden"
sound: "Geluid"
+listen: "Luisteren"
+none: "Niets"
+showInPage: "Weergeven in een pagina"
+popout: "Pop-Up"
+volume: "Volume"
+masterVolume: "Hoofdvolume"
notUseSound: "Geluid uitschakelen"
useSoundOnlyWhenActive: "Geluid alleen inschakelen wanneer Misskey actief is"
+details: "Details"
+renoteDetails: "Renote Details"
+chooseEmoji: "Emoji selecteren"
+unableToProcess: "De operatie kan niet worden voltooid."
+recentUsed: "Recent gebruikt"
+install: "Installeren"
+uninstall: "Deinstalleren"
+installedApps: "Geautoriseerde toepassingen"
+nothing: "Niets te zien hier"
+installedDate: "Geautoriseerd at"
+lastUsedDate: "Laatst gebruikt at"
+state: "Status"
+sort: "Sorteren"
+ascendingOrder: "Oplopende volgorde"
+descendingOrder: "Aflopende volgorde"
+scratchpad: "Testomgeving"
+scratchpadDescription: "De testomgeving biedt een gebied voor AiScript experimenten. Daar kunt u AiScript schrijven en uitvoeren en de effecten ervan op Misskey controleren."
uiInspector: "UI-inspecteur"
+uiInspectorDescription: "De lijst met servers van UI-componenten kan worden bekeken in de cache. De UI-component wordt gegenereerd door de functie Ui:C:"
+output: "Uitvoer"
+script: "Script"
+disablePagesScript: "AiScript uitschakelen op pagina's"
+updateRemoteUser: "Gebruikersinformatie bijwerken"
unsetUserAvatar: "Avatar verwijderen"
unsetUserAvatarConfirm: "Weet je zeker dat je je avatar wil verwijderen?"
unsetUserBanner: "Banner verwijderen"
unsetUserBannerConfirm: "Weet je zeker dat je je banner wil verwijderen?"
+deleteAllFiles: "Alle bestanden verwijderen"
+deleteAllFilesConfirm: "Wil je echt alle bestanden verwijderen?"
+removeAllFollowing: "Ontvolg alle gevolgde gebruikers"
+removeAllFollowingDescription: "Door dit uit te voeren worden alle accounts van {host} ontvolgd. Voer dit uit als de instantie bijvoorbeeld niet meer bestaat."
+userSuspended: "Deze gebruiker is geschorst."
+userSilenced: "Deze gebruiker is instantiebreed gedempt."
+yourAccountSuspendedTitle: "Deze account is geschorst"
+yourAccountSuspendedDescription: "Dit gebruikersaccount is geschorst omdat het de gebruiksvoorwaarden van deze server heeft geschonden. Neem contact op met de operator voor meer informatie. Maak geen nieuwe gebruikersaccount aan."
+tokenRevoked: "Ongeldig token"
+tokenRevokedDescription: "Het token is verlopen. Log opnieuw in."
+accountDeleted: "Het gebruikersaccount is verwijderd"
+accountDeletedDescription: "Deze account is verwijderd."
+menu: "Menu"
+divider: "Scheider"
+addItem: "Element toevoegen"
+rearrange: "Sorteren"
+relays: "Relays"
+addRelay: "Relay toevoegen"
+inboxUrl: "Inbox-URL"
+addedRelays: "Toegevoegd Relays"
+serviceworkerInfo: "Moet worden geactiveerd voor pushmeldingen."
+deletedNote: "Verwijderde notitie"
+invisibleNote: "Privé notitie"
+enableInfiniteScroll: "Automatisch meer laden"
+visibility: "Zichtbaarheid"
+poll: "Peiling"
+useCw: "Inhoudswaarschuwing gebruiken"
+enablePlayer: "Videospeler openen"
+disablePlayer: "Videospeler sluiten"
expandTweet: "Notitie uitklappen"
+themeEditor: "Thema-editor"
+description: "Beschrijving"
+describeFile: "Beschrijving toevoegen"
+enterFileDescription: "Beschrijving invoeren"
+author: "Auteur"
+leaveConfirm: "Er zijn niet-opgeslagen wijzigingen. Wil je ze verwijderen?"
+manage: "Beheer"
+plugins: "Plugins"
+preferencesBackups: "Instellingen Back-ups"
+deck: "Dek"
+undeck: "Dek verlaten"
+useBlurEffectForModal: "Vervagingseffect gebruiken voor modals"
+useFullReactionPicker: "Volledige reaktieselectier gebruiken"
+width: "Breedte"
+height: "Hoogte"
+large: "Groot"
+medium: "Medium"
+small: "Klein"
+generateAccessToken: "Toegangstoken genereren"
+permission: "Machtigingen"
adminPermission: "Administratorrechten"
+enableAll: "Alle activeren"
+disableAll: "Alle deactiveren"
+tokenRequested: "Toegang verlenen tot het gebruikersaccount"
+pluginTokenRequestedDescription: "Deze plugin kan de hier geconfigureerde autorisaties gebruiken."
+notificationType: "Type melding"
+edit: "Bewerken"
+emailServer: "Email-Server"
+enableEmail: "Email distributie inschakelen"
+emailConfigInfo: "Wordt gebruikt om je email te bevestigen tijdens het aanmelden of als je je wachtwoord bent vergeten"
+email: "Email"
+emailAddress: "Email adres"
+smtpConfig: "SMTP-server configuratie"
smtpHost: "Server"
+smtpPort: "Poort"
smtpUser: "Gebruikersnaam"
smtpPass: "Wachtwoord"
+emptyToDisableSmtpAuth: "Laat gebruikersnaam en wachtwoord leeg om SMTP-authenticatie uit te schakelen."
+smtpSecure: "Impliciet SSL/TLS gebruiken voor SMTP-verbindingen"
+smtpSecureInfo: "Schakel dit uit bij gebruik van STARTTLS"
+testEmail: "Emailversand testen"
+wordMute: "Woord dempen"
wordMuteDescription: "Minimaliseert notities die het gespecificeerde woord of zin bevatten. Geminimaliseerde notities kunnen worden weergegeven door er op te klikken."
hardWordMute: "Harde woorddemping"
showMutedWord: "Gedempte woorden weergeven"
hardWordMuteDescription: "Verbert notities die het gespecificeerde woord of zin bevatten. In tegenstelling tot woorddemping wordt de notitie volledig verborgen."
+regexpError: "Fout in reguliere expressie"
+regexpErrorDescription: "Er is een fout opgetreden in de reguliere expressie op regel {line} van uw {tab} woord dempen:"
+instanceMute: "Instantie dempers"
+userSaysSomething: "{name} zei iets"
userSaysSomethingAbout: "{name} zei iets over '{word}'"
+makeActive: "Activeren"
+display: "Weergave"
+copy: "Kopiëren"
copiedToClipboard: "Naar het klembord gekopieerd"
+metrics: "Metrieken"
+overview: "Overzicht"
+logs: "Protocollen"
+delayed: "Vertraagd"
+database: "Database"
+channel: "Kanalen"
+create: "Creëer"
+notificationSetting: "Instellingen meldingen"
+notificationSettingDesc: "Selecteer het type meldingen dat moet worden weergegeven."
+useGlobalSetting: "Globale instelling gebruiken"
+useGlobalSettingDesc: "Als deze optie is ingeschakeld, worden de meldingsinstellingen van je account gebruikt. Als deze optie uitgeschakeld is, kunnen individuele configuraties worden gemaakt."
+other: "Ander"
+regenerateLoginToken: "Login token opnieuw genereren"
+regenerateLoginTokenDescription: "Regenereren van het token dat intern wordt gebruikt om in te loggen. Dit is normaal gezien niet nodig. Alle apparaten worden afgemeld tijdens het regenereren."
theKeywordWhenSearchingForCustomEmoji: "Dit is het keyword dat gebruikt wordt bij het zoeken naar eigen emojis."
+setMultipleBySeparatingWithSpace: "Scheid elementen met een spatie om meerdere instellingen te configureren."
+fileIdOrUrl: "Bestands-ID of URL"
+behavior: "Gedrag"
+sample: "Voorbeeld"
+abuseReports: "Meldt"
+reportAbuse: "Meld"
+reportAbuseRenote: "Meld renote"
+reportAbuseOf: "Meld {name}"
fillAbuseReportDescription: "Vul s.v.p. de details in over deze melding. Geef, als het over een specifieke notitie gaat, ook de URL op."
+abuseReported: "Uw rapport is verzonden. Hartelijk dank."
+reporter: "Verslaggever"
+reporteeOrigin: "Oorsprong van de gemelde persoon"
+reporterOrigin: "Verslaggever Oorsprong"
+send: "Stuur"
+openInNewTab: "In nieuw tabblad openen"
+openInSideView: "In zijaanzicht openen"
+defaultNavigationBehaviour: "Standaard navigatie gedrag"
+editTheseSettingsMayBreakAccount: "Het wijzigen van deze instellingen kan je account beschadigen."
+instanceTicker: "Instantie-informatie van notities"
+waitingFor: "Wachten op {x}"
+random: "Willekeurig"
+system: "Systeem"
+switchUi: "UI omschakelen"
+desktop: "Desktop"
+clip: "Clip aanmaken"
+createNew: "Nieuwe aanmaken"
+optional: "Optioneel"
+createNewClip: "Nieuwe clip aanmaken"
+unclip: "Van clip verwijderen"
+confirmToUnclipAlreadyClippedNote: "Deze notitie is al toegevoegd aan de clip “{name}â€. Wil je deze uit deze clip verwijderen?"
+public: "Openbare"
+private: "Privé"
+i18nInfo: "Misskey wordt in veel verschillende talen vertaald door vrijwilligers. Je kunt helpen op {link}"
+manageAccessTokens: "Toegangstokens beheren"
+accountInfo: "Informatie over gebruikersaccount"
+notesCount: "Aantal notities"
+repliesCount: "Aantal verzonden replies"
+renotesCount: "Aantal verzonden renotes"
+repliedCount: "Aantal ontvangen replies"
+renotedCount: "Aantal ontvangen renotes"
+followingCount: "Aantal gevolgde accounts"
+followersCount: "Aantal volgers"
+sentReactionsCount: "Aantal verzonden reacties"
+receivedReactionsCount: "Aantal ontvangen reacties"
+pollVotesCount: "Aantal verzonden peiling stemmen"
+pollVotedCount: "Aantal ontvangen peiling stemmen"
+yes: "Ja"
+no: "Nee"
+driveFilesCount: "Aantal bestanden in station"
+driveUsage: "Schijfruimtegebruik"
+noCrawle: "Crawler-indexering verwerpen"
+noCrawleDescription: "Vraag zoekmachines om je eigen profielpagina, notities, pagina's, enz. niet te indexeren."
+lockedAccountInfo: "Tenzij je de zichtbaarheid van je notities instelt op “Alleen volgersâ€, zijn je notities zichtbaar voor iedereen, zelfs als je vereist dat volgers handmatig worden goedgekeurd."
+alwaysMarkSensitive: "Markeer media standaard als gevoelig"
+loadRawImages: "Toon altijd originele afbeeldingen in plaats van miniaturen"
+disableShowingAnimatedImages: "Speel geen geanimeerde afbeeldingen af"
+highlightSensitiveMedia: "Markeer gevoelige media"
+verificationEmailSent: "Er is een bevestigingsmail naar uw e-mailadres verzonden. Ga naar de link in de e-mail om het verificatieproces te voltooien."
+notSet: "Niet geconfigureerd"
+emailVerified: "Emailadres bevestigd"
+noteFavoritesCount: "Aantal notities gemarkeerd als favoriet"
+pageLikesCount: "Aantal gelikete pagina's"
+pageLikedCount: "Aantal ontvangen pagina-likes"
+contact: "Contact"
+useSystemFont: "Het standaardlettertype van het systeem gebruiken"
+clips: "Clips"
+experimentalFeatures: "Experimentele functionaliteiten"
+experimental: "Experimentele"
+thisIsExperimentalFeature: "Dit is een experimentele functie. De functionaliteit kan worden gewijzigd en werkt mogelijk niet zoals bedoeld."
+developer: "Ontwikkelaar"
+makeExplorable: "Gebruikersaccount zichtbaar maken in “Verkennenâ€"
+makeExplorableDescription: "Als deze optie is uitgeschakeld, is uw gebruikersaccount niet zichtbaar in het gedeelte “Verkennenâ€."
+showGapBetweenNotesInTimeline: "Een gat tussen noten op de tijdlijn weergeven"
+duplicate: "Dupliceren"
+left: "Links"
+center: "Center"
+wide: "Breed"
+narrow: "Smal"
reloadToApplySetting: "Deze instelling gaat pas in nadat de pagina herladen is. Nu herladen?"
+needReloadToApply: "Deze instelling wordt van kracht nadat de pagina is vernieuwd."
+showTitlebar: "Titelbalk weergeven"
clearCache: "Cache opschonen"
+onlineUsersCount: "{n} Gebruikers zijn online"
+nUsers: "{n} Gebruikers"
+nNotes: "{n} Notities"
+sendErrorReports: "Foutrapporten sturen"
+sendErrorReportsDescription: "Als u deze optie inschakelt, wordt gedetailleerde foutinformatie met Misskey gedeeld wanneer zich een probleem voordoet. Dit helpt de kwaliteit van Misskey te verbeteren.\nDit omvat informatie zoals de versie van uw OS, welke browser u gebruikt, uw activiteit in Misskey, enz."
+myTheme: "Mijn thema"
+backgroundColor: "Achtergrondkleur"
+accentColor: "Accentkleur"
+textColor: "Tekstkleur"
+saveAs: "Opslaan als…"
+advanced: "Geavanceerd"
+advancedSettings: "Geavanceerde instellingen"
+value: "Waarde"
+createdAt: "Aangemaakt at"
+updatedAt: "Laatst gewijzigd at"
+saveConfirm: "Wijzigingen opslaan?"
+deleteConfirm: "Echt verwijderen?"
+invalidValue: "Ongeldige waarde."
+registry: "Registry"
+closeAccount: "Gebruikersaccount sluiten"
+currentVersion: "Huidige versie"
+latestVersion: "Nieuwste versie"
+youAreRunningUpToDateClient: "Je gebruikt de nieuwste versie van je client."
+newVersionOfClientAvailable: "Er is een nieuwere versie van je client beschikbaar."
+usageAmount: "Gebruik"
+capacity: "Capaciteit"
+inUse: "Gebruikt"
+editCode: "Code bewerken"
+apply: "Toepassen"
+receiveAnnouncementFromInstance: "Meldingen ontvangen van deze instantie"
+emailNotification: "E-mailmeldingen"
+publish: "Publiceren"
+inChannelSearch: "In kanaal zoeken"
+useReactionPickerForContextMenu: "Open reactieselectie door rechts te klikken"
+typingUsers: "{users} is/zijn aan het schrijven..."
+jumpToSpecifiedDate: "Naar een specifieke datum springen"
+showingPastTimeline: "Momenteel wordt een oude tijdlijn weergeven"
+clear: "Terugkeren"
+markAllAsRead: "Alles als gelezen markeren"
+goBack: "Terug"
+unlikeConfirm: "Wil je echt je like verwijderen?"
+fullView: "Volledig zicht"
+quitFullView: "Volledig zicht verlaten"
+addDescription: "Beschrijving toevoegen"
+userPagePinTip: "Je kunt hier notities tonen door “Vastmaken aan profiel†te selecteren in het menu van de individuele notities."
+notSpecifiedMentionWarning: "Deze notitie bevat verwijzingen naar gebruikers die niet zijn geselecteerd als ontvangers"
info: "Over"
+userInfo: "Gebruikersinformatie"
+unknown: "Onbekend"
+onlineStatus: "Online status"
+hideOnlineStatus: "Online status verbergen"
+hideOnlineStatusDescription: "Het verbergen van je online status vermindert het nut van functies zoals zoeken."
+online: "Online"
+active: "Actief"
+offline: "Offline"
+notRecommended: "Niet aanbevolen"
+botProtection: "Beveiliging tegen bots"
+instanceBlocking: "Geblokkeerde/gedempte Instanties"
+selectAccount: "Gebruikersaccount selecteren"
+switchAccount: "Account wisselen"
+enabled: "Ingeschakeld"
+disabled: "Uitgeschakeld"
+quickAction: "Snelle acties"
user: "Gebruikers"
+administration: "Beheer"
+accounts: "Gebruikersaccounts"
+switch: "Wissel"
+noMaintainerInformationWarning: "Operatorinformatie is niet geconfigureerd."
noInquiryUrlWarning: "Contact-URL niet opgegeven"
+noBotProtectionWarning: "Bescherming tegen bots is niet geconfigureerd."
+configure: "Configureer"
+postToGallery: "Nieuw galerijbericht maken"
+postToHashtag: "Post naar deze hashtag"
+gallery: "Galerij"
+recentPosts: "Recente berichten"
+popularPosts: "Populair berichten"
+shareWithNote: "Delen met notitie"
+ads: "Advertenties"
+expiration: "Deadline"
+startingperiod: "Start"
+memo: "Memo"
+priority: "Prioriteit"
+high: "Hoge"
+middle: "Medium"
+low: "Lage"
+emailNotConfiguredWarning: "E-mailadres niet ingesteld."
+ratio: "Verhouding"
+previewNoteText: "Show voorproefje"
+customCss: "Aangepaste CSS"
+customCssWarn: "Gebruik deze instelling alleen als je weet wat het doet. Ongeldige invoer kan ertoe leiden dat de client niet meer normaal functioneert."
+global: "Globaal"
+squareAvatars: "Toon profielfoto's as vierkant"
+sent: "Verzonden"
+received: "Ontvangen"
+searchResult: "Zoekresultaten"
+hashtags: "Hashtags"
+troubleshooting: "Probleemoplossing"
+useBlurEffect: "Vervagingseffecten in de UI gebruike"
+learnMore: "Meer leren"
+misskeyUpdated: "Misskey is bijgewerkt!"
+whatIsNew: "Wijzigingen tonen"
+translate: "Vertalen"
+translatedFrom: "Vertaald uit {x}"
+accountDeletionInProgress: "De verwijdering van je gebruikersaccount wordt momenteel verwerkt."
+usernameInfo: "Een naam die kan worden gebruikt om je gebruikersaccount op deze server te identificeren. Je kunt het alfabet (a~z, A~Z), cijfers (0~9) of underscores (_) gebruiken. Gebruikersnamen kunnen later niet worden gewijzigd."
+aiChanMode: "Ai Mode"
+devMode: "Ontwikkelaar modus"
+keepCw: "Inhoudswaarschuwingen behouden"
+pubSub: "Pub/Sub Gebruikersaccounts"
+lastCommunication: "Laatste communicatie"
+resolved: "Opgelost"
+unresolved: "Onopgelost"
+breakFollow: "Volger verwijderen"
+breakFollowConfirm: "Deze volger echt weghalen?"
+itsOn: "Ingeschakeld"
+itsOff: "Uitgeschakeld"
+on: "Op"
+off: "Uit"
+emailRequiredForSignup: "Vereist e-mailadres voor aanmelding"
+unread: "Ongelezen"
+filter: "Filter"
+controlPanel: "Controlepaneel"
+manageAccounts: "Gebruikersaccounts beheren"
+makeReactionsPublic: "Reactiegeschiedenis publiceren"
+makeReactionsPublicDescription: "Hierdoor wordt de lijst met al je eerdere reacties openbaar."
+classic: "Classic"
muteThread: "Discussies dempen "
unmuteThread: "Dempen van discussie ongedaan maken"
followingVisibility: "Zichtbaarheid van gevolgden"
followersVisibility: "Zichtbaarheid van volgers"
+continueThread: "Bekijk draad voortzetting"
+deleteAccountConfirm: "Je gebruikersaccount wordt onherroepelijk verwijderd. Wil je nog steeds doorgaan?"
+incorrectPassword: "Onjuist wachtwoord."
incorrectTotp: "Het eenmalige wachtwoord is incorrect of verlopen"
+voteConfirm: "Bevestig je je stem op “{choice}�"
hide: "Verbergen"
+useDrawerReactionPickerForMobile: "Toon reactiekiezer als lade op mobiel"
+welcomeBackWithName: "Welkom terug, {name}"
+clickToFinishEmailVerification: "Druk op [{ok}] om de e-mailbevestiging af te ronden."
searchByGoogle: "Zoeken"
threeMonths: "3 maanden"
oneYear: "1 jaar"
@@ -509,6 +940,7 @@ threeDays: "3 dagen"
cropImage: "Afbeelding bijsnijden"
cropImageAsk: "Bijsnijdengevraagd"
file: "Bestanden"
+account: "Gebruikersaccounts"
pushNotification: "Pushberichten"
subscribePushNotification: "Push meldingen inschakelen"
unsubscribePushNotification: "Pushberichten uitschakelen"
@@ -516,6 +948,7 @@ pushNotificationAlreadySubscribed: "Pushberichtrn al ingeschakeld"
windowMaximize: "Maximaliseren"
windowRestore: "Herstellen"
loggedInAsBot: "Momenteel als bot ingelogd"
+show: "Weergave"
correspondingSourceIsAvailable: "De bijbehorende broncode is beschikbaar bij {anchor}"
invalidParamErrorDescription: "De aanvraagparameters zijn ongeldig. Dit komt meestal door een bug, maar kan ook omdat de invoer te lang is of iets dergelijks."
collapseRenotes: "Renotes die je al gezien hebt, inklappen"
@@ -534,26 +967,40 @@ lookupConfirm: "Weet je zeker dat je dit wil opzoeken?"
openTagPageConfirm: "Wil je deze hashtagpagina openen?"
specifyHost: "Specificeer host"
icon: "Avatar"
-replies: "Antwoord"
+replies: "Antwoorden"
renotes: "Herdelen"
followingOrFollower: "Gevolgd of volger"
confirmShowRepliesAll: "Dit is een onomkeerbare operatie. Weet je zeker dat reacties op anderen van iedereen die je volgt, wil weergeven in je tijdlijn?"
information: "Over"
_chat:
invitations: "Uitnodigen"
+ noHistory: "Geen geschiedenis gevonden"
members: "Leden"
home: "Startpagina"
+ send: "Stuur"
_delivery:
stop: "Opgeschort"
_type:
none: "Publiceren"
+_role:
+ priority: "Prioriteit"
+ _priority:
+ low: "Lage"
+ middle: "Medium"
+ high: "Hoge"
+_ffVisibility:
+ public: "Publiceren"
+_ad:
+ back: "Terug"
_email:
_follow:
title: "volgde jou"
_theme:
+ description: "Beschrijving"
keys:
mention: "Vermelding"
renote: "Herdelen"
+ divider: "Scheider"
_sfx:
note: "Notities"
notification: "Meldingen"
@@ -578,6 +1025,7 @@ _profile:
name: "Naam"
username: "Gebruikersnaam"
_exportOrImport:
+ clips: "Clip aanmaken"
followingList: "Volgend"
muteList: "Dempen"
blockingList: "Blokkeren"
@@ -588,6 +1036,9 @@ _charts:
federation: "Federatie"
_timelines:
home: "Startpagina"
+_play:
+ script: "Script"
+ summary: "Beschrijving"
_pages:
blocks:
image: "Afbeeldingen"
@@ -610,9 +1061,15 @@ _deck:
tl: "Tijdlijn"
antenna: "Antennes"
list: "Lijsten"
+ channel: "Kanalen"
mentions: "Vermeldingen"
_webhookSettings:
name: "Naam"
+ active: "Ingeschakeld"
+_abuseReport:
+ _notificationRecipient:
+ _recipientType:
+ mail: "Email"
_moderationLogTypes:
suspend: "Opschorten"
resetPassword: "Wachtwoord terugzetten"
diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml
index e899685d9f..3800de6bcf 100644
--- a/locales/pt-PT.yml
+++ b/locales/pt-PT.yml
@@ -5,6 +5,7 @@ introMisskey: "Bem-vindo! O Misskey é um serviço de microblog descentralizado
poweredByMisskeyDescription: "{name} é uma instância da plataforma de código aberto <b>Misskey</b>."
monthAndDay: "{day}/{month}"
search: "Pesquisar"
+reset: "Redefinir"
notifications: "Notificações"
username: "Nome de usuário"
password: "Senha"
@@ -48,6 +49,7 @@ pin: "Fixar no perfil"
unpin: "Desafixar do perfil"
copyContent: "Copiar conteúdos"
copyLink: "Copiar link"
+copyRemoteLink: "Copiar endereço remoto"
copyLinkRenote: "Copiar o link da repostagem"
delete: "Excluir"
deleteAndEdit: "Excluir e editar"
@@ -299,6 +301,7 @@ uploadFromUrlMayTakeTime: "Pode levar algum tempo para que o upload seja concluÃ
explore: "Explorar"
messageRead: "Lida"
noMoreHistory: "Não existe histórico anterior"
+startChat: "Iniciar conversa"
nUsersRead: "{n} pessoas leram"
agreeTo: "Eu concordo com {0}"
agree: "Concordar"
@@ -421,6 +424,7 @@ antennaExcludeBots: "Ignorar contas de bot"
antennaKeywordsDescription: "Se você separá-lo com um espaço, será uma especificação AND, e se você separá-lo com uma quebra de linha, será uma especificação OR."
notifyAntenna: "Notificar novas notas"
withFileAntenna: "Apenas notas com arquivos anexados"
+excludeNotesInSensitiveChannel: "Excluir notas de canais sensíveis"
enableServiceworker: "Ative as notificações push para o seu navegador"
antennaUsersDescription: "Especificar nomes de utilizador separados por quebras de linha"
caseSensitive: "Maiúsculas e minúsculas"
@@ -680,14 +684,19 @@ smtpSecure: "Use SSL/TLS implícito para conexões SMTP"
smtpSecureInfo: "Desative esta opção ao utilizar STARTTLS."
testEmail: "Testar envio de e-mail"
wordMute: "Silenciar palavras"
+wordMuteDescription: "Minimizar notas que contêm a palavra ou frase especificada. Notas minimizadas são exibidas ao clicá-las."
hardWordMute: "Silenciar palavras (esconder posts)"
+showMutedWord: "Exibir palavras silenciadas"
+hardWordMuteDescription: "Esconder notas que contêm a palavra ou frase especificada. Diferente do silenciamento de palavras, a nota será completamente escondida."
regexpError: "Erro na expressão regular"
regexpErrorDescription: "Ocorreu um erro na expressão regular na linha {line} da palavra mutada {tab}:"
instanceMute: "Instâncias silenciadas"
userSaysSomething: "{name} disse algo"
+userSaysSomethingAbout: "{name} disse algo sobre \"{word}\""
makeActive: "Ativar"
display: "Visualizar"
copy: "Copiar"
+copiedToClipboard: "Copiado à área de transferência"
metrics: "Métricas"
overview: "Visão geral"
logs: "Logs"
@@ -970,6 +979,7 @@ document: "Documentação"
numberOfPageCache: "Número de cache de página"
numberOfPageCacheDescription: "Aumentar isso melhora a conveniência, mas também resulta em maior carga e uso de memória."
logoutConfirm: "Gostaria de encerrar a sessão?"
+logoutWillClearClientData: "Sair irá remover as configurações do cliente do navegador. Para redefinir as configurações ao entrar, você deve habilitar o backup automático de configurações."
lastActiveDate: "Última data de uso"
statusbar: "Barra de status"
pleaseSelect: "Por favor, selecione."
@@ -1297,16 +1307,137 @@ lockdown: "Lockdown"
pleaseSelectAccount: "Selecione uma conta"
availableRoles: "Cargos disponíveis"
acknowledgeNotesAndEnable: "Ative após compreender as precauções."
+federationSpecified: "Esse servidor opera com uma lista branca de federação. Interagir com servidores diferentes daqueles designados pela administração não é permitido."
+federationDisabled: "Federação está desabilitada nesse servidor. Você não pode interagir com usuários de outros servidores."
+confirmOnReact: "Confirmar ao reagir"
+reactAreYouSure: "Você deseja adicionar uma reação \"{emoji}\"?"
+markAsSensitiveConfirm: "Você deseja definir essa mídia como sensível?"
+unmarkAsSensitiveConfirm: "Você deseja remover a definição dessa mídia como sensível?"
+preferences: "Preferências"
+accessibility: "Acessibilidade"
+preferencesProfile: "Perfil de preferências"
+copyPreferenceId: "Copiar ID de preferências"
+resetToDefaultValue: "Reverter ao padrão"
+overrideByAccount: "Sobrescrever pela conta"
+untitled: "Sem título"
+noName: "Sem nome"
+skip: "Pular"
+restore: "Redefinir"
+syncBetweenDevices: "Sincronizar entre dispositivos"
+preferenceSyncConflictTitle: "O valor configurado já existe no servidor."
+preferenceSyncConflictText: "As preferências com a sincronização ativada irão salvar os seus valores no servidor. Porém, já existem valores no servidor. Qual conjunto de valores você deseja sobrescrever?"
+preferenceSyncConflictChoiceServer: "Valor configurado no servidor"
+preferenceSyncConflictChoiceDevice: "Valor configurado no dispositivo"
+preferenceSyncConflictChoiceCancel: "Cancelar a habilitação de sincronização"
+paste: "Colar"
+emojiPalette: "Paleta de emojis"
postForm: "Campo de postagem"
+textCount: "Contagem de caracteres"
information: "Informações"
+chat: "Conversas"
+migrateOldSettings: "Migrar configurações antigas de cliente"
+migrateOldSettings_description: "Isso deve ser feito automaticamente. Caso o processo de migração tenha falhado, você pode acioná-lo manualmente. As informações atuais de migração serão substituídas."
+compress: "Comprimir"
+right: "Direita"
+bottom: "Inferior"
+top: "Superior"
+embed: "Embed"
+settingsMigrating: "Configurações estão sendo migradas, aguarde... (Você pode migrar manualmente em Configurações→Outros→Migrar configurações antigas de cliente)"
+readonly: "Ler apenas"
+goToDeck: "Voltar ao Deck"
+federationJobs: "Tarefas de Federação"
_chat:
+ noMessagesYet: "Ainda não há mensagens"
+ newMessage: "Nova mensagem"
+ individualChat: "Conversa Particular"
+ individualChat_description: "Ter uma conversa particular com outra pessoa."
+ roomChat: "Conversa de Grupo"
+ roomChat_description: "Uma sala de conversas com várias pessoas. Você pode adicionar pessoas que não permitem conversas privadas se elas aceitarem o convite."
+ createRoom: "Criar Sala"
+ inviteUserToChat: "Convide usuários para começar a conversar"
+ yourRooms: "Salas criadas"
+ joiningRooms: "Salas ingressadas"
invitations: "Convidar"
+ noInvitations: "Sem convites"
+ history: "Histórico"
noHistory: "Ainda não há histórico"
+ noRooms: "Nenhuma sala encontrada"
+ inviteUser: "Convidar Usuários"
+ sentInvitations: "Convites Enviados"
+ join: "Entrar"
+ ignore: "Ignorar"
+ leave: "Deixar sala"
members: "Membros"
+ searchMessages: "Pesquisar mensagens"
home: "Início"
send: "Enviar"
+ newline: "Nova linha"
+ muteThisRoom: "Silenciar sala"
+ deleteRoom: "Excluir sala"
+ chatNotAvailableForThisAccountOrServer: "Conversas não estão habilitadas nesse servidor ou para essa conta."
+ chatIsReadOnlyForThisAccountOrServer: "Conversas são apenas para leitura nesse servidor ou para essa conta. Não é possível escrever novas mensagens ou criar/ingressar novas conversas."
+ chatNotAvailableInOtherAccount: "A função de conversas está desabilitadas para o outro usuário."
+ cannotChatWithTheUser: "Não é possível conversar com esse usuário."
+ cannotChatWithTheUser_description: "Conversas estão indisponíveis ou o outro usuário não as habilitou."
+ chatWithThisUser: "Conversar com usuário"
+ thisUserAllowsChatOnlyFromFollowers: "Esse usuário aceita conversar apenas com seguidores."
+ thisUserAllowsChatOnlyFromFollowing: "Esse usuário aceita conversar apenas com quem segue."
+ thisUserAllowsChatOnlyFromMutualFollowing: "Esse usuário aceita conversar apenas com seguidores mútuos."
+ thisUserNotAllowedChatAnyone: "Esse usuário não aceita conversar com ninguém."
+ chatAllowedUsers: "Com quem permitir conversas"
+ chatAllowedUsers_note: "Você pode conversar com qualquer um com quem tenha iniciado uma conversa independente dessa configuração."
+ _chatAllowedUsers:
+ everyone: "Todos"
+ followers: "Seus seguidores"
+ following: "Quem você segue"
+ mutual: "Seguidores mútuos"
+ none: "Ninguém"
+_emojiPalette:
+ palettes: "Paleta"
+ enableSyncBetweenDevicesForPalettes: "Sincronizar paleta entre dispositivos"
+ paletteForMain: "Paleta principal"
+ paletteForReaction: "Paleta de reações"
_settings:
+ driveBanner: "Você consegue administrar e configurar o drive, conferir o seu uso e configurar as opções de envio de arquivos."
+ pluginBanner: "Você pode ampliar as funções do cliente com plugins. Você pode instalar plugins, configurar e administrar individualmente."
+ notificationsBanner: "Você pode configurar os tipos e intervalo das notificações do servidor, além de notificações push."
+ api: "API"
webhook: "Webhook"
+ serviceConnection: "Integração de serviço"
+ serviceConnectionBanner: "Administre e configure tokens de acesso e webhooks para interagir com aplicações e serviços externos."
+ accountData: "Dados da conta"
+ accountDataBanner: "Exportar e importar dados da conta."
+ muteAndBlockBanner: "Você pode configurar meios para esconder conteúdo e restringir ações de certos usuários."
+ accessibilityBanner: "Você pode personalizar o visual e comportamento do cliente, além de configurar modos de otimizar o uso."
+ privacyBanner: "Você pode configurar a privacidade da conta por meio da visibilidade do conteúdo, capacidade de descoberta e aprovação manual de seguidores."
+ securityBanner: "Você pode configurar a segurança da conta em ajustes como senha, meios de entrada, aplicativos de autenticação e chaves de acesso."
+ preferencesBanner: "Você pode configurar o comportamento geral do cliente segundo as suas preferências."
+ appearanceBanner: "Você pode configurar a aparência do cliente e ajustes de tela segundo as suas preferências."
+ soundsBanner: "Você pode configurar a reprodução de sons no cliente."
+ timelineAndNote: "Notas e linha do tempo"
+ makeEveryTextElementsSelectable: "Tornar todos os elementos de texto selecionáveis"
+ makeEveryTextElementsSelectable_description: "Habilitar isso pode reduzir a usabilidade em algumas situações"
+ useStickyIcons: "Fazer ícones acompanharem a rolagem da tela"
+ showNavbarSubButtons: "Mostrar sub-botões na barra de navegação"
+ ifOn: "Quando ligado"
+ ifOff: "Quando desligado"
+ enableSyncThemesBetweenDevices: "Sincronizar temas instalados entre dispositivos"
+ _chat:
+ showSenderName: "Exibir nome de usuário do remetente"
+ sendOnEnter: "Pressionar Enter para enviar"
+_preferencesProfile:
+ profileName: "Nome do perfil"
+ profileNameDescription: "Defina o nome que identifica esse dispositivo."
+ profileNameDescription2: "Exemplo: \"Computador Principal\", \"Celular\""
+_preferencesBackup:
+ autoBackup: "Backup automático"
+ restoreFromBackup: "Restaurar backup"
+ noBackupsFoundTitle: "Nenhum backup encontrado"
+ noBackupsFoundDescription: "Nenhum backup automático foi encontrado. Se você salvou um arquivo de backup manualmente, você pode importá-lo e restaurá-lo."
+ selectBackupToRestore: "Selecionar um backup para restaurar"
+ youNeedToNameYourProfileToEnableAutoBackup: "Um nome de perfil deve ser definido para habilitar o backup automático."
+ autoPreferencesBackupIsNotEnabledForThisDevice: "Backup automático de configurações não está habilitado no dispositivo."
+ backupFound: "Backup de configurações encontrado"
_accountSettings:
requireSigninToViewContents: "Exigir cadastro para ver o conteúdo"
requireSigninToViewContentsDescription1: "Exigir cadastro para ver todas as notas e outro conteúdo que você criou. Isso previne 'crawlers' de coletar os seus dados."
@@ -1317,6 +1448,7 @@ _accountSettings:
makeNotesHiddenBefore: "Tornar notas passadas privadas"
makeNotesHiddenBeforeDescription: "Com essa função ativada, apenas você poderá ver as notas anteriores à data e hora marcadas. Se isso for desativado, o status de publicação da nota será reestabelecido."
mayNotEffectForFederatedNotes: "Notas federadas a servidores remotos podem não ser afetadas."
+ mayNotEffectSomeSituations: "Essas restrições são simplificadas. Elas podem não ser aplicadas em algumas situações, como ao visualizar num servidor remoto ou durante a moderação."
notesHavePassedSpecifiedPeriod: "Notas que duraram um tempo específico."
notesOlderThanSpecifiedDateAndTime: "Notas antes do tempo específico."
_abuseUserReport:
@@ -1762,6 +1894,8 @@ _role:
descriptionOfIsExplorable: "Ao ativar, a lista de membros será pública na seção 'Explorar' e a linha do tempo do cargo ficará disponível."
displayOrder: "Ordenação"
descriptionOfDisplayOrder: "Quanto maior o número, maior a posição de destaque na interface do usuário."
+ preserveAssignmentOnMoveAccount: "Preservar a associação de cargos durante a migração"
+ preserveAssignmentOnMoveAccount_description: "Quando ligado, esse cargo será encaminhado para a conta final quando houver migração de um usuário."
canEditMembersByModerator: "Permitir a edição de membros deste cargo por moderadores"
descriptionOfCanEditMembersByModerator: "Quando ativado, os moderadores também poderão atribuir/remover usuários deste papel, além dos administradores. Quando desativado, apenas os administradores poderão fazê-lo."
priority: "Prioridade"
@@ -1802,6 +1936,7 @@ _role:
canImportFollowing: "Permitir importação de usuários seguidos"
canImportMuting: "Permitir importação de silenciamentos"
canImportUserLists: "Permitir importação de listas"
+ chatAvailability: "Permitir Conversas"
_condition:
roleAssignedTo: "Atribuído a cargos manuais"
isLocal: "Usuário local"
@@ -1965,6 +2100,7 @@ _theme:
installed: "{name} foi instalado"
installedThemes: "Temas instalados"
builtinThemes: "Temas nativos"
+ instanceTheme: "Tema do servidor"
alreadyInstalled: "Esse tema já foi instalado"
invalid: "O formato desse tema é invalido"
make: "Fazer um tema"
@@ -2027,6 +2163,7 @@ _sfx:
noteMy: "Própria nota"
notification: "Notificações"
reaction: "Ao selecionar uma reação"
+ chatMessage: "Mensagens em Conversas"
_soundSettings:
driveFile: "Usar um arquivo de áudio do Drive."
driveFileWarn: "Selecione um arquivo de áudio do Drive."
@@ -2174,6 +2311,7 @@ _permissions:
"read:federation": "Ver dados de federação"
"write:report-abuse": "Reportar violação"
"write:chat": "Compor ou editar mensagens de chat"
+ "read:chat": "Navegar Conversas"
_auth:
shareAccessTitle: "Conceder permissões do aplicativo"
shareAccess: "Você gostaria de autorizar \"{name}\" para acessar essa conta?"
@@ -2232,6 +2370,7 @@ _widgets:
chooseList: "Selecione uma lista"
clicker: "Clicker"
birthdayFollowings: "Usuários de aniversário hoje"
+ chat: "Conversas"
_cw:
hide: "Esconder"
show: "Carregar mais"
@@ -2422,6 +2561,7 @@ _notification:
newNote: "Nova nota"
unreadAntennaNote: "Antena {name}"
roleAssigned: "Cargo dado"
+ chatRoomInvitationReceived: "Você foi convidado para uma conversa"
emptyPushNotificationMessage: "As notificações de alerta foram atualizadas"
achievementEarned: "Conquista desbloqueada"
testNotification: "Notificação teste"
@@ -2435,6 +2575,8 @@ _notification:
flushNotification: "Limpar notificações"
exportOfXCompleted: "Exportação de {x} foi concluída"
login: "Alguém entrou na conta"
+ createToken: "Uma token de acesso foi criada"
+ createTokenDescription: "Se você não faz ideia, exclua o token de acesso através de \"{text}\"."
_types:
all: "Todas"
note: "Novas notas"
@@ -2448,9 +2590,11 @@ _notification:
receiveFollowRequest: "Recebeu pedidos de seguidor"
followRequestAccepted: "Aceitou pedidos de seguidor"
roleAssigned: "Cargo dado"
+ chatRoomInvitationReceived: "Convite de conversa recebido"
achievementEarned: "Conquista desbloqueada"
exportCompleted: "A exportação foi concluída"
login: "Iniciar sessão"
+ createToken: "Criar token de acesso"
test: "Notificação teste"
app: "Notificações de aplicativos conectados"
_actions:
@@ -2460,6 +2604,9 @@ _notification:
_deck:
alwaysShowMainColumn: "Sempre mostrar a coluna principal"
columnAlign: "Alinhar colunas"
+ columnGap: "Margem entre colunas"
+ deckMenuPosition: "Posição do menu do deck"
+ navbarPosition: "Posição da barra de navegação"
addColumn: "Adicionar coluna"
newNoteNotificationSettings: "Opções de notificação para novas notas"
configureColumn: "Configurar coluna"
@@ -2478,6 +2625,7 @@ _deck:
useSimpleUiForNonRootPages: "Usar UI simples para páginas navegadas"
usedAsMinWidthWhenFlexible: "A largura mínima será usada para isso quando o \"Ajuste automático da largura\" estiver ativado"
flexible: "Ajuste automático da largura"
+ enableSyncBetweenDevicesForProfiles: "Habilitar sincronização das informações do perfil entre dispositivos"
_columns:
main: "Principal"
widgets: "Widgets"
@@ -2489,6 +2637,7 @@ _deck:
mentions: "Menções"
direct: "Notas diretas"
roleTimeline: "Linha do tempo do cargo"
+ chat: "Conversas"
_dialog:
charactersExceeded: "Você excedeu o limite de caracteres! Atualmente em {current} de {max}."
charactersBelow: "Você está abaixo do limite mínimo de caracteres! Atualmente em {current} of {min}."
@@ -2585,6 +2734,8 @@ _moderationLogTypes:
deletePage: "Remover página"
deleteFlash: "Remover Play"
deleteGalleryPost: "Remover a publicação da galeria"
+ deleteChatRoom: "Sala de Conversas Excluída"
+ updateProxyAccountDescription: "Atualizar descrição da conta de proxy"
_fileViewer:
title: "Detalhes do arquivo"
type: "Tipo de arquivo"
@@ -2719,6 +2870,66 @@ _contextMenu:
app: "Aplicativo"
appWithShift: "Aplicativo com a tecla shift"
native: "Nativo"
+_gridComponent:
+ _error:
+ requiredValue: "Esse valor é necessário"
+ columnTypeNotSupport: "Validação de expressões regulares (RegEx) só é permitida em colunas type:text."
+ patternNotMatch: "Esse valor não se encaixa no padrão de {pattern}"
+ notUnique: "Valor deve ser único"
+_roleSelectDialog:
+ notSelected: "Não selecionado"
+_customEmojisManager:
+ _gridCommon:
+ copySelectionRows: "Copiar linhas selecionadas"
+ copySelectionRanges: "Copiar seleção"
+ deleteSelectionRows: "Excluir linhas selecionadas"
+ deleteSelectionRanges: "Excluir valores selecionados"
+ searchSettings: "Opções de busca"
+ searchSettingCaption: "Definir critérios detalhados de busca."
+ searchLimit: "Limite de busca"
+ sortOrder: "Ordem de classificação"
+ registrationLogs: "Histórico de registros"
+ registrationLogsCaption: "Atualizações e remoções de emoji serão gravadas no histórico. Atualizar, remover, mover a uma nova página ou recarregar limpará o histórico"
+ alertEmojisRegisterFailedDescription: "Não foi possível atualizar ou remover emojis. Por favor, confira o histórico de registro para mais detalhes."
+ _logs:
+ showSuccessLogSwitch: "Exibir sucessos no histórico"
+ failureLogNothing: "Não há registro de falhas."
+ logNothing: "Não há registros."
+ _remote:
+ selectionRowDetail: "Detalhes da linha selecionada"
+ importSelectionRows: "Importar linhas selecionadas"
+ importSelectionRangesRows: "Importar linhas no intervalo"
+ importEmojisButton: "Importar Emojis selecionados"
+ confirmImportEmojisTitle: "Importar Emojis"
+ confirmImportEmojisDescription: "Importar {count} Emoji(s) recebidos de um servidor remoto. Por favor, preste atenção na licença do Emoji. Tem certeza que deseja continuar?"
+ _local:
+ tabTitleList: "Emojis registrados"
+ tabTitleRegister: "Registro de Emoji"
+ _list:
+ emojisNothing: "Não há Emojis registrados."
+ markAsDeleteTargetRows: "Marcar linhas selecionadas para remoção"
+ markAsDeleteTargetRanges: "Marcar linhas no intervalo para remoção"
+ alertUpdateEmojisNothingDescription: "Não há Emojis atualizados."
+ alertDeleteEmojisNothingDescription: "Não há Emojis marcados para remoção."
+ confirmMovePage: "Deseja mudar de página?"
+ confirmChangeView: "Deseja mudar de seção?"
+ confirmUpdateEmojisDescription: "Atualizando {count} Emoji(s). Deseja continuar?"
+ confirmDeleteEmojisDescription: "Removendo {count} Emoji(s) marcado(s). Deseja continuar?"
+ confirmResetDescription: "Todas as mudanças serão redefinidas."
+ confirmMovePageDesciption: "Mudanças foram feitas nos Emojis dessa página. Se você sair sem salvar, todas serão descartadas."
+ dialogSelectRoleTitle: "Buscar por cargo que pode usar esse Emoji"
+ _register:
+ uploadSettingTitle: "Configurações de envio"
+ uploadSettingDescription: "Nessa tela, você pode configurar o comportamento ao enviar Emojis."
+ directoryToCategoryLabel: "Transformar as pastas em categorias"
+ directoryToCategoryCaption: "Quando você arrastar um diretório, converter o caminho das pastas no campo \"categoria\"."
+ emojiInputAreaCaption: "Selecione Emojis que você deseja registrar utilizando um dos métodos."
+ emojiInputAreaList1: "Arraste arquivos de imagem ou diretórios dentro desse quadro"
+ emojiInputAreaList2: "Clique nesse link para abrir a seleção de arquivos"
+ emojiInputAreaList3: "Clique nesse link para selecionar do drive"
+ confirmRegisterEmojisDescription: "Registrando os Emojis da lista como novos Emojis personalizados. Deseja continuar? (Para evitar sobrecarga, apenas {count} Emoji(s) podem ser registrados em uma única operação)"
+ confirmClearEmojisDescription: "Descartando edições e limpando Emojis da lista. Deseja continuar?"
+ confirmUploadEmojisDescription: "Enviando {count} arquivo(s) arrastados ao drive. Deseja continuar?"
_embedCodeGen:
title: "Personalizar código do embed"
header: "Exibir cabeçalho"
@@ -2758,7 +2969,36 @@ _remoteLookupErrors:
_noSuchObject:
title: "Não encontrado"
description: "O recurso solicitado não foi encontrado, confira o endereço."
+_captcha:
+ verify: "Por favor, verifique o CAPTCHA"
+ testSiteKeyMessage: "Você pode conferir a prévia inserindo valores de teste para o site e chaves secretas.\nVeja a página seguinte para mais detalhes."
+ _error:
+ _requestFailed:
+ title: "O pedido do CAPTCHA falhou"
+ text: "Por favor, tente novamente ou verifique as configurações."
+ _verificationFailed:
+ title: "A validação do CAPTCHA falhou"
+ text: "Por favor, verifique se as configurações estão corretas."
+ _unknown:
+ title: "Erro CAPTCHA"
+ text: "Houve um erro inexperado."
+_bootErrors:
+ title: "Falha ao carregar"
+ serverError: "Se o problema persistir após esperar um momento e recarregar, contate a administração da instância com o seguinte ID de erro."
+ solution: "O seguinte pode resolver o problema."
+ solution1: "Atualize seu navegador e sistema operacional para a última versão."
+ solution2: "Desative o bloqueador de anúncios"
+ solution3: "Limpe o cache do navegador"
+ solution4: "Defina dom.webaudio.enabled como verdadeiro no Navegador Tor"
+ otherOption: "Outras opções"
+ otherOption1: "Excluir ajustes de cliente e cache"
+ otherOption2: "Iniciar o cliente simples"
+ otherOption3: "Iniciar ferramenta de reparo"
_search:
searchScopeAll: "Todos"
searchScopeLocal: "Local"
+ searchScopeServer: "Servidor específico"
searchScopeUser: "Usuário específico"
+ pleaseEnterServerHost: "Insira o endereço do servidor"
+ pleaseSelectUser: "Selecione um usuário"
+ serverHostPlaceholder: "Exemplo: misskey.example.com"
diff --git a/locales/ro-RO.yml b/locales/ro-RO.yml
index 5e0d3f221f..ee2b17cfc5 100644
--- a/locales/ro-RO.yml
+++ b/locales/ro-RO.yml
@@ -1,15 +1,19 @@
---
_lang_: "Română"
headlineMisskey: "O rețea conectată prin note"
-introMisskey: "Bine ai venit! Misskey este un serviciu de microblogging open source È™i decentralizat.\nCreează \"note\" cu care să îți poÈ›i împărÈ›i gândurile cu oricine din jurul tău. 📡\nCu \"reacÈ›ii\" îți poÈ›i expirma rapid părerea despre notele oricui. ðŸ‘\nHai să explorăm o lume nouă! 🚀"
+introMisskey: "Bine ai venit! Misskey este un serviciu de microblogging open source È™i decentralizat.\nCreează \"note\" cu care să îți poÈ›i împărÈ›asi gândurile cu oricine din jurul tău. 📡\nCu \"reacÈ›ii\" îți poÈ›i exprima rapid părerea despre notele oricui. ðŸ‘\nHai să explorăm o lume nouă! 🚀"
poweredByMisskeyDescription: "{name} este unul dintre serviciile care se folosește de platforma open source <b>Misskey</b>."
monthAndDay: "{day}/{month}"
search: "Caută"
+reset: "Resetează."
notifications: "Notificări"
username: "Nume de utilizator"
password: "Parolă"
+initialPasswordForSetup: "Parola pentru a începe configurarea inițială."
+initialPasswordIsIncorrect: "Parola inițială este incorectă."
+initialPasswordForSetupDescription: "Dacă ai instalat singur Misskey, utilizează parola pe care ai introdus-o în fișierul de configurare.\n\nDacă utilizezi un serviciu de găzduire(hosting) precum Misskey, te rugăm să utilizezi parola furnizată.\n\nDacă nu ai setat o parolă, las-o necompletată și mergi mai departe."
forgotPassword: "Am uitat parola"
-fetchingAsApObject: "Se aduce din Fediverse..."
+fetchingAsApObject: "Se preia din Fediverse..."
ok: "OK"
gotIt: "Am înțeles!"
cancel: "Anulează"
@@ -45,26 +49,28 @@ pin: "Fixează pe profil"
unpin: "Anulati fixare"
copyContent: "Copiază conținutul"
copyLink: "Copiază link-ul"
-copyLinkRenote: "Copiază linkul pentru renote"
+copyRemoteLink: "Copiază sursa externă."
+copyLinkRenote: "Copiază linkul pentru re-notare"
delete: "Åžterge"
deleteAndEdit: "Șterge și editează"
-deleteAndEditConfirm: "Ești sigur că vrei să ștergi această notă și să o editezi? Vei pierde reacțiile, re-notele și răspunsurile acesteia."
+deleteAndEditConfirm: "Ești sigur(ă) că vrei să ștergi această notă și să o editezi? Vei pierde reacțiile, Re-Notele și răspunsurile acestora."
addToList: "Adaugă în listă"
addToAntenna: "Adaugă la antenă"
sendMessage: "Trimite un mesaj"
copyRSS: "Copiază RSS"
copyUsername: "Copiază numele de utilizator"
-copyUserId: "Copiază numele de utilizator"
+copyUserId: "Copiază ID-ul de utilizator"
copyNoteId: "Copiază ID-ul notiței"
copyFileId: "Copiază ID-ul fișierului"
copyFolderId: "Copiază ID-ul folderului"
-copyProfileUrl: "Copiază URL profil"
+copyProfileUrl: "Copiază URL-ul profilului "
searchUser: "Caută un utilizator"
+searchThisUsersNotes: "Caută în notele acestui utilizator."
reply: "Răspunde"
loadMore: "Incarcă mai mult"
showMore: "Arată mai mult"
showLess: "ÃŽnchide"
-youGotNewFollower: "te-a urmărit"
+youGotNewFollower: "Te-a urmărit"
receiveFollowRequest: "Cerere de urmărire primită"
followRequestAccepted: "Cerere de urmărire acceptată"
mention: "Mențiune"
@@ -75,21 +81,21 @@ import: "Importă"
export: "Exportă"
files: "Fișiere"
download: "Descarcă"
-driveFileDeleteConfirm: "Ești sigur ca vrei să ștergi fișierul \"{name}\"? Notele atașate fișierului vor fi șterse și ele."
-unfollowConfirm: "Ești sigur ca vrei să nu mai urmărești pe {name}?"
+driveFileDeleteConfirm: "Ești sigur(ă) că vrei să ștergi fișierul \"{name}\"? Notele atașate fișierului vor fi și ele șterse."
+unfollowConfirm: "Ești sigur(ă) că vrei să nu mai urmărești pe {name}?"
exportRequested: "Ai cerut un export. S-ar putea să ia un pic. Va fi adăugat in Drive-ul tău odată completat."
importRequested: "Ai cerut un import. S-ar putea să ia un pic."
lists: "Liste"
-noLists: "Nu ai nici o listă"
+noLists: "Nu ai nicio listă"
note: "Notă"
notes: "Note"
-following: "Urmărești"
+following: "Îl urmărești"
followers: "Urmăritori"
followsYou: "Te urmărește"
createList: "Creează listă"
manageLists: "Gestionează listele"
error: "Eroare"
-somethingHappened: "A survenit o eroare"
+somethingHappened: "A apărut o eroare"
retry: "Reîncearcă"
pageLoadError: "A apărut o eroare la încărcarea paginii."
pageLoadErrorDescription: "De obicei asta este cauzat de o eroare de rețea sau cache-ul browser-ului. Încearcă să cureți cache-ul și apoi să încerci din nou puțin mai târziu."
@@ -99,20 +105,23 @@ enterListName: "Introdu un nume pentru listă"
privacy: "Confidenţialitate"
makeFollowManuallyApprove: "Fă cererile de urmărire să necesite aprobare"
defaultNoteVisibility: "Vizibilitate implicită"
-follow: "Urmărești"
+follow: "Urmărește"
followRequest: "Trimite cerere de urmărire"
followRequests: "Cereri de urmărire"
unfollow: "Nu mai urmări"
followRequestPending: "Cerere de urmărire în așteptare"
enterEmoji: "Introdu un emoji"
-renote: "Re-notează"
-unrenote: "Ia înapoi re-nota"
+renote: "Re-Notează"
+unrenote: "Anulează re-nota"
renoted: "Re-notat."
+renotedToX: "Re-notă către {name}."
cantRenote: "Această postare nu poate fi re-notată."
cantReRenote: "O re-notă nu poate fi re-notată."
quote: "Citează"
-inChannelRenote: "Renotează în canal"
+inChannelRenote: "Re-Notează în canal"
inChannelQuote: "Citează în canal"
+renoteToChannel: "Re-notă către alte canale."
+renoteToOtherChannel: "Re-notă către alte canale."
pinnedNote: "Notă fixată"
pinned: "Fixat pe profil"
you: "Tu"
@@ -121,42 +130,52 @@ sensitive: "NSFW"
add: "Adaugă"
reaction: "Reacție"
reactions: "Reacție"
+emojiPicker: "Selectator de emoji"
+pinnedEmojisForReactionSettingDescription: "Poți seta emoji-urile să fie fixate atunci când reacționați."
+pinnedEmojisSettingDescription: "Poți seta emoji-urile să fie fixate și afișate la introducerea emoji-urilor."
+emojiPickerDisplay: "Meniu de selectare ale reacțiilor."
+overwriteFromPinnedEmojisForReaction: "Ignoră din setările de reacție."
+overwriteFromPinnedEmojis: "Ignoră din setările generale."
reactionSettingDescription2: "Trage pentru a rearanja, apasă pe \"+\" pentru a adăuga."
rememberNoteVisibility: "Amintește setarea de vizibilitate a notelor"
attachCancel: "Înlătură atașament"
+deleteFile: "Șterge fișierul."
markAsSensitive: "Marchează ca NSFW"
unmarkAsSensitive: "Demarchează ca NSFW"
-enterFileName: "Introduceţi numele fişierului"
+enterFileName: "Introdu numele fiÅŸierului"
mute: "Amuțește"
unmute: "Înlătură amuțirea"
-renoteMute: "Renotări pe modul silențios"
+renoteMute: "Re-notări pe modul silențios"
renoteUnmute: "Scoate renotările de pe modul silențios"
block: "Blochează"
unblock: "Deblochează"
suspend: "Suspendă"
unsuspend: "Anulează suspendare"
-blockConfirm: "Ești sigur că vrei să blochezi acest cont?"
-unblockConfirm: "Ești sigur ca vrei să deblochezi acest cont?"
-suspendConfirm: "Ești sigur ca vrei să suspendezi acest cont?"
-unsuspendConfirm: "Ești sigur ca vrei să nu mai suspendezi acest cont?"
+blockConfirm: "Ești sigur(ă) că vrei să blochezi acest cont?"
+unblockConfirm: "Ești sigur(ă) că vrei să deblochezi acest cont?"
+suspendConfirm: "Ești sigur(ă) că vrei să suspendezi acest cont?"
+unsuspendConfirm: "Ești sigur că vrei să nu mai suspendezi acest cont?"
selectList: "Selectează o listă"
-editList: "Editați lista"
-selectChannel: "Selectaţi canalul"
+editList: "Editează lista"
+selectChannel: "Selectează canalul"
selectAntenna: "Selectează o antenă"
editAntenna: "Editează antena"
-selectWidget: "Selectați un widget"
+createAntenna: "Creează o antenă."
+selectWidget: "Alege un widget"
editWidgets: "Editează widget-urile"
editWidgetsExit: "Terminat"
-customEmojis: "Emoji personalizat"
+customEmojis: "Emoji personalizate"
emoji: "Emoji"
emojis: "Emoji-uri"
emojiName: "Numele emoji-ului"
emojiUrl: "URL-ul emoji-ului"
addEmoji: "Adaugă un emoji"
settingGuide: "Setări recomandate"
-cacheRemoteFiles: "Ține fișierele externe in cache"
-cacheRemoteFilesDescription: "Când această setare este dezactivată, fișierele externe sunt încărcate direct din instanța externă. Dezactivarea va scădea utilizarea spațiului de stocare, dar va crește traficul, deoarece thumbnail-urile nu vor fi generate."
+cacheRemoteFiles: "Reţine fișierele externe in memoria cache."
+cacheRemoteFilesDescription: "Când această setare este dezactivată, fișierele externe sunt încărcate direct din instanța externă. Dezactivarea va scădea utilizarea spațiului de stocare, dar va crește traficul, deoarece miniaturile nu vor fi generate."
youCanCleanRemoteFilesCache: "PoÈ›i goli cache-ul prin a apăsa pe butonul de ðŸ—‘ï¸ din fereastra de gestionare a fiÈ™ierelor."
+cacheRemoteSensitiveFiles: "Memorează în cache fișierele sensibile la distanță."
+cacheRemoteSensitiveFilesDescription: "Dacă dezactivezi această setare, fișierele sensibile externe vor fi conectate direct și nu stocate în cache."
flagAsBot: "Marchează acest cont ca bot"
flagAsBotDescription: "Activează această opțiune dacă acest cont este controlat de un program. Daca e activată, aceasta va juca rolul unui indicator pentru dezvoltatori pentru a preveni interacțiunea în lanțuri infinite cu ceilalți boți și ajustează sistemele interne al Misskey pentru a trata acest cont drept un bot."
flagAsCat: "Marchează acest cont ca pisică"
@@ -165,18 +184,24 @@ flagShowTimelineReplies: "Arată răspunsurile în cronologie"
flagShowTimelineRepliesDescription: "Dacă e activată vor fi arătate în cronologie răspunsurile utilizatorilor către alte notele altor utilizatori."
autoAcceptFollowed: "Aprobă automat cererile de urmărire de la utilizatorii pe care îi urmărești"
addAccount: "Adaugă un cont"
+reloadAccountsList: "Reîncarcă informațiile din lista de conturi"
loginFailed: "Autentificare eșuată"
showOnRemote: "Vezi mai multe pe instanța externă"
+continueOnRemote: "Continuă de pe sursa externa."
+chooseServerOnMisskeyHub: "Selectează un server din Hub-ul Misskey."
+specifyServerHost: "Specifică un server gazdă(host)."
+inputHostName: "Introdu numele gazdă(hostname)."
general: "General"
wallpaper: "Imagine de fundal"
-setWallpaper: "Setați imaginea de fundal"
+setWallpaper: "Setează imaginea de fundal"
removeWallpaper: "Șterge imagine de fundal"
searchWith: "Caută: {q}"
youHaveNoLists: "Nu ai nici o listă"
-followConfirm: "Ești sigur ca vrei să urmărești pe {name}?"
+followConfirm: "Ești sigur(ă) că vrei să urmărești pe {name}?"
proxyAccount: "Cont proxy"
proxyAccountDescription: "Un cont proxy este un cont care se comportă ca un urmăritor extern pentru utilizatorii puși sub anumite condiții. De exemplu, când un cineva adaugă un utilizator extern intr-o listă, activitatea utilizatorului extern nu va fi adusă în instanță daca nici un utilizator local nu urmărește acel utilizator, așa că în schimb contul proxy îl va urmări."
host: "Gazdă"
+selectSelf: "Selectează-te pe tine însuți."
selectUser: "Selectează un utilizator"
recipient: "Destinatar"
annotation: "Adnotări"
@@ -191,6 +216,8 @@ perHour: "Pe oră"
perDay: "Pe zi"
stopActivityDelivery: "Nu mai trimite activități"
blockThisInstance: "Blochează această instanță"
+silenceThisInstance: "Ascunde acest server."
+mediaSilenceThisInstance: "Ascunde conținutul media din acest server."
operations: "Operațiuni"
software: "Software"
version: "Versiune"
@@ -204,24 +231,31 @@ disk: "Disk"
instanceInfo: "Informații despre instanță"
statistics: "Statistici"
clearQueue: "Șterge coada"
-clearQueueConfirmTitle: "Ești sigur că vrei să cureți coada?"
+clearQueueConfirmTitle: "Ești sigur(ă) că vrei să cureți coada?"
clearQueueConfirmText: "Orice notă rămasă în coadă nu va fi federată. De obicei această operație nu este necesară."
clearCachedFiles: "Golește cache-ul"
-clearCachedFilesConfirm: "Ești sigur că vrei să ștergi toate fișierele externe din cache?"
+clearCachedFilesConfirm: "Ești sigur(ă) că vrei să ștergi toate fișierele externe din cache?"
blockedInstances: "Instanțe blocate"
-blockedInstancesDescription: "Scrie hostname-urile instanțelor pe care dorești să le blochezi. Instanțele listate nu vor mai putea să comunice cu această instanță."
+blockedInstancesDescription: "Scrie numele gazdă(hostname) ale serverelor pe care dorești să le blochezi. Serverele listate nu vor mai putea să comunice cu acest server."
+silencedInstances: "Servere ascunse."
+silencedInstancesDescription: "Listează numele de gazdă(hostname) ale serverelor pe care dorești să le ascunzi, separate printr-o nouă linie de spațiere. Toate conturile care aparțin serverelor enumerate vor fi tratate ca fiind ascunse și pot face doar solicitări de urmărire și nu pot menționa conturi locale dacă nu sunt urmate. Acest lucru nu va afecta serverele blocate."
+mediaSilencedInstances: "Servere cu conținutul media ascuns."
+mediaSilencedInstancesDescription: "Setați numele de gazdă(hostname-urile) ale serverelor pe care dorești să le ascunzi, separate de o linie noua de spațiere. Orice fișier din conturile de pe un server cu sunet media vor fi tratate ca fiind sensibile și nu vor putea folosi emoji-uri personalizate. Nu are niciun efect asupra serverelor blocate."
+federationAllowedHosts: "Servere permise pentru federare"
+federationAllowedHostsDescription: "Specifica numele de gazdă ale serverelor pe care dorești să le permiți federarea, separate prin spații noi."
muteAndBlock: "Amuțiri și Blocări"
mutedUsers: "Utilizatori amuțiți"
blockedUsers: "Utilizatori blocați"
noUsers: "Niciun utilizator"
editProfile: "Editează profilul"
-noteDeleteConfirm: "Ești sigur că vrei să ștergi această notă?"
+noteDeleteConfirm: "Ești sigur(ă) că vrei să ștergi această notă?"
pinLimitExceeded: "Nu poți mai fixa mai multe note"
intro: "Misskey s-a instalat! Te rog crează un utilizator admin."
done: "Gata"
processing: "Se procesează"
preview: "Previzualizare"
default: "Prestabilit"
+defaultValueIs: "Valori implicite: {value}"
noCustomEmojis: "Nu e niciun emoji"
noJobs: "Nu e niciun job"
federating: "Federație"
@@ -232,7 +266,7 @@ subscribing: "Abonare"
publishing: "Publicare"
notResponding: "Nu răspunde"
instanceFollowing: "Urmărind în instanță"
-instanceFollowers: "Urmăritori ai instanței"
+instanceFollowers: "Urmăritori al instanței"
instanceUsers: "Utilizatori ai acestei instanțe"
changePassword: "Schimbă parolă"
security: "Securitate"
@@ -250,9 +284,10 @@ announcements: "Anunțuri"
imageUrl: "URL-ul imaginii"
remove: "Åžterge"
removed: "Șterș cu succes"
-removeAreYouSure: "Ești sigur că vrei să înlături {x}?"
-deleteAreYouSure: "Ești sigur că vrei să ștergi {x}?"
+removeAreYouSure: "Ești sigur(ă) că vrei să înlături {x}?"
+deleteAreYouSure: "Ești sigur(ă) că vrei să ștergi {x}?"
resetAreYouSure: "Sigur vrei să resetezi?"
+areYouSure: "Ești sigur(ă)?"
saved: "Salvat"
upload: "Încarcă"
keepOriginalUploading: "Păstrează imaginea originală"
@@ -266,8 +301,13 @@ uploadFromUrlMayTakeTime: "S-ar putea să ia puÈ›in până se finalizează încÄ
explore: "Explorează"
messageRead: "Citit"
noMoreHistory: "Nu există mai mult istoric"
+startChat: "Pornește chat-ul"
nUsersRead: "citit de {n}"
agreeTo: "Sunt de acord cu {0}"
+agree: "De acord"
+agreeBelow: "Sunt de acord cu cele menționate mai jos"
+basicNotesBeforeCreateAccount: "Detalii importante"
+termsOfService: "Termenii serviciului"
start: "Să începem"
home: "Acasă"
remoteUserCaution: "Deoarece acest utilizator este dintr-o instanță externă, informația afișată poate fi incompletă."
@@ -288,21 +328,24 @@ darkThemes: "Teme întunecate"
syncDeviceDarkMode: "Sincronizează Modul Întunecat cu setările dispozitivului"
drive: "Drive"
fileName: "Nume fișier"
-selectFile: "Alege un fisier"
+selectFile: "Alege un fișier"
selectFiles: "Alege fișiere"
selectFolder: "Selectează un folder"
selectFolders: "Selectează folderele"
+fileNotSelected: "Niciun fișier selectat"
renameFile: "Redenumește fișier"
folderName: "Nume folder"
createFolder: "Crează folder"
renameFolder: "Redenumește acest folder"
deleteFolder: "Șterge acest folder"
-addFile: "Adăugați un fișier"
+folder: "Folder"
+addFile: "Adaugă un fișier"
+showFile: "Arata fișierele"
emptyDrive: "Drive-ul tău e gol"
emptyFolder: "Folder-ul acesta este gol"
unableToDelete: "Nu se poate șterge"
inputNewFileName: "Introdu un nou nume de fișier"
-inputNewDescription: "Introdu o descriere nouă"
+inputNewDescription: "Introdu o titrare nouă"
inputNewFolderName: "Introdu un nume de folder nou"
circularReferenceFolder: "Destinația folderului este un subfolder al folderului pe care dorești să îl muți."
hasChildFilesOrFolders: "Acest folder nu este gol, așa că nu poate fi șters."
@@ -310,8 +353,9 @@ copyUrl: "Copiază URL"
rename: "Redenumește"
avatar: "Avatar"
banner: "Banner"
+displayOfSensitiveMedia: "Afișarea conținutului media sensibil"
whenServerDisconnected: "Când pierzi conexiunea cu serverul"
-disconnectedFromServer: "Conecțiunea cu serverul a fost pierdută"
+disconnectedFromServer: "Conexiunea cu serverul a fost pierdută"
reload: "Reîncarcă"
doNothing: "Ignoră"
reloadConfirm: "Ai dori să reîmprospătezi cronologia?"
@@ -347,21 +391,26 @@ bannerUrl: "URL-ul imaginii de banner"
backgroundImageUrl: "URL-ul imaginii de fundal"
basicInfo: "Informații de bază"
pinnedUsers: "Utilizatori fixați"
-pinnedUsersDescription: "Scrie utilizatorii, separați prin pauză de rând, care vor fi fixați pe pagina \"Explorează\"."
+pinnedUsersDescription: "Scrie utilizatorii, separați prin o linie de rând, care vor fi fixați pe pagina \"Explorează\"."
pinnedPages: "Pagini fixate"
-pinnedPagesDescription: "Introdu linkurile Paginilor pe care le vrei fixate in vâruful paginii acestei instanțe, separate de pauze de rând."
+pinnedPagesDescription: "Introdu linkurile Paginilor pe care le vrei fixate in vârful paginii acestei instanțe, separate de o linie de spațiere."
pinnedClipId: "ID-ul clip-ului pe care să îl fixezi"
pinnedNotes: "Notă fixată"
hcaptcha: "hCaptcha"
enableHcaptcha: "Activează hCaptcha"
hcaptchaSiteKey: "Site key"
hcaptchaSecretKey: "Secret key"
+mcaptcha: "mCaptcha"
+enableMcaptcha: "Permite mCaptcha"
mcaptchaSiteKey: "Site key"
mcaptchaSecretKey: "Secret key"
+mcaptchaInstanceUrl: "URL-ul serverului mCaptcha"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Activează reCAPTCHA"
recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key"
+turnstile: "\nTurnstile"
+enableTurnstile: "Permite Turnstile"
turnstileSiteKey: "Site key"
turnstileSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Folosirea mai multor sisteme Captcha poate cauza interferență între acestea. Ai dori să dezactivezi alte sisteme Captcha acum active? Dacă preferi să rămână activate, apasă Anulare."
@@ -371,9 +420,11 @@ name: "Nume"
antennaSource: "Sursa antenei"
antennaKeywords: "Cuvinte cheie ascultate"
antennaExcludeKeywords: "Cuvinte cheie excluse"
-antennaKeywordsDescription: "Separă cu spații pentru o condiție ȘI sau cu o întrerupere de rând pentru o condiție SAU."
+antennaExcludeBots: "Exclude conturi tip bot"
+antennaKeywordsDescription: "Separă cu spații pentru o condiție ''AND'' sau cu o linie de spațiere nouă pentru o condiție ''OR''."
notifyAntenna: "Notifică-mă pentru note noi"
withFileAntenna: "Doar note cu fișiere"
+excludeNotesInSensitiveChannel: "Exclude note din canale sensibile"
enableServiceworker: "Activează ServiceWorker"
antennaUsersDescription: "Scrie un nume de utilizator per linie"
caseSensitive: "Sensibil la majuscule și minuscule"
@@ -382,13 +433,13 @@ connectedTo: "Următoarele conturi sunt conectate"
notesAndReplies: "Note și răspunsuri"
withFiles: "Incluzând fișiere"
silence: "Amuțește"
-silenceConfirm: "Ești sigur că vrei să amuțești acest utilizator?"
+silenceConfirm: "Ești sigur(ă) că vrei să amuțești acest utilizator?"
unsilence: "Anulează amuțirea"
-unsilenceConfirm: "Ești sigur că vrei să anulezi amuțirea acestui utilizator?"
+unsilenceConfirm: "Ești sigur(ă) că vrei să anulezi amuțirea acestui utilizator?"
popularUsers: "Utilizatori populari"
recentlyUpdatedUsers: "Utilizatori activi recent"
recentlyRegisteredUsers: "Utilizatori ce s-au alăturat recent"
-recentlyDiscoveredUsers: "Utilizatori descoperiți recent"
+recentlyDiscoveredUsers: "Utilizatori recent descoperiți"
exploreUsersCount: "Aici sunt {count} utilizatori"
exploreFediverse: "Explorează Fediverse-ul"
popularTags: "Taguri populare"
@@ -397,12 +448,24 @@ about: "Despre"
aboutMisskey: "Despre Misskey"
administrator: "Administrator"
token: "Token"
+2fa: "Autentificare cu doi factori"
+setupOf2fa: "Configurează autentificarea cu doi factori"
+totp: "Aplicația de autentificare"
+totpDescription: "Folosește o aplicație de autentificare pentru a putea utiliza parole de unica folosință"
moderator: "Moderator"
+moderation: "Moderare"
+moderationNote: "Note de moderare"
+moderationNoteDescription: "Poți completa note care vor fi partajate doar între moderatori."
+addModerationNote: "Adaugă o notă de moderare"
+moderationLogs: "Jurnal de moderare"
nUsersMentioned: "Menționat de {n} utilizatori"
+securityKeyAndPasskey: "Cheie de securitate - cheie de acces "
securityKey: "Cheie de securitate"
lastUsed: "Ultima utilizată"
+lastUsedAt: "Ultima utilizare: {t}"
unregister: "Dezînregistrează"
passwordLessLogin: "Autentificare fără parolă"
+passwordLessLoginDescription: "Permite autentificare fără parolă folosind doar o cheie de securitate sau o cheie de acces"
resetPassword: "Resetează parola"
newPasswordIs: "Noua parolă este \"{password}\""
reduceUiAnimation: "Redu animațiile interfeței"
@@ -427,8 +490,10 @@ retype: "Introdu din nou"
noteOf: "Notă de {user}"
quoteAttached: "Citat"
quoteQuestion: "Vrei să adaugi ca citat?"
+attachAsFileQuestion: "Textul clipboard-ului este lung. Dorești să-l atașezi ca fișier text?"
onlyOneFileCanBeAttached: "Poți atașa un singur fișier la un mesaj"
signinRequired: "Te rog autentifică-te"
+signinOrContinueOnRemote: "Pentru a continua, trebuie să mergi la serverul dvs. sau să te înregistrezi și să te conectezi la acest server."
invitations: "Invită"
invitationCode: "Cod de invitație"
checking: "Se verifică..."
@@ -443,13 +508,23 @@ strongPassword: "Parolă puternică"
passwordMatched: "Se potrivește!"
passwordNotMatched: "Nu se potrivește"
signinWith: "Autentifică-te cu {x}"
-signinFailed: "Nu se poate autentifica. Numele de utilizator sau parola introduse sunt incorecte."
+signinFailed: "Nu se poate autentifica. Numele de utilizator sau parola introdusă e incorectă."
or: "Sau"
language: "Limbă"
uiLanguage: "Limba interfeței"
aboutX: "Despre {x}"
+emojiStyle: "Stil emoji"
+native: "Nativ"
+menuStyle: "Stilul meniului"
+style: "Stil"
+drawer: "Sertar"
+popup: "Pop up"
+showNoteActionsOnlyHover: "Afișează acțiunile de notare numai la trecerea cursorului"
+showReactionsCount: "Afișează numărul de reacții la note"
noHistory: "Nu există istoric"
signinHistory: "Istoric autentificări"
+enableAdvancedMfm: "Permite autentificarea multiplă(MFM) avansată"
+enableAnimatedMfm: "Permite autentificarea multiplă(MFM) animată"
doing: "Se procesează..."
category: "Categorie"
tags: "Etichete"
@@ -458,6 +533,8 @@ createAccount: "Creează un cont"
existingAccount: "Cont existent"
regenerate: "Regenerează"
fontSize: "Mărimea fontului"
+mediaListWithOneImageAppearance: "Înălțimea listelor media cu o singură imagine"
+limitTo: "Limitează până la {x}"
noFollowRequests: "Nu ai nicio cerere de urmărire în așteptare"
openImageInNewTab: "Deschide imaginile în taburi noi"
dashboard: "Panou de control"
@@ -491,9 +568,12 @@ objectStorageUseSSLDesc: "Oprește această opțiune dacă nu vei folosi HTTPS p
objectStorageUseProxy: "Conectează-te prin Proxy"
objectStorageUseProxyDesc: "Oprește această opțiune dacă vei nu folosi un Proxy pentru conexiunile API-ului"
objectStorageSetPublicRead: "Setează \"public-read\" pentru încărcare"
+s3ForcePathStyleDesc: "Dacă s3ForcePathStyle este activat, numele compartimentului trebuie inclus în calea adresei URL, spre deosebire de numele de gazdă(hostname) al adresei URL. Poate fi necesar să activezi această setare atunci când utilizezi servicii precum o instanță Minio găzduită de sine(self-hosted)."
serverLogs: "Loguri server"
deleteAll: "Șterge tot"
showFixedPostForm: "Arată caseta de postare în vârful cronologie"
+showFixedPostFormInChannel: "Afișează formularul de postare în partea de sus a cronologiei (Canale)"
+withRepliesByDefaultForNewlyFollowed: "Include în mod prestabilit răspunsurile utilizatorilor nou urmăriți în cronologie"
newNoteRecived: "Sunt note noi"
sounds: "Sunete"
sound: "Sunete"
@@ -503,37 +583,51 @@ showInPage: "Arată în pagină"
popout: "Scoate în afară"
volume: "Volum"
masterVolume: "Volumul principal"
+notUseSound: "Oprește sunetul"
+useSoundOnlyWhenActive: "Sunetele se aud numai dacă fereastra de Misskey este activă"
details: "Detalii"
+renoteDetails: "Detalii de re-notare"
chooseEmoji: "Alege un emoji"
unableToProcess: "Această operație nu poate fi completată"
-recentUsed: "Folosit recent"
+recentUsed: "Folosit(e) recent"
install: "Instalează"
uninstall: "Dezinstalează"
installedApps: "Aplicații autorizate"
nothing: "Nu e nimic de văzut aici"
installedDate: "Autorizat la data de"
-lastUsedDate: "Folosit ultima oara la"
+lastUsedDate: "Folosit(e) ultima oara la"
state: "Stare"
sort: "Sortează"
ascendingOrder: "Crescător"
descendingOrder: "Descrescător"
scratchpad: "Scratchpad"
scratchpadDescription: "Scratchpad-ul oferă un mediu de experimentare în AiScript. Poți scrie, executa și verifica rezultatele acestuia interacționând cu Misskey în el."
+uiInspector: "Inspector UI"
+uiInspectorDescription: "Poți vedea lista de servere de componente UI în memorie. Componenta UI va fi generată de funcția Ui:C:."
output: "Ieșire"
script: "Script"
disablePagesScript: "Dezactivează AiScript în Pagini"
updateRemoteUser: "Actualizează informațiile utilizatorului extern"
+unsetUserAvatar: "Anulează avatarul"
+unsetUserAvatarConfirm: "Ești sigur(ă) că vrei sa anulezi avatarul?"
+unsetUserBanner: "Avatarul utilizatorului a fost anulat"
+unsetUserBannerConfirm: "Ești sigur(ă) că vrei sa anulezi bannerul?"
deleteAllFiles: "Șterge toate fișierele"
deleteAllFilesConfirm: "Ești sigur că vrei să ștergi toate fișierele?"
-removeAllFollowing: "Dezurmărește toți utilizatorii urmăriți"
-removeAllFollowingDescription: "Asta va dez-urmări toate conturile din {host}. Te rog execută asta numai dacă instanța, de ex., nu mai există."
+removeAllFollowing: "Elimină toți utilizatorii urmăriți"
+removeAllFollowingDescription: "Asta va elimina urmărirea tuturor conturilor din {host}. Te rog execută asta numai dacă instanța, de ex., nu mai există."
userSuspended: "Acest utilizator a fost suspendat."
userSilenced: "Acest utilizator a fost setat silențios."
yourAccountSuspendedTitle: "Acest cont a fost suspendat"
yourAccountSuspendedDescription: "Acest cont a fost suspendat din cauza încălcării termenilor de serviciu al serverului sau ceva similar. Contactează administratorul dacă ai dori să afli un motiv mai detaliat. Te rog nu crea un cont nou."
+tokenRevoked: "Token invalid"
+tokenRevokedDescription: "Token-ul a expirat.\nTe rugăm sa te reloghezi."
+accountDeleted: "Cont șters."
+accountDeletedDescription: "Acest cont a fost eliminat."
menu: "Meniu"
divider: "Separator"
addItem: "Adaugă element"
+rearrange: "Rearanjează"
relays: "Relee"
addRelay: "Adaugă Releu"
inboxUrl: "URL-ul inbox-ului"
@@ -556,9 +650,11 @@ author: "Autor"
leaveConfirm: "Ai schimbări nesalvate. Vrei să renunți la ele?"
manage: "Gestionare"
plugins: "Pluginuri"
+preferencesBackups: "Copii de rezervă ale preferințelor"
deck: "Deck"
undeck: "Părăsește Deck"
useBlurEffectForModal: "Folosește efect de blur pentru modale"
+useFullReactionPicker: "Utilizează selectorul de reacții de dimensiune completă"
width: "Lăţime"
height: "Înălţime"
large: "Mare"
@@ -566,6 +662,7 @@ medium: "Mediu"
small: "Mic"
generateAccessToken: "Generează token de acces"
permission: "Permisiuni"
+adminPermission: "Permisiuni administrator"
enableAll: "Actevează tot"
disableAll: "Dezactivează tot"
tokenRequested: "Acordă acces la cont"
@@ -587,20 +684,26 @@ smtpSecure: "Folosește SSL/TLS implicit pentru conecțiunile SMTP"
smtpSecureInfo: "Oprește opțiunea asta dacă STARTTLS este folosit"
testEmail: "Testează livrarea emailurilor"
wordMute: "Cuvinte pe mut"
+wordMuteDescription: "Minimizează notele care conțin cuvântul sau expresia specificată. Notele minimizate pot fi afișate făcând clic pe ele."
+hardWordMute: "Amuțire pe cuvinte grele"
+showMutedWord: "Arata cuvintele amuțite"
+hardWordMuteDescription: "Ascunde notele care conțin fraza specificată. Spre deosebire de cuvintele amuțite, notele vor fi complet ascunse."
regexpError: "Eroare de Expresie Regulată"
regexpErrorDescription: "A apărut o eroare în expresia regulată pe linia {line} al cuvintelor {tab} setate pe mut:"
instanceMute: "Instanțe pe mut"
userSaysSomething: "{name} a spus ceva"
+userSaysSomethingAbout: "{name} a scris ceva despre {name}"
makeActive: "Activează"
display: "Arată"
copy: "Copiază"
+copiedToClipboard: "Copiat în clipboard."
metrics: "Metrici"
overview: "Privire de ansamblu"
logs: "Log-uri"
delayed: "Întârziate"
database: "Baza de date"
channel: "Canale"
-create: "Crează"
+create: "Creează"
notificationSetting: "Setări notificări"
notificationSettingDesc: "Selectează tipurile de notificări care să fie arătate"
useGlobalSetting: "Folosește setările globale"
@@ -608,12 +711,14 @@ useGlobalSettingDesc: "Dacă opțiunea e pornită, notificările contului tău v
other: "Altele"
regenerateLoginToken: "Regenerează token de login"
regenerateLoginTokenDescription: "Regenerează token-ul folosit intern în timpul logări. În mod normal asta nu este necesar. Odată regenerat, toate dispozitivele vor fi delogate."
+theKeywordWhenSearchingForCustomEmoji: "Acesta este cuvântul cheie atunci când cauți emoji-uri personalizate."
setMultipleBySeparatingWithSpace: "Separă mai multe intrări cu spații."
fileIdOrUrl: "Introdu ID sau URL"
behavior: "Comportament"
sample: "exemplu"
abuseReports: "Rapoarte"
reportAbuse: "Raportează"
+reportAbuseRenote: "Raportați Re-nota"
reportAbuseOf: "Raportează {name}"
fillAbuseReportDescription: "Te rog scrie detaliile legate de acest raport. Dacă este despre o notă specifică, te rog introdu URL-ul ei."
abuseReported: "Raportul tău a fost trimis. Mulțumim."
@@ -625,23 +730,492 @@ openInNewTab: "Deschide în tab nou"
openInSideView: "Deschide în vedere laterală"
defaultNavigationBehaviour: "Comportament de navigare implicit"
editTheseSettingsMayBreakAccount: "Editarea acestor setări îți pot defecta contul."
+instanceTicker: "Informații de instanță ale notelor"
waitingFor: "Așteptând pentru {x}"
-random: "Aleator"
+random: "Aleatoriu"
system: "Sistem"
switchUi: "Schimbă UI"
desktop: "Desktop"
+clip: "Clip"
+createNew: "Creează ceva nou"
+optional: "Opțional"
+createNewClip: "Creează un clip nou"
+unclip: "Anulează clipul"
+confirmToUnclipAlreadyClippedNote: "Această notă face deja parte din clipul „{name}â€. DoreÈ™ti, în schimb, să îl elimini din acest clip?"
+public: "Public"
+private: "Privat"
+i18nInfo: "Misskey este tradusă în diferite limbi de către voluntari. Puteți ajuta accesând {link}."
+manageAccessTokens: "Gestionați token-urile de acces"
+accountInfo: "Informațiile contului"
+notesCount: "Numărul de note"
+repliesCount: "Numărul de răspunsuri trimise"
+renotesCount: "Numărul de Re-Note trimise"
+repliedCount: "Numărul de răspunsuri primite"
+renotedCount: "Numărul de Re-Note primite"
+followingCount: "Numărul de conturi urmărite"
+followersCount: "Numărul de urmăritori"
+sentReactionsCount: "Numărul de reacții trimise"
+receivedReactionsCount: "Numărul de reacții primite"
+pollVotesCount: "Numărul de voturi trimise la sondaj"
+pollVotedCount: "Numărul de voturi în sondaj"
+yes: "Da"
+no: "Nu"
+driveFilesCount: "Numărul de fișiere din drive"
+driveUsage: "Gestionati spatiul de utilizare a drive-ului"
+noCrawle: "Respingeți indexarea prin crawler"
+noCrawleDescription: "Cere motoarelor de căutare să nu indexeze pagina de profil, noteele, paginile etc."
+lockedAccountInfo: "Dacă nu setaÈ›i vizibilitatea notei la „Numai persoane interesateâ€, notele vor fi vizibile pentru oricine, chiar dacă aveÈ›i nevoie de aprobarea manuală a persoanelor interesate."
+alwaysMarkSensitive: "Marcați ca sensibil în mod prestabilit"
+loadRawImages: "Încărcați imagini originale în loc să afișați miniaturile"
+disableShowingAnimatedImages: "Nu reda imaginile animate"
+highlightSensitiveMedia: "Evidențiază conținutul media sensibil"
+verificationEmailSent: "A fost trimis un e-mail de confirmare. Urmează linkul din e-mail pentru a finaliza configurarea."
+notSet: "Nesetat"
+emailVerified: "E-mailul a fost verificat"
+noteFavoritesCount: "Numărul de note preferate"
+pageLikesCount: "Numărul de pagini apreciate"
+pageLikedCount: "Numărul de aprecieri primite pe pagină"
+contact: "Contact"
+useSystemFont: "Utilizați fontul implicit al sistemului"
+clips: "Clip"
+experimentalFeatures: "Funcții experimentale"
+experimental: "Experimental"
+thisIsExperimentalFeature: "Aceasta este o funcție experimentală. Funcționalitatea sa este supusă modificării și este posibil să nu funcționeze conform intenției."
+developer: "Dezvoltator"
+makeExplorable: "Fă-È›i contul vizibil în secÈ›iunea„ExploraÈ›iâ€"
+makeExplorableDescription: "Dacă dezactivezi această opțiune, contul dvs. nu va fi vizibil în secțiunea\"Explorați\"."
+showGapBetweenNotesInTimeline: "Afișați un decalaj între postările de pe cronologie"
+duplicate: "Duplicat"
+left: "Stânga"
+center: "Centru"
+wide: "Lat"
+narrow: "ÃŽngust"
+reloadToApplySetting: "Setările vor fi replicate după reîncărcarea paginii."
+needReloadToApply: "Este necesară o reîncărcare pentru ca acest lucru să se replice."
+showTitlebar: "Afișează bara de titlu"
clearCache: "Golește cache-ul"
+onlineUsersCount: "{n} de utilizatori online"
+nUsers: "{n} Utilizatori"
+nNotes: "{n} de note"
+sendErrorReports: "Trimite rapoartele de eroare"
+sendErrorReportsDescription: "Când este pornit, informațiile detaliate despre erori vor fi partajate cu Misskey atunci când apare o problemă, ajutând la îmbunătățirea calității Misskey.\nAceasta va include informații precum versiunea sistemului de operare, ce browser utilizați, activitatea dvs. în Misskey etc."
+myTheme: "Tema mea"
+backgroundColor: "Culoare de fundal"
+accentColor: "Culoare de accent"
+textColor: "Culoarea textului"
+saveAs: "Salvează ca..."
+advanced: "Avansat"
+advancedSettings: "Setări Avansate"
+value: "Valoare"
+createdAt: "Creat în"
+updatedAt: "Actualizat la"
+saveConfirm: "Salvezi modificările?"
+deleteConfirm: "Sigur vrei să ștergi?"
+invalidValue: "Valoare invalidă."
+registry: "Registru"
+closeAccount: "Șterge contul"
+currentVersion: "Versiunea curentă"
+latestVersion: "Versiunea cea mai nouă"
+youAreRunningUpToDateClient: "Utilizezi cea mai nouă versiune a clientului"
+newVersionOfClientAvailable: "Este disponibilă o nouă versiune a clientului."
+usageAmount: "Utilizare"
+capacity: "Capacitate"
+inUse: "Folosit"
+editCode: "Editează codul"
+apply: "Aplică"
+receiveAnnouncementFromInstance: "Primește notificări de la această instanță"
+emailNotification: "Notificări prin e-mail"
+publish: "Publică"
+inChannelSearch: "Caută pe canal"
+useReactionPickerForContextMenu: "Deschide selectorul de reacții făcând clic dreapta"
+typingUsers: "{users} scriu/e chiar acum..."
+jumpToSpecifiedDate: "Sari la o anumită dată"
+showingPastTimeline: "În prezent, se afișează o cronologie veche"
+clear: "ÃŽntoarce-te"
+markAllAsRead: "Marchează ca ,,cititâ€"
+goBack: "ÃŽnapoi"
+unlikeConfirm: "Chiar îți elimini like-ul?"
+fullView: "Ecran complet"
+quitFullView: "Ieși din ecranul complet"
+addDescription: "Adaugă o descriere"
+userPagePinTip: "Poți afișa notele aici selectând „fixează pe profil†din meniul individual al fiecărei note "
+notSpecifiedMentionWarning: "Există mențiuni ce nu sunt incluse în lista de destinatari"
info: "Despre"
+userInfo: "Informații despre utilizator"
+unknown: "Necunoscut"
+onlineStatus: "Stare online"
+hideOnlineStatus: "Ascunde starea online"
+hideOnlineStatusDescription: "Ascunderea stării dvs. online reduce confortul unor funcții, cum ar fi căutarea."
+online: "Online"
+active: "Disponibil"
+offline: "Offline"
+notRecommended: "Nerecomandat"
+botProtection: "Protecție boți"
+instanceBlocking: "Instanțe blocate/ascunse"
+selectAccount: "Selectează un cont"
+switchAccount: "Schimbă contul"
+enabled: "Activat"
+disabled: "Dezactivat"
+quickAction: "Acțiuni rapide"
user: "Utilizatori"
administration: "Gestionare"
+accounts: "Conturi"
+switch: "Schimbă"
+noMaintainerInformationWarning: "Informațiile întreținătorului nu sunt configurate."
+noInquiryUrlWarning: "Adresa URL de cereri de informații nu este setata"
+noBotProtectionWarning: "Protecția împotriva boților nu este configurată."
+configure: "Configurează"
+postToGallery: "Creează o postare nouă în galerie"
+postToHashtag: "Postează pe acest hashtag"
+gallery: "Galerie"
+recentPosts: "Postări recente"
+popularPosts: "Postări populare"
+shareWithNote: "Distribuie cu notă"
+ads: "Reclame"
+expiration: "Termen limită"
+startingperiod: "Start"
+memo: "Memo"
+priority: "Prioritate"
+high: "Ridicată"
middle: "Mediu"
+low: "Scăzuta"
+emailNotConfiguredWarning: "Adresa de e-mail nu este setată."
+ratio: "Rație"
+previewNoteText: "Afișează previzualizarea"
+customCss: "CSS personalizat"
+customCssWarn: "Această setare ar trebui folosită numai dacă știi ce face. Introducerea unor valori necorespunzătoare poate determina clientul să nu mai funcționeze normal."
+global: "Global"
+squareAvatars: "Afișează avatarele pătrate"
sent: "Trimite"
+received: "Primite"
+searchResult: "Rezultate căutare"
+hashtags: "Hashtag-uri"
+troubleshooting: "Diagnosticare"
+useBlurEffect: "Utilizează efecte de estompare în interfața de utilizare"
+learnMore: "Află mai multe"
+misskeyUpdated: "Misskey a fost actualizat!"
+whatIsNew: "Vezi noile modificări"
+translate: "Tradu"
+translatedFrom: "Tradus din {x}"
+accountDeletionInProgress: "Ștergerea contului este în curs de desfășurare"
+usernameInfo: "Un nume care vă identifică contul de alții de pe acest server. Poți folosi alfabetul (a~z, A~Z), cifrele (0~9) sau litere de subliniere (_). Numele de utilizator nu pot fi schimbate ulterior."
+aiChanMode: "Modul Ai"
+devMode: "Modul Dezvoltator"
+keepCw: "Păstrează avertismentele de conținut"
+pubSub: "Conturi de Pub/Sub"
+lastCommunication: "Ultima comunicare"
+resolved: "Rezolvat"
+unresolved: "Nerezolvat"
+breakFollow: "Elimină urmăritorul"
+breakFollowConfirm: "Chiar eliminați această urmărire?"
+itsOn: "Activat"
+itsOff: "Dezactivat"
+on: "Pornit"
+off: "Oprit"
+emailRequiredForSignup: "E nevoie de o adresă de e-mail pentru înregistrare"
+unread: "Necitit/e"
+filter: "Filtru"
+controlPanel: "Panou de Control"
+manageAccounts: "Gestionează Conturile"
+makeReactionsPublic: "Setați istoricul reacțiilor să fie public"
+makeReactionsPublicDescription: "Faceți-vă reacțiile vizibile pentru toată lumea"
+classic: "Clasic"
+muteThread: "Amuțește thread-ul"
+unmuteThread: "Dezmuțește thread-ul"
+followingVisibility: "Vizibilitatea celor pe care ii urmărești"
+followersVisibility: "Vizibilitatea celor care te urmărește"
+continueThread: "Continuă thread-ul"
+deleteAccountConfirm: "Acest lucru vă va șterge ireversibil contul. Continui?"
+incorrectPassword: "Parolă incorectă."
+incorrectTotp: "Parola unică este incorectă sau a expirat."
+voteConfirm: "Confirmi votul pentru „{choice}�"
+hide: "Ascunde"
+useDrawerReactionPickerForMobile: "Afișează selectorul de reacții ca sertar pe mobil"
+welcomeBackWithName: "Bine ai revenit, {name}"
+clickToFinishEmailVerification: "Dați clic pe [{ok}] pentru a finaliza verificarea e-mailului."
+overridedDeviceKind: "Tipul de dispozitiv"
+smartphone: "Smartphone"
+tablet: "Tableta"
+auto: "Auto"
+themeColor: "Culoarea temei"
+size: "Dimensiune"
+numberOfColumn: "Numărul de coloane"
searchByGoogle: "Caută"
+instanceDefaultLightTheme: "Tema luminoasă implicită la nivelul întregii instanțe"
+instanceDefaultDarkTheme: "Tema întunecată implicită la nivelul întregii instanțe"
+instanceDefaultThemeDescription: "Introduceți codul temei în format obiect."
+mutePeriod: "Durata amuțire"
+period: "Timp limită"
+indefinitely: "Permanent"
+tenMinutes: "10 minute"
+oneHour: "O oră"
+oneDay: "O zi"
+oneWeek: "O săptămâna"
+oneMonth: "O lună"
+threeMonths: "Trei luni"
+oneYear: "Un an"
+threeDays: "Trei zile"
+reflectMayTakeTime: "Poate dura ceva timp pentru ca acest lucru să se replice."
+failedToFetchAccountInformation: "Nu s-a putut prelua informațiile despre cont"
+rateLimitExceeded: "Limita ratei a fost depășită"
+cropImage: "Trunchiază imaginea"
+cropImageAsk: "Dorești să trunchiezi această imagine?"
+cropYes: "Trunchiază"
+cropNo: "Utilizează-o așa cum e"
file: "Fișiere"
+recentNHours: "Ultimele {n} ore"
+recentNDays: "Ultimele {n} zile"
+noEmailServerWarning: "Serverul de e-mail nu este configurat."
+thereIsUnresolvedAbuseReportWarning: "Sunt rapoarte nerezolvate."
+recommended: "Recomandat"
+check: "Verifică"
+driveCapOverrideLabel: "Schimbă capacitatea de stocare a drive-ului pentru acest utilizator"
+driveCapOverrideCaption: "Resetează capacitatea la valoarea implicită introducând o valoare de 0 sau mai mică."
+requireAdminForView: "Trebuie să te conectezi cu un cont de administrator pentru a vedea această resursă."
+isSystemAccount: "Un cont creat și operat automat de sistem."
+typeToConfirm: "Introdu {x} pentru a confirma"
+deleteAccount: "Șterge contul"
+document: "Documentație"
+numberOfPageCache: "Număr de pagini stocate cache"
+numberOfPageCacheDescription: "Mărirea acestui număr va îmbunătăți conveniența, dar va cauza mai multă sarcină pe măsură ce se utilizează mai multă memorie pe dispozitivul utilizatorului.\n"
+logoutConfirm: "Ești sigur(ă) că vrei să te deloghezi?"
+logoutWillClearClientData: "Deconectarea va șterge setările clientului din browser. Pentru a putea restabili setările la autentificare, trebuie să activezi copia de rezervă automată a setărilor."
+lastActiveDate: "Ultima dată de utilizare"
+statusbar: "Bară de stare"
+pleaseSelect: "Alege o opțiune"
+reverse: "Invers"
+colored: "Colorat"
+refreshInterval: "Interval de actualizare"
+label: "Etichetă"
+type: "Tip"
+speed: "Viteză"
+slow: "Lent"
+fast: "Rapid"
+sensitiveMediaDetection: "Detectarea conținutului media sensibil"
+localOnly: "Beta"
+remoteOnly: "Doar externe"
+failedToUpload: "Încărcare eșuată"
+cannotUploadBecauseInappropriate: "Acest fișier nu a putut fi încărcat deoarece părți din acesta au fost detectate ca potențial neadecvate."
+cannotUploadBecauseNoFreeSpace: "Încărcarea a eșuat datorită lipsei spațiului din drive."
+cannotUploadBecauseExceedsFileSizeLimit: "Acest fișier nu poate fi încărcat deoarece depășește limita de dimensiune a fișierelor."
+beta: "Beta"
+enableAutoSensitive: "Marcare automată ca fiind conținut sensibil"
+enableAutoSensitiveDescription: "Permite detectarea și marcarea automată a mediilor sensibile prin Machine Learning acolo unde este posibil. Chiar dacă această opțiune este dezactivată ea poate fi, în schimb, activă la nivelul întregii instanțe."
+activeEmailValidationDescription: "Permite validarea mai strictă a adreselor de e-mail, care includ verificarea adreselor de unică folosință și dacă pot fi comunicate cu acestea. Când este debifat, este validat doar formatul e-mailului."
+navbar: "Bara de navigare"
+shuffle: "Amestecă"
+account: "Conturi"
+move: "Mută"
+pushNotification: "Notificări tip „pushâ€"
+subscribePushNotification: "Permite notificările tip „pushâ€"
+unsubscribePushNotification: "OpreÈ™te notificările tip „pushâ€"
+pushNotificationAlreadySubscribed: "Notificările tip „push†sunt deja activate"
+pushNotificationNotSupported: "Browserul sau instanÈ›a dvs. nu acceptă notificările tip „pushâ€"
+sendPushNotificationReadMessage: "Șterge notificările tip „push†după ce au fost citite"
+sendPushNotificationReadMessageCaption: "Acest lucru poate crește consumul de energie al dispozitivului"
+windowMaximize: "Maximizează"
+windowMinimize: "Minimizează"
+windowRestore: "Restabilește"
+caption: "Titrare"
+loggedInAsBot: "Conectat în prezent ca bot"
+tools: "Unelte"
+cannotLoad: "Nu se poate încărca"
+numberOfProfileView: "Numărul de vizualizări ale profilului"
+like: "ÃŽmi place!"
+unlike: "ÃŽmi displace"
+numberOfLikes: "Numărul de aprecieri"
show: "Arată"
+neverShow: "Nu mai afișa"
+remindMeLater: "Poate mai târziu"
+didYouLikeMisskey: "A început sa îți placa Misskey?"
+pleaseDonate: "{host} folosește software-ul gratuit, Misskey. Am aprecia foarte mult donațiile dumneavoastră, astfel încât dezvoltarea Misskey să poată continua!"
+correspondingSourceIsAvailable: "Codul sursă corespunzător este disponibil la {anchor}"
+roles: "Roluri"
+role: "Roluri"
+noRole: "Rolul nu a fost găsit"
+normalUser: "Utilizator obișnuit"
+undefined: "Nedefinit"
+assign: "Asignează"
+unassign: "Dezasignează"
+color: "Culoare"
+manageCustomEmojis: "Gestionează emoji-uri personalizate"
+manageAvatarDecorations: "Gestionați decorațiunile avatarului"
+youCannotCreateAnymore: "Ai atins limita de creație."
+cannotPerformTemporary: "Temporar indisponibil"
+cannotPerformTemporaryDescription: "Această acțiune nu poate fi efectuată temporar din cauza depășirii limitei de execuție. Te rugăm să aștepți puțin și apoi să încerci din nou."
+invalidParamError: "Parametri invalizi"
+invalidParamErrorDescription: "Parametrii cererii sunt invalizi. Acest lucru este cauzat în mod normal de o eroare, dar se poate datora și intrărilor care depășesc limitele de dimensiune sau altceva similar."
+permissionDeniedError: "Operațiune refuzată"
+permissionDeniedErrorDescription: "Acest cont nu are permisiunea de a efectua această acțiune."
+preset: "Presetate"
+selectFromPresets: "Alege din presetate"
+achievements: "Realizări"
+gotInvalidResponseError: "Răspunsul serverului este invalid"
+gotInvalidResponseErrorDescription: "Serverul poate fi oprit sau e în curs de întreținere. Te rugăm să încerci din nou după un timp."
+thisPostMayBeAnnoying: "Această notă îi poate deranja pe alții."
+thisPostMayBeAnnoyingHome: "Postează în cronologia de acasă"
+thisPostMayBeAnnoyingCancel: "Anulează"
+thisPostMayBeAnnoyingIgnore: "Postează oricum"
+collapseRenotes: "Restrânge Re-Notările pe care le-ați văzut deja"
+collapseRenotesDescription: "Restrânge notările pe care le-ați văzut deja"
+internalServerError: "Eroare interna a serverului"
+internalServerErrorDescription: "Serverul a întâmpinat o eroare neașteptată."
+copyErrorInfo: "Copiază detaliile erorii"
+joinThisServer: "Înregistrează-te în această instanță"
+exploreOtherServers: "Caută o altă instanță"
+letsLookAtTimeline: "Aruncă o privire la cronologie"
+disableFederationConfirm: "Sigur vrei sa oprești federarea"
+disableFederationConfirmWarn: "Chiar dacă sunt defederate, postările vor continua să fie publice, dacă nu sunt stabilite altfel. De obicei, nu trebuie să faceți acest lucru."
+disableFederationOk: "Dezactivează"
+invitationRequiredToRegister: "Acest server este în prezent accesibil numai pe bază de invitație. Se pot înregistra doar cei care au cod de invitație."
+emailNotSupported: "Această instanță nu acceptă trimiterea de e-mailuri"
+postToTheChannel: "Postează pe canal"
+cannotBeChangedLater: "Nu poate fi schimbat ulterior"
+reactionAcceptance: "Acceptarea reacțiilor"
+likeOnly: "Doar aprecieri"
+likeOnlyForRemote: "Toate (aplicabil numai pentru instanțe externe)"
+nonSensitiveOnly: "Numai conținut non-sensibil"
+nonSensitiveOnlyForLocalLikeOnlyForRemote: "Numai non-sensibile (aplicabil numai pentru aprecieri de la surse externe)"
+rolesAssignedToMe: "Roluri asignate mie"
+resetPasswordConfirm: "Sigur vrei sa îți resetezi parola"
+sensitiveWords: "Cuvinte sensibile"
+sensitiveWordsDescription: "Vizibilitatea tuturor notelor care conÈ›in oricare dintre cuvintele configurate va fi setate automat la „Acasăâ€. PuteÈ›i enumera mai multe, separându-le prin o linie de spaÈ›iere nouă."
+sensitiveWordsDescription2: "Folosirea spațiilor va crea expresii \"AND\" și înconjurând cuvintele cheie cu bare oblice le vor transforma într-o expresie obișnuită."
+prohibitedWords: "Cuvinte interzise"
+prohibitedWordsDescription: "Activează o eroare la încercarea de a posta o notă care conține cuvintele setate. Pot fi setate mai multe cuvinte, separate printr-o linie de spațiere nouă."
+prohibitedWordsDescription2: "Folosirea spațiilor va crea expresii \"AND\" și înconjurând cuvintele cheie cu bare oblice le vor transforma într-o expresie obișnuită."
+hiddenTags: "Hashtag-uri ascunse"
+hiddenTagsDescription: "Selectați hashtag-uri care nu vor fi afișate în lista de tendințe.\nMai multe hashtag-uri pot fi înregistrate pe o linie de spațiere noua."
+notesSearchNotAvailable: "Căutarea notelor este indisponibilă."
+license: "Licență"
+unfavoriteConfirm: "Sigur vrei să elimini din favorite?"
+myClips: "Clipurile mele"
+drivecleaner: "Curățitorul de drive"
+retryAllQueuesNow: "Reîncearcă să rulezi toate cozile"
+retryAllQueuesConfirmTitle: "Sigur vrei să le reîncerci din nou?"
+retryAllQueuesConfirmText: "Acest lucru va crește temporar încărcarea rulării serverului."
+enableChartsForRemoteUser: "Generează diagrame cu datele utilizatorilor externi"
+enableChartsForFederatedInstances: "Generează diagrame de date ale instanțelor externe"
+enableStatsForFederatedInstances: "Primește statistici ale serverelor externe"
+showClipButtonInNoteFooter: "Adaugă „Clip†la meniul de acțiuni pentru note"
+reactionsDisplaySize: "Dimensiunea afișajului de reacție"
+limitWidthOfReaction: "Limitează lățimea maximă a reacțiilor și afișează-le în dimensiuni reduse."
+noteIdOrUrl: "ID sau URL-ul notei"
+video: "Video"
+videos: "Video-uri"
+audio: "Audio"
+audioFiles: "Audio"
+dataSaver: "Economizor de date"
+accountMigration: "Migrarea contului"
+accountMoved: "Acest utilizator a fost mutat într-un alt cont:"
+accountMovedShort: "Acest cont a fost migrat."
+operationForbidden: "Operațiune interzisă"
+forceShowAds: "Afișează întotdeauna reclame"
+addMemo: "Adaugă un memo"
+editMemo: "Editează memo-ul"
+reactionsList: "Reacții"
+renotesList: "Re-Notări"
+notificationDisplay: "Notificări"
+leftTop: "Stânga-sus"
+rightTop: "Dreapta-sus"
+leftBottom: "Stânga-jos"
+rightBottom: "Dreapta-jos"
+stackAxis: "Direcția de stack-are"
+vertical: "Vertical"
+horizontal: "Orizontal"
+position: "Poziție"
+serverRules: "Regulamentul serverului"
+pleaseConfirmBelowBeforeSignup: "Pentru a te înregistra pe acest server, trebuie să examinezi și să fii de acord cu următoarele:"
+pleaseAgreeAllToContinue: "Trebuie să fii de acord cu toate câmpurile de mai sus pentru a continua."
+continue: "Continuă"
+preservedUsernames: "Nume rezervate de utilizator"
+preservedUsernamesDescription: "Listeaza numele de utilizatori pentru a le rezerva, separate prin întreruperi de linie. Acestea vor deveni inutilizabile în timpul creării normale a contului, dar pot fi folosite de administratori pentru a crea conturi manual. Conturile deja existente care folosesc aceste nume de utilizator nu vor fi afectate."
+createNoteFromTheFile: "Compuneți o notă din acest fișier"
+archive: "Arhivă"
+archived: "Arhivat"
+unarchive: "Nearhivabil"
+channelArchiveConfirmTitle: "Sigur vrei să arhivezi {name}?"
+channelArchiveConfirmDescription: "Un canal arhivat nu va mai apărea în lista de canale sau în rezultatele căutării. De asemenea, postările noi nu mai pot fi adăugate la acesta."
+thisChannelArchived: "Acest canal a fost arhivat."
+displayOfNote: "Afișajul notelor"
+initialAccountSetting: "Configurarea Profilului"
+youFollowing: "Îl urmărești"
+preventAiLearning: "Respinge utilizarea în Machine Learning (IA generativă)"
+preventAiLearningDescription: "Solicită crawlerilor să nu folosească textul sau materialul de imagine postat etc. în seturile de date de învățare automată (AI predictivă/generativă). Acest lucru se realizează prin adăugarea unui flag „noai†HTML-Response la conținutul respectiv. Cu toate acestea, o prevenire completă nu poate fi realizată prin acest flag, deoarece poate fi pur și simplu ignorat."
+options: "Opțiuni"
+specifyUser: "Utilizator specific"
+lookupConfirm: "Vrei să cauți?"
+openTagPageConfirm: "Vrei să deschizi o pagină cu hashtag?"
+specifyHost: "O gazdă(host) specifică"
+failedToPreviewUrl: "Nu se poate previzualiza"
+update: "Actualizare"
+rolesThatCanBeUsedThisEmojiAsReaction: "Roluri care pot folosi acest emoji ca reacție"
+rolesThatCanBeUsedThisEmojiAsReactionEmptyDescription: "Dacă nu sunt specificate rolurile, cineva poate folosi acest emoji ca reacție."
+rolesThatCanBeUsedThisEmojiAsReactionPublicRoleWarn: "Aceste roluri trebuie să fie publice."
+cancelReactionConfirm: "Ești sigur(ă) că vrei să ștergi reacția ta?"
+changeReactionConfirm: "Sigur vrei sa îți ștergi reacția?"
+later: "Mai târziu"
+goToMisskey: "Spre Misskey"
+additionalEmojiDictionary: "Dicționare emoji suplimentare"
+installed: "Instalat"
+branding: "Branding"
+enableServerMachineStats: "Publicați statistici hardware ale serverului"
+enableIdenticonGeneration: "Activați generarea identicon a utilizatorului"
+turnOffToImprovePerformance: "Oprirea acestei opțiuni poate crește performanța."
+createInviteCode: "Generează invitația"
+createWithOptions: "Generează cu opțiuni"
+createCount: "Numărul de invitații"
+inviteCodeCreated: "Invitație generată"
+inviteLimitExceeded: "Ați depășit limita invitațiilor pe care le puteți genera."
+createLimitRemaining: "Limită invitații : {limit} rămase"
+inviteLimitResetCycle: "Această limită se va reseta la {limit} la {time}."
+expirationDate: "Data de expirare"
+noExpirationDate: "Fără expirare"
+inviteCodeUsedAt: "Codul de invitație în"
+registeredUserUsingInviteCode: "Invitație folosita de"
+waitingForMailAuth: "Verificarea e-mailului este în așteptare"
+inviteCodeCreator: "Invitație creată de"
+usedAt: "Folosit în"
+unused: "Neutilizat"
+used: "Utilizat"
+expired: "Expirat"
+doYouAgree: "De-acord?"
+beSureToReadThisAsItIsImportant: "Te rugăm citește informația aceasta importantă"
+iHaveReadXCarefullyAndAgree: "Am citit textul „{x}†și sunt de acord."
+dialog: "Dialog"
icon: "Avatar"
+forYou: "Pentru tine"
+currentAnnouncements: "Anunțuri curente"
+pastAnnouncements: "Anunțuri anterioare"
+youHaveUnreadAnnouncements: "Sunt anunțuri necitite."
+useSecurityKey: "Te rugăm să urmezi instrucțiunile browserului sau ale dispozitivului tău pentru a-ți folosi cheia de securitate sau de acces."
replies: "Răspunde"
-renotes: "Re-notează"
+renotes: "Re-Note"
+loadReplies: "Afișează răspunsurile"
+loadConversation: "Afișează conversația"
+pinnedList: "Lista fixată"
+keepScreenOn: "Menține ecranul aprins"
+verifiedLink: "Deținerea linkului a fost verificată"
+notifyNotes: "Notifică-mă despre notele noi"
+unnotifyNotes: "Nu mai mă notifica despre notele noi"
+authentication: "Autentificare"
+authenticationRequiredToContinue: "Te rugăm să te autentifici pentru a continua"
+dateAndTime: "Data și ora"
+showRenotes: "Afiseaza Re-Notele"
+edited: "Editat"
+notificationRecieveConfig: "Setări de notificare"
+mutualFollow: "Vă urmăriți"
+followingOrFollower: "Urmărit sau urmăritor"
+fileAttachedOnly: "Numai Note cu fișiere"
+showRepliesToOthersInTimeline: "Afișează răspunsurile către ceilalți în cronologie"
+hideRepliesToOthersInTimeline: "Ascunde răspunsurile către ceilalți în cronologie"
+showRepliesToOthersInTimelineAll: "Afișează răspunsurile către ceilalți de către cei ce ii urmărești în cronologie"
+repositoryUrlDescription: "Dacă utilizați Misskey așa cum este (fără modificări ale codului sursă), introduceți https://github.com/misskey-dev/misskey"
+flip: "Invers"
+copyReplayData: "Copiază datele de reluare"
+lastNDays: "Ultimele {n} zile"
+surrender: "Anulează"
+copyPreferenceId: "Copiază ID-ul preferințelor"
information: "Despre"
_chat:
invitations: "Invită"
@@ -649,22 +1223,60 @@ _chat:
members: "Membri"
home: "Acasă"
send: "Trimite"
+_accountSettings:
+ requireSigninToViewContentsDescription2: "Conținutul nu va fi afișat în previzualizările URL (OGP), încorporate în paginile web sau pe serverele care nu acceptă citările de note."
+ makeNotesFollowersOnlyBefore: "Face ca notele anterioare pentru a fi afișate numai pentru urmăritori"
_delivery:
stop: "Suspendat"
_type:
none: "Publicare"
+_initialTutorial:
+ _note:
+ reply: "Face clic pe acest buton pentru a răspunde la un mesaj. De asemenea, este posibil să răspunzi la răspunsuri, continuând conversația ca pe un șir de replici(thread)."
+ menu: "Poți vedea detaliile ce țin de Note, să copiezi linkuri și să efectuezi alte acțiuni."
+ _timeline:
+ social: "Vor fi afișate notele din cronologia „Acasă'' și „Locală''."
+ _postNote:
+ _visibility:
+ localOnly: "Postarea cu acest flag nu va federa nota pe alte servere. Utilizatorii de pe alte servere nu vor putea vizualiza aceste note direct, indiferent de setările de afișare de mai sus."
+ _cw:
+ description: "ÃŽn locul corpului, va fi afiÈ™at conÈ›inutul scris în câmpul „comentariiâ€. Apăsând „citeÈ™te mai mult†va dezvălui corpul."
+ useCases: "Acesta este folosit atunci când respectați instrucțiunile serverului, pentru notele necesare sau pentru auto-restrângerea spoilerului sau a textului sensibil."
+_timelineDescription:
+ social: "Cronologia socială afișează note atât din cronologia de ,,Acasă'', cât și din cea ,,Locală\"."
_role:
+ assignTarget: "Asignează"
+ priority: "Prioritate"
_priority:
+ low: "Scăzuta"
middle: "Mediu"
+ high: "Ridicată"
+ _options:
+ canManageCustomEmojis: "Gestionează emoji-uri personalizate"
+ canManageAvatarDecorations: "Gestionați decorațiunile avatarului"
+_ffVisibility:
+ public: "Publică"
+_ad:
+ back: "ÃŽnapoi"
+_gallery:
+ my: "Galeria mea"
+ liked: "Postări apreciate"
+ like: "ÃŽmi place!"
+ unlike: "ÃŽmi displace"
_email:
_follow:
- title: "te-a urmărit"
+ title: "Ai un nou urmăritor"
+_instanceMute:
+ instanceMuteDescription: "Aceasta va dezactiva orice notă/renotă din instanțele enumerate, inclusiv cele ale utilizatorilor care răspund unui utilizator dintr-o instanță mută."
_theme:
description: "Descriere"
keys:
+ fg: "Text"
mention: "Mențiune"
- renote: "Re-notează"
+ renote: "Re-Notează"
divider: "Separator"
+ toastFg: "Textul din notificare"
+ fgHighlighted: "Textul evidențiat"
_sfx:
note: "Note"
notification: "Notificări"
@@ -672,6 +1284,11 @@ _ago:
invalid: "Nu e nimic de văzut aici"
_2fa:
renewTOTPCancel: "Nu, mulțumesc."
+_permissions:
+ "read:gallery": "Vizualizează-ți galeria"
+ "write:gallery": "Editează-ți galeria"
+ "read:gallery-likes": "Vizualizează-ți lista de postări apreciate din galerie"
+ "write:gallery-likes": "Editează-ți lista de postări apreciate din galerie"
_widgets:
profile: "Profil"
instanceInfo: "Informații despre instanță"
@@ -687,10 +1304,22 @@ _cw:
_visibility:
home: "Acasă"
followers: "Urmăritori"
+_postForm:
+ replyPlaceholder: "Răspunde la această notă..."
+ quotePlaceholder: "Citează aceasta nota..."
+ channelPlaceholder: "Postează pe un canal..."
+ _placeholders:
+ a: "Ce mai faci?"
+ b: "Ce se mai petrece in jurul tău?"
+ c: "La ce te gândești?"
+ d: "Ce vrei să scrii?"
+ e: "Începe să scrii..."
+ f: "Te aștept să scrii..."
_profile:
name: "Nume"
username: "Nume de utilizator"
_exportOrImport:
+ clips: "Clip"
followingList: "Urmărești"
muteList: "Amuțește"
blockingList: "Blochează"
@@ -699,24 +1328,28 @@ _charts:
federation: "Federație"
_timelines:
home: "Acasă"
+ local: "Local"
+ social: "Social"
+ global: "Global"
_play:
script: "Script"
summary: "Descriere"
_pages:
blocks:
+ text: "Text"
image: "Imagini"
_notification:
youWereFollowed: "te-a urmărit"
_types:
follow: "Urmărești"
mention: "Mențiune"
- renote: "Re-notează"
+ renote: "Re-Note"
quote: "Citează"
reaction: "Reacție"
login: "Autentifică-te"
_actions:
reply: "Răspunde"
- renote: "Re-notează"
+ renote: "Re-Notează"
_deck:
_columns:
notifications: "Notificări"
@@ -725,8 +1358,10 @@ _deck:
list: "Liste"
channel: "Canale"
mentions: "Mențiuni"
+ roleTimeline: "Cronologia rolului"
_webhookSettings:
name: "Nume"
+ active: "Activat"
_abuseReport:
_notificationRecipient:
_recipientType:
@@ -734,10 +1369,27 @@ _abuseReport:
_moderationLogTypes:
suspend: "Suspendă"
resetPassword: "Resetează parola"
+ createInvitation: "Generează invitația"
+ deleteGalleryPost: "Postarea din galerie a fost ștearsă"
+_dataSaver:
+ _code:
+ title: "Evidențierea codului"
+ description: "Dacă notațiile de evidențiere a codului sunt utilizate în MFM etc., acestea nu se vor încărca până când sunt atinse. Evidențierea de sintaxă necesită descărcarea fișierelor de definiție de evidențiere pentru fiecare limbaj de programare. Prin urmare, dezactivarea încărcării automate a acestor fișiere este de așteptat să reducă cantitatea de date de comunicare."
_reversi:
total: "Total"
+_contextMenu:
+ app: "Aplicație"
+ appWithShift: "Aplicatie ce utilizeaza tasta ,,shift\""
+ native: "Nativ"
+_customEmojisManager:
+ _gridCommon:
+ copySelectionRows: "Copiază rândurile selectate"
+ copySelectionRanges: "Copiază selecția"
_remoteLookupErrors:
_noSuchObject:
title: "Nu a fost găsit"
_search:
searchScopeAll: "Tot"
+ searchScopeLocal: "Local"
+ searchScopeUser: "Utilizator specific"
+ serverHostPlaceholder: "Exemplu: misskey.example.com"
diff --git a/locales/th-TH.yml b/locales/th-TH.yml
index 06f68c85fe..6398268274 100644
--- a/locales/th-TH.yml
+++ b/locales/th-TH.yml
@@ -5,6 +5,7 @@ introMisskey: "ยินดีต้อนรับทุà¸à¸„นจ้า! Mis
poweredByMisskeyDescription: "{name} เป็นหนึ่งในเซิร์ฟเวอร์ของà¹à¸žà¸¥à¸•ฟอร์มโอเพ่นซอร์ส <b>Misskey</b>"
monthAndDay: "{month}/{day}"
search: "ค้นหา"
+reset: "รีเซ็ต"
notifications: "เเจ้งเตือน"
username: "ชื่อผู้ใช้"
password: "รหัสผ่าน"
@@ -48,6 +49,7 @@ pin: "ปัà¸à¸«à¸¡à¸¸à¸”"
unpin: "เลิà¸à¸›à¸±à¸à¸«à¸¡à¸¸à¸”"
copyContent: "คัดลอà¸à¹€à¸™à¸·à¹‰à¸­à¸«à¸²"
copyLink: "คัดลอà¸à¸¥à¸´à¸‡à¸à¹Œ"
+copyRemoteLink: "คัดลอà¸à¸¥à¸´à¸‡à¸„์ระยะไà¸à¸¥"
copyLinkRenote: "คัดลอà¸à¸¥à¸´à¸‡à¸à¹Œà¸£à¸µà¹‚น้ต"
delete: "ลบ"
deleteAndEdit: "ลบà¹à¸¥à¸°à¹à¸à¹‰à¹„ข"
@@ -680,10 +682,12 @@ smtpSecureInfo: "ปิดสิ่งนี้เมื่อใช้ STARTTLS
testEmail: "ทดสอบà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥"
wordMute: "ปิดเสียงคำ"
hardWordMute: "ปิดเสียงคำà¹à¸šà¸šà¹à¸‚็งโป๊à¸"
+hardWordMuteDescription: "ซ่อนหมายเหตุที่มีวลีที่ระบุ ต่างจาà¸à¸à¸²à¸£à¸›à¸´à¸”เสียงคำ โน้ตต่างๆ จะถูà¸à¸‹à¹ˆà¸­à¸™à¹„ว้อย่างสมบูรณ์"
regexpError: "เà¸à¸´à¸”ข้อผิดพลาดใน regular expression"
regexpErrorDescription: "เà¸à¸´à¸”ข้อผิดพลาดใน regular expression บรรทัดที่ {line} ของà¸à¸²à¸£à¸›à¸´à¸”เสียงคำ {tab} :"
instanceMute: "ปิดเสียงเซิร์ฟเวอร์"
userSaysSomething: "{name} พูดอะไรบางอย่าง"
+userSaysSomethingAbout: "{name} พูดอะไรบางอย่างเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š \"{word}\""
makeActive: "เปิดใช้งาน"
display: "à¹à¸ªà¸”งผล"
copy: "คัดลอà¸"
@@ -1288,8 +1292,14 @@ prohibitedWordsForNameOfUser: "คำนี้ไม่สามารถใชà
prohibitedWordsForNameOfUserDescription: "หาà¸à¸¡à¸µà¸ªà¸•ริงใดๆ ในรายà¸à¸²à¸£à¸™à¸µà¹‰à¸›à¸£à¸²à¸à¸à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸Šà¸·à¹ˆà¸­à¸‚องผู้ใช้ ชื่อนั้นจะถูà¸à¸›à¸à¸´à¹€à¸ªà¸˜ ผู้ใช้ที่มีสิทธิ์à¹à¸•่ผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¸™à¸±à¹‰à¸™à¸ˆà¸°à¹„ม่ได้รับผลà¸à¸£à¸°à¸—บใดๆจาà¸à¸‚้อจำà¸à¸±à¸”นี้ค่ะ"
yourNameContainsProhibitedWords: "ชื่อของคุณนั้นมีคำที่ต้องห้าม"
yourNameContainsProhibitedWordsDescription: "ถ้าหาà¸à¸„ุณต้องà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸Šà¸·à¹ˆà¸­à¸™à¸µà¹‰ à¸à¸£à¸¸à¸“าติดต่อผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¸‚องเซิร์ฟเวอร์นะค่ะ"
+federationDisabled: "เซิร์ฟเวอร์นี้ปิดà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸à¸²à¸£à¸£à¸§à¸¡à¸à¸¥à¸¸à¹ˆà¸¡ คุณไม่สามารถโต้ตอบà¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸šà¸™à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œà¸­à¸·à¹ˆà¸™à¹„ด้"
+reactAreYouSure: "คุณต้องà¸à¸²à¸£à¸—ี่จะตอบสนองต่อ \" {emoji}\" หรือไม่?"
+markAsSensitiveConfirm: "คุณต้องà¸à¸²à¸£à¸—ำเครื่องหมายสื่อนี้ว่าละเอียดอ่อนหรือไม่?"
+unmarkAsSensitiveConfirm: "คุณต้องà¸à¸²à¸£à¸¥à¸šà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ความไวของสื่อนี้หรือไม่?"
postForm: "à¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡à¸à¸²à¸£à¹‚พสต์"
information: "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š"
+right: "ขวา"
+bottom: "ภายใต้"
_chat:
invitations: "คำเชิà¸"
noHistory: "ไม่มีประวัติ"
@@ -1298,6 +1308,11 @@ _chat:
send: "ส่ง"
_settings:
webhook: "Webhook"
+_accountSettings:
+ requireSigninToViewContents: "ต้องเข้าสู่ระบบเพื่อดูเนื้อหา"
+ requireSigninToViewContentsDescription1: "ต้องเข้าสู่ระบบเพื่อดูบันทึà¸à¹à¸¥à¸°à¹€à¸™à¸·à¹‰à¸­à¸«à¸²à¸­à¸·à¹ˆà¸™ ๆ ทั้งหมดที่คุณสร้าง คาดว่าจะมีประสิทธิผลในà¸à¸²à¸£à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¹„ม่ให้ข้อมูลถูà¸à¹€à¸à¹‡à¸šà¸£à¸§à¸šà¸£à¸§à¸¡à¹‚ดยโปรà¹à¸à¸£à¸¡à¸£à¸§à¸šà¸£à¸§à¸¡à¸‚้อมูล"
+ requireSigninToViewContentsDescription2: "นอà¸à¸ˆà¸²à¸à¸™à¸µà¹‰ จะไม่สามารถดูจาà¸à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œà¸—ี่ไม่รองรับà¸à¸²à¸£à¸”ูตัวอย่าง URL (OGP), à¸à¸²à¸£à¸à¸±à¸‡à¹ƒà¸™à¸«à¸™à¹‰à¸²à¹€à¸§à¹‡à¸š หรือà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¸«à¸¡à¸²à¸¢à¹€à¸«à¸•ุได้"
+ requireSigninToViewContentsDescription3: "เนื้อหาที่ถูà¸à¸£à¸§à¸¡à¹€à¸‚้าà¸à¸±à¸šà¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œà¸£à¸°à¸¢à¸°à¹„à¸à¸¥à¸­à¸²à¸ˆà¹„ม่อยู่ภายใต้ข้อจำà¸à¸±à¸”เหล่านี้"
_abuseUserReport:
forward: "ส่ง​ต่อ"
forwardDescription: "ส่งรายงานไปยังเซิร์ฟเวอร์ระยะไà¸à¸¥à¹‚ดยใช้บัà¸à¸Šà¸µà¸£à¸°à¸šà¸šà¸—ี่ไม่ระบุตัวตน"
diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml
index 16917ebf06..525c3c233f 100644
--- a/locales/vi-VN.yml
+++ b/locales/vi-VN.yml
@@ -1,10 +1,11 @@
---
-_lang_: "Tiếng Nhật"
+_lang_: "Tiếng Việt "
headlineMisskey: "Mạng xã hội liên hợp"
introMisskey: "Xin chào! Misskey là má»™t ná»n tảng tiểu blog phi tập trung mã nguồn mở.\nViết \"tút\" để chia sẻ những suy nghÄ© cá»§a bạn 📡\nBằng \"biểu cảm\", bạn có thể bày tá» nhanh chóng cảm xúc cá»§a bạn vá»›i các tút ðŸ‘\nHãy khám phá má»™t thế giá»›i má»›i! 🚀"
poweredByMisskeyDescription: "{name} là má»™t trong những chá»§ máy cá»§a <b>Misskey</b> là ná»n tảng mã nguồn mở"
monthAndDay: "{day} tháng {month}"
search: "Tìm kiếm"
+reset: "cài lại"
notifications: "Thông báo"
username: "Tên ngưá»i dùng"
password: "Mật khẩu"
@@ -48,9 +49,10 @@ pin: "Ghim"
unpin: "Bá» ghim"
copyContent: "Chép nội dung"
copyLink: "Chép liên kết"
+copyRemoteLink: "Sao chép liên kết từ xa"
copyLinkRenote: "Sao chép liên kết ghi chú"
delete: "Xóa"
-deleteAndEdit: "Sá»­a"
+deleteAndEdit: "Xóa và soạn thảo lại"
deleteAndEditConfirm: "Bạn có chắc muốn sá»­a tút này? Những biểu cảm, lượt trả lá»i và đăng lại sẽ bị mất."
addToList: "Thêm vào danh sách"
addToAntenna: "Thêm vào Ăngten"
@@ -63,6 +65,7 @@ copyFileId: "Sao chép ID tập tin"
copyFolderId: "Sao chép ID thư mục"
copyProfileUrl: "Sao chép URL hồ sơ"
searchUser: "Tìm kiếm ngưá»i dùng"
+searchThisUsersNotes: "Tìm kiếm ghi chú cá»§a ngưá»i dùng"
reply: "Trả lá»i"
loadMore: "Tải thêm"
showMore: "Xem thêm"
@@ -111,11 +114,14 @@ enterEmoji: "Chèn emoji"
renote: "Äăng lại"
unrenote: "Hủy đăng lại"
renoted: "Äã đăng lại."
+renotedToX: "Äã cho thuê lại {name}."
cantRenote: "Không thể đăng lại tút này."
cantReRenote: "Không thể đăng lại một tút đăng lại."
quote: "Trích dẫn"
inChannelRenote: "Chia sẻ trong kênh này"
inChannelQuote: "Trích dẫn trong kênh này"
+renoteToChannel: "Äăng lại tá»›i kênh"
+renoteToOtherChannel: "Äăng lại tá»›i kênh khác"
pinnedNote: "Bài viết đã ghim"
pinned: "Ghim"
you: "Bạn"
@@ -125,6 +131,11 @@ add: "Thêm"
reaction: "Biểu cảm"
reactions: "Biểu cảm"
emojiPicker: "Bá»™ chá»n biểu tượng cảm xúc"
+pinnedEmojisForReactionSettingDescription: "Ghim các biểu tượng cảm xúc sẽ hiển thị khi phản hồi"
+pinnedEmojisSettingDescription: "Ghim các biểu tượng cảm xúc sẽ hiển thị trong bảng chá»n emoji"
+emojiPickerDisplay: "Hiển thị bá»™ chá»n"
+overwriteFromPinnedEmojisForReaction: "Ghi đè thiết lập phản hồi"
+overwriteFromPinnedEmojis: "Ghi đè thiết lập chung"
reactionSettingDescription2: "Kéo để sắp xếp, nhấn để xóa, nhấn \"+\" để thêm."
rememberNoteVisibility: "Lưu kiểu tút mặc định"
attachCancel: "Gỡ tập tin đính kèm"
@@ -149,6 +160,7 @@ editList: "Chỉnh sửa danh sách"
selectChannel: "Lá»±a chá»n kênh"
selectAntenna: "Chá»n má»™t antenna"
editAntenna: "Chỉnh sửa Ăngten"
+createAntenna: "Tạo Ăngten "
selectWidget: "Chá»n tiện ích"
editWidgets: "Sửa tiện ích"
editWidgetsExit: "Xong"
@@ -175,6 +187,10 @@ addAccount: "Thêm tài khoản"
reloadAccountsList: "Cập nhật danh sách tài khoản"
loginFailed: "Äăng nhập không thành công"
showOnRemote: "Truy cập trang cá»§a ngưá»i này"
+continueOnRemote: "Tiếp tục trên phiên bản từ xa"
+chooseServerOnMisskeyHub: "Chá»n má»™t máy chá»§ từ Misskey Hub"
+specifyServerHost: "Thiết lập một máy chủ"
+inputHostName: "Nhập địa chỉ máy chủ"
general: "Tổng quan"
wallpaper: "Ảnh bìa"
setWallpaper: "Äặt ảnh bìa"
@@ -185,6 +201,7 @@ followConfirm: "Bạn theo dõi {name}?"
proxyAccount: "Tài khoản proxy"
proxyAccountDescription: "Tài khoản proxy là tài khoản hoạt động như má»™t ngưá»i theo dõi từ xa cho ngưá»i dùng trong những Ä‘iá»u kiện nhất định. Ví dụ: khi ngưá»i dùng thêm ngưá»i dùng từ xa vào danh sách, hoạt động cá»§a ngưá»i dùng từ xa sẽ không được chuyển đến phiên bản nếu không có ngưá»i dùng cục bá»™ nào theo dõi ngưá»i dùng đó, vì vậy tài khoản proxy sẽ theo dõi."
host: "Host"
+selectSelf: "Chá»n chính bạn"
selectUser: "Chá»n ngưá»i dùng"
recipient: "Ngưá»i nhận"
annotation: "Bình luận"
@@ -199,6 +216,8 @@ perHour: "Má»—i Giá»"
perDay: "Mỗi Ngày"
stopActivityDelivery: "Ngưng gửi hoạt động"
blockThisInstance: "Chặn máy chủ này"
+silenceThisInstance: "Máy chủ im lặng"
+mediaSilenceThisInstance: "Tắt nội dung đa phương tiện từ máy chủ này"
operations: "Vận hành"
software: "Phần má»m"
version: "Phiên bản"
@@ -218,6 +237,12 @@ clearCachedFiles: "Xóa bộ nhớ đệm"
clearCachedFilesConfirm: "Bạn có chắc muốn xóa sạch bộ nhớ đệm?"
blockedInstances: "Máy chủ đã chặn"
blockedInstancesDescription: "Danh sách những máy chủ bạn muốn chặn. Chúng sẽ không thể giao tiếp với máy chủy này nữa."
+silencedInstances: "Máy chủ im lặng"
+silencedInstancesDescription: "Äặt máy chá»§ mà bạn muốn tắt tiếng, phân tách bằng dấu xuống dòng. Tất cả tài khoản trên máy chá»§ bị tắt tiếng sẽ được coi là \"bị tắt tiếng\" và má»i hành động theo dõi sẽ được coi là yêu cầu. Không có tác dụng vá»›i những trưá»ng hợp bị chặn."
+mediaSilencedInstances: "Các máy chủ đã tắt nội dung đa phương tiện "
+mediaSilencedInstancesDescription: "Äặt máy chá»§ mà bạn muốn tắt ná»™i dung Ä‘a phương tiện, phân tách bằng dấu xuống dòng. Tất cả tài khoản trên máy chá»§ bị tắt tiếng sẽ được coi là \"nhạy cảm\" và biểu tượng cảm xúc tùy chỉnh sẽ không thể được sá»­ dụng. Không có tác dụng vá»›i những trưá»ng hợp bị chặn."
+federationAllowedHosts: "Các máy chủ được phép liên kết"
+federationAllowedHostsDescription: "Äiá»n tên các máy chá»§ mà bạn muốn cho phép liên kết, cách nhau bởi dấu xuống dòng"
muteAndBlock: "Ẩn và Chặn"
mutedUsers: "Ngưá»i đã ẩn"
blockedUsers: "Ngưá»i đã chặn"
@@ -254,8 +279,8 @@ more: "Thêm nữa!"
featured: "Nổi bật"
usernameOrUserId: "Tên ngưá»i dùng hoặc ID"
noSuchUser: "Không tìm thấy ngưá»i dùng"
-lookup: "Tìm kiếm"
-announcements: "Thông báo"
+lookup: "Tra cứu"
+announcements: "Thông báo máy chủ"
imageUrl: "URL ảnh"
remove: "Xóa"
removed: "Äã xóa"
@@ -276,6 +301,7 @@ uploadFromUrlMayTakeTime: "Sẽ mất má»™t khoảng thá»i gian để tải lê
explore: "Khám phá"
messageRead: "Äã Ä‘á»c"
noMoreHistory: "Không còn gì để Ä‘á»c"
+startChat: "Bắt đầu trò chuyện"
nUsersRead: "Ä‘á»c bởi {n}"
agreeTo: "Tôi đồng ý {0}"
agree: "Äồng ý"
@@ -306,6 +332,7 @@ selectFile: "Chá»n tập tin"
selectFiles: "Chá»n nhiá»u tập tin"
selectFolder: "Chá»n thư mục"
selectFolders: "Chá»n nhiá»u thư mục"
+fileNotSelected: "Chưa chọn tệp nào"
renameFile: "Äổi tên tập tin"
folderName: "Tên thư mục"
createFolder: "Tạo thư mục"
@@ -313,6 +340,7 @@ renameFolder: "Äổi tên thư mục"
deleteFolder: "Xóa thư mục"
folder: "Thư mục"
addFile: "Thêm tập tin"
+showFile: "Hiển thị tập tin"
emptyDrive: "Ổ đĩa của bạn trống trơn"
emptyFolder: "Thư mục trống"
unableToDelete: "Không thể xóa"
@@ -396,6 +424,7 @@ antennaExcludeBots: "Loại trừ các tài khoản bot"
antennaKeywordsDescription: "Phân cách bằng dấu cách cho Ä‘iá»u kiện AND hoặc bằng xuống dòng cho Ä‘iá»u kiện OR."
notifyAntenna: "Thông báo có tút mới"
withFileAntenna: "Chỉ những tút có media"
+excludeNotesInSensitiveChannel: "Không hiển thị trong kênh nhạy cảm"
enableServiceworker: "Bật ServiceWorker"
antennaUsersDescription: "Liệt kê má»—i hàng má»™t tên ngưá»i dùng"
caseSensitive: "Trưá»ng hợp nhạy cảm"
@@ -426,6 +455,7 @@ totpDescription: "Nhắn mã OTP bằng ứng dụng xác thực"
moderator: "Kiểm duyệt viên"
moderation: "Kiểm duyệt"
moderationNote: "Ghi chú kiểm duyệt"
+moderationNoteDescription: "Bạn có thể Ä‘iá»n vào những ghi chú chỉ được chia sẻ giữa những ngưá»i kiểm duyệt."
addModerationNote: "Thêm ghi chú kiểm duyệt"
moderationLogs: "Nhật kí quản trị"
nUsersMentioned: "Dùng bởi {n} ngưá»i"
@@ -463,6 +493,7 @@ quoteQuestion: "Trích dẫn lại?"
attachAsFileQuestion: "Văn bản ở trong bộ nhớ tạm rất dài. Bạn có muốn đăng nó dưới dạng một tệp văn bản không?"
onlyOneFileCanBeAttached: "Bạn chỉ có thể đính kèm một tập tin"
signinRequired: "Vui lòng đăng nhập"
+signinOrContinueOnRemote: "Äể tiếp tục, bạn cần chuyển máy chá»§ hoặc đăng nhập/đăng ký ở máy chá»§ này."
invitations: "Má»i"
invitationCode: "Mã má»i"
checking: "Äang kiểm tra..."
@@ -484,7 +515,12 @@ uiLanguage: "Ngôn ngữ giao diện"
aboutX: "Giới thiệu {x}"
emojiStyle: "Kiểu cách Emoji"
native: "Bản xứ"
+menuStyle: "Kiểu Menu"
+style: "Phong cách"
+drawer: "Ngăn ứng dụng"
+popup: "Cửa sổ bật lên"
showNoteActionsOnlyHover: "Chỉ hiển thị các hành động ghi chú khi di chuột"
+showReactionsCount: "Hiển thị số reaction trong bài đăng"
noHistory: "Không có dữ liệu"
signinHistory: "Lịch sử đăng nhập"
enableAdvancedMfm: "Xem bài MFM chất lượng cao."
@@ -497,6 +533,7 @@ createAccount: "Tạo tài khoản"
existingAccount: "Tài khoản hiện có"
regenerate: "Tạo lại"
fontSize: "Cỡ chữ"
+mediaListWithOneImageAppearance: "Chiá»u cao cá»§a danh sách ná»™i dung đã phương tiện mà chỉ có má»™t hình ảnh"
limitTo: "Giới hạn tỷ lệ {x}"
noFollowRequests: "Bạn không có yêu cầu theo dõi nào"
openImageInNewTab: "Mở ảnh trong tab mới"
@@ -531,10 +568,12 @@ objectStorageUseSSLDesc: "Tắt nếu bạn không dùng HTTPS để kết nối
objectStorageUseProxy: "Kết nối thông qua Proxy"
objectStorageUseProxyDesc: "Tắt nếu bạn không dùng Proxy để kết nối API"
objectStorageSetPublicRead: "Äặt \"public-read\" khi tải lên"
+s3ForcePathStyleDesc: "Nếu s3ForcePathStyle được bật, tên bucket phải được thêm vào địa chỉ URL thay vì chỉ có tên miá»n. Bạn có thể phải sá»­ dụng thiết lập này nếu bạn sá»­ dụng các dịch vụ như Minio mà bạn tá»± cung cấp."
serverLogs: "Nhật ký máy chủ"
deleteAll: "Xóa tất cả"
showFixedPostForm: "Hiện khung soạn tút ở phía trên bảng tin"
showFixedPostFormInChannel: "Hiển thị mẫu bài đăng ở phía trên bản tin"
+withRepliesByDefaultForNewlyFollowed: "Mặc định hiển thị trả lá»i từ những ngưá»i dùng má»›i theo dõi trong dòng thá»i gian"
newNoteRecived: "Äã nhận tút má»›i"
sounds: "Âm thanh"
sound: "Âm thanh"
@@ -545,7 +584,9 @@ popout: "Pop-out"
volume: "Âm lượng"
masterVolume: "Âm thanh chung"
notUseSound: "Tắt tiếng"
+useSoundOnlyWhenActive: "Chỉ phát âm thanh khi Misskey đang được hiển thị"
details: "Chi tiết"
+renoteDetails: "Tìm hiểu thêm vỠđăng lại "
chooseEmoji: "Chá»n emoji"
unableToProcess: "Không thể hoàn tất hành động"
recentUsed: "Sử dụng gần đây"
@@ -561,6 +602,7 @@ ascendingOrder: "Tăng dần"
descendingOrder: "Giảm dần"
scratchpad: "Scratchpad"
scratchpadDescription: "Scratchpad cung cấp môi trưá»ng cho các thá»­ nghiệm AiScript. Bạn có thể viết, thá»±c thi và kiểm tra kết quả tương tác vá»›i Misskey trong đó."
+uiInspector: "Trình kiểm tra UI"
output: "Nguồn ra"
script: "Kịch bản"
disablePagesScript: "Tắt AiScript trên Trang"
@@ -619,6 +661,7 @@ medium: "Vừa"
small: "Nhá»"
generateAccessToken: "Tạo mã truy cập"
permission: "Cho phép "
+adminPermission: "Quyá»n quản trị viên"
enableAll: "Bật toàn bộ"
disableAll: "Tắt toàn bộ"
tokenRequested: "Cấp quyá»n truy cập vào tài khoản"
@@ -640,13 +683,19 @@ smtpSecure: "Dùng SSL/TLS ngầm định cho các kết nối SMTP"
smtpSecureInfo: "Tắt cái này nếu dùng STARTTLS"
testEmail: "Kiểm tra vận chuyển email"
wordMute: "Ẩn chữ"
+wordMuteDescription: "Thu nhỠcác bài đăng chứa các từ hoặc cụm từ nhất định. Các bài đăng này có thể được hiển thị khi click vào."
+hardWordMute: "Ẩn cụm từ hoàn toàn"
+showMutedWord: "Hiển thị từ đã ẩn"
+hardWordMuteDescription: "Ẩn hoàn toàn các bài đăng chứa từ hoặc cụm từ. Khác với mute, bài đăng sẽ bị ẩn hoàn toàn."
regexpError: "Lỗi biểu thức"
regexpErrorDescription: "Xảy ra lỗi biểu thức ở dòng {line} của {tab} chữ ẩn:"
instanceMute: "Những máy chủ ẩn"
userSaysSomething: "{name} nói gì đó"
+userSaysSomethingAbout: "{name} đã nói gì đó vỠ\"{word}\""
makeActive: "Kích hoạt"
display: "Hiển thị"
copy: "Sao chép"
+copiedToClipboard: "Äã sao chép vào clipboard"
metrics: "Số liệu"
overview: "Tổng quan"
logs: "Nhật ký"
@@ -661,12 +710,14 @@ useGlobalSettingDesc: "Nếu được bật, cài đặt thông báo của bạn
other: "Khác"
regenerateLoginToken: "Tạo lại mã đăng nhập"
regenerateLoginTokenDescription: "Tạo lại mã ná»™i bá»™ có thể dùng để đăng nhập. Thông thưá»ng hành động này là không cần thiết. Nếu được tạo lại, tất cả các thiết bị sẽ bị đăng xuất."
+theKeywordWhenSearchingForCustomEmoji: "Äây là từ khoá được sá»­ dụng để tìm kiếm emoji"
setMultipleBySeparatingWithSpace: "Tách nhiá»u mục nhập bằng dấu cách."
fileIdOrUrl: "ID tập tin hoặc URL"
behavior: "Thao tác"
sample: "Ví dụ"
abuseReports: "Lượt báo cáo"
reportAbuse: "Báo cáo"
+reportAbuseRenote: "Báo cáo bài đăng lại"
reportAbuseOf: "Báo cáo {name}"
fillAbuseReportDescription: "Vui lòng Ä‘iá»n thông tin chi tiết vá» báo cáo này. Nếu đó là vá» má»™t tút cụ thể, hãy kèm theo URL cá»§a tút."
abuseReported: "Báo cáo đã được gá»­i. Cảm Æ¡n bạn nhiá»u."
@@ -716,6 +767,7 @@ lockedAccountInfo: "Ghi chú của bạn sẽ hiển thị với bất kỳ ai,
alwaysMarkSensitive: "Luôn đánh dấu NSFW"
loadRawImages: "Tải ảnh gốc thay vì ảnh thu nhá»"
disableShowingAnimatedImages: "Không phát ảnh động"
+highlightSensitiveMedia: "Äánh dấu ná»™i dung nhạy cảm"
verificationEmailSent: "Một email xác minh đã được gửi. Vui lòng nhấn vào liên kết đính kèm để hoàn tất xác minh."
notSet: "Chưa đặt"
emailVerified: "Email đã được xác minh"
@@ -809,6 +861,7 @@ administration: "Quản lý"
accounts: "Tài khoản của bạn"
switch: "Chuyển đổi"
noMaintainerInformationWarning: "Chưa thiết lập thông tin vận hành."
+noInquiryUrlWarning: "Äịa chỉ há»i đáp chưa được đặt"
noBotProtectionWarning: "Bảo vệ Bot chưa thiết lập."
configure: "Thiết lập"
postToGallery: "Tạo tút có ảnh"
@@ -873,6 +926,7 @@ followersVisibility: "Hiển thị ngưá»i theo dõi"
continueThread: "Tiếp tục xem chuỗi tút"
deleteAccountConfirm: "Äiá»u này sẽ khiến tài khoản bị xóa vÄ©nh viá»…n. Vẫn tiếp tục?"
incorrectPassword: "Sai mật khẩu."
+incorrectTotp: "Mã OTP không đúng hoặc đã quá hạn"
voteConfirm: "Xác nhận bình chá»n \"{choice}\"?"
hide: "Ẩn"
useDrawerReactionPickerForMobile: "Hiện bá»™ chá»n biểu cảm dạng xổ ra trên Ä‘iện thoại"
@@ -897,6 +951,9 @@ oneHour: "1 giá»"
oneDay: "1 ngày"
oneWeek: "1 tuần"
oneMonth: "1 tháng"
+threeMonths: "3 tháng"
+oneYear: "1 năm"
+threeDays: "3 ngày "
reflectMayTakeTime: "Có thể mất má»™t thá»i gian để Ä‘iá»u này được áp dụng."
failedToFetchAccountInformation: "Không thể lấy thông tin tài khoản"
rateLimitExceeded: "Giới hạn quá mức"
@@ -921,6 +978,7 @@ document: "Tài liệu"
numberOfPageCache: "Số lượng trang bộ nhớ đệm"
numberOfPageCacheDescription: "Việc tăng con số này sẽ cải thiện sá»± thuận tiện cho ngưá»i dùng nhưng gây ra nhiá»u áp lá»±c hÆ¡n cho máy chá»§ cÅ©ng như sá»­ dụng nhiá»u bá»™ nhá»› hÆ¡n."
logoutConfirm: "Bạn có chắc muốn đăng xuất?"
+logoutWillClearClientData: "Äăng xuất sẽ xoá các thiết lập cá»§a bạn khá»i trình duyệt. Äể có thể khôi phục thiết lập khi đăng nhập lại, bạn phải bật tá»± động sao lưu cài đặt."
lastActiveDate: "Lần cuối vào"
statusbar: "Thanh trạng thái"
pleaseSelect: "Chá»n má»™t lá»±a chá»n"
@@ -970,6 +1028,7 @@ neverShow: "Không hiển thị nữa"
remindMeLater: "Äể sau"
didYouLikeMisskey: "Bạn có ưa thích Mískey không?"
pleaseDonate: "Misskey là phần má»m miá»…n phí mà {host} Ä‘ang sá»­ dụng. Xin mong bạn quyên góp cho chúng tôi để chúng tôi có thể tiếp tục phát triển dịch vụ này. Xin cảm Æ¡n!!"
+correspondingSourceIsAvailable: "Mã nguồn có thể được xem tại {anchor}"
roles: "Vai trò"
role: "Vai trò"
noRole: "Bạn chưa được cấp quyá»n."
@@ -997,23 +1056,41 @@ thisPostMayBeAnnoyingHome: "Äăng trên trang chính"
thisPostMayBeAnnoyingCancel: "Từ chối"
thisPostMayBeAnnoyingIgnore: "Äăng bài để nguyên"
collapseRenotes: "Không hiển thị bài viết đã từng xem"
+collapseRenotesDescription: "Các bài đăng bị thu gá»n mà bạn đã phản hồi hoặc đăng lại trước đây."
internalServerError: "Lỗi trong chủ máy"
internalServerErrorDescription: "Trong chủ máy lỗi bất ngỠxảy ra"
copyErrorInfo: "Sao chép thông tin lỗi"
joinThisServer: "Äăng ký trên chá»§ máy này"
exploreOtherServers: "Tìm chủ máy khác"
letsLookAtTimeline: "Thá»­ xem Timeline"
+disableFederationConfirm: "Bạn có muốn làm Ä‘iá»u đó mà không cần liên minh không?"
+disableFederationConfirmWarn: "Ngay cả khi bị trì hoãn, bài đăng vẫn sẽ tiếp tục là công khai trừ khi được thiết lập khác. Bạn thưá»ng không cần phải làm Ä‘iá»u này."
disableFederationOk: "Vô hiệu hoá"
+invitationRequiredToRegister: "Phiên bản này chỉ dành cho ngưá»i được má»i. Bạn phải nhập mã má»i hợp lệ để đăng ký."
emailNotSupported: "Máy chủ này không hỗ trợ gửi email"
postToTheChannel: "Äăng lên kênh"
cannotBeChangedLater: "Không thể thay đổi sau này."
+reactionAcceptance: "Phản ứng chấp nhận"
likeOnly: "Chỉ lượt thích"
+likeOnlyForRemote: "Tất cả (chỉ bao gồm lượt thích trên các máy chủ khác)"
+nonSensitiveOnly: "Chỉ nội dung không nhạy cảm"
+nonSensitiveOnlyForLocalLikeOnlyForRemote: "Chỉ nội dung không nhạy cảm (chỉ bao gồm lượt thích từ máy chủ khác)"
rolesAssignedToMe: "Vai trò được giao cho tôi"
resetPasswordConfirm: "Bạn thực sự muốn đặt lại mật khẩu?"
sensitiveWords: "Các từ nhạy cảm"
+sensitiveWordsDescription: "Phạm vi cá»§a tất cả bài đăng chứa các từ được cấu hình sẽ tá»± động được đặt vá» \"Home\". Ban có thể thêm nhiá»u từ trên má»—i dòng."
+sensitiveWordsDescription2: "Sử dụng dấu cách sẽ tạo cấu trúc AND và thêm dấu gạch xuôi để sử dụng như một regex."
prohibitedWords: "Các từ bị cấm"
+prohibitedWordsDescription: "Hiển thị lá»—i khi đăng má»™t bài đăng chứa các từ sau. Nhiá»u từ có thể được thêm bằng cách viết má»™t từ trên má»—i dòng."
+prohibitedWordsDescription2: "Sử dụng dấu cách sẽ tạo cấu trúc AND và thêm dấu gạch xuôi để sử dụng như một regex."
+hiddenTags: "Hashtag ẩn"
+hiddenTagsDescription: "Các hashtag này sẽ không được hiển thị trên danh sách Trending. Nhiá»u tag có thể được thêm bằng cách viết má»™t tag trên má»—i dòng."
+notesSearchNotAvailable: "Tìm kiếm bài đăng hiện không khả dụng."
license: "Giấy phép"
unfavoriteConfirm: "Bạn thá»±c sá»± muốn xoá khá»i mục yêu thích?"
+myClips: "Các clip của tôi"
+drivecleaner: "Trình dá»n đĩa"
+retryAllQueuesNow: "Thá»­ lại cho tất cả hàng chá»"
retryAllQueuesConfirmTitle: "Bạn có muốn thử lại?"
retryAllQueuesConfirmText: "Äiá»u này sẽ tạm thá»i làm tăng mức độ tải cá»§a máy chá»§."
enableChartsForRemoteUser: "Tạo biểu đồ ngưá»i dùng từ xa"
@@ -1049,6 +1126,8 @@ options: "Tùy chá»n"
specifyUser: "Ngưá»i dùng chỉ định"
failedToPreviewUrl: "Không thể xem trước"
update: "Cập nhật"
+cancelReactionConfirm: "Bạn có muốn hủy phản ứng của mình không?"
+changeReactionConfirm: "Bạn có muốn thay đổi phản ứng của mình không?"
later: "Äể sau"
goToMisskey: "Tá»›i Misskey"
installed: "Äã tải xuống"
@@ -1097,6 +1176,7 @@ mutualFollow: "Theo dõi lẫn nhau"
followingOrFollower: "Äang theo dõi hoặc ngưá»i theo dõi"
externalServices: "Các dịch vụ bên ngoài"
sourceCode: "Mã nguồn"
+repositoryUrlDescription: "Nếu bạn có kho lưu trữ mã nguồn có thể truy cập công khai, hãy nhập URL. Nếu bạn đang sử dụng Misskey theo mặc định (không thực hiện bất kỳ thay đổi nào đối với mã nguồn), hãy nhập https://github.com/misskey-dev/misskey."
feedback: "Phản hồi"
feedbackUrl: "URL phản hồi"
privacyPolicy: "Chính sách bảo mật"
@@ -1113,8 +1193,18 @@ releaseToRefresh: "Thả để làm mới"
refreshing: "Äang làm má»›i"
pullDownToRefresh: "Kéo xuống để làm mới"
cwNotationRequired: "Nếu \"Ẩn nội dung\" được bật thì cần phải có chú thích."
+decorate: "Trang trí"
lastNDays: "{n} ngày trước"
+userSaysSomethingSensitive: "Bài đăng có chứa các tập tin nhạy cảm từ {name}"
surrender: "Từ chối"
+signinWithPasskey: "Äăng nhập bằng mật khẩu cá»§a bạn"
+passkeyVerificationFailed: "Xác minh mật khẩu không thành công."
+messageToFollower: "Tin nhắn cho ngưá»i theo dõi"
+yourNameContainsProhibitedWords: "Tên bạn đang cố gắng đổi có chứa chuỗi ký tự bị cấm."
+yourNameContainsProhibitedWordsDescription: "Tên có chứa chuỗi ký tự bị cấm. Nếu bạn muốn sử dụng tên này, hãy liên hệ với quản trị viên máy chủ của bạn."
+federationDisabled: "Liên kết bị vô hiệu hóa trên máy chá»§ này. Bạn không thể tương tác vá»›i ngưá»i dùng trên các máy chá»§ khác."
+reactAreYouSure: "Bạn có muốn phản hồi với \" {emoji} \" không?"
+paste: "dán"
postForm: "Mẫu đăng"
information: "Giới thiệu"
_chat:
@@ -1123,6 +1213,9 @@ _chat:
members: "Thành viên"
home: "Trang chính"
send: "Gá»­i"
+_accountSettings:
+ requireSigninToViewContents: "Yêu cầu đăng nhập để xem nội dung"
+ requireSigninToViewContentsDescription1: "Yêu cầu đăng nhập để xem tất cả ghi chú và ná»™i dung khác mà bạn tạo. Äiá»u này được kỳ vá»ng sẽ có hiệu quả trong việc ngăn chặn thông tin bị thu thập bởi các trình thu thập thông tin."
_delivery:
stop: "Äã vô hiệu hóa"
_type:
@@ -1146,8 +1239,33 @@ _initialAccountSetting:
pushNotificationDescription: "Bật thông báo đẩy sẽ cho phép bạn nhận thông báo từ {name} trực tiếp từ thiết bị của bạn."
initialAccountSettingCompleted: "Thiết lập tài khoản thành công!"
haveFun: "Hãy tận hưởng {name} nhé!"
+ youCanContinueTutorial: "Bạn có thể tiếp tục xem hướng dẫn vá» cách sá»­ dụng {name} (Misskey) hoặc bạn có thể thoát khá»i phần thiết lập tại đây và bắt đầu sá»­ dụng ngay lập tức."
+ startTutorial: "Bắt đầu hướng dẫn"
skipAreYouSure: "Bạn thực sự muốn bỠqua mục thiết lập tài khoản?"
laterAreYouSure: "Bạn thực sự muốn thiết lập tài khoản vào lúc khác?"
+_initialTutorial:
+ launchTutorial: "Bắt đầu hướng dẫn"
+ title: "Hướng dẫn"
+ wellDone: "Làm tốt!"
+ skipAreYouSure: "Thoát khá»i hướng dẫn?"
+ _landing:
+ title: "Chào mừng đến với Hướng dẫn"
+ description: "Tại đây, bạn có thể tìm hiểu những Ä‘iá»u cÆ¡ bản vá» cách sá»­ dụng Misskey và các tính năng cá»§a nó."
+ _note:
+ title: "Bài Viết là gì?"
+ description: "Các bài đăng trên Misskey được gá»i là 'Bài Viết'. Ghi chú được sắp xếp theo thứ tá»± thá»i gian trên dòng thá»i gian và được cập nhật theo thá»i gian thá»±c."
+ _timeline:
+ home: "Bạn có thể xem ghi chú từ những tài khoản bạn theo dõi."
+ local: "Bạn có thể xem ghi chú từ tất cả ngưá»i dùng trên máy chá»§ này."
+ social: "Ghi chú từ dòng thá»i gian Trang chá»§ và Äịa phương sẽ được hiển thị."
+ global: "Bạn có thể xem ghi chú từ tất cả các máy chủ được kết nối."
+ _postNote:
+ _visibility:
+ home: "Chỉ công khai trên dòng thá»i gian Trang chá»§. Những ngưá»i truy cập trang cá nhân cá»§a bạn, thông qua ngưá»i theo dõi và thông qua ghi chú lại có thể thấy thông tin đó."
+_timelineDescription:
+ home: "Trong dòng thá»i gian Trang chính, bạn có thể xem ghi chú từ các tài khoản bạn theo dõi."
+ local: "Trong dòng thá»i gian cục bá»™, bạn có thể xem ghi chú từ tất cả ngưá»i dùng trên máy chá»§ này."
+ social: "Dòng thá»i gian Xã há»™i hiển thị các ghi chú từ cả dòng thá»i gian Trang chá»§ và Äịa phương."
_serverSettings:
iconUrl: "Biểu tượng URL"
appIconResolutionMustBe: "Äá»™ phân giải tối thiểu là {resolution}."
@@ -1308,7 +1426,7 @@ _achievements:
_postedAt0min0sec:
title: "Tín hiệu báo giá»"
description: "Äăng bài vào 0 phút 0 giây"
- flavor: "Piiiiiii ÄÂY LÀ TIẾNG NÓI VIỆT NAM"
+ flavor: "Pin pop pop pop"
_selfQuote:
title: "Nói đến bản thân"
description: "Trích dẫn bài viết của mình"
@@ -1923,11 +2041,21 @@ _abuseReport:
_recipientType:
mail: "Email"
_moderationLogTypes:
+ createRole: "Tạo một vai trò"
+ deleteRole: "Xóa vai trò"
+ updateRole: "Cập nhật vai trò"
+ assignRole: "Chỉ định cho vai trò"
+ unassignRole: "BỠgán vai trò"
suspend: "Vô hiệu hóa"
+ unsuspend: "Rã đông"
resetPassword: "Äặt lại mật khẩu"
createInvitation: "Tạo lá»i má»i"
_reversi:
total: "Tổng cộng"
+_customEmojisManager:
+ _local:
+ _list:
+ confirmDeleteEmojisDescription: "Xóa các biểu tượng cảm xúc {count} đã chá»n. Bạn có muốn chạy nó không?"
_remoteLookupErrors:
_noSuchObject:
title: "Không tìm thấy"
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index 4b78b0a362..1508fca431 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -1345,6 +1345,8 @@ embed: "嵌入"
settingsMigrating: "正在è¿ç§»è®¾ç½®ï¼Œè¯·ç¨å€™ã€‚(之åŽä¹Ÿå¯ä»¥åœ¨è®¾ç½® → 其它 → è¿ç§»æ—§è®¾ç½®æ¥æ‰‹åЍè¿ç§»ï¼‰"
readonly: "åªè¯»"
goToDeck: "返回至 Deck"
+federationJobs: "è”åˆä½œä¸š"
+driveAboutTip: "网盘å¯ä»¥æ˜¾ç¤ºä»¥å‰ä¸Šä¼ çš„æ–‡ä»¶ã€‚<br>\n也å¯ä»¥åœ¨å‘å¸ƒå¸–å­æ—¶é‡å¤ä½¿ç”¨æ–‡ä»¶ï¼Œæˆ–在å‘布帖å­å‰é¢„先上传文件。<br>\n<b>删除文件时,其将从至今为止所有用到该文件的地方(如帖å­ã€é¡µé¢ã€å¤´åƒã€æ¨ªå¹…)消失。</b><br>\n也å¯ä»¥æ–°å»ºæ–‡ä»¶å¤¹æ¥æ•´ç†æ–‡ä»¶ã€‚"
_chat:
noMessagesYet: "还没有消æ¯"
newMessage: "新消æ¯"
@@ -1913,6 +1915,7 @@ _role:
canManageCustomEmojis: "管ç†è‡ªå®šä¹‰è¡¨æƒ…符å·"
canManageAvatarDecorations: "管ç†å¤´åƒæŒ‚ä»¶"
driveCapacity: "网盘容é‡"
+ maxFileSize: "å¯ä¸Šä¼ çš„æœ€å¤§æ–‡ä»¶å¤§å°"
alwaysMarkNsfw: "总是将文件标记为 NSFW"
canUpdateBioMedia: "å¯ä»¥æ›´æ–°å¤´åƒå’Œæ¨ªå¹…"
pinMax: "帖å­ç½®é¡¶æ•°é‡é™åˆ¶"
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index cfe3b729f0..152f34feeb 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -1344,6 +1344,9 @@ top: "上"
embed: "嵌入"
settingsMigrating: "正在移轉設定。請ç¨å€™â€¦â€¦ï¼ˆä¹‹å¾Œä¹Ÿå¯ä»¥åˆ°ã€Œè¨­å®š → å…¶ä»– → 舊設定資訊移轉ã€ä¸­æ‰‹å‹•進行移轉)"
readonly: "唯讀"
+goToDeck: "回去甲æ¿"
+federationJobs: "è¯é‚¦é€šè¨Šä½œæ¥­"
+driveAboutTip: "在「雲端硬碟ã€ä¸­ï¼Œæœƒé¡¯ç¤ºéŽåŽ»ä¸Šå‚³çš„æª”æ¡ˆåˆ—è¡¨ã€‚<br>\nå¯ä»¥åœ¨é™„åŠ åˆ°è²¼æ–‡æ™‚é‡æ–°åˆ©ç”¨ï¼Œæˆ–者事先上傳之後å†ç”¨æ–¼ç™¼å¸ƒã€‚<br>\n<b>請注æ„,刪除檔案後,之å‰ä½¿ç”¨éŽè©²æª”案的所有地方(貼文ã€é é¢ã€å¤§é ­è²¼ã€æ©«å¹…等)也會一併無法顯示。</b><br>\n也å¯ä»¥å»ºç«‹è³‡æ–™å¤¾ä¾†æ•´ç†æª”案。"
_chat:
noMessagesYet: "尚無訊æ¯"
newMessage: "新訊æ¯"
@@ -1913,6 +1916,7 @@ _role:
canManageCustomEmojis: "管ç†è‡ªè¨‚表情符號"
canManageAvatarDecorations: "管ç†é ­åƒè£é£¾"
driveCapacity: "雲端硬碟容é‡"
+ maxFileSize: "å¯ä¸Šå‚³çš„æœ€å¤§æª”案大å°"
alwaysMarkNsfw: "總是將檔案標記為NSFW"
canUpdateBioMedia: "å…許更新大頭貼和橫幅"
pinMax: "置頂貼文的最大數é‡"
diff --git a/package.json b/package.json
index 76ada83b4c..c6d4cd2282 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "sharkey",
- "version": "2025.4.1-alpha.2",
+ "version": "2025.4.1-beta.9",
"codename": "shonk",
"repository": {
"type": "git",
@@ -55,30 +55,30 @@
},
"dependencies": {
"cssnano": "7.0.6",
+ "esbuild": "0.25.3",
"execa": "9.5.2",
"fast-glob": "3.3.3",
+ "glob": "11.0.2",
"ignore-walk": "7.0.0",
"js-yaml": "4.1.0",
"postcss": "8.5.3",
"tar": "7.4.3",
"terser": "5.39.0",
- "typescript": "5.8.2",
- "esbuild": "0.25.0",
- "glob": "11.0.1"
+ "typescript": "5.8.3"
},
"optionalDependencies": {
- "cypress": "13.15.2"
+ "cypress": "14.3.2"
},
"devDependencies": {
"@misskey-dev/eslint-plugin": "2.1.0",
- "@types/node": "22.13.10",
- "@typescript-eslint/eslint-plugin": "8.27.0",
- "@typescript-eslint/parser": "8.27.0",
+ "@types/node": "22.15.2",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
"cross-env": "7.0.3",
- "eslint": "9.22.0",
+ "eslint": "9.25.1",
"globals": "16.0.0",
"ncp": "2.0.0",
- "pnpm": "10.6.1",
- "start-server-and-test": "2.0.10"
+ "pnpm": "10.10.0",
+ "start-server-and-test": "2.0.11"
}
}
diff --git a/packages/backend/package.json b/packages/backend/package.json
index cd8ab7121f..0d62c8a536 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -37,17 +37,17 @@
},
"optionalDependencies": {
"@swc/core-android-arm64": "1.3.11",
- "@swc/core-darwin-arm64": "1.11.18",
- "@swc/core-darwin-x64": "1.11.18",
+ "@swc/core-darwin-arm64": "1.11.22",
+ "@swc/core-darwin-x64": "1.11.22",
"@swc/core-freebsd-x64": "1.3.11",
- "@swc/core-linux-arm-gnueabihf": "1.11.18",
- "@swc/core-linux-arm64-gnu": "1.11.18",
- "@swc/core-linux-arm64-musl": "1.11.18",
- "@swc/core-linux-x64-gnu": "1.11.18",
- "@swc/core-linux-x64-musl": "1.11.18",
- "@swc/core-win32-arm64-msvc": "1.11.18",
- "@swc/core-win32-ia32-msvc": "1.11.18",
- "@swc/core-win32-x64-msvc": "1.11.18",
+ "@swc/core-linux-arm-gnueabihf": "1.11.22",
+ "@swc/core-linux-arm64-gnu": "1.11.22",
+ "@swc/core-linux-arm64-musl": "1.11.22",
+ "@swc/core-linux-x64-gnu": "1.11.22",
+ "@swc/core-linux-x64-musl": "1.11.22",
+ "@swc/core-win32-arm64-msvc": "1.11.22",
+ "@swc/core-win32-ia32-msvc": "1.11.22",
+ "@swc/core-win32-x64-msvc": "1.11.22",
"bufferutil": "4.0.9",
"slacc-android-arm-eabi": "0.0.10",
"slacc-android-arm64": "0.0.10",
@@ -65,8 +65,8 @@
"utf-8-validate": "6.0.5"
},
"dependencies": {
- "@aws-sdk/client-s3": "3.782.0",
- "@aws-sdk/lib-storage": "3.782.0",
+ "@aws-sdk/client-s3": "3.797.0",
+ "@aws-sdk/lib-storage": "3.797.0",
"@discordapp/twemoji": "15.1.0",
"@fastify/accepts": "5.0.2",
"@fastify/cookie": "11.0.2",
@@ -78,17 +78,17 @@
"@fastify/view": "10.0.2",
"@misskey-dev/sharp-read-bmp": "1.3.0",
"@misskey-dev/summaly": "5.2.1",
- "@nestjs/common": "11.0.16",
- "@nestjs/core": "11.0.15",
- "@nestjs/testing": "11.0.15",
+ "@nestjs/common": "11.1.0",
+ "@nestjs/core": "11.1.0",
+ "@nestjs/testing": "11.1.0",
"@peertube/http-signature": "1.7.0",
"@sentry/node": "8.55.0",
"@sentry/profiling-node": "8.55.0",
"@simplewebauthn/server": "12.0.0",
"@sinonjs/fake-timers": "11.3.1",
"@smithy/node-http-handler": "2.5.0",
- "@swc/cli": "0.6.0",
- "@swc/core": "1.11.18",
+ "@swc/cli": "0.7.3",
+ "@swc/core": "1.11.22",
"@transfem-org/sfm-js": "0.24.6",
"@twemoji/parser": "15.1.1",
"@types/redis-info": "3.0.3",
@@ -101,7 +101,7 @@
"bcryptjs": "2.4.3",
"blurhash": "2.0.5",
"body-parser": "1.20.3",
- "bullmq": "5.48.1",
+ "bullmq": "5.51.1",
"cacheable-lookup": "7.0.0",
"canvas": "^3.1.0",
"cbor": "9.0.2",
@@ -127,18 +127,18 @@
"hpagent": "1.2.0",
"htmlescape": "1.1.1",
"http-link-header": "1.1.3",
- "ioredis": "5.6.0",
+ "ioredis": "5.6.1",
"ip-cidr": "4.0.2",
"ipaddr.js": "2.2.0",
"is-svg": "5.1.0",
"js-yaml": "4.1.0",
- "jsdom": "26.0.0",
+ "jsdom": "26.1.0",
"json5": "2.2.3",
"jsonld": "8.3.3",
"jsrsasign": "11.1.0",
"juice": "11.0.1",
"megalodon": "workspace:*",
- "meilisearch": "0.49.0",
+ "meilisearch": "0.50.0",
"microformats-parser": "2.0.2",
"mime-types": "2.1.35",
"misskey-js": "workspace:*",
@@ -148,14 +148,14 @@
"nanoid": "5.1.5",
"nested-property": "4.0.0",
"node-fetch": "3.3.2",
- "nodemailer": "6.10.0",
+ "nodemailer": "6.10.1",
"oauth": "0.10.2",
"oauth2orize": "1.12.0",
"oauth2orize-pkce": "0.1.2",
"os-utils": "0.0.14",
"otpauth": "9.4.0",
- "parse5": "7.2.1",
- "pg": "8.14.1",
+ "parse5": "7.3.0",
+ "pg": "8.15.6",
"pkce-challenge": "4.1.0",
"probe-image-size": "7.2.3",
"promise-limit": "2.7.0",
@@ -172,7 +172,7 @@
"rename": "1.0.4",
"rss-parser": "3.13.0",
"rxjs": "7.8.2",
- "sanitize-html": "2.15.0",
+ "sanitize-html": "2.16.0",
"secure-json-parse": "3.0.2",
"sharp": "0.34.1",
"slacc": "0.0.10",
@@ -194,10 +194,10 @@
},
"devDependencies": {
"@jest/globals": "29.7.0",
- "@nestjs/platform-express": "10.4.15",
- "@sentry/vue": "9.12.0",
+ "@nestjs/platform-express": "10.4.17",
+ "@sentry/vue": "9.14.0",
"@simplewebauthn/types": "12.0.0",
- "@swc/jest": "0.2.37",
+ "@swc/jest": "0.2.38",
"@types/accepts": "1.3.7",
"@types/archiver": "6.0.3",
"@types/bcryptjs": "2.4.6",
@@ -214,12 +214,12 @@
"@types/jsrsasign": "10.5.15",
"@types/mime-types": "2.1.4",
"@types/ms": "0.7.34",
- "@types/node": "22.14.0",
+ "@types/node": "22.15.2",
"@types/nodemailer": "6.4.17",
"@types/oauth": "0.9.6",
"@types/oauth2orize": "1.11.5",
"@types/oauth2orize-pkce": "0.1.2",
- "@types/pg": "8.11.11",
+ "@types/pg": "8.11.14",
"@types/proxy-addr": "^2.0.3",
"@types/pug": "2.0.10",
"@types/qrcode": "1.5.5",
@@ -230,14 +230,15 @@
"@types/semver": "7.7.0",
"@types/simple-oauth2": "5.0.7",
"@types/sinonjs__fake-timers": "8.1.5",
+ "@types/supertest": "6.0.3",
"@types/tinycolor2": "1.4.6",
"@types/tmp": "0.2.6",
"@types/uuid": "^9.0.4",
"@types/vary": "1.1.3",
"@types/web-push": "3.6.4",
"@types/ws": "8.18.1",
- "@typescript-eslint/eslint-plugin": "8.29.1",
- "@typescript-eslint/parser": "8.29.1",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
"aws-sdk-client-mock": "4.1.0",
"cross-env": "7.0.3",
"eslint-plugin-import": "2.31.0",
@@ -245,8 +246,9 @@
"fkill": "9.0.0",
"jest": "29.7.0",
"jest-mock": "29.7.0",
- "nodemon": "3.1.9",
+ "nodemon": "3.1.10",
"pid-port": "1.0.2",
- "simple-oauth2": "5.1.0"
+ "simple-oauth2": "5.1.0",
+ "supertest": "7.1.0"
}
}
diff --git a/packages/backend/src/core/DriveService.ts b/packages/backend/src/core/DriveService.ts
index 4be1b0e41b..bb76b680a4 100644
--- a/packages/backend/src/core/DriveService.ts
+++ b/packages/backend/src/core/DriveService.ts
@@ -515,9 +515,16 @@ export class DriveService {
const policies = await this.roleService.getUserPolicies(user.id);
const driveCapacity = 1024 * 1024 * policies.driveCapacityMb;
+ const maxFileSize = 1024 * 1024 * policies.maxFileSizeMb;
this.registerLogger.debug('drive capacity override applied');
this.registerLogger.debug(`overrideCap: ${driveCapacity}bytes, usage: ${usage}bytes, u+s: ${usage + info.size}bytes`);
+ if (maxFileSize < info.size) {
+ if (isLocalUser) {
+ throw new IdentifiableError('f9e4e5f3-4df4-40b5-b400-f236945f7073', 'Max file size exceeded.');
+ }
+ }
+
// If usage limit exceeded
if (driveCapacity < usage + info.size) {
if (isLocalUser) {
diff --git a/packages/backend/src/core/FanoutTimelineEndpointService.ts b/packages/backend/src/core/FanoutTimelineEndpointService.ts
index 84ca06ec1e..af2723e99d 100644
--- a/packages/backend/src/core/FanoutTimelineEndpointService.ts
+++ b/packages/backend/src/core/FanoutTimelineEndpointService.ts
@@ -8,10 +8,12 @@ import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import type { MiUser } from '@/models/User.js';
import type { MiNote } from '@/models/Note.js';
+import type { MiMeta } from '@/models/Meta.js';
import { Packed } from '@/misc/json-schema.js';
import type { NotesRepository } from '@/models/_.js';
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
import { FanoutTimelineName, FanoutTimelineService } from '@/core/FanoutTimelineService.js';
+import { UtilityService } from '@/core/UtilityService.js';
import { isUserRelated } from '@/misc/is-user-related.js';
import { isQuote, isRenote } from '@/misc/is-renote.js';
import { CacheService } from '@/core/CacheService.js';
@@ -30,6 +32,7 @@ type TimelineOptions = {
alwaysIncludeMyNotes?: boolean;
ignoreAuthorFromBlock?: boolean;
ignoreAuthorFromMute?: boolean;
+ ignoreAuthorFromInstanceBlock?: boolean;
excludeNoFiles?: boolean;
excludeReplies?: boolean;
excludeBots?: boolean;
@@ -43,9 +46,13 @@ export class FanoutTimelineEndpointService {
@Inject(DI.notesRepository)
private notesRepository: NotesRepository,
+ @Inject(DI.meta)
+ private meta: MiMeta,
+
private noteEntityService: NoteEntityService,
private cacheService: CacheService,
private fanoutTimelineService: FanoutTimelineService,
+ private utilityService: UtilityService,
) {
}
@@ -125,6 +132,19 @@ export class FanoutTimelineEndpointService {
};
}
+ {
+ const parentFilter = filter;
+ filter = (note) => {
+ if (!ps.ignoreAuthorFromInstanceBlock) {
+ if (this.utilityService.isBlockedHost(this.meta.blockedHosts, note.userHost)) return false;
+ }
+ if (note.userId !== note.renoteUserId && this.utilityService.isBlockedHost(this.meta.blockedHosts, note.renoteUserHost)) return false;
+ if (note.userId !== note.replyUserId && this.utilityService.isBlockedHost(this.meta.blockedHosts, note.replyUserHost)) return false;
+
+ return parentFilter(note);
+ };
+ }
+
const redisTimeline: MiNote[] = [];
let readFromRedis = 0;
let lastSuccessfulRate = 1; // rateをキャッシュã™ã‚‹ï¼Ÿ
diff --git a/packages/backend/src/core/ImageProcessingService.ts b/packages/backend/src/core/ImageProcessingService.ts
index 6f978b34c8..6f60475442 100644
--- a/packages/backend/src/core/ImageProcessingService.ts
+++ b/packages/backend/src/core/ImageProcessingService.ts
@@ -34,6 +34,7 @@ export const webpDefault: sharp.WebpOptions = {
smartSubsample: true,
mixed: true,
effort: 2,
+ loop: 0,
};
export const avifDefault: sharp.AvifOptions = {
diff --git a/packages/backend/src/core/QueryService.ts b/packages/backend/src/core/QueryService.ts
index c611fe5f1e..fb4335b55d 100644
--- a/packages/backend/src/core/QueryService.ts
+++ b/packages/backend/src/core/QueryService.ts
@@ -7,7 +7,7 @@ import { Inject, Injectable } from '@nestjs/common';
import { Brackets, ObjectLiteral } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type { MiUser } from '@/models/User.js';
-import type { UserProfilesRepository, FollowingsRepository, ChannelFollowingsRepository, BlockingsRepository, NoteThreadMutingsRepository, MutingsRepository, RenoteMutingsRepository } from '@/models/_.js';
+import type { UserProfilesRepository, FollowingsRepository, ChannelFollowingsRepository, BlockingsRepository, NoteThreadMutingsRepository, MutingsRepository, RenoteMutingsRepository, MiMeta } from '@/models/_.js';
import { bindThis } from '@/decorators.js';
import { IdService } from '@/core/IdService.js';
import type { SelectQueryBuilder } from 'typeorm';
@@ -36,6 +36,9 @@ export class QueryService {
@Inject(DI.renoteMutingsRepository)
private renoteMutingsRepository: RenoteMutingsRepository,
+ @Inject(DI.meta)
+ private meta: MiMeta,
+
private idService: IdService,
) {
}
@@ -251,4 +254,37 @@ export class QueryService {
q.setParameters(mutingQuery.getParameters());
}
+
+ @bindThis
+ public generateBlockedHostQueryForNote(q: SelectQueryBuilder<any>, excludeAuthor?: boolean): void {
+ let nonBlockedHostQuery: (part: string) => string;
+ if (this.meta.blockedHosts.length === 0) {
+ nonBlockedHostQuery = () => '1=1';
+ } else {
+ nonBlockedHostQuery = (match: string) => `${match} NOT ILIKE ALL(ARRAY[:...blocked])`;
+ q.setParameters({ blocked: this.meta.blockedHosts.flatMap(x => [x, `%.${x}`]) });
+ }
+
+ if (excludeAuthor) {
+ const instanceSuspension = (user: string) => new Brackets(qb => qb
+ .where(`note.${user}Id IS NULL`) // no corresponding user
+ .orWhere(`note.userId = note.${user}Id`)
+ .orWhere(`note.${user}Host IS NULL`) // local
+ .orWhere(nonBlockedHostQuery(`note.${user}Host`)));
+
+ q
+ .andWhere(instanceSuspension('replyUser'))
+ .andWhere(instanceSuspension('renoteUser'));
+ } else {
+ const instanceSuspension = (user: string) => new Brackets(qb => qb
+ .where(`note.${user}Id IS NULL`) // no corresponding user
+ .orWhere(`note.${user}Host IS NULL`) // local
+ .orWhere(nonBlockedHostQuery(`note.${user}Host`)));
+
+ q
+ .andWhere(instanceSuspension('user'))
+ .andWhere(instanceSuspension('replyUser'))
+ .andWhere(instanceSuspension('renoteUser'));
+ }
+ }
}
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts
index 8b98680f4c..229781c079 100644
--- a/packages/backend/src/core/RoleService.ts
+++ b/packages/backend/src/core/RoleService.ts
@@ -48,6 +48,7 @@ export type RolePolicies = {
canUseTranslator: boolean;
canHideAds: boolean;
driveCapacityMb: number;
+ maxFileSizeMb: number;
alwaysMarkNsfw: boolean;
canUpdateBioMedia: boolean;
pinLimit: number;
@@ -86,6 +87,7 @@ export const DEFAULT_POLICIES: RolePolicies = {
canUseTranslator: true,
canHideAds: false,
driveCapacityMb: 100,
+ maxFileSizeMb: 10,
alwaysMarkNsfw: false,
canUpdateBioMedia: true,
pinLimit: 5,
@@ -399,6 +401,7 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit {
canUseTranslator: calc('canUseTranslator', vs => vs.some(v => v === true)),
canHideAds: calc('canHideAds', vs => vs.some(v => v === true)),
driveCapacityMb: calc('driveCapacityMb', vs => Math.max(...vs)),
+ maxFileSizeMb: calc('maxFileSizeMb', vs => Math.max(...vs)),
alwaysMarkNsfw: calc('alwaysMarkNsfw', vs => vs.some(v => v === true)),
canUpdateBioMedia: calc('canUpdateBioMedia', vs => vs.some(v => v === true)),
pinLimit: calc('pinLimit', vs => Math.max(...vs)),
diff --git a/packages/backend/src/core/SearchService.ts b/packages/backend/src/core/SearchService.ts
index e17677bcb5..37238dc4b0 100644
--- a/packages/backend/src/core/SearchService.ts
+++ b/packages/backend/src/core/SearchService.ts
@@ -300,6 +300,7 @@ export class SearchService {
}
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
if (me) this.queryService.generateMutedUserQueryForNotes(query, me);
if (me) this.queryService.generateBlockedUserQueryForNotes(query, me);
@@ -366,9 +367,14 @@ export class SearchService {
this.cacheService.userBlockedCache.fetch(me.id),
])
: [new Set<string>(), new Set<string>()];
- const notes = (await this.notesRepository.findBy({
- id: In(res.hits.map(x => x.id)),
- })).filter(note => {
+
+ const query = this.notesRepository.createQueryBuilder('note');
+
+ query.where('note.id IN (:...noteIds)', { noteIds: res.hits.map(x => x.id) });
+
+ this.queryService.generateBlockedHostQueryForNote(query);
+
+ const notes = (await query.getMany()).filter(note => {
if (me && isUserRelated(note, userIdsWhoBlockingMe)) return false;
if (me && isUserRelated(note, userIdsWhoMeMuting)) return false;
return true;
diff --git a/packages/backend/src/models/json-schema/role.ts b/packages/backend/src/models/json-schema/role.ts
index 9e95684f67..307c114c96 100644
--- a/packages/backend/src/models/json-schema/role.ts
+++ b/packages/backend/src/models/json-schema/role.ts
@@ -228,6 +228,10 @@ export const packedRolePoliciesSchema = {
type: 'integer',
optional: false, nullable: false,
},
+ maxFileSizeMb: {
+ type: 'integer',
+ optional: false, nullable: false,
+ },
alwaysMarkNsfw: {
type: 'boolean',
optional: false, nullable: false,
diff --git a/packages/backend/src/server/ServerService.ts b/packages/backend/src/server/ServerService.ts
index dce47e2290..5857b3059e 100644
--- a/packages/backend/src/server/ServerService.ts
+++ b/packages/backend/src/server/ServerService.ts
@@ -75,7 +75,7 @@ export class ServerService implements OnApplicationShutdown {
}
@bindThis
- public async launch(): Promise<void> {
+ public async launch() {
const fastify = Fastify({
trustProxy: true,
logger: false,
@@ -135,8 +135,8 @@ export class ServerService implements OnApplicationShutdown {
reply.header('content-type', 'text/plain; charset=utf-8');
reply.header('link', `<${encodeURI(location)}>; rel="canonical"`);
done(null, [
- "Refusing to relay remote ActivityPub object lookup.",
- "",
+ 'Refusing to relay remote ActivityPub object lookup.',
+ '',
`Please remove 'application/activity+json' and 'application/ld+json' from the Accept header or fetch using the authoritative URL at ${location}.`,
].join('\n'));
});
@@ -304,6 +304,7 @@ export class ServerService implements OnApplicationShutdown {
}
await fastify.ready();
+ return fastify;
}
@bindThis
diff --git a/packages/backend/src/server/api/ApiCallService.ts b/packages/backend/src/server/api/ApiCallService.ts
index b22a8c1837..1b8d33f9c9 100644
--- a/packages/backend/src/server/api/ApiCallService.ts
+++ b/packages/backend/src/server/api/ApiCallService.ts
@@ -6,8 +6,11 @@
import { randomUUID } from 'node:crypto';
import * as fs from 'node:fs';
import * as stream from 'node:stream/promises';
+import { Transform } from 'node:stream';
+import { type MultipartFile } from '@fastify/multipart';
import { Inject, Injectable } from '@nestjs/common';
import * as Sentry from '@sentry/node';
+import { AttachmentFile } from '@/server/api/endpoint-base.js';
import { DI } from '@/di-symbols.js';
import { getIpHash } from '@/misc/get-ip-hash.js';
import type { MiLocalUser, MiUser } from '@/models/User.js';
@@ -16,7 +19,7 @@ import type Logger from '@/logger.js';
import type { MiMeta, UserIpsRepository } from '@/models/_.js';
import { createTemp } from '@/misc/create-temp.js';
import { bindThis } from '@/decorators.js';
-import { RoleService } from '@/core/RoleService.js';
+import { type RolePolicies, RoleService } from '@/core/RoleService.js';
import type { Config } from '@/config.js';
import { sendRateLimitHeaders } from '@/misc/rate-limit-utils.js';
import { SkRateLimiterService } from '@/server/SkRateLimiterService.js';
@@ -191,18 +194,6 @@ export class ApiCallService implements OnApplicationShutdown {
return;
}
- const [path, cleanup] = await createTemp();
- await stream.pipeline(multipartData.file, fs.createWriteStream(path));
-
- // ファイルサイズãŒåˆ¶é™ã‚’è¶…ãˆã¦ã„ãŸå ´åˆ
- // ãªãŠ truncated ã¯ã‚¹ãƒˆãƒªãƒ¼ãƒ ã‚’読ã¿åˆ‡ã£ã¦ã‹ã‚‰ã§ãªã„ã¨æ©Ÿèƒ½ã—ãªã„ãŸã‚ã€stream.pipeline より後ã«ã‚ã‚‹å¿…è¦ãŒã‚ã‚‹
- if (multipartData.file.truncated) {
- cleanup();
- reply.code(413);
- reply.send();
- return;
- }
-
const fields = {} as Record<string, unknown>;
for (const [k, v] of Object.entries(multipartData.fields)) {
fields[k] = typeof v === 'object' && 'value' in v ? v.value : undefined;
@@ -217,10 +208,7 @@ export class ApiCallService implements OnApplicationShutdown {
return;
}
this.authenticateService.authenticate(token).then(([user, app]) => {
- this.call(endpoint, user, app, fields, {
- name: multipartData.filename,
- path: path,
- }, request, reply).then((res) => {
+ this.call(endpoint, user, app, fields, multipartData, request, reply).then((res) => {
this.send(reply, res);
}).catch((err: ApiError) => {
this.#sendApiError(reply, err);
@@ -290,10 +278,7 @@ export class ApiCallService implements OnApplicationShutdown {
user: MiLocalUser | null | undefined,
token: MiAccessToken | null | undefined,
data: any,
- file: {
- name: string;
- path: string;
- } | null,
+ multipartFile: MultipartFile | null,
request: FastifyRequest<{ Body: Record<string, unknown> | undefined, Querystring: Record<string, unknown> }>,
reply: FastifyReply,
) {
@@ -369,6 +354,37 @@ export class ApiCallService implements OnApplicationShutdown {
}
}
+ // Cast non JSON input
+ if ((ep.meta.requireFile || request.method === 'GET') && ep.params.properties) {
+ for (const k of Object.keys(ep.params.properties)) {
+ const param = ep.params.properties![k];
+ if (['boolean', 'number', 'integer'].includes(param.type ?? '') && typeof data[k] === 'string') {
+ try {
+ data[k] = JSON.parse(data[k]);
+ } catch (e) {
+ throw new ApiError({
+ message: 'Invalid param.',
+ code: 'INVALID_PARAM',
+ id: '0b5f1631-7c1a-41a6-b399-cce335f34d85',
+ }, {
+ param: k,
+ reason: `cannot cast to ${param.type}`,
+ });
+ }
+ }
+ }
+ }
+
+ if (token && ((ep.meta.kind && !token.permission.some(p => p === ep.meta.kind))
+ || (!ep.meta.kind && (ep.meta.requireCredential || ep.meta.requireModerator || ep.meta.requireAdmin)))) {
+ throw new ApiError({
+ message: 'Your app does not have the necessary permissions to use this endpoint.',
+ code: 'PERMISSION_DENIED',
+ kind: 'permission',
+ id: '1370e5b7-d4eb-4566-bb1d-7748ee6a1838',
+ });
+ }
+
if ((ep.meta.requireModerator || ep.meta.requireAdmin) && (this.meta.rootUserId !== user!.id)) {
const myRoles = await this.roleService.getUserRoles(user!.id);
if (ep.meta.requireModerator && !myRoles.some(r => r.isModerator || r.isAdministrator)) {
@@ -402,47 +418,89 @@ export class ApiCallService implements OnApplicationShutdown {
}
}
- if (token && ((ep.meta.kind && !token.permission.some(p => p === ep.meta.kind))
- || (!ep.meta.kind && (ep.meta.requireCredential || ep.meta.requireModerator || ep.meta.requireAdmin)))) {
- throw new ApiError({
- message: 'Your app does not have the necessary permissions to use this endpoint.',
- code: 'PERMISSION_DENIED',
- kind: 'permission',
- id: '1370e5b7-d4eb-4566-bb1d-7748ee6a1838',
- });
- }
-
- // Cast non JSON input
- if ((ep.meta.requireFile || request.method === 'GET') && ep.params.properties) {
- for (const k of Object.keys(ep.params.properties)) {
- const param = ep.params.properties![k];
- if (['boolean', 'number', 'integer'].includes(param.type ?? '') && typeof data[k] === 'string') {
- try {
- data[k] = JSON.parse(data[k]);
- } catch (e) {
- throw new ApiError({
- message: 'Invalid param.',
- code: 'INVALID_PARAM',
- id: '0b5f1631-7c1a-41a6-b399-cce335f34d85',
- }, {
- param: k,
- reason: `cannot cast to ${param.type}`,
- });
- }
- }
- }
+ let attachmentFile: AttachmentFile | null = null;
+ let cleanup = () => {};
+ if (ep.meta.requireFile && request.method === 'POST' && multipartFile) {
+ const policies = await this.roleService.getUserPolicies(user!.id);
+ const result = await this.handleAttachmentFile(
+ Math.min((policies.maxFileSizeMb * 1024 * 1024), this.config.maxFileSize),
+ multipartFile,
+ );
+ attachmentFile = result.attachmentFile;
+ cleanup = result.cleanup;
}
// API invoking
if (this.config.sentryForBackend) {
return await Sentry.startSpan({
name: 'API: ' + ep.name,
- }, () => ep.exec(data, user, token, file, request.ip, request.headers)
- .catch((err: Error) => this.#onExecError(ep, data, err, user?.id)));
+ }, () => {
+ return ep.exec(data, user, token, attachmentFile, request.ip, request.headers)
+ .catch((err: Error) => this.#onExecError(ep, data, err, user?.id))
+ .finally(() => cleanup());
+ });
} else {
- return await ep.exec(data, user, token, file, request.ip, request.headers)
- .catch((err: Error) => this.#onExecError(ep, data, err, user?.id));
+ return await ep.exec(data, user, token, attachmentFile, request.ip, request.headers)
+ .catch((err: Error) => this.#onExecError(ep, data, err, user?.id))
+ .finally(() => cleanup());
+ }
+ }
+
+ @bindThis
+ private async handleAttachmentFile(
+ fileSizeLimit: number,
+ multipartFile: MultipartFile,
+ ) {
+ function createTooLongError() {
+ return new ApiError({
+ httpStatusCode: 413,
+ kind: 'client',
+ message: 'File size is too large.',
+ code: 'FILE_SIZE_TOO_LARGE',
+ id: 'ff827ce8-9b4b-4808-8511-422222a3362f',
+ });
+ }
+
+ function createLimitStream(limit: number) {
+ let total = 0;
+
+ return new Transform({
+ transform(chunk, _, callback) {
+ total += chunk.length;
+ if (total > limit) {
+ callback(createTooLongError());
+ } else {
+ callback(null, chunk);
+ }
+ },
+ });
}
+
+ const [path, cleanup] = await createTemp();
+ try {
+ await stream.pipeline(
+ multipartFile.file,
+ createLimitStream(fileSizeLimit),
+ fs.createWriteStream(path),
+ );
+
+ // ファイルサイズãŒåˆ¶é™ã‚’è¶…ãˆã¦ã„ãŸå ´åˆ
+ // ãªãŠ truncated ã¯ã‚¹ãƒˆãƒªãƒ¼ãƒ ã‚’読ã¿åˆ‡ã£ã¦ã‹ã‚‰ã§ãªã„ã¨æ©Ÿèƒ½ã—ãªã„ãŸã‚ã€stream.pipeline より後ã«ã‚ã‚‹å¿…è¦ãŒã‚ã‚‹
+ if (multipartFile.file.truncated) {
+ throw createTooLongError();
+ }
+ } catch (err) {
+ cleanup();
+ throw err;
+ }
+
+ return {
+ attachmentFile: {
+ name: multipartFile.filename,
+ path,
+ },
+ cleanup,
+ };
}
@bindThis
diff --git a/packages/backend/src/server/api/endpoint-base.ts b/packages/backend/src/server/api/endpoint-base.ts
index e061aa3a8e..b063487305 100644
--- a/packages/backend/src/server/api/endpoint-base.ts
+++ b/packages/backend/src/server/api/endpoint-base.ts
@@ -21,23 +21,23 @@ ajv.addFormat('misskey:id', /^[a-zA-Z0-9]+$/);
export type Response = Record<string, any> | void;
-type File = {
+export type AttachmentFile = {
name: string | null;
path: string;
};
// TODO: paramsã®åž‹ã‚’T['params']ã®ã‚¹ã‚­ãƒ¼ãƒžå®šç¾©ã‹ã‚‰æŽ¨è«–ã™ã‚‹
type Executor<T extends IEndpointMeta, Ps extends Schema> =
- (params: SchemaType<Ps>, user: T['requireCredential'] extends true ? MiLocalUser : MiLocalUser | null, token: MiAccessToken | null, file?: File, cleanup?: () => any, ip?: string | null, headers?: Record<string, string> | null) =>
- Promise<T['res'] extends undefined ? Response : SchemaType<NonNullable<T['res']>>>;
+ (params: SchemaType<Ps>, user: T['requireCredential'] extends true ? MiLocalUser : MiLocalUser | null, token: MiAccessToken | null, file?: AttachmentFile, cleanup?: () => any, ip?: string | null, headers?: Record<string, string> | null) =>
+ Promise<T['res'] extends undefined ? Response : SchemaType<NonNullable<T['res']>>>;
export abstract class Endpoint<T extends IEndpointMeta, Ps extends Schema> {
- public exec: (params: any, user: T['requireCredential'] extends true ? MiLocalUser : MiLocalUser | null, token: MiAccessToken | null, file?: File, ip?: string | null, headers?: Record<string, string> | null) => Promise<any>;
+ public exec: (params: any, user: T['requireCredential'] extends true ? MiLocalUser : MiLocalUser | null, token: MiAccessToken | null, file?: AttachmentFile, ip?: string | null, headers?: Record<string, string> | null) => Promise<any>;
constructor(meta: T, paramDef: Ps, cb: Executor<T, Ps>) {
const validate = ajv.compile(paramDef);
- this.exec = (params: any, user: T['requireCredential'] extends true ? MiLocalUser : MiLocalUser | null, token: MiAccessToken | null, file?: File, ip?: string | null, headers?: Record<string, string> | null) => {
+ this.exec = (params: any, user: T['requireCredential'] extends true ? MiLocalUser : MiLocalUser | null, token: MiAccessToken | null, file?: AttachmentFile, ip?: string | null, headers?: Record<string, string> | null) => {
let cleanup: undefined | (() => void) = undefined;
if (meta.requireFile) {
diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts
index 57c62b7c89..b90ba6aa0d 100644
--- a/packages/backend/src/server/api/endpoints/antennas/notes.ts
+++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts
@@ -117,6 +117,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// NOTE: センシティブ除外ã®è¨­å®šã¯ã“ã®ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆã§ã¯ç„¡è¦–ã™ã‚‹ã€‚
// https://github.com/misskey-dev/misskey/pull/15346#discussion_r1929950255
+ this.queryService.generateBlockedHostQueryForNote(query);
this.queryService.generateVisibilityQuery(query, me);
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/channels/timeline.ts b/packages/backend/src/server/api/endpoints/channels/timeline.ts
index 5fc0ae00b2..6336f43e9f 100644
--- a/packages/backend/src/server/api/endpoints/channels/timeline.ts
+++ b/packages/backend/src/server/api/endpoints/channels/timeline.ts
@@ -137,6 +137,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser')
.leftJoinAndSelect('note.channel', 'channel');
+ this.queryService.generateBlockedHostQueryForNote(query);
if (me) {
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/chat/messages/delete.ts b/packages/backend/src/server/api/endpoints/chat/messages/delete.ts
index 63b75fb6a7..52a054303b 100644
--- a/packages/backend/src/server/api/endpoints/chat/messages/delete.ts
+++ b/packages/backend/src/server/api/endpoints/chat/messages/delete.ts
@@ -16,9 +16,6 @@ export const meta = {
kind: 'write:chat',
- res: {
- },
-
errors: {
noSuchMessage: {
message: 'No such message.',
diff --git a/packages/backend/src/server/api/endpoints/chat/messages/react.ts b/packages/backend/src/server/api/endpoints/chat/messages/react.ts
index 5f61e7e992..2197e7bf80 100644
--- a/packages/backend/src/server/api/endpoints/chat/messages/react.ts
+++ b/packages/backend/src/server/api/endpoints/chat/messages/react.ts
@@ -16,9 +16,6 @@ export const meta = {
kind: 'write:chat',
- res: {
- },
-
errors: {
noSuchMessage: {
message: 'No such message.',
diff --git a/packages/backend/src/server/api/endpoints/chat/messages/unreact.ts b/packages/backend/src/server/api/endpoints/chat/messages/unreact.ts
index 6784bb6ecf..adfcd232f9 100644
--- a/packages/backend/src/server/api/endpoints/chat/messages/unreact.ts
+++ b/packages/backend/src/server/api/endpoints/chat/messages/unreact.ts
@@ -16,9 +16,6 @@ export const meta = {
kind: 'write:chat',
- res: {
- },
-
errors: {
noSuchMessage: {
message: 'No such message.',
diff --git a/packages/backend/src/server/api/endpoints/chat/rooms/delete.ts b/packages/backend/src/server/api/endpoints/chat/rooms/delete.ts
index 82a8e1f30d..1ea81448c1 100644
--- a/packages/backend/src/server/api/endpoints/chat/rooms/delete.ts
+++ b/packages/backend/src/server/api/endpoints/chat/rooms/delete.ts
@@ -16,9 +16,6 @@ export const meta = {
kind: 'write:chat',
- res: {
- },
-
errors: {
noSuchRoom: {
message: 'No such room.',
diff --git a/packages/backend/src/server/api/endpoints/chat/rooms/invitations/ignore.ts b/packages/backend/src/server/api/endpoints/chat/rooms/invitations/ignore.ts
index b8a228089b..88ea234527 100644
--- a/packages/backend/src/server/api/endpoints/chat/rooms/invitations/ignore.ts
+++ b/packages/backend/src/server/api/endpoints/chat/rooms/invitations/ignore.ts
@@ -16,9 +16,6 @@ export const meta = {
kind: 'write:chat',
- res: {
- },
-
errors: {
noSuchRoom: {
message: 'No such room.',
diff --git a/packages/backend/src/server/api/endpoints/chat/rooms/join.ts b/packages/backend/src/server/api/endpoints/chat/rooms/join.ts
index d561f9e03f..550b4da1a6 100644
--- a/packages/backend/src/server/api/endpoints/chat/rooms/join.ts
+++ b/packages/backend/src/server/api/endpoints/chat/rooms/join.ts
@@ -16,9 +16,6 @@ export const meta = {
kind: 'write:chat',
- res: {
- },
-
errors: {
noSuchRoom: {
message: 'No such room.',
diff --git a/packages/backend/src/server/api/endpoints/chat/rooms/leave.ts b/packages/backend/src/server/api/endpoints/chat/rooms/leave.ts
index a3ad0c2d6f..f99b408d67 100644
--- a/packages/backend/src/server/api/endpoints/chat/rooms/leave.ts
+++ b/packages/backend/src/server/api/endpoints/chat/rooms/leave.ts
@@ -16,9 +16,6 @@ export const meta = {
kind: 'write:chat',
- res: {
- },
-
errors: {
noSuchRoom: {
message: 'No such room.',
diff --git a/packages/backend/src/server/api/endpoints/chat/rooms/mute.ts b/packages/backend/src/server/api/endpoints/chat/rooms/mute.ts
index 11cbe7b8b9..ee60f92505 100644
--- a/packages/backend/src/server/api/endpoints/chat/rooms/mute.ts
+++ b/packages/backend/src/server/api/endpoints/chat/rooms/mute.ts
@@ -16,9 +16,6 @@ export const meta = {
kind: 'write:chat',
- res: {
- },
-
errors: {
noSuchRoom: {
message: 'No such room.',
diff --git a/packages/backend/src/server/api/endpoints/clips/notes.ts b/packages/backend/src/server/api/endpoints/clips/notes.ts
index 69ff45a1c6..59513e530d 100644
--- a/packages/backend/src/server/api/endpoints/clips/notes.ts
+++ b/packages/backend/src/server/api/endpoints/clips/notes.ts
@@ -91,6 +91,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser')
.andWhere('clipNote.clipId = :clipId', { clipId: clip.id });
+ this.queryService.generateBlockedHostQueryForNote(query);
if (me) {
this.queryService.generateVisibilityQuery(query, me);
this.queryService.generateMutedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/drive/files/create.ts b/packages/backend/src/server/api/endpoints/drive/files/create.ts
index f67ff6ddc4..7043f4883a 100644
--- a/packages/backend/src/server/api/endpoints/drive/files/create.ts
+++ b/packages/backend/src/server/api/endpoints/drive/files/create.ts
@@ -62,6 +62,12 @@ export const meta = {
code: 'COMMENT_TOO_LONG',
id: '333652d9-0826-40f5-a2c3-e2bedcbb9fe5',
},
+
+ maxFileSizeExceeded: {
+ message: 'Cannot upload the file because it exceeds the maximum file size.',
+ code: 'MAX_FILE_SIZE_EXCEEDED',
+ id: 'b9d8c348-33f0-4673-b9a9-5d4da058977a',
+ },
},
} as const;
@@ -128,6 +134,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (err instanceof IdentifiableError) {
if (err.id === '282f77bf-5816-4f72-9264-aa14d8261a21') throw new ApiError(meta.errors.inappropriate);
if (err.id === 'c6244ed2-a39a-4e1c-bf93-f0fbd7764fa6') throw new ApiError(meta.errors.noFreeSpace);
+ if (err.id === 'f9e4e5f3-4df4-40b5-b400-f236945f7073') throw new ApiError(meta.errors.maxFileSizeExceeded);
}
throw new ApiError();
} finally {
diff --git a/packages/backend/src/server/api/endpoints/notes/children.ts b/packages/backend/src/server/api/endpoints/notes/children.ts
index c97a0c0bc7..8f19d534d4 100644
--- a/packages/backend/src/server/api/endpoints/notes/children.ts
+++ b/packages/backend/src/server/api/endpoints/notes/children.ts
@@ -79,6 +79,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser');
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
if (me) {
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/notes/featured.ts b/packages/backend/src/server/api/endpoints/notes/featured.ts
index 4853489827..734ff31700 100644
--- a/packages/backend/src/server/api/endpoints/notes/featured.ts
+++ b/packages/backend/src/server/api/endpoints/notes/featured.ts
@@ -11,6 +11,7 @@ import { DI } from '@/di-symbols.js';
import { FeaturedService } from '@/core/FeaturedService.js';
import { isUserRelated } from '@/misc/is-user-related.js';
import { CacheService } from '@/core/CacheService.js';
+import { QueryService } from '@/core/QueryService.js';
export const meta = {
tags: ['notes'],
@@ -58,6 +59,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private cacheService: CacheService,
private noteEntityService: NoteEntityService,
private featuredService: FeaturedService,
+ private queryService: QueryService,
) {
super(meta, paramDef, async (ps, me) => {
let noteIds: string[];
@@ -100,6 +102,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser')
.leftJoinAndSelect('note.channel', 'channel');
+ this.queryService.generateBlockedHostQueryForNote(query);
+
const notes = (await query.getMany()).filter(note => {
if (me && isUserRelated(note, userIdsWhoBlockingMe)) return false;
if (me && isUserRelated(note, userIdsWhoMeMuting)) return false;
diff --git a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts
index b0e3327411..6461a2e33f 100644
--- a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts
@@ -254,6 +254,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
this.queryService.generateMutedUserRenotesQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts
index 864592ed9b..f55853f3f3 100644
--- a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts
@@ -167,6 +167,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser');
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
if (me) this.queryService.generateMutedUserQueryForNotes(query, me);
if (me) this.queryService.generateBlockedUserQueryForNotes(query, me);
if (me) this.queryService.generateMutedUserRenotesQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/notes/mentions.ts b/packages/backend/src/server/api/endpoints/notes/mentions.ts
index bfcd120f49..269b57366c 100644
--- a/packages/backend/src/server/api/endpoints/notes/mentions.ts
+++ b/packages/backend/src/server/api/endpoints/notes/mentions.ts
@@ -78,6 +78,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser');
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateMutedNoteThreadQuery(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/notes/renotes.ts b/packages/backend/src/server/api/endpoints/notes/renotes.ts
index 01f09433a9..0f08cc9cf2 100644
--- a/packages/backend/src/server/api/endpoints/notes/renotes.ts
+++ b/packages/backend/src/server/api/endpoints/notes/renotes.ts
@@ -91,6 +91,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
if (me) this.queryService.generateMutedUserQueryForNotes(query, me);
if (me) this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/notes/replies.ts b/packages/backend/src/server/api/endpoints/notes/replies.ts
index f04c9b0ec4..0882e19182 100644
--- a/packages/backend/src/server/api/endpoints/notes/replies.ts
+++ b/packages/backend/src/server/api/endpoints/notes/replies.ts
@@ -62,6 +62,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser');
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
if (me) this.queryService.generateMutedUserQueryForNotes(query, me);
if (me) this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts b/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts
index af9bc3b426..91874a8195 100644
--- a/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts
+++ b/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts
@@ -97,6 +97,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (!this.serverSettings.enableBotTrending) query.andWhere('user.isBot = FALSE');
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
if (me) this.queryService.generateMutedUserQueryForNotes(query, me);
if (me) this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts
index 9f19117426..a2dfa7fdac 100644
--- a/packages/backend/src/server/api/endpoints/notes/timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts
@@ -209,6 +209,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}));
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
this.queryService.generateMutedUserRenotesQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts
index 4c37edfdec..60f18a09b0 100644
--- a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts
@@ -190,6 +190,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}));
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
this.queryService.generateMutedUserRenotesQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/roles/notes.ts b/packages/backend/src/server/api/endpoints/roles/notes.ts
index dd40e49d3d..d1c2e4b686 100644
--- a/packages/backend/src/server/api/endpoints/roles/notes.ts
+++ b/packages/backend/src/server/api/endpoints/roles/notes.ts
@@ -108,6 +108,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser');
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
this.queryService.generateMutedUserQueryForNotes(query, me);
this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/users/featured-notes.ts b/packages/backend/src/server/api/endpoints/users/featured-notes.ts
index e6acae08b1..3fb091cc0e 100644
--- a/packages/backend/src/server/api/endpoints/users/featured-notes.ts
+++ b/packages/backend/src/server/api/endpoints/users/featured-notes.ts
@@ -11,6 +11,7 @@ import { DI } from '@/di-symbols.js';
import { FeaturedService } from '@/core/FeaturedService.js';
import { CacheService } from '@/core/CacheService.js';
import { isUserRelated } from '@/misc/is-user-related.js';
+import { QueryService } from '@/core/QueryService.js';
export const meta = {
tags: ['notes'],
@@ -55,6 +56,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private noteEntityService: NoteEntityService,
private featuredService: FeaturedService,
private cacheService: CacheService,
+ private queryService: QueryService,
) {
super(meta, paramDef, async (ps, me) => {
const userIdsWhoBlockingMe = me ? await this.cacheService.userBlockedCache.fetch(me.id) : new Set<string>();
@@ -91,6 +93,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('renote.user', 'renoteUser')
.leftJoinAndSelect('note.channel', 'channel');
+ this.queryService.generateBlockedHostQueryForNote(query);
+
const notes = (await query.getMany()).filter(note => {
if (me && isUserRelated(note, userIdsWhoBlockingMe, false)) return false;
if (me && isUserRelated(note, userIdsWhoMeMuting, true)) return false;
diff --git a/packages/backend/src/server/api/endpoints/users/notes.ts b/packages/backend/src/server/api/endpoints/users/notes.ts
index a4eee544f0..965baa859a 100644
--- a/packages/backend/src/server/api/endpoints/users/notes.ts
+++ b/packages/backend/src/server/api/endpoints/users/notes.ts
@@ -145,6 +145,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
redisTimelines,
useDbFallback: true,
ignoreAuthorFromMute: true,
+ ignoreAuthorFromInstanceBlock: true,
excludeReplies: ps.withChannelNotes && !ps.withReplies, // userTimelineWithChannel may include replies
excludeNoFiles: ps.withChannelNotes && ps.withFiles, // userTimelineWithChannel may include notes without files
excludePureRenotes: !ps.withRenotes,
@@ -216,6 +217,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query, true);
if (me) {
this.queryService.generateMutedUserQueryForNotes(query, me, { id: ps.userId });
this.queryService.generateBlockedUserQueryForNotes(query, me);
diff --git a/packages/backend/src/server/api/endpoints/users/reactions.ts b/packages/backend/src/server/api/endpoints/users/reactions.ts
index 49c1190197..56f59bd285 100644
--- a/packages/backend/src/server/api/endpoints/users/reactions.ts
+++ b/packages/backend/src/server/api/endpoints/users/reactions.ts
@@ -108,6 +108,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('reaction.note', 'note');
this.queryService.generateVisibilityQuery(query, me);
+ this.queryService.generateBlockedHostQueryForNote(query);
const reactions = (await query
.limit(ps.limit)
diff --git a/packages/backend/src/server/web/style.css b/packages/backend/src/server/web/style.css
index 8094a0f6de..1c63d77e06 100644
--- a/packages/backend/src/server/web/style.css
+++ b/packages/backend/src/server/web/style.css
@@ -31,6 +31,7 @@ html {
margin: auto;
width: 64px;
height: 64px;
+ border-radius: 10px;
pointer-events: none;
}
diff --git a/packages/backend/src/server/web/style.embed.css b/packages/backend/src/server/web/style.embed.css
index 5e8786cc4e..0911d562bf 100644
--- a/packages/backend/src/server/web/style.embed.css
+++ b/packages/backend/src/server/web/style.embed.css
@@ -53,6 +53,7 @@ html.embed.noborder #splash {
margin: auto;
width: 64px;
height: 64px;
+ border-radius: 10px;
pointer-events: none;
}
diff --git a/packages/backend/test-federation/compose.tpl.yml b/packages/backend/test-federation/compose.tpl.yml
index 25770063d3..a7e907c3ee 100644
--- a/packages/backend/test-federation/compose.tpl.yml
+++ b/packages/backend/test-federation/compose.tpl.yml
@@ -75,10 +75,6 @@ services:
target: /misskey/pnpm-workspace.yaml
read_only: true
- type: bind
- source: ../../../scripts/dependency-patches
- target: /misskey/scripts/dependency-patches
- read_only: true
- - type: bind
source: ./certificates/rootCA.crt
target: /usr/local/share/ca-certificates/rootCA.crt
read_only: true
diff --git a/packages/backend/test-federation/compose.yml b/packages/backend/test-federation/compose.yml
index dfa51b940a..4df4ced365 100644
--- a/packages/backend/test-federation/compose.yml
+++ b/packages/backend/test-federation/compose.yml
@@ -71,10 +71,6 @@ services:
target: /misskey/pnpm-workspace.yaml
read_only: true
- type: bind
- source: ../../../scripts/dependency-patches
- target: /misskey/scripts/dependency-patches
- read_only: true
- - type: bind
source: ./certificates/rootCA.crt
target: /usr/local/share/ca-certificates/rootCA.crt
read_only: true
@@ -118,10 +114,6 @@ services:
source: ../../../pnpm-workspace.yaml
target: /misskey/pnpm-workspace.yaml
read_only: true
- - type: bind
- source: ../../../scripts/dependency-patches
- target: /misskey/scripts/dependency-patches
- read_only: true
working_dir: /misskey
command: >
bash -c "
diff --git a/packages/backend/test/e2e/api.ts b/packages/backend/test/e2e/api.ts
index 49c6a0636b..f9e65aaa84 100644
--- a/packages/backend/test/e2e/api.ts
+++ b/packages/backend/test/e2e/api.ts
@@ -159,8 +159,8 @@ describe('API', () => {
user: { token: application3 },
}, {
status: 403,
- code: 'ROLE_PERMISSION_DENIED',
- id: 'c3d38592-54c0-429d-be96-5636b0431a61',
+ code: 'PERMISSION_DENIED',
+ id: '1370e5b7-d4eb-4566-bb1d-7748ee6a1838',
});
await failedApiCall({
diff --git a/packages/backend/test/unit/server/api/drive/files/create.ts b/packages/backend/test/unit/server/api/drive/files/create.ts
new file mode 100644
index 0000000000..b98892fa03
--- /dev/null
+++ b/packages/backend/test/unit/server/api/drive/files/create.ts
@@ -0,0 +1,108 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { S3Client } from '@aws-sdk/client-s3';
+import { Test, TestingModule } from '@nestjs/testing';
+import { mockClient } from 'aws-sdk-client-mock';
+import { FastifyInstance } from 'fastify';
+import request from 'supertest';
+import { CoreModule } from '@/core/CoreModule.js';
+import { RoleService } from '@/core/RoleService.js';
+import { DI } from '@/di-symbols.js';
+import { GlobalModule } from '@/GlobalModule.js';
+import { MiRole, UserProfilesRepository, UsersRepository } from '@/models/_.js';
+import { MiUser } from '@/models/User.js';
+import { ServerModule } from '@/server/ServerModule.js';
+import { ServerService } from '@/server/ServerService.js';
+
+describe('/drive/files/create', () => {
+ let module: TestingModule;
+ let server: FastifyInstance;
+ const s3Mock = mockClient(S3Client);
+ let roleService: RoleService;
+
+ let root: MiUser;
+ let role_tinyAttachment: MiRole;
+
+ beforeAll(async () => {
+ module = await Test.createTestingModule({
+ imports: [GlobalModule, CoreModule, ServerModule],
+ }).compile();
+ module.enableShutdownHooks();
+
+ const serverService = module.get<ServerService>(ServerService);
+ server = await serverService.launch();
+
+ const usersRepository = module.get<UsersRepository>(DI.usersRepository);
+ root = await usersRepository.insert({
+ id: 'root',
+ username: 'root',
+ usernameLower: 'root',
+ token: '1234567890123456',
+ }).then(x => usersRepository.findOneByOrFail(x.identifiers[0]));
+
+ const userProfilesRepository = module.get<UserProfilesRepository>(DI.userProfilesRepository);
+ await userProfilesRepository.insert({
+ userId: root.id,
+ });
+
+ roleService = module.get<RoleService>(RoleService);
+ role_tinyAttachment = await roleService.create({
+ name: 'test-role001',
+ description: 'Test role001 description',
+ target: 'manual',
+ policies: {
+ maxFileSizeMb: {
+ useDefault: false,
+ priority: 1,
+ // 10byte
+ value: 10 / 1024 / 1024,
+ },
+ },
+ });
+ });
+
+ beforeEach(async () => {
+ s3Mock.reset();
+ await roleService.unassign(root.id, role_tinyAttachment.id).catch(() => {});
+ });
+
+ afterAll(async () => {
+ await server.close();
+ await module.close();
+ });
+
+ test('200 ok', async () => {
+ const result = await request(server.server)
+ .post('/api/drive/files/create')
+ .set('Content-Type', 'multipart/form-data')
+ .set('Authorization', `Bearer ${root.token}`)
+ .attach('file', Buffer.from('a'.repeat(1024 * 1024)));
+ expect(result.statusCode).toBe(200);
+ });
+
+ test('200 ok(with role)', async () => {
+ await roleService.assign(root.id, role_tinyAttachment.id);
+
+ const result = await request(server.server)
+ .post('/api/drive/files/create')
+ .set('Content-Type', 'multipart/form-data')
+ .set('Authorization', `Bearer ${root.token}`)
+ .attach('file', Buffer.from('a'.repeat(10)));
+ expect(result.statusCode).toBe(200);
+ });
+
+ test('413 too large', async () => {
+ await roleService.assign(root.id, role_tinyAttachment.id);
+
+ const result = await request(server.server)
+ .post('/api/drive/files/create')
+ .set('Content-Type', 'multipart/form-data')
+ .set('Authorization', `Bearer ${root.token}`)
+ .attach('file', Buffer.from('a'.repeat(11)));
+ expect(result.statusCode).toBe(413);
+ expect(result.body.error.code).toBe('FILE_SIZE_TOO_LARGE');
+ });
+});
diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json
index 40e8802ab4..7788d65305 100644
--- a/packages/frontend-embed/package.json
+++ b/packages/frontend-embed/package.json
@@ -26,15 +26,15 @@
"json5": "2.2.3",
"misskey-js": "workspace:*",
"punycode.js": "2.3.1",
- "rollup": "4.39.0",
- "sass": "1.86.3",
- "shiki": "3.2.2",
+ "rollup": "4.40.0",
+ "sass": "1.87.0",
+ "shiki": "3.3.0",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.15",
"tsconfig-paths": "4.2.0",
"typescript": "5.8.3",
"uuid": "11.1.0",
- "vite": "6.3.1",
+ "vite": "6.3.3",
"vue": "3.5.13"
},
"devDependencies": {
@@ -42,13 +42,13 @@
"@testing-library/vue": "8.1.0",
"@types/estree": "1.0.7",
"@types/micromatch": "4.0.9",
- "@types/node": "22.14.0",
+ "@types/node": "22.15.2",
"@types/punycode.js": "npm:@types/punycode@2.1.4",
"@types/tinycolor2": "1.4.6",
"@types/ws": "8.18.1",
- "@typescript-eslint/eslint-plugin": "8.29.1",
- "@typescript-eslint/parser": "8.29.1",
- "@vitest/coverage-v8": "3.1.1",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
+ "@vitest/coverage-v8": "3.1.2",
"@vue/runtime-core": "3.5.13",
"acorn": "8.14.1",
"cross-env": "7.0.3",
@@ -58,13 +58,13 @@
"happy-dom": "17.4.4",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
- "msw": "2.7.3",
- "nodemon": "3.1.9",
+ "msw": "2.7.5",
+ "nodemon": "3.1.10",
"prettier": "3.5.3",
"start-server-and-test": "2.0.11",
"vite-plugin-turbosnap": "1.0.3",
- "vue-component-type-helpers": "2.2.8",
+ "vue-component-type-helpers": "2.2.10",
"vue-eslint-parser": "10.1.3",
- "vue-tsc": "2.2.8"
+ "vue-tsc": "2.2.10"
}
}
diff --git a/packages/frontend-shared/js/collapsed.ts b/packages/frontend-shared/js/collapsed.ts
index af1f88cb73..aa24c43bcb 100644
--- a/packages/frontend-shared/js/collapsed.ts
+++ b/packages/frontend-shared/js/collapsed.ts
@@ -6,17 +6,30 @@
import * as Misskey from 'misskey-js';
export function shouldCollapsed(note: Misskey.entities.Note, urls: string[]): boolean {
- const collapsed = note.cw == null && (
- (note.text != null && (
- (note.text.includes('$[x2')) ||
- (note.text.includes('$[x3')) ||
- (note.text.includes('$[x4')) ||
- (note.text.includes('$[scale')) ||
- (note.text.split('\n').length > 9) ||
- (note.text.length > 500) ||
- (urls.length >= 4)
- )) || (note.files != null && note.files.length >= 5)
- );
+ if (note.cw != null) {
+ return false;
+ }
- return collapsed;
+ if (note.text != null) {
+ if (
+ note.text.includes('$[x2') ||
+ note.text.includes('$[x3') ||
+ note.text.includes('$[x4') ||
+ note.text.includes('$[scale') ||
+ note.text.split('\n').length > 9 ||
+ note.text.length > 500
+ ) {
+ return true;
+ }
+ }
+
+ if (urls.length >= 4) {
+ return true;
+ }
+
+ if (note.files != null && note.files.length >= 5) {
+ return true;
+ }
+
+ return false;
}
diff --git a/packages/frontend-shared/js/const.ts b/packages/frontend-shared/js/const.ts
index 22e4e36292..0aba2b486e 100644
--- a/packages/frontend-shared/js/const.ts
+++ b/packages/frontend-shared/js/const.ts
@@ -157,6 +157,7 @@ export const ROLE_POLICIES = [
'canUseTranslator',
'canHideAds',
'driveCapacityMb',
+ 'maxFileSizeMb',
'alwaysMarkNsfw',
'canUpdateBioMedia',
'pinLimit',
diff --git a/packages/frontend-shared/package.json b/packages/frontend-shared/package.json
index a4874b8f77..f129121d19 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": "22.14.0",
- "@typescript-eslint/eslint-plugin": "8.29.1",
- "@typescript-eslint/parser": "8.29.1",
- "esbuild": "0.25.2",
+ "@types/node": "22.15.2",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
+ "esbuild": "0.25.3",
"eslint-plugin-vue": "10.0.0",
- "nodemon": "3.1.9",
+ "nodemon": "3.1.10",
"typescript": "5.8.3",
"vue-eslint-parser": "10.1.3"
},
diff --git a/packages/frontend/.storybook/changes.ts b/packages/frontend/.storybook/changes.ts
index 1299910499..c7e0048818 100644
--- a/packages/frontend/.storybook/changes.ts
+++ b/packages/frontend/.storybook/changes.ts
@@ -55,7 +55,7 @@ await fs.readFile(
'../../locales/ja-JP.yml',
'assets/**',
'public/**',
- '../../pnpm-lock.yaml',
+ 'package.json',
]).length
) {
return;
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index d3453fb8cb..4810d40fc6 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -25,7 +25,7 @@
"@rollup/plugin-replace": "6.0.2",
"@rollup/pluginutils": "5.1.4",
"@ruffle-rs/ruffle": "0.1.0-nightly.2024.10.15",
- "@sentry/vue": "9.12.0",
+ "@sentry/vue": "9.14.0",
"@syuilo/aiscript": "0.19.0",
"@transfem-org/sfm-js": "0.24.6",
"@twemoji/parser": "15.1.1",
@@ -36,12 +36,12 @@
"broadcast-channel": "7.1.0",
"buraha": "0.0.1",
"canvas-confetti": "1.9.3",
- "chart.js": "4.4.8",
+ "chart.js": "4.4.9",
"chartjs-adapter-date-fns": "3.0.0",
"chartjs-chart-matrix": "2.1.1",
"chartjs-plugin-gradient": "0.6.1",
"chartjs-plugin-zoom": "2.2.0",
- "chromatic": "11.28.0",
+ "chromatic": "11.28.2",
"compare-versions": "6.1.1",
"cropperjs": "2.0.0",
"date-fns": "4.1.0",
@@ -61,13 +61,13 @@
"moment": "^2.30.1",
"photoswipe": "5.4.4",
"punycode.js": "2.3.1",
- "rollup": "4.39.0",
- "sanitize-html": "2.15.0",
- "sass": "1.86.3",
- "shiki": "3.2.2",
+ "rollup": "4.40.0",
+ "sanitize-html": "2.16.0",
+ "sass": "1.87.0",
+ "shiki": "3.3.0",
"strict-event-emitter-types": "2.0.0",
"textarea-caret": "3.1.0",
- "three": "0.175.0",
+ "three": "0.176.0",
"throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.15",
@@ -75,13 +75,13 @@
"typescript": "5.8.3",
"uuid": "11.1.0",
"v-code-diff": "1.13.1",
- "vite": "6.3.1",
+ "vite": "6.3.3",
"vue": "3.5.13",
"vuedraggable": "next",
"wanakana": "5.3.1"
},
"optionalDependencies": {
- "cypress": "13.15.2"
+ "cypress": "14.3.2"
},
"devDependencies": {
"@misskey-dev/summaly": "5.2.1",
@@ -109,16 +109,16 @@
"@types/katex": "^0.16.7",
"@types/matter-js": "0.19.8",
"@types/micromatch": "4.0.9",
- "@types/node": "22.14.0",
+ "@types/node": "22.15.2",
"@types/punycode.js": "npm:@types/punycode@2.1.4",
"@types/sanitize-html": "2.15.0",
"@types/seedrandom": "3.0.8",
"@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
"@types/ws": "8.18.1",
- "@typescript-eslint/eslint-plugin": "8.29.1",
- "@typescript-eslint/parser": "8.29.1",
- "@vitest/coverage-v8": "3.1.1",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
+ "@vitest/coverage-v8": "3.1.2",
"@vue/compiler-core": "3.5.13",
"@vue/runtime-core": "3.5.13",
"acorn": "8.14.1",
@@ -130,9 +130,9 @@
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
"minimatch": "10.0.1",
- "msw": "2.7.3",
+ "msw": "2.7.5",
"msw-storybook-addon": "2.0.4",
- "nodemon": "3.1.9",
+ "nodemon": "3.1.10",
"prettier": "3.5.3",
"react": "19.1.0",
"react-dom": "19.1.0",
@@ -141,10 +141,10 @@
"storybook": "8.6.12",
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
"vite-plugin-turbosnap": "1.0.3",
- "vitest": "3.1.1",
+ "vitest": "3.1.2",
"vitest-fetch-mock": "0.4.5",
- "vue-component-type-helpers": "2.2.8",
+ "vue-component-type-helpers": "2.2.10",
"vue-eslint-parser": "10.1.3",
- "vue-tsc": "2.2.8"
+ "vue-tsc": "2.2.10"
}
}
diff --git a/packages/frontend/src/components/MkAbuseReportWindow.vue b/packages/frontend/src/components/MkAbuseReportWindow.vue
index dbac5e9dd7..61297fdc76 100644
--- a/packages/frontend/src/components/MkAbuseReportWindow.vue
+++ b/packages/frontend/src/components/MkAbuseReportWindow.vue
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</I18n>
</template>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps_m" :class="$style.root">
<div class="">
<MkTextarea v-model="comment">
@@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton primary full :disabled="comment.length === 0" @click="send">{{ i18n.ts.send }}</MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</MkWindow>
</template>
diff --git a/packages/frontend/src/components/MkAntennaEditor.vue b/packages/frontend/src/components/MkAntennaEditor.vue
index 59099d54bd..e2febf7225 100644
--- a/packages/frontend/src/components/MkAntennaEditor.vue
+++ b/packages/frontend/src/components/MkAntennaEditor.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="700">
+<div class="_spacer" style="--MI_SPACER-w: 700px;">
<div>
<div class="_gaps_m">
<MkInput v-model="name">
@@ -48,7 +48,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
index 54fda6bf7c..ed5a20b4eb 100644
--- a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
+++ b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
@@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkModalWindow ref="dialogEl" @close="cancel()" @closed="emit('closed')">
<template #header>:{{ emoji.name }}:</template>
<template #default>
- <MkSpacer>
+ <div class="_spacer">
<div style="display: flex; flex-direction: column; gap: 1em;">
<div :class="$style.emojiImgWrapper">
<MkCustomEmoji :name="emoji.name" :normal="true" :useOriginalSize="true" style="height: 100%;"></MkCustomEmoji>
@@ -50,7 +50,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</MkKeyValue>
</div>
- </MkSpacer>
+ </div>
</template>
</MkModalWindow>
</template>
diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue
index cb7c270e91..3627704c1b 100644
--- a/packages/frontend/src/components/MkDrive.vue
+++ b/packages/frontend/src/components/MkDrive.vue
@@ -52,6 +52,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@contextmenu.stop="onContextmenu"
>
<div ref="contents">
+ <MkInfo v-if="!store.r.readDriveTip.value" closable @close="closeTip()"><div v-html="i18n.ts.driveAboutTip"></div></MkInfo>
<div v-show="folders.length > 0" ref="foldersContainer" :class="$style.folders">
<XFolder
v-for="(f, i) in folders"
@@ -108,6 +109,7 @@ SPDX-License-Identifier: AGPL-3.0-only
import { nextTick, onActivated, onBeforeUnmount, onMounted, ref, useTemplateRef, watch } from 'vue';
import * as Misskey from 'misskey-js';
import MkButton from './MkButton.vue';
+import MkInfo from './MkInfo.vue';
import type { MenuItem } from '@/types/menu.js';
import XNavFolder from '@/components/MkDrive.navFolder.vue';
import XFolder from '@/components/MkDrive.folder.vue';
@@ -121,6 +123,7 @@ import { uploadFile, uploads } from '@/utility/upload.js';
import { claimAchievement } from '@/utility/achievements.js';
import { prefer } from '@/preferences.js';
import { chooseFileFromPc } from '@/utility/select-file.js';
+import { store } from '@/store.js';
const searchQuery = ref('');
@@ -723,6 +726,10 @@ function onContextmenu(ev: MouseEvent) {
os.contextMenu(getMenu(), ev);
}
+function closeTip() {
+ store.set('readDriveTip', true);
+}
+
onMounted(() => {
if (prefer.s.enableInfiniteScroll && loadMoreFiles.value) {
nextTick(() => {
diff --git a/packages/frontend/src/components/MkFileCaptionEditWindow.vue b/packages/frontend/src/components/MkFileCaptionEditWindow.vue
index 7b5eefdc10..bdfbe13fb4 100644
--- a/packages/frontend/src/components/MkFileCaptionEditWindow.vue
+++ b/packages/frontend/src/components/MkFileCaptionEditWindow.vue
@@ -15,12 +15,12 @@ SPDX-License-Identifier: AGPL-3.0-only
@closed="emit('closed')"
>
<template #header>{{ i18n.ts.describeFile }}</template>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<MkDriveFileThumbnail :file="file" fit="contain" style="height: 193px; margin-bottom: 16px;"/>
<MkTextarea v-model="caption" autofocus :placeholder="i18n.ts.inputNewDescription" @keydown="onKeydown($event)">
<template #label>{{ i18n.ts.caption }}</template>
</MkTextarea>
- </MkSpacer>
+ </div>
</MkModalWindow>
</template>
diff --git a/packages/frontend/src/components/MkFolder.vue b/packages/frontend/src/components/MkFolder.vue
index c228853bea..2e5d0a3dea 100644
--- a/packages/frontend/src/components/MkFolder.vue
+++ b/packages/frontend/src/components/MkFolder.vue
@@ -31,10 +31,6 @@ SPDX-License-Identifier: AGPL-3.0-only
:leaveActiveClass="prefer.s.animation ? $style.transition_toggle_leaveActive : ''"
:enterFromClass="prefer.s.animation ? $style.transition_toggle_enterFrom : ''"
:leaveToClass="prefer.s.animation ? $style.transition_toggle_leaveTo : ''"
- @enter="enter"
- @afterEnter="afterEnter"
- @leave="leave"
- @afterLeave="afterLeave"
>
<KeepAlive>
<div v-show="opened">
@@ -45,9 +41,9 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
- <MkSpacer v-if="withSpacer" :marginMin="spacerMin" :marginMax="spacerMax">
+ <div v-if="withSpacer" class="_spacer" :style="{ '--MI_SPACER-min': props.spacerMin + 'px', '--MI_SPACER-max': props.spacerMax + 'px' }">
<slot></slot>
- </MkSpacer>
+ </div>
<div v-else>
<slot></slot>
</div>
@@ -90,32 +86,6 @@ const bgSame = ref(false);
const opened = ref(props.defaultOpen);
const openedAtLeastOnce = ref(props.defaultOpen);
-function enter(el: Element) {
- if (!(el instanceof HTMLElement)) return;
- const elementHeight = el.getBoundingClientRect().height;
- el.style.height = '0';
- el.offsetHeight; // reflow
- el.style.height = `${Math.min(elementHeight, props.maxHeight ?? Infinity)}px`;
-}
-
-function afterEnter(el: Element) {
- if (!(el instanceof HTMLElement)) return;
- el.style.height = '';
-}
-
-function leave(el: Element) {
- if (!(el instanceof HTMLElement)) return;
- const elementHeight = el.getBoundingClientRect().height;
- el.style.height = `${elementHeight}px`;
- el.offsetHeight; // reflow
- el.style.height = '0';
-}
-
-function afterLeave(el: Element) {
- if (!(el instanceof HTMLElement)) return;
- el.style.height = '';
-}
-
function toggle() {
if (!opened.value) {
openedAtLeastOnce.value = true;
@@ -137,16 +107,18 @@ onMounted(() => {
<style lang="scss" module>
.transition_toggle_enterActive,
.transition_toggle_leaveActive {
- overflow-y: clip;
- transition: opacity 0.3s, height 0.3s, transform 0.3s !important;
+ overflow-y: hidden; // å­è¦ç´ ã®marginãŒçªã出るãŸã‚ clip を使ã£ã¦ã¯ã„ã‘ãªã„
+ transition: opacity 0.3s, height 0.3s !important;
}
.transition_toggle_enterFrom,
.transition_toggle_leaveTo {
opacity: 0;
+ height: 0;
}
.root {
display: block;
+ interpolate-size: allow-keywords; // heightã®transitionを動作ã•ã›ã‚‹ãŸã‚ã«å¿…è¦
}
.header {
diff --git a/packages/frontend/src/components/MkForgotPassword.vue b/packages/frontend/src/components/MkForgotPassword.vue
index 35112ad45d..57946aaf2b 100644
--- a/packages/frontend/src/components/MkForgotPassword.vue
+++ b/packages/frontend/src/components/MkForgotPassword.vue
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template #header>{{ i18n.ts.forgotPassword }}</template>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<form v-if="instance.enableEmail" @submit.prevent="onSubmit">
<div class="_gaps_m">
<MkInput v-model="username" type="text" pattern="^[a-zA-Z0-9_]+$" :spellcheck="false" autofocus required>
@@ -34,7 +34,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-else>
{{ i18n.ts._forgotPassword.contactAdmin }}
</div>
- </MkSpacer>
+ </div>
</MkModalWindow>
</template>
diff --git a/packages/frontend/src/components/MkFormDialog.vue b/packages/frontend/src/components/MkFormDialog.vue
index 4756079e76..0884cdc016 100644
--- a/packages/frontend/src/components/MkFormDialog.vue
+++ b/packages/frontend/src/components/MkFormDialog.vue
@@ -19,7 +19,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ title }}
</template>
- <MkSpacer :marginMin="20" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 32px;">
<div v-if="Object.keys(form).filter(item => !form[item].hidden).length > 0" class="_gaps_m">
<template v-for="(v, k) in Object.fromEntries(Object.entries(form))">
<template v-if="typeof v.hidden == 'function' ? v.hidden(values) : v.hidden"></template>
@@ -66,7 +66,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<img :src="infoImageUrl" draggable="false"/>
<div>{{ i18n.ts.nothing }}</div>
</div>
- </MkSpacer>
+ </div>
</MkModalWindow>
</template>
diff --git a/packages/frontend/src/components/MkInfo.vue b/packages/frontend/src/components/MkInfo.vue
index 410e3accab..fb66098a54 100644
--- a/packages/frontend/src/components/MkInfo.vue
+++ b/packages/frontend/src/components/MkInfo.vue
@@ -39,7 +39,6 @@ function closeInfo() {
background: color-mix(in srgb, var(--MI_THEME-infoBg) 65%, transparent);
color: var(--MI_THEME-infoFg);
border-radius: var(--MI-radius);
- white-space: pre-wrap;
z-index: 1;
&.warn {
diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index 51836ce093..55efc3c193 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -114,7 +114,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkA v-if="appearNote.channel && !inChannel" :class="$style.channel" :to="`/channels/${appearNote.channel.id}`"><i class="ti ti-device-tv"></i> {{ appearNote.channel.name }}</MkA>
</bdi>
</div>
- <MkReactionsViewer v-if="appearNote.reactionAcceptance !== 'likeOnly'" :note="appearNote" :maxNumber="16" @click.stop @mockUpdateMyReaction="emitUpdReaction">
+ <MkReactionsViewer v-if="appearNote.reactionAcceptance !== 'likeOnly'" style="margin-top: 6px;" :note="appearNote" :maxNumber="16" @click.stop @mockUpdateMyReaction="emitUpdReaction">
<template #more>
<MkA :to="`/notes/${appearNote.id}/reactions`" :class="[$style.reactionOmitted]">{{ i18n.ts.more }}</MkA>
</template>
diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue
index 3c3136a705..488ee16e62 100644
--- a/packages/frontend/src/components/MkNoteDetailed.vue
+++ b/packages/frontend/src/components/MkNoteDetailed.vue
@@ -133,7 +133,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkTime :time="appearNote.createdAt" mode="detail" colored/>
</MkA>
</div>
- <MkReactionsViewer v-if="appearNote.reactionAcceptance !== 'likeOnly'" ref="reactionsViewer" :note="appearNote"/>
+ <MkReactionsViewer v-if="appearNote.reactionAcceptance !== 'likeOnly'" ref="reactionsViewer" style="margin-top: 6px;" :note="appearNote"/>
<button class="_button" :class="$style.noteFooterButton" @click="reply()">
<i class="ti ti-arrow-back-up"></i>
<p v-if="appearNote.repliesCount > 0" :class="$style.noteFooterButtonCount">{{ number(appearNote.repliesCount) }}</p>
diff --git a/packages/frontend/src/components/MkNotes.vue b/packages/frontend/src/components/MkNotes.vue
index 5edae908b0..602619402a 100644
--- a/packages/frontend/src/components/MkNotes.vue
+++ b/packages/frontend/src/components/MkNotes.vue
@@ -13,16 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<template #default="{ items: notes }">
- <component
- :is="prefer.s.animation ? TransitionGroup : 'div'"
- :class="[$style.root, { [$style.noGap]: noGap, '_gaps': !noGap, [$style.reverse]: pagination.reversed }]"
- :enterActiveClass="$style.transition_x_enterActive"
- :leaveActiveClass="$style.transition_x_leaveActive"
- :enterFromClass="$style.transition_x_enterFrom"
- :leaveToClass="$style.transition_x_leaveTo"
- :moveClass=" $style.transition_x_move"
- tag="div"
- >
+ <div :class="[$style.root, { [$style.noGap]: noGap, '_gaps': !noGap, [$style.reverse]: pagination.reversed }]">
<template v-for="(note, i) in notes" :key="note.id">
<div v-if="note._shouldInsertAd_" :class="[$style.noteWithAd, { '_gaps': !noGap }]" :data-scroll-anchor="note.id">
<DynamicNote :class="$style.note" :note="note as Misskey.entities.Note" :withHardMute="true"/>
@@ -32,20 +23,19 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<DynamicNote v-else :class="$style.note" :note="note as Misskey.entities.Note" :withHardMute="true" :data-scroll-anchor="note.id"/>
</template>
- </component>
+ </div>
</template>
</MkPagination>
</template>
<script lang="ts" setup>
import * as Misskey from 'misskey-js';
-import { useTemplateRef, TransitionGroup } from 'vue';
+import { useTemplateRef } from 'vue';
import type { Paging } from '@/components/MkPagination.vue';
import DynamicNote from '@/components/DynamicNote.vue';
import MkPagination from '@/components/MkPagination.vue';
import { i18n } from '@/i18n.js';
import { infoImageUrl } from '@/instance.js';
-import { prefer } from '@/preferences.js';
const props = defineProps<{
pagination: Paging;
@@ -61,20 +51,6 @@ defineExpose({
</script>
<style lang="scss" module>
-.transition_x_move,
-.transition_x_enterActive,
-.transition_x_leaveActive {
- transition: opacity 0.3s cubic-bezier(0,.5,.5,1), transform 0.3s cubic-bezier(0,.5,.5,1) !important;
-}
-.transition_x_enterFrom,
-.transition_x_leaveTo {
- opacity: 0;
- transform: translateY(-50%);
-}
-.transition_x_leaveActive {
- position: absolute;
-}
-
.reverse {
display: flex;
flex-direction: column-reverse;
diff --git a/packages/frontend/src/components/MkNotificationSelectWindow.vue b/packages/frontend/src/components/MkNotificationSelectWindow.vue
index d074dceb2f..bb01a008bd 100644
--- a/packages/frontend/src/components/MkNotificationSelectWindow.vue
+++ b/packages/frontend/src/components/MkNotificationSelectWindow.vue
@@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template #header>{{ i18n.ts.notificationSetting }}</template>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps_m">
<MkInfo>{{ i18n.ts.notificationSettingDesc }}</MkInfo>
<div class="_buttons">
@@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<MkSwitch v-for="ntype in notificationTypes" :key="ntype" v-model="typesMap[ntype].value">{{ i18n.ts._notification._types[ntype] }}</MkSwitch>
</div>
- </MkSpacer>
+ </div>
</MkModalWindow>
</template>
diff --git a/packages/frontend/src/components/MkPageWindow.vue b/packages/frontend/src/components/MkPageWindow.vue
index d5b43cbf2e..a9e4704b24 100644
--- a/packages/frontend/src/components/MkPageWindow.vue
+++ b/packages/frontend/src/components/MkPageWindow.vue
@@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</template>
- <div :class="$style.root">
+ <div :class="$style.root" class="_forceShrinkSpacer">
<StackingRouterView v-if="prefer.s['experimental.stackingRouterView']" :key="reloadCount" :router="windowRouter"/>
<RouterView v-else :key="reloadCount" :router="windowRouter"/>
</div>
@@ -121,7 +121,6 @@ provideMetadataReceiver((metadataGetter) => {
provideReactiveMetadata(pageMetadata);
provide('shouldOmitHeaderTitle', true);
provide('shouldHeaderThin', true);
-provide(DI.forceSpacerMin, true);
provide('shouldBackButton', false);
const contextmenu = computed(() => ([{
diff --git a/packages/frontend/src/components/MkPasswordDialog.vue b/packages/frontend/src/components/MkPasswordDialog.vue
index 2abf8669ed..826081ffe5 100644
--- a/packages/frontend/src/components/MkPasswordDialog.vue
+++ b/packages/frontend/src/components/MkPasswordDialog.vue
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template #header>{{ i18n.ts.authentication }}</template>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div style="padding: 0 0 16px 0; text-align: center;">
<img src="/client-assets/locked_with_key_3d.png" alt="ðŸ”" style="display: block; margin: 0 auto; width: 48px;">
<div style="margin-top: 16px;">{{ i18n.ts.authenticationRequiredToContinue }}</div>
@@ -34,7 +34,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton :disabled="(password ?? '') == '' || ($i.twoFactorEnabled && (token ?? '') == '')" type="submit" primary rounded style="margin: 0 auto;"><i class="ti ti-lock-open"></i> {{ i18n.ts.continue }}</MkButton>
</div>
</form>
- </MkSpacer>
+ </div>
</MkModalWindow>
</template>
diff --git a/packages/frontend/src/components/MkReactionsViewer.reaction.vue b/packages/frontend/src/components/MkReactionsViewer.reaction.vue
index e66a056a3f..494b61ca9d 100644
--- a/packages/frontend/src/components/MkReactionsViewer.reaction.vue
+++ b/packages/frontend/src/components/MkReactionsViewer.reaction.vue
@@ -182,7 +182,6 @@ if (!mock) {
.root {
display: inline-flex;
height: 42px;
- margin: 2px;
padding: 0 6px;
font-size: 1.5em;
border-radius: var(--MI-radius-sm);
diff --git a/packages/frontend/src/components/MkReactionsViewer.vue b/packages/frontend/src/components/MkReactionsViewer.vue
index 6b19f4a55c..70d0ddca0a 100644
--- a/packages/frontend/src/components/MkReactionsViewer.vue
+++ b/packages/frontend/src/components/MkReactionsViewer.vue
@@ -106,7 +106,7 @@ watch([() => props.note.reactions, () => props.maxNumber], ([newSource, maxNumbe
display: flex;
flex-wrap: wrap;
align-items: center;
- margin: 4px -2px 0 -2px;
+ gap: 4px;
cursor: auto; /* not clickToOpen-able */
&:empty {
diff --git a/packages/frontend/src/components/MkRemoteEmojiEditDialog.vue b/packages/frontend/src/components/MkRemoteEmojiEditDialog.vue
index dc9bacf481..cb50df1743 100644
--- a/packages/frontend/src/components/MkRemoteEmojiEditDialog.vue
+++ b/packages/frontend/src/components/MkRemoteEmojiEditDialog.vue
@@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #header>:{{ name }}:</template>
<div style="display: flex; flex-direction: column; min-height: 100%;">
- <MkSpacer :marginMin="20" :marginMax="28" style="flex-grow: 1;">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px; flex-grow: 1;">
<div class="_gaps_m">
<div v-if="imgUrl != null" :class="$style.imgs">
<div style="background: #000;" :class="$style.imgContainer">
@@ -45,7 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #value>{{ license }}</template>
</MkKeyValue>
</div>
- </MkSpacer>
+ </div>
<div :class="$style.footer">
<MkButton primary rounded style="margin: 0 auto;" @click="done">
<i class="ti ti-plus"></i> {{ i18n.ts.import }}
diff --git a/packages/frontend/src/components/MkRoleSelectDialog.vue b/packages/frontend/src/components/MkRoleSelectDialog.vue
index fd56e4902c..6888824437 100644
--- a/packages/frontend/src/components/MkRoleSelectDialog.vue
+++ b/packages/frontend/src/components/MkRoleSelectDialog.vue
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@closed="emit('closed')"
>
<template #header>{{ title }}</template>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<MkLoading v-if="fetching"/>
<div v-else class="_gaps" :class="$style.root">
<div :class="$style.header">
@@ -38,7 +38,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton @click="onCancelClicked">{{ i18n.ts.cancel }}</MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</MkModalWindow>
</template>
@@ -51,7 +51,6 @@ import MkInfo from '@/components/MkInfo.vue';
import MkRolePreview from '@/components/MkRolePreview.vue';
import { misskeyApi } from '@/utility/misskey-api.js';
import * as os from '@/os.js';
-import MkSpacer from '@/components/global/MkSpacer.vue';
import MkModalWindow from '@/components/MkModalWindow.vue';
import MkLoading from '@/components/global/MkLoading.vue';
diff --git a/packages/frontend/src/components/MkSchedulePostListDialog.vue b/packages/frontend/src/components/MkSchedulePostListDialog.vue
index 0bcbb41192..41f366b082 100644
--- a/packages/frontend/src/components/MkSchedulePostListDialog.vue
+++ b/packages/frontend/src/components/MkSchedulePostListDialog.vue
@@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@close="cancel()"
>
<template #header>{{ i18n.ts.schedulePostList }}</template>
- <MkSpacer :marginMin="14" :marginMax="16">
+ <div class="_spacer" style="--MI_SPACER-min: 14px; --MI_SPACER-max: 16px;">
<MkPagination ref="paginationEl" :pagination="pagination">
<template #empty>
<div class="_fullinfo">
@@ -26,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
</MkPagination>
- </MkSpacer>
+ </div>
</MkModalWindow>
</template>
diff --git a/packages/frontend/src/components/MkSignupDialog.form.vue b/packages/frontend/src/components/MkSignupDialog.form.vue
index b152ba81a6..365b23f4ce 100644
--- a/packages/frontend/src/components/MkSignupDialog.form.vue
+++ b/packages/frontend/src/components/MkSignupDialog.form.vue
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.banner">
<i class="ti ti-user-edit"></i>
</div>
- <MkSpacer :marginMin="20" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 32px;">
<form class="_gaps_m" autocomplete="new-password" @submit.prevent="onSubmit">
<MkInput v-if="instance.disableRegistration" v-model="invitationCode" type="text" :spellcheck="false" required>
<template #label>{{ i18n.ts.invitationCode }}</template>
@@ -79,7 +79,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else>{{ i18n.ts.start }}</template>
</MkButton>
</form>
- </MkSpacer>
+ </div>
</div>
</template>
diff --git a/packages/frontend/src/components/MkSignupDialog.rules.vue b/packages/frontend/src/components/MkSignupDialog.rules.vue
index f3d358c874..3034f2269b 100644
--- a/packages/frontend/src/components/MkSignupDialog.rules.vue
+++ b/packages/frontend/src/components/MkSignupDialog.rules.vue
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.banner">
<i class="ti ti-checklist"></i>
</div>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps_m">
<div v-if="instance.disableRegistration || instance.federation !== 'all'" class="_gaps_s">
<MkInfo v-if="instance.disableRegistration" warn>{{ i18n.ts.invitationRequiredToRegister }}</MkInfo>
@@ -59,7 +59,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton inline primary rounded gradate :disabled="!agreed" data-cy-signup-rules-continue @click="emit('done')">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
diff --git a/packages/frontend/src/components/MkSystemWebhookEditor.vue b/packages/frontend/src/components/MkSystemWebhookEditor.vue
index 86e755a3c3..cd72204fce 100644
--- a/packages/frontend/src/components/MkSystemWebhookEditor.vue
+++ b/packages/frontend/src/components/MkSystemWebhookEditor.vue
@@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<div style="display: flex; flex-direction: column; min-height: 100%;">
- <MkSpacer :marginMin="20" :marginMax="28" style="flex-grow: 1;">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px; flex-grow: 1;">
<MkLoading v-if="loading !== 0"/>
<div v-else :class="$style.root" class="_gaps_m">
<MkInput v-model="title">
@@ -79,7 +79,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #label>{{ i18n.ts.enable }}</template>
</MkSwitch>
</div>
- </MkSpacer>
+ </div>
<div :class="$style.footer" class="_buttonsCenter">
<MkButton primary rounded :disabled="disableSubmitButton" @click="onSubmitClicked">
<i class="ti ti-check"></i>
diff --git a/packages/frontend/src/components/MkTimeline.vue b/packages/frontend/src/components/MkTimeline.vue
index 7b740167ec..32b2e1ae11 100644
--- a/packages/frontend/src/components/MkTimeline.vue
+++ b/packages/frontend/src/components/MkTimeline.vue
@@ -5,29 +5,55 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<MkPullToRefresh ref="prComponent" :refresher="() => reloadTimeline()">
- <MkNotes
- v-if="paginationQuery"
- ref="tlComponent"
- :pagination="paginationQuery"
- :noGap="!prefer.s.showGapBetweenNotesInTimeline"
- @queue="emit('queue', $event)"
- @status="prComponent?.setDisabled($event)"
- />
+ <MkPagination v-if="paginationQuery" ref="pagingComponent" :pagination="paginationQuery" @queue="emit('queue', $event)" @status="prComponent?.setDisabled($event)">
+ <template #empty>
+ <div class="_fullinfo">
+ <img :src="infoImageUrl" draggable="false"/>
+ <div>{{ i18n.ts.noNotes }}</div>
+ </div>
+ </template>
+
+ <template #default="{ items: notes }">
+ <component
+ :is="prefer.s.animation ? TransitionGroup : 'div'"
+ :class="[$style.root, { [$style.noGap]: noGap, '_gaps': !noGap, [$style.reverse]: paginationQuery.reversed }]"
+ :enterActiveClass="$style.transition_x_enterActive"
+ :leaveActiveClass="$style.transition_x_leaveActive"
+ :enterFromClass="$style.transition_x_enterFrom"
+ :leaveToClass="$style.transition_x_leaveTo"
+ :moveClass=" $style.transition_x_move"
+ tag="div"
+ >
+ <template v-for="(note, i) in notes" :key="note.id">
+ <div v-if="note._shouldInsertAd_" :class="[$style.noteWithAd, { '_gaps': !noGap }]" :data-scroll-anchor="note.id">
+ <MkNote :class="$style.note" :note="note" :withHardMute="true"/>
+ <div :class="$style.ad">
+ <MkAd :preferForms="['horizontal', 'horizontal-big']"/>
+ </div>
+ </div>
+ <MkNote v-else :class="$style.note" :note="note" :withHardMute="true" :data-scroll-anchor="note.id"/>
+ </template>
+ </component>
+ </template>
+ </MkPagination>
</MkPullToRefresh>
</template>
<script lang="ts" setup>
-import { computed, watch, onUnmounted, provide, useTemplateRef } from 'vue';
+import { computed, watch, onUnmounted, provide, useTemplateRef, TransitionGroup } from 'vue';
import * as Misskey from 'misskey-js';
import type { BasicTimelineType } from '@/timelines.js';
import type { Paging } from '@/components/MkPagination.vue';
-import MkNotes from '@/components/MkNotes.vue';
import MkPullToRefresh from '@/components/MkPullToRefresh.vue';
import { useStream } from '@/stream.js';
import * as sound from '@/utility/sound.js';
import { $i } from '@/i.js';
import { instance } from '@/instance.js';
import { prefer } from '@/preferences.js';
+import MkNote from '@/components/MkNote.vue';
+import MkPagination from '@/components/MkPagination.vue';
+import { i18n } from '@/i18n.js';
+import { infoImageUrl } from '@/instance.js';
const props = withDefaults(defineProps<{
src: BasicTimelineType | 'mentions' | 'directs' | 'list' | 'antenna' | 'channel' | 'role';
@@ -71,12 +97,12 @@ type TimelineQueryType = {
};
const prComponent = useTemplateRef('prComponent');
-const tlComponent = useTemplateRef('tlComponent');
+const pagingComponent = useTemplateRef('pagingComponent');
let tlNotesCount = 0;
function prepend(note: Misskey.entities.Note) {
- if (tlComponent.value == null) return;
+ if (pagingComponent.value == null) return;
tlNotesCount++;
@@ -84,7 +110,7 @@ function prepend(note: Misskey.entities.Note) {
note._shouldInsertAd_ = true;
}
- tlComponent.value.pagingComponent?.prepend(note);
+ pagingComponent.value.prepend(note);
emit('note');
@@ -96,6 +122,7 @@ function prepend(note: Misskey.entities.Note) {
let connection: Misskey.ChannelConnection | null = null;
let connection2: Misskey.ChannelConnection | null = null;
let paginationQuery: Paging | null = null;
+const noGap = !prefer.s.showGapBetweenNotesInTimeline;
const stream = useStream();
@@ -290,11 +317,11 @@ onUnmounted(() => {
function reloadTimeline() {
return new Promise<void>((res) => {
- if (tlComponent.value == null) return;
+ if (pagingComponent.value == null) return;
tlNotesCount = 0;
- tlComponent.value.pagingComponent?.reload().then(() => {
+ pagingComponent.value.reload().then(() => {
res();
});
});
@@ -304,3 +331,56 @@ defineExpose({
reloadTimeline,
});
</script>
+
+<style lang="scss" module>
+.transition_x_move,
+.transition_x_enterActive,
+.transition_x_leaveActive {
+ transition: opacity 0.3s cubic-bezier(0,.5,.5,1), transform 0.3s cubic-bezier(0,.5,.5,1) !important;
+}
+.transition_x_enterFrom,
+.transition_x_leaveTo {
+ opacity: 0;
+ transform: translateY(-50%);
+}
+.transition_x_leaveActive {
+ position: absolute;
+}
+
+.reverse {
+ display: flex;
+ flex-direction: column-reverse;
+}
+
+.root {
+ container-type: inline-size;
+
+ &.noGap {
+ background: var(--MI_THEME-panel);
+
+ .note {
+ border-bottom: solid 0.5px var(--MI_THEME-divider);
+ }
+
+ .ad {
+ padding: 8px;
+ background-size: auto auto;
+ background-image: repeating-linear-gradient(45deg, transparent, transparent 8px, var(--MI_THEME-bg) 8px, var(--MI_THEME-bg) 14px);
+ border-bottom: solid 0.5px var(--MI_THEME-divider);
+ }
+ }
+
+ &:not(.noGap) {
+ background: var(--MI_THEME-bg);
+
+ .note {
+ background: var(--MI_THEME-panel);
+ border-radius: var(--MI-radius);
+ }
+ }
+}
+
+.ad:empty {
+ display: none;
+}
+</style>
diff --git a/packages/frontend/src/components/MkTokenGenerateWindow.vue b/packages/frontend/src/components/MkTokenGenerateWindow.vue
index b449155edb..42cb6f1e82 100644
--- a/packages/frontend/src/components/MkTokenGenerateWindow.vue
+++ b/packages/frontend/src/components/MkTokenGenerateWindow.vue
@@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template #header>{{ title || i18n.ts.generateAccessToken }}</template>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps_m">
<div v-if="information">
<MkInfo warn>{{ information }}</MkInfo>
@@ -42,7 +42,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</div>
- </MkSpacer>
+ </div>
</MkModalWindow>
</template>
diff --git a/packages/frontend/src/components/MkTutorialDialog.vue b/packages/frontend/src/components/MkTutorialDialog.vue
index 92f71b01af..d6abbf6504 100644
--- a/packages/frontend/src/components/MkTutorialDialog.vue
+++ b/packages/frontend/src/components/MkTutorialDialog.vue
@@ -29,7 +29,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-if="page === 0">
<div :class="$style.centerPage">
<MkAnimBg style="position: absolute; top: 0;" :scale="1.5"/>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps" style="text-align: center;">
<i class="ti ti-confetti" style="display: block; margin: auto; font-size: 3em; color: var(--MI_THEME-accent);"></i>
<div style="font-size: 120%;">{{ i18n.ts._initialTutorial._landing.title }}</div>
@@ -37,15 +37,15 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton primary rounded gradate style="margin: 16px auto 0 auto;" @click="page++">{{ i18n.ts._initialTutorial.launchTutorial }} <i class="ti ti-arrow-right"></i></MkButton>
<MkButton style="margin: 0 auto;" transparent rounded @click="close(true)">{{ i18n.ts.close }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
<template v-else-if="page === 1">
<div style="height: 100cqh; overflow: auto;">
<div :class="$style.pageRoot">
- <MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;" :class="$style.pageMain">
<XNote phase="aboutNote"/>
- </MkSpacer>
+ </div>
<div :class="$style.pageFooter">
<div class="_buttonsCenter">
<MkButton v-if="initialPage !== 1" rounded @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
@@ -58,12 +58,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else-if="page === 2">
<div style="height: 100cqh; overflow: auto;">
<div :class="$style.pageRoot">
- <MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;" :class="$style.pageMain">
<div class="_gaps">
<XNote phase="howToReact" @reacted="isReactionTutorialPushed = true"/>
<div v-if="!isReactionTutorialPushed">{{ i18n.ts._initialTutorial._reaction.reactToContinue }}</div>
</div>
- </MkSpacer>
+ </div>
<div :class="$style.pageFooter">
<div class="_buttonsCenter">
<MkButton v-if="initialPage !== 2" rounded @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
@@ -76,9 +76,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else-if="page === 3">
<div style="height: 100cqh; overflow: auto;">
<div :class="$style.pageRoot">
- <MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;" :class="$style.pageMain">
<XTimeline/>
- </MkSpacer>
+ </div>
<div :class="$style.pageFooter">
<div class="_buttonsCenter">
<MkButton v-if="initialPage !== 3" rounded @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
@@ -91,9 +91,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else-if="page === 4">
<div style="height: 100cqh; overflow: auto;">
<div :class="$style.pageRoot">
- <MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;" :class="$style.pageMain">
<XPostNote/>
- </MkSpacer>
+ </div>
<div :class="$style.pageFooter">
<div class="_buttonsCenter">
<MkButton v-if="initialPage !== 3" rounded @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
@@ -106,12 +106,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else-if="page === 5">
<div style="height: 100cqh; overflow: auto;">
<div :class="$style.pageRoot">
- <MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;" :class="$style.pageMain">
<div class="_gaps">
<XSensitive @succeeded="isSensitiveTutorialSucceeded = true"/>
<div v-if="!isSensitiveTutorialSucceeded">{{ i18n.ts._initialTutorial._howToMakeAttachmentsSensitive.doItToContinue }}</div>
</div>
- </MkSpacer>
+ </div>
<div :class="$style.pageFooter">
<div class="_buttonsCenter">
<MkButton v-if="initialPage !== 2" rounded @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
@@ -124,7 +124,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else-if="page === 6">
<div :class="$style.centerPage">
<MkAnimBg style="position: absolute; top: 0;" :scale="1.5"/>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps" style="text-align: center;">
<i class="ti ti-check" style="display: block; margin: auto; font-size: 3em; color: var(--MI_THEME-accent);"></i>
<div style="font-size: 120%;">{{ i18n.ts._initialTutorial._done.title }}</div>
@@ -139,7 +139,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton rounded primary gradate @click="close(false)">{{ i18n.ts.close }}</MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
</Transition>
diff --git a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
index 34e86444ad..aaefa5036a 100644
--- a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
+++ b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else #header>New announcement</template>
<div>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps_m">
<MkInput v-model="title">
<template #label>{{ i18n.ts.title }}</template>
@@ -41,7 +41,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkSwitch>
<MkButton v-if="announcement" danger @click="del()"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
</div>
- </MkSpacer>
+ </div>
<div :class="$style.footer">
<MkButton primary rounded style="margin: 0 auto;" @click="done"><i class="ti ti-check"></i> {{ props.announcement ? i18n.ts.update : i18n.ts.create }}</MkButton>
</div>
diff --git a/packages/frontend/src/components/MkUserSetupDialog.vue b/packages/frontend/src/components/MkUserSetupDialog.vue
index 767f5c591a..82214ed5a5 100644
--- a/packages/frontend/src/components/MkUserSetupDialog.vue
+++ b/packages/frontend/src/components/MkUserSetupDialog.vue
@@ -33,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-if="page === 0">
<div :class="$style.centerPage">
<MkAnimBg style="position: absolute; top: 0;" :scale="1.5"/>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps" style="text-align: center;">
<i class="ti ti-confetti" style="display: block; margin: auto; font-size: 3em; color: var(--MI_THEME-accent);"></i>
<div style="font-size: 120%;">{{ i18n.ts._initialAccountSetting.accountCreated }}</div>
@@ -41,15 +41,15 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton primary rounded gradate style="margin: 16px auto 0 auto;" data-cy-user-setup-continue @click="page++">{{ i18n.ts._initialAccountSetting.profileSetting }} <i class="ti ti-arrow-right"></i></MkButton>
<MkButton style="margin: 0 auto;" transparent rounded @click="later(true)">{{ i18n.ts.later }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
<template v-else-if="page === 1">
<div style="height: 100cqh; overflow: auto;">
<div :class="$style.pageRoot">
- <MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;" :class="$style.pageMain">
<XProfile/>
- </MkSpacer>
+ </div>
<div :class="$style.pageFooter">
<div class="_buttonsCenter">
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
@@ -62,9 +62,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else-if="page === 2">
<div style="height: 100cqh; overflow: auto;">
<div :class="$style.pageRoot">
- <MkSpacer :marginMin="20" :marginMax="28" :class="$style.pageMain">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;" :class="$style.pageMain">
<XPrivacy/>
- </MkSpacer>
+ </div>
<div :class="$style.pageFooter">
<div class="_buttonsCenter">
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
@@ -76,9 +76,9 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<template v-else-if="page === 3">
<div style="height: 100cqh; overflow: auto;">
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<XFollow/>
- </MkSpacer>
+ </div>
<div :class="$style.pageFooter">
<div class="_buttonsCenter">
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
@@ -89,7 +89,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<template v-else-if="page === 4">
<div :class="$style.centerPage">
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps" style="text-align: center;">
<i class="ti ti-bell-ringing-2" style="display: block; margin: auto; font-size: 3em; color: var(--MI_THEME-accent);"></i>
<div style="font-size: 120%;">{{ i18n.ts.pushNotification }}</div>
@@ -100,13 +100,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
<template v-else-if="page === 5">
<div :class="$style.centerPage">
<MkAnimBg style="position: absolute; top: 0;" :scale="1.5"/>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps" style="text-align: center;">
<i class="ti ti-check" style="display: block; margin: auto; font-size: 3em; color: var(--MI_THEME-accent);"></i>
<div style="font-size: 120%;">{{ i18n.ts._initialAccountSetting.initialAccountSettingCompleted }}</div>
@@ -119,7 +119,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton rounded primary data-cy-user-setup-continue @click="setupComplete()">{{ i18n.ts.close }}</MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
</Transition>
@@ -147,7 +147,7 @@ const emit = defineEmits<{
}>();
const dialog = useTemplateRef('dialog');
-
+
const page = ref(store.s.accountSetupWizard);
watch(page, () => {
diff --git a/packages/frontend/src/components/SkMfmWindow.vue b/packages/frontend/src/components/SkMfmWindow.vue
index a628758a0f..14d309b7ba 100644
--- a/packages/frontend/src/components/SkMfmWindow.vue
+++ b/packages/frontend/src/components/SkMfmWindow.vue
@@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
MFM Cheatsheet
</template>
<MkStickyContainer>
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div class="mfm-cheat-sheet">
<div>{{ i18n.ts._mfm.intro }}</div>
<br/>
@@ -402,7 +402,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</div>
- </MkSpacer>
+ </div>
</MkStickyContainer>
</MkWindow>
</template>
diff --git a/packages/frontend/src/components/global/MkPageHeader.vue b/packages/frontend/src/components/global/MkPageHeader.vue
index 42bb49e8d9..c939f0b44e 100644
--- a/packages/frontend/src/components/global/MkPageHeader.vue
+++ b/packages/frontend/src/components/global/MkPageHeader.vue
@@ -49,19 +49,12 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
-<script lang="ts" setup>
-import { onMounted, onUnmounted, ref, inject, useTemplateRef, computed } from 'vue';
-import { scrollToTop } from '@@/js/scroll.js';
-import XTabs from './MkPageHeader.tabs.vue';
-import type { Tab } from './MkPageHeader.tabs.vue';
+<script lang="ts">
import type { PageHeaderItem } from '@/types/page-header.js';
import type { PageMetadata } from '@/page.js';
-import { globalEvents } from '@/events.js';
-import { openAccountMenu as openAccountMenu_ } from '@/accounts.js';
-import { $i } from '@/i.js';
-import { DI } from '@/di.js';
+import type { Tab } from './MkPageHeader.tabs.vue';
-const props = withDefaults(defineProps<{
+export type PageHeaderProps = {
overridePageMetadata?: PageMetadata;
tabs?: Tab[];
tab?: string;
@@ -70,7 +63,19 @@ const props = withDefaults(defineProps<{
hideTitle?: boolean;
displayMyAvatar?: boolean;
displayBackButton?: boolean;
-}>(), {
+};
+</script>
+
+<script lang="ts" setup>
+import { onMounted, onUnmounted, ref, inject, useTemplateRef, computed } from 'vue';
+import { scrollToTop } from '@@/js/scroll.js';
+import XTabs from './MkPageHeader.tabs.vue';
+import { globalEvents } from '@/events.js';
+import { openAccountMenu as openAccountMenu_ } from '@/accounts.js';
+import { $i } from '@/i.js';
+import { DI } from '@/di.js';
+
+const props = withDefaults(defineProps<PageHeaderProps>(), {
tabs: () => ([] as Tab[]),
});
diff --git a/packages/frontend/src/components/global/MkSpacer.vue b/packages/frontend/src/components/global/MkSpacer.vue
deleted file mode 100644
index c3bc37cb92..0000000000
--- a/packages/frontend/src/components/global/MkSpacer.vue
+++ /dev/null
@@ -1,58 +0,0 @@
-<!--
-SPDX-FileCopyrightText: syuilo and misskey-project
-SPDX-License-Identifier: AGPL-3.0-only
--->
-
-<template>
-<div :class="[$style.root, { [$style.rootMin]: forceSpacerMin }]">
- <div :class="$style.content">
- <slot></slot>
- </div>
-</div>
-</template>
-
-<script lang="ts" setup>
-import { inject } from 'vue';
-import { deviceKind } from '@/utility/device-kind.js';
-import { DI } from '@/di.js';
-
-const props = withDefaults(defineProps<{
- contentMax?: number | null;
- marginMin?: number;
- marginMax?: number;
-}>(), {
- contentMax: null,
- marginMin: 12,
- marginMax: 24,
-});
-
-const forceSpacerMin = inject(DI.forceSpacerMin, false) || deviceKind === 'smartphone';
-</script>
-
-<style lang="scss" module>
-.root {
- box-sizing: border-box;
- width: 100%;
-}
-.rootMin {
- padding: v-bind('props.marginMin + "px"') !important;
-}
-
-.content {
- margin: 0 auto;
- max-width: v-bind('props.contentMax + "px"');
- container-type: inline-size;
-}
-
-@container (max-width: 450px) {
- .root {
- padding: v-bind('props.marginMin + "px"');
- }
-}
-
-@container (min-width: 451px) {
- .root {
- padding: v-bind('props.marginMax + "px"');
- }
-}
-</style>
diff --git a/packages/frontend/src/components/global/PageWithHeader.vue b/packages/frontend/src/components/global/PageWithHeader.vue
index 85e61fd532..58c222038a 100644
--- a/packages/frontend/src/components/global/PageWithHeader.vue
+++ b/packages/frontend/src/components/global/PageWithHeader.vue
@@ -6,9 +6,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div ref="rootEl" :class="[$style.root, reversed ? '_pageScrollableReversed' : '_pageScrollable']">
<MkStickyContainer>
- <template #header><MkPageHeader v-model:tab="tab" :actions="actions" :tabs="tabs" :displayBackButton="displayBackButton"/></template>
+ <template #header><MkPageHeader v-model:tab="tab" v-bind="pageHeaderProps"/></template>
<div :class="$style.body">
- <slot></slot>
+ <MkSwiper v-if="swipable && (props.tabs?.length ?? 1) > 1" v-model:tab="tab" :class="$style.swiper" :tabs="props.tabs">
+ <slot></slot>
+ </MkSwiper>
+ <slot v-else></slot>
</div>
<template #footer><slot name="footer"></slot></template>
</MkStickyContainer>
@@ -16,22 +19,24 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { useTemplateRef } from 'vue';
+import { computed, useTemplateRef } from 'vue';
import { scrollInContainer } from '@@/js/scroll.js';
-import type { PageHeaderItem } from '@/types/page-header.js';
-import type { Tab } from './MkPageHeader.tabs.vue';
+import type { PageHeaderProps } from './MkPageHeader.vue';
import { useScrollPositionKeeper } from '@/use/use-scroll-position-keeper.js';
+import MkSwiper from '@/components/MkSwiper.vue';
+import { useRouter } from '@/router.js';
-const props = withDefaults(defineProps<{
- tabs?: Tab[];
- actions?: PageHeaderItem[] | null;
- thin?: boolean;
- hideTitle?: boolean;
- displayMyAvatar?: boolean;
+const props = withDefaults(defineProps<PageHeaderProps & {
reversed?: boolean;
- displayBackButton?: boolean;
+ swipable?: boolean;
}>(), {
- tabs: () => ([] as Tab[]),
+ reversed: false,
+ swipable: true,
+});
+
+const pageHeaderProps = computed(() => {
+ const { reversed, ...rest } = props;
+ return rest;
});
const tab = defineModel<string>('tab');
@@ -39,10 +44,18 @@ const rootEl = useTemplateRef('rootEl');
useScrollPositionKeeper(rootEl);
+const router = useRouter();
+
+router.useListener('same', () => {
+ scrollToTop();
+});
+
+function scrollToTop() {
+ if (rootEl.value) scrollInContainer(rootEl.value, { top: 0, behavior: 'smooth' });
+}
+
defineExpose({
- scrollToTop: () => {
- if (rootEl.value) scrollInContainer(rootEl.value, { top: 0, behavior: 'smooth' });
- },
+ scrollToTop,
});
</script>
@@ -51,7 +64,7 @@ defineExpose({
}
-.body {
+.body, .swiper {
min-height: calc(100cqh - (var(--MI-stickyTop, 0px) + var(--MI-stickyBottom, 0px)));
}
</style>
diff --git a/packages/frontend/src/components/global/RouterView.vue b/packages/frontend/src/components/global/RouterView.vue
index 78ac6900a3..27f7b18559 100644
--- a/packages/frontend/src/components/global/RouterView.vue
+++ b/packages/frontend/src/components/global/RouterView.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div ref="rootEl" class="_pageContainer" :class="$style.root">
+<div class="_pageContainer" :class="$style.root">
<KeepAlive :max="prefer.s.numberOfPageCache">
<Suspense :timeout="0">
<component :is="currentPageComponent" :key="key" v-bind="Object.fromEntries(currentPageProps)"/>
@@ -42,37 +42,6 @@ provide(DI.viewId, viewId);
const currentDepth = inject(DI.routerCurrentDepth, 0);
provide(DI.routerCurrentDepth, currentDepth + 1);
-const rootEl = useTemplateRef('rootEl');
-onMounted(() => {
- if (prefer.s.animation) {
- rootEl.value.style.viewTransitionName = viewId; // view-transition-nameã«css varãŒä½¿ãˆãªã„ã£ã½ã„ãŸã‚直接代入
- }
-});
-
-// view-transition-newãªã©ã®<pt-name-selector>ã«ã¯css varãŒä½¿ãˆãšã€v-bindã§ããªã„ãŸã‚直接スタイルを生æˆ
-const viewTransitionStylesTag = window.document.createElement('style');
-viewTransitionStylesTag.textContent = `
-@keyframes ${viewId}-old {
- to { transform: scale(0.95); opacity: 0; }
-}
-
-@keyframes ${viewId}-new {
- from { transform: scale(0.95); opacity: 0; }
-}
-
-::view-transition-old(${viewId}) {
- animation-duration: 0.2s;
- animation-name: ${viewId}-old;
-}
-
-::view-transition-new(${viewId}) {
- animation-duration: 0.2s;
- animation-name: ${viewId}-new;
-}
-`;
-
-window.document.head.appendChild(viewTransitionStylesTag);
-
const current = router.current!;
const currentPageComponent = shallowRef('component' in current.route ? current.route.component : MkLoadingPage);
const currentPageProps = ref(current.props);
@@ -90,18 +59,7 @@ router.useListener('change', ({ resolved }) => {
currentRoutePath = resolved.route.path;
}
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
- if (prefer.s.animation && window.document.startViewTransition) {
- window.document.startViewTransition(() => new Promise((res) => {
- _();
- nextTick(() => {
- res();
- //setTimeout(res, 100);
- });
- }));
- } else {
- _();
- }
+ _();
});
</script>
diff --git a/packages/frontend/src/components/grid/MkGrid.vue b/packages/frontend/src/components/grid/MkGrid.vue
index c37f3df0d3..f80f037285 100644
--- a/packages/frontend/src/components/grid/MkGrid.vue
+++ b/packages/frontend/src/components/grid/MkGrid.vue
@@ -38,7 +38,6 @@ SPDX-License-Identifier: AGPL-3.0-only
:setting="rowSetting"
:bus="bus"
:using="row.using"
- :class="[lastLine === row.index ? 'last_row' : '']"
@operation:beginEdit="onCellEditBegin"
@operation:endEdit="onCellEditEnd"
@change:value="onChangeCellValue"
@@ -1301,8 +1300,6 @@ onMounted(() => {
</style>
<style lang="scss">
-$borderSetting: solid 0.5px var(--MI_THEME-divider);
-
// é…下コンãƒãƒ¼ãƒãƒ³ãƒˆã‚’å«ã‚ã¦ä¸€æ‹¬ã—ã¦ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã™ã‚‹ãŸã‚ã€scopedã‚‚moduleも使用ã§ããªã„
.mk_grid_border {
--rootBorderSetting: none;
@@ -1310,66 +1307,39 @@ $borderSetting: solid 0.5px var(--MI_THEME-divider);
border-spacing: 0;
- &.mk_grid_root_border {
- --rootBorderSetting: #{$borderSetting};
- }
-
&.mk_grid_root_rounded {
--borderRadius: var(--MI-radius);
}
.mk_grid_thead {
+ position: sticky;
+ z-index: 1;
+ left: 0;
+ top: 0;
+ -webkit-backdrop-filter: var(--MI-blur, blur(8px));
+ backdrop-filter: var(--MI-blur, blur(20px));
+ background: color(from var(--MI_THEME-bg) srgb r g b / 0.5);
+
.mk_grid_tr {
.mk_grid_th {
- border-left: $borderSetting;
- border-top: var(--rootBorderSetting);
- &:first-child {
- // 左上セル
- border-left: var(--rootBorderSetting);
- border-top-left-radius: var(--borderRadius);
- }
-
- &:last-child {
- // å³ä¸Šã‚»ãƒ«
- border-top-right-radius: var(--borderRadius);
- border-right: var(--rootBorderSetting);
- }
}
}
}
.mk_grid_tbody {
.mk_grid_tr {
- .mk_grid_td, .mk_grid_th {
- border-left: $borderSetting;
- border-top: $borderSetting;
-
- &:first-child {
- // 左端ã®åˆ—
- border-left: var(--rootBorderSetting);
- }
+ &:nth-child(odd) {
+ background: var(--MI_THEME-panel);
+ }
- &:last-child {
- // 一番å³ç«¯ã®åˆ—
- border-right: var(--rootBorderSetting);
- }
+ &:nth-child(even) {
+ background: var(--MI_THEME-bg);
}
- }
- .last_row {
.mk_grid_td, .mk_grid_th {
- // 一番下ã®è¡Œ
- border-bottom: var(--rootBorderSetting);
-
- &:first-child {
- // 左下セル
- border-bottom-left-radius: var(--borderRadius);
- }
-
- &:last-child {
- // å³ä¸‹ã‚»ãƒ«
- border-bottom-right-radius: var(--borderRadius);
+ &:hover {
+ box-shadow: 0 0 0 1px var(--MI_THEME-divider) inset;
}
}
}
diff --git a/packages/frontend/src/components/index.ts b/packages/frontend/src/components/index.ts
index 34cf598b84..ec6ea7c569 100644
--- a/packages/frontend/src/components/index.ts
+++ b/packages/frontend/src/components/index.ts
@@ -22,7 +22,6 @@ import MkLoading from './global/MkLoading.vue';
import MkError from './global/MkError.vue';
import MkAd from './global/MkAd.vue';
import MkPageHeader from './global/MkPageHeader.vue';
-import MkSpacer from './global/MkSpacer.vue';
import MkStickyContainer from './global/MkStickyContainer.vue';
import MkLazy from './global/MkLazy.vue';
import PageWithHeader from './global/PageWithHeader.vue';
@@ -60,7 +59,6 @@ export const components = {
MkError: MkError,
MkAd: MkAd,
MkPageHeader: MkPageHeader,
- MkSpacer: MkSpacer,
MkStickyContainer: MkStickyContainer,
MkLazy: MkLazy,
PageWithHeader: PageWithHeader,
@@ -92,7 +90,6 @@ declare module '@vue/runtime-core' {
MkError: typeof MkError;
MkAd: typeof MkAd;
MkPageHeader: typeof MkPageHeader;
- MkSpacer: typeof MkSpacer;
MkStickyContainer: typeof MkStickyContainer;
MkLazy: typeof MkLazy;
PageWithHeader: typeof PageWithHeader;
diff --git a/packages/frontend/src/di.ts b/packages/frontend/src/di.ts
index 58a2cce207..e2590da60b 100644
--- a/packages/frontend/src/di.ts
+++ b/packages/frontend/src/di.ts
@@ -17,5 +17,4 @@ export const DI = {
mfmEmojiReactCallback: Symbol() as InjectionKey<(emoji: string) => void>,
inModal: Symbol() as InjectionKey<boolean>,
inAppSearchMarkerId: Symbol() as InjectionKey<Ref<string | null>>,
- forceSpacerMin: Symbol() as InjectionKey<boolean>,
};
diff --git a/packages/frontend/src/pages/about-sharkey.vue b/packages/frontend/src/pages/about-sharkey.vue
index 833aed2c89..94e899e408 100644
--- a/packages/frontend/src/pages/about-sharkey.vue
+++ b/packages/frontend/src/pages/about-sharkey.vue
@@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkStickyContainer>
<template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
<div style="overflow: clip;">
- <MkSpacer :contentMax="600" :marginMin="20">
+ <div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 20px;">
<div class="_gaps_m znqjceqz">
<div v-panel class="about">
<div ref="containerEl" class="container" :class="{ playing: easterEggEngine != null }">
@@ -85,7 +85,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-if="section.link" #description><MkLink :url="section.link.url">{{ section.link.label }}</MkLink></template>
</FormSection>
</div>
- </MkSpacer>
+ </div>
</div>
</MkStickyContainer>
</template>
diff --git a/packages/frontend/src/pages/about.vue b/packages/frontend/src/pages/about.vue
index d955857e20..6b7b650a75 100644
--- a/packages/frontend/src/pages/about.vue
+++ b/packages/frontend/src/pages/about.vue
@@ -4,21 +4,19 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <MkSpacer v-if="tab === 'overview'" :contentMax="600" :marginMin="20">
- <XOverview/>
- </MkSpacer>
- <MkSpacer v-else-if="tab === 'emojis'" :contentMax="1000" :marginMin="20">
- <XEmojis/>
- </MkSpacer>
- <MkSpacer v-else-if="instance.federation !== 'none' && tab === 'federation'" :contentMax="1000" :marginMin="20">
- <XFederation/>
- </MkSpacer>
- <MkSpacer v-else-if="tab === 'charts'" :contentMax="1000" :marginMin="20">
- <MkInstanceStats/>
- </MkSpacer>
- </MkSwiper>
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div v-if="tab === 'overview'" class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 20px;">
+ <XOverview/>
+ </div>
+ <div v-else-if="tab === 'emojis'" class="_spacer" style="--MI_SPACER-w: 1000px; --MI_SPACER-min: 20px;">
+ <XEmojis/>
+ </div>
+ <div v-else-if="instance.federation !== 'none' && tab === 'federation'" class="_spacer" style="--MI_SPACER-w: 1000px; --MI_SPACER-min: 20px;">
+ <XFederation/>
+ </div>
+ <div v-else-if="tab === 'charts'" class="_spacer" style="--MI_SPACER-w: 1000px; --MI_SPACER-min: 20px;">
+ <MkInstanceStats/>
+ </div>
</PageWithHeader>
</template>
@@ -28,7 +26,6 @@ import { instance } from '@/instance.js';
import { i18n } from '@/i18n.js';
import { claimAchievement } from '@/utility/achievements.js';
import { definePage } from '@/page.js';
-import MkSwiper from '@/components/MkSwiper.vue';
const XOverview = defineAsyncComponent(() => import('@/pages/about.overview.vue'));
const XEmojis = defineAsyncComponent(() => import('@/pages/about.emojis.vue'));
diff --git a/packages/frontend/src/pages/achievements.vue b/packages/frontend/src/pages/achievements.vue
index 423e709da4..1560403b70 100644
--- a/packages/frontend/src/pages/achievements.vue
+++ b/packages/frontend/src/pages/achievements.vue
@@ -5,9 +5,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="1200">
+ <div class="_spacer" style="--MI_SPACER-w: 1200px;">
<MkAchievements :user="$i"/>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin-file.vue b/packages/frontend/src/pages/admin-file.vue
index 1e3e106842..8495642a8c 100644
--- a/packages/frontend/src/pages/admin-file.vue
+++ b/packages/frontend/src/pages/admin-file.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer v-if="file" :contentMax="600" :marginMin="16" :marginMax="32">
+ <div v-if="file" class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div v-if="tab === 'overview'" class="cxqhhsmd _gaps_m">
<a class="thumbnail" :href="file.url" target="_blank">
<MkDriveFileThumbnail class="thumbnail" :file="file" fit="contain"/>
@@ -65,7 +65,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkObjectView v-if="info" tall :value="info">
</MkObjectView>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin-user.vue b/packages/frontend/src/pages/admin-user.vue
index 06d557f045..efe547ff21 100644
--- a/packages/frontend/src/pages/admin-user.vue
+++ b/packages/frontend/src/pages/admin-user.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="600" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense :p="init">
<div v-if="tab === 'overview'" class="_gaps_m">
<div class="aeakzknw">
@@ -201,7 +201,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkObjectView>
</div>
</FormSuspense>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/abuse-report/notification-recipient.editor.vue b/packages/frontend/src/pages/admin/abuse-report/notification-recipient.editor.vue
index 10925fa4ab..b69c818b48 100644
--- a/packages/frontend/src/pages/admin/abuse-report/notification-recipient.editor.vue
+++ b/packages/frontend/src/pages/admin/abuse-report/notification-recipient.editor.vue
@@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ mode === 'create' ? i18n.ts._abuseReport._notificationRecipient.createRecipient : i18n.ts._abuseReport._notificationRecipient.modifyRecipient }}
</template>
<div v-if="loading === 0" style="display: flex; flex-direction: column; min-height: 100%;">
- <MkSpacer :marginMin="20" :marginMax="28" style="flex-grow: 1;">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px; flex-grow: 1;">
<div :class="$style.root" class="_gaps_m">
<MkInput v-model="title">
<template #label>{{ i18n.ts.title }}</template>
@@ -57,7 +57,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #label>{{ i18n.ts.enable }}</template>
</MkSwitch>
</div>
- </MkSpacer>
+ </div>
<div :class="$style.footer" class="_buttonsCenter">
<MkButton primary rounded :disabled="disableSubmitButton" @click="onSubmitClicked"><i class="ti ti-check"></i> {{ i18n.ts.ok }}</MkButton>
diff --git a/packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue b/packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue
index a569ab7c33..f5e77cbe4e 100644
--- a/packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue
+++ b/packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div :class="$style.root" class="_gaps_m">
<div :class="$style.addButton">
<MkButton primary @click="onAddButtonClicked">
@@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only
/>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/abuses.vue b/packages/frontend/src/pages/admin/abuses.vue
index 3f1df95f25..4ec4372492 100644
--- a/packages/frontend/src/pages/admin/abuses.vue
+++ b/packages/frontend/src/pages/admin/abuses.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div :class="$style.root" class="_gaps">
<div :class="$style.subMenus" class="_gaps">
<MkButton link to="/admin/abuse-report-notification-recipient" primary>{{ i18n.ts.notificationSetting }}</MkButton>
@@ -53,7 +53,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkPagination>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/ads.vue b/packages/frontend/src/pages/admin/ads.vue
index aa8ba2f7c3..c5baeda7b0 100644
--- a/packages/frontend/src/pages/admin/ads.vue
+++ b/packages/frontend/src/pages/admin/ads.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<MkSelect v-model="filterType" :class="$style.input" @update:modelValue="filterItems">
<template #label>{{ i18n.ts.state }}</template>
<option value="all">{{ i18n.ts.all }}</option>
@@ -77,7 +77,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<i class="ti ti-reload"></i>{{ i18n.ts.more }}
</MkButton>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/announcements.vue b/packages/frontend/src/pages/admin/announcements.vue
index ea7f0cc73d..b2d7b4889a 100644
--- a/packages/frontend/src/pages/admin/announcements.vue
+++ b/packages/frontend/src/pages/admin/announcements.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="_gaps">
<MkInfo>{{ i18n.ts._announcement.shouldNotBeUsedToPresentPermanentInfo }}</MkInfo>
<MkInfo v-if="announcements.length > 5" warn>{{ i18n.ts._announcement.tooManyActiveAnnouncementDescription }}</MkInfo>
@@ -79,7 +79,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkButton>
</template>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/approvals.vue b/packages/frontend/src/pages/admin/approvals.vue
index c972728c85..77b4cc38a1 100644
--- a/packages/frontend/src/pages/admin/approvals.vue
+++ b/packages/frontend/src/pages/admin/approvals.vue
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div>
<PageWithHeader :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="_gaps_m">
<MkPagination ref="paginationComponent" :pagination="pagination" :displayLimit="50">
<template #default="{ items }">
@@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</MkPagination>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</div>
</template>
diff --git a/packages/frontend/src/pages/admin/branding.vue b/packages/frontend/src/pages/admin/branding.vue
index 1afc643a0a..64faf49848 100644
--- a/packages/frontend/src/pages/admin/branding.vue
+++ b/packages/frontend/src/pages/admin/branding.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense :p="init">
<div class="_gaps_m">
<MkInput v-model="iconUrl" type="url">
@@ -105,12 +105,12 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkTextarea>
</div>
</FormSuspense>
- </MkSpacer>
+ </div>
<template #footer>
<div :class="$style.footer">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="16">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 16px;">
<MkButton primary rounded @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
- </MkSpacer>
+ </div>
</div>
</template>
</PageWithHeader>
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.logs.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.logs.vue
index 4b145db0ed..c544561b13 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.logs.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.logs.vue
@@ -14,9 +14,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #header>
<i class="ti ti-notes" style="margin-right: 0.5em;"></i> {{ i18n.ts._customEmojisManager._gridCommon.registrationLogs }}
</template>
- <MkSpacer>
+ <div class="_spacer">
<XRegisterLogs :logs="logs"/>
- </MkSpacer>
+ </div>
</MkWindow>
</template>
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.search.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.search.vue
index ae43507d66..9938d5cc4a 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.search.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.search.vue
@@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<i class="ti ti-search" style="margin-right: 0.5em;"></i> {{ i18n.ts.search }}
</template>
<div :class="$style.root">
- <MkSpacer>
+ <div class="_spacer">
<div class="_gaps">
<div class="_gaps_s">
<MkInput
@@ -107,7 +107,7 @@ SPDX-License-Identifier: AGPL-3.0-only
/>
</MkFolder>
</div>
- </MkSpacer>
+ </div>
<div :class="$style.footerActions">
<MkButton primary @click="onSearchRequest">
{{ i18n.ts.search }}
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
index 260177c894..59b780bff6 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
@@ -285,7 +285,7 @@ const searchQuery = ref<EmojiSearchQuery>({
localOnly: null,
roles: [],
sortOrders: [],
- limit: 25,
+ limit: 100,
});
let searchWindowOpening = false;
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue
deleted file mode 100644
index 6e7e7e53e3..0000000000
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.vue
+++ /dev/null
@@ -1,35 +0,0 @@
-<!--
-SPDX-FileCopyrightText: syuilo and other misskey contributors
-SPDX-License-Identifier: AGPL-3.0-only
--->
-
-<template>
-<MkStickyContainer>
- <template #header>
- <MkPageHeader v-model:tab="headerTab" :tabs="headerTabs" hideTitle thin/>
- </template>
- <XListComponent v-if="headerTab === 'list'" key="localList"/>
- <MkSpacer v-else key="localRegister">
- <XRegisterComponent/>
- </MkSpacer>
-</MkStickyContainer>
-</template>
-
-<script setup lang="ts">
-import { ref, computed } from 'vue';
-import { i18n } from '@/i18n.js';
-import XListComponent from '@/pages/admin/custom-emojis-manager.local.list.vue';
-import XRegisterComponent from '@/pages/admin/custom-emojis-manager.local.register.vue';
-
-type PageMode = 'list' | 'register';
-
-const headerTab = ref<PageMode>('list');
-
-const headerTabs = computed(() => [{
- key: 'list',
- title: i18n.ts._customEmojisManager._local.tabTitleList,
-}, {
- key: 'register',
- title: i18n.ts._customEmojisManager._local.tabTitleRegister,
-}]);
-</script>
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.register.vue
index eff7efd0fa..e8e944df32 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.register.vue
@@ -4,67 +4,69 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div class="_gaps">
- <MkFolder>
- <template #icon><i class="ti ti-settings"></i></template>
- <template #label>{{ i18n.ts._customEmojisManager._local._register.uploadSettingTitle }}</template>
- <template #caption>{{ i18n.ts._customEmojisManager._local._register.uploadSettingDescription }}</template>
+<div class="_spacer">
+ <div class="_gaps">
+ <MkFolder>
+ <template #icon><i class="ti ti-settings"></i></template>
+ <template #label>{{ i18n.ts._customEmojisManager._local._register.uploadSettingTitle }}</template>
+ <template #caption>{{ i18n.ts._customEmojisManager._local._register.uploadSettingDescription }}</template>
- <div class="_gaps">
- <MkSelect v-model="selectedFolderId">
- <template #label>{{ i18n.ts.uploadFolder }}</template>
- <option v-for="folder in uploadFolders" :key="folder.id" :value="folder.id">
- {{ folder.name }}
- </option>
- </MkSelect>
+ <div class="_gaps">
+ <MkSelect v-model="selectedFolderId">
+ <template #label>{{ i18n.ts.uploadFolder }}</template>
+ <option v-for="folder in uploadFolders" :key="folder.id" :value="folder.id">
+ {{ folder.name }}
+ </option>
+ </MkSelect>
- <MkSwitch v-model="directoryToCategory">
- <template #label>{{ i18n.ts._customEmojisManager._local._register.directoryToCategoryLabel }}</template>
- <template #caption>{{ i18n.ts._customEmojisManager._local._register.directoryToCategoryCaption }}</template>
- </MkSwitch>
- </div>
- </MkFolder>
+ <MkSwitch v-model="directoryToCategory">
+ <template #label>{{ i18n.ts._customEmojisManager._local._register.directoryToCategoryLabel }}</template>
+ <template #caption>{{ i18n.ts._customEmojisManager._local._register.directoryToCategoryCaption }}</template>
+ </MkSwitch>
+ </div>
+ </MkFolder>
- <MkFolder>
- <template #icon><i class="ti ti-notes"></i></template>
- <template #label>{{ i18n.ts._customEmojisManager._gridCommon.registrationLogs }}</template>
- <template #caption>
- {{ i18n.ts._customEmojisManager._gridCommon.registrationLogsCaption }}
- </template>
- <XRegisterLogs :logs="requestLogs"/>
- </MkFolder>
+ <MkFolder>
+ <template #icon><i class="ti ti-notes"></i></template>
+ <template #label>{{ i18n.ts._customEmojisManager._gridCommon.registrationLogs }}</template>
+ <template #caption>
+ {{ i18n.ts._customEmojisManager._gridCommon.registrationLogsCaption }}
+ </template>
+ <XRegisterLogs :logs="requestLogs"/>
+ </MkFolder>
- <div
- :class="[$style.uploadBox, [isDragOver ? $style.dragOver : {}]]"
- @dragover.prevent="isDragOver = true"
- @dragleave.prevent="isDragOver = false"
- @drop.prevent.stop="onDrop"
- >
- <div style="margin-top: 1em">
- {{ i18n.ts._customEmojisManager._local._register.emojiInputAreaCaption }}
+ <div
+ :class="[$style.uploadBox, [isDragOver ? $style.dragOver : {}]]"
+ @dragover.prevent="isDragOver = true"
+ @dragleave.prevent="isDragOver = false"
+ @drop.prevent.stop="onDrop"
+ >
+ <div style="margin-top: 1em">
+ {{ i18n.ts._customEmojisManager._local._register.emojiInputAreaCaption }}
+ </div>
+ <ul>
+ <li>{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList1 }}</li>
+ <li><a @click.prevent="onFileSelectClicked">{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList2 }}</a></li>
+ <li><a @click.prevent="onDriveSelectClicked">{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList3 }}</a></li>
+ </ul>
</div>
- <ul>
- <li>{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList1 }}</li>
- <li><a @click.prevent="onFileSelectClicked">{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList2 }}</a></li>
- <li><a @click.prevent="onDriveSelectClicked">{{ i18n.ts._customEmojisManager._local._register.emojiInputAreaList3 }}</a></li>
- </ul>
- </div>
- <div v-if="gridItems.length > 0" :class="$style.gridArea">
- <MkGrid
- :data="gridItems"
- :settings="setupGrid()"
- @event="onGridEvent"
- />
- </div>
+ <div v-if="gridItems.length > 0" :class="$style.gridArea">
+ <MkGrid
+ :data="gridItems"
+ :settings="setupGrid()"
+ @event="onGridEvent"
+ />
+ </div>
- <div v-if="gridItems.length > 0" :class="$style.footer">
- <MkButton primary :disabled="registerButtonDisabled" @click="onRegistryClicked">
- {{ i18n.ts.registration }}
- </MkButton>
- <MkButton @click="onClearClicked">
- {{ i18n.ts.clear }}
- </MkButton>
+ <div v-if="gridItems.length > 0" :class="$style.footer">
+ <MkButton primary :disabled="registerButtonDisabled" @click="onRegistryClicked">
+ {{ i18n.ts.registration }}
+ </MkButton>
+ <MkButton @click="onClearClicked">
+ {{ i18n.ts.clear }}
+ </MkButton>
+ </div>
</div>
</div>
</template>
@@ -407,7 +409,7 @@ function fromDriveFile(it: Misskey.entities.DriveFile): GridItem {
return {
fileId: it.id,
url: it.url,
- name: it.name.replace(/(\.[a-zA-Z0-9]+)+$/, ''),
+ name: it.name.replace(/(\.[a-zA-Z0-9]+)+$/, '').replaceAll('-', '_').replaceAll(' ', '_'),
host: '',
category: '',
aliases: '',
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue
index c868a700f1..2fd7e331a2 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue
@@ -142,6 +142,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<script setup lang="ts">
import { computed, onMounted, ref, useCssModule } from 'vue';
import * as Misskey from 'misskey-js';
+import type { GridSortOrderKey, RequestLogItem } from '@/pages/admin/custom-emojis-manager.impl.js';
+import type { GridCellValueChangeEvent, GridEvent } from '@/components/grid/grid-event.js';
+import type { GridSetting } from '@/components/grid/grid.js';
+import type { SortOrder } from '@/components/MkSortOrderEditor.define.js';
import MkRemoteEmojiEditDialog from '@/components/MkRemoteEmojiEditDialog.vue';
import { misskeyApi } from '@/utility/misskey-api.js';
import { i18n } from '@/i18n.js';
@@ -157,11 +161,6 @@ import MkPagingButtons from '@/components/MkPagingButtons.vue';
import MkSortOrderEditor from '@/components/MkSortOrderEditor.vue';
import { useLoading } from '@/components/hook/useLoading.js';
-import type { GridSortOrderKey, RequestLogItem } from '@/pages/admin/custom-emojis-manager.impl.js';
-import type { GridCellValueChangeEvent, GridEvent } from '@/components/grid/grid-event.js';
-import type { GridSetting } from '@/components/grid/grid.js';
-import type { SortOrder } from '@/components/MkSortOrderEditor.define.js';
-
type GridItem = {
checked: boolean;
id: string;
@@ -260,7 +259,7 @@ const queryHost = ref<string | null>(null);
const queryLicense = ref<string | null>(null);
const queryUri = ref<string | null>(null);
const queryPublicUrl = ref<string | null>(null);
-const queryLimit = ref<number>(25);
+const queryLimit = ref<number>(100);
const previousQuery = ref<string | undefined>(undefined);
const sortOrders = ref<SortOrder<GridSortOrderKey>[]>([]);
const requestLogs = ref<RequestLogItem[]>([]);
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager2.vue b/packages/frontend/src/pages/admin/custom-emojis-manager2.vue
index 7667206fa8..14773d7f04 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager2.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager2.vue
@@ -4,25 +4,20 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div>
- <MkStickyContainer>
- <template #header>
- <MkPageHeader v-model:tab="headerTab" :tabs="headerTabs"/>
- </template>
- <XGridLocalComponent v-if="headerTab === 'local'" :class="$style.local"/>
- <XGridRemoteComponent v-else/>
- </MkStickyContainer>
-</div>
+<PageWithHeader v-model:tab="headerTab" :tabs="headerTabs">
+ <XGridLocalComponent v-if="headerTab === 'local'" :class="$style.local"/>
+ <XGridRemoteComponent v-else-if="headerTab === 'remote'" :class="$style.remote"/>
+ <XRegisterComponent v-else-if="headerTab === 'register'" :class="$style.register"/>
+</PageWithHeader>
</template>
<script setup lang="ts">
import { computed, ref } from 'vue';
import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
-import XGridLocalComponent from '@/pages/admin/custom-emojis-manager.local.vue';
+import XGridLocalComponent from '@/pages/admin/custom-emojis-manager.local.list.vue';
import XGridRemoteComponent from '@/pages/admin/custom-emojis-manager.remote.vue';
-import MkPageHeader from '@/components/global/MkPageHeader.vue';
-import MkStickyContainer from '@/components/global/MkStickyContainer.vue';
+import XRegisterComponent from '@/pages/admin/custom-emojis-manager.register.vue';
type PageMode = 'local' | 'remote';
@@ -34,6 +29,9 @@ const headerTabs = computed(() => [{
}, {
key: 'remote',
title: i18n.ts.remote,
+}, {
+ key: 'register',
+ title: i18n.ts._customEmojisManager._local.tabTitleRegister,
}]);
definePage(computed(() => ({
diff --git a/packages/frontend/src/pages/admin/database.vue b/packages/frontend/src/pages/admin/database.vue
index 6691142a64..d51f43c098 100644
--- a/packages/frontend/src/pages/admin/database.vue
+++ b/packages/frontend/src/pages/admin/database.vue
@@ -5,14 +5,14 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 800px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense v-slot="{ result: database }" :p="databasePromiseFactory">
<MkKeyValue v-for="table in database" :key="table[0]" oneline style="margin: 1em 0;">
<template #key>{{ table[0] }}</template>
<template #value>{{ bytes(table[1].size) }} ({{ number(table[1].count) }} recs)</template>
</MkKeyValue>
</FormSuspense>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/email-settings.vue b/packages/frontend/src/pages/admin/email-settings.vue
index f1827d756b..cdbca12435 100644
--- a/packages/frontend/src/pages/admin/email-settings.vue
+++ b/packages/frontend/src/pages/admin/email-settings.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense :p="init">
<div class="_gaps_m">
<MkSwitch v-model="enableEmail">
@@ -48,15 +48,15 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</div>
</FormSuspense>
- </MkSpacer>
+ </div>
<template #footer>
<div :class="$style.footer">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="16">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 16px;">
<div class="_buttons">
<MkButton primary rounded @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
<MkButton rounded @click="testEmail"><i class="ti ti-send"></i> {{ i18n.ts.testEmail }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
</PageWithHeader>
diff --git a/packages/frontend/src/pages/admin/external-services.vue b/packages/frontend/src/pages/admin/external-services.vue
index 131989844a..3cfc51af00 100644
--- a/packages/frontend/src/pages/admin/external-services.vue
+++ b/packages/frontend/src/pages/admin/external-services.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense :p="init">
<div class="_gaps_m">
<MkFolder>
@@ -52,7 +52,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder>
</div>
</FormSuspense>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/federation-job-queue.vue b/packages/frontend/src/pages/admin/federation-job-queue.vue
index 77e460d0eb..173cffedc2 100644
--- a/packages/frontend/src/pages/admin/federation-job-queue.vue
+++ b/packages/frontend/src/pages/admin/federation-job-queue.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<XQueue v-if="tab === 'deliver'" domain="deliver"/>
<XQueue v-else-if="tab === 'inbox'" domain="inbox"/>
<br>
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton @click="promoteAllQueues"><i class="ti ti-reload"></i> {{ i18n.ts.retryAllQueuesNow }}</MkButton>
<MkButton danger @click="clear"><i class="ti ti-trash"></i> {{ i18n.ts.clearQueue }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/federation.vue b/packages/frontend/src/pages/admin/federation.vue
index dcc8c52e55..16bed50002 100644
--- a/packages/frontend/src/pages/admin/federation.vue
+++ b/packages/frontend/src/pages/admin/federation.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="_gaps">
<div>
<MkInput v-model="host" :debounce="true" class="">
@@ -52,7 +52,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkPagination>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/files.vue b/packages/frontend/src/pages/admin/files.vue
index 12c633bf7f..87595a820b 100644
--- a/packages/frontend/src/pages/admin/files.vue
+++ b/packages/frontend/src/pages/admin/files.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="_gaps">
<div class="inputs" style="display: flex; gap: var(--MI-margin); flex-wrap: wrap;">
<MkSelect v-model="origin" style="margin: 0; flex: 1;">
@@ -28,7 +28,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<MkFileListForAdmin :pagination="pagination" :viewMode="viewMode"/>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue
index c366a7cd6a..0cb9d54bbe 100644
--- a/packages/frontend/src/pages/admin/index.vue
+++ b/packages/frontend/src/pages/admin/index.vue
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div ref="el" class="hiyeyicy" :class="{ wide: !narrow }">
<div v-if="!narrow || currentPage?.route.name == null" class="nav">
- <MkSpacer :contentMax="700" :marginMin="16">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px;">
<div class="lxpfedzu _gaps">
<div class="banner">
<img :src="instance.iconUrl || '/favicon.ico'" alt="" class="icon"/>
@@ -24,7 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSuperMenu :def="menuDef" :grid="narrow"></MkSuperMenu>
</div>
- </MkSpacer>
+ </div>
</div>
<div v-if="!(narrow && currentPage?.route.name == null)" class="main _pageContainer" style="height: 100%;">
<NestedRouterView/>
diff --git a/packages/frontend/src/pages/admin/invites.vue b/packages/frontend/src/pages/admin/invites.vue
index 7f0c35d6bc..83b040935b 100644
--- a/packages/frontend/src/pages/admin/invites.vue
+++ b/packages/frontend/src/pages/admin/invites.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div class="_gaps_m">
<MkFolder :expanded="false">
<template #icon><i class="ti ti-plus"></i></template>
@@ -49,7 +49,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</MkPagination>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/job-queue.vue b/packages/frontend/src/pages/admin/job-queue.vue
index 528c473c4f..3d405c566f 100644
--- a/packages/frontend/src/pages/admin/job-queue.vue
+++ b/packages/frontend/src/pages/admin/job-queue.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer>
+ <div class="_spacer">
<div v-if="tab === '-'" class="_gaps">
<div :class="$style.queues">
<div v-for="q in queueInfos" :key="q.name" :class="$style.queue" @click="tab = q.name">
@@ -139,7 +139,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</template>
- <MkSpacer>
+ <div class="_spacer">
<MkInput
v-model="searchQuery"
:placeholder="i18n.ts.search"
@@ -163,10 +163,10 @@ SPDX-License-Identifier: AGPL-3.0-only
<XJob :job="job" :queueType="tab" style="margin: 4px 0;" @needRefresh="refreshJob(job.id)"/>
</template>
</MkTl>
- </MkSpacer>
+ </div>
</MkFolder>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/moderation.vue b/packages/frontend/src/pages/admin/moderation.vue
index 5491a2df45..9675bdc21a 100644
--- a/packages/frontend/src/pages/admin/moderation.vue
+++ b/packages/frontend/src/pages/admin/moderation.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense :p="init">
<div class="_gaps_m">
<MkSwitch :modelValue="enableRegistration" @update:modelValue="onChange_enableRegistration">
@@ -148,7 +148,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder>
</div>
</FormSuspense>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/modlog.vue b/packages/frontend/src/pages/admin/modlog.vue
index 2d43e3b790..cf7d46153f 100644
--- a/packages/frontend/src/pages/admin/modlog.vue
+++ b/packages/frontend/src/pages/admin/modlog.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="_gaps">
<div style="display: flex; gap: var(--MI-margin); flex-wrap: wrap;">
<MkSelect v-model="type" style="margin: 0; flex: 1;">
@@ -33,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton primary rounded style="margin: 0 auto;" @click="fetchMore">{{ i18n.ts.loadMore }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/object-storage.vue b/packages/frontend/src/pages/admin/object-storage.vue
index 36f4392142..7a46ae41c6 100644
--- a/packages/frontend/src/pages/admin/object-storage.vue
+++ b/packages/frontend/src/pages/admin/object-storage.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense :p="init">
<div class="_gaps_m">
<MkSwitch v-model="useObjectStorage">{{ i18n.ts.useObjectStorage }}</MkSwitch>
@@ -70,12 +70,12 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</div>
</FormSuspense>
- </MkSpacer>
+ </div>
<template #footer>
<div :class="$style.footer">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="16">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 16px;">
<MkButton primary rounded @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
- </MkSpacer>
+ </div>
</div>
</template>
</PageWithHeader>
diff --git a/packages/frontend/src/pages/admin/overview.vue b/packages/frontend/src/pages/admin/overview.vue
index 616815a6a6..caa888b51d 100644
--- a/packages/frontend/src/pages/admin/overview.vue
+++ b/packages/frontend/src/pages/admin/overview.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="1000">
+<div class="_spacer" style="--MI_SPACER-w: 1000px;">
<div ref="rootEl" :class="$style.root">
<MkFoldableSection class="item">
<template #header>Stats</template>
@@ -61,7 +61,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<XQueue domain="inbox"/>
</MkFoldableSection>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/admin/performance.vue b/packages/frontend/src/pages/admin/performance.vue
index 075db4ebef..a272b9adea 100644
--- a/packages/frontend/src/pages/admin/performance.vue
+++ b/packages/frontend/src/pages/admin/performance.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div class="_gaps">
<div class="_panel" style="padding: 16px;">
<MkSwitch v-model="enableServerMachineStats" @change="onChange_enableServerMachineStats">
@@ -102,7 +102,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkFolder>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/relays.vue b/packages/frontend/src/pages/admin/relays.vue
index 7803edc360..aabf64342e 100644
--- a/packages/frontend/src/pages/admin/relays.vue
+++ b/packages/frontend/src/pages/admin/relays.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div class="_gaps">
<div v-for="relay in relays" :key="relay.inbox" class="relaycxt _panel" style="padding: 16px;">
<div>{{ relay.inbox }}</div>
@@ -18,7 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton class="button" inline danger @click="remove(relay.inbox)"><i class="ti ti-trash"></i> {{ i18n.ts.remove }}</MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/roles.edit.vue b/packages/frontend/src/pages/admin/roles.edit.vue
index 62777f59ef..7790fe3925 100644
--- a/packages/frontend/src/pages/admin/roles.edit.vue
+++ b/packages/frontend/src/pages/admin/roles.edit.vue
@@ -5,14 +5,14 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :tabs="headerTabs">
- <MkSpacer :contentMax="600" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<XEditor v-if="data" v-model="data"/>
- </MkSpacer>
+ </div>
<template #footer>
<div :class="$style.footer">
- <MkSpacer :contentMax="600" :marginMin="16" :marginMax="16">
+ <div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px; --MI_SPACER-max: 16px;">
<MkButton primary rounded @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
- </MkSpacer>
+ </div>
</div>
</template>
</PageWithHeader>
diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue
index c49a1bf286..bca619c2e1 100644
--- a/packages/frontend/src/pages/admin/roles.editor.vue
+++ b/packages/frontend/src/pages/admin/roles.editor.vue
@@ -445,6 +445,26 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkFolder>
+ <MkFolder v-if="matchQuery([i18n.ts._role._options.maxFileSize, 'maxFileSizeMb'])">
+ <template #label>{{ i18n.ts._role._options.maxFileSize }}</template>
+ <template #suffix>
+ <span v-if="role.policies.maxFileSizeMb.useDefault" :class="$style.useDefaultLabel">{{ i18n.ts._role.useBaseValue }}</span>
+ <span v-else>{{ role.policies.maxFileSizeMb.value + 'MB' }}</span>
+ <span :class="$style.priorityIndicator"><i :class="getPriorityIcon(role.policies.maxFileSizeMb)"></i></span>
+ </template>
+ <div class="_gaps">
+ <MkSwitch v-model="role.policies.maxFileSizeMb.useDefault" :readonly="readonly">
+ <template #label>{{ i18n.ts._role.useBaseValue }}</template>
+ </MkSwitch>
+ <MkInput v-model="role.policies.maxFileSizeMb.value" :disabled="role.policies.maxFileSizeMb.useDefault" type="number" :readonly="readonly">
+ <template #suffix>MB</template>
+ </MkInput>
+ <MkRange v-model="role.policies.maxFileSizeMb.priority" :min="0" :max="2" :step="1" easing :textConverter="(v) => v === 0 ? i18n.ts._role._priority.low : v === 1 ? i18n.ts._role._priority.middle : v === 2 ? i18n.ts._role._priority.high : ''">
+ <template #label>{{ i18n.ts._role.priority }}</template>
+ </MkRange>
+ </div>
+ </MkFolder>
+
<MkFolder v-if="matchQuery([i18n.ts._role._options.alwaysMarkNsfw, 'alwaysMarkNsfw'])">
<template #label>{{ i18n.ts._role._options.alwaysMarkNsfw }}</template>
<template #suffix>
diff --git a/packages/frontend/src/pages/admin/roles.role.vue b/packages/frontend/src/pages/admin/roles.role.vue
index 992f47bff5..04e6405f9b 100644
--- a/packages/frontend/src/pages/admin/roles.role.vue
+++ b/packages/frontend/src/pages/admin/roles.role.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="_gaps">
<div class="_buttons">
<MkButton primary rounded @click="edit"><i class="ti ti-pencil"></i> {{ i18n.ts.edit }}</MkButton>
@@ -54,7 +54,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder>
<MkInfo v-else>{{ i18n.ts._role.isConditionalRole }}</MkInfo>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/roles.vue b/packages/frontend/src/pages/admin/roles.vue
index 2e9a33d1b8..52b8240733 100644
--- a/packages/frontend/src/pages/admin/roles.vue
+++ b/packages/frontend/src/pages/admin/roles.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="_gaps">
<MkFolder>
<template #label>{{ i18n.ts._role.baseRole }}</template>
@@ -165,6 +165,14 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkInput>
</MkFolder>
+ <MkFolder v-if="matchQuery([i18n.ts._role._options.maxFileSize, 'maxFileSizeMb'])">
+ <template #label>{{ i18n.ts._role._options.maxFileSize }}</template>
+ <template #suffix>{{ policies.maxFileSizeMb }}MB</template>
+ <MkInput v-model="policies.maxFileSizeMb" type="number">
+ <template #suffix>MB</template>
+ </MkInput>
+ </MkFolder>
+
<MkFolder v-if="matchQuery([i18n.ts._role._options.alwaysMarkNsfw, 'alwaysMarkNsfw'])">
<template #label>{{ i18n.ts._role._options.alwaysMarkNsfw }}</template>
<template #suffix>{{ policies.alwaysMarkNsfw ? i18n.ts.yes : i18n.ts.no }}</template>
@@ -310,7 +318,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFoldableSection>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/security.vue b/packages/frontend/src/pages/admin/security.vue
index 537c788ccf..414dc145ff 100644
--- a/packages/frontend/src/pages/admin/security.vue
+++ b/packages/frontend/src/pages/admin/security.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div class="_gaps_m">
<MkFolder v-if="meta.federation !== 'none'">
<template #label>{{ i18n.ts.authorizedFetchSection }}</template>
@@ -87,7 +87,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkFolder>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/server-rules.vue b/packages/frontend/src/pages/admin/server-rules.vue
index 98cd0775fe..4ad056edff 100644
--- a/packages/frontend/src/pages/admin/server-rules.vue
+++ b/packages/frontend/src/pages/admin/server-rules.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div class="_gaps_m">
<div>{{ i18n.ts._serverRules.description }}</div>
<Sortable
@@ -33,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton primary rounded @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/settings.vue b/packages/frontend/src/pages/admin/settings.vue
index 21fd1b4b1a..40335e7914 100644
--- a/packages/frontend/src/pages/admin/settings.vue
+++ b/packages/frontend/src/pages/admin/settings.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :tabs="headerTabs">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div class="_gaps_m">
<MkFolder :defaultOpen="true">
<template #icon><i class="ti ti-info-circle"></i></template>
@@ -282,7 +282,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkFolder>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/system-webhook.vue b/packages/frontend/src/pages/admin/system-webhook.vue
index a3214028e6..d5402f608c 100644
--- a/packages/frontend/src/pages/admin/system-webhook.vue
+++ b/packages/frontend/src/pages/admin/system-webhook.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="_gaps_m">
<MkButton primary @click="onCreateWebhookClicked">
<i class="ti ti-plus"></i> {{ i18n.ts._webhookSettings.createWebhook }}
@@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</FormSection>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/admin/users.vue b/packages/frontend/src/pages/admin/users.vue
index d37f7dbf80..080ed9b90c 100644
--- a/packages/frontend/src/pages/admin/users.vue
+++ b/packages/frontend/src/pages/admin/users.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="_gaps">
<div :class="$style.inputs">
<MkButton style="margin-left: auto" @click="resetQuery">{{ i18n.ts.reset }}</MkButton>
@@ -53,7 +53,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkPagination>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/ads.vue b/packages/frontend/src/pages/ads.vue
index 700ac0bd1a..31b66584d9 100644
--- a/packages/frontend/src/pages/ads.vue
+++ b/packages/frontend/src/pages/ads.vue
@@ -5,11 +5,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="500">
+ <div class="_spacer" style="--MI_SPACER-w: 500px;">
<div class="_gaps">
<MkAd v-for="ad in instance.ads" :key="ad.id" :specify="ad"/>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/announcement.vue b/packages/frontend/src/pages/announcement.vue
index 4bba0acdc2..9fa06dfd9a 100644
--- a/packages/frontend/src/pages/announcement.vue
+++ b/packages/frontend/src/pages/announcement.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<Transition
:enterActiveClass="prefer.s.animation ? $style.fadeEnterActive : ''"
:leaveActiveClass="prefer.s.animation ? $style.fadeLeaveActive : ''"
@@ -42,7 +42,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkError v-else-if="error" @retry="fetch()"/>
<MkLoading v-else/>
</Transition>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/announcements.vue b/packages/frontend/src/pages/announcements.vue
index d529ad592c..e145121e23 100644
--- a/packages/frontend/src/pages/announcements.vue
+++ b/packages/frontend/src/pages/announcements.vue
@@ -4,8 +4,8 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<MkSwiper v-model:tab="tab" :tabs="headerTabs">
<div class="_gaps">
<MkInfo v-if="$i && $i.hasUnreadAnnouncement && tab === 'current'" warn>{{ i18n.ts.youHaveUnreadAnnouncements }}</MkInfo>
@@ -41,7 +41,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkPagination>
</div>
</MkSwiper>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
@@ -50,7 +50,6 @@ import { ref, computed } from 'vue';
import MkPagination from '@/components/MkPagination.vue';
import MkButton from '@/components/MkButton.vue';
import MkInfo from '@/components/MkInfo.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import * as os from '@/os.js';
import { misskeyApi } from '@/utility/misskey-api.js';
import { i18n } from '@/i18n.js';
diff --git a/packages/frontend/src/pages/antenna-timeline.vue b/packages/frontend/src/pages/antenna-timeline.vue
index c5c5b2144f..1bf7e257e5 100644
--- a/packages/frontend/src/pages/antenna-timeline.vue
+++ b/packages/frontend/src/pages/antenna-timeline.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :displayBackButton="true" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div ref="rootEl">
<div v-if="queue > 0" :class="$style.new"><button class="_buttonPrimary" :class="$style.newButton" @click="top()">{{ i18n.ts.newNoteRecived }}</button></div>
<div :class="$style.tl">
@@ -18,7 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-only
/>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/api-console.vue b/packages/frontend/src/pages/api-console.vue
index 53020bfb08..140974e695 100644
--- a/packages/frontend/src/pages/api-console.vue
+++ b/packages/frontend/src/pages/api-console.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="_gaps_m">
<div class="_gaps_m">
<MkInput v-model="endpoint" :datalist="endpoints" debounce @update:modelValue="onEndpointChange()">
@@ -28,7 +28,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkTextarea>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/auth.vue b/packages/frontend/src/pages/auth.vue
index 5aa8dbcc5d..26a4edfe0c 100644
--- a/packages/frontend/src/pages/auth.vue
+++ b/packages/frontend/src/pages/auth.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="500">
+ <div class="_spacer" style="--MI_SPACER-w: 500px;">
<div v-if="state == 'fetch-session-error'">
<p>{{ i18n.ts.somethingHappened }}</p>
</div>
@@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<p :class="$style.loginMessage">{{ i18n.ts._auth.pleaseLogin }}</p>
<MkSignin @login="onLogin"/>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/avatar-decoration-edit-dialog.vue b/packages/frontend/src/pages/avatar-decoration-edit-dialog.vue
index 5a5e305f80..cb0e1666f8 100644
--- a/packages/frontend/src/pages/avatar-decoration-edit-dialog.vue
+++ b/packages/frontend/src/pages/avatar-decoration-edit-dialog.vue
@@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<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="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px; flex-grow: 1;">
<div class="_gaps_m">
<div :class="$style.preview">
<div :class="[$style.previewItem, $style.light]">
@@ -51,7 +51,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFolder>
<MkButton v-if="avatarDecoration" danger @click="del()"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
</div>
- </MkSpacer>
+ </div>
<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>
diff --git a/packages/frontend/src/pages/avatar-decorations.vue b/packages/frontend/src/pages/avatar-decorations.vue
index 2bab449089..675e558de9 100644
--- a/packages/frontend/src/pages/avatar-decorations.vue
+++ b/packages/frontend/src/pages/avatar-decorations.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="_gaps">
<div :class="$style.decorations">
<div
@@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/channel-editor.vue b/packages/frontend/src/pages/channel-editor.vue
index 084fee15cf..009514cdc8 100644
--- a/packages/frontend/src/pages/channel-editor.vue
+++ b/packages/frontend/src/pages/channel-editor.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div v-if="channelId == null || channel != null" class="_gaps_m">
<MkInput v-model="name">
<template #label>{{ i18n.ts.name }}</template>
@@ -63,7 +63,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton v-if="channelId" danger @click="archive()"><i class="ti ti-trash"></i> {{ i18n.ts.archive }}</MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/channel.vue b/packages/frontend/src/pages/channel.vue
index 606fb06324..56d037758f 100644
--- a/packages/frontend/src/pages/channel.vue
+++ b/packages/frontend/src/pages/channel.vue
@@ -4,8 +4,8 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<MkSwiper v-model:tab="tab" :tabs="headerTabs">
<div v-if="channel && tab === 'overview'" class="_gaps">
<div class="_panel" :class="$style.bannerContainer">
@@ -58,14 +58,14 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</MkSwiper>
- </MkSpacer>
+ </div>
<template #footer>
<div :class="$style.footer">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="16">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 16px;">
<div class="_buttonsCenter">
<MkButton inline rounded primary gradate @click="openPostForm()"><i class="ti ti-pencil"></i> {{ i18n.ts.postToTheChannel }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
</PageWithHeader>
@@ -93,7 +93,6 @@ import { prefer } from '@/preferences.js';
import MkNote from '@/components/MkNote.vue';
import MkInfo from '@/components/MkInfo.vue';
import MkFoldableSection from '@/components/MkFoldableSection.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import { isSupportShare } from '@/utility/navigator.js';
import { copyToClipboard } from '@/utility/copy-to-clipboard.js';
import { notesSearchAvailable } from '@/utility/check-permissions.js';
diff --git a/packages/frontend/src/pages/channels.vue b/packages/frontend/src/pages/channels.vue
index 27a6a6168d..b2b2bc02d2 100644
--- a/packages/frontend/src/pages/channels.vue
+++ b/packages/frontend/src/pages/channels.vue
@@ -4,57 +4,55 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="1200">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <div v-if="tab === 'search'" :class="$style.searchRoot">
- <div class="_gaps">
- <MkInput v-model="searchQuery" :large="true" :autofocus="true" type="search" @enter="search">
- <template #prefix><i class="ti ti-search"></i></template>
- </MkInput>
- <MkRadios v-model="searchType" @update:modelValue="search()">
- <option value="nameAndDescription">{{ i18n.ts._channel.nameAndDescription }}</option>
- <option value="nameOnly">{{ i18n.ts._channel.nameOnly }}</option>
- </MkRadios>
- <MkButton large primary gradate rounded @click="search">{{ i18n.ts.search }}</MkButton>
- </div>
-
- <MkFoldableSection v-if="channelPagination">
- <template #header>{{ i18n.ts.searchResult }}</template>
- <MkChannelList :key="key" :pagination="channelPagination"/>
- </MkFoldableSection>
- </div>
- <div v-if="tab === 'featured'">
- <MkPagination v-slot="{items}" :pagination="featuredPagination">
- <div :class="$style.root">
- <MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
- </div>
- </MkPagination>
- </div>
- <div v-else-if="tab === 'favorites'">
- <MkPagination v-slot="{items}" :pagination="favoritesPagination">
- <div :class="$style.root">
- <MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
- </div>
- </MkPagination>
- </div>
- <div v-else-if="tab === 'following'">
- <MkPagination v-slot="{items}" :pagination="followingPagination">
- <div :class="$style.root">
- <MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
- </div>
- </MkPagination>
- </div>
- <div v-else-if="tab === 'owned'">
- <MkButton class="new" @click="create()"><i class="ti ti-plus"></i></MkButton>
- <MkPagination v-slot="{items}" :pagination="ownedPagination">
- <div :class="$style.root">
- <MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
- </div>
- </MkPagination>
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 1200px;">
+ <div v-if="tab === 'search'" :class="$style.searchRoot">
+ <div class="_gaps">
+ <MkInput v-model="searchQuery" :large="true" :autofocus="true" type="search" @enter="search">
+ <template #prefix><i class="ti ti-search"></i></template>
+ </MkInput>
+ <MkRadios v-model="searchType" @update:modelValue="search()">
+ <option value="nameAndDescription">{{ i18n.ts._channel.nameAndDescription }}</option>
+ <option value="nameOnly">{{ i18n.ts._channel.nameOnly }}</option>
+ </MkRadios>
+ <MkButton large primary gradate rounded @click="search">{{ i18n.ts.search }}</MkButton>
</div>
- </MkSwiper>
- </MkSpacer>
+
+ <MkFoldableSection v-if="channelPagination">
+ <template #header>{{ i18n.ts.searchResult }}</template>
+ <MkChannelList :key="key" :pagination="channelPagination"/>
+ </MkFoldableSection>
+ </div>
+ <div v-if="tab === 'featured'">
+ <MkPagination v-slot="{items}" :pagination="featuredPagination">
+ <div :class="$style.root">
+ <MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
+ </div>
+ </MkPagination>
+ </div>
+ <div v-else-if="tab === 'favorites'">
+ <MkPagination v-slot="{items}" :pagination="favoritesPagination">
+ <div :class="$style.root">
+ <MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
+ </div>
+ </MkPagination>
+ </div>
+ <div v-else-if="tab === 'following'">
+ <MkPagination v-slot="{items}" :pagination="followingPagination">
+ <div :class="$style.root">
+ <MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
+ </div>
+ </MkPagination>
+ </div>
+ <div v-else-if="tab === 'owned'">
+ <MkButton class="new" @click="create()"><i class="ti ti-plus"></i></MkButton>
+ <MkPagination v-slot="{items}" :pagination="ownedPagination">
+ <div :class="$style.root">
+ <MkChannelPreview v-for="channel in items" :key="channel.id" :channel="channel"/>
+ </div>
+ </MkPagination>
+ </div>
+ </div>
</PageWithHeader>
</template>
@@ -67,7 +65,6 @@ import MkInput from '@/components/MkInput.vue';
import MkRadios from '@/components/MkRadios.vue';
import MkButton from '@/components/MkButton.vue';
import MkFoldableSection from '@/components/MkFoldableSection.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import { definePage } from '@/page.js';
import { i18n } from '@/i18n.js';
import { useRouter } from '@/router.js';
diff --git a/packages/frontend/src/pages/chat/home.vue b/packages/frontend/src/pages/chat/home.vue
index 1edd18ddf0..652ab04be6 100644
--- a/packages/frontend/src/pages/chat/home.vue
+++ b/packages/frontend/src/pages/chat/home.vue
@@ -4,16 +4,14 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
<MkPolkadots v-if="tab === 'home'" accented/>
- <MkSpacer :contentMax="700">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <XHome v-if="tab === 'home'"/>
- <XInvitations v-else-if="tab === 'invitations'"/>
- <XJoiningRooms v-else-if="tab === 'joiningRooms'"/>
- <XOwnedRooms v-else-if="tab === 'ownedRooms'"/>
- </MkSwiper>
- </MkSpacer>
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
+ <XHome v-if="tab === 'home'"/>
+ <XInvitations v-else-if="tab === 'invitations'"/>
+ <XJoiningRooms v-else-if="tab === 'joiningRooms'"/>
+ <XOwnedRooms v-else-if="tab === 'ownedRooms'"/>
+ </div>
</PageWithHeader>
</template>
@@ -25,7 +23,6 @@ import XJoiningRooms from './home.joiningRooms.vue';
import XOwnedRooms from './home.ownedRooms.vue';
import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
-import MkSwiper from '@/components/MkSwiper.vue';
import MkPolkadots from '@/components/MkPolkadots.vue';
const tab = ref('home');
diff --git a/packages/frontend/src/pages/chat/message.vue b/packages/frontend/src/pages/chat/message.vue
index 3ac90a93fd..a04ec7fd87 100644
--- a/packages/frontend/src/pages/chat/message.vue
+++ b/packages/frontend/src/pages/chat/message.vue
@@ -5,14 +5,14 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div v-if="initializing || message == null">
<MkLoading/>
</div>
<div v-else>
<XMessage :message="message" :isSearchResult="true"/>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/chat/room.vue b/packages/frontend/src/pages/chat/room.vue
index 8b351c1ec8..e05125a3b2 100644
--- a/packages/frontend/src/pages/chat/room.vue
+++ b/packages/frontend/src/pages/chat/room.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader v-model:tab="tab" :reversed="tab === 'chat'" :tabs="headerTabs" :actions="headerActions">
- <MkSpacer v-if="tab === 'chat'" :contentMax="700">
+ <div v-if="tab === 'chat'" class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="_gaps">
<div v-if="initializing">
<MkLoading/>
@@ -56,19 +56,19 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkInfo v-if="$i.policies.chatAvailability !== 'available'" warn>{{ $i.policies.chatAvailability === 'readonly' ? i18n.ts._chat.chatIsReadOnlyForThisAccountOrServer : i18n.ts._chat.chatNotAvailableForThisAccountOrServer }}</MkInfo>
</div>
- </MkSpacer>
+ </div>
- <MkSpacer v-else-if="tab === 'search'" :contentMax="700">
+ <div v-else-if="tab === 'search'" class="_spacer" style="--MI_SPACER-w: 700px;">
<XSearch :userId="userId" :roomId="roomId"/>
- </MkSpacer>
+ </div>
- <MkSpacer v-else-if="tab === 'members'" :contentMax="700">
+ <div v-else-if="tab === 'members'" class="_spacer" style="--MI_SPACER-w: 700px;">
<XMembers v-if="room != null" :room="room" @inviteUser="inviteUser"/>
- </MkSpacer>
+ </div>
- <MkSpacer v-else-if="tab === 'info'" :contentMax="700">
+ <div v-else-if="tab === 'info'" class="_spacer" style="--MI_SPACER-w: 700px;">
<XInfo v-if="room != null" :room="room"/>
- </MkSpacer>
+ </div>
<template #footer>
<div v-if="tab === 'chat'" :class="$style.footer">
diff --git a/packages/frontend/src/pages/clicker.vue b/packages/frontend/src/pages/clicker.vue
index 479204f39b..d418a78ee5 100644
--- a/packages/frontend/src/pages/clicker.vue
+++ b/packages/frontend/src/pages/clicker.vue
@@ -5,9 +5,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<MkClickerGame/>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/clip.vue b/packages/frontend/src/pages/clip.vue
index 22c8a6b49d..87a361c1e2 100644
--- a/packages/frontend/src/pages/clip.vue
+++ b/packages/frontend/src/pages/clip.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div v-if="clip" class="_gaps">
<div class="_panel">
<div class="_gaps_s" :class="$style.description">
@@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkNotes :pagination="pagination" :detail="true"/>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/contact.vue b/packages/frontend/src/pages/contact.vue
index 39d70cafc7..eb94f23ac9 100644
--- a/packages/frontend/src/pages/contact.vue
+++ b/packages/frontend/src/pages/contact.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="600" :marginMin="20">
+ <div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 20px;">
<div class="_gaps_m">
<MkKeyValue :copy="instance.maintainerName">
<template #key>{{ i18n.ts.administrator }}</template>
@@ -29,7 +29,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</MkKeyValue>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/custom-emojis-manager.vue b/packages/frontend/src/pages/custom-emojis-manager.vue
index 7205cca42f..0bca5c1076 100644
--- a/packages/frontend/src/pages/custom-emojis-manager.vue
+++ b/packages/frontend/src/pages/custom-emojis-manager.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="900">
+ <div class="_spacer" style="--MI_SPACER-w: 900px;">
<div class="ogwlenmc">
<div v-if="tab === 'local'" class="local">
<MkInput v-model="query" :debounce="true" type="search" autocapitalize="off">
@@ -66,7 +66,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkPagination>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/drive.file.vue b/packages/frontend/src/pages/drive.file.vue
index 170d48064f..2a7924f56f 100644
--- a/packages/frontend/src/pages/drive.file.vue
+++ b/packages/frontend/src/pages/drive.file.vue
@@ -10,13 +10,13 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <MkSpacer v-if="tab === 'info'" :contentMax="800">
+ <div v-if="tab === 'info'" class="_spacer" style="--MI_SPACER-w: 800px;">
<XFileInfo :fileId="fileId"/>
- </MkSpacer>
+ </div>
- <MkSpacer v-else-if="tab === 'notes'" :contentMax="800">
+ <div v-else-if="tab === 'notes'" class="_spacer" style="--MI_SPACER-w: 800px;">
<XNotes :fileId="fileId"/>
- </MkSpacer>
+ </div>
</MkSwiper>
</MkStickyContainer>
</template>
diff --git a/packages/frontend/src/pages/drop-and-fusion.game.vue b/packages/frontend/src/pages/drop-and-fusion.game.vue
index eee174a6af..6b17c07b1c 100644
--- a/packages/frontend/src/pages/drop-and-fusion.game.vue
+++ b/packages/frontend/src/pages/drop-and-fusion.game.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="800">
+<div class="_spacer" style="--MI_SPACER-w: 800px;">
<div :class="$style.root">
<div v-if="!gameLoaded" :class="$style.loadingScreen">
<div>{{ i18n.ts.loading }}<MkEllipsis/></div>
@@ -187,7 +187,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/drop-and-fusion.vue b/packages/frontend/src/pages/drop-and-fusion.vue
index 7f571a7c36..bc957ff38a 100644
--- a/packages/frontend/src/pages/drop-and-fusion.vue
+++ b/packages/frontend/src/pages/drop-and-fusion.vue
@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:moveClass="$style.transition_zoom_move"
mode="out-in"
>
- <MkSpacer v-if="!gameStarted" :contentMax="800">
+ <div v-if="!gameStarted" class="_spacer" style="--MI_SPACER-w: 800px;">
<div :class="$style.root">
<div class="_gaps">
<div class="_woodenFrame" style="text-align: center;">
@@ -80,7 +80,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</div>
- </MkSpacer>
+ </div>
<XGame v-else :gameMode="gameMode" :mute="mute" @end="onGameEnd"/>
</Transition>
</template>
diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue
index dc570b05e4..2c10dadab7 100644
--- a/packages/frontend/src/pages/emoji-edit-dialog.vue
+++ b/packages/frontend/src/pages/emoji-edit-dialog.vue
@@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template v-else #header>New emoji</template>
<div style="display: flex; flex-direction: column; min-height: 100%;">
- <MkSpacer :marginMin="20" :marginMax="28" style="flex-grow: 1;">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px; flex-grow: 1;">
<div class="_gaps_m">
<div v-if="imgUrl != null" :class="$style.imgs">
<div style="background: #000;" :class="$style.imgContainer">
@@ -70,7 +70,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSwitch v-model="localOnly">{{ i18n.ts.localOnly }}</MkSwitch>
<MkButton v-if="emoji" danger @click="del()"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
</div>
- </MkSpacer>
+ </div>
<div :class="$style.footer">
<MkButton primary rounded style="margin: 0 auto;" @click="done"><i class="ti ti-check"></i> {{ props.emoji ? i18n.ts.update : i18n.ts.create }}</MkButton>
</div>
diff --git a/packages/frontend/src/pages/explore.featured.vue b/packages/frontend/src/pages/explore.featured.vue
index 8b16a88ff3..a47e3efbc8 100644
--- a/packages/frontend/src/pages/explore.featured.vue
+++ b/packages/frontend/src/pages/explore.featured.vue
@@ -4,14 +4,14 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="800">
+<div class="_spacer" style="--MI_SPACER-w: 800px;">
<MkTab v-model="tab" style="margin-bottom: var(--MI-margin);">
<option value="notes">{{ i18n.ts.notes }}</option>
<option value="polls">{{ i18n.ts.poll }}</option>
</MkTab>
<MkNotes v-if="tab === 'notes'" :pagination="paginationForNotes"/>
<MkNotes v-else-if="tab === 'polls'" :pagination="paginationForPolls"/>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/explore.roles.vue b/packages/frontend/src/pages/explore.roles.vue
index ffefeb9618..7ee01610a7 100644
--- a/packages/frontend/src/pages/explore.roles.vue
+++ b/packages/frontend/src/pages/explore.roles.vue
@@ -4,11 +4,11 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="700">
+<div class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="_gaps_s">
<MkRolePreview v-for="role in roles" :key="role.id" :role="role" :forModeration="false"/>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/explore.users.vue b/packages/frontend/src/pages/explore.users.vue
index 4db26e799c..6375944edf 100644
--- a/packages/frontend/src/pages/explore.users.vue
+++ b/packages/frontend/src/pages/explore.users.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="1200">
+<div class="_spacer" style="--MI_SPACER-w: 1200px;">
<MkTab v-if="instance.federation !== 'none'" v-model="origin" style="margin-bottom: var(--MI-margin);">
<option value="local">{{ i18n.ts.local }}</option>
<option value="remote">{{ i18n.ts.remote }}</option>
@@ -59,7 +59,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkFoldableSection>
</template>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/explore.vue b/packages/frontend/src/pages/explore.vue
index bcece47e35..c4f6ddc33e 100644
--- a/packages/frontend/src/pages/explore.vue
+++ b/packages/frontend/src/pages/explore.vue
@@ -4,18 +4,16 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <div v-if="tab === 'featured'">
- <XFeatured/>
- </div>
- <div v-else-if="tab === 'users'">
- <XUsers/>
- </div>
- <div v-else-if="tab === 'roles'">
- <XRoles/>
- </div>
- </MkSwiper>
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div v-if="tab === 'featured'">
+ <XFeatured/>
+ </div>
+ <div v-else-if="tab === 'users'">
+ <XUsers/>
+ </div>
+ <div v-else-if="tab === 'roles'">
+ <XRoles/>
+ </div>
</PageWithHeader>
</template>
@@ -24,8 +22,6 @@ import { computed, watch, ref, useTemplateRef } from 'vue';
import XFeatured from './explore.featured.vue';
import XUsers from './explore.users.vue';
import XRoles from './explore.roles.vue';
-import MkFoldableSection from '@/components/MkFoldableSection.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import { definePage } from '@/page.js';
import { i18n } from '@/i18n.js';
diff --git a/packages/frontend/src/pages/favorites.vue b/packages/frontend/src/pages/favorites.vue
index 6c95d37296..aa18f44e88 100644
--- a/packages/frontend/src/pages/favorites.vue
+++ b/packages/frontend/src/pages/favorites.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<MkPagination :pagination="pagination">
<template #empty>
<div class="_fullinfo">
@@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkDateSeparatedList>
</template>
</MkPagination>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/flash/flash-edit.vue b/packages/frontend/src/pages/flash/flash-edit.vue
index 825a3be7c1..4386209f7c 100644
--- a/packages/frontend/src/pages/flash/flash-edit.vue
+++ b/packages/frontend/src/pages/flash/flash-edit.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="_gaps">
<MkInput v-model="title">
<template #label>{{ i18n.ts._play.title }}</template>
@@ -24,16 +24,16 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #label>{{ i18n.ts._play.script }}</template>
</MkCodeEditor>
</div>
- </MkSpacer>
+ </div>
<template #footer>
<div :class="$style.footer">
- <MkSpacer>
+ <div class="_spacer">
<div class="_buttons">
<MkButton primary @click="save"><i class="ti ti-check"></i> {{ i18n.ts.save }}</MkButton>
<MkButton @click="show"><i class="ti ti-eye"></i> {{ i18n.ts.show }}</MkButton>
<MkButton v-if="flash" danger @click="del"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
</PageWithHeader>
diff --git a/packages/frontend/src/pages/flash/flash-index.vue b/packages/frontend/src/pages/flash/flash-index.vue
index 4ef33cbe0f..f3365fcedf 100644
--- a/packages/frontend/src/pages/flash/flash-index.vue
+++ b/packages/frontend/src/pages/flash/flash-index.vue
@@ -4,37 +4,35 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <div v-if="tab === 'featured'">
- <MkPagination v-slot="{items}" :pagination="featuredFlashsPagination">
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
+ <div v-if="tab === 'featured'">
+ <MkPagination v-slot="{items}" :pagination="featuredFlashsPagination">
+ <div class="_gaps_s">
+ <MkFlashPreview v-for="flash in items" :key="flash.id" :flash="flash"/>
+ </div>
+ </MkPagination>
+ </div>
+
+ <div v-else-if="tab === 'my'">
+ <div class="_gaps">
+ <MkButton gradate rounded style="margin: 0 auto;" @click="create()"><i class="ti ti-plus"></i></MkButton>
+ <MkPagination v-slot="{items}" :pagination="myFlashsPagination">
<div class="_gaps_s">
<MkFlashPreview v-for="flash in items" :key="flash.id" :flash="flash"/>
</div>
</MkPagination>
</div>
+ </div>
- <div v-else-if="tab === 'my'">
- <div class="_gaps">
- <MkButton gradate rounded style="margin: 0 auto;" @click="create()"><i class="ti ti-plus"></i></MkButton>
- <MkPagination v-slot="{items}" :pagination="myFlashsPagination">
- <div class="_gaps_s">
- <MkFlashPreview v-for="flash in items" :key="flash.id" :flash="flash"/>
- </div>
- </MkPagination>
+ <div v-else-if="tab === 'liked'">
+ <MkPagination v-slot="{items}" :pagination="likedFlashsPagination">
+ <div class="_gaps_s">
+ <MkFlashPreview v-for="like in items" :key="like.flash.id" :flash="like.flash"/>
</div>
- </div>
-
- <div v-else-if="tab === 'liked'">
- <MkPagination v-slot="{items}" :pagination="likedFlashsPagination">
- <div class="_gaps_s">
- <MkFlashPreview v-for="like in items" :key="like.flash.id" :flash="like.flash"/>
- </div>
- </MkPagination>
- </div>
- </MkSwiper>
- </MkSpacer>
+ </MkPagination>
+ </div>
+ </div>
</PageWithHeader>
</template>
@@ -43,7 +41,6 @@ import { computed, ref } from 'vue';
import MkFlashPreview from '@/components/MkFlashPreview.vue';
import MkPagination from '@/components/MkPagination.vue';
import MkButton from '@/components/MkButton.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
import { useRouter } from '@/router.js';
diff --git a/packages/frontend/src/pages/flash/flash.vue b/packages/frontend/src/pages/flash/flash.vue
index e1a51ccaad..b17faca2a9 100644
--- a/packages/frontend/src/pages/flash/flash.vue
+++ b/packages/frontend/src/pages/flash/flash.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<Transition :name="prefer.s.animation ? 'fade' : ''" mode="out-in">
<div v-if="flash" :key="flash.id">
<Transition :name="prefer.s.animation ? 'zoom' : ''" mode="out-in">
@@ -56,7 +56,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkError v-else-if="error" @retry="fetchFlash()"/>
<MkLoading v-else/>
</Transition>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/follow-requests.vue b/packages/frontend/src/pages/follow-requests.vue
index f6357ba1b1..dd8ec34214 100644
--- a/packages/frontend/src/pages/follow-requests.vue
+++ b/packages/frontend/src/pages/follow-requests.vue
@@ -4,39 +4,37 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <MkPagination ref="paginationComponent" :pagination="pagination">
- <template #empty>
- <div class="_fullinfo">
- <img :src="infoImageUrl" draggable="false"/>
- <div>{{ i18n.ts.noFollowRequests }}</div>
- </div>
- </template>
- <template #default="{items}">
- <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">
- <div class="name">
- <MkA v-user-preview="displayUser(req).id" class="name" :to="userPage(displayUser(req))"><MkUserName :user="displayUser(req)"/></MkA>
- <p class="acct">@{{ acct(displayUser(req)) }}</p>
- </div>
- <div v-if="tab === 'list'" class="commands">
- <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>
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
+ <MkPagination ref="paginationComponent" :pagination="pagination">
+ <template #empty>
+ <div class="_fullinfo">
+ <img :src="infoImageUrl" draggable="false"/>
+ <div>{{ i18n.ts.noFollowRequests }}</div>
+ </div>
+ </template>
+ <template #default="{items}">
+ <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">
+ <div class="name">
+ <MkA v-user-preview="displayUser(req).id" class="name" :to="userPage(displayUser(req))"><MkUserName :user="displayUser(req)"/></MkA>
+ <p class="acct">@{{ acct(displayUser(req)) }}</p>
+ </div>
+ <div v-if="tab === 'list'" class="commands">
+ <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>
- </template>
- </MkPagination>
- </MkSwiper>
- </MkSpacer>
+ </div>
+ </template>
+ </MkPagination>
+ </div>
</PageWithHeader>
</template>
@@ -52,7 +50,6 @@ import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
import { infoImageUrl } from '@/instance.js';
import { $i } from '@/i.js';
-import MkSwiper from '@/components/MkSwiper.vue';
const paginationComponent = useTemplateRef('paginationComponent');
diff --git a/packages/frontend/src/pages/gallery/edit.vue b/packages/frontend/src/pages/gallery/edit.vue
index 7831e084a2..caae30f9fd 100644
--- a/packages/frontend/src/pages/gallery/edit.vue
+++ b/packages/frontend/src/pages/gallery/edit.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 800px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense :p="init" class="_gaps">
<MkInput v-model="title">
<template #label>{{ i18n.ts.title }}</template>
@@ -32,7 +32,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton v-if="postId" danger @click="del"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
</div>
</FormSuspense>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/gallery/index.vue b/packages/frontend/src/pages/gallery/index.vue
index f9e1c9c9a3..f56a1dddf9 100644
--- a/packages/frontend/src/pages/gallery/index.vue
+++ b/packages/frontend/src/pages/gallery/index.vue
@@ -4,44 +4,42 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="1400">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <div v-if="tab === 'explore'">
- <MkFoldableSection class="_margin">
- <template #header><i class="ti ti-clock"></i>{{ i18n.ts.recentPosts }}</template>
- <MkPagination v-slot="{items}" :pagination="recentPostsPagination" :disableAutoLoad="true">
- <div :class="$style.items">
- <MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/>
- </div>
- </MkPagination>
- </MkFoldableSection>
- <MkFoldableSection class="_margin">
- <template #header><i class="ti ti-comet"></i>{{ i18n.ts.popularPosts }}</template>
- <MkPagination v-slot="{items}" :pagination="popularPostsPagination" :disableAutoLoad="true">
- <div :class="$style.items">
- <MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/>
- </div>
- </MkPagination>
- </MkFoldableSection>
- </div>
- <div v-else-if="tab === 'liked'">
- <MkPagination v-slot="{items}" :pagination="likedPostsPagination">
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 1400px;">
+ <div v-if="tab === 'explore'">
+ <MkFoldableSection class="_margin">
+ <template #header><i class="ti ti-clock"></i>{{ i18n.ts.recentPosts }}</template>
+ <MkPagination v-slot="{items}" :pagination="recentPostsPagination" :disableAutoLoad="true">
<div :class="$style.items">
- <MkGalleryPostPreview v-for="like in items" :key="like.id" :post="like.post" class="post"/>
+ <MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/>
</div>
</MkPagination>
- </div>
- <div v-else-if="tab === 'my'">
- <MkA to="/gallery/new" class="_link" style="margin: 16px;"><i class="ti ti-plus"></i> {{ i18n.ts.postToGallery }}</MkA>
- <MkPagination v-slot="{items}" :pagination="myPostsPagination">
+ </MkFoldableSection>
+ <MkFoldableSection class="_margin">
+ <template #header><i class="ti ti-comet"></i>{{ i18n.ts.popularPosts }}</template>
+ <MkPagination v-slot="{items}" :pagination="popularPostsPagination" :disableAutoLoad="true">
<div :class="$style.items">
<MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/>
</div>
</MkPagination>
- </div>
- </MkSwiper>
- </MkSpacer>
+ </MkFoldableSection>
+ </div>
+ <div v-else-if="tab === 'liked'">
+ <MkPagination v-slot="{items}" :pagination="likedPostsPagination">
+ <div :class="$style.items">
+ <MkGalleryPostPreview v-for="like in items" :key="like.id" :post="like.post" class="post"/>
+ </div>
+ </MkPagination>
+ </div>
+ <div v-else-if="tab === 'my'">
+ <MkA to="/gallery/new" class="_link" style="margin: 16px;"><i class="ti ti-plus"></i> {{ i18n.ts.postToGallery }}</MkA>
+ <MkPagination v-slot="{items}" :pagination="myPostsPagination">
+ <div :class="$style.items">
+ <MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/>
+ </div>
+ </MkPagination>
+ </div>
+ </div>
</PageWithHeader>
</template>
@@ -50,7 +48,6 @@ import { watch, ref, computed } from 'vue';
import MkFoldableSection from '@/components/MkFoldableSection.vue';
import MkPagination from '@/components/MkPagination.vue';
import MkGalleryPostPreview from '@/components/MkGalleryPostPreview.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import { definePage } from '@/page.js';
import { i18n } from '@/i18n.js';
import { useRouter } from '@/router.js';
diff --git a/packages/frontend/src/pages/gallery/post.vue b/packages/frontend/src/pages/gallery/post.vue
index 27f4687eb4..7c754f0b03 100644
--- a/packages/frontend/src/pages/gallery/post.vue
+++ b/packages/frontend/src/pages/gallery/post.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="1000" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 1000px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div class="_root">
<Transition :name="prefer.s.animation ? 'fade' : ''" mode="out-in">
<div v-if="post" class="rkxwuolj">
@@ -57,7 +57,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkLoading v-else/>
</Transition>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/games.vue b/packages/frontend/src/pages/games.vue
index 7436c13332..12b84d19aa 100644
--- a/packages/frontend/src/pages/games.vue
+++ b/packages/frontend/src/pages/games.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div class="_gaps">
<div class="_panel" :class="$style.link">
<MkA to="/bubble-game">
@@ -18,7 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkA>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/install-extensions.vue b/packages/frontend/src/pages/install-extensions.vue
index bf57b0c231..4e814ef84f 100644
--- a/packages/frontend/src/pages/install-extensions.vue
+++ b/packages/frontend/src/pages/install-extensions.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithAnimBg>
- <MkSpacer :contentMax="550" :marginMax="50">
+ <div class="_spacer" style="--MI_SPACER-w: 550px; --MI_SPACER-max: 50px;">
<MkLoading v-if="uiPhase === 'fetching'"/>
<MkExtensionInstaller v-else-if="uiPhase === 'confirm' && data" :extension="data" @confirm="install()" @cancel="close_()">
<template #additionalInfo>
@@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton @click="close_()">{{ i18n.ts.close }}</MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithAnimBg>
</template>
diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue
index eff513d241..479774faef 100644
--- a/packages/frontend/src/pages/instance-info.vue
+++ b/packages/frontend/src/pages/instance-info.vue
@@ -4,8 +4,8 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer v-if="instance" :contentMax="600" :marginMin="16" :marginMax="32">
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div v-if="instance" class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<MkSwiper v-model:tab="tab" :tabs="headerTabs">
<div v-if="tab === 'overview'" class="_gaps_m">
<div class="fnfelxur">
@@ -166,7 +166,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkObjectView>
</div>
</MkSwiper>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
@@ -192,7 +192,6 @@ import { definePage } from '@/page.js';
import { i18n } from '@/i18n.js';
import MkUserCardMini from '@/components/MkUserCardMini.vue';
import MkPagination from '@/components/MkPagination.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import { getProxiedImageUrlNullable } from '@/utility/media-proxy.js';
import { dateString } from '@/filters/date.js';
import MkTextarea from '@/components/MkTextarea.vue';
diff --git a/packages/frontend/src/pages/invite.vue b/packages/frontend/src/pages/invite.vue
index 77ad1cdd96..0342d5c604 100644
--- a/packages/frontend/src/pages/invite.vue
+++ b/packages/frontend/src/pages/invite.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer v-if="!instance.disableRegistration || !($i && ($i.isAdmin || $i.policies.canInvite))" :contentMax="1200">
+ <div v-if="!instance.disableRegistration || !($i && ($i.isAdmin || $i.policies.canInvite))" class="_spacer" style="--MI_SPACER-w: 1200px;">
<div :class="$style.root">
<img :class="$style.img" :src="serverErrorImageUrl" draggable="false"/>
<div :class="$style.text">
@@ -13,8 +13,8 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.nothing }}
</div>
</div>
- </MkSpacer>
- <MkSpacer v-else :contentMax="800">
+ </div>
+ <div v-else class="_spacer" style="--MI_SPACER-w: 800px;">
<div class="_gaps_m" style="text-align: center;">
<div v-if="resetCycle && inviteLimit">{{ i18n.tsx.inviteLimitResetCycle({ time: resetCycle, limit: inviteLimit }) }}</div>
<MkButton inline primary rounded :disabled="currentInviteLimit !== null && currentInviteLimit <= 0" @click="create"><i class="ti ti-user-plus"></i> {{ i18n.ts.createInviteCode }}</MkButton>
@@ -28,7 +28,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</MkPagination>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/list.vue b/packages/frontend/src/pages/list.vue
index 3a1f98db74..1676441191 100644
--- a/packages/frontend/src/pages/list.vue
+++ b/packages/frontend/src/pages/list.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer v-if="error != null" :contentMax="1200">
+ <div v-if="error != null" class="_spacer" style="--MI_SPACER-w: 1200px;">
<div :class="$style.root">
<img :class="$style.img" :src="serverErrorImageUrl" draggable="false"/>
<p :class="$style.text">
@@ -13,8 +13,8 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.nothing }}
</p>
</div>
- </MkSpacer>
- <MkSpacer v-else-if="list" :contentMax="700">
+ </div>
+ <div v-else-if="list" class="_spacer" style="--MI_SPACER-w: 700px;">
<div v-if="list" class="members _margin">
<div :class="$style.member_text">{{ i18n.ts.members }}</div>
<div class="_gaps_s">
@@ -28,7 +28,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton v-if="list.isLiked" v-tooltip="i18n.ts.unlike" inline :class="$style.button" asLike primary @click="unlike()"><i class="ti ti-heart-off"></i><span v-if="list.likedCount > 0" class="count">{{ list.likedCount }}</span></MkButton>
<MkButton v-if="!list.isLiked" v-tooltip="i18n.ts.like" inline :class="$style.button" asLike @click="like()"><i class="ti ti-heart"></i><span v-if="1 > 0" class="count">{{ list.likedCount }}</span></MkButton>
<MkButton inline @click="create()"><i class="ti ti-download" :class="$style.import"></i>{{ i18n.ts.import }}</MkButton>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/lookup.vue b/packages/frontend/src/pages/lookup.vue
index 623c2a6779..c969473b19 100644
--- a/packages/frontend/src/pages/lookup.vue
+++ b/packages/frontend/src/pages/lookup.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div v-if="state === 'done'" class="_buttonsCenter">
<MkButton @click="close">{{ i18n.ts.close }}</MkButton>
<MkButton @click="goToMisskey">{{ i18n.ts.goToMisskey }}</MkButton>
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-else class="_fullInfo">
<MkLoading/>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/my-antennas/index.vue b/packages/frontend/src/pages/my-antennas/index.vue
index 297436ad61..a19f7126d0 100644
--- a/packages/frontend/src/pages/my-antennas/index.vue
+++ b/packages/frontend/src/pages/my-antennas/index.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div>
<div v-if="antennas.length === 0" class="empty">
<div class="_fullinfo">
@@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkA>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/my-clips/index.vue b/packages/frontend/src/pages/my-clips/index.vue
index 5b9b3af90b..9e427ecf35 100644
--- a/packages/frontend/src/pages/my-clips/index.vue
+++ b/packages/frontend/src/pages/my-clips/index.vue
@@ -4,21 +4,19 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <div v-if="tab === 'my'" class="_gaps">
- <MkButton primary rounded class="add" @click="create"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
+ <div v-if="tab === 'my'" class="_gaps">
+ <MkButton primary rounded class="add" @click="create"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton>
- <MkPagination v-slot="{ items }" ref="pagingComponent" :pagination="pagination" class="_gaps">
- <MkClipPreview v-for="item in items" :key="item.id" :clip="item" :noUserInfo="true"/>
- </MkPagination>
- </div>
- <div v-else-if="tab === 'favorites'" class="_gaps">
- <MkClipPreview v-for="item in favorites" :key="item.id" :clip="item"/>
- </div>
- </MkSwiper>
- </MkSpacer>
+ <MkPagination v-slot="{ items }" ref="pagingComponent" :pagination="pagination" class="_gaps">
+ <MkClipPreview v-for="item in items" :key="item.id" :clip="item" :noUserInfo="true"/>
+ </MkPagination>
+ </div>
+ <div v-else-if="tab === 'favorites'" class="_gaps">
+ <MkClipPreview v-for="item in favorites" :key="item.id" :clip="item"/>
+ </div>
+ </div>
</PageWithHeader>
</template>
@@ -33,7 +31,6 @@ import { misskeyApi } from '@/utility/misskey-api.js';
import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
import { clipsCache } from '@/cache.js';
-import MkSwiper from '@/components/MkSwiper.vue';
const pagination = {
endpoint: 'clips/list' as const,
diff --git a/packages/frontend/src/pages/my-lists/index.vue b/packages/frontend/src/pages/my-lists/index.vue
index 6e23769083..f4a5eafb71 100644
--- a/packages/frontend/src/pages/my-lists/index.vue
+++ b/packages/frontend/src/pages/my-lists/index.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="_gaps">
<div v-if="items.length === 0" class="empty">
<div class="_fullinfo">
@@ -23,7 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkA>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/my-lists/list.vue b/packages/frontend/src/pages/my-lists/list.vue
index c187435af9..0b76fb4725 100644
--- a/packages/frontend/src/pages/my-lists/list.vue
+++ b/packages/frontend/src/pages/my-lists/list.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div v-if="list" class="_gaps">
<MkFolder>
<template #label>{{ i18n.ts.settings }}</template>
@@ -47,7 +47,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkFolder>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/note.vue b/packages/frontend/src/pages/note.vue
index ff4e9c7514..d801db017e 100644
--- a/packages/frontend/src/pages/note.vue
+++ b/packages/frontend/src/pages/note.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :displayBackButton="true" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div>
<Transition :name="prefer.s.animation ? 'fade' : ''" mode="out-in">
<div v-if="note">
@@ -43,7 +43,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkLoading v-else/>
</Transition>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/notifications.vue b/packages/frontend/src/pages/notifications.vue
index 61a1b2725c..5cb71945dd 100644
--- a/packages/frontend/src/pages/notifications.vue
+++ b/packages/frontend/src/pages/notifications.vue
@@ -4,8 +4,8 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div v-if="tab === 'all'">
<XNotifications :class="$style.notifications" :excludeTypes="excludeTypes"/>
</div>
@@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-else-if="tab === 'directNotes'">
<MkNotes :pagination="directNotesPagination"/>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
@@ -24,7 +24,6 @@ import { computed, ref } from 'vue';
import { notificationTypes } from '@@/js/const.js';
import XNotifications from '@/components/MkNotifications.vue';
import MkNotes from '@/components/MkNotes.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import * as os from '@/os.js';
import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
diff --git a/packages/frontend/src/pages/page-editor/page-editor.vue b/packages/frontend/src/pages/page-editor/page-editor.vue
index 67134f0976..7368e0329a 100644
--- a/packages/frontend/src/pages/page-editor/page-editor.vue
+++ b/packages/frontend/src/pages/page-editor/page-editor.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="jqqmcavi">
<MkButton v-if="pageId" class="button" inline link :to="`/@${ author.username }/pages/${ currentName }`"><i class="ti ti-external-link"></i> {{ i18n.ts._pages.viewPage }}</MkButton>
<MkButton v-if="!readonly" inline primary class="button" @click="save"><i class="ti ti-device-floppy"></i> {{ i18n.ts.save }}</MkButton>
@@ -55,7 +55,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton v-if="!readonly" rounded class="add" @click="add()"><i class="ti ti-plus"></i></MkButton>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/page.vue b/packages/frontend/src/pages/page.vue
index 9e76a450e6..59b1a5a137 100644
--- a/packages/frontend/src/pages/page.vue
+++ b/packages/frontend/src/pages/page.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :displayBackButton="true" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<Transition
:enterActiveClass="prefer.s.animation ? $style.fadeEnterActive : ''"
:leaveActiveClass="prefer.s.animation ? $style.fadeLeaveActive : ''"
@@ -92,7 +92,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkError v-else-if="error" @retry="fetchPage()"/>
<MkLoading v-else/>
</Transition>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/pages.vue b/packages/frontend/src/pages/pages.vue
index d412bad616..880c4deb25 100644
--- a/packages/frontend/src/pages/pages.vue
+++ b/packages/frontend/src/pages/pages.vue
@@ -4,35 +4,33 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="700">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <div v-if="tab === 'featured'">
- <MkPagination v-slot="{items}" :pagination="featuredPagesPagination">
- <div class="_gaps">
- <MkPagePreview v-for="page in items" :key="page.id" :page="page"/>
- </div>
- </MkPagination>
- </div>
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
+ <div v-if="tab === 'featured'">
+ <MkPagination v-slot="{items}" :pagination="featuredPagesPagination">
+ <div class="_gaps">
+ <MkPagePreview v-for="page in items" :key="page.id" :page="page"/>
+ </div>
+ </MkPagination>
+ </div>
- <div v-else-if="tab === 'my'" class="_gaps">
- <MkButton class="new" @click="create()"><i class="ti ti-plus"></i></MkButton>
- <MkPagination v-slot="{items}" :pagination="myPagesPagination">
- <div class="_gaps">
- <MkPagePreview v-for="page in items" :key="page.id" :page="page"/>
- </div>
- </MkPagination>
- </div>
+ <div v-else-if="tab === 'my'" class="_gaps">
+ <MkButton class="new" @click="create()"><i class="ti ti-plus"></i></MkButton>
+ <MkPagination v-slot="{items}" :pagination="myPagesPagination">
+ <div class="_gaps">
+ <MkPagePreview v-for="page in items" :key="page.id" :page="page"/>
+ </div>
+ </MkPagination>
+ </div>
- <div v-else-if="tab === 'liked'">
- <MkPagination v-slot="{items}" :pagination="likedPagesPagination">
- <div class="_gaps">
- <MkPagePreview v-for="like in items" :key="like.page.id" :page="like.page"/>
- </div>
- </MkPagination>
- </div>
- </MkSwiper>
- </MkSpacer>
+ <div v-else-if="tab === 'liked'">
+ <MkPagination v-slot="{items}" :pagination="likedPagesPagination">
+ <div class="_gaps">
+ <MkPagePreview v-for="like in items" :key="like.page.id" :page="like.page"/>
+ </div>
+ </MkPagination>
+ </div>
+ </div>
</PageWithHeader>
</template>
@@ -41,7 +39,6 @@ import { computed, ref } from 'vue';
import MkPagePreview from '@/components/MkPagePreview.vue';
import MkPagination from '@/components/MkPagination.vue';
import MkButton from '@/components/MkButton.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
import { useRouter } from '@/router.js';
diff --git a/packages/frontend/src/pages/registry.keys.vue b/packages/frontend/src/pages/registry.keys.vue
index 9140555f86..9dea3eba73 100644
--- a/packages/frontend/src/pages/registry.keys.vue
+++ b/packages/frontend/src/pages/registry.keys.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="600" :marginMin="16">
+ <div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px;">
<div class="_gaps_m">
<FormSplit>
<MkKeyValue>
@@ -27,7 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</FormSection>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/registry.value.vue b/packages/frontend/src/pages/registry.value.vue
index 7c0a7f20bb..5c5bbfba39 100644
--- a/packages/frontend/src/pages/registry.value.vue
+++ b/packages/frontend/src/pages/registry.value.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="600" :marginMin="16">
+ <div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px;">
<div class="_gaps_m">
<FormInfo warn>{{ i18n.ts.editTheseSettingsMayBreakAccount }}</FormInfo>
@@ -39,7 +39,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton danger @click="del"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
</template>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/registry.vue b/packages/frontend/src/pages/registry.vue
index c60833920b..5e59082b50 100644
--- a/packages/frontend/src/pages/registry.vue
+++ b/packages/frontend/src/pages/registry.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="600" :marginMin="16">
+ <div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px;">
<MkButton primary @click="createKey">{{ i18n.ts._registry.createKey }}</MkButton>
<div v-if="scopesWithDomain" class="_gaps_m">
@@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</FormSection>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/reset-password.vue b/packages/frontend/src/pages/reset-password.vue
index 0a7726a7f8..6584888148 100644
--- a/packages/frontend/src/pages/reset-password.vue
+++ b/packages/frontend/src/pages/reset-password.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer v-if="token" :contentMax="700" :marginMin="16" :marginMax="32">
+ <div v-if="token" class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div class="_gaps_m">
<MkInput v-model="password" type="password">
<template #prefix><i class="ti ti-lock"></i></template>
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton primary @click="save">{{ i18n.ts.save }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/reversi/game.board.vue b/packages/frontend/src/pages/reversi/game.board.vue
index b7434bff9f..c0c90cb993 100644
--- a/packages/frontend/src/pages/reversi/game.board.vue
+++ b/packages/frontend/src/pages/reversi/game.board.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="500">
+<div class="_spacer" style="--MI_SPACER-w: 500px;">
<div :class="$style.root" class="_gaps">
<div style="display: flex; align-items: center; justify-content: center; gap: 10px;">
<span>({{ i18n.ts._reversi.black }})</span>
@@ -138,7 +138,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<img src="/client-assets/reversi/logo.png" style="display: block; max-width: 100%; width: 200px; margin: auto;"/>
</MkA>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/reversi/game.setting.vue b/packages/frontend/src/pages/reversi/game.setting.vue
index 957b1cfc3d..8392384963 100644
--- a/packages/frontend/src/pages/reversi/game.setting.vue
+++ b/packages/frontend/src/pages/reversi/game.setting.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<MkStickyContainer>
- <MkSpacer :contentMax="600">
+ <div class="_spacer" style="--MI_SPACER-w: 600px;">
<div style="text-align: center;"><b><MkUserName :user="game.user1"/></b> vs <b><MkUserName :user="game.user2"/></b></div>
<div :class="{ [$style.disallow]: isReady }">
@@ -82,10 +82,10 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</div>
</div>
- </MkSpacer>
+ </div>
<template #footer>
<div :class="$style.footer">
- <MkSpacer :contentMax="700" :marginMin="16" :marginMax="16">
+ <div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 16px;">
<div style="text-align: center;" class="_gaps_s">
<div v-if="opponentHasSettingsChanged" style="color: var(--MI_THEME-warn);">{{ i18n.ts._reversi.opponentHasSettingsChanged }}</div>
<div>
@@ -103,7 +103,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkSwitch v-model="shareWhenStart">{{ i18n.ts._reversi.shareToTlTheGameWhenStart }}</MkSwitch>
</div>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
</MkStickyContainer>
diff --git a/packages/frontend/src/pages/reversi/index.vue b/packages/frontend/src/pages/reversi/index.vue
index e3f01d9938..f3252402d7 100644
--- a/packages/frontend/src/pages/reversi/index.vue
+++ b/packages/frontend/src/pages/reversi/index.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer v-if="!matchingAny && !matchingUser" :contentMax="600">
+<div v-if="!matchingAny && !matchingUser" class="_spacer" style="--MI_SPACER-w: 600px;">
<div class="_gaps">
<div>
<img src="/client-assets/reversi/logo.png" style="display: block; max-width: 100%; max-height: 200px; margin: auto;"/>
@@ -83,8 +83,8 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkPagination>
</MkFolder>
</div>
-</MkSpacer>
-<MkSpacer v-else :contentMax="600">
+</div>
+<div v-else class="_spacer" style="--MI_SPACER-w: 600px;">
<div :class="$style.waitingScreen">
<div v-if="matchingUser" :class="$style.waitingScreenTitle">
<I18n :src="i18n.ts.waitingFor" tag="span">
@@ -101,12 +101,13 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton inline rounded @click="cancelMatching">{{ i18n.ts.cancel }}</MkButton>
</div>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
import { onDeactivated, onMounted, onUnmounted, ref } from 'vue';
import * as Misskey from 'misskey-js';
+import { useInterval } from '@@/js/use-interval.js';
import { misskeyApi } from '@/utility/misskey-api.js';
import { definePage } from '@/page.js';
import { useStream } from '@/stream.js';
@@ -117,7 +118,6 @@ import { $i } from '@/i.js';
import MkPagination from '@/components/MkPagination.vue';
import { useRouter } from '@/router.js';
import * as os from '@/os.js';
-import { useInterval } from '@@/js/use-interval.js';
import { pleaseLogin } from '@/utility/please-login.js';
import * as sound from '@/utility/sound.js';
diff --git a/packages/frontend/src/pages/role.vue b/packages/frontend/src/pages/role.vue
index 5a1ed70e2f..f85dd8696a 100644
--- a/packages/frontend/src/pages/role.vue
+++ b/packages/frontend/src/pages/role.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader v-model:tab="tab" :displayBackButton="true" :tabs="headerTabs">
- <MkSpacer v-if="error != null" :contentMax="1200">
+ <div v-if="error != null" class="_spacer" style="--MI_SPACER-w: 1200px;">
<div :class="$style.root">
<img :class="$style.img" :src="serverErrorImageUrl" draggable="false"/>
<p :class="$style.text">
@@ -13,8 +13,8 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ error }}
</p>
</div>
- </MkSpacer>
- <MkSpacer v-else-if="tab === 'users'" :contentMax="1200">
+ </div>
+ <div v-else-if="tab === 'users'" class="_spacer" style="--MI_SPACER-w: 1200px;">
<div class="_gaps_s">
<div v-if="role">{{ role.description }}</div>
<MkUserList v-if="visible" :pagination="users" :extractor="(item) => item.user"/>
@@ -23,14 +23,14 @@ SPDX-License-Identifier: AGPL-3.0-only
<div>{{ i18n.ts.nothing }}</div>
</div>
</div>
- </MkSpacer>
- <MkSpacer v-else-if="tab === 'timeline'" :contentMax="700">
+ </div>
+ <div v-else-if="tab === 'timeline'" class="_spacer" style="--MI_SPACER-w: 700px;">
<MkTimeline v-if="visible" ref="timeline" src="role" :role="props.roleId"/>
<div v-else-if="!visible" class="_fullinfo">
<img :src="infoImageUrl" draggable="false"/>
<div>{{ i18n.ts.nothing }}</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/scratchpad.vue b/packages/frontend/src/pages/scratchpad.vue
index 3655620f4e..21ba637958 100644
--- a/packages/frontend/src/pages/scratchpad.vue
+++ b/packages/frontend/src/pages/scratchpad.vue
@@ -5,8 +5,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="800">
- <div :class="$style.root">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
+ <div class="_gaps">
<div class="_gaps_s">
<div :class="$style.editor" class="_panel">
<MkCodeEditor v-model="code" lang="aiscript" debounce/>
@@ -50,7 +50,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.scratchpadDescription }}
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
@@ -207,9 +207,6 @@ definePage(() => ({
<style lang="scss" module>
.root {
- display: flex;
- flex-direction: column;
- gap: var(--MI-margin);
}
.editor {
diff --git a/packages/frontend/src/pages/search.vue b/packages/frontend/src/pages/search.vue
index 814ddf3cb9..b6d21a4616 100644
--- a/packages/frontend/src/pages/search.vue
+++ b/packages/frontend/src/pages/search.vue
@@ -4,21 +4,19 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <MkSpacer v-if="tab === 'note'" :contentMax="800">
- <div v-if="notesSearchAvailable || ignoreNotesSearchAvailable">
- <XNote v-bind="props"/>
- </div>
- <div v-else>
- <MkInfo warn>{{ i18n.ts.notesSearchNotAvailable }}</MkInfo>
- </div>
- </MkSpacer>
+<PageWithHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs" :swipable="true">
+ <div v-if="tab === 'note'" class="_spacer" style="--MI_SPACER-w: 800px;">
+ <div v-if="notesSearchAvailable || ignoreNotesSearchAvailable">
+ <XNote v-bind="props"/>
+ </div>
+ <div v-else>
+ <MkInfo warn>{{ i18n.ts.notesSearchNotAvailable }}</MkInfo>
+ </div>
+ </div>
- <MkSpacer v-else-if="tab === 'user'" :contentMax="800">
- <XUser v-bind="props"/>
- </MkSpacer>
- </MkSwiper>
+ <div v-else-if="tab === 'user'" class="_spacer" style="--MI_SPACER-w: 800px;">
+ <XUser v-bind="props"/>
+ </div>
</PageWithHeader>
</template>
@@ -28,7 +26,6 @@ import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
import { notesSearchAvailable } from '@/utility/check-permissions.js';
import MkInfo from '@/components/MkInfo.vue';
-import MkSwiper from '@/components/MkSwiper.vue';
const props = withDefaults(defineProps<{
query?: string,
diff --git a/packages/frontend/src/pages/settings/2fa.qrdialog.vue b/packages/frontend/src/pages/settings/2fa.qrdialog.vue
index 03f973a33e..5bb125e67c 100644
--- a/packages/frontend/src/pages/settings/2fa.qrdialog.vue
+++ b/packages/frontend/src/pages/settings/2fa.qrdialog.vue
@@ -23,7 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template v-if="page === 0">
<div style="height: 100cqh; overflow: auto; text-align: center;">
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps">
<MkInfo><MkLink url="https://misskey-hub.net/docs/for-users/stepped-guides/how-to-enable-2fa/" target="_blank">{{ i18n.ts._2fa.moreDetailedGuideHere }}</MkLink></MkInfo>
@@ -50,12 +50,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton rounded @click="cancel">{{ i18n.ts.cancel }}</MkButton>
<MkButton primary rounded gradate @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
<template v-else-if="page === 1">
<div style="height: 100cqh; overflow: auto;">
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps">
<div>{{ i18n.ts._2fa.step3Title }}</div>
<MkInput v-model="token" autocomplete="one-time-code" inputmode="numeric"></MkInput>
@@ -65,12 +65,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton rounded @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
<MkButton primary rounded gradate @click="tokenDone">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
<template v-else-if="page === 2">
<div style="height: 100cqh; overflow: auto;">
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div class="_gaps">
<div style="text-align: center;">{{ i18n.ts._2fa.setupCompleted }}🎉</div>
<div style="text-align: center;">{{ i18n.ts._2fa.step4 }}</div>
@@ -97,7 +97,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="_buttonsCenter" style="margin-top: 16px;">
<MkButton primary rounded gradate @click="allDone">{{ i18n.ts.done }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</div>
</template>
</Transition>
diff --git a/packages/frontend/src/pages/settings/avatar-decoration.dialog.vue b/packages/frontend/src/pages/settings/avatar-decoration.dialog.vue
index 1fd977cbd4..91280dccb9 100644
--- a/packages/frontend/src/pages/settings/avatar-decoration.dialog.vue
+++ b/packages/frontend/src/pages/settings/avatar-decoration.dialog.vue
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #header>{{ i18n.ts.avatarDecorations }}</template>
<div>
- <MkSpacer :marginMin="20" :marginMax="28">
+ <div class="_spacer" style="--MI_SPACER-min: 20px; --MI_SPACER-max: 28px;">
<div style="text-align: center;">
<div :class="$style.name">{{ decoration.name }}</div>
<MkAvatar style="width: 64px; height: 64px; margin-bottom: 20px;" :user="$i" :decorations="decorationsForPreview" forceShowDecoration/>
@@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #label>{{ i18n.ts.flip }}</template>
</MkSwitch>
</div>
- </MkSpacer>
+ </div>
<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>
diff --git a/packages/frontend/src/pages/settings/emoji-palette.vue b/packages/frontend/src/pages/settings/emoji-palette.vue
index 4e92b7a3ab..e1a1c39f03 100644
--- a/packages/frontend/src/pages/settings/emoji-palette.vue
+++ b/packages/frontend/src/pages/settings/emoji-palette.vue
@@ -260,12 +260,6 @@ definePage(() => ({
</script>
<style lang="scss" module>
-.tab {
- margin: calc(var(--MI-margin) / 2) 0;
- padding: calc(var(--MI-margin) / 2) 0;
- background: var(--MI_THEME-bg);
-}
-
.emojis {
padding: 12px;
font-size: 1.1em;
diff --git a/packages/frontend/src/pages/settings/index.vue b/packages/frontend/src/pages/settings/index.vue
index a11ae2a6f6..61e3ca8b6c 100644
--- a/packages/frontend/src/pages/settings/index.vue
+++ b/packages/frontend/src/pages/settings/index.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :tabs="headerTabs" :actions="headerActions">
- <MkSpacer :contentMax="900" :marginMin="20" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 900px; --MI_SPACER-min: 20px; --MI_SPACER-max: 32px;">
<div ref="el" class="vvcocwet" :class="{ wide: !narrow }">
<div class="body">
<div v-if="!narrow || currentPage?.route.name == null" class="nav">
@@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue
index 519ce6db2f..7c588acae2 100644
--- a/packages/frontend/src/pages/settings/preferences.vue
+++ b/packages/frontend/src/pages/settings/preferences.vue
@@ -42,6 +42,14 @@ SPDX-License-Identifier: AGPL-3.0-only
</SearchMarker>
<div class="_gaps_s">
+ <SearchMarker :keywords="['titlebar', 'show']">
+ <MkPreferenceContainer k="showTitlebar">
+ <MkSwitch v-model="showTitlebar">
+ <template #label><SearchLabel>{{ i18n.ts.showTitlebar }}</SearchLabel></template>
+ </MkSwitch>
+ </MkPreferenceContainer>
+ </SearchMarker>
+
<SearchMarker :keywords="['avatar', 'icon', 'decoration', 'show']">
<MkPreferenceContainer k="showAvatarDecorations">
<MkSwitch v-model="showAvatarDecorations">
@@ -945,6 +953,7 @@ const lang = ref(miLocalStorage.getItem('lang'));
const dataSaver = ref(prefer.s.dataSaver);
const overridedDeviceKind = prefer.model('overridedDeviceKind');
+const showTitlebar = prefer.model('showTitlebar');
const keepCw = prefer.model('keepCw');
const serverDisconnectedBehavior = prefer.model('serverDisconnectedBehavior');
const hemisphere = prefer.model('hemisphere');
diff --git a/packages/frontend/src/pages/share.vue b/packages/frontend/src/pages/share.vue
index 57afdb9121..71f572657b 100644
--- a/packages/frontend/src/pages/share.vue
+++ b/packages/frontend/src/pages/share.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<MkPostForm
v-if="state === 'writing'"
fixed
@@ -24,7 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton primary @click="close">{{ i18n.ts.close }}</MkButton>
<MkButton @click="goToMisskey">{{ i18n.ts.goToMisskey }}</MkButton>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/tag.vue b/packages/frontend/src/pages/tag.vue
index 77e102f239..40562ff27e 100644
--- a/packages/frontend/src/pages/tag.vue
+++ b/packages/frontend/src/pages/tag.vue
@@ -5,14 +5,14 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :displayBackButton="true" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<MkNotes ref="notes" class="" :pagination="pagination"/>
- </MkSpacer>
+ </div>
<template v-if="$i" #footer>
<div :class="$style.footer">
- <MkSpacer :contentMax="800" :marginMin="16" :marginMax="16">
+ <div class="_spacer" style="--MI_SPACER-w: 800px; --MI_SPACER-min: 16px; --MI_SPACER-max: 16px;">
<MkButton rounded primary :class="$style.button" @click="post()"><i class="ti ti-pencil"></i>{{ i18n.ts.postToHashtag }}</MkButton>
- </MkSpacer>
+ </div>
</div>
</template>
</PageWithHeader>
diff --git a/packages/frontend/src/pages/theme-editor.vue b/packages/frontend/src/pages/theme-editor.vue
index 2570c40fe0..585d96bd08 100644
--- a/packages/frontend/src/pages/theme-editor.vue
+++ b/packages/frontend/src/pages/theme-editor.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :tabs="headerTabs">
- <MkSpacer :contentMax="800" :marginMin="16" :marginMax="32">
+ <div class="_spacer" style="--MI_SPACER-w: 800px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div class="cwepdizn _gaps_m">
<MkFolder :defaultOpen="true">
<template #label>{{ i18n.ts.backgroundColor }}</template>
@@ -67,7 +67,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkFolder>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue
index 731242425c..f499c35c9a 100644
--- a/packages/frontend/src/pages/timeline.vue
+++ b/packages/frontend/src/pages/timeline.vue
@@ -4,37 +4,33 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div ref="rootEl" class="_pageScrollable">
- <MkStickyContainer>
- <template #header><MkPageHeader v-model:tab="src" :displayMyAvatar="true" :actions="headerActions" :tabs="$i ? headerTabs : headerTabsWhenNotLogin"/></template>
- <MkSpacer :contentMax="800">
- <MkInfo v-if="isBasicTimeline(src) && !store.r.timelineTutorials.value[src]" style="margin-bottom: var(--MI-margin);" closable @close="closeTutorial()">
- {{ i18n.ts._timelineDescription[src] }}
- </MkInfo>
- <MkPostForm v-if="prefer.r.showFixedPostForm.value" :class="$style.postForm" class="_panel" fixed style="margin-bottom: var(--MI-margin);"/>
- <div v-if="queue > 0" :class="$style.new"><button class="_buttonPrimary" :class="$style.newButton" @click="top()">{{ i18n.ts.newNoteRecived }}</button></div>
- <MkTimeline
- ref="tlComponent"
- :key="src + withRenotes + withBots + withReplies + onlyFiles + withSensitive"
- :class="$style.tl"
- :src="src.split(':')[0]"
- :list="src.split(':')[1]"
- :withRenotes="withRenotes"
- :withReplies="withReplies"
- :withSensitive="withSensitive"
- :onlyFiles="onlyFiles"
- :withBots="withBots"
- :sound="true"
- @queue="queueUpdated"
- />
- </MkSpacer>
- </MkStickyContainer>
-</div>
+<PageWithHeader ref="pageComponent" v-model:tab="src" :actions="headerActions" :tabs="$i ? headerTabs : headerTabsWhenNotLogin" :swipable="true" :displayMyAvatar="true">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
+ <MkInfo v-if="isBasicTimeline(src) && !store.r.timelineTutorials.value[src]" style="margin-bottom: var(--MI-margin);" closable @close="closeTutorial()">
+ {{ i18n.ts._timelineDescription[src] }}
+ </MkInfo>
+ <MkPostForm v-if="prefer.r.showFixedPostForm.value" :class="$style.postForm" class="_panel" fixed style="margin-bottom: var(--MI-margin);"/>
+ <div v-if="queue > 0" :class="$style.new"><button class="_buttonPrimary" :class="$style.newButton" @click="top()">{{ i18n.ts.newNoteRecived }}</button></div>
+ <MkTimeline
+ ref="tlComponent"
+ :key="src + withRenotes + withBots + withReplies + onlyFiles + withSensitive"
+ :class="$style.tl"
+ :src="src.split(':')[0]"
+ :list="src.split(':')[1]"
+ :withRenotes="withRenotes"
+ :withReplies="withReplies"
+ :withSensitive="withSensitive"
+ :onlyFiles="onlyFiles"
+ :withBots="withBots"
+ :sound="true"
+ @queue="queueUpdated"
+ />
+ </div>
+</PageWithHeader>
</template>
<script lang="ts" setup>
import { computed, watch, provide, useTemplateRef, ref, onMounted, onActivated } from 'vue';
-import { scrollInContainer } from '@@/js/scroll.js';
import type { Tab } from '@/components/global/MkPageHeader.tabs.vue';
import type { MenuItem } from '@/types/menu.js';
import type { BasicTimelineType } from '@/timelines.js';
@@ -52,20 +48,11 @@ import { deepMerge } from '@/utility/merge.js';
import { miLocalStorage } from '@/local-storage.js';
import { availableBasicTimelines, hasWithReplies, isAvailableBasicTimeline, isBasicTimeline, basicTimelineIconClass } from '@/timelines.js';
import { prefer } from '@/preferences.js';
-import { useRouter } from '@/router.js';
-import { useScrollPositionKeeper } from '@/use/use-scroll-position-keeper.js';
provide('shouldOmitHeaderTitle', true);
const tlComponent = useTemplateRef('tlComponent');
-const rootEl = useTemplateRef('rootEl');
-
-useScrollPositionKeeper(rootEl);
-
-const router = useRouter();
-router.useListener('same', () => {
- top();
-});
+const pageComponent = useTemplateRef('pageComponent');
type TimelinePageSrc = BasicTimelineType | `list:${string}`;
@@ -138,7 +125,7 @@ function queueUpdated(q: number): void {
}
function top(): void {
- if (rootEl.value) scrollInContainer(rootEl.value, { top: 0, behavior: 'instant' });
+ if (pageComponent.value) pageComponent.value.scrollToTop();
}
async function chooseList(ev: MouseEvent): Promise<void> {
diff --git a/packages/frontend/src/pages/user-list-timeline.vue b/packages/frontend/src/pages/user-list-timeline.vue
index 754ae2467e..cb4d6f4240 100644
--- a/packages/frontend/src/pages/user-list-timeline.vue
+++ b/packages/frontend/src/pages/user-list-timeline.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :displayBackButton="true" :tabs="headerTabs">
- <MkSpacer :contentMax="800">
+ <div class="_spacer" style="--MI_SPACER-w: 800px;">
<div ref="rootEl">
<div v-if="queue > 0" :class="$style.new"><button class="_buttonPrimary" :class="$style.newButton" @click="top()">{{ i18n.ts.newNoteRecived }}</button></div>
<div :class="$style.tl">
@@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
/>
</div>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/user-tag.vue b/packages/frontend/src/pages/user-tag.vue
index d1dc721a4b..959d449e40 100644
--- a/packages/frontend/src/pages/user-tag.vue
+++ b/packages/frontend/src/pages/user-tag.vue
@@ -5,11 +5,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader>
- <MkSpacer :contentMax="1200">
+ <div class="_spacer" style="--MI_SPACER-w: 1200px;">
<div class="_gaps_s">
<MkUserList :pagination="tagUsers"/>
</div>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/user/achievements.vue b/packages/frontend/src/pages/user/achievements.vue
index 8f13e959e1..d40998c307 100644
--- a/packages/frontend/src/pages/user/achievements.vue
+++ b/packages/frontend/src/pages/user/achievements.vue
@@ -4,9 +4,9 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="1200">
+<div class="_spacer" style="--MI_SPACER-w: 1200px;">
<MkAchievements :user="user" :withLocked="false" :withDescription="$i != null && (props.user.id === $i.id)"/>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/activity.vue b/packages/frontend/src/pages/user/activity.vue
index 994bd52705..a49b82e630 100644
--- a/packages/frontend/src/pages/user/activity.vue
+++ b/packages/frontend/src/pages/user/activity.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="700">
+<div class="_spacer" style="--MI_SPACER-w: 700px;">
<div class="_gaps">
<MkFoldableSection class="item">
<template #header><i class="ti ti-activity"></i> Heatmap</template>
@@ -23,7 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<XPv :user="user"/>
</MkFoldableSection>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/clips.vue b/packages/frontend/src/pages/user/clips.vue
index 38ce78e8d5..c980c83a26 100644
--- a/packages/frontend/src/pages/user/clips.vue
+++ b/packages/frontend/src/pages/user/clips.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="700">
+<div class="_spacer" style="--MI_SPACER-w: 700px;">
<div>
<MkPagination v-slot="{items}" ref="list" :pagination="pagination">
<MkA v-for="item in items" :key="item.id" :to="`/clips/${item.id}`" :class="$style.item" class="_panel _margin">
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkA>
</MkPagination>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/files.vue b/packages/frontend/src/pages/user/files.vue
index b6c7c1c777..91ebcad0b2 100644
--- a/packages/frontend/src/pages/user/files.vue
+++ b/packages/frontend/src/pages/user/files.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
- <MkSpacer :contentMax="1100">
+ <div class="_spacer" style="--MI_SPACER-w: 1100px;">
<div :class="$style.root">
<MkPagination v-slot="{items}" :pagination="pagination">
<div :class="$style.stream">
@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</MkPagination>
</div>
- </MkSpacer>
+ </div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/flashs.vue b/packages/frontend/src/pages/user/flashs.vue
index b3313476e1..16957a5a2b 100644
--- a/packages/frontend/src/pages/user/flashs.vue
+++ b/packages/frontend/src/pages/user/flashs.vue
@@ -4,11 +4,11 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="700">
+<div class="_spacer" style="--MI_SPACER-w: 700px;">
<MkPagination v-slot="{items}" ref="list" :pagination="pagination">
<MkFlashPreview v-for="flash in items" :key="flash.id" :flash="flash" class="_margin"/>
</MkPagination>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/followers.vue b/packages/frontend/src/pages/user/followers.vue
index b8ba023f74..ae9765b60a 100644
--- a/packages/frontend/src/pages/user/followers.vue
+++ b/packages/frontend/src/pages/user/followers.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :displayBackButton="true" :tabs="headerTabs">
- <MkSpacer :contentMax="1000">
+ <div class="_spacer" style="--MI_SPACER-w: 1000px;">
<Transition name="fade" mode="out-in">
<div v-if="user">
<XFollowList :user="user" type="followers"/>
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkError v-else-if="error" @retry="fetchUser()"/>
<MkLoading v-else/>
</Transition>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/user/following.vue b/packages/frontend/src/pages/user/following.vue
index 1fe64c3042..8fd594c4e0 100644
--- a/packages/frontend/src/pages/user/following.vue
+++ b/packages/frontend/src/pages/user/following.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<PageWithHeader :actions="headerActions" :displayBackButton="true" :tabs="headerTabs">
- <MkSpacer :contentMax="1000">
+ <div class="_spacer" style="--MI_SPACER-w: 1000px;">
<Transition name="fade" mode="out-in">
<div v-if="user">
<XFollowList :user="user" type="following"/>
@@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkError v-else-if="error" @retry="fetchUser()"/>
<MkLoading v-else/>
</Transition>
- </MkSpacer>
+ </div>
</PageWithHeader>
</template>
diff --git a/packages/frontend/src/pages/user/gallery.vue b/packages/frontend/src/pages/user/gallery.vue
index 0bc5628528..11874bfd87 100644
--- a/packages/frontend/src/pages/user/gallery.vue
+++ b/packages/frontend/src/pages/user/gallery.vue
@@ -4,13 +4,13 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="700">
+<div class="_spacer" style="--MI_SPACER-w: 700px;">
<MkPagination v-slot="{items}" :pagination="pagination">
<div :class="$style.root">
<MkGalleryPostPreview v-for="post in items" :key="post.id" :post="post" class="post"/>
</div>
</MkPagination>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue
index c057312f63..f15e4d7bcd 100644
--- a/packages/frontend/src/pages/user/home.vue
+++ b/packages/frontend/src/pages/user/home.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="narrow ? 800 : 1100" :style="background" style="transform: none !important;">
+<div class="_spacer" :style="{ '--MI_SPACER-w': narrow ? '800px' : '1100px', ...background, transform: 'none !important;' }">
<div ref="rootEl" class="ftskorzw" :class="{ wide: !narrow }" style="container-type: inline-size;">
<div class="main _gaps">
<MkInfo v-if="user.isSuspended" :warn="true">{{ i18n.ts.userSuspended }}</MkInfo>
@@ -192,7 +192,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
</div>
<div class="background"></div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/index.vue b/packages/frontend/src/pages/user/index.vue
index 17dd1d5f3c..38b1590a51 100644
--- a/packages/frontend/src/pages/user/index.vue
+++ b/packages/frontend/src/pages/user/index.vue
@@ -4,24 +4,22 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<PageWithHeader v-model:tab="tab" :displayBackButton="true" :tabs="headerTabs" :actions="headerActions">
+<PageWithHeader v-model:tab="tab" :displayBackButton="true" :tabs="headerTabs" :actions="headerActions" :swipable="true">
<div v-if="user">
- <MkSwiper v-model:tab="tab" :tabs="headerTabs">
- <XHome v-if="tab === 'home'" :user="user" @unfoldFiles="() => { tab = 'files'; }"/>
- <MkSpacer v-else-if="tab === 'notes'" :contentMax="800" style="padding-top: 0">
- <XTimeline :user="user"/>
- </MkSpacer>
- <XFiles v-else-if="tab === 'files'" :user="user"/>
- <XActivity v-else-if="tab === 'activity'" :user="user"/>
- <XAchievements v-else-if="tab === 'achievements'" :user="user"/>
- <XReactions v-else-if="tab === 'reactions'" :user="user"/>
- <XClips v-else-if="tab === 'clips'" :user="user"/>
- <XLists v-else-if="tab === 'lists'" :user="user"/>
- <XPages v-else-if="tab === 'pages'" :user="user"/>
- <XFlashs v-else-if="tab === 'flashs'" :user="user"/>
- <XGallery v-else-if="tab === 'gallery'" :user="user"/>
- <XRaw v-else-if="tab === 'raw'" :user="user"/>
- </MkSwiper>
+ <XHome v-if="tab === 'home'" :user="user" @unfoldFiles="() => { tab = 'files'; }"/>
+ <div v-else-if="tab === 'notes'" class="_spacer" style="--MI_SPACER-w: 800px;">
+ <XTimeline :user="user"/>
+ </div>
+ <XFiles v-else-if="tab === 'files'" :user="user"/>
+ <XActivity v-else-if="tab === 'activity'" :user="user"/>
+ <XAchievements v-else-if="tab === 'achievements'" :user="user"/>
+ <XReactions v-else-if="tab === 'reactions'" :user="user"/>
+ <XClips v-else-if="tab === 'clips'" :user="user"/>
+ <XLists v-else-if="tab === 'lists'" :user="user"/>
+ <XPages v-else-if="tab === 'pages'" :user="user"/>
+ <XFlashs v-else-if="tab === 'flashs'" :user="user"/>
+ <XGallery v-else-if="tab === 'gallery'" :user="user"/>
+ <XRaw v-else-if="tab === 'raw'" :user="user"/>
</div>
<MkError v-else-if="error" @retry="fetchUser()"/>
<MkLoading v-else/>
@@ -36,7 +34,6 @@ import { misskeyApi } from '@/utility/misskey-api.js';
import { definePage } from '@/page.js';
import { i18n } from '@/i18n.js';
import { $i } from '@/i.js';
-import MkSwiper from '@/components/MkSwiper.vue';
import { serverContext, assertServerContext } from '@/server-context.js';
const XHome = defineAsyncComponent(() => import('./home.vue'));
diff --git a/packages/frontend/src/pages/user/lists.vue b/packages/frontend/src/pages/user/lists.vue
index a3d1974ced..d8ebea41c0 100644
--- a/packages/frontend/src/pages/user/lists.vue
+++ b/packages/frontend/src/pages/user/lists.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<MkStickyContainer>
- <MkSpacer :contentMax="700">
+ <div class="_spacer" style="--MI_SPACER-w: 700px;">
<div>
<MkPagination v-slot="{items}" ref="pagingComponent" :pagination="pagination" class="lists">
<MkA v-for="list in items" :key="list.id" class="_panel" :class="$style.list" :to="`/list/${ list.id }`">
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkA>
</MkPagination>
</div>
- </MkSpacer>
+ </div>
</MkStickyContainer>
</template>
@@ -23,7 +23,6 @@ import {} from 'vue';
import * as Misskey from 'misskey-js';
import MkPagination from '@/components/MkPagination.vue';
import MkStickyContainer from '@/components/global/MkStickyContainer.vue';
-import MkSpacer from '@/components/global/MkSpacer.vue';
import MkAvatars from '@/components/MkAvatars.vue';
const props = defineProps<{
diff --git a/packages/frontend/src/pages/user/pages.vue b/packages/frontend/src/pages/user/pages.vue
index 6375bf7d74..fe6141285e 100644
--- a/packages/frontend/src/pages/user/pages.vue
+++ b/packages/frontend/src/pages/user/pages.vue
@@ -4,11 +4,11 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="700">
+<div class="_spacer" style="--MI_SPACER-w: 700px;">
<MkPagination v-slot="{items}" ref="list" :pagination="pagination">
<MkPagePreview v-for="page in items" :key="page.id" :page="page" class="_margin"/>
</MkPagination>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/raw.vue b/packages/frontend/src/pages/user/raw.vue
index f24a215afc..35dc00fbaf 100644
--- a/packages/frontend/src/pages/user/raw.vue
+++ b/packages/frontend/src/pages/user/raw.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="600" :marginMin="16" :marginMax="32">
+<div class="_spacer" style="--MI_SPACER-w: 600px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<div class="_gaps_m">
<div :class="$style.userMInfoRoot">
<MkAvatar :class="$style.userMInfoAvatar" :user="user" indicator link preview/>
@@ -35,7 +35,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkObjectView tall :value="user"></MkObjectView>
</FormSection>
</div>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/pages/user/reactions.vue b/packages/frontend/src/pages/user/reactions.vue
index 7168778e12..9b7a3bc3bd 100644
--- a/packages/frontend/src/pages/user/reactions.vue
+++ b/packages/frontend/src/pages/user/reactions.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<MkSpacer :contentMax="700">
+<div class="_spacer" style="--MI_SPACER-w: 700px;">
<MkPagination v-slot="{items}" ref="list" :pagination="pagination">
<div v-for="item in items" :key="item.id" :to="`/clips/${item.id}`" class="_panel _margin">
<div :class="$style.header">
@@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkNote :key="item.id" :note="item.note"/>
</div>
</MkPagination>
-</MkSpacer>
+</div>
</template>
<script lang="ts" setup>
diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts
index 6dd6c15ec5..58e26cb005 100644
--- a/packages/frontend/src/preferences/def.ts
+++ b/packages/frontend/src/preferences/def.ts
@@ -334,6 +334,9 @@ export const PREF_DEF = {
showNavbarSubButtons: {
default: true,
},
+ showTitlebar: {
+ default: false,
+ },
plugins: {
default: [] as Plugin[],
},
diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts
index 36949e272e..0626779869 100644
--- a/packages/frontend/src/store.ts
+++ b/packages/frontend/src/store.ts
@@ -38,6 +38,10 @@ export const store = markRaw(new Pizzax('base', {
where: 'account',
default: false,
},
+ readDriveTip: {
+ where: 'account',
+ default: false,
+ },
memo: {
where: 'account',
default: null,
diff --git a/packages/frontend/src/style.scss b/packages/frontend/src/style.scss
index 304df91617..18e67eaa95 100644
--- a/packages/frontend/src/style.scss
+++ b/packages/frontend/src/style.scss
@@ -205,6 +205,31 @@ rt {
text-align: center;
}
+/* TODO: 引数ã¯ç¾åœ¨CSS変数経由ã§å—ã‘å–ã£ã¦ã„ã‚‹ãŒã€å°†æ¥çš„ã«ã¯attr()を使ã£ãŸæ–¹ãŒç¶ºéº—ãㆠ*/
+._spacer {
+ width: 100%;
+ max-width: min(var(--MI_SPACER-w, 100%), calc(100% - (var(--MI_SPACER-max, 24px) * 2)));
+ margin: var(--MI_SPACER-max, 24px) auto;
+ container-type: inline-size;
+
+ /* å­ã«ç¶™æ‰¿ã•ã›ãªã„ */
+ --MI_SPACER-w: initial;
+ --MI_SPACER-min: initial;
+ --MI_SPACER-max: initial;
+}
+
+._forceShrinkSpacer ._spacer {
+ max-width: min(var(--MI_SPACER-w, 100%), calc(100% - (var(--MI_SPACER-min, 12px) * 2)));
+ margin: var(--MI_SPACER-min, 12px) auto;
+}
+
+@container (max-width: 450px) {
+ ._spacer {
+ max-width: min(var(--MI_SPACER-w, 100%), calc(100% - (var(--MI_SPACER-min, 12px) * 2)));
+ margin: var(--MI_SPACER-min, 12px) auto;
+ }
+}
+
._pageContainer {
container-type: size;
contain: strict;
diff --git a/packages/frontend/src/ui/_common_/common.vue b/packages/frontend/src/ui/_common_/common.vue
index fd7a89dc22..14c4424e67 100644
--- a/packages/frontend/src/ui/_common_/common.vue
+++ b/packages/frontend/src/ui/_common_/common.vue
@@ -421,7 +421,7 @@ function getPointerEvents() {
#devTicker {
position: fixed;
- top: 0;
+ bottom: 0;
left: 0;
z-index: 2147483647;
color: #ff0;
diff --git a/packages/frontend/src/ui/_common_/mobile-footer-menu.vue b/packages/frontend/src/ui/_common_/mobile-footer-menu.vue
index 7c2de12221..88c6191e5a 100644
--- a/packages/frontend/src/ui/_common_/mobile-footer-menu.vue
+++ b/packages/frontend/src/ui/_common_/mobile-footer-menu.vue
@@ -79,10 +79,9 @@ watch(rootEl, () => {
.root {
position: relative;
z-index: 1;
- padding: 12px 12px max(12px, env(safe-area-inset-bottom, 0px)) 12px;
+ padding-bottom: env(safe-area-inset-bottom, 0px);
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
- grid-gap: 8px;
width: 100%;
box-sizing: border-box;
background: var(--MI_THEME-navBg);
@@ -91,6 +90,16 @@ watch(rootEl, () => {
}
.item {
+ padding: 12px 0;
+
+ &:first-child {
+ padding-left: 12px;
+ }
+
+ &:last-child {
+ padding-right: 12px;
+ }
+
&.post {
.itemInner {
background: linear-gradient(90deg, var(--MI_THEME-buttonGradateA), var(--MI_THEME-buttonGradateB));
@@ -112,7 +121,7 @@ watch(rootEl, () => {
padding: 0;
aspect-ratio: 1;
width: 100%;
- max-width: 45px;
+ max-width: 42px;
margin: auto;
align-content: center;
border-radius: 100%;
diff --git a/packages/frontend/src/ui/_common_/navbar-for-mobile.vue b/packages/frontend/src/ui/_common_/navbar-for-mobile.vue
index 94f333da41..f61e178bce 100644
--- a/packages/frontend/src/ui/_common_/navbar-for-mobile.vue
+++ b/packages/frontend/src/ui/_common_/navbar-for-mobile.vue
@@ -121,6 +121,7 @@ function more() {
display: inline-block;
width: 38px;
aspect-ratio: 1;
+ border-radius: 8px;
}
.wideInstanceIcon {
diff --git a/packages/frontend/src/ui/_common_/navbar.vue b/packages/frontend/src/ui/_common_/navbar.vue
index 2708683acb..6bf0dfc17c 100644
--- a/packages/frontend/src/ui/_common_/navbar.vue
+++ b/packages/frontend/src/ui/_common_/navbar.vue
@@ -7,7 +7,6 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="[$style.root, { [$style.iconOnly]: iconOnly }]">
<div :class="$style.body">
<div :class="$style.top">
- <div :class="$style.banner" :style="{ backgroundImage: `url(${ instance.bannerUrl })` }"></div>
<button v-tooltip.noDelay.right="instance.name ?? i18n.ts.instance" class="_button" :class="$style.instance" @click="openInstanceMenu">
<img :src="instance.sidebarLogoUrl && !iconOnly ? instance.sidebarLogoUrl : instance.iconUrl || '/favicon.ico'" alt="" :class="instance.sidebarLogoUrl && !iconOnly ? $style.wideInstanceIcon : $style.instanceIcon" style="viewTransitionName: navbar-serverIcon;"/>
</button>
@@ -183,12 +182,9 @@ function menuEdit() {
}
.body {
- position: fixed;
- top: 0;
- left: 0;
- z-index: 1001;
+ position: relative;
width: var(--nav-icon-only-width);
- height: 100dvh;
+ height: 100%;
box-sizing: border-box;
overflow: auto;
overflow-x: clip;
@@ -303,18 +299,6 @@ function menuEdit() {
backdrop-filter: var(--MI-blur, blur(8px));
}
- .banner {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-size: cover;
- background-position: center center;
- -webkit-mask-image: linear-gradient(0deg, rgba(0,0,0,0) 15%, rgba(0,0,0,0.75) 100%);
- mask-image: linear-gradient(0deg, rgba(0,0,0,0) 15%, rgba(0,0,0,0.75) 100%);
- }
-
.instance {
position: relative;
display: block;
@@ -335,6 +319,7 @@ function menuEdit() {
display: inline-block;
width: 38px;
aspect-ratio: 1;
+ border-radius: 8px;
}
.wideInstanceIcon {
@@ -566,6 +551,7 @@ function menuEdit() {
display: inline-block;
width: 30px;
aspect-ratio: 1;
+ border-radius: 8px;
}
.bottom {
diff --git a/packages/frontend/src/ui/_common_/titlebar.vue b/packages/frontend/src/ui/_common_/titlebar.vue
new file mode 100644
index 0000000000..c62b13b73a
--- /dev/null
+++ b/packages/frontend/src/ui/_common_/titlebar.vue
@@ -0,0 +1,87 @@
+<!--
+SPDX-FileCopyrightText: syuilo and misskey-project
+SPDX-License-Identifier: AGPL-3.0-only
+-->
+
+<template>
+<div :class="$style.root">
+ <div :class="$style.title">
+ <img :src="instance.iconUrl || instance.faviconUrl || '/favicon.ico'" alt="" :class="$style.instanceIcon"/>
+ <span :class="$style.instanceTitle">{{ instance.name ?? host }}</span>
+ </div>
+ <div :class="$style.controls">
+ <span :class="$style.left">
+ <button v-if="canBack" class="_button" :class="$style.button" @click="goBack"><i class="ti ti-arrow-left"></i></button>
+ </span>
+ <span :class="$style.right">
+ </span>
+ </div>
+</div>
+</template>
+
+<script lang="ts" setup>
+import { host } from '@@/js/config.js';
+import { ref } from 'vue';
+import { instance } from '@/instance.js';
+import { prefer } from '@/preferences.js';
+
+const canBack = ref(true);
+
+function goBack() {
+ window.history.back();
+}
+</script>
+
+<style lang="scss" module>
+.root {
+ --height: 36px;
+
+ background: var(--MI_THEME-navBg);
+ height: var(--height);
+ font-size: 90%;
+}
+
+.title {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ height: var(--height);
+}
+
+.controls {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: var(--height);
+}
+
+.instanceIcon {
+ display: inline-block;
+ width: 20px;
+ aspect-ratio: 1;
+ border-radius: 5px;
+ margin-right: 8px;
+}
+
+.instanceTitle {
+ display: inline-block;
+}
+
+.left {
+ margin-right: auto;
+}
+
+.right {
+ margin-left: auto;
+}
+
+.button {
+ display: inline-block;
+ height: var(--height);
+ aspect-ratio: 1;
+}
+</style>
diff --git a/packages/frontend/src/ui/deck.vue b/packages/frontend/src/ui/deck.vue
index fbe86bc4cb..ed85bb3bc5 100644
--- a/packages/frontend/src/ui/deck.vue
+++ b/packages/frontend/src/ui/deck.vue
@@ -4,76 +4,80 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div :class="[$style.root, { [$style.withWallpaper]: withWallpaper }]">
- <XSidebar v-if="!isMobile && prefer.r['deck.navbarPosition'].value === 'left'"/>
+<div :class="[$style.root]">
+ <XTitlebar v-if="prefer.r.showTitlebar.value" style="flex-shrink: 0;"/>
- <div :class="$style.main">
- <XNavbarH v-if="!isMobile && prefer.r['deck.navbarPosition'].value === 'top'"/>
+ <div :class="$style.nonTitlebarArea">
+ <XSidebar v-if="!isMobile && prefer.r['deck.navbarPosition'].value === 'left'"/>
- <XAnnouncements v-if="$i"/>
- <XStatusBars/>
- <div :class="$style.columnsWrapper">
- <!-- passive: https://bugs.webkit.org/show_bug.cgi?id=281300 -->
- <div ref="columnsEl" :class="[$style.columns, { [$style.center]: prefer.r['deck.columnAlign'].value === 'center', [$style.snapScroll]: snapScroll }]" @contextmenu.self.prevent="onContextmenu" @wheel.passive.self="onWheel">
- <!-- sectionを利用ã—ã¦ã„ã‚‹ã®ã¯ã€deck.vueå´ã§columnã«å¯¾ã—ã¦first-of-typeを効ã‹ã›ã‚‹ãŸã‚ -->
- <section
- v-for="ids in layout"
- :class="$style.section"
- :style="columns.filter(c => ids.includes(c.id)).some(c => c.flexible) ? { flex: 1, minWidth: '350px' } : { width: Math.max(...columns.filter(c => ids.includes(c.id)).map(c => c.width)) + 'px' }"
- @wheel.passive.self="onWheel"
- >
- <Suspense>
- <component
- :is="columnComponents[columns.find(c => c.id === id)!.type] ?? XTlColumn"
- v-for="id in ids"
- :ref="id"
- :key="id"
- :class="[$style.column, { '_shadow': withWallpaper }]"
- :column="columns.find(c => c.id === id)!"
- :isStacked="ids.length > 1"
- @headerWheel="onWheel"
- />
- <template #fallback>
- <MkLoading/>
- </template>
- </Suspense>
- </section>
- <div v-if="layout.length === 0" class="_panel" :class="$style.onboarding">
- <div>{{ i18n.ts._deck.introduction }}</div>
- <div>{{ i18n.ts._deck.introduction2 }}</div>
+ <div :class="[$style.main, { [$style.withWallpaper]: withWallpaper, [$style.withSidebarAndTitlebar]: !isMobile && prefer.r['deck.navbarPosition'].value === 'left' && prefer.r.showTitlebar.value }]" :style="{ backgroundImage: prefer.s['deck.wallpaper'] != null ? `url(${ prefer.s['deck.wallpaper'] })` : null }">
+ <XNavbarH v-if="!isMobile && prefer.r['deck.navbarPosition'].value === 'top'"/>
+
+ <XAnnouncements v-if="$i"/>
+ <XStatusBars/>
+ <div :class="$style.columnsWrapper">
+ <!-- passive: https://bugs.webkit.org/show_bug.cgi?id=281300 -->
+ <div ref="columnsEl" :class="[$style.columns, { [$style.center]: prefer.r['deck.columnAlign'].value === 'center', [$style.snapScroll]: snapScroll }]" @contextmenu.self.prevent="onContextmenu" @wheel.passive.self="onWheel">
+ <!-- sectionを利用ã—ã¦ã„ã‚‹ã®ã¯ã€deck.vueå´ã§columnã«å¯¾ã—ã¦first-of-typeを効ã‹ã›ã‚‹ãŸã‚ -->
+ <section
+ v-for="ids in layout"
+ :class="$style.section"
+ :style="columns.filter(c => ids.includes(c.id)).some(c => c.flexible) ? { flex: 1, minWidth: '350px' } : { width: Math.max(...columns.filter(c => ids.includes(c.id)).map(c => c.width)) + 'px' }"
+ @wheel.passive.self="onWheel"
+ >
+ <Suspense>
+ <component
+ :is="columnComponents[columns.find(c => c.id === id)!.type] ?? XTlColumn"
+ v-for="id in ids"
+ :ref="id"
+ :key="id"
+ :class="[$style.column, { '_shadow': withWallpaper }]"
+ :column="columns.find(c => c.id === id)!"
+ :isStacked="ids.length > 1"
+ @headerWheel="onWheel"
+ />
+ <template #fallback>
+ <MkLoading/>
+ </template>
+ </Suspense>
+ </section>
+ <div v-if="layout.length === 0" class="_panel" :class="$style.onboarding">
+ <div>{{ i18n.ts._deck.introduction }}</div>
+ <div>{{ i18n.ts._deck.introduction2 }}</div>
+ </div>
+ </div>
+
+ <div v-if="prefer.r['deck.menuPosition'].value === 'right'" :class="$style.sideMenu">
+ <div :class="$style.sideMenuTop">
+ <button v-tooltip.noDelay.left="`${i18n.ts._deck.profile}: ${prefer.s['deck.profile']}`" :class="$style.sideMenuButton" class="_button" @click="switchProfileMenu"><i class="ti ti-caret-down"></i></button>
+ <button v-tooltip.noDelay.left="i18n.ts._deck.deleteProfile" :class="$style.sideMenuButton" class="_button" @click="deleteProfile"><i class="ti ti-trash"></i></button>
+ </div>
+ <div :class="$style.sideMenuMiddle">
+ <button v-tooltip.noDelay.left="i18n.ts._deck.addColumn" :class="$style.sideMenuButton" class="_button" @click="addColumn"><i class="ti ti-plus"></i></button>
+ </div>
+ <div :class="$style.sideMenuBottom">
+ <button v-tooltip.noDelay.left="i18n.ts.settings" :class="$style.sideMenuButton" class="_button" @click="showSettings"><i class="ti ti-settings-2"></i></button>
+ </div>
</div>
</div>
- <div v-if="prefer.r['deck.menuPosition'].value === 'right'" :class="$style.sideMenu">
- <div :class="$style.sideMenuTop">
- <button v-tooltip.noDelay.left="`${i18n.ts._deck.profile}: ${prefer.s['deck.profile']}`" :class="$style.sideMenuButton" class="_button" @click="switchProfileMenu"><i class="ti ti-caret-down"></i></button>
- <button v-tooltip.noDelay.left="i18n.ts._deck.deleteProfile" :class="$style.sideMenuButton" class="_button" @click="deleteProfile"><i class="ti ti-trash"></i></button>
+ <div v-if="prefer.r['deck.menuPosition'].value === 'bottom'" :class="$style.bottomMenu">
+ <div :class="$style.bottomMenuLeft">
+ <button v-tooltip.noDelay.left="`${i18n.ts._deck.profile}: ${prefer.s['deck.profile']}`" :class="$style.bottomMenuButton" class="_button" @click="switchProfileMenu"><i class="ti ti-caret-down"></i></button>
+ <button v-tooltip.noDelay.left="i18n.ts._deck.deleteProfile" :class="$style.bottomMenuButton" class="_button" @click="deleteProfile"><i class="ti ti-trash"></i></button>
</div>
- <div :class="$style.sideMenuMiddle">
- <button v-tooltip.noDelay.left="i18n.ts._deck.addColumn" :class="$style.sideMenuButton" class="_button" @click="addColumn"><i class="ti ti-plus"></i></button>
+ <div :class="$style.bottomMenuMiddle">
+ <button v-tooltip.noDelay.left="i18n.ts._deck.addColumn" :class="$style.bottomMenuButton" class="_button" @click="addColumn"><i class="ti ti-plus"></i></button>
</div>
- <div :class="$style.sideMenuBottom">
- <button v-tooltip.noDelay.left="i18n.ts.settings" :class="$style.sideMenuButton" class="_button" @click="showSettings"><i class="ti ti-settings-2"></i></button>
+ <div :class="$style.bottomMenuRight">
+ <button v-tooltip.noDelay.left="i18n.ts.settings" :class="$style.bottomMenuButton" class="_button" @click="showSettings"><i class="ti ti-settings-2"></i></button>
</div>
</div>
- </div>
-
- <div v-if="prefer.r['deck.menuPosition'].value === 'bottom'" :class="$style.bottomMenu">
- <div :class="$style.bottomMenuLeft">
- <button v-tooltip.noDelay.left="`${i18n.ts._deck.profile}: ${prefer.s['deck.profile']}`" :class="$style.bottomMenuButton" class="_button" @click="switchProfileMenu"><i class="ti ti-caret-down"></i></button>
- <button v-tooltip.noDelay.left="i18n.ts._deck.deleteProfile" :class="$style.bottomMenuButton" class="_button" @click="deleteProfile"><i class="ti ti-trash"></i></button>
- </div>
- <div :class="$style.bottomMenuMiddle">
- <button v-tooltip.noDelay.left="i18n.ts._deck.addColumn" :class="$style.bottomMenuButton" class="_button" @click="addColumn"><i class="ti ti-plus"></i></button>
- </div>
- <div :class="$style.bottomMenuRight">
- <button v-tooltip.noDelay.left="i18n.ts.settings" :class="$style.bottomMenuButton" class="_button" @click="showSettings"><i class="ti ti-settings-2"></i></button>
- </div>
- </div>
- <XNavbarH v-if="!isMobile && prefer.r['deck.navbarPosition'].value === 'bottom'"/>
+ <XNavbarH v-if="!isMobile && prefer.r['deck.navbarPosition'].value === 'bottom'"/>
- <XMobileFooterMenu v-if="isMobile" v-model:drawerMenuShowing="drawerMenuShowing" v-model:widgetsShowing="widgetsShowing"/>
+ <XMobileFooterMenu v-if="isMobile" v-model:drawerMenuShowing="drawerMenuShowing" v-model:widgetsShowing="widgetsShowing"/>
+ </div>
</div>
<XCommon v-model:drawerMenuShowing="drawerMenuShowing" v-model:widgetsShowing="widgetsShowing"/>
@@ -87,6 +91,7 @@ import XCommon from './_common_/common.vue';
import XSidebar from '@/ui/_common_/navbar.vue';
import XNavbarH from '@/ui/_common_/navbar-h.vue';
import XMobileFooterMenu from '@/ui/_common_/mobile-footer-menu.vue';
+import XTitlebar from '@/ui/_common_/titlebar.vue';
import * as os from '@/os.js';
import { $i } from '@/i.js';
import { i18n } from '@/i18n.js';
@@ -216,30 +221,26 @@ async function deleteProfile() {
window.document.documentElement.style.overflowY = 'hidden';
window.document.documentElement.style.scrollBehavior = 'auto';
-
-if (prefer.s['deck.wallpaper'] != null) {
- window.document.documentElement.style.backgroundImage = `url(${prefer.s['deck.wallpaper']})`;
-}
</script>
<style lang="scss" module>
.root {
- $nav-hide-threshold: 650px; // TODO: ã©ã“ã‹ã«é›†ç´„ã—ãŸã„
-
--MI-margin: var(--MI-marginHalf);
--columnGap: v-bind("gap + 'px'");
display: flex;
+ flex-direction: column;
height: 100dvh;
box-sizing: border-box;
flex: 1;
+ background: var(--MI_THEME-navBg);
+}
- &.withWallpaper {
- .main {
- background: transparent;
- }
- }
+.nonTitlebarArea {
+ display: flex;
+ flex: 1;
+ min-height: 0;
}
.main {
@@ -247,7 +248,15 @@ if (prefer.s['deck.wallpaper'] != null) {
min-width: 0;
display: flex;
flex-direction: column;
- background: var(--MI_THEME-deckBg);
+
+ &:not(.withWallpaper) {
+ background: var(--MI_THEME-deckBg);
+ }
+
+ &.withSidebarAndTitlebar {
+ border-radius: 12px 0 0 0;
+ overflow: clip;
+ }
}
.columnsWrapper {
diff --git a/packages/frontend/src/ui/deck/column.vue b/packages/frontend/src/ui/deck/column.vue
index 4c816f1544..62c59468bd 100644
--- a/packages/frontend/src/ui/deck/column.vue
+++ b/packages/frontend/src/ui/deck/column.vue
@@ -5,6 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div
+ class="_forceShrinkSpacer"
:class="[$style.root, { [$style.paged]: isMainColumn, [$style.naked]: naked, [$style.active]: active, [$style.draghover]: draghover, [$style.dragging]: dragging, [$style.dropready]: dropready, [$style.withWallpaper]: withWallpaper }]"
@dragover.prevent.stop="onDragover"
@dragleave="onDragleave"
@@ -53,7 +54,6 @@ import { DI } from '@/di.js';
provide('shouldHeaderThin', true);
provide('shouldOmitHeaderTitle', true);
-provide(DI.forceSpacerMin, true);
const withWallpaper = prefer.s['deck.wallpaper'] != null;
diff --git a/packages/frontend/src/ui/universal.vue b/packages/frontend/src/ui/universal.vue
index 940cf72e28..fa2343ba27 100644
--- a/packages/frontend/src/ui/universal.vue
+++ b/packages/frontend/src/ui/universal.vue
@@ -4,22 +4,26 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div :class="$style.root">
- <XSidebar v-if="!isMobile" :class="$style.sidebar" :showWidgetButton="!isDesktop" @widgetButtonClick="widgetsShowing = true"/>
+<div :class="[$style.root, { '_forceShrinkSpacer': deviceKind === 'smartphone' }]">
+ <XTitlebar v-if="prefer.r.showTitlebar.value" style="flex-shrink: 0;"/>
- <div :class="$style.contents" @contextmenu.stop="onContextmenu">
- <div>
- <XPreferenceRestore v-if="shouldSuggestRestoreBackup"/>
- <XAnnouncements v-if="$i"/>
- <XStatusBars :class="$style.statusbars"/>
+ <div :class="$style.nonTitlebarArea">
+ <XSidebar v-if="!isMobile" :class="$style.sidebar" :showWidgetButton="!isDesktop" @widgetButtonClick="widgetsShowing = true"/>
+
+ <div :class="[$style.contents, !isMobile && prefer.r.showTitlebar.value ? $style.withSidebarAndTitlebar : null]" @contextmenu.stop="onContextmenu">
+ <div>
+ <XPreferenceRestore v-if="shouldSuggestRestoreBackup"/>
+ <XAnnouncements v-if="$i"/>
+ <XStatusBars :class="$style.statusbars"/>
+ </div>
+ <StackingRouterView v-if="prefer.s['experimental.stackingRouterView']" :class="$style.content"/>
+ <RouterView v-else :class="$style.content"/>
+ <XMobileFooterMenu v-if="isMobile" ref="navFooter" v-model:drawerMenuShowing="drawerMenuShowing" v-model:widgetsShowing="widgetsShowing"/>
</div>
- <StackingRouterView v-if="prefer.s['experimental.stackingRouterView']" :class="$style.content"/>
- <RouterView v-else :class="$style.content"/>
- <XMobileFooterMenu v-if="isMobile" ref="navFooter" v-model:drawerMenuShowing="drawerMenuShowing" v-model:widgetsShowing="widgetsShowing"/>
- </div>
- <div v-if="isDesktop && !pageMetadata?.needWideArea" :class="$style.widgets">
- <XWidgets/>
+ <div v-if="isDesktop && !pageMetadata?.needWideArea" :class="$style.widgets">
+ <XWidgets/>
+ </div>
</div>
<XCommon v-model:drawerMenuShowing="drawerMenuShowing" v-model:widgetsShowing="widgetsShowing"/>
@@ -34,6 +38,7 @@ import XCommon from './_common_/common.vue';
import type { PageMetadata } from '@/page.js';
import XMobileFooterMenu from '@/ui/_common_/mobile-footer-menu.vue';
import XPreferenceRestore from '@/ui/_common_/PreferenceRestore.vue';
+import XTitlebar from '@/ui/_common_/titlebar.vue';
import * as os from '@/os.js';
import { i18n } from '@/i18n.js';
import { $i } from '@/i.js';
@@ -128,8 +133,15 @@ $widgets-hide-threshold: 1090px;
height: 100dvh;
overflow: clip;
contain: strict;
- box-sizing: border-box;
display: flex;
+ flex-direction: column;
+ background: var(--MI_THEME-navBg);
+}
+
+.nonTitlebarArea {
+ display: flex;
+ flex: 1;
+ min-height: 0;
}
.sidebar {
@@ -142,7 +154,12 @@ $widgets-hide-threshold: 1090px;
flex: 1;
height: 100%;
min-width: 0;
- background: var(--MI_THEME-bg);
+
+ &.withSidebarAndTitlebar {
+ background: var(--MI_THEME-navBg);
+ border-radius: 12px 0 0 0;
+ overflow: clip;
+ }
}
.content {
diff --git a/packages/frontend/src/utility/upload.ts b/packages/frontend/src/utility/upload.ts
index b43fea8e15..03240749e9 100644
--- a/packages/frontend/src/utility/upload.ts
+++ b/packages/frontend/src/utility/upload.ts
@@ -40,7 +40,7 @@ export function uploadFile(
const _folder = typeof folder === 'string' ? folder : folder?.id;
- if (file.size > instance.maxFileSize) {
+ if ((file.size > instance.maxFileSize) || (file.size > ($i.policies.maxFileSizeMb * 1024 * 1024))) {
alert({
type: 'error',
title: i18n.ts.failedToUpload,
diff --git a/packages/megalodon/package.json b/packages/megalodon/package.json
index 8b66d567f5..1ceb47759d 100644
--- a/packages/megalodon/package.json
+++ b/packages/megalodon/package.json
@@ -64,26 +64,25 @@
"@types/ws": "^8.5.10",
"axios": "1.7.4",
"dayjs": "^1.11.10",
- "form-data": "^4.0.0",
+ "form-data": "4.0.2",
"https-proxy-agent": "^7.0.2",
- "oauth": "^0.10.0",
+ "oauth": "0.10.2",
"object-assign-deep": "^0.4.0",
"parse-link-header": "^2.0.0",
"socks-proxy-agent": "^8.0.2",
- "typescript": "5.1.6",
- "uuid": "^9.0.1",
+ "typescript": "5.8.3",
+ "uuid": "11.1.0",
"ws": "8.17.1"
},
"devDependencies": {
- "@typescript-eslint/eslint-plugin": "8.27.0",
- "@typescript-eslint/parser": "8.27.0",
- "eslint": "9.22.0",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
+ "eslint": "9.25.1",
"eslint-config-prettier": "^9.0.0",
- "jest": "^29.7.0",
+ "jest": "29.7.0",
"jest-worker": "^29.7.0",
"lodash": "4.17.21",
- "prettier": "^3.1.0",
- "ts-jest": "^29.1.1",
- "typedoc": "^0.25.3"
+ "prettier": "3.5.3",
+ "ts-jest": "^29.1.1"
}
}
diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json
index 4f0c5b2577..522aa18d1d 100644
--- a/packages/misskey-bubble-game/package.json
+++ b/packages/misskey-bubble-game/package.json
@@ -24,14 +24,14 @@
"devDependencies": {
"@types/matter-js": "0.19.8",
"@types/seedrandom": "3.0.8",
- "@types/node": "22.14.0",
- "@typescript-eslint/eslint-plugin": "8.29.1",
- "@typescript-eslint/parser": "8.29.1",
- "nodemon": "3.1.9",
+ "@types/node": "22.15.2",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
+ "nodemon": "3.1.10",
"execa": "9.5.2",
"typescript": "5.8.3",
- "esbuild": "0.25.2",
- "glob": "11.0.1"
+ "esbuild": "0.25.3",
+ "glob": "11.0.2"
},
"files": [
"built"
diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md
index b2a4fb9cab..18cb070af5 100644
--- a/packages/misskey-js/etc/misskey-js.api.md
+++ b/packages/misskey-js/etc/misskey-js.api.md
@@ -1087,15 +1087,9 @@ type ChatMessagesCreateToUserResponse = operations['chat___messages___create-to-
type ChatMessagesDeleteRequest = operations['chat___messages___delete']['requestBody']['content']['application/json'];
// @public (undocumented)
-type ChatMessagesDeleteResponse = operations['chat___messages___delete']['responses']['200']['content']['application/json'];
-
-// @public (undocumented)
type ChatMessagesReactRequest = operations['chat___messages___react']['requestBody']['content']['application/json'];
// @public (undocumented)
-type ChatMessagesReactResponse = operations['chat___messages___react']['responses']['200']['content']['application/json'];
-
-// @public (undocumented)
type ChatMessagesRoomTimelineRequest = operations['chat___messages___room-timeline']['requestBody']['content']['application/json'];
// @public (undocumented)
@@ -1117,9 +1111,6 @@ type ChatMessagesShowResponse = operations['chat___messages___show']['responses'
type ChatMessagesUnreactRequest = operations['chat___messages___unreact']['requestBody']['content']['application/json'];
// @public (undocumented)
-type ChatMessagesUnreactResponse = operations['chat___messages___unreact']['responses']['200']['content']['application/json'];
-
-// @public (undocumented)
type ChatMessagesUserTimelineRequest = operations['chat___messages___user-timeline']['requestBody']['content']['application/json'];
// @public (undocumented)
@@ -1144,9 +1135,6 @@ type ChatRoomsCreateResponse = operations['chat___rooms___create']['responses'][
type ChatRoomsDeleteRequest = operations['chat___rooms___delete']['requestBody']['content']['application/json'];
// @public (undocumented)
-type ChatRoomsDeleteResponse = operations['chat___rooms___delete']['responses']['200']['content']['application/json'];
-
-// @public (undocumented)
type ChatRoomsInvitationsCreateRequest = operations['chat___rooms___invitations___create']['requestBody']['content']['application/json'];
// @public (undocumented)
@@ -1156,9 +1144,6 @@ type ChatRoomsInvitationsCreateResponse = operations['chat___rooms___invitations
type ChatRoomsInvitationsIgnoreRequest = operations['chat___rooms___invitations___ignore']['requestBody']['content']['application/json'];
// @public (undocumented)
-type ChatRoomsInvitationsIgnoreResponse = operations['chat___rooms___invitations___ignore']['responses']['200']['content']['application/json'];
-
-// @public (undocumented)
type ChatRoomsInvitationsInboxRequest = operations['chat___rooms___invitations___inbox']['requestBody']['content']['application/json'];
// @public (undocumented)
@@ -1180,15 +1165,9 @@ type ChatRoomsJoiningResponse = operations['chat___rooms___joining']['responses'
type ChatRoomsJoinRequest = operations['chat___rooms___join']['requestBody']['content']['application/json'];
// @public (undocumented)
-type ChatRoomsJoinResponse = operations['chat___rooms___join']['responses']['200']['content']['application/json'];
-
-// @public (undocumented)
type ChatRoomsLeaveRequest = operations['chat___rooms___leave']['requestBody']['content']['application/json'];
// @public (undocumented)
-type ChatRoomsLeaveResponse = operations['chat___rooms___leave']['responses']['200']['content']['application/json'];
-
-// @public (undocumented)
type ChatRoomsMembersRequest = operations['chat___rooms___members']['requestBody']['content']['application/json'];
// @public (undocumented)
@@ -1198,9 +1177,6 @@ type ChatRoomsMembersResponse = operations['chat___rooms___members']['responses'
type ChatRoomsMuteRequest = operations['chat___rooms___mute']['requestBody']['content']['application/json'];
// @public (undocumented)
-type ChatRoomsMuteResponse = operations['chat___rooms___mute']['responses']['200']['content']['application/json'];
-
-// @public (undocumented)
type ChatRoomsOwnedRequest = operations['chat___rooms___owned']['requestBody']['content']['application/json'];
// @public (undocumented)
@@ -1736,9 +1712,7 @@ declare namespace entities {
ChatMessagesCreateToUserRequest,
ChatMessagesCreateToUserResponse,
ChatMessagesDeleteRequest,
- ChatMessagesDeleteResponse,
ChatMessagesReactRequest,
- ChatMessagesReactResponse,
ChatMessagesRoomTimelineRequest,
ChatMessagesRoomTimelineResponse,
ChatMessagesSearchRequest,
@@ -1746,31 +1720,25 @@ declare namespace entities {
ChatMessagesShowRequest,
ChatMessagesShowResponse,
ChatMessagesUnreactRequest,
- ChatMessagesUnreactResponse,
ChatMessagesUserTimelineRequest,
ChatMessagesUserTimelineResponse,
ChatRoomsCreateRequest,
ChatRoomsCreateResponse,
ChatRoomsDeleteRequest,
- ChatRoomsDeleteResponse,
ChatRoomsInvitationsCreateRequest,
ChatRoomsInvitationsCreateResponse,
ChatRoomsInvitationsIgnoreRequest,
- ChatRoomsInvitationsIgnoreResponse,
ChatRoomsInvitationsInboxRequest,
ChatRoomsInvitationsInboxResponse,
ChatRoomsInvitationsOutboxRequest,
ChatRoomsInvitationsOutboxResponse,
ChatRoomsJoinRequest,
- ChatRoomsJoinResponse,
ChatRoomsJoiningRequest,
ChatRoomsJoiningResponse,
ChatRoomsLeaveRequest,
- ChatRoomsLeaveResponse,
ChatRoomsMembersRequest,
ChatRoomsMembersResponse,
ChatRoomsMuteRequest,
- ChatRoomsMuteResponse,
ChatRoomsOwnedRequest,
ChatRoomsOwnedResponse,
ChatRoomsShowRequest,
diff --git a/packages/misskey-js/generator/package.json b/packages/misskey-js/generator/package.json
index b63ddd3e58..f45d5c49eb 100644
--- a/packages/misskey-js/generator/package.json
+++ b/packages/misskey-js/generator/package.json
@@ -8,15 +8,15 @@
},
"devDependencies": {
"@readme/openapi-parser": "2.7.0",
- "@types/node": "22.13.15",
- "@typescript-eslint/eslint-plugin": "8.29.0",
- "@typescript-eslint/parser": "8.29.0",
- "eslint": "9.22.0",
+ "@types/node": "22.15.2",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
+ "eslint": "9.25.1",
"openapi-types": "12.1.3",
"openapi-typescript": "6.7.6",
"ts-case-convert": "2.1.0",
"tsx": "4.19.3",
- "typescript": "5.8.2"
+ "typescript": "5.8.3"
},
"files": [
"built"
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index 8b52924b29..e7e9737897 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
- "version": "2025.4.1-alpha.2",
+ "version": "2025.4.1-beta.9",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/index.js",
@@ -35,23 +35,23 @@
"directory": "packages/misskey-js"
},
"devDependencies": {
- "@microsoft/api-extractor": "7.52.2",
- "@swc/jest": "0.2.37",
+ "@microsoft/api-extractor": "7.52.5",
+ "@swc/jest": "0.2.38",
"@types/jest": "29.5.14",
- "@types/node": "22.13.15",
- "@typescript-eslint/eslint-plugin": "8.29.0",
- "@typescript-eslint/parser": "8.29.0",
+ "@types/node": "22.15.2",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
"jest": "29.7.0",
"jest-fetch-mock": "3.0.3",
"jest-websocket-mock": "2.5.0",
"mock-socket": "9.3.1",
"ncp": "2.0.0",
- "nodemon": "3.1.9",
+ "nodemon": "3.1.10",
"execa": "8.0.1",
- "tsd": "0.31.2",
- "typescript": "5.8.2",
- "esbuild": "0.25.2",
- "glob": "11.0.1"
+ "tsd": "0.32.0",
+ "typescript": "5.8.3",
+ "esbuild": "0.25.3",
+ "glob": "11.0.2"
},
"files": [
"built"
diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts
index 6c66c4beb0..9293a5e950 100644
--- a/packages/misskey-js/src/autogen/endpoint.ts
+++ b/packages/misskey-js/src/autogen/endpoint.ts
@@ -228,9 +228,7 @@ import type {
ChatMessagesCreateToUserRequest,
ChatMessagesCreateToUserResponse,
ChatMessagesDeleteRequest,
- ChatMessagesDeleteResponse,
ChatMessagesReactRequest,
- ChatMessagesReactResponse,
ChatMessagesRoomTimelineRequest,
ChatMessagesRoomTimelineResponse,
ChatMessagesSearchRequest,
@@ -238,31 +236,25 @@ import type {
ChatMessagesShowRequest,
ChatMessagesShowResponse,
ChatMessagesUnreactRequest,
- ChatMessagesUnreactResponse,
ChatMessagesUserTimelineRequest,
ChatMessagesUserTimelineResponse,
ChatRoomsCreateRequest,
ChatRoomsCreateResponse,
ChatRoomsDeleteRequest,
- ChatRoomsDeleteResponse,
ChatRoomsInvitationsCreateRequest,
ChatRoomsInvitationsCreateResponse,
ChatRoomsInvitationsIgnoreRequest,
- ChatRoomsInvitationsIgnoreResponse,
ChatRoomsInvitationsInboxRequest,
ChatRoomsInvitationsInboxResponse,
ChatRoomsInvitationsOutboxRequest,
ChatRoomsInvitationsOutboxResponse,
ChatRoomsJoinRequest,
- ChatRoomsJoinResponse,
ChatRoomsJoiningRequest,
ChatRoomsJoiningResponse,
ChatRoomsLeaveRequest,
- ChatRoomsLeaveResponse,
ChatRoomsMembersRequest,
ChatRoomsMembersResponse,
ChatRoomsMuteRequest,
- ChatRoomsMuteResponse,
ChatRoomsOwnedRequest,
ChatRoomsOwnedResponse,
ChatRoomsShowRequest,
@@ -824,24 +816,24 @@ export type Endpoints = {
'chat/history': { req: ChatHistoryRequest; res: ChatHistoryResponse };
'chat/messages/create-to-room': { req: ChatMessagesCreateToRoomRequest; res: ChatMessagesCreateToRoomResponse };
'chat/messages/create-to-user': { req: ChatMessagesCreateToUserRequest; res: ChatMessagesCreateToUserResponse };
- 'chat/messages/delete': { req: ChatMessagesDeleteRequest; res: ChatMessagesDeleteResponse };
- 'chat/messages/react': { req: ChatMessagesReactRequest; res: ChatMessagesReactResponse };
+ 'chat/messages/delete': { req: ChatMessagesDeleteRequest; res: EmptyResponse };
+ 'chat/messages/react': { req: ChatMessagesReactRequest; res: EmptyResponse };
'chat/messages/room-timeline': { req: ChatMessagesRoomTimelineRequest; res: ChatMessagesRoomTimelineResponse };
'chat/messages/search': { req: ChatMessagesSearchRequest; res: ChatMessagesSearchResponse };
'chat/messages/show': { req: ChatMessagesShowRequest; res: ChatMessagesShowResponse };
- 'chat/messages/unreact': { req: ChatMessagesUnreactRequest; res: ChatMessagesUnreactResponse };
+ 'chat/messages/unreact': { req: ChatMessagesUnreactRequest; res: EmptyResponse };
'chat/messages/user-timeline': { req: ChatMessagesUserTimelineRequest; res: ChatMessagesUserTimelineResponse };
'chat/rooms/create': { req: ChatRoomsCreateRequest; res: ChatRoomsCreateResponse };
- 'chat/rooms/delete': { req: ChatRoomsDeleteRequest; res: ChatRoomsDeleteResponse };
+ 'chat/rooms/delete': { req: ChatRoomsDeleteRequest; res: EmptyResponse };
'chat/rooms/invitations/create': { req: ChatRoomsInvitationsCreateRequest; res: ChatRoomsInvitationsCreateResponse };
- 'chat/rooms/invitations/ignore': { req: ChatRoomsInvitationsIgnoreRequest; res: ChatRoomsInvitationsIgnoreResponse };
+ 'chat/rooms/invitations/ignore': { req: ChatRoomsInvitationsIgnoreRequest; res: EmptyResponse };
'chat/rooms/invitations/inbox': { req: ChatRoomsInvitationsInboxRequest; res: ChatRoomsInvitationsInboxResponse };
'chat/rooms/invitations/outbox': { req: ChatRoomsInvitationsOutboxRequest; res: ChatRoomsInvitationsOutboxResponse };
- 'chat/rooms/join': { req: ChatRoomsJoinRequest; res: ChatRoomsJoinResponse };
+ 'chat/rooms/join': { req: ChatRoomsJoinRequest; res: EmptyResponse };
'chat/rooms/joining': { req: ChatRoomsJoiningRequest; res: ChatRoomsJoiningResponse };
- 'chat/rooms/leave': { req: ChatRoomsLeaveRequest; res: ChatRoomsLeaveResponse };
+ 'chat/rooms/leave': { req: ChatRoomsLeaveRequest; res: EmptyResponse };
'chat/rooms/members': { req: ChatRoomsMembersRequest; res: ChatRoomsMembersResponse };
- 'chat/rooms/mute': { req: ChatRoomsMuteRequest; res: ChatRoomsMuteResponse };
+ 'chat/rooms/mute': { req: ChatRoomsMuteRequest; res: EmptyResponse };
'chat/rooms/owned': { req: ChatRoomsOwnedRequest; res: ChatRoomsOwnedResponse };
'chat/rooms/show': { req: ChatRoomsShowRequest; res: ChatRoomsShowResponse };
'chat/rooms/update': { req: ChatRoomsUpdateRequest; res: ChatRoomsUpdateResponse };
diff --git a/packages/misskey-js/src/autogen/entities.ts b/packages/misskey-js/src/autogen/entities.ts
index 404746b3f2..f71407a6ae 100644
--- a/packages/misskey-js/src/autogen/entities.ts
+++ b/packages/misskey-js/src/autogen/entities.ts
@@ -231,9 +231,7 @@ export type ChatMessagesCreateToRoomResponse = operations['chat___messages___cre
export type ChatMessagesCreateToUserRequest = operations['chat___messages___create-to-user']['requestBody']['content']['application/json'];
export type ChatMessagesCreateToUserResponse = operations['chat___messages___create-to-user']['responses']['200']['content']['application/json'];
export type ChatMessagesDeleteRequest = operations['chat___messages___delete']['requestBody']['content']['application/json'];
-export type ChatMessagesDeleteResponse = operations['chat___messages___delete']['responses']['200']['content']['application/json'];
export type ChatMessagesReactRequest = operations['chat___messages___react']['requestBody']['content']['application/json'];
-export type ChatMessagesReactResponse = operations['chat___messages___react']['responses']['200']['content']['application/json'];
export type ChatMessagesRoomTimelineRequest = operations['chat___messages___room-timeline']['requestBody']['content']['application/json'];
export type ChatMessagesRoomTimelineResponse = operations['chat___messages___room-timeline']['responses']['200']['content']['application/json'];
export type ChatMessagesSearchRequest = operations['chat___messages___search']['requestBody']['content']['application/json'];
@@ -241,31 +239,25 @@ export type ChatMessagesSearchResponse = operations['chat___messages___search'][
export type ChatMessagesShowRequest = operations['chat___messages___show']['requestBody']['content']['application/json'];
export type ChatMessagesShowResponse = operations['chat___messages___show']['responses']['200']['content']['application/json'];
export type ChatMessagesUnreactRequest = operations['chat___messages___unreact']['requestBody']['content']['application/json'];
-export type ChatMessagesUnreactResponse = operations['chat___messages___unreact']['responses']['200']['content']['application/json'];
export type ChatMessagesUserTimelineRequest = operations['chat___messages___user-timeline']['requestBody']['content']['application/json'];
export type ChatMessagesUserTimelineResponse = operations['chat___messages___user-timeline']['responses']['200']['content']['application/json'];
export type ChatRoomsCreateRequest = operations['chat___rooms___create']['requestBody']['content']['application/json'];
export type ChatRoomsCreateResponse = operations['chat___rooms___create']['responses']['200']['content']['application/json'];
export type ChatRoomsDeleteRequest = operations['chat___rooms___delete']['requestBody']['content']['application/json'];
-export type ChatRoomsDeleteResponse = operations['chat___rooms___delete']['responses']['200']['content']['application/json'];
export type ChatRoomsInvitationsCreateRequest = operations['chat___rooms___invitations___create']['requestBody']['content']['application/json'];
export type ChatRoomsInvitationsCreateResponse = operations['chat___rooms___invitations___create']['responses']['200']['content']['application/json'];
export type ChatRoomsInvitationsIgnoreRequest = operations['chat___rooms___invitations___ignore']['requestBody']['content']['application/json'];
-export type ChatRoomsInvitationsIgnoreResponse = operations['chat___rooms___invitations___ignore']['responses']['200']['content']['application/json'];
export type ChatRoomsInvitationsInboxRequest = operations['chat___rooms___invitations___inbox']['requestBody']['content']['application/json'];
export type ChatRoomsInvitationsInboxResponse = operations['chat___rooms___invitations___inbox']['responses']['200']['content']['application/json'];
export type ChatRoomsInvitationsOutboxRequest = operations['chat___rooms___invitations___outbox']['requestBody']['content']['application/json'];
export type ChatRoomsInvitationsOutboxResponse = operations['chat___rooms___invitations___outbox']['responses']['200']['content']['application/json'];
export type ChatRoomsJoinRequest = operations['chat___rooms___join']['requestBody']['content']['application/json'];
-export type ChatRoomsJoinResponse = operations['chat___rooms___join']['responses']['200']['content']['application/json'];
export type ChatRoomsJoiningRequest = operations['chat___rooms___joining']['requestBody']['content']['application/json'];
export type ChatRoomsJoiningResponse = operations['chat___rooms___joining']['responses']['200']['content']['application/json'];
export type ChatRoomsLeaveRequest = operations['chat___rooms___leave']['requestBody']['content']['application/json'];
-export type ChatRoomsLeaveResponse = operations['chat___rooms___leave']['responses']['200']['content']['application/json'];
export type ChatRoomsMembersRequest = operations['chat___rooms___members']['requestBody']['content']['application/json'];
export type ChatRoomsMembersResponse = operations['chat___rooms___members']['responses']['200']['content']['application/json'];
export type ChatRoomsMuteRequest = operations['chat___rooms___mute']['requestBody']['content']['application/json'];
-export type ChatRoomsMuteResponse = operations['chat___rooms___mute']['responses']['200']['content']['application/json'];
export type ChatRoomsOwnedRequest = operations['chat___rooms___owned']['requestBody']['content']['application/json'];
export type ChatRoomsOwnedResponse = operations['chat___rooms___owned']['responses']['200']['content']['application/json'];
export type ChatRoomsShowRequest = operations['chat___rooms___show']['requestBody']['content']['application/json'];
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index 46b9972bbb..b96cec5e7b 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -5487,6 +5487,7 @@ export type components = {
canUseTranslator: boolean;
canHideAds: boolean;
driveCapacityMb: number;
+ maxFileSizeMb: number;
alwaysMarkNsfw: boolean;
canUpdateBioMedia: boolean;
pinLimit: number;
@@ -15634,11 +15635,9 @@ export type operations = {
};
};
responses: {
- /** @description OK (with results) */
- 200: {
- content: {
- 'application/json': unknown;
- };
+ /** @description OK (without any results) */
+ 204: {
+ content: never;
};
/** @description Client error */
400: {
@@ -15689,11 +15688,9 @@ export type operations = {
};
};
responses: {
- /** @description OK (with results) */
- 200: {
- content: {
- 'application/json': unknown;
- };
+ /** @description OK (without any results) */
+ 204: {
+ content: never;
};
/** @description Client error */
400: {
@@ -15917,11 +15914,9 @@ export type operations = {
};
};
responses: {
- /** @description OK (with results) */
- 200: {
- content: {
- 'application/json': unknown;
- };
+ /** @description OK (without any results) */
+ 204: {
+ content: never;
};
/** @description Client error */
400: {
@@ -16091,11 +16086,9 @@ export type operations = {
};
};
responses: {
- /** @description OK (with results) */
- 200: {
- content: {
- 'application/json': unknown;
- };
+ /** @description OK (without any results) */
+ 204: {
+ content: never;
};
/** @description Client error */
400: {
@@ -16207,11 +16200,9 @@ export type operations = {
};
};
responses: {
- /** @description OK (with results) */
- 200: {
- content: {
- 'application/json': unknown;
- };
+ /** @description OK (without any results) */
+ 204: {
+ content: never;
};
/** @description Client error */
400: {
@@ -16379,11 +16370,9 @@ export type operations = {
};
};
responses: {
- /** @description OK (with results) */
- 200: {
- content: {
- 'application/json': unknown;
- };
+ /** @description OK (without any results) */
+ 204: {
+ content: never;
};
/** @description Client error */
400: {
@@ -16491,11 +16480,9 @@ export type operations = {
};
};
responses: {
- /** @description OK (with results) */
- 200: {
- content: {
- 'application/json': unknown;
- };
+ /** @description OK (without any results) */
+ 204: {
+ content: never;
};
/** @description Client error */
400: {
@@ -16606,11 +16593,9 @@ export type operations = {
};
};
responses: {
- /** @description OK (with results) */
- 200: {
- content: {
- 'application/json': unknown;
- };
+ /** @description OK (without any results) */
+ 204: {
+ content: never;
};
/** @description Client error */
400: {
diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json
index 7e12bc4a23..b6f30a1320 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": "22.14.0",
- "@typescript-eslint/eslint-plugin": "8.29.1",
- "@typescript-eslint/parser": "8.29.1",
+ "@types/node": "22.15.2",
+ "@typescript-eslint/eslint-plugin": "8.31.0",
+ "@typescript-eslint/parser": "8.31.0",
"execa": "9.5.2",
- "nodemon": "3.1.9",
+ "nodemon": "3.1.10",
"typescript": "5.8.3",
- "esbuild": "0.25.2",
- "glob": "11.0.1"
+ "esbuild": "0.25.3",
+ "glob": "11.0.2"
},
"files": [
"built"
diff --git a/packages/sw/package.json b/packages/sw/package.json
index 1a493e916c..502b05238b 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -9,15 +9,15 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"dependencies": {
- "esbuild": "0.25.2",
+ "esbuild": "0.25.3",
"idb-keyval": "6.2.1",
"misskey-js": "workspace:*"
},
"devDependencies": {
- "@typescript-eslint/parser": "8.29.1",
+ "@typescript-eslint/parser": "8.31.0",
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.74",
"eslint-plugin-import": "2.31.0",
- "nodemon": "3.1.9",
+ "nodemon": "3.1.10",
"typescript": "5.8.3"
},
"type": "module"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9e48ae5049..a99abba6e4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -16,8 +16,8 @@ importers:
specifier: 7.0.6
version: 7.0.6(postcss@8.5.3)
esbuild:
- specifier: 0.25.0
- version: 0.25.0
+ specifier: 0.25.3
+ version: 0.25.3
execa:
specifier: 9.5.2
version: 9.5.2
@@ -25,8 +25,8 @@ importers:
specifier: 3.3.3
version: 3.3.3
glob:
- specifier: 11.0.1
- version: 11.0.1
+ specifier: 11.0.2
+ version: 11.0.2
ignore-walk:
specifier: 7.0.0
version: 7.0.0
@@ -43,31 +43,31 @@ importers:
specifier: 5.39.0
version: 5.39.0
typescript:
- specifier: 5.8.2
- version: 5.8.2
+ specifier: 5.8.3
+ version: 5.8.3
optionalDependencies:
cypress:
- specifier: 13.15.2
- version: 13.15.2
+ specifier: 14.3.2
+ version: 14.3.2
devDependencies:
'@misskey-dev/eslint-plugin':
specifier: 2.1.0
- version: 2.1.0(@eslint/compat@1.1.1)(@stylistic/eslint-plugin@4.2.0(eslint@9.22.0)(typescript@5.8.2))(@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2))(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0))(eslint@9.22.0)(globals@16.0.0)
+ version: 2.1.0(@eslint/compat@1.1.1)(@stylistic/eslint-plugin@4.2.0(eslint@9.25.1)(typescript@5.8.3))(@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3))(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1))(eslint@9.25.1)(globals@16.0.0)
'@types/node':
- specifier: 22.13.10
- version: 22.13.10
+ specifier: 22.15.2
+ version: 22.15.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.27.0
- version: 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.27.0
- version: 8.27.0(eslint@9.22.0)(typescript@5.8.2)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
cross-env:
specifier: 7.0.3
version: 7.0.3
eslint:
- specifier: 9.22.0
- version: 9.22.0
+ specifier: 9.25.1
+ version: 9.25.1
globals:
specifier: 16.0.0
version: 16.0.0
@@ -75,20 +75,20 @@ importers:
specifier: 2.0.0
version: 2.0.0
pnpm:
- specifier: 10.6.1
- version: 10.6.1
+ specifier: 10.10.0
+ version: 10.10.0
start-server-and-test:
- specifier: 2.0.10
- version: 2.0.10
+ specifier: 2.0.11
+ version: 2.0.11
packages/backend:
dependencies:
'@aws-sdk/client-s3':
- specifier: 3.782.0
- version: 3.782.0
+ specifier: 3.797.0
+ version: 3.797.0
'@aws-sdk/lib-storage':
- specifier: 3.782.0
- version: 3.782.0(@aws-sdk/client-s3@3.782.0)
+ specifier: 3.797.0
+ version: 3.797.0(@aws-sdk/client-s3@3.797.0)
'@discordapp/twemoji':
specifier: 15.1.0
version: 15.1.0
@@ -123,14 +123,14 @@ importers:
specifier: 5.2.1
version: 5.2.1
'@nestjs/common':
- specifier: 11.0.16
- version: 11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ specifier: 11.1.0
+ version: 11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core':
- specifier: 11.0.15
- version: 11.0.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ specifier: 11.1.0
+ version: 11.1.0(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.17)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/testing':
- specifier: 11.0.15
- version: 11.0.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.15))
+ specifier: 11.1.0
+ version: 11.1.0(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.0(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.17)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.17(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.0))
'@peertube/http-signature':
specifier: 1.7.0
version: 1.7.0
@@ -150,11 +150,11 @@ importers:
specifier: 2.5.0
version: 2.5.0
'@swc/cli':
- specifier: 0.6.0
- version: 0.6.0(@swc/core@1.11.18)(chokidar@4.0.3)
+ specifier: 0.7.3
+ version: 0.7.3(@swc/core@1.11.22)(chokidar@4.0.3)
'@swc/core':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@transfem-org/sfm-js':
specifier: 0.24.6
version: 0.24.6
@@ -192,8 +192,8 @@ importers:
specifier: 1.20.3
version: 1.20.3
bullmq:
- specifier: 5.48.1
- version: 5.48.1
+ specifier: 5.51.1
+ version: 5.51.1
cacheable-lookup:
specifier: 7.0.0
version: 7.0.0
@@ -270,8 +270,8 @@ importers:
specifier: 1.1.3
version: 1.1.3
ioredis:
- specifier: 5.6.0
- version: 5.6.0
+ specifier: 5.6.1
+ version: 5.6.1
ip-cidr:
specifier: 4.0.2
version: 4.0.2
@@ -285,8 +285,8 @@ importers:
specifier: 4.1.0
version: 4.1.0
jsdom:
- specifier: 26.0.0
- version: 26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5)
+ specifier: 26.1.0
+ version: 26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5)
json5:
specifier: 2.2.3
version: 2.2.3
@@ -303,8 +303,8 @@ importers:
specifier: workspace:*
version: link:../megalodon
meilisearch:
- specifier: 0.49.0
- version: 0.49.0
+ specifier: 0.50.0
+ version: 0.50.0
microformats-parser:
specifier: 2.0.2
version: 2.0.2
@@ -333,8 +333,8 @@ importers:
specifier: 3.3.2
version: 3.3.2
nodemailer:
- specifier: 6.10.0
- version: 6.10.0
+ specifier: 6.10.1
+ version: 6.10.1
oauth:
specifier: 0.10.2
version: 0.10.2
@@ -351,11 +351,11 @@ importers:
specifier: 9.4.0
version: 9.4.0
parse5:
- specifier: 7.2.1
- version: 7.2.1
+ specifier: 7.3.0
+ version: 7.3.0
pg:
- specifier: 8.14.1
- version: 8.14.1
+ specifier: 8.15.6
+ version: 8.15.6
pkce-challenge:
specifier: 4.1.0
version: 4.1.0
@@ -405,8 +405,8 @@ importers:
specifier: 7.8.2
version: 7.8.2
sanitize-html:
- specifier: 2.15.0
- version: 2.15.0
+ specifier: 2.16.0
+ version: 2.16.0
secure-json-parse:
specifier: 3.0.2
version: 3.0.2
@@ -439,7 +439,7 @@ importers:
version: 4.2.0
typeorm:
specifier: 0.3.22
- version: 0.3.22(ioredis@5.6.0)(pg@8.14.1)(reflect-metadata@0.2.2)
+ version: 0.3.22(ioredis@5.6.1)(pg@8.15.6)(reflect-metadata@0.2.2)
typescript:
specifier: 5.8.3
version: 5.8.3
@@ -466,38 +466,38 @@ importers:
specifier: 1.3.11
version: 1.3.11
'@swc/core-darwin-arm64':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-darwin-x64':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-freebsd-x64':
specifier: 1.3.11
version: 1.3.11
'@swc/core-linux-arm-gnueabihf':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-linux-arm64-gnu':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-linux-arm64-musl':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-linux-x64-gnu':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-linux-x64-musl':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-win32-arm64-msvc':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-win32-ia32-msvc':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
'@swc/core-win32-x64-msvc':
- specifier: 1.11.18
- version: 1.11.18
+ specifier: 1.11.22
+ version: 1.11.22
bufferutil:
specifier: 4.0.9
version: 4.0.9
@@ -548,17 +548,17 @@ importers:
specifier: 29.7.0
version: 29.7.0
'@nestjs/platform-express':
- specifier: 10.4.15
- version: 10.4.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.15)
+ specifier: 10.4.17
+ version: 10.4.17(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.0)
'@sentry/vue':
- specifier: 9.12.0
- version: 9.12.0(vue@3.5.13(typescript@5.8.3))
+ specifier: 9.14.0
+ version: 9.14.0(vue@3.5.13(typescript@5.8.3))
'@simplewebauthn/types':
specifier: 12.0.0
version: 12.0.0
'@swc/jest':
- specifier: 0.2.37
- version: 0.2.37(@swc/core@1.11.18)
+ specifier: 0.2.38
+ version: 0.2.38(@swc/core@1.11.22)
'@types/accepts':
specifier: 1.3.7
version: 1.3.7
@@ -608,8 +608,8 @@ importers:
specifier: 0.7.34
version: 0.7.34
'@types/node':
- specifier: 22.14.0
- version: 22.14.0
+ specifier: 22.15.2
+ version: 22.15.2
'@types/nodemailer':
specifier: 6.4.17
version: 6.4.17
@@ -623,8 +623,8 @@ importers:
specifier: 0.1.2
version: 0.1.2
'@types/pg':
- specifier: 8.11.11
- version: 8.11.11
+ specifier: 8.11.14
+ version: 8.11.14
'@types/proxy-addr':
specifier: ^2.0.3
version: 2.0.3
@@ -655,6 +655,9 @@ importers:
'@types/sinonjs__fake-timers':
specifier: 8.1.5
version: 8.1.5
+ '@types/supertest':
+ specifier: 6.0.3
+ version: 6.0.3
'@types/tinycolor2':
specifier: 1.4.6
version: 1.4.6
@@ -674,11 +677,11 @@ importers:
specifier: 8.18.1
version: 8.18.1
'@typescript-eslint/eslint-plugin':
- specifier: 8.29.1
- version: 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.29.1
- version: 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
aws-sdk-client-mock:
specifier: 4.1.0
version: 4.1.0
@@ -687,7 +690,7 @@ importers:
version: 7.0.3
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)
+ version: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)
execa:
specifier: 8.0.1
version: 8.0.1
@@ -696,19 +699,22 @@ importers:
version: 9.0.0
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.14.0)
+ version: 29.7.0(@types/node@22.15.2)
jest-mock:
specifier: 29.7.0
version: 29.7.0
nodemon:
- specifier: 3.1.9
- version: 3.1.9
+ specifier: 3.1.10
+ version: 3.1.10
pid-port:
specifier: 1.0.2
version: 1.0.2
simple-oauth2:
specifier: 5.1.0
version: 5.1.0
+ supertest:
+ specifier: 7.1.0
+ version: 7.1.0
packages/frontend:
dependencies:
@@ -729,19 +735,19 @@ importers:
version: 2.1.1
'@rollup/plugin-json':
specifier: 6.1.0
- version: 6.1.0(rollup@4.39.0)
+ version: 6.1.0(rollup@4.40.0)
'@rollup/plugin-replace':
specifier: 6.0.2
- version: 6.0.2(rollup@4.39.0)
+ version: 6.0.2(rollup@4.40.0)
'@rollup/pluginutils':
specifier: 5.1.4
- version: 5.1.4(rollup@4.39.0)
+ version: 5.1.4(rollup@4.40.0)
'@ruffle-rs/ruffle':
specifier: 0.1.0-nightly.2024.10.15
version: 0.1.0-nightly.2024.10.15
'@sentry/vue':
- specifier: 9.12.0
- version: 9.12.0(vue@3.5.13(typescript@5.8.3))
+ specifier: 9.14.0
+ version: 9.14.0(vue@3.5.13(typescript@5.8.3))
'@syuilo/aiscript':
specifier: 0.19.0
version: 0.19.0
@@ -753,7 +759,7 @@ importers:
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.2.3
- version: 5.2.3(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))
+ version: 5.2.3(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))
'@vue/compiler-sfc':
specifier: 3.5.13
version: 3.5.13
@@ -773,23 +779,23 @@ importers:
specifier: 1.9.3
version: 1.9.3
chart.js:
- specifier: 4.4.8
- version: 4.4.8
+ specifier: 4.4.9
+ version: 4.4.9
chartjs-adapter-date-fns:
specifier: 3.0.0
- version: 3.0.0(chart.js@4.4.8)(date-fns@4.1.0)
+ version: 3.0.0(chart.js@4.4.9)(date-fns@4.1.0)
chartjs-chart-matrix:
specifier: 2.1.1
- version: 2.1.1(chart.js@4.4.8)
+ version: 2.1.1(chart.js@4.4.9)
chartjs-plugin-gradient:
specifier: 0.6.1
- version: 0.6.1(chart.js@4.4.8)
+ version: 0.6.1(chart.js@4.4.9)
chartjs-plugin-zoom:
specifier: 2.2.0
- version: 2.2.0(chart.js@4.4.8)
+ version: 2.2.0(chart.js@4.4.9)
chromatic:
- specifier: 11.28.0
- version: 11.28.0
+ specifier: 11.28.2
+ version: 11.28.2
compare-versions:
specifier: 6.1.1
version: 6.1.1
@@ -848,17 +854,17 @@ importers:
specifier: 2.3.1
version: 2.3.1
rollup:
- specifier: 4.39.0
- version: 4.39.0
+ specifier: 4.40.0
+ version: 4.40.0
sanitize-html:
- specifier: 2.15.0
- version: 2.15.0
+ specifier: 2.16.0
+ version: 2.16.0
sass:
- specifier: 1.86.3
- version: 1.86.3
+ specifier: 1.87.0
+ version: 1.87.0
shiki:
- specifier: 3.2.2
- version: 3.2.2
+ specifier: 3.3.0
+ version: 3.3.0
strict-event-emitter-types:
specifier: 2.0.0
version: 2.0.0
@@ -866,8 +872,8 @@ importers:
specifier: 3.1.0
version: 3.1.0
three:
- specifier: 0.175.0
- version: 0.175.0
+ specifier: 0.176.0
+ version: 0.176.0
throttle-debounce:
specifier: 5.0.2
version: 5.0.2
@@ -890,8 +896,8 @@ importers:
specifier: 1.13.1
version: 1.13.1(vue@3.5.13(typescript@5.8.3))
vite:
- specifier: 6.3.1
- version: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ specifier: 6.3.3
+ version: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
vue:
specifier: 3.5.13
version: 3.5.13(typescript@5.8.3)
@@ -903,8 +909,8 @@ importers:
version: 5.3.1
optionalDependencies:
cypress:
- specifier: 13.15.2
- version: 13.15.2
+ specifier: 14.3.2
+ version: 14.3.2
devDependencies:
'@misskey-dev/summaly':
specifier: 5.2.1
@@ -947,7 +953,7 @@ importers:
version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)
'@storybook/react-vite':
specifier: 8.6.12
- version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.39.0)(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
+ version: 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.40.0)(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
'@storybook/test':
specifier: 8.6.12
version: 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
@@ -962,7 +968,7 @@ importers:
version: 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.8.3))
'@storybook/vue3-vite':
specifier: 8.6.12
- version: 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))
+ version: 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))
'@testing-library/vue':
specifier: 8.1.0
version: 8.1.0(@vue/compiler-sfc@3.5.13)(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3)))(vue@3.5.13(typescript@5.8.3))
@@ -982,8 +988,8 @@ importers:
specifier: 4.0.9
version: 4.0.9
'@types/node':
- specifier: 22.14.0
- version: 22.14.0
+ specifier: 22.15.2
+ version: 22.15.2
'@types/punycode.js':
specifier: npm:@types/punycode@2.1.4
version: '@types/punycode@2.1.4'
@@ -1003,14 +1009,14 @@ importers:
specifier: 8.18.1
version: 8.18.1
'@typescript-eslint/eslint-plugin':
- specifier: 8.29.1
- version: 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.29.1
- version: 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
'@vitest/coverage-v8':
- specifier: 3.1.1
- version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
+ specifier: 3.1.2
+ version: 3.1.2(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
'@vue/compiler-core':
specifier: 3.5.13
version: 3.5.13
@@ -1025,10 +1031,10 @@ importers:
version: 7.0.3
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)
+ version: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)
eslint-plugin-vue:
specifier: 10.0.0
- version: 10.0.0(eslint@9.23.0)(vue-eslint-parser@10.1.3(eslint@9.23.0))
+ version: 10.0.0(eslint@9.25.1)(vue-eslint-parser@10.1.3(eslint@9.25.1))
fast-glob:
specifier: 3.3.3
version: 3.3.3
@@ -1045,14 +1051,14 @@ importers:
specifier: 10.0.1
version: 10.0.1
msw:
- specifier: 2.7.3
- version: 2.7.3(@types/node@22.14.0)(typescript@5.8.3)
+ specifier: 2.7.5
+ version: 2.7.5(@types/node@22.15.2)(typescript@5.8.3)
msw-storybook-addon:
specifier: 2.0.4
- version: 2.0.4(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))
+ version: 2.0.4(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))
nodemon:
- specifier: 3.1.9
- version: 3.1.9
+ specifier: 3.1.10
+ version: 3.1.10
prettier:
specifier: 3.5.3
version: 3.5.3
@@ -1078,20 +1084,20 @@ importers:
specifier: 1.0.3
version: 1.0.3
vitest:
- specifier: 3.1.1
- version: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ specifier: 3.1.2
+ version: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
vitest-fetch-mock:
specifier: 0.4.5
- version: 0.4.5(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
+ version: 0.4.5(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
vue-component-type-helpers:
- specifier: 2.2.8
- version: 2.2.8
+ specifier: 2.2.10
+ version: 2.2.10
vue-eslint-parser:
specifier: 10.1.3
- version: 10.1.3(eslint@9.23.0)
+ version: 10.1.3(eslint@9.25.1)
vue-tsc:
- specifier: 2.2.8
- version: 2.2.8(typescript@5.8.3)
+ specifier: 2.2.10
+ version: 2.2.10(typescript@5.8.3)
packages/frontend-embed:
dependencies:
@@ -1103,13 +1109,13 @@ importers:
version: 2.1.1
'@rollup/plugin-json':
specifier: 6.1.0
- version: 6.1.0(rollup@4.39.0)
+ version: 6.1.0(rollup@4.40.0)
'@rollup/plugin-replace':
specifier: 6.0.2
- version: 6.0.2(rollup@4.39.0)
+ version: 6.0.2(rollup@4.40.0)
'@rollup/pluginutils':
specifier: 5.1.4
- version: 5.1.4(rollup@4.39.0)
+ version: 5.1.4(rollup@4.40.0)
'@transfem-org/sfm-js':
specifier: 0.24.5
version: 0.24.5
@@ -1118,7 +1124,7 @@ importers:
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.2.3
- version: 5.2.3(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))
+ version: 5.2.3(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))
'@vue/compiler-sfc':
specifier: 3.5.13
version: 3.5.13
@@ -1144,14 +1150,14 @@ importers:
specifier: 2.3.1
version: 2.3.1
rollup:
- specifier: 4.39.0
- version: 4.39.0
+ specifier: 4.40.0
+ version: 4.40.0
sass:
- specifier: 1.86.3
- version: 1.86.3
+ specifier: 1.87.0
+ version: 1.87.0
shiki:
- specifier: 3.2.2
- version: 3.2.2
+ specifier: 3.3.0
+ version: 3.3.0
tinycolor2:
specifier: 1.6.0
version: 1.6.0
@@ -1168,8 +1174,8 @@ importers:
specifier: 11.1.0
version: 11.1.0
vite:
- specifier: 6.3.1
- version: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ specifier: 6.3.3
+ version: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
vue:
specifier: 3.5.13
version: 3.5.13(typescript@5.8.3)
@@ -1187,8 +1193,8 @@ importers:
specifier: 4.0.9
version: 4.0.9
'@types/node':
- specifier: 22.14.0
- version: 22.14.0
+ specifier: 22.15.2
+ version: 22.15.2
'@types/punycode.js':
specifier: npm:@types/punycode@2.1.4
version: '@types/punycode@2.1.4'
@@ -1199,14 +1205,14 @@ importers:
specifier: 8.18.1
version: 8.18.1
'@typescript-eslint/eslint-plugin':
- specifier: 8.29.1
- version: 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.29.1
- version: 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
'@vitest/coverage-v8':
- specifier: 3.1.1
- version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
+ specifier: 3.1.2
+ version: 3.1.2(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0)(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
'@vue/runtime-core':
specifier: 3.5.13
version: 3.5.13
@@ -1218,10 +1224,10 @@ importers:
version: 7.0.3
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)
+ version: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)
eslint-plugin-vue:
specifier: 10.0.0
- version: 10.0.0(eslint@9.23.0)(vue-eslint-parser@10.1.3(eslint@9.23.0))
+ version: 10.0.0(eslint@9.25.1)(vue-eslint-parser@10.1.3(eslint@9.25.1))
fast-glob:
specifier: 3.3.3
version: 3.3.3
@@ -1235,11 +1241,11 @@ importers:
specifier: 4.0.8
version: 4.0.8
msw:
- specifier: 2.7.3
- version: 2.7.3(@types/node@22.14.0)(typescript@5.8.3)
+ specifier: 2.7.5
+ version: 2.7.5(@types/node@22.15.2)(typescript@5.8.3)
nodemon:
- specifier: 3.1.9
- version: 3.1.9
+ specifier: 3.1.10
+ version: 3.1.10
prettier:
specifier: 3.5.3
version: 3.5.3
@@ -1250,14 +1256,14 @@ importers:
specifier: 1.0.3
version: 1.0.3
vue-component-type-helpers:
- specifier: 2.2.8
- version: 2.2.8
+ specifier: 2.2.10
+ version: 2.2.10
vue-eslint-parser:
specifier: 10.1.3
- version: 10.1.3(eslint@9.23.0)
+ version: 10.1.3(eslint@9.25.1)
vue-tsc:
- specifier: 2.2.8
- version: 2.2.8(typescript@5.8.3)
+ specifier: 2.2.10
+ version: 2.2.10(typescript@5.8.3)
packages/frontend-shared:
dependencies:
@@ -1272,26 +1278,26 @@ importers:
version: 3.5.13(typescript@5.8.3)
devDependencies:
'@types/node':
- specifier: 22.14.0
- version: 22.14.0
+ specifier: 22.15.2
+ version: 22.15.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.29.1
- version: 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.29.1
- version: 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
esbuild:
- specifier: 0.25.2
- version: 0.25.2
+ specifier: 0.25.3
+ version: 0.25.3
eslint-plugin-vue:
specifier: 10.0.0
- version: 10.0.0(eslint@9.23.0)(vue-eslint-parser@10.1.3(eslint@9.23.0))
+ version: 10.0.0(eslint@9.25.1)(vue-eslint-parser@10.1.3(eslint@9.25.1))
typescript:
specifier: 5.8.3
version: 5.8.3
vue-eslint-parser:
specifier: 10.1.3
- version: 10.1.3(eslint@9.23.0)
+ version: 10.1.3(eslint@9.25.1)
packages/megalodon:
dependencies:
@@ -1326,14 +1332,14 @@ importers:
specifier: ^1.11.10
version: 1.11.10
form-data:
- specifier: ^4.0.0
- version: 4.0.0
+ specifier: 4.0.2
+ version: 4.0.2
https-proxy-agent:
specifier: ^7.0.2
version: 7.0.2
oauth:
- specifier: ^0.10.0
- version: 0.10.0
+ specifier: 0.10.2
+ version: 0.10.2
object-assign-deep:
specifier: ^0.4.0
version: 0.4.0
@@ -1344,30 +1350,30 @@ importers:
specifier: ^8.0.2
version: 8.0.2
typescript:
- specifier: 5.1.6
- version: 5.1.6
+ specifier: 5.8.3
+ version: 5.8.3
uuid:
- specifier: ^9.0.1
- version: 9.0.1
+ specifier: 11.1.0
+ version: 11.1.0
ws:
specifier: 8.17.1
version: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
devDependencies:
'@typescript-eslint/eslint-plugin':
- specifier: 8.27.0
- version: 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.1.6))(eslint@9.22.0)(typescript@5.1.6)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.27.0
- version: 8.27.0(eslint@9.22.0)(typescript@5.1.6)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
eslint:
- specifier: 9.22.0
- version: 9.22.0
+ specifier: 9.25.1
+ version: 9.25.1
eslint-config-prettier:
specifier: ^9.0.0
- version: 9.1.0(eslint@9.22.0)
+ version: 9.1.0(eslint@9.25.1)
jest:
- specifier: ^29.7.0
- version: 29.7.0(@types/node@22.13.10)
+ specifier: 29.7.0
+ version: 29.7.0(@types/node@22.15.2)
jest-worker:
specifier: ^29.7.0
version: 29.7.0
@@ -1375,14 +1381,11 @@ importers:
specifier: 4.17.21
version: 4.17.21
prettier:
- specifier: ^3.1.0
- version: 3.3.3
+ specifier: 3.5.3
+ version: 3.5.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.25.0)(jest@29.7.0(@types/node@22.13.10))(typescript@5.1.6)
- typedoc:
- specifier: ^0.25.3
- version: 0.25.13(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.25.3)(jest@29.7.0(@types/node@22.15.2))(typescript@5.8.3)
packages/misskey-bubble-game:
dependencies:
@@ -1400,29 +1403,29 @@ importers:
specifier: 0.19.8
version: 0.19.8
'@types/node':
- specifier: 22.14.0
- version: 22.14.0
+ specifier: 22.15.2
+ version: 22.15.2
'@types/seedrandom':
specifier: 3.0.8
version: 3.0.8
'@typescript-eslint/eslint-plugin':
- specifier: 8.29.1
- version: 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.29.1
- version: 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
esbuild:
- specifier: 0.25.2
- version: 0.25.2
+ specifier: 0.25.3
+ version: 0.25.3
execa:
specifier: 9.5.2
version: 9.5.2
glob:
- specifier: 11.0.1
- version: 11.0.1
+ specifier: 11.0.2
+ version: 11.0.2
nodemon:
- specifier: 3.1.9
- version: 3.1.9
+ specifier: 3.1.10
+ version: 3.1.10
typescript:
specifier: 5.8.3
version: 5.8.3
@@ -1440,35 +1443,35 @@ importers:
version: 4.4.0
devDependencies:
'@microsoft/api-extractor':
- specifier: 7.52.2
- version: 7.52.2(@types/node@22.13.15)
+ specifier: 7.52.5
+ version: 7.52.5(@types/node@22.15.2)
'@swc/jest':
- specifier: 0.2.37
- version: 0.2.37(@swc/core@1.11.18)
+ specifier: 0.2.38
+ version: 0.2.38(@swc/core@1.11.22)
'@types/jest':
specifier: 29.5.14
version: 29.5.14
'@types/node':
- specifier: 22.13.15
- version: 22.13.15
+ specifier: 22.15.2
+ version: 22.15.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.29.0
- version: 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.29.0
- version: 8.29.0(eslint@9.23.0)(typescript@5.8.2)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
esbuild:
- specifier: 0.25.2
- version: 0.25.2
+ specifier: 0.25.3
+ version: 0.25.3
execa:
specifier: 8.0.1
version: 8.0.1
glob:
- specifier: 11.0.1
- version: 11.0.1
+ specifier: 11.0.2
+ version: 11.0.2
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@22.13.15)
+ version: 29.7.0(@types/node@22.15.2)
jest-fetch-mock:
specifier: 3.0.3
version: 3.0.3(encoding@0.1.13)
@@ -1482,14 +1485,14 @@ importers:
specifier: 2.0.0
version: 2.0.0
nodemon:
- specifier: 3.1.9
- version: 3.1.9
+ specifier: 3.1.10
+ version: 3.1.10
tsd:
- specifier: 0.31.2
- version: 0.31.2
+ specifier: 0.32.0
+ version: 0.32.0
typescript:
- specifier: 5.8.2
- version: 5.8.2
+ specifier: 5.8.3
+ version: 5.8.3
packages/misskey-js/generator:
devDependencies:
@@ -1497,17 +1500,17 @@ importers:
specifier: 2.7.0
version: 2.7.0(openapi-types@12.1.3)
'@types/node':
- specifier: 22.13.15
- version: 22.13.15
+ specifier: 22.15.2
+ version: 22.15.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.29.0
- version: 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.29.0
- version: 8.29.0(eslint@9.22.0)(typescript@5.8.2)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
eslint:
- specifier: 9.22.0
- version: 9.22.0
+ specifier: 9.25.1
+ version: 9.25.1
openapi-types:
specifier: 12.1.3
version: 12.1.3
@@ -1521,8 +1524,8 @@ importers:
specifier: 4.19.3
version: 4.19.3
typescript:
- specifier: 5.8.2
- version: 5.8.2
+ specifier: 5.8.3
+ version: 5.8.3
packages/misskey-reversi:
dependencies:
@@ -1531,26 +1534,26 @@ importers:
version: 1.2.2
devDependencies:
'@types/node':
- specifier: 22.14.0
- version: 22.14.0
+ specifier: 22.15.2
+ version: 22.15.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.29.1
- version: 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
'@typescript-eslint/parser':
- specifier: 8.29.1
- version: 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
esbuild:
- specifier: 0.25.2
- version: 0.25.2
+ specifier: 0.25.3
+ version: 0.25.3
execa:
specifier: 9.5.2
version: 9.5.2
glob:
- specifier: 11.0.1
- version: 11.0.1
+ specifier: 11.0.2
+ version: 11.0.2
nodemon:
- specifier: 3.1.9
- version: 3.1.9
+ specifier: 3.1.10
+ version: 3.1.10
typescript:
specifier: 5.8.3
version: 5.8.3
@@ -1558,8 +1561,8 @@ importers:
packages/sw:
dependencies:
esbuild:
- specifier: 0.25.2
- version: 0.25.2
+ specifier: 0.25.3
+ version: 0.25.3
idb-keyval:
specifier: 6.2.1
version: 6.2.1
@@ -1568,17 +1571,17 @@ importers:
version: link:../misskey-js
devDependencies:
'@typescript-eslint/parser':
- specifier: 8.29.1
- version: 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ specifier: 8.31.0
+ version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
'@typescript/lib-webworker':
specifier: npm:@types/serviceworker@0.0.74
version: '@types/serviceworker@0.0.74'
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)
+ version: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)
nodemon:
- specifier: 3.1.9
- version: 3.1.9
+ specifier: 3.1.10
+ version: 3.1.10
typescript:
specifier: 5.8.3
version: 5.8.3
@@ -1630,51 +1633,51 @@ packages:
'@aws-crypto/util@5.2.0':
resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==}
- '@aws-sdk/client-s3@3.782.0':
- resolution: {integrity: sha512-V6JR2JAGYQY7J8wk5un5n/ja2nfCUyyoRCF8Du8JL91NGI8i41Mdr/TzuOGwTgFl6RSXb/ge1K1jk30OH4MugQ==}
+ '@aws-sdk/client-s3@3.797.0':
+ resolution: {integrity: sha512-N7pB94mXi4fCt+rYmR9TzfbbwZsWs6Mnk/jDNX9sAZyWkZQnS3AZ/nRtnUmdCimdnOPOMNVjmAoZ4mW3Ff8LDw==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/client-sso@3.782.0':
- resolution: {integrity: sha512-5GlJBejo8wqMpSSEKb45WE82YxI2k73YuebjLH/eWDNQeE6VI5Bh9lA1YQ7xNkLLH8hIsb0pSfKVuwh0VEzVrg==}
+ '@aws-sdk/client-sso@3.797.0':
+ resolution: {integrity: sha512-9xuR918p7tShR67ZL+AOSbydpJxSHAOdXcQswxxWR/hKCF7tULX7tyL3gNo3l/ETp0CDcStvorOdH/nCbzEOjw==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/core@3.775.0':
- resolution: {integrity: sha512-8vpW4WihVfz0DX+7WnnLGm3GuQER++b0IwQG35JlQMlgqnc44M//KbJPsIHA0aJUJVwJAEShgfr5dUbY8WUzaA==}
+ '@aws-sdk/core@3.796.0':
+ resolution: {integrity: sha512-tH8Sp7lCxISVoLnkyv4AouuXs2CDlMhTuesWa0lq2NX1f+DXsMwSBtN37ttZdpFMw3F8mWdsJt27X9h2Oq868A==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/credential-provider-env@3.775.0':
- resolution: {integrity: sha512-6ESVxwCbGm7WZ17kY1fjmxQud43vzJFoLd4bmlR+idQSWdqlzGDYdcfzpjDKTcivdtNrVYmFvcH1JBUwCRAZhw==}
+ '@aws-sdk/credential-provider-env@3.796.0':
+ resolution: {integrity: sha512-kQzGKm4IOYYO6vUrai2JocNwhJm4Aml2BsAV+tBhFhhkutE7khf9PUucoVjB78b0J48nF+kdSacqzY+gB81/Uw==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/credential-provider-http@3.775.0':
- resolution: {integrity: sha512-PjDQeDH/J1S0yWV32wCj2k5liRo0ssXMseCBEkCsD3SqsU8o5cU82b0hMX4sAib/RkglCSZqGO0xMiN0/7ndww==}
+ '@aws-sdk/credential-provider-http@3.796.0':
+ resolution: {integrity: sha512-wWOT6VAHIKOuHdKFGm1iyKvx7f6+Kc/YTzFWJPuT+l+CPlXR6ylP1UMIDsHHLKpMzsrh3CH77QDsjkhQrnKkfg==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/credential-provider-ini@3.782.0':
- resolution: {integrity: sha512-wd4KdRy2YjLsE4Y7pz00470Iip06GlRHkG4dyLW7/hFMzEO2o7ixswCWp6J2VGZVAX64acknlv2Q0z02ebjmhw==}
+ '@aws-sdk/credential-provider-ini@3.797.0':
+ resolution: {integrity: sha512-Zpj6pJ2hnebrhLDr+x61ArMUkjHG6mfJRfamHxeVTgZkhLcwHjC5aM4u9pWTVugIaPY+VBtgkKPbi3TRbHlt2g==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/credential-provider-node@3.782.0':
- resolution: {integrity: sha512-HZiAF+TCEyKjju9dgysjiPIWgt/+VerGaeEp18mvKLNfgKz1d+/82A2USEpNKTze7v3cMFASx3CvL8yYyF7mJw==}
+ '@aws-sdk/credential-provider-node@3.797.0':
+ resolution: {integrity: sha512-xJSWvvnmzEfHbqbpN4F3E3mI9+zJ/VWLGiKOjzX1Inbspa5WqNn2GoMamolZR2TvvZS4F3Hp73TD1WoBzkIjuw==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/credential-provider-process@3.775.0':
- resolution: {integrity: sha512-A6k68H9rQp+2+7P7SGO90Csw6nrUEm0Qfjpn9Etc4EboZhhCLs9b66umUsTsSBHus4FDIe5JQxfCUyt1wgNogg==}
+ '@aws-sdk/credential-provider-process@3.796.0':
+ resolution: {integrity: sha512-r4e8/4AdKn/qQbRVocW7oXkpoiuXdTv0qty8AASNLnbQnT1vjD1bvmP6kp4fbHPWgwY8I9h0Dqjp49uy9Bqyuw==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/credential-provider-sso@3.782.0':
- resolution: {integrity: sha512-1y1ucxTtTIGDSNSNxriQY8msinilhe9gGvQpUDYW9gboyC7WQJPDw66imy258V6osdtdi+xoHzVCbCz3WhosMQ==}
+ '@aws-sdk/credential-provider-sso@3.797.0':
+ resolution: {integrity: sha512-VlyWnjTsTnBXqXcEW0nw3S7nj00n9fYwF6uU6HPO9t860yIySG01lNPAWTvAt3DfVL5SRS0GANriCZF6ohcMcQ==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/credential-provider-web-identity@3.782.0':
- resolution: {integrity: sha512-xCna0opVPaueEbJoclj5C6OpDNi0Gynj+4d7tnuXGgQhTHPyAz8ZyClkVqpi5qvHTgxROdUEDxWqEO5jqRHZHQ==}
+ '@aws-sdk/credential-provider-web-identity@3.797.0':
+ resolution: {integrity: sha512-DIb05FEmdOX7bNsqSVEAB3UkaDgrYHonQ2+gcBLqZ7LoDNnovHIlvC5jii93usgEStxITZstnzw+49keNEgVWw==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/lib-storage@3.782.0':
- resolution: {integrity: sha512-UQYnIzpBReLko2XhDgG/rWpoHTWv4/zqUNl4XJXZRo9akLzrxGKtPrp5nJ4OLUkH3tIm1cvmI3XlSjHUW/OxWw==}
+ '@aws-sdk/lib-storage@3.797.0':
+ resolution: {integrity: sha512-hGacJXiFBnhkDhDuirptViR0ZfpvE6ENt+xJFV76F5OX8RvO7UhEkq9wdq/GzlSwrPB2XBfoYQgdtHJpjHs2zA==}
engines: {node: '>=18.0.0'}
peerDependencies:
- '@aws-sdk/client-s3': ^3.782.0
+ '@aws-sdk/client-s3': ^3.797.0
'@aws-sdk/middleware-bucket-endpoint@3.775.0':
resolution: {integrity: sha512-qogMIpVChDYr4xiUNC19/RDSw/sKoHkAhouS6Skxiy6s27HBhow1L3Z1qVYXuBmOZGSWPU0xiyZCvOyWrv9s+Q==}
@@ -1684,8 +1687,8 @@ packages:
resolution: {integrity: sha512-Apd3owkIeUW5dnk3au9np2IdW2N0zc9NjTjHiH+Mx3zqwSrc+m+ANgJVgk9mnQjMzU/vb7VuxJ0eqdEbp5gYsg==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/middleware-flexible-checksums@3.775.0':
- resolution: {integrity: sha512-OmHLfRIb7IIXsf9/X/pMOlcSV3gzW/MmtPSZTkrz5jCTKzWXd7eRoyOJqewjsaC6KMAxIpNU77FoAd16jOZ21A==}
+ '@aws-sdk/middleware-flexible-checksums@3.796.0':
+ resolution: {integrity: sha512-JTqnyzGlbvXDcEnBtd5LFNrCFKUHnGyp/V9+BkvzNP02WXABLWzYvj1TCaf5pQySwK/b4kVn5lvbpTi0rXqjZw==}
engines: {node: '>=18.0.0'}
'@aws-sdk/middleware-host-header@3.775.0':
@@ -1704,32 +1707,32 @@ packages:
resolution: {integrity: sha512-GLCzC8D0A0YDG5u3F5U03Vb9j5tcOEFhr8oc6PDk0k0vm5VwtZOE6LvK7hcCSoAB4HXyOUM0sQuXrbaAh9OwXA==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/middleware-sdk-s3@3.775.0':
- resolution: {integrity: sha512-zsvcu7cWB28JJ60gVvjxPCI7ZU7jWGcpNACPiZGyVtjYXwcxyhXbYEVDSWKsSA6ERpz9XrpLYod8INQWfW3ECg==}
+ '@aws-sdk/middleware-sdk-s3@3.796.0':
+ resolution: {integrity: sha512-5o78oE79sGOtYkL7Up02h2nmr9UhGQZJgxE29EBdTw4dZ1EaA46L+C8oA+fBCmAB5xPQsjQqvhRrsr4Lcp+jZQ==}
engines: {node: '>=18.0.0'}
'@aws-sdk/middleware-ssec@3.775.0':
resolution: {integrity: sha512-Iw1RHD8vfAWWPzBBIKaojO4GAvQkHOYIpKdAfis/EUSUmSa79QsnXnRqsdcE0mCB0Ylj23yi+ah4/0wh9FsekA==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/middleware-user-agent@3.782.0':
- resolution: {integrity: sha512-i32H2R6IItX+bQ2p4+v2gGO2jA80jQoJO2m1xjU9rYWQW3+ErWy4I5YIuQHTBfb6hSdAHbaRfqPDgbv9J2rjEg==}
+ '@aws-sdk/middleware-user-agent@3.796.0':
+ resolution: {integrity: sha512-IeNg+3jNWT37J45opi5Jx89hGF0lOnZjiNwlMp3rKq7PlOqy8kWq5J1Gxk0W3tIkPpuf68CtBs/QFrRXWOjsZw==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/nested-clients@3.782.0':
- resolution: {integrity: sha512-QOYC8q7luzHFXrP0xYAqBctoPkynjfV0r9dqntFu4/IWMTyC1vlo1UTxFAjIPyclYw92XJyEkVCVg9v/nQnsUA==}
+ '@aws-sdk/nested-clients@3.797.0':
+ resolution: {integrity: sha512-xCsRKdsv0GAg9E28fvYBdC3JR2xdtZ2o41MVknOs+pSFtMsZm3SsgxObN35p1OTMk/o/V0LORGVLnFQMlc5QiA==}
engines: {node: '>=18.0.0'}
'@aws-sdk/region-config-resolver@3.775.0':
resolution: {integrity: sha512-40iH3LJjrQS3LKUJAl7Wj0bln7RFPEvUYKFxtP8a+oKFDO0F65F52xZxIJbPn6sHkxWDAnZlGgdjZXM3p2g5wQ==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/signature-v4-multi-region@3.775.0':
- resolution: {integrity: sha512-cnGk8GDfTMJ8p7+qSk92QlIk2bmTmFJqhYxcXZ9PysjZtx0xmfCMxnG3Hjy1oU2mt5boPCVSOptqtWixayM17g==}
+ '@aws-sdk/signature-v4-multi-region@3.796.0':
+ resolution: {integrity: sha512-JAOLdvazTc9HlTFslSrIOrKRMuOruuM3FeGw0hyfLP/RIbjd9bqe/xLIzDSJr3wpCpJs0sXoofwJgXtgTipvjA==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/token-providers@3.782.0':
- resolution: {integrity: sha512-4tPuk/3+THPrzKaXW4jE2R67UyGwHLFizZ47pcjJWbhb78IIJAy94vbeqEQ+veS84KF5TXcU7g5jGTXC0D70Wg==}
+ '@aws-sdk/token-providers@3.797.0':
+ resolution: {integrity: sha512-TLFkP4BBdkH2zCXhG3JjaYrRft25MMZ+6/YDz1C/ikq2Zk8krUbVoSmhtYMVz10JtxAPiQ++w0vI/qbz2JSDXg==}
engines: {node: '>=18.0.0'}
'@aws-sdk/types@3.775.0':
@@ -1740,8 +1743,8 @@ packages:
resolution: {integrity: sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/util-endpoints@3.782.0':
- resolution: {integrity: sha512-/RJOAO7o7HI6lEa4ASbFFLHGU9iPK876BhsVfnl54MvApPVYWQ9sHO0anOUim2S5lQTwd/6ghuH3rFYSq/+rdw==}
+ '@aws-sdk/util-endpoints@3.787.0':
+ resolution: {integrity: sha512-fd3zkiOkwnbdbN0Xp9TsP5SWrmv0SpT70YEdbb8wAj2DWQwiCmFszaSs+YCvhoCdmlR3Wl9Spu0pGpSAGKeYvQ==}
engines: {node: '>=18.0.0'}
'@aws-sdk/util-locate-window@3.208.0':
@@ -1751,8 +1754,8 @@ packages:
'@aws-sdk/util-user-agent-browser@3.775.0':
resolution: {integrity: sha512-txw2wkiJmZKVdDbscK7VBK+u+TJnRtlUjRTLei+elZg2ADhpQxfVAQl436FUeIv6AhB/oRHW6/K/EAGXUSWi0A==}
- '@aws-sdk/util-user-agent-node@3.782.0':
- resolution: {integrity: sha512-dMFkUBgh2Bxuw8fYZQoH/u3H4afQ12VSkzEi//qFiDTwbKYq+u+RYjc8GLDM6JSK1BShMu5AVR7HD4ap1TYUnA==}
+ '@aws-sdk/util-user-agent-node@3.796.0':
+ resolution: {integrity: sha512-9fQpNcHgVFitf1tbTT8V1xGRoRHSmOAWjrhevo6Tc0WoINMAKz+4JNqfVGWRE5Tmtpq0oHKo1RmvxXQQtJYciA==}
engines: {node: '>=18.0.0'}
peerDependencies:
aws-crt: '>=1.0.0'
@@ -2086,8 +2089,8 @@ packages:
resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==}
engines: {node: '>=18'}
- '@cypress/request@3.0.6':
- resolution: {integrity: sha512-fi0eVdCOtKu5Ed6+E8mYxUF6ZTFJDZvHogCBelM0xVXmrDEkyM22gRArQzq1YcHPm1V47Vf/iAD+WgVdUlJCGg==}
+ '@cypress/request@3.0.8':
+ resolution: {integrity: sha512-h0NFgh1mJmm1nr4jCwkGHwKneVYKghUyWe6TMNrk0B9zsjAJxpg8C4/+BAcmLgCPa1vj1V8rNUaILl+zYRUWBQ==}
engines: {node: '>= 6'}
'@cypress/xvfb@1.2.4':
@@ -2103,302 +2106,152 @@ packages:
'@emnapi/runtime@1.4.3':
resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
- '@esbuild/aix-ppc64@0.25.0':
- resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==}
+ '@esbuild/aix-ppc64@0.25.3':
+ resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
- '@esbuild/aix-ppc64@0.25.2':
- resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.25.0':
- resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==}
+ '@esbuild/android-arm64@0.25.3':
+ resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.25.2':
- resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.25.0':
- resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-arm@0.25.2':
- resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==}
+ '@esbuild/android-arm@0.25.3':
+ resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.25.0':
- resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==}
+ '@esbuild/android-x64@0.25.3':
+ resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.25.2':
- resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.25.0':
- resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-arm64@0.25.2':
- resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==}
+ '@esbuild/darwin-arm64@0.25.3':
+ resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.25.0':
- resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.25.2':
- resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==}
+ '@esbuild/darwin-x64@0.25.3':
+ resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.25.0':
- resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==}
+ '@esbuild/freebsd-arm64@0.25.3':
+ resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.25.2':
- resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.25.0':
- resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==}
+ '@esbuild/freebsd-x64@0.25.3':
+ resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.25.2':
- resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.25.0':
- resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==}
+ '@esbuild/linux-arm64@0.25.3':
+ resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.25.2':
- resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.25.0':
- resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==}
+ '@esbuild/linux-arm@0.25.3':
+ resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.25.2':
- resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.25.0':
- resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==}
+ '@esbuild/linux-ia32@0.25.3':
+ resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.25.2':
- resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.25.0':
- resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-loong64@0.25.2':
- resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==}
+ '@esbuild/linux-loong64@0.25.3':
+ resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.25.0':
- resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.25.2':
- resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==}
+ '@esbuild/linux-mips64el@0.25.3':
+ resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.25.0':
- resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==}
+ '@esbuild/linux-ppc64@0.25.3':
+ resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.25.2':
- resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.25.0':
- resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.25.2':
- resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==}
+ '@esbuild/linux-riscv64@0.25.3':
+ resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.25.0':
- resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-s390x@0.25.2':
- resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==}
+ '@esbuild/linux-s390x@0.25.3':
+ resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.25.0':
- resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/linux-x64@0.25.2':
- resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==}
+ '@esbuild/linux-x64@0.25.3':
+ resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-arm64@0.25.0':
- resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
+ '@esbuild/netbsd-arm64@0.25.3':
+ resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-arm64@0.25.2':
- resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.25.0':
- resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==}
+ '@esbuild/netbsd-x64@0.25.3':
+ resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.25.2':
- resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-arm64@0.25.0':
- resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==}
+ '@esbuild/openbsd-arm64@0.25.3':
+ resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-arm64@0.25.2':
- resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.25.0':
- resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.25.2':
- resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==}
+ '@esbuild/openbsd-x64@0.25.3':
+ resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
- '@esbuild/sunos-x64@0.25.0':
- resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==}
+ '@esbuild/sunos-x64@0.25.3':
+ resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.25.2':
- resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.25.0':
- resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==}
+ '@esbuild/win32-arm64@0.25.3':
+ resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.25.2':
- resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.25.0':
- resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-ia32@0.25.2':
- resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==}
+ '@esbuild/win32-ia32@0.25.3':
+ resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.25.0':
- resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@esbuild/win32-x64@0.25.2':
- resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==}
+ '@esbuild/win32-x64@0.25.3':
+ resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -2423,40 +2276,32 @@ packages:
resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/config-array@0.19.2':
- resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/config-helpers@0.1.0':
- resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==}
+ '@eslint/config-array@0.20.0':
+ resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/config-helpers@0.2.0':
- resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==}
+ '@eslint/config-helpers@0.2.1':
+ resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/core@0.12.0':
- resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==}
+ '@eslint/core@0.13.0':
+ resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@3.3.1':
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@9.22.0':
- resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/js@9.23.0':
- resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==}
+ '@eslint/js@9.25.1':
+ resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.6':
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/plugin-kit@0.2.7':
- resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==}
+ '@eslint/plugin-kit@0.2.8':
+ resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@fastify/accept-negotiator@2.0.0':
@@ -2573,65 +2418,33 @@ packages:
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
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}
- cpu: [arm64]
- os: [darwin]
-
'@img/sharp-darwin-arm64@0.34.1':
resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-x64@0.33.5':
- resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [darwin]
-
'@img/sharp-darwin-x64@0.34.1':
resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-darwin-arm64@1.0.4':
- resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
- cpu: [arm64]
- os: [darwin]
-
'@img/sharp-libvips-darwin-arm64@1.1.0':
resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==}
cpu: [arm64]
os: [darwin]
- '@img/sharp-libvips-darwin-x64@1.0.4':
- resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
- cpu: [x64]
- os: [darwin]
-
'@img/sharp-libvips-darwin-x64@1.1.0':
resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-linux-arm64@1.0.4':
- resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
- cpu: [arm64]
- os: [linux]
-
'@img/sharp-libvips-linux-arm64@1.1.0':
resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==}
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linux-arm@1.0.5':
- resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
- cpu: [arm]
- os: [linux]
-
'@img/sharp-libvips-linux-arm@1.1.0':
resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==}
cpu: [arm]
@@ -2642,146 +2455,73 @@ packages:
cpu: [ppc64]
os: [linux]
- '@img/sharp-libvips-linux-s390x@1.0.4':
- resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
- cpu: [s390x]
- os: [linux]
-
'@img/sharp-libvips-linux-s390x@1.1.0':
resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==}
cpu: [s390x]
os: [linux]
- '@img/sharp-libvips-linux-x64@1.0.4':
- resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
- cpu: [x64]
- os: [linux]
-
'@img/sharp-libvips-linux-x64@1.1.0':
resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==}
cpu: [x64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
- resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
- cpu: [arm64]
- os: [linux]
-
'@img/sharp-libvips-linuxmusl-arm64@1.1.0':
resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==}
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-x64@1.0.4':
- resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
- cpu: [x64]
- os: [linux]
-
'@img/sharp-libvips-linuxmusl-x64@1.1.0':
resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==}
cpu: [x64]
os: [linux]
- '@img/sharp-linux-arm64@0.33.5':
- resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
'@img/sharp-linux-arm64@0.34.1':
resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
- '@img/sharp-linux-arm@0.33.5':
- resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm]
- os: [linux]
-
'@img/sharp-linux-arm@0.34.1':
resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
- '@img/sharp-linux-s390x@0.33.5':
- resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [s390x]
- os: [linux]
-
'@img/sharp-linux-s390x@0.34.1':
resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
- '@img/sharp-linux-x64@0.33.5':
- resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
'@img/sharp-linux-x64@0.34.1':
resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
- '@img/sharp-linuxmusl-arm64@0.33.5':
- resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
'@img/sharp-linuxmusl-arm64@0.34.1':
resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
- '@img/sharp-linuxmusl-x64@0.33.5':
- resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
'@img/sharp-linuxmusl-x64@0.34.1':
resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
- '@img/sharp-wasm32@0.33.5':
- resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [wasm32]
-
'@img/sharp-wasm32@0.34.1':
resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
- '@img/sharp-win32-ia32@0.33.5':
- resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [ia32]
- os: [win32]
-
'@img/sharp-win32-ia32@0.34.1':
resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-x64@0.33.5':
- resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [win32]
-
'@img/sharp-win32-x64@0.34.1':
resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -2965,8 +2705,8 @@ packages:
'@microsoft/api-extractor-model@7.30.5':
resolution: {integrity: sha512-0ic4rcbcDZHz833RaTZWTGu+NpNgrxVNjVaor0ZDUymfDFzjA/Uuk8hYziIUIOEOSTfmIQqyzVwlzxZxPe7tOA==}
- '@microsoft/api-extractor@7.52.2':
- resolution: {integrity: sha512-RX37V5uhBBPUvrrcmIxuQ8TPsohvr6zxo7SsLPOzBYcH9nbjbvtdXrts4cxHCXGOin9JR5ar37qfxtCOuEBTHA==}
+ '@microsoft/api-extractor@7.52.5':
+ resolution: {integrity: sha512-6WWgjjg6FkoDWpF/O3sjB05OkszpI5wtKJqd8fUIR/JJUv8IqNCGr1lJUZJnc1HegcT9gAvyf98KfH0wFncU0w==}
hasBin: true
'@microsoft/tsdoc-config@0.17.1':
@@ -3029,12 +2769,11 @@ packages:
resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==}
engines: {node: '>=18'}
- '@nestjs/common@11.0.16':
- resolution: {integrity: sha512-agvuQ8su4aZ+PVxAmY89odG1eR97HEQvxPmTMdDqyvDWzNerl7WQhUEd+j4/UyNWcF1or1UVcrtPj52x+eUSsA==}
+ '@nestjs/common@11.1.0':
+ resolution: {integrity: sha512-8MrajltjtIN6eW9cTpv+1IZogqz2Zsrc8YDt0LwQPUq8cSq0j50DETdQpPsNMeib+p9avkV41+NrzGk1z2o5Wg==}
peerDependencies:
class-transformer: '*'
class-validator: '*'
- file-type: ^20.4.1
reflect-metadata: ^0.1.12 || ^0.2.0
rxjs: ^7.1.0
peerDependenciesMeta:
@@ -3043,8 +2782,8 @@ packages:
class-validator:
optional: true
- '@nestjs/core@11.0.15':
- resolution: {integrity: sha512-MVVoTzG3vCeIjjmGmKWTZqwJYF3OAHXUFYKRV+bwRaFANcK+54TJpTSmf34eOPnDrlFnurTldSBZV2Cja+uSRw==}
+ '@nestjs/core@11.1.0':
+ resolution: {integrity: sha512-IeXbTRPrr6xAVbETlDE+miSkNmYf/cPhCa9GU9gFtPO6pVNuAeG/dNrjLVc23mJtUlT/ibdsoW35TlSyHLkzEA==}
engines: {node: '>= 20'}
peerDependencies:
'@nestjs/common': ^11.0.0
@@ -3061,14 +2800,14 @@ packages:
'@nestjs/websockets':
optional: true
- '@nestjs/platform-express@10.4.15':
- resolution: {integrity: sha512-63ZZPkXHjoDyO7ahGOVcybZCRa7/Scp6mObQKjcX/fTEq1YJeU75ELvMsuQgc8U2opMGOBD7GVuc4DV0oeDHoA==}
+ '@nestjs/platform-express@10.4.17':
+ resolution: {integrity: sha512-ovn4Wxney3QGBrqNPv0QLcCuH5QoAi6pb/GNWAz6B/NmBjZbs9/zl4a2beGDA2SaYre9w43YbfmHTm17PneP9w==}
peerDependencies:
'@nestjs/common': ^10.0.0
'@nestjs/core': ^10.0.0
- '@nestjs/testing@11.0.15':
- resolution: {integrity: sha512-IMeDGWuzcmEVClOC+jYVJFtyjIG4clzllndhp6ECNiWHNdKR55PU6ugjKBB8kZ5JszME8OaIXUYFTdiR5dcXXA==}
+ '@nestjs/testing@11.1.0':
+ resolution: {integrity: sha512-gQ+NGshkHbNrDNXMVaPiwduqZ8YHpXrnsQqhSsnyNYOcDNPdBbB+0FDq7XiiklluXqjdLAN8i+bS7MbGlZIhKw==}
peerDependencies:
'@nestjs/common': ^11.0.0
'@nestjs/core': ^11.0.0
@@ -3341,6 +3080,9 @@ packages:
peerDependencies:
'@opentelemetry/api': ^1.1.0
+ '@paralleldrive/cuid2@2.2.2':
+ resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==}
+
'@parcel/watcher-android-arm64@2.5.1':
resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
engines: {node: '>= 10.0.0'}
@@ -3503,103 +3245,103 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.39.0':
- resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==}
+ '@rollup/rollup-android-arm-eabi@4.40.0':
+ resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.39.0':
- resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==}
+ '@rollup/rollup-android-arm64@4.40.0':
+ resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.39.0':
- resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==}
+ '@rollup/rollup-darwin-arm64@4.40.0':
+ resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.39.0':
- resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==}
+ '@rollup/rollup-darwin-x64@4.40.0':
+ resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.39.0':
- resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==}
+ '@rollup/rollup-freebsd-arm64@4.40.0':
+ resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.39.0':
- resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==}
+ '@rollup/rollup-freebsd-x64@4.40.0':
+ resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
- resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.40.0':
+ resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.39.0':
- resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==}
+ '@rollup/rollup-linux-arm-musleabihf@4.40.0':
+ resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.39.0':
- resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==}
+ '@rollup/rollup-linux-arm64-gnu@4.40.0':
+ resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.39.0':
- resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==}
+ '@rollup/rollup-linux-arm64-musl@4.40.0':
+ resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
- resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==}
+ '@rollup/rollup-linux-loongarch64-gnu@4.40.0':
+ resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
- resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.40.0':
+ resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.39.0':
- resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==}
+ '@rollup/rollup-linux-riscv64-gnu@4.40.0':
+ resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.39.0':
- resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==}
+ '@rollup/rollup-linux-riscv64-musl@4.40.0':
+ resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.39.0':
- resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==}
+ '@rollup/rollup-linux-s390x-gnu@4.40.0':
+ resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.39.0':
- resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==}
+ '@rollup/rollup-linux-x64-gnu@4.40.0':
+ resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.39.0':
- resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==}
+ '@rollup/rollup-linux-x64-musl@4.40.0':
+ resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.39.0':
- resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==}
+ '@rollup/rollup-win32-arm64-msvc@4.40.0':
+ resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.39.0':
- resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==}
+ '@rollup/rollup-win32-ia32-msvc@4.40.0':
+ resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.39.0':
- resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==}
+ '@rollup/rollup-win32-x64-msvc@4.40.0':
+ resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==}
cpu: [x64]
os: [win32]
@@ -3628,38 +3370,38 @@ packages:
'@types/node':
optional: true
- '@rushstack/ts-command-line@4.23.7':
- resolution: {integrity: sha512-Gr9cB7DGe6uz5vq2wdr89WbVDKz0UeuFEn5H2CfWDe7JvjFFaiV15gi6mqDBTbHhHCWS7w8mF1h3BnIfUndqdA==}
+ '@rushstack/ts-command-line@5.0.0':
+ resolution: {integrity: sha512-SW6nqZVxH26Rxz25+lJQRlnXI/YCrNH7NfDEWPPm9i0rwkSE6Rgtmzw96cuZgQjacOh0sw77d6V4SvgarAfr8g==}
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
- '@sentry-internal/browser-utils@9.12.0':
- resolution: {integrity: sha512-GXuDEG2Ix8DmVtTkjsItWdusk2CvJ6EPWKYVqFKifxt+IAT3ZbhGZd99Rg3wdRmt9xhCNuS4QrDzDTPMPgfdCw==}
+ '@sentry-internal/browser-utils@9.14.0':
+ resolution: {integrity: sha512-pDk9XUu9zf7lcT9QX0nTObPNp/y0xQyy1Dj+5/8TSB3vAfe0LQcooKGl/D1h7EoIXVHUozZk5JC/dH+gz6BXRg==}
engines: {node: '>=18'}
- '@sentry-internal/feedback@9.12.0':
- resolution: {integrity: sha512-3+UxoT97QIXNSUQS4ATL1FFws0RkUb6PeaQN8CPndI6mFlqTW5tuVVLNg9Eo1seNg7R/dfk6WHCWrYN1NbFFKQ==}
+ '@sentry-internal/feedback@9.14.0':
+ resolution: {integrity: sha512-D+PiEUWbDT0vqmaTiOs6OzXwVRVFgf7BCkFs48qsN9sAPwUgT+5zh2oo/rU2r0NrmMcvJVtSY+ezwPMk8BgGsg==}
engines: {node: '>=18'}
- '@sentry-internal/replay-canvas@9.12.0':
- resolution: {integrity: sha512-p8LuKZgWT/CoQBbDOXkSGjWWnc8WsnAayWgna8M/ZFWNITCNEM2rCuqZOyWOElIlrni+M7qoEA3jS7MZe8Ejxw==}
+ '@sentry-internal/replay-canvas@9.14.0':
+ resolution: {integrity: sha512-GhCSqc0oNzRiLhQsi9LCXgUmIwdHdvzVIsX4fihoFYWfgWSSj5YLqeEkb3CMM8htM6vheSFzIbPLlRS8fjCrPQ==}
engines: {node: '>=18'}
- '@sentry-internal/replay@9.12.0':
- resolution: {integrity: sha512-njEQosFeO/UX+gG+DMRANkPUuz6OIJLb+A1GVylhq9adUgFQydQ9Ay3v7/x1gMhdfHVP6Jeb27qkti0BWYbzBQ==}
+ '@sentry-internal/replay@9.14.0':
+ resolution: {integrity: sha512-wgt397/PtpfVQ9t779a0L+hGH3JN9doXv3+9Wj98MLWwhymvJBjpjCFUBLScO5iP6imewTbRqQHbq7XS7I+x1A==}
engines: {node: '>=18'}
- '@sentry/browser@9.12.0':
- resolution: {integrity: sha512-4xQYoZqi+VVhNvlhWiwRd57+SMr3Og4sLjuayAA+zIp1Wx/bDcIld697cugLwml/BR+mVJI2eokkgh1CBl6zag==}
+ '@sentry/browser@9.14.0':
+ resolution: {integrity: sha512-acxFbFEei3hzKr/IW3OmkzHlwohRaRBG0872nIhLYV2f/BgZmR6eV5zrUoELMmt2cgoLmDYyfp1734OoplfDbw==}
engines: {node: '>=18'}
'@sentry/core@8.55.0':
resolution: {integrity: sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==}
engines: {node: '>=14.18'}
- '@sentry/core@9.12.0':
- resolution: {integrity: sha512-jOqQK/90uzHmsBvkPTj/DAEFvA5poX4ZRyC7LE1zjg4F5jdOp3+M4W3qCy0CkSTu88Zu5VWBoppCU2Bs34XEqg==}
+ '@sentry/core@9.14.0':
+ resolution: {integrity: sha512-OLfucnP3LAL5bxVNWc2RVOHCX7fk9Er5bWPCS+O5cPjqNUUz0HQHhVh2Vhei5C0kYZZM4vy4BQit5T9LrlOaNA==}
engines: {node: '>=18'}
'@sentry/node@8.55.0':
@@ -3682,8 +3424,8 @@ packages:
engines: {node: '>=14.18'}
hasBin: true
- '@sentry/vue@9.12.0':
- resolution: {integrity: sha512-9/k6Jo1/nCJzj5qUNhQzzMCfBGT613CTrI2AauECyf44kkSE1FllvbCwT/V4eUMd+IiEL9qzqMLGTVwYUynxHw==}
+ '@sentry/vue@9.14.0':
+ resolution: {integrity: sha512-FJ6SBsDXCHpKlFpXcniFZ+5x9FUJ+WtxetU3rEelFrvYRV24lodRXY+IUbkxPiH0NvwhIo7B36DBQIhxeOWQew==}
engines: {node: '>=18'}
peerDependencies:
pinia: 2.x || 3.x
@@ -3692,23 +3434,23 @@ packages:
pinia:
optional: true
- '@shikijs/core@3.2.2':
- resolution: {integrity: sha512-yvlSKVMLjddAGBa2Yu+vUZxuu3sClOWW1AG+UtJkvejYuGM5BVL35s6Ijiwb75O9QdEx6IkMxinHZSi8ZyrBaA==}
+ '@shikijs/core@3.3.0':
+ resolution: {integrity: sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ==}
- '@shikijs/engine-javascript@3.2.2':
- resolution: {integrity: sha512-tlDKfhWpF4jKLUyVAnmL+ggIC+0VyteNsUpBzh1iwWLZu4i+PelIRr0TNur6pRRo5UZIv3ss/PLMuwahg9S2hg==}
+ '@shikijs/engine-javascript@3.3.0':
+ resolution: {integrity: sha512-XlhnFGv0glq7pfsoN0KyBCz9FJU678LZdQ2LqlIdAj6JKsg5xpYKay3DkazXWExp3DTJJK9rMOuGzU2911pg7Q==}
- '@shikijs/engine-oniguruma@3.2.2':
- resolution: {integrity: sha512-vyXRnWVCSvokwbaUD/8uPn6Gqsf5Hv7XwcW4AgiU4Z2qwy19sdr6VGzMdheKKN58tJOOe5MIKiNb901bgcUXYQ==}
+ '@shikijs/engine-oniguruma@3.3.0':
+ resolution: {integrity: sha512-l0vIw+GxeNU7uGnsu6B+Crpeqf+WTQ2Va71cHb5ZYWEVEPdfYwY5kXwYqRJwHrxz9WH+pjSpXQz+TJgAsrkA5A==}
- '@shikijs/langs@3.2.2':
- resolution: {integrity: sha512-NY0Urg2dV9ETt3JIOWoMPuoDNwte3geLZ4M1nrPHbkDS8dWMpKcEwlqiEIGqtwZNmt5gKyWpR26ln2Bg2ecPgw==}
+ '@shikijs/langs@3.3.0':
+ resolution: {integrity: sha512-zt6Kf/7XpBQKSI9eqku+arLkAcDQ3NHJO6zFjiChI8w0Oz6Jjjay7pToottjQGjSDCFk++R85643WbyINcuL+g==}
- '@shikijs/themes@3.2.2':
- resolution: {integrity: sha512-Zuq4lgAxVKkb0FFdhHSdDkALuRpsj1so1JdihjKNQfgM78EHxV2JhO10qPsMrm01FkE3mDRTdF68wfmsqjt6HA==}
+ '@shikijs/themes@3.3.0':
+ resolution: {integrity: sha512-tXeCvLXBnqq34B0YZUEaAD1lD4lmN6TOHAhnHacj4Owh7Ptb/rf5XCDeROZt2rEOk5yuka3OOW2zLqClV7/SOg==}
- '@shikijs/types@3.2.2':
- resolution: {integrity: sha512-a5TiHk7EH5Lso8sHcLHbVNNhWKP0Wi3yVnXnu73g86n3WoDgEra7n3KszyeCGuyoagspQ2fzvy4cpSc8pKhb0A==}
+ '@shikijs/types@3.3.0':
+ resolution: {integrity: sha512-KPCGnHG6k06QG/2pnYGbFtFvpVJmC3uIpXrAiPrawETifujPBv0Se2oUxm5qYgjCvGJS9InKvjytOdN+bGuX+Q==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -3918,8 +3660,8 @@ packages:
resolution: {integrity: sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==}
engines: {node: '>=18.0.0'}
- '@smithy/signature-v4@5.0.2':
- resolution: {integrity: sha512-Mz+mc7okA73Lyz8zQKJNyr7lIcHLiPYp0+oiqiMNc/t7/Kf2BENs5d63pEj7oPqdjaum6g0Fc8wC78dY1TgtXw==}
+ '@smithy/signature-v4@5.1.0':
+ resolution: {integrity: sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==}
engines: {node: '>=18.0.0'}
'@smithy/smithy-client@4.2.0':
@@ -4228,8 +3970,8 @@ packages:
peerDependencies:
eslint: '>=9.0.0'
- '@swc/cli@0.6.0':
- resolution: {integrity: sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==}
+ '@swc/cli@0.7.3':
+ resolution: {integrity: sha512-rnVXNnlURjdOuPaBIwZ3TmBA44BF/eP0j154LanlgPEYfau74ige7cpKlKkZr1IBqMOG99lAnYNxQipDWA3hdg==}
engines: {node: '>= 16.14.0'}
hasBin: true
peerDependencies:
@@ -4245,14 +3987,14 @@ packages:
cpu: [arm64]
os: [android]
- '@swc/core-darwin-arm64@1.11.18':
- resolution: {integrity: sha512-K6AntdUlNMQg8aChqjeXwnVhK6d4WRZ9TgtLSTmdU0Ugll4an7QK49s9NrT7XQU91cEsVvzdr++p1bNImx0hJg==}
+ '@swc/core-darwin-arm64@1.11.22':
+ resolution: {integrity: sha512-upSiFQfo1TE2QM3+KpBcp5SrOdKKjoc+oUoD1mmBDU2Wv4Bjjv16Z2I5ADvIqMV+b87AhYW+4Qu6iVrQD7j96Q==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
- '@swc/core-darwin-x64@1.11.18':
- resolution: {integrity: sha512-RCRvC6Q9M5BArTvj/IzUAAYGrgxYFbTTnAtf6UX7JFq2DAn+hEwYUjmC1m0gFso9HqFU0m5QZUGfZvVmACGWUw==}
+ '@swc/core-darwin-x64@1.11.22':
+ resolution: {integrity: sha512-8PEuF/gxIMJVK21DjuCOtzdqstn2DqnxVhpAYfXEtm3WmMqLIOIZBypF/xafAozyaHws4aB/5xmz8/7rPsjavw==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
@@ -4263,59 +4005,60 @@ packages:
cpu: [x64]
os: [freebsd]
- '@swc/core-linux-arm-gnueabihf@1.11.18':
- resolution: {integrity: sha512-wteAKf8YKb3jOnZFm3EzuIMzzCVXMuQOLHsz1IgEOc44/gdgNXKxaYTWAowZuej7t68tf/w0cRNMc7Le414v/g==}
+ '@swc/core-linux-arm-gnueabihf@1.11.22':
+ resolution: {integrity: sha512-NIPTXvqtn9e7oQHgdaxM9Z/anHoXC3Fg4ZAgw5rSGa1OlnKKupt5sdfJamNggSi+eAtyoFcyfkgqHnfe2u63HA==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
- '@swc/core-linux-arm64-gnu@1.11.18':
- resolution: {integrity: sha512-hY6jJYZ6PKHSBo5OATswfyKsUgsWu9+4nDcN8liYIRRgz3E0G9wk0VUTP4cFPivBFeHWTTAGz687/Nf2aQEIpw==}
+ '@swc/core-linux-arm64-gnu@1.11.22':
+ resolution: {integrity: sha512-xZ+bgS60c5r8kAeYsLNjJJhhQNkXdidQ277pUabSlu5GjR0CkQUPQ+L9hFeHf8DITEqpPBPRiAiiJsWq5eqMBg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
- '@swc/core-linux-arm64-musl@1.11.18':
- resolution: {integrity: sha512-slu0mlP2nucvQalttnapfpqpD/LlM9NHx9g3ofgsLzjObyMEBiX4ZysQ3y65U8Mjw71RNqtLd/ZmvxI6OmLdiQ==}
+ '@swc/core-linux-arm64-musl@1.11.22':
+ resolution: {integrity: sha512-JhrP/q5VqQl2eJR0xKYIkKTPjgf8CRsAmRnjJA2PtZhfQ543YbYvUqxyXSRyBOxdyX8JwzuAxIPEAlKlT7PPuQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
- '@swc/core-linux-x64-gnu@1.11.18':
- resolution: {integrity: sha512-h9a/8PA25arMCQ9t8CE8rA1s0c77z4kCZZ7dUuUkD88yEXIrARMca1IKR7of+S3slfQrf1Zlq3Ac1Fb1HVJziQ==}
+ '@swc/core-linux-x64-gnu@1.11.22':
+ resolution: {integrity: sha512-htmAVL+U01gk9GyziVUP0UWYaUQBgrsiP7Ytf6uDffrySyn/FclUS3MDPocNydqYsOpj3OpNKPxkaHK+F+X5fg==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
- '@swc/core-linux-x64-musl@1.11.18':
- resolution: {integrity: sha512-0sMDJj5qUGK9QEw4lrxLxkTP/4AoKciqNzXvqbk+J9XuXN2aIv4BsR1Y7z3GwAeMFGsba2lbHLOtJlDsaqIsiA==}
+ '@swc/core-linux-x64-musl@1.11.22':
+ resolution: {integrity: sha512-PL0VHbduWPX+ANoyOzr58jBiL2VnD0xGSFwPy7NRZ1Pr6SNWm4jw3x2u6RjLArGhS5EcWp64BSk9ZxqmTV3FEg==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
- '@swc/core-win32-arm64-msvc@1.11.18':
- resolution: {integrity: sha512-zGv9HnfgBcKyt54MJRWdwRNu9BuYkAFM7bx+tWtKhd37Ef7ZX20QLs9xXl5wWDXCbsOdRxXIZgXs6PEL+Pzmrw==}
+ '@swc/core-win32-arm64-msvc@1.11.22':
+ resolution: {integrity: sha512-moJvFhhTVGoMeEThtdF7hQog80Q00CS06v5uB+32VRuv+I31+4WPRyGlTWHO+oY4rReNcXut/mlDHPH7p0LdFg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
- '@swc/core-win32-ia32-msvc@1.11.18':
- resolution: {integrity: sha512-uBKj0S1lYv/E2ZhxHZOxSiQwoegYmzbPRpjq6eHBZDv97mu7W3K27/lsnPbvAfQ6b6rnv8BI+EsmJ7VLQBAHBQ==}
+ '@swc/core-win32-ia32-msvc@1.11.22':
+ resolution: {integrity: sha512-/jnsPJJz89F1aKHIb5ScHkwyzBciz2AjEq2m9tDvQdIdVufdJ4SpEDEN9FqsRNRLcBHjtbLs6bnboA+B+pRFXw==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
- '@swc/core-win32-x64-msvc@1.11.18':
- resolution: {integrity: sha512-8USTRcdgeFMNBgvVXl8tz6n4+9s9m+zHsfDeBT4jPgwnq2bnLBlTUlwnPwzDxfg9nUJr6RFD4xeKfWyZZRosZg==}
+ '@swc/core-win32-x64-msvc@1.11.22':
+ resolution: {integrity: sha512-lc93Y8Mku7LCFGqIxJ91coXZp2HeoDcFZSHCL90Wttg5xhk5xVM9uUCP+OdQsSsEixLF34h5DbT9ObzP8rAdRw==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
- '@swc/core@1.11.18':
- resolution: {integrity: sha512-ORZxyCKKiqYt2iHdh1C7pfVR1GBjkuFOdwqZggQzaq0vt22DpGca+2JsUtkUoWQmWcct04v5+ScwgvsHuMObxA==}
+ '@swc/core@1.11.22':
+ resolution: {integrity: sha512-mjPYbqq8XjwqSE0hEPT9CzaJDyxql97LgK4iyvYlwVSQhdN1uK0DBG4eP9PxYzCS2MUGAXB34WFLegdUj5HGpg==}
engines: {node: '>=10'}
+ deprecated: It has a bug. See https://github.com/swc-project/swc/issues/10413
peerDependencies:
- '@swc/helpers': '*'
+ '@swc/helpers': '>=0.5.17'
peerDependenciesMeta:
'@swc/helpers':
optional: true
@@ -4323,8 +4066,8 @@ packages:
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- '@swc/jest@0.2.37':
- resolution: {integrity: sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ==}
+ '@swc/jest@0.2.38':
+ resolution: {integrity: sha512-HMoZgXWMqChJwffdDjvplH53g9G2ALQes3HKXDEdliB/b85OQ0CTSbxG8VSeCwiAn7cOaDVEt4mwmZvbHcS52w==}
engines: {npm: '>= 7.0.0'}
peerDependencies:
'@swc/core': '*'
@@ -4370,6 +4113,10 @@ packages:
'@vue/compiler-sfc':
optional: true
+ '@tokenizer/inflate@0.2.7':
+ resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==}
+ engines: {node: '>=18'}
+
'@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
@@ -4383,8 +4130,8 @@ packages:
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
- '@tsd/typescript@5.4.5':
- resolution: {integrity: sha512-saiCxzHRhUrRxQV2JhH580aQUZiKQUXI38FcAcikcfOomAil4G4lxT0RfrrKywoAYP/rqAdYXYmNRLppcd+hQQ==}
+ '@tsd/typescript@5.8.3':
+ resolution: {integrity: sha512-oKarNCN1QUhG148M88mtZdOlBZWWGcInquef+U8QL7gwJkRuNo5WS45Fjsd+3hM9cDJWGpqSZ4Oo097KDx4IWA==}
engines: {node: '>=14.17'}
'@twemoji/parser@15.0.0':
@@ -4450,6 +4197,9 @@ packages:
'@types/cookie@0.6.0':
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
+ '@types/cookiejar@2.1.5':
+ resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==}
+
'@types/core-js@2.5.8':
resolution: {integrity: sha512-VgnAj6tIAhJhZdJ8/IpxdatM8G4OD3VWGlp6xIxUGENZlpbob9Ty4VVdC1FIEp0aK6DBscDDjyzy5FB60TuNqg==}
@@ -4544,6 +4294,9 @@ packages:
'@types/mdx@2.0.3':
resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==}
+ '@types/methods@1.1.4':
+ resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==}
+
'@types/micromatch@4.0.9':
resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==}
@@ -4562,14 +4315,8 @@ packages:
'@types/mysql@2.15.26':
resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==}
- '@types/node@22.13.10':
- resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==}
-
- '@types/node@22.13.15':
- resolution: {integrity: sha512-imAbQEEbVni6i6h6Bd5xkCRwLqFc8hihCsi2GbtDoAtUcAFQ6Zs4pFXTZUUbroTkXdImczWM9AI8eZUuybXE3w==}
-
- '@types/node@22.14.0':
- resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==}
+ '@types/node@22.15.2':
+ resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==}
'@types/nodemailer@6.4.17':
resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==}
@@ -4595,8 +4342,8 @@ packages:
'@types/pg-pool@2.0.6':
resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==}
- '@types/pg@8.11.11':
- resolution: {integrity: sha512-kGT1qKM8wJQ5qlawUrEkXgvMSXoV213KfMGXcwfDwUIfUHXqXYXOfS1nE1LINRJVVVx5wCm70XnFlMHaIcQAfw==}
+ '@types/pg@8.11.14':
+ resolution: {integrity: sha512-qyD11E5R3u0eJmd1lB0WnWKXJGA7s015nyARWljfz5DcX83TKAIlY+QrmvzQTsbIe+hkiFtkyL2gHC6qwF6Fbg==}
'@types/pg@8.6.1':
resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==}
@@ -4688,6 +4435,12 @@ packages:
'@types/statuses@2.0.4':
resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==}
+ '@types/superagent@8.1.9':
+ resolution: {integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==}
+
+ '@types/supertest@6.0.3':
+ resolution: {integrity: sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==}
+
'@types/tedious@4.0.14':
resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==}
@@ -4733,145 +4486,51 @@ packages:
'@types/yauzl@2.10.0':
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
- '@typescript-eslint/eslint-plugin@8.27.0':
- resolution: {integrity: sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/eslint-plugin@8.29.0':
- resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/eslint-plugin@8.29.1':
- resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==}
+ '@typescript-eslint/eslint-plugin@8.31.0':
+ resolution: {integrity: sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/parser@8.27.0':
- resolution: {integrity: sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==}
+ '@typescript-eslint/parser@8.31.0':
+ resolution: {integrity: sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/parser@8.29.0':
- resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==}
+ '@typescript-eslint/scope-manager@8.31.0':
+ resolution: {integrity: sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/parser@8.29.1':
- resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==}
+ '@typescript-eslint/type-utils@8.31.0':
+ resolution: {integrity: sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/scope-manager@8.27.0':
- resolution: {integrity: sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/scope-manager@8.29.0':
- resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/scope-manager@8.29.1':
- resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==}
+ '@typescript-eslint/types@8.31.0':
+ resolution: {integrity: sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@8.27.0':
- resolution: {integrity: sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==}
+ '@typescript-eslint/typescript-estree@8.31.0':
+ resolution: {integrity: sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/type-utils@8.29.0':
- resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==}
+ '@typescript-eslint/utils@8.31.0':
+ resolution: {integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/type-utils@8.29.1':
- resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/types@8.27.0':
- resolution: {integrity: sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/types@8.29.0':
- resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/types@8.29.1':
- resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/typescript-estree@8.27.0':
- resolution: {integrity: sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/typescript-estree@8.29.0':
- resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/typescript-estree@8.29.1':
- resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/utils@8.27.0':
- resolution: {integrity: sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/utils@8.29.0':
- resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/utils@8.29.1':
- resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
-
- '@typescript-eslint/visitor-keys@8.27.0':
- resolution: {integrity: sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/visitor-keys@8.29.0':
- resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/visitor-keys@8.29.1':
- resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==}
+ '@typescript-eslint/visitor-keys@8.31.0':
+ resolution: {integrity: sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.2.0':
@@ -4884,11 +4543,11 @@ packages:
vite: ^5.0.0 || ^6.0.0
vue: ^3.2.25
- '@vitest/coverage-v8@3.1.1':
- resolution: {integrity: sha512-MgV6D2dhpD6Hp/uroUoAIvFqA8AuvXEFBC2eepG3WFc1pxTfdk1LEqqkWoWhjz+rytoqrnUUCdf6Lzco3iHkLQ==}
+ '@vitest/coverage-v8@3.1.2':
+ resolution: {integrity: sha512-XDdaDOeaTMAMYW7N63AqoK32sYUWbXnTkC6tEbVcu3RlU1bB9of32T+PGf8KZvxqLNqeXhafDFqCkwpf2+dyaQ==}
peerDependencies:
- '@vitest/browser': 3.1.1
- vitest: 3.1.1
+ '@vitest/browser': 3.1.2
+ vitest: 3.1.2
peerDependenciesMeta:
'@vitest/browser':
optional: true
@@ -4896,11 +4555,11 @@ packages:
'@vitest/expect@2.0.5':
resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==}
- '@vitest/expect@3.1.1':
- resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==}
+ '@vitest/expect@3.1.2':
+ resolution: {integrity: sha512-O8hJgr+zREopCAqWl3uCVaOdqJwZ9qaDwUP7vy3Xigad0phZe9APxKhPcDNqYYi0rX5oMvwJMSCAXY2afqeTSA==}
- '@vitest/mocker@3.1.1':
- resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==}
+ '@vitest/mocker@3.1.2':
+ resolution: {integrity: sha512-kOtd6K2lc7SQ0mBqYv/wdGedlqPdM/B38paPY+OwJ1XiNi44w3Fpog82UfOibmHaV9Wod18A09I9SCKLyDMqgw==}
peerDependencies:
msw: ^2.4.9
vite: ^5.0.0 || ^6.0.0
@@ -4916,23 +4575,20 @@ packages:
'@vitest/pretty-format@2.1.2':
resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==}
- '@vitest/pretty-format@3.1.1':
- resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==}
-
'@vitest/pretty-format@3.1.2':
resolution: {integrity: sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==}
- '@vitest/runner@3.1.1':
- resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==}
+ '@vitest/runner@3.1.2':
+ resolution: {integrity: sha512-bhLib9l4xb4sUMPXnThbnhX2Yi8OutBMA8Yahxa7yavQsFDtwY/jrUZwpKp2XH9DhRFJIeytlyGpXCqZ65nR+g==}
- '@vitest/snapshot@3.1.1':
- resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==}
+ '@vitest/snapshot@3.1.2':
+ resolution: {integrity: sha512-Q1qkpazSF/p4ApZg1vfZSQ5Yw6OCQxVMVrLjslbLFA1hMDrT2uxtqMaw8Tc/jy5DLka1sNs1Y7rBcftMiaSH/Q==}
'@vitest/spy@2.0.5':
resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==}
- '@vitest/spy@3.1.1':
- resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==}
+ '@vitest/spy@3.1.2':
+ resolution: {integrity: sha512-OEc5fSXMws6sHVe4kOFyDSj/+4MSwst0ib4un0DlcYgQvRuYQ0+M2HyqGaauUMnjq87tmUaMNDxKQx7wNfVqPA==}
'@vitest/utils@2.0.5':
resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
@@ -4940,8 +4596,8 @@ packages:
'@vitest/utils@2.1.2':
resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==}
- '@vitest/utils@3.1.1':
- resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==}
+ '@vitest/utils@3.1.2':
+ resolution: {integrity: sha512-5GGd0ytZ7BH3H6JTj9Kw7Prn1Nbg0wZVrIvou+UWxm54d+WoXXgAgjFJ8wn3LdagWLFSEfpPeyYrByZaGEZHLg==}
'@volar/language-core@2.2.0':
resolution: {integrity: sha512-a8WG9+4OdeNDW4ywABZIM6S6UN7em8uIlM/BZ2pWQUYrVmX+m8sj/X+QadvO+Li/t/LjAqbWJQtVgxdpEWLALQ==}
@@ -4961,15 +4617,9 @@ packages:
'@volar/typescript@2.4.12':
resolution: {integrity: sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==}
- '@vue/compiler-core@3.5.12':
- resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==}
-
'@vue/compiler-core@3.5.13':
resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
- '@vue/compiler-dom@3.5.12':
- resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==}
-
'@vue/compiler-dom@3.5.13':
resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
@@ -4990,8 +4640,8 @@ packages:
typescript:
optional: true
- '@vue/language-core@2.2.8':
- resolution: {integrity: sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==}
+ '@vue/language-core@2.2.10':
+ resolution: {integrity: sha512-+yNoYx6XIKuAO8Mqh1vGytu8jkFEOH5C8iOv3i8Z/65A7x9iAOXA97Q+PqZ3nlm2lxf5rOJuIGI/wDtx/riNYw==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -5012,9 +4662,6 @@ packages:
peerDependencies:
vue: 3.5.13
- '@vue/shared@3.5.12':
- resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==}
-
'@vue/shared@3.5.13':
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
@@ -5173,9 +4820,6 @@ packages:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
- ansi-sequence-parser@1.1.1:
- resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==}
-
ansi-styles@3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
@@ -5506,8 +5150,8 @@ packages:
resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==}
engines: {node: '>=6.14.2'}
- bullmq@5.48.1:
- resolution: {integrity: sha512-WA/NlPwmxgbDsL8KGIkQvGlRkBdVAyRiypP+Witm6Tyd2PwnBQ8K62ifnlA16rF59vpnEKwO+rmh/ZM7gKmDqg==}
+ bullmq@5.51.1:
+ resolution: {integrity: sha512-JEZokH5Sb6p66HRjbfQjPNYuSilDRcB8UREmJzOBqTTaJFza8I92vsBF3J/zmtzd7KVv3dxhZyH9CYSLOJALRA==}
buraha@0.0.1:
resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==}
@@ -5555,6 +5199,10 @@ packages:
resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
engines: {node: '>= 0.4'}
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
call-me-maybe@1.0.2:
resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
@@ -5643,8 +5291,8 @@ packages:
character-parser@2.2.0:
resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==}
- chart.js@4.4.8:
- resolution: {integrity: sha512-IkGZlVpXP+83QpMm4uxEiGqSI7jFizwVtF3+n5Pc3k7sMO+tkd0qxh2OzLhenM0K80xtmAONWGBn082EiBQSDA==}
+ chart.js@4.4.9:
+ resolution: {integrity: sha512-EyZ9wWKgpAU0fLJ43YAEIF8sr5F2W3LqbS40ZJyHIner2lY14ufqv2VMp69MAiZ2rpwxEUxEhIH/0U3xyRynxg==}
engines: {pnpm: '>=8'}
chartjs-adapter-date-fns@3.0.0:
@@ -5698,8 +5346,8 @@ packages:
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
engines: {node: '>=18'}
- chromatic@11.28.0:
- resolution: {integrity: sha512-Xy3907MXY5UP7LoMksmsT02xCUsoLZpcC6sRITjd+KiXBteOxPF7J+QsFqy/VzQCEN6fpt/R2bOIpE+PwPfcZA==}
+ chromatic@11.28.2:
+ resolution: {integrity: sha512-aCmUPcZUs4/p9zRZdMreOoO/5JqO2DiJC3md1/vRx8dlMRcmR/YI5ZbgXZcai2absVR+6hsXZ5XiPxV2sboTuQ==}
hasBin: true
peerDependencies:
'@chromatic-com/cypress': ^0.*.* || ^1.0.0
@@ -5738,8 +5386,8 @@ packages:
engines: {node: '>=8.0.0', npm: '>=5.0.0'}
hasBin: true
- cli-table3@0.6.3:
- resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==}
+ cli-table3@0.6.5:
+ resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==}
engines: {node: 10.* || >= 12.*}
cli-truncate@2.1.0:
@@ -5838,6 +5486,9 @@ packages:
compare-versions@6.1.1:
resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==}
+ component-emitter@1.3.1:
+ resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
+
compress-commons@6.0.2:
resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==}
engines: {node: '>= 14'}
@@ -5892,6 +5543,9 @@ packages:
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
engines: {node: '>=18'}
+ cookiejar@2.1.4:
+ resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==}
+
core-util-is@1.0.2:
resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
@@ -6000,9 +5654,9 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- cypress@13.15.2:
- resolution: {integrity: sha512-ARbnUorjcCM3XiPwgHKuqsyr5W9Qn+pIIBPaoilnoBkLdSC2oLQjV1BUpnmc7KR+b7Avah3Ly2RMFnfxr96E/A==}
- engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0}
+ cypress@14.3.2:
+ resolution: {integrity: sha512-n+yGD2ZFFKgy7I3YtVpZ7BcFYrrDMcKj713eOZdtxPttpBjCyw/R8dLlFSsJPouneGN7A/HOSRyPJ5+3/gKDoA==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
dashdash@1.14.1:
@@ -6105,8 +5759,8 @@ packages:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
engines: {node: '>=0.10.0'}
- decimal.js@10.4.3:
- resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+ decimal.js@10.5.0:
+ resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
decode-bmp@0.2.1:
resolution: {integrity: sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==}
@@ -6212,6 +5866,9 @@ packages:
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+ dezalgo@1.0.4:
+ resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
+
diff-match-patch@1.0.5:
resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==}
@@ -6318,9 +5975,6 @@ packages:
resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
engines: {node: '>=12'}
- emoji-regex-xs@1.0.0:
- resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
-
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -6355,6 +6009,10 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
+ entities@6.0.0:
+ resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==}
+ engines: {node: '>=0.12'}
+
env-paths@2.2.1:
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
engines: {node: '>=6'}
@@ -6418,13 +6076,8 @@ packages:
peerDependencies:
esbuild: '>=0.12 <1'
- esbuild@0.25.0:
- resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==}
- engines: {node: '>=18'}
- hasBin: true
-
- esbuild@0.25.2:
- resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==}
+ esbuild@0.25.3:
+ resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==}
engines: {node: '>=18'}
hasBin: true
@@ -6528,18 +6181,8 @@ packages:
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@9.22.0:
- resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- hasBin: true
- peerDependencies:
- jiti: '*'
- peerDependenciesMeta:
- jiti:
- optional: true
-
- eslint@9.23.0:
- resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==}
+ eslint@9.25.1:
+ resolution: {integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
@@ -6635,8 +6278,8 @@ packages:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
- expect-type@1.2.0:
- resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==}
+ expect-type@1.2.1:
+ resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==}
engines: {node: '>=12.0.0'}
expect@29.7.0:
@@ -6764,6 +6407,9 @@ packages:
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
engines: {node: ^12.20 || >= 14.13}
+ fflate@0.8.2:
+ resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
+
figures@3.2.0:
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
engines: {node: '>=8'}
@@ -6780,6 +6426,10 @@ packages:
resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==}
engines: {node: '>=18'}
+ file-type@20.4.1:
+ resolution: {integrity: sha512-hw9gNZXUfZ02Jo0uafWLaFVPter5/k2rfcrjFJJHX/77xtSDOfJuEFb6oKlFV86FLP1SuyHMW1PSk0U9M5tKkQ==}
+ engines: {node: '>=18'}
+
filename-reserved-regex@3.0.0:
resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -6866,10 +6516,6 @@ packages:
resolution: {integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==}
engines: {node: '>= 18'}
- form-data@4.0.0:
- resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
- engines: {node: '>= 6'}
-
form-data@4.0.2:
resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
engines: {node: '>= 6'}
@@ -6878,6 +6524,10 @@ packages:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
+ formidable@3.5.4:
+ resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==}
+ engines: {node: '>=14.0.0'}
+
forwarded-parse@2.1.2:
resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==}
@@ -7000,11 +6650,6 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
- glob@10.3.10:
- resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
- engines: {node: '>=16 || 14 >=14.17'}
- hasBin: true
-
glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
@@ -7019,6 +6664,11 @@ packages:
engines: {node: 20 || >=22}
hasBin: true
+ glob@11.0.2:
+ resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==}
+ engines: {node: 20 || >=22}
+ hasBin: true
+
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
@@ -7237,10 +6887,6 @@ packages:
resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==}
engines: {node: '>= 14'}
- https-proxy-agent@7.0.5:
- resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
- engines: {node: '>= 14'}
-
https-proxy-agent@7.0.6:
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
engines: {node: '>= 14'}
@@ -7360,8 +7006,8 @@ packages:
intersection-observer@0.12.2:
resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==}
- ioredis@5.6.0:
- resolution: {integrity: sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==}
+ ioredis@5.6.1:
+ resolution: {integrity: sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==}
engines: {node: '>=12.22.0'}
ip-address@9.0.5:
@@ -7630,10 +7276,6 @@ packages:
resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==}
engines: {node: '>=6'}
- jackspeak@2.3.6:
- resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
- engines: {node: '>=14'}
-
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
@@ -7818,8 +7460,8 @@ packages:
resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
engines: {node: '>=12.0.0'}
- jsdom@26.0.0:
- resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==}
+ jsdom@26.1.0:
+ resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==}
engines: {node: '>=18'}
peerDependencies:
canvas: ^3.0.0
@@ -7977,6 +7619,10 @@ packages:
enquirer:
optional: true
+ load-esm@1.0.2:
+ resolution: {integrity: sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==}
+ engines: {node: '>=13.2.0'}
+
locate-path@5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@@ -8050,9 +7696,6 @@ packages:
resolution: {integrity: sha512-E9FF6+Oc/uFLqZCuZwRKUzgFt5Raih6LfxknOSAVTjNkrCZkBf7DQCwJxZQgd9l4eHjIJDGR+E+1QKD1RhThPw==}
engines: {node: '>=16.14'}
- lunr@2.3.9:
- resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==}
-
luxon@3.3.0:
resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==}
engines: {node: '>=12'}
@@ -8105,11 +7748,6 @@ packages:
markdown-table@3.0.3:
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
- marked@4.3.0:
- resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==}
- engines: {node: '>= 12'}
- hasBin: true
-
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
@@ -8163,8 +7801,8 @@ packages:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
- meilisearch@0.49.0:
- resolution: {integrity: sha512-oMJ/e6Or6cz2+owcEKeB11p2OWiWW9NmssqOZC/KIwQB0sBGKLJ7RCpYzf+GhUIZIZ9FRYZ419ox3RGebVQX5g==}
+ meilisearch@0.50.0:
+ resolution: {integrity: sha512-9IzIkobvnuS18Eg4dq/eJB9W+eXqeLZjNRgq/kKMswSmVYYSQsXqGgSuCA0JkF+o5RwJlwIsieQee6rh313VhA==}
memoizerific@1.11.3:
resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==}
@@ -8452,8 +8090,8 @@ packages:
peerDependencies:
msw: ^2.0.0
- msw@2.7.3:
- resolution: {integrity: sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==}
+ msw@2.7.5:
+ resolution: {integrity: sha512-00MyTlY3TJutBa5kiU+jWiz2z5pNJDYHn2TgPkGkh92kMmNH43RqvMXd8y/7HxNn8RjzUbvZWYZjcS36fdb6sw==}
engines: {node: '>=18'}
hasBin: true
peerDependencies:
@@ -8579,17 +8217,17 @@ packages:
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
- nodemailer@6.10.0:
- resolution: {integrity: sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==}
+ nodemailer@6.10.1:
+ resolution: {integrity: sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==}
engines: {node: '>=6.0.0'}
- nodemon@3.1.7:
- resolution: {integrity: sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==}
+ nodemon@3.1.10:
+ resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==}
engines: {node: '>=10'}
hasBin: true
- nodemon@3.1.9:
- resolution: {integrity: sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==}
+ nodemon@3.1.7:
+ resolution: {integrity: sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==}
engines: {node: '>=10'}
hasBin: true
@@ -8655,9 +8293,6 @@ packages:
resolution: {integrity: sha512-j4XtFDQUBsvUHPjUmvmNDUDMYed2MphMIJBhyxVVe8hGCjkuYnjIsW+D9qk8c5ciXRdnk6x6tEbiO6PLeOZdCQ==}
engines: {node: '>= 0.4.0'}
- oauth@0.10.0:
- resolution: {integrity: sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q==}
-
oauth@0.10.2:
resolution: {integrity: sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==}
@@ -8676,6 +8311,10 @@ packages:
resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
engines: {node: '>= 0.4'}
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
object-is@1.1.5:
resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
engines: {node: '>= 0.4'}
@@ -8732,11 +8371,11 @@ packages:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
- oniguruma-parser@0.5.4:
- resolution: {integrity: sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==}
+ oniguruma-parser@0.12.0:
+ resolution: {integrity: sha512-fD9o5ebCmEAA9dLysajdQvuKzLL7cj+w7DQjuO3Cb6IwafENfx6iL+RGkmyW82pVRsvgzixsWinHvgxTMJvdIA==}
- oniguruma-to-es@4.1.0:
- resolution: {integrity: sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==}
+ oniguruma-to-es@4.3.1:
+ resolution: {integrity: sha512-VtX1kepWO+7HG7IWV5v72JhiqofK7XsiHmtgnvurnNOTdIvE5mrdWYtsOrQyrXCv1L2Ckm08hywp+MFO7rC4Ug==}
open@8.4.2:
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
@@ -8845,8 +8484,8 @@ packages:
parse5@6.0.1:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
- parse5@7.2.1:
- resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
+ parse5@7.3.0:
+ resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
parseurl@1.3.3:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
@@ -8874,10 +8513,6 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- path-scurry@1.10.1:
- resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
- engines: {node: '>=16 || 14 >=14.17'}
-
path-scurry@1.11.1:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
@@ -8917,17 +8552,21 @@ packages:
resolution: {integrity: sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==}
engines: {node: '>=14.16'}
+ peek-readable@7.0.0:
+ resolution: {integrity: sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==}
+ engines: {node: '>=18'}
+
pend@1.2.0:
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
performance-now@2.1.0:
resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
- pg-cloudflare@1.1.1:
- resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==}
+ pg-cloudflare@1.2.5:
+ resolution: {integrity: sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==}
- pg-connection-string@2.7.0:
- resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==}
+ pg-connection-string@2.8.5:
+ resolution: {integrity: sha512-Ni8FuZ8yAF+sWZzojvtLE2b03cqjO5jNULcHFfM9ZZ0/JXrgom5pBREbtnAw7oxsxJqHw9Nz/XWORUEL3/IFow==}
pg-int8@1.0.1:
resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
@@ -8937,17 +8576,17 @@ packages:
resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==}
engines: {node: '>=4'}
- pg-pool@3.8.0:
- resolution: {integrity: sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==}
+ pg-pool@3.9.6:
+ resolution: {integrity: sha512-rFen0G7adh1YmgvrmE5IPIqbb+IgEzENUm+tzm6MLLDSlPRoZVhzU1WdML9PV2W5GOdRA9qBKURlbt1OsXOsPw==}
peerDependencies:
pg: '>=8.0'
- pg-protocol@1.7.0:
- resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==}
-
pg-protocol@1.8.0:
resolution: {integrity: sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==}
+ pg-protocol@1.9.5:
+ resolution: {integrity: sha512-DYTWtWpfd5FOro3UnAfwvhD8jh59r2ig8bPtc9H8Ds7MscE/9NYruUQWFAOuraRl29jwcT2kyMFQ3MxeaVjUhg==}
+
pg-types@2.2.0:
resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
engines: {node: '>=4'}
@@ -8956,8 +8595,8 @@ packages:
resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==}
engines: {node: '>=10'}
- pg@8.14.1:
- resolution: {integrity: sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==}
+ pg@8.15.6:
+ resolution: {integrity: sha512-yvao7YI3GdmmrslNVsZgx9PfntfWrnXwtR+K/DjI0I/sTKif4Z623um+sjVZ1hk5670B+ODjvHDAckKdjmPTsg==}
engines: {node: '>= 8.0.0'}
peerDependencies:
pg-native: '>=3.0.1'
@@ -9027,8 +8666,8 @@ packages:
resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
engines: {node: '>=10.13.0'}
- pnpm@10.6.1:
- resolution: {integrity: sha512-QO4Jr0B/qfu1+/uOHLQPu3TArww+EOkiTXtTx2WFKGFbLJJFDnTPrZHjotyv485AUNgL2nHXV3VtLOK2YhPpow==}
+ pnpm@10.10.0:
+ resolution: {integrity: sha512-1hXbJG/nDyXc/qbY1z3ueCziPiJF48T2+Igkn7VoFJMYY33Kc8LFyO8qTKDVZX+5VnGIv6tH9WbR7mzph4FcOQ==}
engines: {node: '>=18.12'}
hasBin: true
@@ -9265,11 +8904,6 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prettier@3.3.3:
- resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
- engines: {node: '>=14'}
- hasBin: true
-
prettier@3.5.3:
resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
engines: {node: '>=14'}
@@ -9439,6 +9073,10 @@ packages:
resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
engines: {node: '>=0.6'}
+ qs@6.14.0:
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
+
querystringify@2.2.0:
resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
@@ -9681,8 +9319,8 @@ packages:
resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
hasBin: true
- rollup@4.39.0:
- resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==}
+ rollup@4.40.0:
+ resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -9722,11 +9360,11 @@ packages:
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- sanitize-html@2.15.0:
- resolution: {integrity: sha512-wIjst57vJGpLyBP8ioUbg6ThwJie5SuSIjHxJg53v5Fg+kUK+AXlb7bK3RNXpp315MvwM+0OBGCV6h5pPHsVhA==}
+ sanitize-html@2.16.0:
+ resolution: {integrity: sha512-0s4caLuHHaZFVxFTG74oW91+j6vW7gKbGD6CD2+miP73CE6z6YtOBN0ArtLd2UGyi4IC7K47v3ENUbQX4jV3Mg==}
- sass@1.86.3:
- resolution: {integrity: sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==}
+ sass@1.87.0:
+ resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -9824,10 +9462,6 @@ packages:
resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==}
hasBin: true
- sharp@0.33.5:
- resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
-
sharp@0.34.1:
resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -9840,15 +9474,24 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- shiki@0.14.7:
- resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==}
-
- shiki@3.2.2:
- resolution: {integrity: sha512-0qWBkM2t/0NXPRcVgtLhtHv6Ak3Q5yI4K/ggMqcgLRKm4+pCs3namgZlhlat/7u2CuqNtlShNs9lENOG6n7UaQ==}
+ shiki@3.3.0:
+ resolution: {integrity: sha512-j0Z1tG5vlOFGW8JVj0Cpuatzvshes7VJy5ncDmmMaYcmnGW0Js1N81TOW98ivTFNZfKRn9uwEg/aIm638o368g==}
shimmer@1.2.1:
resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
@@ -9856,6 +9499,10 @@ packages:
resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
engines: {node: '>= 0.4'}
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -10084,11 +9731,6 @@ packages:
standard-as-callback@2.1.0:
resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
- start-server-and-test@2.0.10:
- resolution: {integrity: sha512-nZphcfcqGqwk74lbZkqSwClkYz+M5ZPGOMgWxNVJrdztPKN96qe6HooRu6L3TpwITn0lKJJdKACqHbJtqythOQ==}
- engines: {node: '>=16'}
- hasBin: true
-
start-server-and-test@2.0.11:
resolution: {integrity: sha512-TN39gLzPhHAflxyOkE/oMfQGj+pj3JgF6qVicFH/JrXt7xXktidKXwqfRga+ve7lVA8+RgPZVc25VrEPRScaDw==}
engines: {node: '>=16'}
@@ -10098,8 +9740,8 @@ packages:
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
engines: {node: '>= 0.8'}
- std-env@3.8.1:
- resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==}
+ std-env@3.9.0:
+ resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
stop-iteration-iterator@1.0.0:
resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
@@ -10244,6 +9886,10 @@ packages:
strnum@1.0.5:
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ strtok3@10.2.2:
+ resolution: {integrity: sha512-Xt18+h4s7Z8xyZ0tmBoRmzxcop97R4BAh+dXouUDCYn+Em+1P3qpkUfI5ueWLT8ynC5hZ+q4iPEmGG1urvQGBg==}
+ engines: {node: '>=18'}
+
strtok3@9.0.1:
resolution: {integrity: sha512-ERPW+XkvX9W2A+ov07iy+ZFJpVdik04GhDA4eVogiG9hpC97Kem2iucyzhFxbFRvQ5o2UckFtKZdp1hkGvnrEw==}
engines: {node: '>=16'}
@@ -10254,6 +9900,14 @@ packages:
peerDependencies:
postcss: ^8.4.31
+ superagent@9.0.2:
+ resolution: {integrity: sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==}
+ engines: {node: '>=14.18.0'}
+
+ supertest@7.1.0:
+ resolution: {integrity: sha512-5QeSO8hSrKghtcWEoPiO036fxH0Ii2wVQfFZSP0oqQhmjk8bOLhDFXr4JrvaFmPuEWUoq4znY3uSi8UzLKxGqw==}
+ engines: {node: '>=14.18.0'}
+
supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -10346,8 +10000,8 @@ packages:
thread-stream@3.1.0:
resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
- three@0.175.0:
- resolution: {integrity: sha512-nNE3pnTHxXN/Phw768u0Grr7W4+rumGg/H6PgeseNJojkJtmeHJfZWi41Gp2mpXl1pg1pf1zjwR4McM1jTqkpg==}
+ three@0.176.0:
+ resolution: {integrity: sha512-PWRKYWQo23ojf9oZSlRGH8K09q7nRSWx6LY/HF/UUrMdYgN9i1e2OwJYHoQjwc6HF/4lvvYLC5YC1X8UJL2ZpA==}
throttle-debounce@5.0.2:
resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==}
@@ -10443,6 +10097,10 @@ packages:
resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==}
engines: {node: '>=16'}
+ tough-cookie@5.1.2:
+ resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==}
+ engines: {node: '>=16'}
+
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
@@ -10513,8 +10171,8 @@ packages:
resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
engines: {node: '>=6'}
- tsd@0.31.2:
- resolution: {integrity: sha512-VplBAQwvYrHzVihtzXiUVXu5bGcr7uH1juQZ1lmKgkuGNGT+FechUCqmx9/zk7wibcqR2xaNEwCkDyKh+VVZnQ==}
+ tsd@0.32.0:
+ resolution: {integrity: sha512-R5lBZCbxGBowOcW0gpQaiIjGYrG5NmU+PfFDKcc3zbtzWjML1o/zAwzdDnS2ZheSlPu9GW51azpFqEPUBq9DoQ==}
engines: {node: '>=14.16'}
hasBin: true
@@ -10593,13 +10251,6 @@ packages:
typedarray@0.0.6:
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
- typedoc@0.25.13:
- resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==}
- engines: {node: '>= 16'}
- hasBin: true
- peerDependencies:
- typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x
-
typeorm@0.3.22:
resolution: {integrity: sha512-P/Tsz3UpJ9+K0oryC0twK5PO27zejLYYwMsE8SISfZc1lVHX+ajigiOyWsKbuXpEFMjD9z7UjLzY3+ElVOMMDA==}
engines: {node: '>=16.13.0'}
@@ -10659,11 +10310,6 @@ packages:
typeorm-aurora-data-api-driver:
optional: true
- typescript@5.1.6:
- resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==}
- engines: {node: '>=14.17'}
- hasBin: true
-
typescript@5.8.2:
resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
engines: {node: '>=14.17'}
@@ -10698,9 +10344,6 @@ packages:
undefsafe@2.0.5:
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
- undici-types@6.20.0:
- resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
-
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
@@ -10850,16 +10493,16 @@ packages:
vfile@6.0.1:
resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
- vite-node@3.1.1:
- resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==}
+ vite-node@3.1.2:
+ resolution: {integrity: sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
vite-plugin-turbosnap@1.0.3:
resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==}
- vite@6.3.1:
- resolution: {integrity: sha512-kkzzkqtMESYklo96HKKPE5KKLkC1amlsqt+RjFMlX2AvbRB/0wghap19NdBxxwGZ+h/C6DLCrcEphPIItlGrRQ==}
+ vite@6.3.3:
+ resolution: {integrity: sha512-5nXH+QsELbFKhsEfWLkHrvgRpTdGJzqOZ+utSdmPTvwHmvU6ITTm3xx+mRusihkcI8GeC7lCDyn3kDtiki9scw==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
@@ -10904,16 +10547,16 @@ packages:
peerDependencies:
vitest: '>=2.0.0'
- vitest@3.1.1:
- resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==}
+ vitest@3.1.2:
+ resolution: {integrity: sha512-WaxpJe092ID1C0mr+LH9MmNrhfzi8I65EX/NRU/Ld016KqQNRgxSOlGNP1hHN+a/F8L15Mh8klwaF77zR3GeDQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@types/debug': ^4.1.12
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
- '@vitest/browser': 3.1.1
- '@vitest/ui': 3.1.1
+ '@vitest/browser': 3.1.2
+ '@vitest/ui': 3.1.2
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
@@ -10957,12 +10600,6 @@ packages:
resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==}
hasBin: true
- vscode-oniguruma@1.7.0:
- resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==}
-
- vscode-textmate@8.0.0:
- resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==}
-
vscode-uri@3.0.8:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
@@ -10983,9 +10620,6 @@ packages:
vue-component-type-helpers@2.2.10:
resolution: {integrity: sha512-iDUO7uQK+Sab2tYuiP9D1oLujCWlhHELHMgV/cB13cuGbG4qwkLHvtfWb6FzvxrIOPDnU0oHsz2MlQjhYDeaHA==}
- vue-component-type-helpers@2.2.8:
- resolution: {integrity: sha512-4bjIsC284coDO9om4HPA62M7wfsTvcmZyzdfR0aUlFXqq4tXxM1APyXpNVxPC8QazKw9OhmZNHBVDA6ODaZsrA==}
-
vue-demi@0.14.7:
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
engines: {node: '>=12'}
@@ -11016,8 +10650,8 @@ packages:
vue-template-compiler@2.7.14:
resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
- vue-tsc@2.2.8:
- resolution: {integrity: sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==}
+ vue-tsc@2.2.10:
+ resolution: {integrity: sha512-jWZ1xSaNbabEV3whpIDMbjVSVawjAyW+x1n3JeGQo7S0uv2n9F/JMgWW90tGWNFRKya4YwKMZgCtr0vRAM7DeQ==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
@@ -11039,11 +10673,6 @@ packages:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
- wait-on@8.0.2:
- resolution: {integrity: sha512-qHlU6AawrgAIHlueGQHQ+ETcPLAauXbnoTKl3RKq20W0T8x0DKVAo5xWIYjHSyvHxQlcYbFdR0jp4T9bDVITFA==}
- engines: {node: '>=12.0.0'}
- hasBin: true
-
wait-on@8.0.3:
resolution: {integrity: sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==}
engines: {node: '>=12.0.0'}
@@ -11369,29 +10998,29 @@ snapshots:
'@smithy/util-utf8': 2.0.0
tslib: 2.8.1
- '@aws-sdk/client-s3@3.782.0':
+ '@aws-sdk/client-s3@3.797.0':
dependencies:
'@aws-crypto/sha1-browser': 5.2.0
'@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0
- '@aws-sdk/core': 3.775.0
- '@aws-sdk/credential-provider-node': 3.782.0
+ '@aws-sdk/core': 3.796.0
+ '@aws-sdk/credential-provider-node': 3.797.0
'@aws-sdk/middleware-bucket-endpoint': 3.775.0
'@aws-sdk/middleware-expect-continue': 3.775.0
- '@aws-sdk/middleware-flexible-checksums': 3.775.0
+ '@aws-sdk/middleware-flexible-checksums': 3.796.0
'@aws-sdk/middleware-host-header': 3.775.0
'@aws-sdk/middleware-location-constraint': 3.775.0
'@aws-sdk/middleware-logger': 3.775.0
'@aws-sdk/middleware-recursion-detection': 3.775.0
- '@aws-sdk/middleware-sdk-s3': 3.775.0
+ '@aws-sdk/middleware-sdk-s3': 3.796.0
'@aws-sdk/middleware-ssec': 3.775.0
- '@aws-sdk/middleware-user-agent': 3.782.0
+ '@aws-sdk/middleware-user-agent': 3.796.0
'@aws-sdk/region-config-resolver': 3.775.0
- '@aws-sdk/signature-v4-multi-region': 3.775.0
+ '@aws-sdk/signature-v4-multi-region': 3.796.0
'@aws-sdk/types': 3.775.0
- '@aws-sdk/util-endpoints': 3.782.0
+ '@aws-sdk/util-endpoints': 3.787.0
'@aws-sdk/util-user-agent-browser': 3.775.0
- '@aws-sdk/util-user-agent-node': 3.782.0
+ '@aws-sdk/util-user-agent-node': 3.796.0
'@aws-sdk/xml-builder': 3.775.0
'@smithy/config-resolver': 4.1.0
'@smithy/core': 3.2.0
@@ -11430,20 +11059,20 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/client-sso@3.782.0':
+ '@aws-sdk/client-sso@3.797.0':
dependencies:
'@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0
- '@aws-sdk/core': 3.775.0
+ '@aws-sdk/core': 3.796.0
'@aws-sdk/middleware-host-header': 3.775.0
'@aws-sdk/middleware-logger': 3.775.0
'@aws-sdk/middleware-recursion-detection': 3.775.0
- '@aws-sdk/middleware-user-agent': 3.782.0
+ '@aws-sdk/middleware-user-agent': 3.796.0
'@aws-sdk/region-config-resolver': 3.775.0
'@aws-sdk/types': 3.775.0
- '@aws-sdk/util-endpoints': 3.782.0
+ '@aws-sdk/util-endpoints': 3.787.0
'@aws-sdk/util-user-agent-browser': 3.775.0
- '@aws-sdk/util-user-agent-node': 3.782.0
+ '@aws-sdk/util-user-agent-node': 3.796.0
'@smithy/config-resolver': 4.1.0
'@smithy/core': 3.2.0
'@smithy/fetch-http-handler': 5.0.2
@@ -11473,31 +11102,31 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/core@3.775.0':
+ '@aws-sdk/core@3.796.0':
dependencies:
'@aws-sdk/types': 3.775.0
'@smithy/core': 3.2.0
'@smithy/node-config-provider': 4.0.2
'@smithy/property-provider': 4.0.2
'@smithy/protocol-http': 5.1.0
- '@smithy/signature-v4': 5.0.2
+ '@smithy/signature-v4': 5.1.0
'@smithy/smithy-client': 4.2.0
'@smithy/types': 4.2.0
'@smithy/util-middleware': 4.0.2
fast-xml-parser: 4.4.1
tslib: 2.8.1
- '@aws-sdk/credential-provider-env@3.775.0':
+ '@aws-sdk/credential-provider-env@3.796.0':
dependencies:
- '@aws-sdk/core': 3.775.0
+ '@aws-sdk/core': 3.796.0
'@aws-sdk/types': 3.775.0
'@smithy/property-provider': 4.0.2
'@smithy/types': 4.2.0
tslib: 2.8.1
- '@aws-sdk/credential-provider-http@3.775.0':
+ '@aws-sdk/credential-provider-http@3.796.0':
dependencies:
- '@aws-sdk/core': 3.775.0
+ '@aws-sdk/core': 3.796.0
'@aws-sdk/types': 3.775.0
'@smithy/fetch-http-handler': 5.0.2
'@smithy/node-http-handler': 4.0.4
@@ -11508,15 +11137,15 @@ snapshots:
'@smithy/util-stream': 4.2.0
tslib: 2.8.1
- '@aws-sdk/credential-provider-ini@3.782.0':
+ '@aws-sdk/credential-provider-ini@3.797.0':
dependencies:
- '@aws-sdk/core': 3.775.0
- '@aws-sdk/credential-provider-env': 3.775.0
- '@aws-sdk/credential-provider-http': 3.775.0
- '@aws-sdk/credential-provider-process': 3.775.0
- '@aws-sdk/credential-provider-sso': 3.782.0
- '@aws-sdk/credential-provider-web-identity': 3.782.0
- '@aws-sdk/nested-clients': 3.782.0
+ '@aws-sdk/core': 3.796.0
+ '@aws-sdk/credential-provider-env': 3.796.0
+ '@aws-sdk/credential-provider-http': 3.796.0
+ '@aws-sdk/credential-provider-process': 3.796.0
+ '@aws-sdk/credential-provider-sso': 3.797.0
+ '@aws-sdk/credential-provider-web-identity': 3.797.0
+ '@aws-sdk/nested-clients': 3.797.0
'@aws-sdk/types': 3.775.0
'@smithy/credential-provider-imds': 4.0.2
'@smithy/property-provider': 4.0.2
@@ -11526,14 +11155,14 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/credential-provider-node@3.782.0':
+ '@aws-sdk/credential-provider-node@3.797.0':
dependencies:
- '@aws-sdk/credential-provider-env': 3.775.0
- '@aws-sdk/credential-provider-http': 3.775.0
- '@aws-sdk/credential-provider-ini': 3.782.0
- '@aws-sdk/credential-provider-process': 3.775.0
- '@aws-sdk/credential-provider-sso': 3.782.0
- '@aws-sdk/credential-provider-web-identity': 3.782.0
+ '@aws-sdk/credential-provider-env': 3.796.0
+ '@aws-sdk/credential-provider-http': 3.796.0
+ '@aws-sdk/credential-provider-ini': 3.797.0
+ '@aws-sdk/credential-provider-process': 3.796.0
+ '@aws-sdk/credential-provider-sso': 3.797.0
+ '@aws-sdk/credential-provider-web-identity': 3.797.0
'@aws-sdk/types': 3.775.0
'@smithy/credential-provider-imds': 4.0.2
'@smithy/property-provider': 4.0.2
@@ -11543,20 +11172,20 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/credential-provider-process@3.775.0':
+ '@aws-sdk/credential-provider-process@3.796.0':
dependencies:
- '@aws-sdk/core': 3.775.0
+ '@aws-sdk/core': 3.796.0
'@aws-sdk/types': 3.775.0
'@smithy/property-provider': 4.0.2
'@smithy/shared-ini-file-loader': 4.0.2
'@smithy/types': 4.2.0
tslib: 2.8.1
- '@aws-sdk/credential-provider-sso@3.782.0':
+ '@aws-sdk/credential-provider-sso@3.797.0':
dependencies:
- '@aws-sdk/client-sso': 3.782.0
- '@aws-sdk/core': 3.775.0
- '@aws-sdk/token-providers': 3.782.0
+ '@aws-sdk/client-sso': 3.797.0
+ '@aws-sdk/core': 3.796.0
+ '@aws-sdk/token-providers': 3.797.0
'@aws-sdk/types': 3.775.0
'@smithy/property-provider': 4.0.2
'@smithy/shared-ini-file-loader': 4.0.2
@@ -11565,10 +11194,10 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/credential-provider-web-identity@3.782.0':
+ '@aws-sdk/credential-provider-web-identity@3.797.0':
dependencies:
- '@aws-sdk/core': 3.775.0
- '@aws-sdk/nested-clients': 3.782.0
+ '@aws-sdk/core': 3.796.0
+ '@aws-sdk/nested-clients': 3.797.0
'@aws-sdk/types': 3.775.0
'@smithy/property-provider': 4.0.2
'@smithy/types': 4.2.0
@@ -11576,9 +11205,9 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/lib-storage@3.782.0(@aws-sdk/client-s3@3.782.0)':
+ '@aws-sdk/lib-storage@3.797.0(@aws-sdk/client-s3@3.797.0)':
dependencies:
- '@aws-sdk/client-s3': 3.782.0
+ '@aws-sdk/client-s3': 3.797.0
'@smithy/abort-controller': 4.0.2
'@smithy/middleware-endpoint': 4.1.0
'@smithy/smithy-client': 4.2.0
@@ -11604,12 +11233,12 @@ snapshots:
'@smithy/types': 4.2.0
tslib: 2.8.1
- '@aws-sdk/middleware-flexible-checksums@3.775.0':
+ '@aws-sdk/middleware-flexible-checksums@3.796.0':
dependencies:
'@aws-crypto/crc32': 5.2.0
'@aws-crypto/crc32c': 5.2.0
'@aws-crypto/util': 5.2.0
- '@aws-sdk/core': 3.775.0
+ '@aws-sdk/core': 3.796.0
'@aws-sdk/types': 3.775.0
'@smithy/is-array-buffer': 4.0.0
'@smithy/node-config-provider': 4.0.2
@@ -11646,15 +11275,15 @@ snapshots:
'@smithy/types': 4.2.0
tslib: 2.8.1
- '@aws-sdk/middleware-sdk-s3@3.775.0':
+ '@aws-sdk/middleware-sdk-s3@3.796.0':
dependencies:
- '@aws-sdk/core': 3.775.0
+ '@aws-sdk/core': 3.796.0
'@aws-sdk/types': 3.775.0
'@aws-sdk/util-arn-parser': 3.723.0
'@smithy/core': 3.2.0
'@smithy/node-config-provider': 4.0.2
'@smithy/protocol-http': 5.1.0
- '@smithy/signature-v4': 5.0.2
+ '@smithy/signature-v4': 5.1.0
'@smithy/smithy-client': 4.2.0
'@smithy/types': 4.2.0
'@smithy/util-config-provider': 4.0.0
@@ -11669,30 +11298,30 @@ snapshots:
'@smithy/types': 4.2.0
tslib: 2.8.1
- '@aws-sdk/middleware-user-agent@3.782.0':
+ '@aws-sdk/middleware-user-agent@3.796.0':
dependencies:
- '@aws-sdk/core': 3.775.0
+ '@aws-sdk/core': 3.796.0
'@aws-sdk/types': 3.775.0
- '@aws-sdk/util-endpoints': 3.782.0
+ '@aws-sdk/util-endpoints': 3.787.0
'@smithy/core': 3.2.0
'@smithy/protocol-http': 5.1.0
'@smithy/types': 4.2.0
tslib: 2.8.1
- '@aws-sdk/nested-clients@3.782.0':
+ '@aws-sdk/nested-clients@3.797.0':
dependencies:
'@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0
- '@aws-sdk/core': 3.775.0
+ '@aws-sdk/core': 3.796.0
'@aws-sdk/middleware-host-header': 3.775.0
'@aws-sdk/middleware-logger': 3.775.0
'@aws-sdk/middleware-recursion-detection': 3.775.0
- '@aws-sdk/middleware-user-agent': 3.782.0
+ '@aws-sdk/middleware-user-agent': 3.796.0
'@aws-sdk/region-config-resolver': 3.775.0
'@aws-sdk/types': 3.775.0
- '@aws-sdk/util-endpoints': 3.782.0
+ '@aws-sdk/util-endpoints': 3.787.0
'@aws-sdk/util-user-agent-browser': 3.775.0
- '@aws-sdk/util-user-agent-node': 3.782.0
+ '@aws-sdk/util-user-agent-node': 3.796.0
'@smithy/config-resolver': 4.1.0
'@smithy/core': 3.2.0
'@smithy/fetch-http-handler': 5.0.2
@@ -11731,18 +11360,18 @@ snapshots:
'@smithy/util-middleware': 4.0.2
tslib: 2.8.1
- '@aws-sdk/signature-v4-multi-region@3.775.0':
+ '@aws-sdk/signature-v4-multi-region@3.796.0':
dependencies:
- '@aws-sdk/middleware-sdk-s3': 3.775.0
+ '@aws-sdk/middleware-sdk-s3': 3.796.0
'@aws-sdk/types': 3.775.0
'@smithy/protocol-http': 5.1.0
- '@smithy/signature-v4': 5.0.2
+ '@smithy/signature-v4': 5.1.0
'@smithy/types': 4.2.0
tslib: 2.8.1
- '@aws-sdk/token-providers@3.782.0':
+ '@aws-sdk/token-providers@3.797.0':
dependencies:
- '@aws-sdk/nested-clients': 3.782.0
+ '@aws-sdk/nested-clients': 3.797.0
'@aws-sdk/types': 3.775.0
'@smithy/property-provider': 4.0.2
'@smithy/shared-ini-file-loader': 4.0.2
@@ -11760,7 +11389,7 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@aws-sdk/util-endpoints@3.782.0':
+ '@aws-sdk/util-endpoints@3.787.0':
dependencies:
'@aws-sdk/types': 3.775.0
'@smithy/types': 4.2.0
@@ -11778,9 +11407,9 @@ snapshots:
bowser: 2.11.0
tslib: 2.8.1
- '@aws-sdk/util-user-agent-node@3.782.0':
+ '@aws-sdk/util-user-agent-node@3.796.0':
dependencies:
- '@aws-sdk/middleware-user-agent': 3.782.0
+ '@aws-sdk/middleware-user-agent': 3.796.0
'@aws-sdk/types': 3.775.0
'@smithy/node-config-provider': 4.0.2
'@smithy/types': 4.2.0
@@ -12274,7 +11903,7 @@ snapshots:
'@csstools/css-tokenizer@3.0.3': {}
- '@cypress/request@3.0.6':
+ '@cypress/request@3.0.8':
dependencies:
aws-sign2: 0.7.0
aws4: 1.12.0
@@ -12289,7 +11918,7 @@ snapshots:
json-stringify-safe: 5.0.1
mime-types: 2.1.35
performance-now: 2.1.0
- qs: 6.13.0
+ qs: 6.14.0
safe-buffer: 5.2.1
tough-cookie: 5.0.0
tunnel-agent: 0.6.0
@@ -12324,176 +11953,96 @@ snapshots:
tslib: 2.8.1
optional: true
- '@esbuild/aix-ppc64@0.25.0':
- optional: true
-
- '@esbuild/aix-ppc64@0.25.2':
- optional: true
-
- '@esbuild/android-arm64@0.25.0':
- optional: true
-
- '@esbuild/android-arm64@0.25.2':
- optional: true
-
- '@esbuild/android-arm@0.25.0':
- optional: true
-
- '@esbuild/android-arm@0.25.2':
- optional: true
-
- '@esbuild/android-x64@0.25.0':
- optional: true
-
- '@esbuild/android-x64@0.25.2':
- optional: true
-
- '@esbuild/darwin-arm64@0.25.0':
- optional: true
-
- '@esbuild/darwin-arm64@0.25.2':
- optional: true
-
- '@esbuild/darwin-x64@0.25.0':
- optional: true
-
- '@esbuild/darwin-x64@0.25.2':
- optional: true
-
- '@esbuild/freebsd-arm64@0.25.0':
- optional: true
-
- '@esbuild/freebsd-arm64@0.25.2':
- optional: true
-
- '@esbuild/freebsd-x64@0.25.0':
- optional: true
-
- '@esbuild/freebsd-x64@0.25.2':
- optional: true
-
- '@esbuild/linux-arm64@0.25.0':
+ '@esbuild/aix-ppc64@0.25.3':
optional: true
- '@esbuild/linux-arm64@0.25.2':
+ '@esbuild/android-arm64@0.25.3':
optional: true
- '@esbuild/linux-arm@0.25.0':
+ '@esbuild/android-arm@0.25.3':
optional: true
- '@esbuild/linux-arm@0.25.2':
+ '@esbuild/android-x64@0.25.3':
optional: true
- '@esbuild/linux-ia32@0.25.0':
+ '@esbuild/darwin-arm64@0.25.3':
optional: true
- '@esbuild/linux-ia32@0.25.2':
+ '@esbuild/darwin-x64@0.25.3':
optional: true
- '@esbuild/linux-loong64@0.25.0':
+ '@esbuild/freebsd-arm64@0.25.3':
optional: true
- '@esbuild/linux-loong64@0.25.2':
+ '@esbuild/freebsd-x64@0.25.3':
optional: true
- '@esbuild/linux-mips64el@0.25.0':
+ '@esbuild/linux-arm64@0.25.3':
optional: true
- '@esbuild/linux-mips64el@0.25.2':
+ '@esbuild/linux-arm@0.25.3':
optional: true
- '@esbuild/linux-ppc64@0.25.0':
+ '@esbuild/linux-ia32@0.25.3':
optional: true
- '@esbuild/linux-ppc64@0.25.2':
+ '@esbuild/linux-loong64@0.25.3':
optional: true
- '@esbuild/linux-riscv64@0.25.0':
+ '@esbuild/linux-mips64el@0.25.3':
optional: true
- '@esbuild/linux-riscv64@0.25.2':
+ '@esbuild/linux-ppc64@0.25.3':
optional: true
- '@esbuild/linux-s390x@0.25.0':
+ '@esbuild/linux-riscv64@0.25.3':
optional: true
- '@esbuild/linux-s390x@0.25.2':
+ '@esbuild/linux-s390x@0.25.3':
optional: true
- '@esbuild/linux-x64@0.25.0':
+ '@esbuild/linux-x64@0.25.3':
optional: true
- '@esbuild/linux-x64@0.25.2':
+ '@esbuild/netbsd-arm64@0.25.3':
optional: true
- '@esbuild/netbsd-arm64@0.25.0':
+ '@esbuild/netbsd-x64@0.25.3':
optional: true
- '@esbuild/netbsd-arm64@0.25.2':
+ '@esbuild/openbsd-arm64@0.25.3':
optional: true
- '@esbuild/netbsd-x64@0.25.0':
+ '@esbuild/openbsd-x64@0.25.3':
optional: true
- '@esbuild/netbsd-x64@0.25.2':
+ '@esbuild/sunos-x64@0.25.3':
optional: true
- '@esbuild/openbsd-arm64@0.25.0':
+ '@esbuild/win32-arm64@0.25.3':
optional: true
- '@esbuild/openbsd-arm64@0.25.2':
+ '@esbuild/win32-ia32@0.25.3':
optional: true
- '@esbuild/openbsd-x64@0.25.0':
+ '@esbuild/win32-x64@0.25.3':
optional: true
- '@esbuild/openbsd-x64@0.25.2':
- optional: true
-
- '@esbuild/sunos-x64@0.25.0':
- optional: true
-
- '@esbuild/sunos-x64@0.25.2':
- optional: true
-
- '@esbuild/win32-arm64@0.25.0':
- optional: true
-
- '@esbuild/win32-arm64@0.25.2':
- optional: true
-
- '@esbuild/win32-ia32@0.25.0':
- optional: true
-
- '@esbuild/win32-ia32@0.25.2':
- optional: true
-
- '@esbuild/win32-x64@0.25.0':
- optional: true
-
- '@esbuild/win32-x64@0.25.2':
- optional: true
-
- '@eslint-community/eslint-utils@4.4.0(eslint@9.23.0)':
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.25.1)':
dependencies:
- eslint: 9.23.0
+ eslint: 9.25.1
eslint-visitor-keys: 3.4.3
- '@eslint-community/eslint-utils@4.5.1(eslint@9.22.0)':
+ '@eslint-community/eslint-utils@4.5.1(eslint@9.25.1)':
dependencies:
- eslint: 9.22.0
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0)':
- dependencies:
- eslint: 9.23.0
+ eslint: 9.25.1
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
'@eslint/compat@1.1.1': {}
- '@eslint/config-array@0.19.2':
+ '@eslint/config-array@0.20.0':
dependencies:
'@eslint/object-schema': 2.1.6
debug: 4.4.0(supports-color@8.1.1)
@@ -12501,11 +12050,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/config-helpers@0.1.0': {}
-
- '@eslint/config-helpers@0.2.0': {}
+ '@eslint/config-helpers@0.2.1': {}
- '@eslint/core@0.12.0':
+ '@eslint/core@0.13.0':
dependencies:
'@types/json-schema': 7.0.15
@@ -12523,15 +12070,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@9.22.0': {}
-
- '@eslint/js@9.23.0': {}
+ '@eslint/js@9.25.1': {}
'@eslint/object-schema@2.1.6': {}
- '@eslint/plugin-kit@0.2.7':
+ '@eslint/plugin-kit@0.2.8':
dependencies:
- '@eslint/core': 0.12.0
+ '@eslint/core': 0.13.0
levn: 0.4.1
'@fastify/accept-negotiator@2.0.0': {}
@@ -12680,169 +12225,94 @@ snapshots:
'@humanwhocodes/retry@0.4.2': {}
- '@img/sharp-darwin-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.0.4
- optional: true
-
'@img/sharp-darwin-arm64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.1.0
optional: true
- '@img/sharp-darwin-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.0.4
- optional: true
-
'@img/sharp-darwin-x64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.1.0
optional: true
- '@img/sharp-libvips-darwin-arm64@1.0.4':
- optional: true
-
'@img/sharp-libvips-darwin-arm64@1.1.0':
optional: true
- '@img/sharp-libvips-darwin-x64@1.0.4':
- optional: true
-
'@img/sharp-libvips-darwin-x64@1.1.0':
optional: true
- '@img/sharp-libvips-linux-arm64@1.0.4':
- optional: true
-
'@img/sharp-libvips-linux-arm64@1.1.0':
optional: true
- '@img/sharp-libvips-linux-arm@1.0.5':
- optional: true
-
'@img/sharp-libvips-linux-arm@1.1.0':
optional: true
'@img/sharp-libvips-linux-ppc64@1.1.0':
optional: true
- '@img/sharp-libvips-linux-s390x@1.0.4':
- optional: true
-
'@img/sharp-libvips-linux-s390x@1.1.0':
optional: true
- '@img/sharp-libvips-linux-x64@1.0.4':
- optional: true
-
'@img/sharp-libvips-linux-x64@1.1.0':
optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
- optional: true
-
'@img/sharp-libvips-linuxmusl-arm64@1.1.0':
optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.0.4':
- optional: true
-
'@img/sharp-libvips-linuxmusl-x64@1.1.0':
optional: true
- '@img/sharp-linux-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.0.4
- optional: true
-
'@img/sharp-linux-arm64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.1.0
optional: true
- '@img/sharp-linux-arm@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.0.5
- optional: true
-
'@img/sharp-linux-arm@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linux-arm': 1.1.0
optional: true
- '@img/sharp-linux-s390x@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.0.4
- optional: true
-
'@img/sharp-linux-s390x@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linux-s390x': 1.1.0
optional: true
- '@img/sharp-linux-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.0.4
- optional: true
-
'@img/sharp-linux-x64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.1.0
optional: true
- '@img/sharp-linuxmusl-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
- optional: true
-
'@img/sharp-linuxmusl-arm64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-arm64': 1.1.0
optional: true
- '@img/sharp-linuxmusl-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.0.4
- optional: true
-
'@img/sharp-linuxmusl-x64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-x64': 1.1.0
optional: true
- '@img/sharp-wasm32@0.33.5':
- dependencies:
- '@emnapi/runtime': 1.4.3
- optional: true
-
'@img/sharp-wasm32@0.34.1':
dependencies:
'@emnapi/runtime': 1.4.3
optional: true
- '@img/sharp-win32-ia32@0.33.5':
- optional: true
-
'@img/sharp-win32-ia32@0.34.1':
optional: true
- '@img/sharp-win32-x64@0.33.5':
- optional: true
-
'@img/sharp-win32-x64@0.34.1':
optional: true
- '@inquirer/confirm@5.0.2(@types/node@22.14.0)':
+ '@inquirer/confirm@5.0.2(@types/node@22.15.2)':
dependencies:
- '@inquirer/core': 10.1.0(@types/node@22.14.0)
- '@inquirer/type': 3.0.1(@types/node@22.14.0)
- '@types/node': 22.14.0
+ '@inquirer/core': 10.1.0(@types/node@22.15.2)
+ '@inquirer/type': 3.0.1(@types/node@22.15.2)
+ '@types/node': 22.15.2
- '@inquirer/core@10.1.0(@types/node@22.14.0)':
+ '@inquirer/core@10.1.0(@types/node@22.15.2)':
dependencies:
'@inquirer/figures': 1.0.8
- '@inquirer/type': 3.0.1(@types/node@22.14.0)
+ '@inquirer/type': 3.0.1(@types/node@22.15.2)
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 2.0.0
@@ -12855,9 +12325,9 @@ snapshots:
'@inquirer/figures@1.0.8': {}
- '@inquirer/type@3.0.1(@types/node@22.14.0)':
+ '@inquirer/type@3.0.1(@types/node@22.15.2)':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@ioredis/commands@1.2.0': {}
@@ -12887,7 +12357,7 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@@ -12900,14 +12370,14 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
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@22.14.0)
+ jest-config: 29.7.0(@types/node@22.15.2)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -12936,7 +12406,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -12954,7 +12424,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -12976,7 +12446,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
chalk: 4.1.2
collect-v8-coverage: 1.0.1
exit: 0.1.2
@@ -13046,16 +12516,16 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/yargs': 17.0.19
chalk: 4.1.2
- '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.3)(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))':
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.3)(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
glob: 10.4.5
magic-string: 0.27.0
react-docgen-typescript: 2.2.2(typescript@5.8.3)
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
optionalDependencies:
typescript: 5.8.3
@@ -13110,23 +12580,23 @@ snapshots:
'@types/react': 18.0.28
react: 19.1.0
- '@microsoft/api-extractor-model@7.30.5(@types/node@22.13.15)':
+ '@microsoft/api-extractor-model@7.30.5(@types/node@22.15.2)':
dependencies:
'@microsoft/tsdoc': 0.15.1
'@microsoft/tsdoc-config': 0.17.1
- '@rushstack/node-core-library': 5.13.0(@types/node@22.13.15)
+ '@rushstack/node-core-library': 5.13.0(@types/node@22.15.2)
transitivePeerDependencies:
- '@types/node'
- '@microsoft/api-extractor@7.52.2(@types/node@22.13.15)':
+ '@microsoft/api-extractor@7.52.5(@types/node@22.15.2)':
dependencies:
- '@microsoft/api-extractor-model': 7.30.5(@types/node@22.13.15)
+ '@microsoft/api-extractor-model': 7.30.5(@types/node@22.15.2)
'@microsoft/tsdoc': 0.15.1
'@microsoft/tsdoc-config': 0.17.1
- '@rushstack/node-core-library': 5.13.0(@types/node@22.13.15)
+ '@rushstack/node-core-library': 5.13.0(@types/node@22.15.2)
'@rushstack/rig-package': 0.5.3
- '@rushstack/terminal': 0.15.2(@types/node@22.13.15)
- '@rushstack/ts-command-line': 4.23.7(@types/node@22.13.15)
+ '@rushstack/terminal': 0.15.2(@types/node@22.15.2)
+ '@rushstack/ts-command-line': 5.0.0(@types/node@22.15.2)
lodash: 4.17.21
minimatch: 3.0.8
resolve: 1.22.8
@@ -13147,14 +12617,14 @@ snapshots:
'@misskey-dev/browser-image-resizer@2024.1.0': {}
- '@misskey-dev/eslint-plugin@2.1.0(@eslint/compat@1.1.1)(@stylistic/eslint-plugin@4.2.0(eslint@9.22.0)(typescript@5.8.2))(@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2))(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0))(eslint@9.22.0)(globals@16.0.0)':
+ '@misskey-dev/eslint-plugin@2.1.0(@eslint/compat@1.1.1)(@stylistic/eslint-plugin@4.2.0(eslint@9.25.1)(typescript@5.8.3))(@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3))(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1))(eslint@9.25.1)(globals@16.0.0)':
dependencies:
'@eslint/compat': 1.1.1
- '@stylistic/eslint-plugin': 4.2.0(eslint@9.22.0)(typescript@5.8.2)
- '@typescript-eslint/eslint-plugin': 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)
- '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
- eslint: 9.22.0
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)
+ '@stylistic/eslint-plugin': 4.2.0(eslint@9.25.1)(typescript@5.8.3)
+ '@typescript-eslint/eslint-plugin': 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)
+ '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
+ eslint: 9.25.1
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)
globals: 16.0.0
'@misskey-dev/sharp-read-bmp@1.3.0':
@@ -13200,18 +12670,21 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
- '@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
+ '@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2)':
dependencies:
- file-type: 19.6.0
+ file-type: 20.4.1
iterare: 1.2.1
+ load-esm: 1.0.2
reflect-metadata: 0.2.2
rxjs: 7.8.2
tslib: 2.8.1
uid: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
- '@nestjs/core@11.0.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
+ '@nestjs/core@11.1.0(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.17)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
dependencies:
- '@nestjs/common': 11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/common': 11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nuxt/opencollective': 0.4.1
fast-safe-stringify: 2.1.1
iterare: 1.2.1
@@ -13221,12 +12694,12 @@ snapshots:
tslib: 2.8.1
uid: 2.0.2
optionalDependencies:
- '@nestjs/platform-express': 10.4.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.15)
+ '@nestjs/platform-express': 10.4.17(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.0)
- '@nestjs/platform-express@10.4.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.15)':
+ '@nestjs/platform-express@10.4.17(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.0)':
dependencies:
- '@nestjs/common': 11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2)
- '@nestjs/core': 11.0.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/common': 11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.1.0(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.17)(reflect-metadata@0.2.2)(rxjs@7.8.2)
body-parser: 1.20.3
cors: 2.8.5
express: 4.21.2
@@ -13235,13 +12708,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@nestjs/testing@11.0.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.15))':
+ '@nestjs/testing@11.1.0(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.0(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.17)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.17(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.0))':
dependencies:
- '@nestjs/common': 11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2)
- '@nestjs/core': 11.0.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.15)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/common': 11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.1.0(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.17)(reflect-metadata@0.2.2)(rxjs@7.8.2)
tslib: 2.8.1
optionalDependencies:
- '@nestjs/platform-express': 10.4.15(@nestjs/common@11.0.16(file-type@19.6.0)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.15)
+ '@nestjs/platform-express': 10.4.17(@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.0)
'@noble/hashes@1.7.1': {}
@@ -13259,9 +12732,9 @@ snapshots:
'@npmcli/agent@2.2.0':
dependencies:
- agent-base: 7.1.0
+ agent-base: 7.1.3
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ https-proxy-agent: 7.0.6
lru-cache: 10.2.2
socks-proxy-agent: 8.0.2
transitivePeerDependencies:
@@ -13577,6 +13050,10 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
+ '@paralleldrive/cuid2@2.2.2':
+ dependencies:
+ '@noble/hashes': 1.7.1
+
'@parcel/watcher-android-arm64@2.5.1':
optional: true
@@ -13642,27 +13119,27 @@ snapshots:
dependencies:
'@peculiar/asn1-schema': 2.3.8
asn1js: 3.0.5
- tslib: 2.7.0
+ tslib: 2.8.1
'@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.7.0
+ tslib: 2.8.1
'@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.7.0
+ tslib: 2.8.1
'@peculiar/asn1-schema@2.3.8':
dependencies:
asn1js: 3.0.5
pvtsutils: 1.3.5
- tslib: 2.7.0
+ tslib: 2.8.1
'@peculiar/asn1-x509@2.3.8':
dependencies:
@@ -13670,7 +13147,7 @@ snapshots:
asn1js: 3.0.5
ipaddr.js: 2.2.0
pvtsutils: 1.3.5
- tslib: 2.7.0
+ tslib: 2.8.1
'@peertube/http-signature@1.7.0':
dependencies:
@@ -13724,92 +13201,92 @@ snapshots:
'@readme/openapi-schemas@3.1.0': {}
- '@rollup/plugin-json@6.1.0(rollup@4.39.0)':
+ '@rollup/plugin-json@6.1.0(rollup@4.40.0)':
dependencies:
- '@rollup/pluginutils': 5.1.4(rollup@4.39.0)
+ '@rollup/pluginutils': 5.1.4(rollup@4.40.0)
optionalDependencies:
- rollup: 4.39.0
+ rollup: 4.40.0
- '@rollup/plugin-replace@6.0.2(rollup@4.39.0)':
+ '@rollup/plugin-replace@6.0.2(rollup@4.40.0)':
dependencies:
- '@rollup/pluginutils': 5.1.4(rollup@4.39.0)
+ '@rollup/pluginutils': 5.1.4(rollup@4.40.0)
magic-string: 0.30.17
optionalDependencies:
- rollup: 4.39.0
+ rollup: 4.40.0
- '@rollup/pluginutils@5.1.4(rollup@4.39.0)':
+ '@rollup/pluginutils@5.1.4(rollup@4.40.0)':
dependencies:
'@types/estree': 1.0.7
estree-walker: 2.0.2
picomatch: 4.0.2
optionalDependencies:
- rollup: 4.39.0
+ rollup: 4.40.0
- '@rollup/rollup-android-arm-eabi@4.39.0':
+ '@rollup/rollup-android-arm-eabi@4.40.0':
optional: true
- '@rollup/rollup-android-arm64@4.39.0':
+ '@rollup/rollup-android-arm64@4.40.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.39.0':
+ '@rollup/rollup-darwin-arm64@4.40.0':
optional: true
- '@rollup/rollup-darwin-x64@4.39.0':
+ '@rollup/rollup-darwin-x64@4.40.0':
optional: true
- '@rollup/rollup-freebsd-arm64@4.39.0':
+ '@rollup/rollup-freebsd-arm64@4.40.0':
optional: true
- '@rollup/rollup-freebsd-x64@4.39.0':
+ '@rollup/rollup-freebsd-x64@4.40.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.40.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.39.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.40.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.39.0':
+ '@rollup/rollup-linux-arm64-gnu@4.40.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.39.0':
+ '@rollup/rollup-linux-arm64-musl@4.40.0':
optional: true
- '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
+ '@rollup/rollup-linux-loongarch64-gnu@4.40.0':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.40.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.39.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.40.0':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.39.0':
+ '@rollup/rollup-linux-riscv64-musl@4.40.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.39.0':
+ '@rollup/rollup-linux-s390x-gnu@4.40.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.39.0':
+ '@rollup/rollup-linux-x64-gnu@4.40.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.39.0':
+ '@rollup/rollup-linux-x64-musl@4.40.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.39.0':
+ '@rollup/rollup-win32-arm64-msvc@4.40.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.39.0':
+ '@rollup/rollup-win32-ia32-msvc@4.40.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.39.0':
+ '@rollup/rollup-win32-x64-msvc@4.40.0':
optional: true
'@rtsao/scc@1.1.0': {}
'@ruffle-rs/ruffle@0.1.0-nightly.2024.10.15': {}
- '@rushstack/node-core-library@5.13.0(@types/node@22.13.15)':
+ '@rushstack/node-core-library@5.13.0(@types/node@22.15.2)':
dependencies:
ajv: 8.13.0
ajv-draft-04: 1.0.0(ajv@8.13.0)
@@ -13820,23 +13297,23 @@ snapshots:
resolve: 1.22.8
semver: 7.5.4
optionalDependencies:
- '@types/node': 22.13.15
+ '@types/node': 22.15.2
'@rushstack/rig-package@0.5.3':
dependencies:
resolve: 1.22.8
strip-json-comments: 3.1.1
- '@rushstack/terminal@0.15.2(@types/node@22.13.15)':
+ '@rushstack/terminal@0.15.2(@types/node@22.15.2)':
dependencies:
- '@rushstack/node-core-library': 5.13.0(@types/node@22.13.15)
+ '@rushstack/node-core-library': 5.13.0(@types/node@22.15.2)
supports-color: 8.1.1
optionalDependencies:
- '@types/node': 22.13.15
+ '@types/node': 22.15.2
- '@rushstack/ts-command-line@4.23.7(@types/node@22.13.15)':
+ '@rushstack/ts-command-line@5.0.0(@types/node@22.15.2)':
dependencies:
- '@rushstack/terminal': 0.15.2(@types/node@22.13.15)
+ '@rushstack/terminal': 0.15.2(@types/node@22.15.2)
'@types/argparse': 1.0.38
argparse: 1.0.10
string-argv: 0.3.1
@@ -13845,35 +13322,35 @@ snapshots:
'@sec-ant/readable-stream@0.4.1': {}
- '@sentry-internal/browser-utils@9.12.0':
+ '@sentry-internal/browser-utils@9.14.0':
dependencies:
- '@sentry/core': 9.12.0
+ '@sentry/core': 9.14.0
- '@sentry-internal/feedback@9.12.0':
+ '@sentry-internal/feedback@9.14.0':
dependencies:
- '@sentry/core': 9.12.0
+ '@sentry/core': 9.14.0
- '@sentry-internal/replay-canvas@9.12.0':
+ '@sentry-internal/replay-canvas@9.14.0':
dependencies:
- '@sentry-internal/replay': 9.12.0
- '@sentry/core': 9.12.0
+ '@sentry-internal/replay': 9.14.0
+ '@sentry/core': 9.14.0
- '@sentry-internal/replay@9.12.0':
+ '@sentry-internal/replay@9.14.0':
dependencies:
- '@sentry-internal/browser-utils': 9.12.0
- '@sentry/core': 9.12.0
+ '@sentry-internal/browser-utils': 9.14.0
+ '@sentry/core': 9.14.0
- '@sentry/browser@9.12.0':
+ '@sentry/browser@9.14.0':
dependencies:
- '@sentry-internal/browser-utils': 9.12.0
- '@sentry-internal/feedback': 9.12.0
- '@sentry-internal/replay': 9.12.0
- '@sentry-internal/replay-canvas': 9.12.0
- '@sentry/core': 9.12.0
+ '@sentry-internal/browser-utils': 9.14.0
+ '@sentry-internal/feedback': 9.14.0
+ '@sentry-internal/replay': 9.14.0
+ '@sentry-internal/replay-canvas': 9.14.0
+ '@sentry/core': 9.14.0
'@sentry/core@8.55.0': {}
- '@sentry/core@9.12.0': {}
+ '@sentry/core@9.14.0': {}
'@sentry/node@8.55.0':
dependencies:
@@ -13934,39 +13411,39 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@sentry/vue@9.12.0(vue@3.5.13(typescript@5.8.3))':
+ '@sentry/vue@9.14.0(vue@3.5.13(typescript@5.8.3))':
dependencies:
- '@sentry/browser': 9.12.0
- '@sentry/core': 9.12.0
+ '@sentry/browser': 9.14.0
+ '@sentry/core': 9.14.0
vue: 3.5.13(typescript@5.8.3)
- '@shikijs/core@3.2.2':
+ '@shikijs/core@3.3.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.3.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
- '@shikijs/engine-javascript@3.2.2':
+ '@shikijs/engine-javascript@3.3.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.3.0
'@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 4.1.0
+ oniguruma-to-es: 4.3.1
- '@shikijs/engine-oniguruma@3.2.2':
+ '@shikijs/engine-oniguruma@3.3.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.3.0
'@shikijs/vscode-textmate': 10.0.2
- '@shikijs/langs@3.2.2':
+ '@shikijs/langs@3.3.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.3.0
- '@shikijs/themes@3.2.2':
+ '@shikijs/themes@3.3.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.3.0
- '@shikijs/types@3.2.2':
+ '@shikijs/types@3.3.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -14048,7 +13525,7 @@ snapshots:
'@smithy/abort-controller@2.2.0':
dependencies:
'@smithy/types': 2.12.0
- tslib: 2.7.0
+ tslib: 2.8.1
'@smithy/abort-controller@4.0.2':
dependencies:
@@ -14238,7 +13715,7 @@ snapshots:
'@smithy/protocol-http@3.3.0':
dependencies:
'@smithy/types': 2.12.0
- tslib: 2.7.0
+ tslib: 2.8.1
'@smithy/protocol-http@5.1.0':
dependencies:
@@ -14249,7 +13726,7 @@ snapshots:
dependencies:
'@smithy/types': 2.12.0
'@smithy/util-uri-escape': 2.2.0
- tslib: 2.7.0
+ tslib: 2.8.1
'@smithy/querystring-builder@4.0.2':
dependencies:
@@ -14271,7 +13748,7 @@ snapshots:
'@smithy/types': 4.2.0
tslib: 2.8.1
- '@smithy/signature-v4@5.0.2':
+ '@smithy/signature-v4@5.1.0':
dependencies:
'@smithy/is-array-buffer': 4.0.0
'@smithy/protocol-http': 5.1.0
@@ -14294,7 +13771,7 @@ snapshots:
'@smithy/types@2.12.0':
dependencies:
- tslib: 2.7.0
+ tslib: 2.8.1
'@smithy/types@4.2.0':
dependencies:
@@ -14386,7 +13863,7 @@ snapshots:
'@smithy/util-uri-escape@2.2.0':
dependencies:
- tslib: 2.7.0
+ tslib: 2.8.1
'@smithy/util-uri-escape@4.0.0':
dependencies:
@@ -14529,13 +14006,13 @@ snapshots:
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
- '@storybook/builder-vite@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))':
+ '@storybook/builder-vite@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
'@storybook/csf-plugin': 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
browser-assert: 1.2.1
storybook: 8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
'@storybook/components@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))':
dependencies:
@@ -14550,8 +14027,8 @@ snapshots:
'@storybook/theming': 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
better-opn: 3.0.2
browser-assert: 1.2.1
- esbuild: 0.25.2
- esbuild-register: 3.5.0(esbuild@0.25.2)
+ esbuild: 0.25.3
+ esbuild-register: 3.5.0(esbuild@0.25.3)
jsdoc-type-pratt-parser: 4.1.0
process: 0.11.10
recast: 0.23.6
@@ -14598,11 +14075,11 @@ snapshots:
react-dom: 19.1.0(react@19.1.0)
storybook: 8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/react-vite@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.39.0)(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))':
+ '@storybook/react-vite@8.6.12(@storybook/test@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.40.0)(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
- '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.3)(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
- '@rollup/pluginutils': 5.1.4(rollup@4.39.0)
- '@storybook/builder-vite': 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.3)(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
+ '@rollup/pluginutils': 5.1.4(rollup@4.40.0)
+ '@storybook/builder-vite': 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
'@storybook/react': 8.6.12(@storybook/test@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.3)
find-up: 5.0.0
magic-string: 0.30.17
@@ -14612,7 +14089,7 @@ snapshots:
resolve: 1.22.8
storybook: 8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
tsconfig-paths: 4.2.0
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
optionalDependencies:
'@storybook/test': 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
transitivePeerDependencies:
@@ -14661,15 +14138,15 @@ snapshots:
dependencies:
storybook: 8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
- '@storybook/vue3-vite@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))':
+ '@storybook/vue3-vite@8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))':
dependencies:
- '@storybook/builder-vite': 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
+ '@storybook/builder-vite': 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
'@storybook/vue3': 8.6.12(storybook@8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.8.3))
find-package-json: 1.2.0
magic-string: 0.30.17
storybook: 8.6.12(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
typescript: 5.8.3
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
vue-component-meta: 2.0.16(typescript@5.8.3)
vue-docgen-api: 4.75.1(vue@3.5.13(typescript@5.8.3))
transitivePeerDependencies:
@@ -14689,10 +14166,10 @@ snapshots:
vue: 3.5.13(typescript@5.8.3)
vue-component-type-helpers: 2.2.10
- '@stylistic/eslint-plugin@4.2.0(eslint@9.22.0)(typescript@5.8.2)':
+ '@stylistic/eslint-plugin@4.2.0(eslint@9.25.1)(typescript@5.8.3)':
dependencies:
- '@typescript-eslint/utils': 8.29.0(eslint@9.22.0)(typescript@5.8.2)
- eslint: 9.22.0
+ '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
+ eslint: 9.25.1
eslint-visitor-keys: 4.2.0
espree: 10.3.0
estraverse: 5.3.0
@@ -14701,16 +14178,16 @@ snapshots:
- supports-color
- typescript
- '@swc/cli@0.6.0(@swc/core@1.11.18)(chokidar@4.0.3)':
+ '@swc/cli@0.7.3(@swc/core@1.11.22)(chokidar@4.0.3)':
dependencies:
- '@swc/core': 1.11.18
+ '@swc/core': 1.11.22
'@swc/counter': 0.1.3
'@xhmikosr/bin-wrapper': 13.0.5
commander: 8.3.0
fast-glob: 3.3.3
minimatch: 9.0.5
piscina: 4.4.0
- semver: 7.6.3
+ semver: 7.7.1
slash: 3.0.0
source-map: 0.7.4
optionalDependencies:
@@ -14721,10 +14198,10 @@ snapshots:
'@swc/wasm': 1.2.130
optional: true
- '@swc/core-darwin-arm64@1.11.18':
+ '@swc/core-darwin-arm64@1.11.22':
optional: true
- '@swc/core-darwin-x64@1.11.18':
+ '@swc/core-darwin-x64@1.11.22':
optional: true
'@swc/core-freebsd-x64@1.3.11':
@@ -14732,52 +14209,52 @@ snapshots:
'@swc/wasm': 1.2.130
optional: true
- '@swc/core-linux-arm-gnueabihf@1.11.18':
+ '@swc/core-linux-arm-gnueabihf@1.11.22':
optional: true
- '@swc/core-linux-arm64-gnu@1.11.18':
+ '@swc/core-linux-arm64-gnu@1.11.22':
optional: true
- '@swc/core-linux-arm64-musl@1.11.18':
+ '@swc/core-linux-arm64-musl@1.11.22':
optional: true
- '@swc/core-linux-x64-gnu@1.11.18':
+ '@swc/core-linux-x64-gnu@1.11.22':
optional: true
- '@swc/core-linux-x64-musl@1.11.18':
+ '@swc/core-linux-x64-musl@1.11.22':
optional: true
- '@swc/core-win32-arm64-msvc@1.11.18':
+ '@swc/core-win32-arm64-msvc@1.11.22':
optional: true
- '@swc/core-win32-ia32-msvc@1.11.18':
+ '@swc/core-win32-ia32-msvc@1.11.22':
optional: true
- '@swc/core-win32-x64-msvc@1.11.18':
+ '@swc/core-win32-x64-msvc@1.11.22':
optional: true
- '@swc/core@1.11.18':
+ '@swc/core@1.11.22':
dependencies:
'@swc/counter': 0.1.3
'@swc/types': 0.1.21
optionalDependencies:
- '@swc/core-darwin-arm64': 1.11.18
- '@swc/core-darwin-x64': 1.11.18
- '@swc/core-linux-arm-gnueabihf': 1.11.18
- '@swc/core-linux-arm64-gnu': 1.11.18
- '@swc/core-linux-arm64-musl': 1.11.18
- '@swc/core-linux-x64-gnu': 1.11.18
- '@swc/core-linux-x64-musl': 1.11.18
- '@swc/core-win32-arm64-msvc': 1.11.18
- '@swc/core-win32-ia32-msvc': 1.11.18
- '@swc/core-win32-x64-msvc': 1.11.18
+ '@swc/core-darwin-arm64': 1.11.22
+ '@swc/core-darwin-x64': 1.11.22
+ '@swc/core-linux-arm-gnueabihf': 1.11.22
+ '@swc/core-linux-arm64-gnu': 1.11.22
+ '@swc/core-linux-arm64-musl': 1.11.22
+ '@swc/core-linux-x64-gnu': 1.11.22
+ '@swc/core-linux-x64-musl': 1.11.22
+ '@swc/core-win32-arm64-msvc': 1.11.22
+ '@swc/core-win32-ia32-msvc': 1.11.22
+ '@swc/core-win32-x64-msvc': 1.11.22
'@swc/counter@0.1.3': {}
- '@swc/jest@0.2.37(@swc/core@1.11.18)':
+ '@swc/jest@0.2.38(@swc/core@1.11.22)':
dependencies:
'@jest/create-cache-key-function': 29.7.0
- '@swc/core': 1.11.18
+ '@swc/core': 1.11.22
'@swc/counter': 0.1.3
jsonc-parser: 3.2.0
@@ -14845,6 +14322,14 @@ snapshots:
transitivePeerDependencies:
- '@vue/server-renderer'
+ '@tokenizer/inflate@0.2.7':
+ dependencies:
+ debug: 4.4.0(supports-color@8.1.1)
+ fflate: 0.8.2
+ token-types: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
+
'@tokenizer/token@0.3.0': {}
'@transfem-org/sfm-js@0.24.5':
@@ -14857,7 +14342,7 @@ snapshots:
'@trysound/sax@0.2.0': {}
- '@tsd/typescript@5.4.5': {}
+ '@tsd/typescript@5.8.3': {}
'@twemoji/parser@15.0.0': {}
@@ -14867,7 +14352,7 @@ snapshots:
'@types/accepts@1.3.7':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/archiver@6.0.3':
dependencies:
@@ -14903,7 +14388,7 @@ snapshots:
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.35
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/braces@3.0.1': {}
@@ -14917,16 +14402,18 @@ snapshots:
'@types/connect@3.4.35':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/connect@3.4.36':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/content-disposition@0.5.8': {}
'@types/cookie@0.6.0': {}
+ '@types/cookiejar@2.1.5': {}
+
'@types/core-js@2.5.8': {}
'@types/debug@4.1.12':
@@ -14946,7 +14433,7 @@ snapshots:
'@types/express-serve-static-core@4.17.33':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/qs': 6.9.7
'@types/range-parser': 1.2.4
@@ -14959,7 +14446,7 @@ snapshots:
'@types/fluent-ffmpeg@2.1.27':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/form-data@2.5.2':
dependencies:
@@ -14967,7 +14454,7 @@ snapshots:
'@types/graceful-fs@4.1.6':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/hammerjs@2.0.46': {}
@@ -14981,7 +14468,7 @@ snapshots:
'@types/http-link-header@1.0.7':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/istanbul-lib-coverage@2.0.4': {}
@@ -15007,9 +14494,9 @@ snapshots:
'@types/jsdom@21.1.7':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/tough-cookie': 4.0.2
- parse5: 7.2.1
+ parse5: 7.3.0
'@types/json-schema@7.0.15': {}
@@ -15029,6 +14516,8 @@ snapshots:
'@types/mdx@2.0.3': {}
+ '@types/methods@1.1.4': {}
+
'@types/micromatch@4.0.9':
dependencies:
'@types/braces': 3.0.1
@@ -15043,23 +14532,15 @@ snapshots:
'@types/mysql@2.15.26':
dependencies:
- '@types/node': 22.14.0
-
- '@types/node@22.13.10':
- dependencies:
- undici-types: 6.20.0
-
- '@types/node@22.13.15':
- dependencies:
- undici-types: 6.20.0
+ '@types/node': 22.15.2
- '@types/node@22.14.0':
+ '@types/node@22.15.2':
dependencies:
undici-types: 6.21.0
'@types/nodemailer@6.4.17':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/normalize-package-data@2.4.1': {}
@@ -15070,11 +14551,11 @@ snapshots:
'@types/oauth2orize@1.11.5':
dependencies:
'@types/express': 4.17.17
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/oauth@0.9.6':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/object-assign-deep@0.4.3': {}
@@ -15082,17 +14563,17 @@ snapshots:
'@types/pg-pool@2.0.6':
dependencies:
- '@types/pg': 8.11.11
+ '@types/pg': 8.11.14
- '@types/pg@8.11.11':
+ '@types/pg@8.11.14':
dependencies:
- '@types/node': 22.14.0
- pg-protocol: 1.7.0
+ '@types/node': 22.15.2
+ pg-protocol: 1.8.0
pg-types: 4.0.1
'@types/pg@8.6.1':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
pg-protocol: 1.8.0
pg-types: 2.2.0
@@ -15100,7 +14581,7 @@ snapshots:
'@types/proxy-addr@2.0.3':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/psl@1.1.3': {}
@@ -15110,7 +14591,7 @@ snapshots:
'@types/qrcode@1.5.5':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/qs@6.9.7': {}
@@ -15128,7 +14609,7 @@ snapshots:
'@types/readdir-glob@1.1.1':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/redis-info@3.0.3': {}
@@ -15149,7 +14630,7 @@ snapshots:
'@types/serve-static@1.15.1':
dependencies:
'@types/mime': 3.0.1
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/serviceworker@0.0.74': {}
@@ -15173,9 +14654,21 @@ snapshots:
'@types/statuses@2.0.4': {}
+ '@types/superagent@8.1.9':
+ dependencies:
+ '@types/cookiejar': 2.1.5
+ '@types/methods': 1.1.4
+ '@types/node': 22.15.2
+ form-data: 4.0.2
+
+ '@types/supertest@6.0.3':
+ dependencies:
+ '@types/methods': 1.1.4
+ '@types/superagent': 8.1.9
+
'@types/tedious@4.0.14':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/throttle-debounce@5.0.2': {}
@@ -15193,19 +14686,19 @@ snapshots:
'@types/vary@1.1.3':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/web-push@3.6.4':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/ws@8.18.0':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/ws@8.18.1':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
'@types/yargs-parser@21.0.0': {}
@@ -15215,86 +14708,18 @@ snapshots:
'@types/yauzl@2.10.0':
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
optional: true
- '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.1.6))(eslint@9.22.0)(typescript@5.1.6)':
+ '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1)(typescript@5.8.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.1.6)
- '@typescript-eslint/scope-manager': 8.27.0
- '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.1.6)
- '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.1.6)
- '@typescript-eslint/visitor-keys': 8.27.0
- eslint: 9.22.0
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.1.6)
- typescript: 5.1.6
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)':
- dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
- '@typescript-eslint/scope-manager': 8.27.0
- '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
- '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
- '@typescript-eslint/visitor-keys': 8.27.0
- eslint: 9.22.0
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)':
- dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.29.0(eslint@9.22.0)(typescript@5.8.2)
- '@typescript-eslint/scope-manager': 8.29.0
- '@typescript-eslint/type-utils': 8.29.0(eslint@9.22.0)(typescript@5.8.2)
- '@typescript-eslint/utils': 8.29.0(eslint@9.22.0)(typescript@5.8.2)
- '@typescript-eslint/visitor-keys': 8.29.0
- eslint: 9.22.0
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2)':
- dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.29.0(eslint@9.23.0)(typescript@5.8.2)
- '@typescript-eslint/scope-manager': 8.29.0
- '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0)(typescript@5.8.2)
- '@typescript-eslint/utils': 8.29.0(eslint@9.23.0)(typescript@5.8.2)
- '@typescript-eslint/visitor-keys': 8.29.0
- eslint: 9.23.0
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0)(typescript@5.8.3)':
- dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.29.1(eslint@9.23.0)(typescript@5.8.3)
- '@typescript-eslint/scope-manager': 8.29.1
- '@typescript-eslint/type-utils': 8.29.1(eslint@9.23.0)(typescript@5.8.3)
- '@typescript-eslint/utils': 8.29.1(eslint@9.23.0)(typescript@5.8.3)
- '@typescript-eslint/visitor-keys': 8.29.1
- eslint: 9.23.0
+ '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
+ '@typescript-eslint/scope-manager': 8.31.0
+ '@typescript-eslint/type-utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
+ '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
+ '@typescript-eslint/visitor-keys': 8.31.0
+ eslint: 9.25.1
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@@ -15303,202 +14728,40 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.1.6)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.27.0
- '@typescript-eslint/types': 8.27.0
- '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.1.6)
- '@typescript-eslint/visitor-keys': 8.27.0
- debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.22.0
- typescript: 5.1.6
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.27.0
- '@typescript-eslint/types': 8.27.0
- '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
- '@typescript-eslint/visitor-keys': 8.27.0
- debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.22.0
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.29.0(eslint@9.22.0)(typescript@5.8.2)':
+ '@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.29.0
- '@typescript-eslint/types': 8.29.0
- '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
- '@typescript-eslint/visitor-keys': 8.29.0
+ '@typescript-eslint/scope-manager': 8.31.0
+ '@typescript-eslint/types': 8.31.0
+ '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3)
+ '@typescript-eslint/visitor-keys': 8.31.0
debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.22.0
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.29.0
- '@typescript-eslint/types': 8.29.0
- '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
- '@typescript-eslint/visitor-keys': 8.29.0
- debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.23.0
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.29.1
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3)
- '@typescript-eslint/visitor-keys': 8.29.1
- debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.23.0
+ eslint: 9.25.1
typescript: 5.8.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.27.0':
- dependencies:
- '@typescript-eslint/types': 8.27.0
- '@typescript-eslint/visitor-keys': 8.27.0
-
- '@typescript-eslint/scope-manager@8.29.0':
- dependencies:
- '@typescript-eslint/types': 8.29.0
- '@typescript-eslint/visitor-keys': 8.29.0
-
- '@typescript-eslint/scope-manager@8.29.1':
- dependencies:
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/visitor-keys': 8.29.1
-
- '@typescript-eslint/type-utils@8.27.0(eslint@9.22.0)(typescript@5.1.6)':
- dependencies:
- '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.1.6)
- '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.1.6)
- debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.22.0
- ts-api-utils: 2.1.0(typescript@5.1.6)
- typescript: 5.1.6
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/type-utils@8.27.0(eslint@9.22.0)(typescript@5.8.2)':
- dependencies:
- '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
- '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
- debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.22.0
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/type-utils@8.29.0(eslint@9.22.0)(typescript@5.8.2)':
- dependencies:
- '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
- '@typescript-eslint/utils': 8.29.0(eslint@9.22.0)(typescript@5.8.2)
- debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.22.0
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0)(typescript@5.8.2)':
+ '@typescript-eslint/scope-manager@8.31.0':
dependencies:
- '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
- '@typescript-eslint/utils': 8.29.0(eslint@9.23.0)(typescript@5.8.2)
- debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.23.0
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
+ '@typescript-eslint/types': 8.31.0
+ '@typescript-eslint/visitor-keys': 8.31.0
- '@typescript-eslint/type-utils@8.29.1(eslint@9.23.0)(typescript@5.8.3)':
+ '@typescript-eslint/type-utils@8.31.0(eslint@9.25.1)(typescript@5.8.3)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3)
- '@typescript-eslint/utils': 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3)
+ '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.23.0
+ eslint: 9.25.1
ts-api-utils: 2.1.0(typescript@5.8.3)
typescript: 5.8.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.27.0': {}
-
- '@typescript-eslint/types@8.29.0': {}
-
- '@typescript-eslint/types@8.29.1': {}
-
- '@typescript-eslint/typescript-estree@8.27.0(typescript@5.1.6)':
- dependencies:
- '@typescript-eslint/types': 8.27.0
- '@typescript-eslint/visitor-keys': 8.27.0
- debug: 4.4.0(supports-color@8.1.1)
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.1
- ts-api-utils: 2.1.0(typescript@5.1.6)
- typescript: 5.1.6
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/typescript-estree@8.27.0(typescript@5.8.2)':
- dependencies:
- '@typescript-eslint/types': 8.27.0
- '@typescript-eslint/visitor-keys': 8.27.0
- debug: 4.4.0(supports-color@8.1.1)
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.1
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.2)':
- dependencies:
- '@typescript-eslint/types': 8.29.0
- '@typescript-eslint/visitor-keys': 8.29.0
- debug: 4.4.0(supports-color@8.1.1)
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.1
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/typescript-estree@8.29.1(typescript@5.8.2)':
- dependencies:
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/visitor-keys': 8.29.1
- debug: 4.4.0(supports-color@8.1.1)
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.1
- ts-api-utils: 2.1.0(typescript@5.8.2)
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
+ '@typescript-eslint/types@8.31.0': {}
- '@typescript-eslint/typescript-estree@8.29.1(typescript@5.8.3)':
+ '@typescript-eslint/typescript-estree@8.31.0(typescript@5.8.3)':
dependencies:
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/visitor-keys': 8.29.1
+ '@typescript-eslint/types': 8.31.0
+ '@typescript-eslint/visitor-keys': 8.31.0
debug: 4.4.0(supports-color@8.1.1)
fast-glob: 3.3.3
is-glob: 4.0.3
@@ -15509,95 +14772,30 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.27.0(eslint@9.22.0)(typescript@5.1.6)':
- dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0)
- '@typescript-eslint/scope-manager': 8.27.0
- '@typescript-eslint/types': 8.27.0
- '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.1.6)
- eslint: 9.22.0
- typescript: 5.1.6
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.27.0(eslint@9.22.0)(typescript@5.8.2)':
+ '@typescript-eslint/utils@8.31.0(eslint@9.25.1)(typescript@5.8.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0)
- '@typescript-eslint/scope-manager': 8.27.0
- '@typescript-eslint/types': 8.27.0
- '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2)
- eslint: 9.22.0
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.29.0(eslint@9.22.0)(typescript@5.8.2)':
- dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0)
- '@typescript-eslint/scope-manager': 8.29.0
- '@typescript-eslint/types': 8.29.0
- '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
- eslint: 9.22.0
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.29.0(eslint@9.23.0)(typescript@5.8.2)':
- dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0)
- '@typescript-eslint/scope-manager': 8.29.0
- '@typescript-eslint/types': 8.29.0
- '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.2)
- eslint: 9.23.0
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.29.1(eslint@9.22.0)(typescript@5.8.2)':
- dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0)
- '@typescript-eslint/scope-manager': 8.29.1
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.2)
- eslint: 9.22.0
- typescript: 5.8.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.29.1(eslint@9.23.0)(typescript@5.8.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0)
- '@typescript-eslint/scope-manager': 8.29.1
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3)
- eslint: 9.23.0
+ '@eslint-community/eslint-utils': 4.5.1(eslint@9.25.1)
+ '@typescript-eslint/scope-manager': 8.31.0
+ '@typescript-eslint/types': 8.31.0
+ '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3)
+ eslint: 9.25.1
typescript: 5.8.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.27.0':
- dependencies:
- '@typescript-eslint/types': 8.27.0
- eslint-visitor-keys: 4.2.0
-
- '@typescript-eslint/visitor-keys@8.29.0':
- dependencies:
- '@typescript-eslint/types': 8.29.0
- eslint-visitor-keys: 4.2.0
-
- '@typescript-eslint/visitor-keys@8.29.1':
+ '@typescript-eslint/visitor-keys@8.31.0':
dependencies:
- '@typescript-eslint/types': 8.29.1
+ '@typescript-eslint/types': 8.31.0
eslint-visitor-keys: 4.2.0
'@ungap/structured-clone@1.2.0': {}
- '@vitejs/plugin-vue@5.2.3(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))':
+ '@vitejs/plugin-vue@5.2.3(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.3))':
dependencies:
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
vue: 3.5.13(typescript@5.8.3)
- '@vitest/coverage-v8@3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))':
+ '@vitest/coverage-v8@3.1.2(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 1.0.2
@@ -15608,14 +14806,14 @@ snapshots:
istanbul-reports: 3.1.7
magic-string: 0.30.17
magicast: 0.3.5
- std-env: 3.8.1
+ std-env: 3.9.0
test-exclude: 7.0.1
tinyrainbow: 2.0.0
- vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
transitivePeerDependencies:
- supports-color
- '@vitest/coverage-v8@3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))':
+ '@vitest/coverage-v8@3.1.2(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0)(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 1.0.2
@@ -15626,10 +14824,10 @@ snapshots:
istanbul-reports: 3.1.7
magic-string: 0.30.17
magicast: 0.3.5
- std-env: 3.8.1
+ std-env: 3.9.0
test-exclude: 7.0.1
tinyrainbow: 2.0.0
- vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0)(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
transitivePeerDependencies:
- supports-color
@@ -15640,21 +14838,21 @@ snapshots:
chai: 5.2.0
tinyrainbow: 1.2.0
- '@vitest/expect@3.1.1':
+ '@vitest/expect@3.1.2':
dependencies:
- '@vitest/spy': 3.1.1
- '@vitest/utils': 3.1.1
+ '@vitest/spy': 3.1.2
+ '@vitest/utils': 3.1.2
chai: 5.2.0
tinyrainbow: 2.0.0
- '@vitest/mocker@3.1.1(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))':
+ '@vitest/mocker@3.1.2(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))':
dependencies:
- '@vitest/spy': 3.1.1
+ '@vitest/spy': 3.1.2
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
- msw: 2.7.3(@types/node@22.14.0)(typescript@5.8.3)
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ msw: 2.7.5(@types/node@22.15.2)(typescript@5.8.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
'@vitest/pretty-format@2.0.5':
dependencies:
@@ -15664,22 +14862,18 @@ snapshots:
dependencies:
tinyrainbow: 1.2.0
- '@vitest/pretty-format@3.1.1':
- dependencies:
- tinyrainbow: 2.0.0
-
'@vitest/pretty-format@3.1.2':
dependencies:
tinyrainbow: 2.0.0
- '@vitest/runner@3.1.1':
+ '@vitest/runner@3.1.2':
dependencies:
- '@vitest/utils': 3.1.1
+ '@vitest/utils': 3.1.2
pathe: 2.0.3
- '@vitest/snapshot@3.1.1':
+ '@vitest/snapshot@3.1.2':
dependencies:
- '@vitest/pretty-format': 3.1.1
+ '@vitest/pretty-format': 3.1.2
magic-string: 0.30.17
pathe: 2.0.3
@@ -15687,7 +14881,7 @@ snapshots:
dependencies:
tinyspy: 3.0.2
- '@vitest/spy@3.1.1':
+ '@vitest/spy@3.1.2':
dependencies:
tinyspy: 3.0.2
@@ -15704,9 +14898,9 @@ snapshots:
loupe: 3.1.3
tinyrainbow: 1.2.0
- '@vitest/utils@3.1.1':
+ '@vitest/utils@3.1.2':
dependencies:
- '@vitest/pretty-format': 3.1.1
+ '@vitest/pretty-format': 3.1.2
loupe: 3.1.3
tinyrainbow: 2.0.0
@@ -15735,14 +14929,6 @@ snapshots:
path-browserify: 1.0.1
vscode-uri: 3.0.8
- '@vue/compiler-core@3.5.12':
- dependencies:
- '@babel/parser': 7.25.7
- '@vue/shared': 3.5.12
- entities: 4.5.0
- estree-walker: 2.0.2
- source-map-js: 1.2.1
-
'@vue/compiler-core@3.5.13':
dependencies:
'@babel/parser': 7.25.7
@@ -15751,11 +14937,6 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.5.12':
- dependencies:
- '@vue/compiler-core': 3.5.12
- '@vue/shared': 3.5.12
-
'@vue/compiler-dom@3.5.13':
dependencies:
'@vue/compiler-core': 3.5.13
@@ -15795,12 +14976,12 @@ snapshots:
optionalDependencies:
typescript: 5.8.3
- '@vue/language-core@2.2.8(typescript@5.8.3)':
+ '@vue/language-core@2.2.10(typescript@5.8.3)':
dependencies:
'@volar/language-core': 2.4.12
- '@vue/compiler-dom': 3.5.12
+ '@vue/compiler-dom': 3.5.13
'@vue/compiler-vue2': 2.7.16
- '@vue/shared': 3.5.12
+ '@vue/shared': 3.5.13
alien-signals: 1.0.7
minimatch: 9.0.5
muggle-string: 0.4.1
@@ -15830,8 +15011,6 @@ snapshots:
'@vue/shared': 3.5.13
vue: 3.5.13(typescript@5.8.3)
- '@vue/shared@3.5.12': {}
-
'@vue/shared@3.5.13': {}
'@vue/test-utils@2.4.1(@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3)))(vue@3.5.13(typescript@5.8.3))':
@@ -16016,8 +15195,6 @@ snapshots:
ansi-regex@6.0.1: {}
- ansi-sequence-parser@1.1.1: {}
-
ansi-styles@3.2.1:
dependencies:
color-convert: 1.9.3
@@ -16050,7 +15227,7 @@ snapshots:
archiver-utils@5.0.2:
dependencies:
- glob: 10.3.10
+ glob: 10.4.5
graceful-fs: 4.2.11
is-stream: 2.0.1
lazystream: 1.0.1
@@ -16161,7 +15338,7 @@ snapshots:
dependencies:
pvtsutils: 1.3.5
pvutils: 1.1.3
- tslib: 2.7.0
+ tslib: 2.8.1
assert-never@1.2.1: {}
@@ -16353,7 +15530,7 @@ snapshots:
bin-version-check@5.1.0:
dependencies:
bin-version: 6.0.0
- semver: 7.6.3
+ semver: 7.7.1
semver-truncate: 3.0.0
bin-version@6.0.0:
@@ -16469,10 +15646,10 @@ snapshots:
node-gyp-build: 4.8.1
optional: true
- bullmq@5.48.1:
+ bullmq@5.51.1:
dependencies:
cron-parser: 4.9.0
- ioredis: 5.6.0
+ ioredis: 5.6.1
msgpackr: 1.11.2
node-abort-controller: 3.1.1
semver: 7.7.1
@@ -16495,7 +15672,7 @@ snapshots:
dependencies:
'@npmcli/fs': 3.1.0
fs-minipass: 3.0.3
- glob: 10.3.10
+ glob: 10.4.5
lru-cache: 10.2.2
minipass: 7.1.2
minipass-collect: 1.0.2
@@ -16549,6 +15726,12 @@ snapshots:
get-intrinsic: 1.2.4
set-function-length: 1.2.2
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+ optional: true
+
call-me-maybe@1.0.2: {}
callsites@3.1.0: {}
@@ -16634,27 +15817,27 @@ snapshots:
dependencies:
is-regex: 1.1.4
- chart.js@4.4.8:
+ chart.js@4.4.9:
dependencies:
'@kurkle/color': 0.3.2
- chartjs-adapter-date-fns@3.0.0(chart.js@4.4.8)(date-fns@4.1.0):
+ chartjs-adapter-date-fns@3.0.0(chart.js@4.4.9)(date-fns@4.1.0):
dependencies:
- chart.js: 4.4.8
+ chart.js: 4.4.9
date-fns: 4.1.0
- chartjs-chart-matrix@2.1.1(chart.js@4.4.8):
+ chartjs-chart-matrix@2.1.1(chart.js@4.4.9):
dependencies:
- chart.js: 4.4.8
+ chart.js: 4.4.9
- chartjs-plugin-gradient@0.6.1(chart.js@4.4.8):
+ chartjs-plugin-gradient@0.6.1(chart.js@4.4.9):
dependencies:
- chart.js: 4.4.8
+ chart.js: 4.4.9
- chartjs-plugin-zoom@2.2.0(chart.js@4.4.8):
+ chartjs-plugin-zoom@2.2.0(chart.js@4.4.9):
dependencies:
'@types/hammerjs': 2.0.46
- chart.js: 4.4.8
+ chart.js: 4.4.9
hammerjs: 2.0.8
check-error@2.1.1: {}
@@ -16678,7 +15861,7 @@ snapshots:
domutils: 3.1.0
encoding-sniffer: 0.2.0
htmlparser2: 9.1.0
- parse5: 7.2.1
+ parse5: 7.3.0
parse5-htmlparser2-tree-adapter: 7.0.0
parse5-parser-stream: 7.1.2
undici: 6.20.0
@@ -16694,7 +15877,7 @@ snapshots:
chownr@3.0.0: {}
- chromatic@11.28.0: {}
+ chromatic@11.28.2: {}
ci-info@3.7.1: {}
@@ -16723,7 +15906,7 @@ snapshots:
parse5-htmlparser2-tree-adapter: 6.0.1
yargs: 16.2.0
- cli-table3@0.6.3:
+ cli-table3@0.6.5:
dependencies:
string-width: 4.2.3
optionalDependencies:
@@ -16814,6 +15997,8 @@ snapshots:
compare-versions@6.1.1: {}
+ component-emitter@1.3.1: {}
+
compress-commons@6.0.2:
dependencies:
crc-32: 1.2.2
@@ -16868,6 +16053,8 @@ snapshots:
cookie@1.0.2: {}
+ cookiejar@2.1.4: {}
+
core-util-is@1.0.2: {}
core-util-is@1.0.3: {}
@@ -16884,43 +16071,13 @@ snapshots:
crc-32: 1.2.2
readable-stream: 4.3.0
- create-jest@29.7.0(@types/node@22.13.10):
+ create-jest@29.7.0(@types/node@22.15.2):
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@22.13.10)
- jest-util: 29.7.0
- prompts: 2.4.2
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - supports-color
- - ts-node
-
- create-jest@29.7.0(@types/node@22.13.15):
- 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@22.13.15)
- jest-util: 29.7.0
- prompts: 2.4.2
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - supports-color
- - ts-node
-
- create-jest@29.7.0(@types/node@22.14.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@22.14.0)
+ jest-config: 29.7.0(@types/node@22.15.2)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -17049,9 +16206,9 @@ snapshots:
csstype@3.1.3: {}
- cypress@13.15.2:
+ cypress@14.3.2:
dependencies:
- '@cypress/request': 3.0.6
+ '@cypress/request': 3.0.8
'@cypress/xvfb': 1.2.4(supports-color@8.1.1)
'@types/sinonjs__fake-timers': 8.1.1
'@types/sizzle': 2.3.3
@@ -17064,11 +16221,11 @@ snapshots:
check-more-types: 2.24.0
ci-info: 4.1.0
cli-cursor: 3.1.0
- cli-table3: 0.6.3
+ cli-table3: 0.6.5
commander: 6.2.1
common-tags: 1.8.2
- dayjs: 1.11.10
- debug: 4.3.7(supports-color@8.1.1)
+ dayjs: 1.11.13
+ debug: 4.4.0(supports-color@8.1.1)
enquirer: 2.3.6
eventemitter2: 6.4.7
execa: 4.1.0
@@ -17088,7 +16245,7 @@ snapshots:
process: 0.11.10
proxy-from-env: 1.0.0
request-progress: 3.0.0
- semver: 7.6.3
+ semver: 7.7.1
supports-color: 8.1.1
tmp: 0.2.3
tree-kill: 1.2.2
@@ -17157,17 +16314,15 @@ snapshots:
optionalDependencies:
supports-color: 5.5.0
- debug@4.3.7(supports-color@5.5.0):
+ debug@4.3.7:
dependencies:
ms: 2.1.3
- optionalDependencies:
- supports-color: 5.5.0
- debug@4.3.7(supports-color@8.1.1):
+ debug@4.4.0(supports-color@5.5.0):
dependencies:
ms: 2.1.3
optionalDependencies:
- supports-color: 8.1.1
+ supports-color: 5.5.0
debug@4.4.0(supports-color@8.1.1):
dependencies:
@@ -17182,7 +16337,7 @@ snapshots:
decamelize@1.2.0: {}
- decimal.js@10.4.3: {}
+ decimal.js@10.5.0: {}
decode-bmp@0.2.1:
dependencies:
@@ -17286,6 +16441,11 @@ snapshots:
dependencies:
dequal: 2.0.3
+ dezalgo@1.0.4:
+ dependencies:
+ asap: 2.0.6
+ wrappy: 1.0.2
+
diff-match-patch@1.0.5: {}
diff-sequences@29.6.3: {}
@@ -17394,8 +16554,6 @@ snapshots:
emittery@0.13.1: {}
- emoji-regex-xs@1.0.0: {}
-
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -17427,6 +16585,8 @@ snapshots:
entities@4.5.0: {}
+ entities@6.0.0: {}
+
env-paths@2.2.1: {}
err-code@2.0.3: {}
@@ -17539,68 +16699,40 @@ snapshots:
es-toolkit@1.27.0: {}
- esbuild-register@3.5.0(esbuild@0.25.2):
+ esbuild-register@3.5.0(esbuild@0.25.3):
dependencies:
debug: 4.4.0(supports-color@8.1.1)
- esbuild: 0.25.2
+ esbuild: 0.25.3
transitivePeerDependencies:
- supports-color
- esbuild@0.25.0:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.0
- '@esbuild/android-arm': 0.25.0
- '@esbuild/android-arm64': 0.25.0
- '@esbuild/android-x64': 0.25.0
- '@esbuild/darwin-arm64': 0.25.0
- '@esbuild/darwin-x64': 0.25.0
- '@esbuild/freebsd-arm64': 0.25.0
- '@esbuild/freebsd-x64': 0.25.0
- '@esbuild/linux-arm': 0.25.0
- '@esbuild/linux-arm64': 0.25.0
- '@esbuild/linux-ia32': 0.25.0
- '@esbuild/linux-loong64': 0.25.0
- '@esbuild/linux-mips64el': 0.25.0
- '@esbuild/linux-ppc64': 0.25.0
- '@esbuild/linux-riscv64': 0.25.0
- '@esbuild/linux-s390x': 0.25.0
- '@esbuild/linux-x64': 0.25.0
- '@esbuild/netbsd-arm64': 0.25.0
- '@esbuild/netbsd-x64': 0.25.0
- '@esbuild/openbsd-arm64': 0.25.0
- '@esbuild/openbsd-x64': 0.25.0
- '@esbuild/sunos-x64': 0.25.0
- '@esbuild/win32-arm64': 0.25.0
- '@esbuild/win32-ia32': 0.25.0
- '@esbuild/win32-x64': 0.25.0
-
- esbuild@0.25.2:
+ esbuild@0.25.3:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.2
- '@esbuild/android-arm': 0.25.2
- '@esbuild/android-arm64': 0.25.2
- '@esbuild/android-x64': 0.25.2
- '@esbuild/darwin-arm64': 0.25.2
- '@esbuild/darwin-x64': 0.25.2
- '@esbuild/freebsd-arm64': 0.25.2
- '@esbuild/freebsd-x64': 0.25.2
- '@esbuild/linux-arm': 0.25.2
- '@esbuild/linux-arm64': 0.25.2
- '@esbuild/linux-ia32': 0.25.2
- '@esbuild/linux-loong64': 0.25.2
- '@esbuild/linux-mips64el': 0.25.2
- '@esbuild/linux-ppc64': 0.25.2
- '@esbuild/linux-riscv64': 0.25.2
- '@esbuild/linux-s390x': 0.25.2
- '@esbuild/linux-x64': 0.25.2
- '@esbuild/netbsd-arm64': 0.25.2
- '@esbuild/netbsd-x64': 0.25.2
- '@esbuild/openbsd-arm64': 0.25.2
- '@esbuild/openbsd-x64': 0.25.2
- '@esbuild/sunos-x64': 0.25.2
- '@esbuild/win32-arm64': 0.25.2
- '@esbuild/win32-ia32': 0.25.2
- '@esbuild/win32-x64': 0.25.2
+ '@esbuild/aix-ppc64': 0.25.3
+ '@esbuild/android-arm': 0.25.3
+ '@esbuild/android-arm64': 0.25.3
+ '@esbuild/android-x64': 0.25.3
+ '@esbuild/darwin-arm64': 0.25.3
+ '@esbuild/darwin-x64': 0.25.3
+ '@esbuild/freebsd-arm64': 0.25.3
+ '@esbuild/freebsd-x64': 0.25.3
+ '@esbuild/linux-arm': 0.25.3
+ '@esbuild/linux-arm64': 0.25.3
+ '@esbuild/linux-ia32': 0.25.3
+ '@esbuild/linux-loong64': 0.25.3
+ '@esbuild/linux-mips64el': 0.25.3
+ '@esbuild/linux-ppc64': 0.25.3
+ '@esbuild/linux-riscv64': 0.25.3
+ '@esbuild/linux-s390x': 0.25.3
+ '@esbuild/linux-x64': 0.25.3
+ '@esbuild/netbsd-arm64': 0.25.3
+ '@esbuild/netbsd-x64': 0.25.3
+ '@esbuild/openbsd-arm64': 0.25.3
+ '@esbuild/openbsd-x64': 0.25.3
+ '@esbuild/sunos-x64': 0.25.3
+ '@esbuild/win32-arm64': 0.25.3
+ '@esbuild/win32-ia32': 0.25.3
+ '@esbuild/win32-x64': 0.25.3
escalade@3.1.1: {}
@@ -17620,9 +16752,9 @@ snapshots:
escape-string-regexp@5.0.0: {}
- eslint-config-prettier@9.1.0(eslint@9.22.0):
+ eslint-config-prettier@9.1.0(eslint@9.25.1):
dependencies:
- eslint: 9.22.0
+ eslint: 9.25.1
eslint-formatter-pretty@4.1.0:
dependencies:
@@ -17643,56 +16775,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0):
- dependencies:
- debug: 3.2.7(supports-color@8.1.1)
- optionalDependencies:
- '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
- eslint: 9.22.0
- eslint-import-resolver-node: 0.3.9
- transitivePeerDependencies:
- - supports-color
-
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1):
dependencies:
debug: 3.2.7(supports-color@8.1.1)
optionalDependencies:
- '@typescript-eslint/parser': 8.29.1(eslint@9.23.0)(typescript@5.8.3)
- eslint: 9.23.0
+ '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
+ eslint: 9.25.1
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0):
- dependencies:
- '@rtsao/scc': 1.1.0
- array-includes: 3.1.8
- array.prototype.findlastindex: 1.2.5
- array.prototype.flat: 1.3.2
- array.prototype.flatmap: 1.3.2
- debug: 3.2.7(supports-color@8.1.1)
- doctrine: 2.1.0
- eslint: 9.22.0
- eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0)
- hasown: 2.0.2
- is-core-module: 2.15.1
- is-glob: 4.0.3
- minimatch: 3.1.2
- object.fromentries: 2.0.8
- object.groupby: 1.0.3
- object.values: 1.2.0
- semver: 6.3.1
- string.prototype.trimend: 1.0.8
- tsconfig-paths: 3.15.0
- optionalDependencies:
- '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2)
- transitivePeerDependencies:
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - supports-color
-
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint@9.23.0):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint@9.25.1):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -17701,9 +16794,9 @@ snapshots:
array.prototype.flatmap: 1.3.2
debug: 3.2.7(supports-color@8.1.1)
doctrine: 2.1.0
- eslint: 9.23.0
+ eslint: 9.25.1
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.29.1(eslint@9.23.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.23.0)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.25.1)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -17715,21 +16808,21 @@ snapshots:
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.29.1(eslint@9.23.0)(typescript@5.8.3)
+ '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-vue@10.0.0(eslint@9.23.0)(vue-eslint-parser@10.1.3(eslint@9.23.0)):
+ eslint-plugin-vue@10.0.0(eslint@9.25.1)(vue-eslint-parser@10.1.3(eslint@9.25.1)):
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.23.0)
- eslint: 9.23.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.25.1)
+ eslint: 9.25.1
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.0.16
semver: 7.6.3
- vue-eslint-parser: 10.1.3(eslint@9.23.0)
+ vue-eslint-parser: 10.1.3(eslint@9.25.1)
xml-name-validator: 4.0.0
eslint-rule-docs@1.1.235: {}
@@ -17743,56 +16836,16 @@ snapshots:
eslint-visitor-keys@4.2.0: {}
- eslint@9.22.0:
- dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0)
- '@eslint-community/regexpp': 4.12.1
- '@eslint/config-array': 0.19.2
- '@eslint/config-helpers': 0.1.0
- '@eslint/core': 0.12.0
- '@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.22.0
- '@eslint/plugin-kit': 0.2.7
- '@humanfs/node': 0.16.6
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.2
- '@types/estree': 1.0.7
- '@types/json-schema': 7.0.15
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.6
- debug: 4.4.0(supports-color@8.1.1)
- escape-string-regexp: 4.0.0
- eslint-scope: 8.3.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
- file-entry-cache: 8.0.0
- find-up: 5.0.0
- glob-parent: 6.0.2
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- json-stable-stringify-without-jsonify: 1.0.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.4
- transitivePeerDependencies:
- - supports-color
-
- eslint@9.23.0:
+ eslint@9.25.1:
dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0)
+ '@eslint-community/eslint-utils': 4.5.1(eslint@9.25.1)
'@eslint-community/regexpp': 4.12.1
- '@eslint/config-array': 0.19.2
- '@eslint/config-helpers': 0.2.0
- '@eslint/core': 0.12.0
+ '@eslint/config-array': 0.20.0
+ '@eslint/config-helpers': 0.2.1
+ '@eslint/core': 0.13.0
'@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.23.0
- '@eslint/plugin-kit': 0.2.7
+ '@eslint/js': 9.25.1
+ '@eslint/plugin-kit': 0.2.8
'@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.2
@@ -17874,7 +16927,7 @@ snapshots:
execa@4.1.0:
dependencies:
- cross-spawn: 7.0.3
+ cross-spawn: 7.0.6
get-stream: 5.2.0
human-signals: 1.1.1
is-stream: 2.0.1
@@ -17945,7 +16998,7 @@ snapshots:
expand-template@2.0.3: {}
- expect-type@1.2.0: {}
+ expect-type@1.2.1: {}
expect@29.7.0:
dependencies:
@@ -18168,6 +17221,8 @@ snapshots:
node-domexception: 1.0.0
web-streams-polyfill: 3.2.1
+ fflate@0.8.2: {}
+
figures@3.2.0:
dependencies:
escape-string-regexp: 1.0.5
@@ -18188,6 +17243,15 @@ snapshots:
token-types: 6.0.0
uint8array-extras: 1.4.0
+ file-type@20.4.1:
+ dependencies:
+ '@tokenizer/inflate': 0.2.7
+ strtok3: 10.2.2
+ token-types: 6.0.0
+ uint8array-extras: 1.4.0
+ transitivePeerDependencies:
+ - supports-color
+
filename-reserved-regex@3.0.0: {}
filenamify@6.0.0:
@@ -18275,12 +17339,6 @@ snapshots:
form-data-encoder@4.0.2: {}
- form-data@4.0.0:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- mime-types: 2.1.35
-
form-data@4.0.2:
dependencies:
asynckit: 0.4.0
@@ -18292,6 +17350,12 @@ snapshots:
dependencies:
fetch-blob: 3.2.0
+ formidable@3.5.4:
+ dependencies:
+ '@paralleldrive/cuid2': 2.2.2
+ dezalgo: 1.0.4
+ once: 1.4.0
+
forwarded-parse@2.1.2: {}
forwarded@0.2.0: {}
@@ -18428,14 +17492,6 @@ snapshots:
dependencies:
is-glob: 4.0.3
- glob@10.3.10:
- dependencies:
- foreground-child: 3.1.1
- jackspeak: 2.3.6
- minimatch: 9.0.5
- minipass: 7.1.2
- path-scurry: 1.10.1
-
glob@10.4.5:
dependencies:
foreground-child: 3.1.1
@@ -18463,6 +17519,15 @@ snapshots:
package-json-from-dist: 1.0.0
path-scurry: 2.0.0
+ glob@11.0.2:
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 4.0.1
+ minimatch: 10.0.1
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.0
+ path-scurry: 2.0.0
+
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
@@ -18683,7 +17748,7 @@ snapshots:
http-proxy-agent@7.0.2:
dependencies:
- agent-base: 7.1.0
+ agent-base: 7.1.3
debug: 4.4.0(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
@@ -18709,13 +17774,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- https-proxy-agent@7.0.5:
- dependencies:
- agent-base: 7.1.0
- debug: 4.4.0(supports-color@8.1.1)
- transitivePeerDependencies:
- - supports-color
-
https-proxy-agent@7.0.6:
dependencies:
agent-base: 7.1.3
@@ -18817,11 +17875,11 @@ snapshots:
intersection-observer@0.12.2: {}
- ioredis@5.6.0:
+ ioredis@5.6.1:
dependencies:
'@ioredis/commands': 1.2.0
cluster-key-slot: 1.1.2
- debug: 4.3.7(supports-color@8.1.1)
+ debug: 4.4.0(supports-color@8.1.1)
denque: 2.1.0
lodash.defaults: 4.2.0
lodash.isarguments: 3.1.0
@@ -19082,12 +18140,6 @@ snapshots:
iterare@1.2.1: {}
- jackspeak@2.3.6:
- dependencies:
- '@isaacs/cliui': 8.0.2
- optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
-
jackspeak@3.4.3:
dependencies:
'@isaacs/cliui': 8.0.2
@@ -19112,7 +18164,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
chalk: 4.1.2
co: 4.6.0
dedent: 1.3.0
@@ -19132,54 +18184,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@22.13.10):
- 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@22.13.10)
- exit: 0.1.2
- import-local: 3.1.0
- jest-config: 29.7.0(@types/node@22.13.10)
- jest-util: 29.7.0
- jest-validate: 29.7.0
- yargs: 17.7.2
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - supports-color
- - ts-node
-
- jest-cli@29.7.0(@types/node@22.13.15):
- 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@22.13.15)
- exit: 0.1.2
- import-local: 3.1.0
- jest-config: 29.7.0(@types/node@22.13.15)
- jest-util: 29.7.0
- jest-validate: 29.7.0
- yargs: 17.7.2
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - supports-color
- - ts-node
-
- jest-cli@29.7.0(@types/node@22.14.0):
+ jest-cli@29.7.0(@types/node@22.15.2):
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@22.14.0)
+ create-jest: 29.7.0(@types/node@22.15.2)
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@22.14.0)
+ jest-config: 29.7.0(@types/node@22.15.2)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -19189,37 +18203,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@22.13.10):
- dependencies:
- '@babel/core': 7.23.5
- '@jest/test-sequencer': 29.7.0
- '@jest/types': 29.6.3
- babel-jest: 29.7.0(@babel/core@7.23.5)
- chalk: 4.1.2
- ci-info: 3.7.1
- deepmerge: 4.2.2
- glob: 7.2.3
- graceful-fs: 4.2.11
- jest-circus: 29.7.0
- jest-environment-node: 29.7.0
- jest-get-type: 29.6.3
- jest-regex-util: 29.6.3
- jest-resolve: 29.7.0
- jest-runner: 29.7.0
- jest-util: 29.7.0
- jest-validate: 29.7.0
- micromatch: 4.0.8
- parse-json: 5.2.0
- pretty-format: 29.7.0
- slash: 3.0.0
- strip-json-comments: 3.1.1
- optionalDependencies:
- '@types/node': 22.13.10
- transitivePeerDependencies:
- - babel-plugin-macros
- - supports-color
-
- jest-config@29.7.0(@types/node@22.13.15):
+ jest-config@29.7.0(@types/node@22.15.2):
dependencies:
'@babel/core': 7.23.5
'@jest/test-sequencer': 29.7.0
@@ -19244,37 +18228,7 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.13.15
- transitivePeerDependencies:
- - babel-plugin-macros
- - supports-color
-
- jest-config@29.7.0(@types/node@22.14.0):
- dependencies:
- '@babel/core': 7.23.5
- '@jest/test-sequencer': 29.7.0
- '@jest/types': 29.6.3
- babel-jest: 29.7.0(@babel/core@7.23.5)
- chalk: 4.1.2
- ci-info: 3.7.1
- deepmerge: 4.2.2
- glob: 7.2.3
- graceful-fs: 4.2.11
- jest-circus: 29.7.0
- jest-environment-node: 29.7.0
- jest-get-type: 29.6.3
- jest-regex-util: 29.6.3
- jest-resolve: 29.7.0
- jest-runner: 29.7.0
- jest-util: 29.7.0
- jest-validate: 29.7.0
- micromatch: 4.0.8
- parse-json: 5.2.0
- pretty-format: 29.7.0
- slash: 3.0.0
- strip-json-comments: 3.1.1
- optionalDependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -19303,7 +18257,7 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -19320,7 +18274,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.6
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -19359,7 +18313,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -19394,7 +18348,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -19422,7 +18376,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
chalk: 4.1.2
cjs-module-lexer: 1.2.2
collect-v8-coverage: 1.0.1
@@ -19468,7 +18422,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
chalk: 4.1.2
ci-info: 3.7.1
graceful-fs: 4.2.11
@@ -19487,7 +18441,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -19501,41 +18455,17 @@ snapshots:
jest-worker@29.7.0:
dependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@22.13.10):
- dependencies:
- '@jest/core': 29.7.0
- '@jest/types': 29.6.3
- import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@22.13.10)
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - supports-color
- - ts-node
-
- jest@29.7.0(@types/node@22.13.15):
- dependencies:
- '@jest/core': 29.7.0
- '@jest/types': 29.6.3
- import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@22.13.15)
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - supports-color
- - ts-node
-
- jest@29.7.0(@types/node@22.14.0):
+ jest@29.7.0(@types/node@22.15.2):
dependencies:
'@jest/core': 29.7.0
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@22.14.0)
+ jest-cli: 29.7.0(@types/node@22.15.2)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -19588,22 +18518,21 @@ snapshots:
jsdoc-type-pratt-parser@4.1.0: {}
- jsdom@26.0.0:
+ jsdom@26.1.0:
dependencies:
cssstyle: 4.3.0
data-urls: 5.0.0
- decimal.js: 10.4.3
- form-data: 4.0.2
+ decimal.js: 10.5.0
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.19
- parse5: 7.2.1
+ parse5: 7.3.0
rrweb-cssom: 0.8.0
saxes: 6.0.0
symbol-tree: 3.2.4
- tough-cookie: 5.0.0
+ tough-cookie: 5.1.2
w3c-xmlserializer: 5.0.0
webidl-conversions: 7.0.0
whatwg-encoding: 3.1.1
@@ -19617,22 +18546,21 @@ snapshots:
- utf-8-validate
optional: true
- jsdom@26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5):
+ jsdom@26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5):
dependencies:
cssstyle: 4.3.0
data-urls: 5.0.0
- decimal.js: 10.4.3
- form-data: 4.0.2
+ decimal.js: 10.5.0
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.19
- parse5: 7.2.1
+ parse5: 7.3.0
rrweb-cssom: 0.8.0
saxes: 6.0.0
symbol-tree: 3.2.4
- tough-cookie: 5.0.0
+ tough-cookie: 5.1.2
w3c-xmlserializer: 5.0.0
webidl-conversions: 7.0.0
whatwg-encoding: 3.1.1
@@ -19805,6 +18733,8 @@ snapshots:
enquirer: 2.3.6
optional: true
+ load-esm@1.0.2: {}
+
locate-path@5.0.0:
dependencies:
p-locate: 4.1.0
@@ -19865,8 +18795,6 @@ snapshots:
lru-cache@8.0.4: {}
- lunr@2.3.9: {}
-
luxon@3.3.0: {}
lz-string@1.5.0: {}
@@ -19923,8 +18851,6 @@ snapshots:
markdown-table@3.0.3: {}
- marked@4.3.0: {}
-
math-intrinsics@1.1.0: {}
matter-js@0.20.0: {}
@@ -20048,7 +18974,7 @@ snapshots:
media-typer@0.3.0: {}
- meilisearch@0.49.0: {}
+ meilisearch@0.50.0: {}
memoizerific@1.11.3:
dependencies:
@@ -20081,7 +19007,7 @@ snapshots:
microformats-parser@2.0.2:
dependencies:
- parse5: 7.2.1
+ parse5: 7.3.0
micromark-core-commonmark@2.0.0:
dependencies:
@@ -20421,17 +19347,17 @@ snapshots:
optionalDependencies:
msgpackr-extract: 3.0.2
- msw-storybook-addon@2.0.4(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3)):
+ msw-storybook-addon@2.0.4(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3)):
dependencies:
is-node-process: 1.2.0
- msw: 2.7.3(@types/node@22.14.0)(typescript@5.8.3)
+ msw: 2.7.5(@types/node@22.15.2)(typescript@5.8.3)
- msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3):
+ msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3):
dependencies:
'@bundled-es-modules/cookie': 2.0.1
'@bundled-es-modules/statuses': 1.0.1
'@bundled-es-modules/tough-cookie': 0.1.6
- '@inquirer/confirm': 5.0.2(@types/node@22.14.0)
+ '@inquirer/confirm': 5.0.2(@types/node@22.15.2)
'@mswjs/interceptors': 0.37.6
'@open-draft/deferred-promise': 2.2.0
'@open-draft/until': 2.1.0
@@ -20547,7 +19473,7 @@ snapshots:
dependencies:
env-paths: 2.2.1
exponential-backoff: 3.1.1
- glob: 10.3.10
+ glob: 10.4.5
graceful-fs: 4.2.11
make-fetch-happen: 13.0.0
nopt: 7.2.0
@@ -20564,29 +19490,29 @@ snapshots:
node-releases@2.0.19: {}
- nodemailer@6.10.0: {}
+ nodemailer@6.10.1: {}
- nodemon@3.1.7:
+ nodemon@3.1.10:
dependencies:
chokidar: 4.0.3
- debug: 4.3.5(supports-color@5.5.0)
+ debug: 4.4.0(supports-color@5.5.0)
ignore-by-default: 1.0.1
minimatch: 3.1.2
pstree.remy: 1.1.8
- semver: 7.6.0
+ semver: 7.7.1
simple-update-notifier: 2.0.0
supports-color: 5.5.0
touch: 3.1.0
undefsafe: 2.0.5
- nodemon@3.1.9:
+ nodemon@3.1.7:
dependencies:
chokidar: 4.0.3
- debug: 4.3.7(supports-color@5.5.0)
+ debug: 4.3.5(supports-color@5.5.0)
ignore-by-default: 1.0.1
minimatch: 3.1.2
pstree.remy: 1.1.8
- semver: 7.6.3
+ semver: 7.6.0
simple-update-notifier: 2.0.0
supports-color: 5.5.0
touch: 3.1.0
@@ -20616,8 +19542,8 @@ snapshots:
normalize-package-data@3.0.3:
dependencies:
hosted-git-info: 4.1.0
- is-core-module: 2.13.1
- semver: 7.6.0
+ is-core-module: 2.15.1
+ semver: 7.7.1
validate-npm-package-license: 3.0.4
normalize-path@3.0.0: {}
@@ -20657,8 +19583,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- oauth@0.10.0: {}
-
oauth@0.10.2: {}
object-assign-deep@0.4.0: {}
@@ -20669,6 +19593,9 @@ snapshots:
object-inspect@1.13.2: {}
+ object-inspect@1.13.4:
+ optional: true
+
object-is@1.1.5:
dependencies:
call-bind: 1.0.2
@@ -20733,12 +19660,11 @@ snapshots:
dependencies:
mimic-fn: 4.0.0
- oniguruma-parser@0.5.4: {}
+ oniguruma-parser@0.12.0: {}
- oniguruma-to-es@4.1.0:
+ oniguruma-to-es@4.3.1:
dependencies:
- emoji-regex-xs: 1.0.0
- oniguruma-parser: 0.5.4
+ oniguruma-parser: 0.12.0
regex: 6.0.1
regex-recursion: 6.0.2
@@ -20844,19 +19770,19 @@ snapshots:
parse5-htmlparser2-tree-adapter@7.0.0:
dependencies:
domhandler: 5.0.3
- parse5: 7.2.1
+ parse5: 7.3.0
parse5-parser-stream@7.1.2:
dependencies:
- parse5: 7.2.1
+ parse5: 7.3.0
parse5@5.1.1: {}
parse5@6.0.1: {}
- parse5@7.2.1:
+ parse5@7.3.0:
dependencies:
- entities: 4.5.0
+ entities: 6.0.0
parseurl@1.3.3: {}
@@ -20872,11 +19798,6 @@ snapshots:
path-parse@1.0.7: {}
- path-scurry@1.10.1:
- dependencies:
- lru-cache: 10.2.2
- minipass: 7.1.2
-
path-scurry@1.11.1:
dependencies:
lru-cache: 10.4.3
@@ -20891,8 +19812,6 @@ snapshots:
path-to-regexp@0.1.12: {}
- path-to-regexp@3.3.0: {}
-
path-to-regexp@6.3.0: {}
path-to-regexp@8.2.0: {}
@@ -20909,28 +19828,30 @@ snapshots:
peek-readable@5.3.1: {}
+ peek-readable@7.0.0: {}
+
pend@1.2.0: {}
performance-now@2.1.0:
optional: true
- pg-cloudflare@1.1.1:
+ pg-cloudflare@1.2.5:
optional: true
- pg-connection-string@2.7.0: {}
+ pg-connection-string@2.8.5: {}
pg-int8@1.0.1: {}
pg-numeric@1.0.2: {}
- pg-pool@3.8.0(pg@8.14.1):
+ pg-pool@3.9.6(pg@8.15.6):
dependencies:
- pg: 8.14.1
-
- pg-protocol@1.7.0: {}
+ pg: 8.15.6
pg-protocol@1.8.0: {}
+ pg-protocol@1.9.5: {}
+
pg-types@2.2.0:
dependencies:
pg-int8: 1.0.1
@@ -20949,15 +19870,15 @@ snapshots:
postgres-interval: 3.0.0
postgres-range: 1.1.3
- pg@8.14.1:
+ pg@8.15.6:
dependencies:
- pg-connection-string: 2.7.0
- pg-pool: 3.8.0(pg@8.14.1)
- pg-protocol: 1.8.0
+ pg-connection-string: 2.8.5
+ pg-pool: 3.9.6(pg@8.15.6)
+ pg-protocol: 1.9.5
pg-types: 2.2.0
pgpass: 1.0.5
optionalDependencies:
- pg-cloudflare: 1.1.1
+ pg-cloudflare: 1.2.5
pgpass@1.0.5:
dependencies:
@@ -21021,7 +19942,7 @@ snapshots:
pngjs@5.0.0: {}
- pnpm@10.6.1: {}
+ pnpm@10.10.0: {}
polished@4.2.2:
dependencies:
@@ -21240,8 +20161,6 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier@3.3.3: {}
-
prettier@3.5.3: {}
pretty-bytes@5.6.0:
@@ -21420,7 +20339,7 @@ snapshots:
pvtsutils@1.3.5:
dependencies:
- tslib: 2.7.0
+ tslib: 2.8.1
pvutils@1.1.3: {}
@@ -21434,6 +20353,11 @@ snapshots:
dependencies:
side-channel: 1.0.6
+ qs@6.14.0:
+ dependencies:
+ side-channel: 1.1.0
+ optional: true
+
querystringify@2.2.0: {}
queue-lit@1.5.0: {}
@@ -21710,32 +20634,32 @@ snapshots:
rimraf@5.0.10:
dependencies:
- glob: 10.3.10
+ glob: 10.4.5
- rollup@4.39.0:
+ rollup@4.40.0:
dependencies:
'@types/estree': 1.0.7
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.39.0
- '@rollup/rollup-android-arm64': 4.39.0
- '@rollup/rollup-darwin-arm64': 4.39.0
- '@rollup/rollup-darwin-x64': 4.39.0
- '@rollup/rollup-freebsd-arm64': 4.39.0
- '@rollup/rollup-freebsd-x64': 4.39.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.39.0
- '@rollup/rollup-linux-arm-musleabihf': 4.39.0
- '@rollup/rollup-linux-arm64-gnu': 4.39.0
- '@rollup/rollup-linux-arm64-musl': 4.39.0
- '@rollup/rollup-linux-loongarch64-gnu': 4.39.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0
- '@rollup/rollup-linux-riscv64-gnu': 4.39.0
- '@rollup/rollup-linux-riscv64-musl': 4.39.0
- '@rollup/rollup-linux-s390x-gnu': 4.39.0
- '@rollup/rollup-linux-x64-gnu': 4.39.0
- '@rollup/rollup-linux-x64-musl': 4.39.0
- '@rollup/rollup-win32-arm64-msvc': 4.39.0
- '@rollup/rollup-win32-ia32-msvc': 4.39.0
- '@rollup/rollup-win32-x64-msvc': 4.39.0
+ '@rollup/rollup-android-arm-eabi': 4.40.0
+ '@rollup/rollup-android-arm64': 4.40.0
+ '@rollup/rollup-darwin-arm64': 4.40.0
+ '@rollup/rollup-darwin-x64': 4.40.0
+ '@rollup/rollup-freebsd-arm64': 4.40.0
+ '@rollup/rollup-freebsd-x64': 4.40.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.40.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.40.0
+ '@rollup/rollup-linux-arm64-gnu': 4.40.0
+ '@rollup/rollup-linux-arm64-musl': 4.40.0
+ '@rollup/rollup-linux-loongarch64-gnu': 4.40.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.40.0
+ '@rollup/rollup-linux-riscv64-musl': 4.40.0
+ '@rollup/rollup-linux-s390x-gnu': 4.40.0
+ '@rollup/rollup-linux-x64-gnu': 4.40.0
+ '@rollup/rollup-linux-x64-musl': 4.40.0
+ '@rollup/rollup-win32-arm64-msvc': 4.40.0
+ '@rollup/rollup-win32-ia32-msvc': 4.40.0
+ '@rollup/rollup-win32-x64-msvc': 4.40.0
fsevents: 2.3.3
rrweb-cssom@0.8.0: {}
@@ -21778,7 +20702,7 @@ snapshots:
safer-buffer@2.1.2: {}
- sanitize-html@2.15.0:
+ sanitize-html@2.16.0:
dependencies:
deepmerge: 4.2.2
escape-string-regexp: 4.0.0
@@ -21787,7 +20711,7 @@ snapshots:
parse-srcset: 1.0.2
postcss: 8.5.3
- sass@1.86.3:
+ sass@1.87.0:
dependencies:
chokidar: 4.0.3
immutable: 5.0.3
@@ -21893,32 +20817,6 @@ snapshots:
inherits: 2.0.4
safe-buffer: 5.2.1
- sharp@0.33.5:
- dependencies:
- color: 4.2.3
- detect-libc: 2.0.3
- semver: 7.7.1
- optionalDependencies:
- '@img/sharp-darwin-arm64': 0.33.5
- '@img/sharp-darwin-x64': 0.33.5
- '@img/sharp-libvips-darwin-arm64': 1.0.4
- '@img/sharp-libvips-darwin-x64': 1.0.4
- '@img/sharp-libvips-linux-arm': 1.0.5
- '@img/sharp-libvips-linux-arm64': 1.0.4
- '@img/sharp-libvips-linux-s390x': 1.0.4
- '@img/sharp-libvips-linux-x64': 1.0.4
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
- '@img/sharp-libvips-linuxmusl-x64': 1.0.4
- '@img/sharp-linux-arm': 0.33.5
- '@img/sharp-linux-arm64': 0.33.5
- '@img/sharp-linux-s390x': 0.33.5
- '@img/sharp-linux-x64': 0.33.5
- '@img/sharp-linuxmusl-arm64': 0.33.5
- '@img/sharp-linuxmusl-x64': 0.33.5
- '@img/sharp-wasm32': 0.33.5
- '@img/sharp-win32-ia32': 0.33.5
- '@img/sharp-win32-x64': 0.33.5
-
sharp@0.34.1:
dependencies:
color: 4.2.3
@@ -21952,26 +20850,42 @@ snapshots:
shebang-regex@3.0.0: {}
- shiki@0.14.7:
+ shiki@3.3.0:
dependencies:
- ansi-sequence-parser: 1.1.1
- jsonc-parser: 3.2.0
- vscode-oniguruma: 1.7.0
- vscode-textmate: 8.0.0
-
- shiki@3.2.2:
- dependencies:
- '@shikijs/core': 3.2.2
- '@shikijs/engine-javascript': 3.2.2
- '@shikijs/engine-oniguruma': 3.2.2
- '@shikijs/langs': 3.2.2
- '@shikijs/themes': 3.2.2
- '@shikijs/types': 3.2.2
+ '@shikijs/core': 3.3.0
+ '@shikijs/engine-javascript': 3.3.0
+ '@shikijs/engine-oniguruma': 3.3.0
+ '@shikijs/langs': 3.3.0
+ '@shikijs/themes': 3.3.0
+ '@shikijs/types': 3.3.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
shimmer@1.2.1: {}
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ optional: true
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ optional: true
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+ optional: true
+
side-channel@1.0.4:
dependencies:
call-bind: 1.0.2
@@ -21985,6 +20899,15 @@ snapshots:
get-intrinsic: 1.2.4
object-inspect: 1.13.2
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+ optional: true
+
siginfo@2.0.0: {}
signal-exit@3.0.7: {}
@@ -22105,7 +21028,7 @@ snapshots:
socks-proxy-agent@8.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.7(supports-color@8.1.1)
+ debug: 4.3.7
socks: 2.7.1
transitivePeerDependencies:
- supports-color
@@ -22210,19 +21133,6 @@ snapshots:
standard-as-callback@2.1.0: {}
- start-server-and-test@2.0.10:
- dependencies:
- arg: 5.0.2
- bluebird: 3.7.2
- check-more-types: 2.24.0
- debug: 4.4.0(supports-color@8.1.1)
- execa: 5.1.1
- lazy-ass: 1.6.0
- ps-tree: 1.2.0
- wait-on: 8.0.2(debug@4.4.0)
- transitivePeerDependencies:
- - supports-color
-
start-server-and-test@2.0.11:
dependencies:
arg: 5.0.2
@@ -22238,7 +21148,7 @@ snapshots:
statuses@2.0.1: {}
- std-env@3.8.1: {}
+ std-env@3.9.0: {}
stop-iteration-iterator@1.0.0:
dependencies:
@@ -22385,6 +21295,11 @@ snapshots:
strnum@1.0.5: {}
+ strtok3@10.2.2:
+ dependencies:
+ '@tokenizer/token': 0.3.0
+ peek-readable: 7.0.0
+
strtok3@9.0.1:
dependencies:
'@tokenizer/token': 0.3.0
@@ -22396,6 +21311,27 @@ snapshots:
postcss: 8.5.3
postcss-selector-parser: 6.1.2
+ superagent@9.0.2:
+ dependencies:
+ component-emitter: 1.3.1
+ cookiejar: 2.1.4
+ debug: 4.4.0(supports-color@8.1.1)
+ fast-safe-stringify: 2.1.1
+ form-data: 4.0.2
+ formidable: 3.5.4
+ methods: 1.1.2
+ mime: 2.6.0
+ qs: 6.13.0
+ transitivePeerDependencies:
+ - supports-color
+
+ supertest@7.1.0:
+ dependencies:
+ methods: 1.1.2
+ superagent: 9.0.2
+ transitivePeerDependencies:
+ - supports-color
+
supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
@@ -22515,7 +21451,7 @@ snapshots:
dependencies:
real-require: 0.2.0
- three@0.175.0: {}
+ three@0.176.0: {}
throttle-debounce@5.0.2: {}
@@ -22588,6 +21524,11 @@ snapshots:
tough-cookie@5.0.0:
dependencies:
tldts: 6.1.63
+ optional: true
+
+ tough-cookie@5.1.2:
+ dependencies:
+ tldts: 6.1.63
tr46@0.0.3: {}
@@ -22604,14 +21545,6 @@ snapshots:
trough@2.2.0: {}
- ts-api-utils@2.1.0(typescript@5.1.6):
- dependencies:
- typescript: 5.1.6
-
- ts-api-utils@2.1.0(typescript@5.8.2):
- dependencies:
- typescript: 5.8.2
-
ts-api-utils@2.1.0(typescript@5.8.3):
dependencies:
typescript: 5.8.3
@@ -22620,23 +21553,23 @@ snapshots:
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.25.0)(jest@29.7.0(@types/node@22.13.10))(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.25.3)(jest@29.7.0(@types/node@22.15.2))(typescript@5.8.3):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
- jest: 29.7.0(@types/node@22.13.10)
+ jest: 29.7.0(@types/node@22.15.2)
jest-util: 29.7.0
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
semver: 7.6.0
- typescript: 5.1.6
+ typescript: 5.8.3
yargs-parser: 21.1.1
optionalDependencies:
'@babel/core': 7.24.7
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.24.7)
- esbuild: 0.25.0
+ esbuild: 0.25.3
ts-map@1.0.3: {}
@@ -22663,9 +21596,9 @@ snapshots:
minimist: 1.2.8
strip-bom: 3.0.0
- tsd@0.31.2:
+ tsd@0.32.0:
dependencies:
- '@tsd/typescript': 5.4.5
+ '@tsd/typescript': 5.8.3
eslint-formatter-pretty: 4.1.0
globby: 11.1.0
jest-diff: 29.7.0
@@ -22681,7 +21614,7 @@ snapshots:
tsx@4.19.3:
dependencies:
- esbuild: 0.25.2
+ esbuild: 0.25.3
get-tsconfig: 4.10.0
optionalDependencies:
fsevents: 2.3.3
@@ -22749,15 +21682,7 @@ snapshots:
typedarray@0.0.6: {}
- typedoc@0.25.13(typescript@5.1.6):
- dependencies:
- lunr: 2.3.9
- marked: 4.3.0
- minimatch: 9.0.5
- shiki: 0.14.7
- typescript: 5.1.6
-
- typeorm@0.3.22(ioredis@5.6.0)(pg@8.14.1)(reflect-metadata@0.2.2):
+ typeorm@0.3.22(ioredis@5.6.1)(pg@8.15.6)(reflect-metadata@0.2.2):
dependencies:
'@sqltools/formatter': 1.2.5
ansis: 3.17.0
@@ -22774,13 +21699,11 @@ snapshots:
uuid: 11.1.0
yargs: 17.7.2
optionalDependencies:
- ioredis: 5.6.0
- pg: 8.14.1
+ ioredis: 5.6.1
+ pg: 8.15.6
transitivePeerDependencies:
- supports-color
- typescript@5.1.6: {}
-
typescript@5.8.2: {}
typescript@5.8.3: {}
@@ -22809,8 +21732,6 @@ snapshots:
undefsafe@2.0.5: {}
- undici-types@6.20.0: {}
-
undici-types@6.21.0: {}
undici@5.28.2:
@@ -22971,13 +21892,13 @@ snapshots:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
- vite-node@3.1.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3):
+ vite-node@3.1.2(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3):
dependencies:
cac: 6.7.14
debug: 4.4.0(supports-color@8.1.1)
es-module-lexer: 1.6.0
pathe: 2.0.3
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -22994,52 +21915,53 @@ snapshots:
vite-plugin-turbosnap@1.0.3: {}
- vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3):
+ vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3):
dependencies:
- esbuild: 0.25.2
+ esbuild: 0.25.3
fdir: 6.4.4(picomatch@4.0.2)
picomatch: 4.0.2
postcss: 8.5.3
- rollup: 4.39.0
+ rollup: 4.40.0
tinyglobby: 0.2.13
optionalDependencies:
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
fsevents: 2.3.3
- sass: 1.86.3
+ sass: 1.87.0
terser: 5.39.0
tsx: 4.19.3
- vitest-fetch-mock@0.4.5(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)):
+ vitest-fetch-mock@0.4.5(vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)):
dependencies:
- vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vitest: 3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
- vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3):
+ vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3):
dependencies:
- '@vitest/expect': 3.1.1
- '@vitest/mocker': 3.1.1(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
+ '@vitest/expect': 3.1.2
+ '@vitest/mocker': 3.1.2(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
'@vitest/pretty-format': 3.1.2
- '@vitest/runner': 3.1.1
- '@vitest/snapshot': 3.1.1
- '@vitest/spy': 3.1.1
- '@vitest/utils': 3.1.1
+ '@vitest/runner': 3.1.2
+ '@vitest/snapshot': 3.1.2
+ '@vitest/spy': 3.1.2
+ '@vitest/utils': 3.1.2
chai: 5.2.0
debug: 4.4.0(supports-color@8.1.1)
- expect-type: 1.2.0
+ expect-type: 1.2.1
magic-string: 0.30.17
pathe: 2.0.3
- std-env: 3.8.1
+ std-env: 3.9.0
tinybench: 2.9.0
tinyexec: 0.3.2
+ tinyglobby: 0.2.13
tinypool: 1.0.2
tinyrainbow: 2.0.0
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
- vite-node: 3.1.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
+ vite-node: 3.1.2(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
happy-dom: 17.4.4
- jsdom: 26.0.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5)
+ jsdom: 26.1.0(bufferutil@4.0.9)(canvas@3.1.0)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- jiti
- less
@@ -23054,33 +21976,34 @@ snapshots:
- tsx
- yaml
- vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(happy-dom@17.4.4)(jsdom@26.0.0)(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3):
+ vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@17.4.4)(jsdom@26.1.0)(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3):
dependencies:
- '@vitest/expect': 3.1.1
- '@vitest/mocker': 3.1.1(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.3))(vite@6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3))
+ '@vitest/expect': 3.1.2
+ '@vitest/mocker': 3.1.2(msw@2.7.5(@types/node@22.15.2)(typescript@5.8.3))(vite@6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3))
'@vitest/pretty-format': 3.1.2
- '@vitest/runner': 3.1.1
- '@vitest/snapshot': 3.1.1
- '@vitest/spy': 3.1.1
- '@vitest/utils': 3.1.1
+ '@vitest/runner': 3.1.2
+ '@vitest/snapshot': 3.1.2
+ '@vitest/spy': 3.1.2
+ '@vitest/utils': 3.1.2
chai: 5.2.0
debug: 4.4.0(supports-color@8.1.1)
- expect-type: 1.2.0
+ expect-type: 1.2.1
magic-string: 0.30.17
pathe: 2.0.3
- std-env: 3.8.1
+ std-env: 3.9.0
tinybench: 2.9.0
tinyexec: 0.3.2
+ tinyglobby: 0.2.13
tinypool: 1.0.2
tinyrainbow: 2.0.0
- vite: 6.3.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
- vite-node: 3.1.1(@types/node@22.14.0)(sass@1.86.3)(terser@5.39.0)(tsx@4.19.3)
+ vite: 6.3.3(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
+ vite-node: 3.1.2(@types/node@22.15.2)(sass@1.87.0)(terser@5.39.0)(tsx@4.19.3)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
- '@types/node': 22.14.0
+ '@types/node': 22.15.2
happy-dom: 17.4.4
- jsdom: 26.0.0
+ jsdom: 26.1.0
transitivePeerDependencies:
- jiti
- less
@@ -23118,10 +22041,6 @@ snapshots:
dependencies:
vscode-languageserver-protocol: 3.17.5
- vscode-oniguruma@1.7.0: {}
-
- vscode-textmate@8.0.0: {}
-
vscode-uri@3.0.8: {}
vue-component-meta@2.0.16(typescript@5.8.3):
@@ -23139,8 +22058,6 @@ snapshots:
vue-component-type-helpers@2.2.10: {}
- vue-component-type-helpers@2.2.8: {}
-
vue-demi@0.14.7(vue@3.5.13(typescript@5.8.3)):
dependencies:
vue: 3.5.13(typescript@5.8.3)
@@ -23160,10 +22077,10 @@ snapshots:
vue: 3.5.13(typescript@5.8.3)
vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.13(typescript@5.8.3))
- vue-eslint-parser@10.1.3(eslint@9.23.0):
+ vue-eslint-parser@10.1.3(eslint@9.25.1):
dependencies:
debug: 4.4.0(supports-color@8.1.1)
- eslint: 9.23.0
+ eslint: 9.25.1
eslint-scope: 8.3.0
eslint-visitor-keys: 4.2.0
espree: 10.3.0
@@ -23182,10 +22099,10 @@ snapshots:
de-indent: 1.0.2
he: 1.2.0
- vue-tsc@2.2.8(typescript@5.8.3):
+ vue-tsc@2.2.10(typescript@5.8.3):
dependencies:
'@volar/typescript': 2.4.12
- '@vue/language-core': 2.2.8(typescript@5.8.3)
+ '@vue/language-core': 2.2.10(typescript@5.8.3)
typescript: 5.8.3
vue@3.5.13(typescript@5.8.3):
@@ -23207,16 +22124,6 @@ snapshots:
dependencies:
xml-name-validator: 5.0.0
- wait-on@8.0.2(debug@4.4.0):
- dependencies:
- axios: 1.8.4(debug@4.4.0)
- joi: 17.13.3
- lodash: 4.17.21
- minimist: 1.2.8
- rxjs: 7.8.2
- transitivePeerDependencies:
- - debug
-
wait-on@8.0.3(debug@4.4.0):
dependencies:
axios: 1.8.4(debug@4.4.0)
diff --git a/renovate.json5 b/renovate.json5
index 395405972d..d2a491a7b4 100644
--- a/renovate.json5
+++ b/renovate.json5
@@ -38,6 +38,8 @@
'packages/misskey-reversi/**/package.json',
'packages/sw/**/package.json',
],
+ // prevent wastage of Chromatic snapshots
+ rebaseWhen: 'never',
},
{
groupName: '[misskey-js] Update dependencies',
diff --git a/scripts/dependency-patches/re2.patch b/scripts/dependency-patches/re2.patch
deleted file mode 100644
index 3e7ec9f56f..0000000000
--- a/scripts/dependency-patches/re2.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/package.json b/package.json
-index a56ab59ef647288ee6028abd2b1780eaa92ebc9d..ec2c43e63f3134b6d54d616b2ef715447f873bbe 100644
---- a/package.json
-+++ b/package.json
-@@ -28,7 +28,7 @@
- "test": "node tests/tests.js",
- "ts-test": "tsc",
- "save-to-github": "save-to-github-cache --artifact build/Release/re2.node",
-- "install": "install-from-cache --artifact build/Release/re2.node --host-var RE2_DOWNLOAD_MIRROR --skip-path-var RE2_DOWNLOAD_SKIP_PATH --skip-ver-var RE2_DOWNLOAD_SKIP_VER || node-gyp -j max rebuild",
-+ "install": "npm_package_github=https://github.com/uhop/node-re2 npm_package_scripts_verify_build=true install-from-cache --artifact build/Release/re2.node --host-var RE2_DOWNLOAD_MIRROR --skip-path-var RE2_DOWNLOAD_SKIP_PATH --skip-ver-var RE2_DOWNLOAD_SKIP_VER || node-gyp -j max rebuild",
- "verify-build": "node scripts/verify-build.js",
- "build:dev": "node-gyp -j max build --debug",
- "build": "node-gyp -j max build",