From d8a2eeb7ed44a4e25426ca9b7c6c85b8c62d3106 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
<67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Thu, 26 Sep 2024 14:15:03 +0900
Subject: [PATCH 001/194] =?UTF-8?q?feat:=20=E3=82=A8=E3=82=AF=E3=82=B9?=
=?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=88=E5=AE=8C=E4=BA=86=E6=99=82=E3=81=AB?=
=?UTF-8?q?=E9=80=9A=E7=9F=A5=E3=82=92=E7=99=BA=E8=A1=8C=E3=81=99=E3=82=8B?=
=?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=20(#14484)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat: エクスポート完了時に通知を発行するように
* Update Changelog
* entitity -> entity
* fix: ペイロードを含むように
* fix icon
* exportableEntities -> userExportableEntities
---
CHANGELOG.md | 1 +
locales/index.d.ts | 16 ++++++++++
locales/ja-JP.yml | 4 +++
.../entities/NotificationEntityService.ts | 4 +++
packages/backend/src/models/Notification.ts | 8 +++++
.../src/models/json-schema/notification.ts | 22 +++++++++++++-
.../ExportAntennasProcessorService.ts | 7 +++++
.../ExportBlockingProcessorService.ts | 7 +++++
.../processors/ExportClipsProcessorService.ts | 7 +++++
.../ExportCustomEmojisProcessorService.ts | 8 +++++
.../ExportFavoritesProcessorService.ts | 7 +++++
.../ExportFollowingProcessorService.ts | 7 +++++
.../ExportMutingProcessorService.ts | 7 +++++
.../processors/ExportNotesProcessorService.ts | 7 +++++
.../ExportUserListsProcessorService.ts | 7 +++++
packages/backend/src/types.ts | 16 ++++++++++
packages/frontend-shared/js/const.ts | 2 ++
.../src/components/MkNotification.vue | 29 ++++++++++++++++++-
.../src/pages/settings/notifications.vue | 2 +-
packages/misskey-js/src/autogen/types.ts | 19 +++++++++---
.../sw/src/scripts/create-notification.ts | 19 ++++++++++++
21 files changed, 199 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 086ff8dcc8..a1d2e950b1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@
- Feat: UserWebhookとSystemWebhookのテスト送信機能を追加 (#14445)
- Feat: モデレーターはユーザーにかかわらずファイルが添付されているノートを検索できるように
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/680)
+- Feat: データエクスポートが完了した際に通知を発行するように
- Enhance: ユーザーによるコンテンツインポートの可否をロールポリシーで制御できるように
- Enhance: 依存関係の更新
- Enhance: l10nの更新
diff --git a/locales/index.d.ts b/locales/index.d.ts
index 1250aa4f4d..a52ee8d808 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -1352,6 +1352,10 @@ export interface Locale extends ILocale {
* ファイルを追加
*/
"addFile": string;
+ /**
+ * ファイルを表示
+ */
+ "showFile": string;
/**
* ドライブは空です
*/
@@ -9253,6 +9257,10 @@ export interface Locale extends ILocale {
* 通知の履歴をリセットする
*/
"flushNotification": string;
+ /**
+ * {x}のエクスポートが完了しました
+ */
+ "exportOfXCompleted": ParameterizedString<"x">;
"_types": {
/**
* すべて
@@ -9306,6 +9314,14 @@ export interface Locale extends ILocale {
* 実績の獲得
*/
"achievementEarned": string;
+ /**
+ * エクスポートが完了した
+ */
+ "exportCompleted": string;
+ /**
+ * 通知のテスト
+ */
+ "test": string;
/**
* 連携アプリからの通知
*/
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 6c5df3e658..75c895a230 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -334,6 +334,7 @@ renameFolder: "フォルダー名を変更"
deleteFolder: "フォルダーを削除"
folder: "フォルダー"
addFile: "ファイルを追加"
+showFile: "ファイルを表示"
emptyDrive: "ドライブは空です"
emptyFolder: "フォルダーは空です"
unableToDelete: "削除できません"
@@ -2443,6 +2444,7 @@ _notification:
renotedBySomeUsers: "{n}人がリノートしました"
followedBySomeUsers: "{n}人にフォローされました"
flushNotification: "通知の履歴をリセットする"
+ exportOfXCompleted: "{x}のエクスポートが完了しました"
_types:
all: "すべて"
@@ -2458,6 +2460,8 @@ _notification:
followRequestAccepted: "フォローが受理された"
roleAssigned: "ロールが付与された"
achievementEarned: "実績の獲得"
+ exportCompleted: "エクスポートが完了した"
+ test: "通知のテスト"
app: "連携アプリからの通知"
_actions:
diff --git a/packages/backend/src/core/entities/NotificationEntityService.ts b/packages/backend/src/core/entities/NotificationEntityService.ts
index f393513510..1b61a6195d 100644
--- a/packages/backend/src/core/entities/NotificationEntityService.ts
+++ b/packages/backend/src/core/entities/NotificationEntityService.ts
@@ -162,6 +162,10 @@ export class NotificationEntityService implements OnModuleInit {
...(notification.type === 'achievementEarned' ? {
achievement: notification.achievement,
} : {}),
+ ...(notification.type === 'exportCompleted' ? {
+ exportedEntity: notification.exportedEntity,
+ fileId: notification.fileId,
+ } : {}),
...(notification.type === 'app' ? {
body: notification.customBody,
header: notification.customHeader,
diff --git a/packages/backend/src/models/Notification.ts b/packages/backend/src/models/Notification.ts
index 87d8c16cb3..2c5b75f577 100644
--- a/packages/backend/src/models/Notification.ts
+++ b/packages/backend/src/models/Notification.ts
@@ -7,6 +7,8 @@ import { MiUser } from './User.js';
import { MiNote } from './Note.js';
import { MiAccessToken } from './AccessToken.js';
import { MiRole } from './Role.js';
+import { MiDriveFile } from './DriveFile.js';
+import { userExportableEntities } from '@/types.js';
export type MiNotification = {
type: 'note';
@@ -77,6 +79,12 @@ export type MiNotification = {
id: string;
createdAt: string;
achievement: string;
+} | {
+ type: 'exportCompleted';
+ id: string;
+ createdAt: string;
+ exportedEntity: typeof userExportableEntities[number];
+ fileId: MiDriveFile['id'];
} | {
type: 'app';
id: string;
diff --git a/packages/backend/src/models/json-schema/notification.ts b/packages/backend/src/models/json-schema/notification.ts
index b05ec8b762..bbec2e397f 100644
--- a/packages/backend/src/models/json-schema/notification.ts
+++ b/packages/backend/src/models/json-schema/notification.ts
@@ -4,7 +4,7 @@
*/
import { ACHIEVEMENT_TYPES } from '@/core/AchievementService.js';
-import { notificationTypes } from '@/types.js';
+import { notificationTypes, userExportableEntities } from '@/types.js';
const baseSchema = {
type: 'object',
@@ -298,6 +298,26 @@ export const packedNotificationSchema = {
enum: ACHIEVEMENT_TYPES,
},
},
+ }, {
+ type: 'object',
+ properties: {
+ ...baseSchema.properties,
+ type: {
+ type: 'string',
+ optional: false, nullable: false,
+ enum: ['exportCompleted'],
+ },
+ exportedEntity: {
+ type: 'string',
+ optional: false, nullable: false,
+ enum: userExportableEntities,
+ },
+ fileId: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'id',
+ },
+ },
}, {
type: 'object',
properties: {
diff --git a/packages/backend/src/queue/processors/ExportAntennasProcessorService.ts b/packages/backend/src/queue/processors/ExportAntennasProcessorService.ts
index 88c4ea29c0..b3111865ad 100644
--- a/packages/backend/src/queue/processors/ExportAntennasProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportAntennasProcessorService.ts
@@ -14,6 +14,7 @@ import { DriveService } from '@/core/DriveService.js';
import { bindThis } from '@/decorators.js';
import { createTemp } from '@/misc/create-temp.js';
import { UtilityService } from '@/core/UtilityService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type { DBExportAntennasData } from '../types.js';
import type * as Bull from 'bullmq';
@@ -35,6 +36,7 @@ export class ExportAntennasProcessorService {
private driveService: DriveService,
private utilityService: UtilityService,
private queueLoggerService: QueueLoggerService,
+ private notificationService: NotificationService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-antennas');
}
@@ -95,6 +97,11 @@ export class ExportAntennasProcessorService {
const fileName = 'antennas-' + DateFormat(new Date(), 'yyyy-MM-dd-HH-mm-ss') + '.json';
const driveFile = await this.driveService.addFile({ user, path, name: fileName, force: true, ext: 'json' });
this.logger.succ('Exported to: ' + driveFile.id);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'antenna',
+ fileId: driveFile.id,
+ });
} finally {
cleanup();
}
diff --git a/packages/backend/src/queue/processors/ExportBlockingProcessorService.ts b/packages/backend/src/queue/processors/ExportBlockingProcessorService.ts
index 6ec3c18786..ecc439db69 100644
--- a/packages/backend/src/queue/processors/ExportBlockingProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportBlockingProcessorService.ts
@@ -13,6 +13,7 @@ import type Logger from '@/logger.js';
import { DriveService } from '@/core/DriveService.js';
import { createTemp } from '@/misc/create-temp.js';
import { UtilityService } from '@/core/UtilityService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { bindThis } from '@/decorators.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
@@ -30,6 +31,7 @@ export class ExportBlockingProcessorService {
private blockingsRepository: BlockingsRepository,
private utilityService: UtilityService,
+ private notificationService: NotificationService,
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
) {
@@ -109,6 +111,11 @@ export class ExportBlockingProcessorService {
const driveFile = await this.driveService.addFile({ user, path, name: fileName, force: true, ext: 'csv' });
this.logger.succ(`Exported to: ${driveFile.id}`);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'blocking',
+ fileId: driveFile.id,
+ });
} finally {
cleanup();
}
diff --git a/packages/backend/src/queue/processors/ExportClipsProcessorService.ts b/packages/backend/src/queue/processors/ExportClipsProcessorService.ts
index 01eab26e96..583ddbb745 100644
--- a/packages/backend/src/queue/processors/ExportClipsProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportClipsProcessorService.ts
@@ -19,6 +19,7 @@ import { bindThis } from '@/decorators.js';
import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
import { Packed } from '@/misc/json-schema.js';
import { IdService } from '@/core/IdService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbJobDataWithUser } from '../types.js';
@@ -43,6 +44,7 @@ export class ExportClipsProcessorService {
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
private idService: IdService,
+ private notificationService: NotificationService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-clips');
}
@@ -79,6 +81,11 @@ export class ExportClipsProcessorService {
const driveFile = await this.driveService.addFile({ user, path, name: fileName, force: true, ext: 'json' });
this.logger.succ(`Exported to: ${driveFile.id}`);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'clip',
+ fileId: driveFile.id,
+ });
} finally {
cleanup();
}
diff --git a/packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts b/packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts
index e4eb4791bd..e237cd4975 100644
--- a/packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts
@@ -16,6 +16,7 @@ import type Logger from '@/logger.js';
import { DriveService } from '@/core/DriveService.js';
import { createTemp, createTempDir } from '@/misc/create-temp.js';
import { DownloadService } from '@/core/DownloadService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { bindThis } from '@/decorators.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
@@ -37,6 +38,7 @@ export class ExportCustomEmojisProcessorService {
private driveService: DriveService,
private downloadService: DownloadService,
private queueLoggerService: QueueLoggerService,
+ private notificationService: NotificationService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-custom-emojis');
}
@@ -134,6 +136,12 @@ export class ExportCustomEmojisProcessorService {
const driveFile = await this.driveService.addFile({ user, path: archivePath, name: fileName, force: true });
this.logger.succ(`Exported to: ${driveFile.id}`);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'customEmoji',
+ fileId: driveFile.id,
+ });
+
cleanup();
archiveCleanup();
resolve();
diff --git a/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts b/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
index 7bb626dd31..b81feece01 100644
--- a/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
@@ -16,6 +16,7 @@ import type { MiPoll } from '@/models/Poll.js';
import type { MiNote } from '@/models/Note.js';
import { bindThis } from '@/decorators.js';
import { IdService } from '@/core/IdService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbJobDataWithUser } from '../types.js';
@@ -37,6 +38,7 @@ export class ExportFavoritesProcessorService {
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
private idService: IdService,
+ private notificationService: NotificationService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-favorites');
}
@@ -123,6 +125,11 @@ export class ExportFavoritesProcessorService {
const driveFile = await this.driveService.addFile({ user, path, name: fileName, force: true, ext: 'json' });
this.logger.succ(`Exported to: ${driveFile.id}`);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'favorite',
+ fileId: driveFile.id,
+ });
} finally {
cleanup();
}
diff --git a/packages/backend/src/queue/processors/ExportFollowingProcessorService.ts b/packages/backend/src/queue/processors/ExportFollowingProcessorService.ts
index 1cc80e66d7..903f962515 100644
--- a/packages/backend/src/queue/processors/ExportFollowingProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportFollowingProcessorService.ts
@@ -14,6 +14,7 @@ import { DriveService } from '@/core/DriveService.js';
import { createTemp } from '@/misc/create-temp.js';
import type { MiFollowing } from '@/models/Following.js';
import { UtilityService } from '@/core/UtilityService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { bindThis } from '@/decorators.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
@@ -36,6 +37,7 @@ export class ExportFollowingProcessorService {
private utilityService: UtilityService,
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
+ private notificationService: NotificationService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-following');
}
@@ -113,6 +115,11 @@ export class ExportFollowingProcessorService {
const driveFile = await this.driveService.addFile({ user, path, name: fileName, force: true, ext: 'csv' });
this.logger.succ(`Exported to: ${driveFile.id}`);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'following',
+ fileId: driveFile.id,
+ });
} finally {
cleanup();
}
diff --git a/packages/backend/src/queue/processors/ExportMutingProcessorService.ts b/packages/backend/src/queue/processors/ExportMutingProcessorService.ts
index 243b74f2c2..f9867ade29 100644
--- a/packages/backend/src/queue/processors/ExportMutingProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportMutingProcessorService.ts
@@ -13,6 +13,7 @@ import type Logger from '@/logger.js';
import { DriveService } from '@/core/DriveService.js';
import { createTemp } from '@/misc/create-temp.js';
import { UtilityService } from '@/core/UtilityService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { bindThis } from '@/decorators.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
@@ -32,6 +33,7 @@ export class ExportMutingProcessorService {
private utilityService: UtilityService,
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
+ private notificationService: NotificationService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-muting');
}
@@ -110,6 +112,11 @@ export class ExportMutingProcessorService {
const driveFile = await this.driveService.addFile({ user, path, name: fileName, force: true, ext: 'csv' });
this.logger.succ(`Exported to: ${driveFile.id}`);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'muting',
+ fileId: driveFile.id,
+ });
} finally {
cleanup();
}
diff --git a/packages/backend/src/queue/processors/ExportNotesProcessorService.ts b/packages/backend/src/queue/processors/ExportNotesProcessorService.ts
index c7611012d7..9e2b678219 100644
--- a/packages/backend/src/queue/processors/ExportNotesProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportNotesProcessorService.ts
@@ -18,6 +18,7 @@ import { bindThis } from '@/decorators.js';
import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
import { Packed } from '@/misc/json-schema.js';
import { IdService } from '@/core/IdService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { JsonArrayStream } from '@/misc/JsonArrayStream.js';
import { FileWriterStream } from '@/misc/FileWriterStream.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
@@ -112,6 +113,7 @@ export class ExportNotesProcessorService {
private queueLoggerService: QueueLoggerService,
private driveFileEntityService: DriveFileEntityService,
private idService: IdService,
+ private notificationService: NotificationService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-notes');
}
@@ -150,6 +152,11 @@ export class ExportNotesProcessorService {
const driveFile = await this.driveService.addFile({ user, path, name: fileName, force: true, ext: 'json' });
this.logger.succ(`Exported to: ${driveFile.id}`);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'note',
+ fileId: driveFile.id,
+ });
} finally {
cleanup();
}
diff --git a/packages/backend/src/queue/processors/ExportUserListsProcessorService.ts b/packages/backend/src/queue/processors/ExportUserListsProcessorService.ts
index ee87cff5d3..c483d79854 100644
--- a/packages/backend/src/queue/processors/ExportUserListsProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportUserListsProcessorService.ts
@@ -13,6 +13,7 @@ import type Logger from '@/logger.js';
import { DriveService } from '@/core/DriveService.js';
import { createTemp } from '@/misc/create-temp.js';
import { UtilityService } from '@/core/UtilityService.js';
+import { NotificationService } from '@/core/NotificationService.js';
import { bindThis } from '@/decorators.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
@@ -35,6 +36,7 @@ export class ExportUserListsProcessorService {
private utilityService: UtilityService,
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
+ private notificationService: NotificationService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-user-lists');
}
@@ -89,6 +91,11 @@ export class ExportUserListsProcessorService {
const driveFile = await this.driveService.addFile({ user, path, name: fileName, force: true, ext: 'csv' });
this.logger.succ(`Exported to: ${driveFile.id}`);
+
+ this.notificationService.createNotification(user.id, 'exportCompleted', {
+ exportedEntity: 'userList',
+ fileId: driveFile.id,
+ });
} finally {
cleanup();
}
diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts
index e852cf5ae2..5854c6b392 100644
--- a/packages/backend/src/types.ts
+++ b/packages/backend/src/types.ts
@@ -16,6 +16,7 @@
* followRequestAccepted - 自分の送ったフォローリクエストが承認された
* roleAssigned - ロールが付与された
* achievementEarned - 実績を獲得
+ * exportCompleted - エクスポートが完了
* app - アプリ通知
* test - テスト通知(サーバー側)
*/
@@ -32,6 +33,7 @@ export const notificationTypes = [
'followRequestAccepted',
'roleAssigned',
'achievementEarned',
+ 'exportCompleted',
'app',
'test',
] as const;
@@ -51,6 +53,20 @@ export const mutedNoteReasons = ['word', 'manual', 'spam', 'other'] as const;
export const followingVisibilities = ['public', 'followers', 'private'] as const;
export const followersVisibilities = ['public', 'followers', 'private'] as const;
+/**
+ * ユーザーがエクスポートできるものの種類
+ *
+ * (主にエクスポート完了通知で使用するものであり、既存のDBの名称等と必ずしも一致しない)
+ */
+export const userExportableEntities = ['antenna', 'blocking', 'clip', 'customEmoji', 'favorite', 'following', 'muting', 'note', 'userList'] as const;
+
+/**
+ * ユーザーがインポートできるものの種類
+ *
+ * (主にインポート完了通知で使用するものであり、既存のDBの名称等と必ずしも一致しない)
+ */
+export const userImportableEntities = ['antenna', 'blocking', 'customEmoji', 'following', 'muting', 'userList'] as const;
+
export const moderationLogTypes = [
'updateServerSettings',
'suspend',
diff --git a/packages/frontend-shared/js/const.ts b/packages/frontend-shared/js/const.ts
index b62a69ba24..aec4a4a58b 100644
--- a/packages/frontend-shared/js/const.ts
+++ b/packages/frontend-shared/js/const.ts
@@ -67,6 +67,8 @@ export const notificationTypes = [
'followRequestAccepted',
'roleAssigned',
'achievementEarned',
+ 'exportCompleted',
+ 'test',
'app',
] as const;
export const obsoleteNotificationTypes = ['pollVote', 'groupInvited'] as const;
diff --git a/packages/frontend/src/components/MkNotification.vue b/packages/frontend/src/components/MkNotification.vue
index 738cba2134..3989c61776 100644
--- a/packages/frontend/src/components/MkNotification.vue
+++ b/packages/frontend/src/components/MkNotification.vue
@@ -13,7 +13,8 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
+
@@ -37,6 +39,7 @@ SPDX-License-Identifier: AGPL-3.0-only
+
@@ -57,6 +60,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._notification.roleAssigned }}
{{ i18n.ts._notification.achievementEarned }}
{{ i18n.ts._notification.testNotification }}
+ {{ i18n.tsx._notification.exportOfXCompleted({ x: exportEntityName[notification.exportedEntity] }) }}
{{ i18n.tsx._notification.likedBySomeUsers({ n: getActualReactedUsersCount(notification) }) }}
{{ i18n.tsx._notification.reactedBySomeUsers({ n: getActualReactedUsersCount(notification) }) }}
@@ -98,6 +102,9 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._achievements._types['_' + notification.achievement].title }}
+
+ {{ i18n.ts.showFile }}
+
{{ i18n.ts.youGotNewFollower }}
@@ -161,6 +168,20 @@ const props = withDefaults(defineProps<{
full: false,
});
+type ExportCompletedNotification = Misskey.entities.Notification & { type: 'exportCompleted' };
+
+const exportEntityName = {
+ antenna: i18n.ts.antennas,
+ blocking: i18n.ts.blockedUsers,
+ clip: i18n.ts.clips,
+ customEmoji: i18n.ts.customEmojis,
+ favorite: i18n.ts.favorites,
+ following: i18n.ts.following,
+ muting: i18n.ts.mutedUsers,
+ note: i18n.ts.notes,
+ userList: i18n.ts.lists,
+} as const satisfies Record;
+
const followRequestDone = ref(false);
const acceptFollowRequest = () => {
@@ -298,6 +319,12 @@ function getActualReactedUsersCount(notification: Misskey.entities.Notification)
pointer-events: none;
}
+.t_exportCompleted {
+ padding: 3px;
+ background: var(--eventOther);
+ pointer-events: none;
+}
+
.t_roleAssigned {
padding: 3px;
background: var(--eventOther);
diff --git a/packages/frontend/src/pages/settings/notifications.vue b/packages/frontend/src/pages/settings/notifications.vue
index cce671a7cb..53b3bd4936 100644
--- a/packages/frontend/src/pages/settings/notifications.vue
+++ b/packages/frontend/src/pages/settings/notifications.vue
@@ -73,7 +73,7 @@ import { notificationTypes } from '@@/js/const.js';
const $i = signinRequired();
-const nonConfigurableNotificationTypes = ['note', 'roleAssigned', 'followRequestAccepted', 'achievementEarned'];
+const nonConfigurableNotificationTypes = ['note', 'roleAssigned', 'followRequestAccepted', 'achievementEarned', 'test', 'exportCompleted'] as const satisfies (typeof notificationTypes[number])[];
const allowButton = shallowRef>();
const pushRegistrationInServer = computed(() => allowButton.value?.pushRegistrationInServer);
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index 5d5bc52956..d60ead8294 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -4274,6 +4274,17 @@ export type components = {
type: 'achievementEarned';
/** @enum {string} */
achievement: 'notes1' | 'notes10' | 'notes100' | 'notes500' | 'notes1000' | 'notes5000' | 'notes10000' | 'notes20000' | 'notes30000' | 'notes40000' | 'notes50000' | 'notes60000' | 'notes70000' | 'notes80000' | 'notes90000' | 'notes100000' | 'login3' | 'login7' | 'login15' | 'login30' | 'login60' | 'login100' | 'login200' | 'login300' | 'login400' | 'login500' | 'login600' | 'login700' | 'login800' | 'login900' | 'login1000' | 'passedSinceAccountCreated1' | 'passedSinceAccountCreated2' | 'passedSinceAccountCreated3' | 'loggedInOnBirthday' | 'loggedInOnNewYearsDay' | 'noteClipped1' | 'noteFavorited1' | 'myNoteFavorited1' | 'profileFilled' | 'markedAsCat' | 'following1' | 'following10' | 'following50' | 'following100' | 'following300' | 'followers1' | 'followers10' | 'followers50' | 'followers100' | 'followers300' | 'followers500' | 'followers1000' | 'collectAchievements30' | 'viewAchievements3min' | 'iLoveMisskey' | 'foundTreasure' | 'client30min' | 'client60min' | 'noteDeletedWithin1min' | 'postedAtLateNight' | 'postedAt0min0sec' | 'selfQuote' | 'htl20npm' | 'viewInstanceChart' | 'outputHelloWorldOnScratchpad' | 'open3windows' | 'driveFolderCircularReference' | 'reactWithoutRead' | 'clickedClickHere' | 'justPlainLucky' | 'setNameToSyuilo' | 'cookieClicked' | 'brainDiver' | 'smashTestNotificationButton' | 'tutorialCompleted' | 'bubbleGameExplodingHead' | 'bubbleGameDoubleExplodingHead';
+ }) | ({
+ /** Format: id */
+ id: string;
+ /** Format: date-time */
+ createdAt: string;
+ /** @enum {string} */
+ type: 'exportCompleted';
+ /** @enum {string} */
+ exportedEntity: 'antenna' | 'blocking' | 'clip' | 'customEmoji' | 'favorite' | 'following' | 'muting' | 'note' | 'userList';
+ /** Format: id */
+ fileId: string;
}) | ({
/** Format: id */
id: string;
@@ -18530,8 +18541,8 @@ export type operations = {
untilId?: string;
/** @default true */
markAsRead?: boolean;
- includeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'achievementEarned' | 'app' | 'test' | 'pollVote' | 'groupInvited')[];
- excludeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'achievementEarned' | 'app' | 'test' | 'pollVote' | 'groupInvited')[];
+ includeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'achievementEarned' | 'exportCompleted' | 'app' | 'test' | 'pollVote' | 'groupInvited')[];
+ excludeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'achievementEarned' | 'exportCompleted' | 'app' | 'test' | 'pollVote' | 'groupInvited')[];
};
};
};
@@ -18598,8 +18609,8 @@ export type operations = {
untilId?: string;
/** @default true */
markAsRead?: boolean;
- includeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'achievementEarned' | 'app' | 'test' | 'reaction:grouped' | 'renote:grouped' | 'pollVote' | 'groupInvited')[];
- excludeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'achievementEarned' | 'app' | 'test' | 'reaction:grouped' | 'renote:grouped' | 'pollVote' | 'groupInvited')[];
+ includeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'achievementEarned' | 'exportCompleted' | 'app' | 'test' | 'reaction:grouped' | 'renote:grouped' | 'pollVote' | 'groupInvited')[];
+ excludeTypes?: ('note' | 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollEnded' | 'receiveFollowRequest' | 'followRequestAccepted' | 'roleAssigned' | 'achievementEarned' | 'exportCompleted' | 'app' | 'test' | 'reaction:grouped' | 'renote:grouped' | 'pollVote' | 'groupInvited')[];
};
};
};
diff --git a/packages/sw/src/scripts/create-notification.ts b/packages/sw/src/scripts/create-notification.ts
index 3c37657958..2b7dfd4f2d 100644
--- a/packages/sw/src/scripts/create-notification.ts
+++ b/packages/sw/src/scripts/create-notification.ts
@@ -210,6 +210,25 @@ async function composeNotification(data: PushNotificationDataMap[keyof PushNotif
tag: `achievement:${data.body.achievement}`,
}];
+ case 'exportCompleted': {
+ const entityName = {
+ antenna: i18n.ts.antennas,
+ blocking: i18n.ts.blockedUsers,
+ clip: i18n.ts.clips,
+ customEmoji: i18n.ts.customEmojis,
+ favorite: i18n.ts.favorites,
+ following: i18n.ts.following,
+ muting: i18n.ts.mutedUsers,
+ note: i18n.ts.notes,
+ userList: i18n.ts.lists,
+ } as const satisfies Record;
+
+ return [i18n.tsx._notification.exportOfXCompleted({ x: entityName[data.body.exportedEntity] }), {
+ badge: iconUrl('circle-check'),
+ data,
+ }];
+ }
+
case 'pollEnded':
return [i18n.ts._notification.pollEnded, {
body: data.body.note.text ?? '',
From b83a2f33ff80a17d9b2a004e29000bc484d5a647 Mon Sep 17 00:00:00 2001
From: Yuri Lee
Date: Sat, 28 Sep 2024 08:09:30 +0900
Subject: [PATCH 002/194] test(backend): Add test for Passkey API (#14635)
---
.../test/unit/SigninWithPasskeyApiService.ts | 182 ++++++++++++++++++
1 file changed, 182 insertions(+)
create mode 100644 packages/backend/test/unit/SigninWithPasskeyApiService.ts
diff --git a/packages/backend/test/unit/SigninWithPasskeyApiService.ts b/packages/backend/test/unit/SigninWithPasskeyApiService.ts
new file mode 100644
index 0000000000..bae2b88c60
--- /dev/null
+++ b/packages/backend/test/unit/SigninWithPasskeyApiService.ts
@@ -0,0 +1,182 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { IncomingHttpHeaders } from 'node:http';
+import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, jest, test } from '@jest/globals';
+import { Test, TestingModule } from '@nestjs/testing';
+import { FastifyReply, FastifyRequest } from 'fastify';
+import { AuthenticationResponseJSON } from '@simplewebauthn/types';
+import { HttpHeader } from 'fastify/types/utils.js';
+import { MockFunctionMetadata, ModuleMocker } from 'jest-mock';
+import { MiUser } from '@/models/User.js';
+import { MiUserProfile, UserProfilesRepository, UsersRepository } from '@/models/_.js';
+import { IdService } from '@/core/IdService.js';
+import { GlobalModule } from '@/GlobalModule.js';
+import { DI } from '@/di-symbols.js';
+import { CoreModule } from '@/core/CoreModule.js';
+import { SigninWithPasskeyApiService } from '@/server/api/SigninWithPasskeyApiService.js';
+import { RateLimiterService } from '@/server/api/RateLimiterService.js';
+import { WebAuthnService } from '@/core/WebAuthnService.js';
+import { SigninService } from '@/server/api/SigninService.js';
+import { IdentifiableError } from '@/misc/identifiable-error.js';
+
+const moduleMocker = new ModuleMocker(global);
+
+class FakeLimiter {
+ public async limit() {
+ return;
+ }
+}
+
+class FakeSigninService {
+ public signin(..._args: any): any {
+ return true;
+ }
+}
+
+class DummyFastifyReply {
+ public statusCode: number;
+ code(num: number): void {
+ this.statusCode = num;
+ }
+ header(_key: HttpHeader, _value: any): void {
+ }
+}
+class DummyFastifyRequest {
+ public ip: string;
+ public body: {credential: any, context: string};
+ public headers: IncomingHttpHeaders = { 'accept': 'application/json' };
+ constructor(body?: any) {
+ this.ip = '0.0.0.0';
+ this.body = body;
+ }
+}
+
+type ApiFastifyRequestType = FastifyRequest<{
+ Body: {
+ credential?: AuthenticationResponseJSON;
+ context?: string;
+ };
+}>;
+
+describe('SigninWithPasskeyApiService', () => {
+ let app: TestingModule;
+ let passkeyApiService: SigninWithPasskeyApiService;
+ let usersRepository: UsersRepository;
+ let userProfilesRepository: UserProfilesRepository;
+ let webAuthnService: WebAuthnService;
+ let idService: IdService;
+ let FakeWebauthnVerify: ()=>Promise;
+
+ async function createUser(data: Partial = {}) {
+ const user = await usersRepository
+ .save({
+ ...data,
+ });
+ return user;
+ }
+
+ async function createUserProfile(data: Partial = {}) {
+ const userProfile = await userProfilesRepository
+ .save({ ...data },
+ );
+ return userProfile;
+ }
+
+ beforeAll(async () => {
+ app = await Test.createTestingModule({
+ imports: [GlobalModule, CoreModule],
+ providers: [
+ SigninWithPasskeyApiService,
+ { provide: RateLimiterService, useClass: FakeLimiter },
+ { provide: SigninService, useClass: FakeSigninService },
+ ],
+ }).useMocker((token) => {
+ if (typeof token === 'function') {
+ const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata;
+ const Mock = moduleMocker.generateFromMetadata(mockMetadata);
+ return new Mock();
+ }
+ }).compile();
+ passkeyApiService = app.get(SigninWithPasskeyApiService);
+ usersRepository = app.get(DI.usersRepository);
+ userProfilesRepository = app.get(DI.userProfilesRepository);
+ webAuthnService = app.get(WebAuthnService);
+ idService = app.get(IdService);
+ });
+
+ beforeEach(async () => {
+ const uid = idService.gen();
+ FakeWebauthnVerify = async () => {
+ return uid;
+ };
+ jest.spyOn(webAuthnService, 'verifySignInWithPasskeyAuthentication').mockImplementation(FakeWebauthnVerify);
+
+ const dummyUser = {
+ id: uid, username: uid, usernameLower: uid.toLocaleLowerCase(), uri: null, host: null,
+ };
+ const dummyProfile = {
+ userId: uid,
+ password: 'qwerty',
+ usePasswordLessLogin: true,
+ };
+ await createUser(dummyUser);
+ await createUserProfile(dummyProfile);
+ });
+
+ afterAll(async () => {
+ await app.close();
+ });
+
+ describe('Get Passkey Options', () => {
+ it('Should return passkey Auth Options', async () => {
+ const req = new DummyFastifyRequest({}) as ApiFastifyRequestType;
+ const res = new DummyFastifyReply() as unknown as FastifyReply;
+ const res_body = await passkeyApiService.signin(req, res);
+ expect(res.statusCode).toBe(200);
+ expect((res_body as any).option).toBeDefined();
+ expect(typeof (res_body as any).context).toBe('string');
+ });
+ });
+ describe('Try Passkey Auth', () => {
+ it('Should Success', async () => {
+ const req = new DummyFastifyRequest({ context: 'auth-context', credential: { dummy: [] } }) as ApiFastifyRequestType;
+ const res = new DummyFastifyReply() as FastifyReply;
+ const res_body = await passkeyApiService.signin(req, res);
+ expect((res_body as any).signinResponse).toBeDefined();
+ });
+
+ it('Should return 400 Without Auth Context', async () => {
+ const req = new DummyFastifyRequest({ credential: { dummy: [] } }) as ApiFastifyRequestType;
+ const res = new DummyFastifyReply() as FastifyReply;
+ const res_body = await passkeyApiService.signin(req, res);
+ expect(res.statusCode).toBe(400);
+ expect((res_body as any).error?.id).toStrictEqual('1658cc2e-4495-461f-aee4-d403cdf073c1');
+ });
+
+ it('Should return 403 When Challenge Verify fail', async () => {
+ const req = new DummyFastifyRequest({ context: 'misskey-1234', credential: { dummy: [] } }) as ApiFastifyRequestType;
+ const res = new DummyFastifyReply() as FastifyReply;
+ jest.spyOn(webAuthnService, 'verifySignInWithPasskeyAuthentication')
+ .mockImplementation(async () => {
+ throw new IdentifiableError('THIS_ERROR_CODE_SHOULD_BE_FORWARDED');
+ });
+ const res_body = await passkeyApiService.signin(req, res);
+ expect(res.statusCode).toBe(403);
+ expect((res_body as any).error?.id).toStrictEqual('THIS_ERROR_CODE_SHOULD_BE_FORWARDED');
+ });
+
+ it('Should return 403 When The user not Enabled Passwordless login', async () => {
+ const req = new DummyFastifyRequest({ context: 'misskey-1234', credential: { dummy: [] } }) as ApiFastifyRequestType;
+ const res = new DummyFastifyReply() as FastifyReply;
+ const userId = await FakeWebauthnVerify();
+ const data = { userId: userId, usePasswordLessLogin: false };
+ await userProfilesRepository.update({ userId: userId }, data);
+ const res_body = await passkeyApiService.signin(req, res);
+ expect(res.statusCode).toBe(403);
+ expect((res_body as any).error?.id).toStrictEqual('2d84773e-f7b7-4d0b-8f72-bb69b584c912');
+ });
+ });
+});
From 27a256b5021811d2a5a59d2920a9e782cd926e89 Mon Sep 17 00:00:00 2001
From: FineArchs <133759614+FineArchs@users.noreply.github.com>
Date: Sat, 28 Sep 2024 08:12:12 +0900
Subject: [PATCH 003/194] show shown (#14639)
---
packages/frontend/src/pages/scratchpad.vue | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/packages/frontend/src/pages/scratchpad.vue b/packages/frontend/src/pages/scratchpad.vue
index 897ff6acdf..155d8b82d7 100644
--- a/packages/frontend/src/pages/scratchpad.vue
+++ b/packages/frontend/src/pages/scratchpad.vue
@@ -33,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.uiInspector }}
-
+
{{ c.value.type }}
{{ c.value.id }}
+
@@ -460,6 +465,11 @@ onUnmounted(() => {
box-shadow: 1px 1px 3px rgba(#000, 0.2);
}
+ > .followedMessage {
+ padding: 24px 24px 0 154px;
+ font-size: 0.9em;
+ }
+
> .roles {
padding: 24px 24px 0 154px;
font-size: 0.95em;
@@ -642,6 +652,10 @@ onUnmounted(() => {
margin: auto;
}
+ > .followedMessage {
+ padding: 16px 16px 0 16px;
+ }
+
> .roles {
padding: 16px 16px 0 16px;
justify-content: center;
diff --git a/packages/frontend/src/style.scss b/packages/frontend/src/style.scss
index 28a16fd6d1..b835096b15 100644
--- a/packages/frontend/src/style.scss
+++ b/packages/frontend/src/style.scss
@@ -18,13 +18,6 @@
--minBottomSpacing: var(--minBottomSpacingMobile);
//--ad: rgb(255 169 0 / 10%);
- --eventFollow: #36aed2;
- --eventRenote: #36d298;
- --eventReply: #007aff;
- --eventReactionHeart: #dd2e44;
- --eventReaction: #e99a0b;
- --eventAchievement: #cb9a11;
- --eventOther: #88a6b7;
@media (max-width: 500px) {
--margin: var(--marginHalf);
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index d60ead8294..0dff85183f 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -3789,6 +3789,7 @@ export type components = {
/** @default false */
securityKeys: boolean;
roles: components['schemas']['RoleLite'][];
+ followedMessage?: string | null;
memo: string | null;
moderationNote?: string;
isFollowing?: boolean;
@@ -3808,6 +3809,7 @@ export type components = {
avatarId: string | null;
/** Format: id */
bannerId: string | null;
+ followedMessage: string | null;
isModerator: boolean | null;
isAdmin: boolean | null;
injectFeaturedNote: boolean;
@@ -4247,7 +4249,7 @@ export type components = {
user: components['schemas']['UserLite'];
/** Format: id */
userId: string;
- } | {
+ } | ({
/** Format: id */
id: string;
/** Format: date-time */
@@ -4257,7 +4259,8 @@ export type components = {
user: components['schemas']['UserLite'];
/** Format: id */
userId: string;
- } | {
+ message: string | null;
+ }) | {
/** Format: id */
id: string;
/** Format: date-time */
@@ -8935,6 +8938,7 @@ export type operations = {
'application/json': {
email: string | null;
emailVerified: boolean;
+ followedMessage: string | null;
autoAcceptFollowed: boolean;
noCrawle: boolean;
preventAiLearning: boolean;
@@ -19663,6 +19667,7 @@ export type operations = {
'application/json': {
name?: string | null;
description?: string | null;
+ followedMessage?: string | null;
location?: string | null;
birthday?: string | null;
/** @enum {string|null} */
From 6fdb2b13f431c3f08edc564b688f5e29d058c137 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sat, 28 Sep 2024 10:04:16 +0900
Subject: [PATCH 006/194] update deps
---
packages/frontend-embed/package.json | 25 +-
packages/frontend/package.json | 58 +-
pnpm-lock.yaml | 1173 +++++++++++++-------------
3 files changed, 631 insertions(+), 625 deletions(-)
diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json
index 46a626edf4..9e720b9835 100644
--- a/packages/frontend-embed/package.json
+++ b/packages/frontend-embed/package.json
@@ -12,59 +12,46 @@
},
"dependencies": {
"@discordapp/twemoji": "15.1.0",
- "@github/webauthn-json": "2.1.1",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.7",
- "@rollup/pluginutils": "5.1.0",
+ "@rollup/pluginutils": "5.1.2",
"@tabler/icons-webfont": "3.3.0",
"@twemoji/parser": "15.1.1",
"@vitejs/plugin-vue": "5.1.4",
- "@vue/compiler-sfc": "3.5.7",
+ "@vue/compiler-sfc": "3.5.10",
"astring": "1.9.0",
"buraha": "0.0.1",
- "compare-versions": "6.1.1",
- "date-fns": "2.30.0",
- "escape-regexp": "0.0.1",
"estree-walker": "3.0.3",
- "eventemitter3": "5.0.1",
- "idb-keyval": "6.2.1",
- "is-file-animated": "1.0.2",
"mfm-js": "0.24.0",
"misskey-js": "workspace:*",
"frontend-shared": "workspace:*",
"punycode": "2.3.1",
- "rollup": "4.22.2",
- "sanitize-html": "2.13.0",
+ "rollup": "4.22.5",
"sass": "1.79.3",
"shiki": "1.12.0",
- "strict-event-emitter-types": "2.0.0",
- "throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
"typescript": "5.6.2",
"uuid": "10.0.0",
"json5": "2.2.3",
- "vite": "5.4.7",
- "vue": "3.5.7"
+ "vite": "5.4.8",
+ "vue": "3.5.10"
},
"devDependencies": {
"@misskey-dev/summaly": "5.1.0",
"@testing-library/vue": "8.1.0",
- "@types/escape-regexp": "0.0.3",
"@types/estree": "1.0.6",
"@types/micromatch": "4.0.9",
"@types/node": "20.14.12",
"@types/punycode": "2.1.4",
- "@types/sanitize-html": "2.13.0",
- "@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
"@types/uuid": "10.0.0",
"@types/ws": "8.5.12",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"@vitest/coverage-v8": "1.6.0",
- "@vue/runtime-core": "3.5.7",
+ "@vue/runtime-core": "3.5.10",
"acorn": "8.12.1",
"cross-env": "7.0.3",
"eslint-plugin-import": "2.30.0",
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 76af417550..d3909babfd 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -23,12 +23,12 @@
"@misskey-dev/browser-image-resizer": "2024.1.0",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.7",
- "@rollup/pluginutils": "5.1.0",
+ "@rollup/pluginutils": "5.1.2",
"@syuilo/aiscript": "0.19.0",
"@tabler/icons-webfont": "3.3.0",
"@twemoji/parser": "15.1.1",
"@vitejs/plugin-vue": "5.1.4",
- "@vue/compiler-sfc": "3.5.7",
+ "@vue/compiler-sfc": "3.5.10",
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.11",
"astring": "1.9.0",
"broadcast-channel": "7.0.0",
@@ -39,11 +39,10 @@
"chartjs-chart-matrix": "2.0.1",
"chartjs-plugin-gradient": "0.6.1",
"chartjs-plugin-zoom": "2.0.1",
- "chromatic": "11.10.2",
+ "chromatic": "11.10.4",
"compare-versions": "6.1.1",
"cropperjs": "2.0.0-rc.2",
"date-fns": "2.30.0",
- "escape-regexp": "0.0.1",
"estree-walker": "3.0.3",
"eventemitter3": "5.0.1",
"idb-keyval": "6.2.1",
@@ -58,13 +57,13 @@
"frontend-shared": "workspace:*",
"photoswipe": "5.4.4",
"punycode": "2.3.1",
- "rollup": "4.22.2",
+ "rollup": "4.22.5",
"sanitize-html": "2.13.0",
"sass": "1.79.3",
"shiki": "1.12.0",
"strict-event-emitter-types": "2.0.0",
"textarea-caret": "3.1.0",
- "three": "0.168.0",
+ "three": "0.169.0",
"throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
@@ -72,32 +71,31 @@
"typescript": "5.6.2",
"uuid": "10.0.0",
"v-code-diff": "1.13.1",
- "vite": "5.4.7",
- "vue": "3.5.7",
+ "vite": "5.4.8",
+ "vue": "3.5.10",
"vuedraggable": "next"
},
"devDependencies": {
"@misskey-dev/summaly": "5.1.0",
- "@storybook/addon-actions": "8.3.2",
- "@storybook/addon-essentials": "8.3.2",
- "@storybook/addon-interactions": "8.3.2",
- "@storybook/addon-links": "8.3.2",
- "@storybook/addon-mdx-gfm": "8.3.2",
- "@storybook/addon-storysource": "8.3.2",
- "@storybook/blocks": "8.3.2",
- "@storybook/components": "8.3.2",
- "@storybook/core-events": "8.3.2",
- "@storybook/manager-api": "8.3.2",
- "@storybook/preview-api": "8.3.2",
- "@storybook/react": "8.3.2",
- "@storybook/react-vite": "8.3.2",
- "@storybook/test": "8.3.2",
- "@storybook/theming": "8.3.2",
- "@storybook/types": "8.3.2",
- "@storybook/vue3": "8.3.2",
- "@storybook/vue3-vite": "8.3.2",
+ "@storybook/addon-actions": "8.3.3",
+ "@storybook/addon-essentials": "8.3.3",
+ "@storybook/addon-interactions": "8.3.3",
+ "@storybook/addon-links": "8.3.3",
+ "@storybook/addon-mdx-gfm": "8.3.3",
+ "@storybook/addon-storysource": "8.3.3",
+ "@storybook/blocks": "8.3.3",
+ "@storybook/components": "8.3.3",
+ "@storybook/core-events": "8.3.3",
+ "@storybook/manager-api": "8.3.3",
+ "@storybook/preview-api": "8.3.3",
+ "@storybook/react": "8.3.3",
+ "@storybook/react-vite": "8.3.3",
+ "@storybook/test": "8.3.3",
+ "@storybook/theming": "8.3.3",
+ "@storybook/types": "8.3.3",
+ "@storybook/vue3": "8.3.3",
+ "@storybook/vue3-vite": "8.3.3",
"@testing-library/vue": "8.1.0",
- "@types/escape-regexp": "0.0.3",
"@types/estree": "1.0.6",
"@types/matter-js": "0.19.7",
"@types/micromatch": "4.0.9",
@@ -112,10 +110,10 @@
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"@vitest/coverage-v8": "1.6.0",
- "@vue/runtime-core": "3.5.7",
+ "@vue/runtime-core": "3.5.10",
"acorn": "8.12.1",
"cross-env": "7.0.3",
- "cypress": "13.14.2",
+ "cypress": "13.15.0",
"eslint-plugin-import": "2.30.0",
"eslint-plugin-vue": "9.28.0",
"fast-glob": "3.3.2",
@@ -130,7 +128,7 @@
"react-dom": "18.3.1",
"seedrandom": "3.0.5",
"start-server-and-test": "2.0.8",
- "storybook": "8.3.2",
+ "storybook": "8.3.3",
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
"vite-plugin-turbosnap": "1.0.3",
"vitest": "1.6.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a4a528530d..6f0ed3f7f0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -705,13 +705,13 @@ importers:
version: 2024.1.0
'@rollup/plugin-json':
specifier: 6.1.0
- version: 6.1.0(rollup@4.22.2)
+ version: 6.1.0(rollup@4.22.5)
'@rollup/plugin-replace':
specifier: 5.0.7
- version: 5.0.7(rollup@4.22.2)
+ version: 5.0.7(rollup@4.22.5)
'@rollup/pluginutils':
- specifier: 5.1.0
- version: 5.1.0(rollup@4.22.2)
+ specifier: 5.1.2
+ version: 5.1.2(rollup@4.22.5)
'@syuilo/aiscript':
specifier: 0.19.0
version: 0.19.0
@@ -723,10 +723,10 @@ importers:
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.7(typescript@5.6.2))
+ version: 5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))
'@vue/compiler-sfc':
- specifier: 3.5.7
- version: 3.5.7
+ specifier: 3.5.10
+ version: 3.5.10
aiscript-vscode:
specifier: github:aiscript-dev/aiscript-vscode#v0.1.11
version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/e1e1b27f2f72cd28a473e004b6da0d8fc0bd40d9
@@ -758,8 +758,8 @@ importers:
specifier: 2.0.1
version: 2.0.1(chart.js@4.4.4)
chromatic:
- specifier: 11.10.2
- version: 11.10.2
+ specifier: 11.10.4
+ version: 11.10.4
compare-versions:
specifier: 6.1.1
version: 6.1.1
@@ -769,9 +769,6 @@ importers:
date-fns:
specifier: 2.30.0
version: 2.30.0
- escape-regexp:
- specifier: 0.0.1
- version: 0.0.1
estree-walker:
specifier: 3.0.3
version: 3.0.3
@@ -815,8 +812,8 @@ importers:
specifier: 2.3.1
version: 2.3.1
rollup:
- specifier: 4.22.2
- version: 4.22.2
+ specifier: 4.22.5
+ version: 4.22.5
sanitize-html:
specifier: 2.13.0
version: 2.13.0
@@ -833,8 +830,8 @@ importers:
specifier: 3.1.0
version: 3.1.0
three:
- specifier: 0.168.0
- version: 0.168.0
+ specifier: 0.169.0
+ version: 0.169.0
throttle-debounce:
specifier: 5.0.2
version: 5.0.2
@@ -855,80 +852,77 @@ importers:
version: 10.0.0
v-code-diff:
specifier: 1.13.1
- version: 1.13.1(vue@3.5.7(typescript@5.6.2))
+ version: 1.13.1(vue@3.5.10(typescript@5.6.2))
vite:
- specifier: 5.4.7
- version: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ specifier: 5.4.8
+ version: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
vue:
- specifier: 3.5.7
- version: 3.5.7(typescript@5.6.2)
+ specifier: 3.5.10
+ version: 3.5.10(typescript@5.6.2)
vuedraggable:
specifier: next
- version: 4.1.0(vue@3.5.7(typescript@5.6.2))
+ version: 4.1.0(vue@3.5.10(typescript@5.6.2))
devDependencies:
'@misskey-dev/summaly':
specifier: 5.1.0
version: 5.1.0
'@storybook/addon-actions':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-essentials':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-interactions':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-links':
- specifier: 8.3.2
- version: 8.3.2(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-mdx-gfm':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-storysource':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/blocks':
- specifier: 8.3.2
- version: 8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/components':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/core-events':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/manager-api':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/preview-api':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/react':
- specifier: 8.3.2
- version: 8.3.2(@storybook/test@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
+ specifier: 8.3.3
+ version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
'@storybook/react-vite':
- specifier: 8.3.2
- version: 8.3.2(@storybook/test@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.2)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
+ specifier: 8.3.3
+ version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.5)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
'@storybook/test':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/theming':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/types':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/vue3':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.7(typescript@5.6.2))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.10(typescript@5.6.2))
'@storybook/vue3-vite':
- specifier: 8.3.2
- version: 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.7(typescript@5.6.2))
+ specifier: 8.3.3
+ version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.7)(@vue/server-renderer@3.5.7(vue@3.5.7(typescript@5.6.2)))(vue@3.5.7(typescript@5.6.2))
- '@types/escape-regexp':
- specifier: 0.0.3
- version: 0.0.3
+ version: 8.1.0(@vue/compiler-sfc@3.5.10)(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))
'@types/estree':
specifier: 1.0.6
version: 1.0.6
@@ -972,8 +966,8 @@ importers:
specifier: 1.6.0
version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0))
'@vue/runtime-core':
- specifier: 3.5.7
- version: 3.5.7
+ specifier: 3.5.10
+ version: 3.5.10
acorn:
specifier: 8.12.1
version: 8.12.1
@@ -981,8 +975,8 @@ importers:
specifier: 7.0.3
version: 7.0.3
cypress:
- specifier: 13.14.2
- version: 13.14.2
+ specifier: 13.15.0
+ version: 13.15.0
eslint-plugin-import:
specifier: 2.30.0
version: 2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.11.0)(typescript@5.6.2))(eslint@9.11.0)
@@ -1026,11 +1020,11 @@ importers:
specifier: 2.0.8
version: 2.0.8
storybook:
- specifier: 8.3.2
- version: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ specifier: 8.3.3
+ version: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
storybook-addon-misskey-theme:
specifier: github:misskey-dev/storybook-addon-misskey-theme
- version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
vite-plugin-turbosnap:
specifier: 1.0.3
version: 1.0.3
@@ -1055,18 +1049,15 @@ importers:
'@discordapp/twemoji':
specifier: 15.1.0
version: 15.1.0
- '@github/webauthn-json':
- specifier: 2.1.1
- version: 2.1.1
'@rollup/plugin-json':
specifier: 6.1.0
- version: 6.1.0(rollup@4.22.2)
+ version: 6.1.0(rollup@4.22.5)
'@rollup/plugin-replace':
specifier: 5.0.7
- version: 5.0.7(rollup@4.22.2)
+ version: 5.0.7(rollup@4.22.5)
'@rollup/pluginutils':
- specifier: 5.1.0
- version: 5.1.0(rollup@4.22.2)
+ specifier: 5.1.2
+ version: 5.1.2(rollup@4.22.5)
'@tabler/icons-webfont':
specifier: 3.3.0
version: 3.3.0
@@ -1075,40 +1066,22 @@ importers:
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.7(typescript@5.6.2))
+ version: 5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))
'@vue/compiler-sfc':
- specifier: 3.5.7
- version: 3.5.7
+ specifier: 3.5.10
+ version: 3.5.10
astring:
specifier: 1.9.0
version: 1.9.0
buraha:
specifier: 0.0.1
version: 0.0.1
- compare-versions:
- specifier: 6.1.1
- version: 6.1.1
- date-fns:
- specifier: 2.30.0
- version: 2.30.0
- escape-regexp:
- specifier: 0.0.1
- version: 0.0.1
estree-walker:
specifier: 3.0.3
version: 3.0.3
- eventemitter3:
- specifier: 5.0.1
- version: 5.0.1
frontend-shared:
specifier: workspace:*
version: link:../frontend-shared
- idb-keyval:
- specifier: 6.2.1
- version: 6.2.1
- is-file-animated:
- specifier: 1.0.2
- version: 1.0.2
json5:
specifier: 2.2.3
version: 2.2.3
@@ -1122,23 +1095,14 @@ importers:
specifier: 2.3.1
version: 2.3.1
rollup:
- specifier: 4.22.2
- version: 4.22.2
- sanitize-html:
- specifier: 2.13.0
- version: 2.13.0
+ specifier: 4.22.5
+ version: 4.22.5
sass:
specifier: 1.79.3
version: 1.79.3
shiki:
specifier: 1.12.0
version: 1.12.0
- strict-event-emitter-types:
- specifier: 2.0.0
- version: 2.0.0
- throttle-debounce:
- specifier: 5.0.2
- version: 5.0.2
tinycolor2:
specifier: 1.6.0
version: 1.6.0
@@ -1155,21 +1119,18 @@ importers:
specifier: 10.0.0
version: 10.0.0
vite:
- specifier: 5.4.7
- version: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ specifier: 5.4.8
+ version: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
vue:
- specifier: 3.5.7
- version: 3.5.7(typescript@5.6.2)
+ specifier: 3.5.10
+ version: 3.5.10(typescript@5.6.2)
devDependencies:
'@misskey-dev/summaly':
specifier: 5.1.0
version: 5.1.0
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.7)(@vue/server-renderer@3.5.7(vue@3.5.7(typescript@5.6.2)))(vue@3.5.7(typescript@5.6.2))
- '@types/escape-regexp':
- specifier: 0.0.3
- version: 0.0.3
+ version: 8.1.0(@vue/compiler-sfc@3.5.10)(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))
'@types/estree':
specifier: 1.0.6
version: 1.0.6
@@ -1182,12 +1143,6 @@ importers:
'@types/punycode':
specifier: 2.1.4
version: 2.1.4
- '@types/sanitize-html':
- specifier: 2.13.0
- version: 2.13.0
- '@types/throttle-debounce':
- specifier: 5.0.2
- version: 5.0.2
'@types/tinycolor2':
specifier: 1.4.6
version: 1.4.6
@@ -1207,8 +1162,8 @@ importers:
specifier: 1.6.0
version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.3)(terser@5.33.0))
'@vue/runtime-core':
- specifier: 3.5.7
- version: 3.5.7
+ specifier: 3.5.10
+ version: 3.5.10
acorn:
specifier: 8.12.1
version: 8.12.1
@@ -3063,8 +3018,8 @@ packages:
resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1':
- resolution: {integrity: sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw==}
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0':
+ resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==}
peerDependencies:
typescript: '>= 4.3.x'
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
@@ -3608,8 +3563,8 @@ packages:
rollup:
optional: true
- '@rollup/pluginutils@5.1.0':
- resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
+ '@rollup/pluginutils@5.1.2':
+ resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
@@ -3617,83 +3572,83 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.22.2':
- resolution: {integrity: sha512-8Ao+EDmTPjZ1ZBABc1ohN7Ylx7UIYcjReZinigedTOnGFhIctyGPxY2II+hJ6gD2/vkDKZTyQ0e7++kwv6wDrw==}
+ '@rollup/rollup-android-arm-eabi@4.22.5':
+ resolution: {integrity: sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.22.2':
- resolution: {integrity: sha512-I+B1v0a4iqdS9DvYt1RJZ3W+Oh9EVWjbY6gp79aAYipIbxSLEoQtFQlZEnUuwhDXCqMxJ3hluxKAdPD+GiluFQ==}
+ '@rollup/rollup-android-arm64@4.22.5':
+ resolution: {integrity: sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.22.2':
- resolution: {integrity: sha512-BTHO7rR+LC67OP7I8N8GvdvnQqzFujJYWo7qCQ8fGdQcb8Gn6EQY+K1P+daQLnDCuWKbZ+gHAQZuKiQkXkqIYg==}
+ '@rollup/rollup-darwin-arm64@4.22.5':
+ resolution: {integrity: sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.22.2':
- resolution: {integrity: sha512-1esGwDNFe2lov4I6GsEeYaAMHwkqk0IbuGH7gXGdBmd/EP9QddJJvTtTF/jv+7R8ZTYPqwcdLpMTxK8ytP6k6Q==}
+ '@rollup/rollup-darwin-x64@4.22.5':
+ resolution: {integrity: sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.22.2':
- resolution: {integrity: sha512-GBHuY07x96OTEM3OQLNaUSUwrOhdMea/LDmlFHi/HMonrgF6jcFrrFFwJhhe84XtA1oK/Qh4yFS+VMREf6dobg==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.22.5':
+ resolution: {integrity: sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.22.2':
- resolution: {integrity: sha512-Dbfa9Sc1G1lWxop0gNguXOfGhaXQWAGhZUcqA0Vs6CnJq8JW/YOw/KvyGtQFmz4yDr0H4v9X248SM7bizYj4yQ==}
+ '@rollup/rollup-linux-arm-musleabihf@4.22.5':
+ resolution: {integrity: sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.22.2':
- resolution: {integrity: sha512-Z1YpgBvFYhZIyBW5BoopwSg+t7yqEhs5HCei4JbsaXnhz/eZehT18DaXl957aaE9QK7TRGFryCAtStZywcQe1A==}
+ '@rollup/rollup-linux-arm64-gnu@4.22.5':
+ resolution: {integrity: sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.22.2':
- resolution: {integrity: sha512-66Zszr7i/JaQ0u/lefcfaAw16wh3oT72vSqubIMQqWzOg85bGCPhoeykG/cC5uvMzH80DQa2L539IqKht6twVA==}
+ '@rollup/rollup-linux-arm64-musl@4.22.5':
+ resolution: {integrity: sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.22.2':
- resolution: {integrity: sha512-HpJCMnlMTfEhwo19bajvdraQMcAq3FX08QDx3OfQgb+414xZhKNf3jNvLFYKbbDSGBBrQh5yNwWZrdK0g0pokg==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.22.5':
+ resolution: {integrity: sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.22.2':
- resolution: {integrity: sha512-/egzQzbOSRef2vYCINKITGrlwkzP7uXRnL+xU2j75kDVp3iPdcF0TIlfwTRF8woBZllhk3QaxNOEj2Ogh3t9hg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.22.5':
+ resolution: {integrity: sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.22.2':
- resolution: {integrity: sha512-qgYbOEbrPfEkH/OnUJd1/q4s89FvNJQIUldx8X2F/UM5sEbtkqZpf2s0yly2jSCKr1zUUOY1hnTP2J1WOzMAdA==}
+ '@rollup/rollup-linux-s390x-gnu@4.22.5':
+ resolution: {integrity: sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.22.2':
- resolution: {integrity: sha512-a0lkvNhFLhf+w7A95XeBqGQaG0KfS3hPFJnz1uraSdUe/XImkp/Psq0Ca0/UdD5IEAGoENVmnYrzSC9Y2a2uKQ==}
+ '@rollup/rollup-linux-x64-gnu@4.22.5':
+ resolution: {integrity: sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.22.2':
- resolution: {integrity: sha512-sSWBVZgzwtsuG9Dxi9kjYOUu/wKW+jrbzj4Cclabqnfkot8Z3VEHcIgyenA3lLn/Fu11uDviWjhctulkhEO60g==}
+ '@rollup/rollup-linux-x64-musl@4.22.5':
+ resolution: {integrity: sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.22.2':
- resolution: {integrity: sha512-t/YgCbZ638R/r7IKb9yCM6nAek1RUvyNdfU0SHMDLOf6GFe/VG1wdiUAsxTWHKqjyzkRGg897ZfCpdo1bsCSsA==}
+ '@rollup/rollup-win32-arm64-msvc@4.22.5':
+ resolution: {integrity: sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.22.2':
- resolution: {integrity: sha512-kTmX5uGs3WYOA+gYDgI6ITkZng9SP71FEMoHNkn+cnmb9Zuyyay8pf0oO5twtTwSjNGy1jlaWooTIr+Dw4tIbw==}
+ '@rollup/rollup-win32-ia32-msvc@4.22.5':
+ resolution: {integrity: sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.22.2':
- resolution: {integrity: sha512-Yy8So+SoRz8I3NS4Bjh91BICPOSVgdompTIPYTByUqU66AXSIOgmW3Lv1ke3NORPqxdF+RdrZET+8vYai6f4aA==}
+ '@rollup/rollup-win32-x64-msvc@4.22.5':
+ resolution: {integrity: sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==}
cpu: [x64]
os: [win32]
@@ -4045,97 +4000,97 @@ packages:
'@sqltools/formatter@1.2.5':
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
- '@storybook/addon-actions@8.3.2':
- resolution: {integrity: sha512-Ds2lNyEpeVO0TexoXEHpE3kRcA7rJm5X5nWz4PdvF7kiC1aX5ZMy2qEPZOH6Jvalysm+PChw4Ib+lCaoIFGOJg==}
+ '@storybook/addon-actions@8.3.3':
+ resolution: {integrity: sha512-cbpksmld7iADwDGXgojZ4r8LGI3YA3NP68duAHg2n1dtnx1oUaFK5wd6dbNuz7GdjyhIOIy3OKU1dAuylYNGOQ==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-backgrounds@8.3.2':
- resolution: {integrity: sha512-5dPyynGRp2ZAZrpG2tadbdBk7X7GySoRuZwkQebNFGv+JZ8LoeQ/qc8yUOL+vfWKFGqvjOmX5R55IUHLYsw2NQ==}
+ '@storybook/addon-backgrounds@8.3.3':
+ resolution: {integrity: sha512-aX0OIrtjIB7UgSaiv20SFkfC1iWwJIGMPsPSJ5ZPhXIIOWIEBtSujh8YXwjDEXSC4DOHalmeT4bitRRe5KrVKA==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-controls@8.3.2':
- resolution: {integrity: sha512-YHoSMWSR1fItPb5S/3gOIhn9T6HcWcTxEJrjuuDk1hySmBmA+ojVJqmcI5MoNG3XtGigSXGJ/K2wmU57wZH4xw==}
+ '@storybook/addon-controls@8.3.3':
+ resolution: {integrity: sha512-78xRtVpY7eX/Lti00JLgwYCBRB6ZcvzY3SWk0uQjEqcTnQGoQkVg2L7oWFDlDoA1LBY18P5ei2vu8MYT9GXU4g==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-docs@8.3.2':
- resolution: {integrity: sha512-DPmWhvnHap8bmtiJOYpmo9MYpuJW5QyV6MhmGhpe60A9yH9TRTIf3h7uGpyX3TgtrYxC07Sw/8GaY0UfendJGg==}
+ '@storybook/addon-docs@8.3.3':
+ resolution: {integrity: sha512-REUandqq1RnMNOhsocRwx5q2fdlBAYPTDFlKASYfEn4Ln5NgbQRGxOAWl7yXAAFzbDmUDU7K20hkauecF0tyMw==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-essentials@8.3.2':
- resolution: {integrity: sha512-r0wnw5dbqeVklSjMkA5dTLufmm20IZSskSmadbXOOZBKFqANm15LRGdQ7+Pfr8N0XF4//tFwnvIfw+hMmKGFEQ==}
+ '@storybook/addon-essentials@8.3.3':
+ resolution: {integrity: sha512-E/uXoUYcg8ulG3lVbsEKb4v5hnMeGkq9YJqiZYKgVK7iRFa6p4HeVB1wU1adnm7RgjWvh+p0vQRo4KL2CTNXqw==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-highlight@8.3.2':
- resolution: {integrity: sha512-JFL/JLBZfa89POgi8lBdt8TzzCS1bgN/X6Qj1MlTq3pxHYqO66eG8DtMLjpuXKOhs8Dhdgs9/uxy5Yd+MFVRmQ==}
+ '@storybook/addon-highlight@8.3.3':
+ resolution: {integrity: sha512-MB084xJM66rLU+iFFk34kjLUiAWzDiy6Kz4uZRa1CnNqEK0sdI8HaoQGgOxTIa2xgJor05/8/mlYlMkP/0INsQ==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-interactions@8.3.2':
- resolution: {integrity: sha512-1JeM7iErTxjMlhT1TzVpCmD6SR7QZu54paOQTCCywVpaQG/MoJ+L8MZA1YFufTzq1kpRRrde5yHj2PM0TnMdEg==}
+ '@storybook/addon-interactions@8.3.3':
+ resolution: {integrity: sha512-3w5tpCGYdF33wF44xEhTS3Zmcwd6nITtwy5q+PJvHCJAm3fpjzL3xrjtlHKDvXNwYacJPRCbWKn2QwtxZIdN0g==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-links@8.3.2':
- resolution: {integrity: sha512-CHp/3XSB/AWyoP9b2tNaaKNTyftLPIPWqMhqhH1V5irjXhLDpBBEkmgbvB19xJ4qCfDjjOjokSLmSBaVOnzv2g==}
+ '@storybook/addon-links@8.3.3':
+ resolution: {integrity: sha512-rz4KEbzr1ca4zZEZwbOnhKiaEsokCl1KkngxT/C1YIkpW908j/kg2nnIb5MrtlAW1nirXguAR74t6CGntvdU9w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.2
+ storybook: ^8.3.3
peerDependenciesMeta:
react:
optional: true
- '@storybook/addon-mdx-gfm@8.3.2':
- resolution: {integrity: sha512-KrkgJRre9ef1SlrvQJypjq86Sm3pFBKyWDp6+Db8EM/It28PHGZGxfve/CiUbxSBBWm0C1yDpGB71YG1TQMFMw==}
+ '@storybook/addon-mdx-gfm@8.3.3':
+ resolution: {integrity: sha512-jdwVXoBSEdmuw8L4MxUeJ/qIInADfCwdtShnfTQIJBBRucOl8ykgfTKKNjllT79TFiK0gsWoiZmE05P4wuBofw==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-measure@8.3.2':
- resolution: {integrity: sha512-5RPF2oEw5XnTmz2cvjqz2WGnqOrJ1NxXIuJc6QeO6EXQqqjPnj/9rV/MBmzMd9cjk8Ud8c4AA5+jJbl4IgcwhQ==}
+ '@storybook/addon-measure@8.3.3':
+ resolution: {integrity: sha512-R20Z83gnxDRrocES344dw1Of/zDhe3XHSM6TLq80UQTJ9PhnMI+wYHQlK9DsdP3KiRkI+pQA6GCOp0s2ZRy5dg==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-outline@8.3.2':
- resolution: {integrity: sha512-VxUYCHPCZQDwnj/9U4d6QLsfGi9wHGO0hOENjC5ZCwzMNCq6t7XNRToSsq4zUPucH5XKaQW2vyTdbNdUQiki4Q==}
+ '@storybook/addon-outline@8.3.3':
+ resolution: {integrity: sha512-OwqYfieNuqSqWNtUZLu3UmsfQNnwA2UaSMBZyeC2Dte9Jd59PPYggcWmH+b0S6OTbYXWNAUK5U6WdK+X9Ypzdw==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-storysource@8.3.2':
- resolution: {integrity: sha512-CaCcLwZ9/YmYJ2DUdFTgAg4fX03hQF6RWWzfPMjiyCRWXeW918iBBP/EAHL8kuAt4qHlfYteXoMcbFaRgbqh0Q==}
+ '@storybook/addon-storysource@8.3.3':
+ resolution: {integrity: sha512-yPYQH9NepSNxoSsV9E7OV3/EVFrbU/r2B3E5WP/mCfqTXPg/5noce7iRi+rWqcVM1tsN1qPnSjfQQc7noF0h0Q==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-toolbars@8.3.2':
- resolution: {integrity: sha512-y3mokzvoeEE1ga96c8KX7anb9fU5wRGWZBsX7cQkm5ebXHsXjH2Y0pcdFnw6UxFbPMjh70LlZF9UhXnz7UC7Hw==}
+ '@storybook/addon-toolbars@8.3.3':
+ resolution: {integrity: sha512-4WyiVqDm4hlJdENIVQg9pLNLdfhnNKa+haerYYSzTVjzYrUx0X6Bxafshq+sud6aRtSYU14abwP56lfW8hgTlA==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/addon-viewport@8.3.2':
- resolution: {integrity: sha512-AyXpQ2ntpRoNfOWPnaUX4CTWSj163ncgzcoUyBRWL/yiu/PcMK4tlQ141mWwoamAcXEVDK40Q0vWmRwZ06C2gw==}
+ '@storybook/addon-viewport@8.3.3':
+ resolution: {integrity: sha512-2S+UpbKAL+z1ppzUCkixjaem2UDMkfmm/kyJ1wm3A/ofGLYi4fjMSKNRckk+7NdolXGQJjBo0RcaotUTxFIFwQ==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/blocks@8.3.2':
- resolution: {integrity: sha512-z6XTg5fC5XT/8vYYtFqVhQtBYw5MkSlkQF5HM1ntxlEesN4tGd14SjFd24nWuoAHq4G5D2D8KNt41IoNdzeD1A==}
+ '@storybook/blocks@8.3.3':
+ resolution: {integrity: sha512-8Vsvxqstop3xfbsx3Dn1nEjyxvQUcOYd8vpxyp2YumxYO8FlXIRuYL6HAkYbcX8JexsKvCZYxor52D2vUGIKZg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.2
+ storybook: ^8.3.3
peerDependenciesMeta:
react:
optional: true
react-dom:
optional: true
- '@storybook/builder-vite@8.3.2':
- resolution: {integrity: sha512-mq6T2J8gDiIuO8+nLBzQkMRncDb+zLiBmRrudwSNum3cFLPLDV1Y4JSzsoG/SjlQz1feUEqTO9by6i7wxKh+Cw==}
+ '@storybook/builder-vite@8.3.3':
+ resolution: {integrity: sha512-3yTXCLaB6bzhoPH3PqtacKkcaC1uV4L+IHTf1Zypx1NO1pLZHyhYf0T7dIOxTh2JZfqu1Pm9hTvOmWfR12m+9w==}
peerDependencies:
'@preact/preset-vite': '*'
- storybook: ^8.3.2
+ storybook: ^8.3.3
typescript: '>= 4.3.x'
vite: ^4.0.0 || ^5.0.0
vite-plugin-glimmerx: '*'
@@ -4147,23 +4102,23 @@ packages:
vite-plugin-glimmerx:
optional: true
- '@storybook/components@8.3.2':
- resolution: {integrity: sha512-yB/ETNTNVZi8xvVsTMWvtiI4APRj2zzAa3nHyQO0X+DC4jjysT9D1ruL6jZJ/2DHMp7A9U6v2if83dby/kszfg==}
+ '@storybook/components@8.3.3':
+ resolution: {integrity: sha512-i2JYtesFGkdu+Hwuj+o9fLuO3yo+LPT1/8o5xBVYtEqsgDtEAyuRUWjSz8d8NPtzloGPOv5kvR6MokWDfbeMfw==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/core-events@8.3.2':
- resolution: {integrity: sha512-Nf63X2MLIiw1Czc/zxZ1hWLCNr6+NujJb6Dy96pgcGYLiKduFi9nKPG5eP0VEXpPWFWOc7ccCPxZ+Iw0q+USPw==}
+ '@storybook/core-events@8.3.3':
+ resolution: {integrity: sha512-YL+gBuCS81qktzTkvw0MXUJW0bYAXfRzMoiLfDBTrEKZfcJOB4JAlMGmvRRar0+jygK3icD42Rl5BwWoZY6KFQ==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/core@8.3.2':
- resolution: {integrity: sha512-DVXs9AZzXHUKEhi5hKQ4gmH2ODFFM9hmd3odnlqenIINxGynbRtAGzU8pMhjrTRSrnlLr1liGew1IcY+hwkFjQ==}
+ '@storybook/core@8.3.3':
+ resolution: {integrity: sha512-pmf2bP3fzh45e56gqOuBT8sDX05hGdUKIZ/hcI84d5xmd6MeHiPW8th2v946wCHcxHzxib2/UU9vQUh+mB4VNw==}
- '@storybook/csf-plugin@8.3.2':
- resolution: {integrity: sha512-9UvoBkYDLzf/0e2lQMPyBCJHrrEMxvhL7fraVX2c5OxwVUwgQnHlgNR3zxzw1Nr/AWyC5OKYlaE1eM10JVm2GA==}
+ '@storybook/csf-plugin@8.3.3':
+ resolution: {integrity: sha512-7AD7ojpXr3THqpTcEI4K7oKUfSwt1hummgL/cASuQvEPOwAZCVZl2gpGtKxcXhtJXTkn3GMCAvlYMoe7O/1YWw==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
'@storybook/csf@0.1.11':
resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==}
@@ -4178,45 +4133,45 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
- '@storybook/instrumenter@8.3.2':
- resolution: {integrity: sha512-+H3Z9wn+D8sMuOd+KjHUr8iyRLVpYvWQ4GmV7GKH173PfFAQ2zmX/502K1BS2BAuLrS1l0e6fGZhl7G3u2fL+g==}
+ '@storybook/instrumenter@8.3.3':
+ resolution: {integrity: sha512-ZiODB9EwCQkl4PBxGJjBHXRTLxcNs68ZZvR+xeMr0eMFzzlJG+trXoX5kK95oA4BFhGN+3uM0Zl3MoRjBtJTNA==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/manager-api@8.3.2':
- resolution: {integrity: sha512-8FuwE3BGsLPF0H154+1X/4krSbvmH5xu5YmaVTVDV8DRPlBeRIlNV0HDiZfBvftF4EB7fRYolzghXQplHIX8Fg==}
+ '@storybook/manager-api@8.3.3':
+ resolution: {integrity: sha512-Na4U+McOeVUJAR6qzJfQ6y2Qt0kUgEDUriNoAn+curpoKPTmIaZ79RAXBzIqBl31VyQKknKpZbozoRGf861YaQ==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/preview-api@8.3.2':
- resolution: {integrity: sha512-bZvqahrS5oXkiVmqt9rPhlpo/xYLKT7QUWKKIDBRJDp+1mYbQhgsP5NhjUtUdaC+HSofAFzJmVFmixyquYsoGw==}
+ '@storybook/preview-api@8.3.3':
+ resolution: {integrity: sha512-GP2QlaF3BBQGAyo248N7549YkTQjCentsc1hUvqPnFWU4xfjkejbnFk8yLaIw0VbYbL7jfd7npBtjZ+6AnphMQ==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/react-dom-shim@8.3.2':
- resolution: {integrity: sha512-fYL7jh9yFkiKIqRJedqTcrmyoVzS/cMxZD/EFfDRaonMVlLlYJQKocuvR1li1iyeKLvd5lxZsHuQ80c98AkDMA==}
+ '@storybook/react-dom-shim@8.3.3':
+ resolution: {integrity: sha512-0dPC9K7+K5+X/bt3GwYmh+pCpisUyKVjWsI+PkzqGnWqaXFakzFakjswowIAIO1rf7wYZR591x3ehUAyL2bJiQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/react-vite@8.3.2':
- resolution: {integrity: sha512-xxV6FJj4OnJ1lQbO7804T2xJu0aXvb02/tyLpDo0aNdi2vMZrHMroYpcOJW3RDuOIrMYq2OvXPrIHnkumidSsg==}
+ '@storybook/react-vite@8.3.3':
+ resolution: {integrity: sha512-vzOqVaA/rv+X5J17eWKxdZztMKEKfsCSP8pNNmrqXWxK3pSlW0fAPxtn1kw3UNxGtAv71pcqvaCUtTJKqI1PYA==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.2
+ storybook: ^8.3.3
vite: ^4.0.0 || ^5.0.0
- '@storybook/react@8.3.2':
- resolution: {integrity: sha512-GvnqhxvaYC6s8WMiDWr184UlNp5jmRVNMBHasXlUsVDYvs6J1tStJeN+XBZbAJBW/0zkHLuf4REk8lLBi2eKRQ==}
+ '@storybook/react@8.3.3':
+ resolution: {integrity: sha512-fHOW/mNqI+sZWttGOE32Q+rAIbN7/Oib091cmE8usOM0z0vPNpywUBtqC2cCQH39vp19bhTsQaSsTcoBSweAHw==}
engines: {node: '>=18.0.0'}
peerDependencies:
- '@storybook/test': 8.3.2
+ '@storybook/test': 8.3.3
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.2
+ storybook: ^8.3.3
typescript: '>= 4.2.x'
peerDependenciesMeta:
'@storybook/test':
@@ -4224,38 +4179,38 @@ packages:
typescript:
optional: true
- '@storybook/source-loader@8.3.2':
- resolution: {integrity: sha512-+h9F5KB/ccLlV1FXwoQ6sftYGHimaMttC5mQ6o5t3a3EI8cbyMxdnz5uoAO3mpO3CuVLg/jkfNO/RboHTNBEDg==}
+ '@storybook/source-loader@8.3.3':
+ resolution: {integrity: sha512-NeP7l53mvnnfwi+91vtRaibZer+UJi6gkoaGRCpphL3L+3qVIXN3p41uXhAy+TahdFI2dbrWvLSNgtsvdXVaFg==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/test@8.3.2':
- resolution: {integrity: sha512-pRrARctJoZQSKKhMyKkXZQK+fVtnilxTmd0AJx7UBJFUTZmMbp6uEdoyr4NyORCUO1xxxrdbD88vEUsSC1hdYw==}
+ '@storybook/test@8.3.3':
+ resolution: {integrity: sha512-uZ8nMIovfI2ry989K2+cYAeEVD/3dpjj2+Rbmy7DiZWWVhFALfmqaTRkzZfShLmlH0TFv+rfcBPihGccBtw0FQ==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/theming@8.3.2':
- resolution: {integrity: sha512-JXAVc08Tlbu4GTTMGNmwUy69lShqSpJixAJc4bvWTnNAtPTRltiNJCg/KJ0GauEyRFk8ZR2Ha4KhN3DB1felNQ==}
+ '@storybook/theming@8.3.3':
+ resolution: {integrity: sha512-gWJKetI6XJQgkrvvry4ez10+jLaGNCQKi5ygRPM9N+qrjA3BB8F2LCuFUTBuisa4l64TILDNjfwP/YTWV5+u5A==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/types@8.3.2':
- resolution: {integrity: sha512-4GnGjt5Q4W+hctROyCoLiTUSVIMdaSqaNigg0TkkN/6XKqcUDtuKLZVU8NuGPdUtyo5+18WdVgbU1DXlFe+aDA==}
+ '@storybook/types@8.3.3':
+ resolution: {integrity: sha512-wV1kupG1tfTMOXaBrtVHXuqp19vURVDqWTQX6nqkoUFD7Xb1lz/YNVeGP1uT/zJdJy42/HIyoib9JPx9h0Vx9w==}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
- '@storybook/vue3-vite@8.3.2':
- resolution: {integrity: sha512-zDBW7ET50RIxYmTON/hDo+XZtP5AS4X9reRHh+euUi33eTaTqE66g+KODKdLJOY0tx/zimwGNK6S8MdBWFWXGg==}
+ '@storybook/vue3-vite@8.3.3':
+ resolution: {integrity: sha512-IFcoOGlUGuUkL3rpm9UFs8FK9JX1ZdfGpLXRObVOVRhW3t+MsNLpx4Fqp3a/re6WcCC3yvHzbLXgvGcjpapkbw==}
engines: {node: '>=18.0.0'}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
vite: ^4.0.0 || ^5.0.0
- '@storybook/vue3@8.3.2':
- resolution: {integrity: sha512-DwliJ3sZGUhNMtpcdNmscGkIZTSKBfeRqufXwVYEw8+vnd3UFy4gLohqy+6aV3lXcV5eJE+S0TgJ+D9cWKMh5Q==}
+ '@storybook/vue3@8.3.3':
+ resolution: {integrity: sha512-peu8MFGwmhpXoD3n42qG6TxeVHRhfHZ0/HW4+A6FXSB1c9w0CC4AzHs5f1w3yUvshtexNN5bkw9Q4nSVKtfU7A==}
engines: {node: '>=18.0.0'}
peerDependencies:
- storybook: ^8.3.2
+ storybook: ^8.3.3
vue: ^3.0.0
'@swc/cli@0.3.12':
@@ -4662,9 +4617,6 @@ packages:
'@types/doctrine@0.0.9':
resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==}
- '@types/escape-regexp@0.0.3':
- resolution: {integrity: sha512-FQMYUxaf1dVeWLUzJFSvfdDugfOpDyM13p67QfyMdagxSkBa689opkr/q9uR/VWyrWrl0jAyQaSPKxX9MpAXFw==}
-
'@types/escodegen@0.0.6':
resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==}
@@ -4674,9 +4626,6 @@ packages:
'@types/estree@0.0.51':
resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==}
- '@types/estree@1.0.5':
- resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
-
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
@@ -5153,26 +5102,32 @@ packages:
'@vue/compiler-core@3.4.37':
resolution: {integrity: sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==}
+ '@vue/compiler-core@3.5.10':
+ resolution: {integrity: sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==}
+
'@vue/compiler-core@3.5.7':
resolution: {integrity: sha512-A0gay3lK71MddsSnGlBxRPOugIVdACze9L/rCo5X5srCyjQfZOfYtSFMJc3aOZCM+xN55EQpb4R97rYn/iEbSw==}
'@vue/compiler-dom@3.4.37':
resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==}
+ '@vue/compiler-dom@3.5.10':
+ resolution: {integrity: sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==}
+
'@vue/compiler-dom@3.5.7':
resolution: {integrity: sha512-GYWl3+gO8/g0ZdYaJ18fYHdI/WVic2VuuUd1NsPp60DWXKy+XjdhFsDW7FbUto8siYYZcosBGn9yVBkjhq1M8Q==}
'@vue/compiler-sfc@3.4.37':
resolution: {integrity: sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==}
- '@vue/compiler-sfc@3.5.7':
- resolution: {integrity: sha512-EjOJtCWJrC7HqoCEzOwpIYHm+JH7YmkxC1hG6VkqIukYRqj8KFUlTLK6hcT4nGgtVov2+ZfrdrRlcaqS78HnBA==}
+ '@vue/compiler-sfc@3.5.10':
+ resolution: {integrity: sha512-to8E1BgpakV7224ZCm8gz1ZRSyjNCAWEplwFMWKlzCdP9DkMKhRRwt0WkCjY7jkzi/Vz3xgbpeig5Pnbly4Tow==}
'@vue/compiler-ssr@3.4.37':
resolution: {integrity: sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==}
- '@vue/compiler-ssr@3.5.7':
- resolution: {integrity: sha512-oZx+jXP2k5arV/8Ly3TpQbfFyimMw2ANrRqvHJoKjPqtEzazxQGZjCLOfq8TnZ3wy2TOXdqfmVp4q7FyYeHV4g==}
+ '@vue/compiler-ssr@3.5.10':
+ resolution: {integrity: sha512-hxP4Y3KImqdtyUKXDRSxKSRkSm1H9fCvhojEYrnaoWhE4w/y8vwWhnosJoPPe2AXm5sU7CSbYYAgkt2ZPhDz+A==}
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
@@ -5196,34 +5151,37 @@ packages:
'@vue/reactivity@3.4.37':
resolution: {integrity: sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==}
- '@vue/reactivity@3.5.7':
- resolution: {integrity: sha512-yF0EpokpOHRNXyn/h6abXc9JFIzfdAf0MJHIi92xxCWS0mqrXH6+2aZ+A6EbSrspGzX5MHTd5N8iBA28HnXu9g==}
+ '@vue/reactivity@3.5.10':
+ resolution: {integrity: sha512-kW08v06F6xPSHhid9DJ9YjOGmwNDOsJJQk0ax21wKaUYzzuJGEuoKNU2Ujux8FLMrP7CFJJKsHhXN9l2WOVi2g==}
'@vue/runtime-core@3.4.37':
resolution: {integrity: sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==}
- '@vue/runtime-core@3.5.7':
- resolution: {integrity: sha512-OzLpBpKbZEaZVSNfd+hQbfBrDKux+b7Yl5hYhhWWWhHD7fEpF+CdI3Brm5k5GsufHEfvMcjruPxwQZuBN6nFYQ==}
+ '@vue/runtime-core@3.5.10':
+ resolution: {integrity: sha512-9Q86I5Qq3swSkFfzrZ+iqEy7Vla325M7S7xc1NwKnRm/qoi1Dauz0rT6mTMmscqx4qz0EDJ1wjB+A36k7rl8mA==}
'@vue/runtime-dom@3.4.37':
resolution: {integrity: sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==}
- '@vue/runtime-dom@3.5.7':
- resolution: {integrity: sha512-fL7cETfE27U2jyTgqzE382IGFY6a6uyznErn27KbbEzNctzxxUWYDbaN3B55l9nXh0xW2LRWPuWKOvjtO2UewQ==}
+ '@vue/runtime-dom@3.5.10':
+ resolution: {integrity: sha512-t3x7ht5qF8ZRi1H4fZqFzyY2j+GTMTDxRheT+i8M9Ph0oepUxoadmbwlFwMoW7RYCpNQLpP2Yx3feKs+fyBdpA==}
'@vue/server-renderer@3.4.37':
resolution: {integrity: sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==}
peerDependencies:
vue: 3.4.37
- '@vue/server-renderer@3.5.7':
- resolution: {integrity: sha512-peRypij815eIDjpPpPXvYQGYqPH6QXwLJGWraJYPPn8JqWGl29A8QXnS7/Mh3TkMiOcdsJNhbFCoW2Agc2NgAQ==}
+ '@vue/server-renderer@3.5.10':
+ resolution: {integrity: sha512-IVE97tt2kGKwHNq9yVO0xdh1IvYfZCShvDSy46JIh5OQxP1/EXSpoDqetVmyIzL7CYOWnnmMkVqd7YK2QSWkdw==}
peerDependencies:
- vue: 3.5.7
+ vue: 3.5.10
'@vue/shared@3.4.37':
resolution: {integrity: sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==}
+ '@vue/shared@3.5.10':
+ resolution: {integrity: sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==}
+
'@vue/shared@3.5.7':
resolution: {integrity: sha512-NBE1PBIvzIedxIc2RZiKXvGbJkrZ2/hLf3h8GlS4/sP9xcXEZMFWOazFkNd6aGeUCMaproe5MHVYB3/4AW9q9g==}
@@ -5903,8 +5861,8 @@ packages:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
- chromatic@11.10.2:
- resolution: {integrity: sha512-EbVlhmOLGdx9QRX3RMOTF3UzoyC1aaXNRjlzm1mc++2OI5+6C5Bzwt2ZUYJ3Jnf/pJa23q0y5Y3QEDcfRVqIbg==}
+ chromatic@11.10.4:
+ resolution: {integrity: sha512-nfgDpW5gQ4FtgV1lZXXfqLjONKDCh2K4vwI3dbZrtU1ObOL9THyAzpIdnK9LRcNSeisDLX+XFCryfMg1Ql2U2g==}
hasBin: true
peerDependencies:
'@chromatic-com/cypress': ^0.*.* || ^1.0.0
@@ -6224,6 +6182,11 @@ packages:
engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0}
hasBin: true
+ cypress@13.15.0:
+ resolution: {integrity: sha512-53aO7PwOfi604qzOkCSzNlWquCynLlKE/rmmpSPcziRH6LNfaDUAklQT6WJIsD8ywxlIy+uVZsnTMCCQVd2kTw==}
+ engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0}
+ hasBin: true
+
dashdash@1.14.1:
resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}
engines: {node: '>=0.10'}
@@ -10157,8 +10120,8 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
- rollup@4.22.2:
- resolution: {integrity: sha512-JWWpTrZmqQGQWt16xvNn6KVIUz16VtZwl984TKw0dfqqRpFwtLJYYk1/4BTgplndMQKWUk/yB4uOShYmMzA2Vg==}
+ rollup@4.22.5:
+ resolution: {integrity: sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -10596,8 +10559,8 @@ packages:
react-dom:
optional: true
- storybook@8.3.2:
- resolution: {integrity: sha512-jfDPtoPTtXcQ4O82u6+VE0V8q05hnj9NdmTVJvUxab796FoEbhk07xFLynOopfd9h9i0D/jc5Sf4C+iMe1bhmA==}
+ storybook@8.3.3:
+ resolution: {integrity: sha512-FG2KAVQN54T9R6voudiEftehtkXtLO+YVGP2gBPfacEdDQjY++ld7kTbHzpTT/bpCDx7Yq3dqOegLm9arVJfYw==}
hasBin: true
stream-browserify@3.0.0:
@@ -10820,8 +10783,8 @@ packages:
thread-stream@3.1.0:
resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
- three@0.168.0:
- resolution: {integrity: sha512-6m6jXtDwMJEK/GGMbAOTSAmxNdzKvvBzgd7q8bE/7Tr6m7PaBh5kKLrN7faWtlglXbzj7sVba48Idwx+NRsZXw==}
+ three@0.169.0:
+ resolution: {integrity: sha512-Ed906MA3dR4TS5riErd4QBsRGPcx+HBDX2O5yYE5GqJeFQTPU+M56Va/f/Oph9X7uZo3W3o4l2ZhBZ6f6qUv0w==}
throttle-debounce@5.0.2:
resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==}
@@ -11324,8 +11287,8 @@ packages:
vite-plugin-turbosnap@1.0.3:
resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==}
- vite@5.4.7:
- resolution: {integrity: sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==}
+ vite@5.4.8:
+ resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -11475,8 +11438,8 @@ packages:
typescript:
optional: true
- vue@3.5.7:
- resolution: {integrity: sha512-JcFm0f5j8DQO9E07pZRxqZ/ZsNopMVzHYXpKvnfqXFcA4JTi+4YcrikRn9wkzWsdj0YsLzlLIsR0zzGxA2P6Wg==}
+ vue@3.5.10:
+ resolution: {integrity: sha512-Vy2kmJwHPlouC/tSnIgXVg03SG+9wSqT1xu1Vehc+ChsXsRd7jLkKgMltVEFOzUdBr3uFwBCG+41LJtfAcBRng==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -12277,7 +12240,7 @@ snapshots:
'@babel/traverse': 7.23.5
'@babel/types': 7.24.7
convert-source-map: 2.0.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -12297,7 +12260,7 @@ snapshots:
'@babel/traverse': 7.24.7
'@babel/types': 7.24.7
convert-source-map: 2.0.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -12556,7 +12519,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.24.7
'@babel/types': 7.24.7
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -12571,7 +12534,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.24.7
'@babel/parser': 7.24.7
'@babel/types': 7.24.7
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -13108,7 +13071,7 @@ snapshots:
'@eslint/config-array@0.17.1':
dependencies:
'@eslint/object-schema': 2.1.4
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -13116,7 +13079,7 @@ snapshots:
'@eslint/config-array@0.18.0':
dependencies:
'@eslint/object-schema': 2.1.4
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -13124,7 +13087,7 @@ snapshots:
'@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
espree: 10.1.0
globals: 14.0.0
ignore: 5.3.1
@@ -13582,13 +13545,13 @@ snapshots:
'@types/yargs': 17.0.19
chalk: 4.1.2
- '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.6.2)(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
dependencies:
glob: 7.2.3
glob-promise: 4.2.2(glob@7.2.3)
magic-string: 0.27.0
react-docgen-typescript: 2.2.2(typescript@5.6.2)
- vite: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
optionalDependencies:
typescript: 5.6.2
@@ -13995,7 +13958,7 @@ snapshots:
'@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.25.1
- semver: 7.6.0
+ semver: 7.6.3
transitivePeerDependencies:
- supports-color
@@ -14087,7 +14050,7 @@ snapshots:
'@types/shimmer': 1.0.5
import-in-the-middle: 1.7.1
require-in-the-middle: 7.3.0
- semver: 7.6.0
+ semver: 7.6.3
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
@@ -14100,7 +14063,7 @@ snapshots:
'@types/shimmer': 1.0.5
import-in-the-middle: 1.10.0
require-in-the-middle: 7.3.0
- semver: 7.6.0
+ semver: 7.6.3
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
@@ -14225,73 +14188,73 @@ snapshots:
'@readme/openapi-schemas@3.1.0': {}
- '@rollup/plugin-json@6.1.0(rollup@4.22.2)':
+ '@rollup/plugin-json@6.1.0(rollup@4.22.5)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.22.2)
+ '@rollup/pluginutils': 5.1.2(rollup@4.22.5)
optionalDependencies:
- rollup: 4.22.2
+ rollup: 4.22.5
- '@rollup/plugin-replace@5.0.7(rollup@4.22.2)':
+ '@rollup/plugin-replace@5.0.7(rollup@4.22.5)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.22.2)
+ '@rollup/pluginutils': 5.1.2(rollup@4.22.5)
magic-string: 0.30.10
optionalDependencies:
- rollup: 4.22.2
+ rollup: 4.22.5
- '@rollup/pluginutils@5.1.0(rollup@4.22.2)':
+ '@rollup/pluginutils@5.1.2(rollup@4.22.5)':
dependencies:
'@types/estree': 1.0.6
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 4.22.2
+ rollup: 4.22.5
- '@rollup/rollup-android-arm-eabi@4.22.2':
+ '@rollup/rollup-android-arm-eabi@4.22.5':
optional: true
- '@rollup/rollup-android-arm64@4.22.2':
+ '@rollup/rollup-android-arm64@4.22.5':
optional: true
- '@rollup/rollup-darwin-arm64@4.22.2':
+ '@rollup/rollup-darwin-arm64@4.22.5':
optional: true
- '@rollup/rollup-darwin-x64@4.22.2':
+ '@rollup/rollup-darwin-x64@4.22.5':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.22.2':
+ '@rollup/rollup-linux-arm-gnueabihf@4.22.5':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.22.2':
+ '@rollup/rollup-linux-arm-musleabihf@4.22.5':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.22.2':
+ '@rollup/rollup-linux-arm64-gnu@4.22.5':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.22.2':
+ '@rollup/rollup-linux-arm64-musl@4.22.5':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.22.2':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.22.5':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.22.2':
+ '@rollup/rollup-linux-riscv64-gnu@4.22.5':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.22.2':
+ '@rollup/rollup-linux-s390x-gnu@4.22.5':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.22.2':
+ '@rollup/rollup-linux-x64-gnu@4.22.5':
optional: true
- '@rollup/rollup-linux-x64-musl@4.22.2':
+ '@rollup/rollup-linux-x64-musl@4.22.5':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.22.2':
+ '@rollup/rollup-win32-arm64-msvc@4.22.5':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.22.2':
+ '@rollup/rollup-win32-ia32-msvc@4.22.5':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.22.2':
+ '@rollup/rollup-win32-x64-msvc@4.22.5':
optional: true
'@rtsao/scc@1.1.0': {}
@@ -14829,120 +14792,120 @@ snapshots:
'@sqltools/formatter@1.2.5': {}
- '@storybook/addon-actions@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-actions@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
'@types/uuid': 9.0.8
dequal: 2.0.3
polished: 4.2.2
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
uuid: 9.0.1
- '@storybook/addon-backgrounds@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-backgrounds@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
memoizerific: 1.11.3
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-controls@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-controls@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
dequal: 2.0.3
lodash: 4.17.21
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-docs@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-docs@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@mdx-js/react': 3.0.1(@types/react@18.0.28)(react@18.3.1)
- '@storybook/blocks': 8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/csf-plugin': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/blocks': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/csf-plugin': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/global': 5.0.0
- '@storybook/react-dom-shim': 8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@types/react': 18.0.28
fs-extra: 11.1.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
rehype-external-links: 3.0.0
rehype-slug: 6.0.0
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-essentials@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-essentials@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- '@storybook/addon-actions': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-backgrounds': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-controls': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-docs': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-highlight': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-measure': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-outline': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-toolbars': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-viewport': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/addon-actions': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-backgrounds': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-controls': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-docs': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-highlight': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-measure': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-outline': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-toolbars': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-viewport': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-highlight@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-highlight@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/addon-interactions@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-interactions@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/test': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/instrumenter': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/test': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
polished: 4.2.2
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-links@8.3.2(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-links@8.3.3(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
optionalDependencies:
react: 18.3.1
- '@storybook/addon-mdx-gfm@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-mdx-gfm@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
remark-gfm: 4.0.0
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
transitivePeerDependencies:
- supports-color
- '@storybook/addon-measure@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-measure@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
tiny-invariant: 1.3.3
- '@storybook/addon-outline@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-outline@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-storysource@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-storysource@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- '@storybook/source-loader': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/source-loader': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
estraverse: 5.3.0
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
tiny-invariant: 1.3.3
- '@storybook/addon-toolbars@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-toolbars@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/addon-viewport@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-viewport@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
memoizerific: 1.11.3
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/blocks@8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/blocks@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
@@ -14955,7 +14918,7 @@ snapshots:
memoizerific: 1.11.3
polished: 4.2.2
react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
telejson: 7.2.0
ts-dedent: 2.2.0
util-deprecate: 1.0.2
@@ -14963,33 +14926,33 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/builder-vite@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
+ '@storybook/builder-vite@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
dependencies:
- '@storybook/csf-plugin': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/csf-plugin': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@types/find-cache-dir': 3.2.1
browser-assert: 1.2.1
es-module-lexer: 1.5.4
- express: 4.19.2
+ express: 4.21.0
find-cache-dir: 3.3.2
fs-extra: 11.1.1
- magic-string: 0.30.10
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ magic-string: 0.30.11
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- vite: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- '@storybook/components@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/components@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/core-events@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/core-events@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/core@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)':
+ '@storybook/core@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)':
dependencies:
'@storybook/csf': 0.1.11
'@types/express': 4.17.21
@@ -14997,7 +14960,7 @@ snapshots:
browser-assert: 1.2.1
esbuild: 0.23.1
esbuild-register: 3.5.0(esbuild@0.23.1)
- express: 4.19.2
+ express: 4.21.0
jsdoc-type-pratt-parser: 4.1.0
process: 0.11.10
recast: 0.23.6
@@ -15009,9 +14972,9 @@ snapshots:
- supports-color
- utf-8-validate
- '@storybook/csf-plugin@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/csf-plugin@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
unplugin: 1.4.0
'@storybook/csf@0.1.11':
@@ -15025,42 +14988,42 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/instrumenter@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/instrumenter@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
'@vitest/utils': 2.1.1
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
util: 0.12.5
- '@storybook/manager-api@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/manager-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/preview-api@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/preview-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/react-dom-shim@8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/react-dom-shim@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/react-vite@8.3.2(@storybook/test@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.2)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
+ '@storybook/react-vite@8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.5)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
dependencies:
- '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.1(typescript@5.6.2)(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
- '@rollup/pluginutils': 5.1.0(rollup@4.22.2)
- '@storybook/builder-vite': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
- '@storybook/react': 8.3.2(@storybook/test@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
+ '@rollup/pluginutils': 5.1.2(rollup@4.22.5)
+ '@storybook/builder-vite': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
+ '@storybook/react': 8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
find-up: 5.0.0
- magic-string: 0.30.10
+ magic-string: 0.30.11
react: 18.3.1
react-docgen: 7.0.1
react-dom: 18.3.1(react@18.3.1)
resolve: 1.22.8
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
tsconfig-paths: 4.2.0
- vite: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
transitivePeerDependencies:
- '@preact/preset-vite'
- '@storybook/test'
@@ -15069,14 +15032,14 @@ snapshots:
- typescript
- vite-plugin-glimmerx
- '@storybook/react@8.3.2(@storybook/test@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)':
+ '@storybook/react@8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)':
dependencies:
- '@storybook/components': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/global': 5.0.0
- '@storybook/manager-api': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/react-dom-shim': 8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/manager-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@types/escodegen': 0.0.6
'@types/estree': 0.0.51
'@types/node': 22.5.5
@@ -15089,73 +15052,73 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- semver: 7.6.0
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ semver: 7.6.3
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
type-fest: 2.19.0
util-deprecate: 1.0.2
optionalDependencies:
- '@storybook/test': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/test': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
typescript: 5.6.2
- '@storybook/source-loader@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/source-loader@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
estraverse: 5.3.0
lodash: 4.17.21
prettier: 3.3.3
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/test@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/instrumenter': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@testing-library/dom': 10.4.0
'@testing-library/jest-dom': 6.5.0
'@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0)
'@vitest/expect': 2.0.5
'@vitest/spy': 2.0.5
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
util: 0.12.5
- '@storybook/theming@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/theming@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/types@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/types@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/vue3-vite@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.7(typescript@5.6.2))':
+ '@storybook/vue3-vite@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))':
dependencies:
- '@storybook/builder-vite': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
- '@storybook/vue3': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.7(typescript@5.6.2))
+ '@storybook/builder-vite': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
+ '@storybook/vue3': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.10(typescript@5.6.2))
find-package-json: 1.2.0
- magic-string: 0.30.10
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ magic-string: 0.30.11
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
typescript: 5.6.2
- vite: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
vue-component-meta: 2.0.16(typescript@5.6.2)
- vue-docgen-api: 4.75.1(vue@3.5.7(typescript@5.6.2))
+ vue-docgen-api: 4.75.1(vue@3.5.10(typescript@5.6.2))
transitivePeerDependencies:
- '@preact/preset-vite'
- supports-color
- vite-plugin-glimmerx
- vue
- '@storybook/vue3@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.7(typescript@5.6.2))':
+ '@storybook/vue3@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.10(typescript@5.6.2))':
dependencies:
- '@storybook/components': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/global': 5.0.0
- '@storybook/manager-api': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@vue/compiler-core': 3.4.37
- storybook: 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/manager-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@vue/compiler-core': 3.5.7
+ storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
type-fest: 2.19.0
- vue: 3.5.7(typescript@5.6.2)
+ vue: 3.5.10(typescript@5.6.2)
vue-component-type-helpers: 2.1.6
'@swc/cli@0.3.12(@swc/core@1.6.6)(chokidar@3.5.3)':
@@ -15463,14 +15426,14 @@ snapshots:
dependencies:
'@testing-library/dom': 10.4.0
- '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.7)(@vue/server-renderer@3.5.7(vue@3.5.7(typescript@5.6.2)))(vue@3.5.7(typescript@5.6.2))':
+ '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.10)(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))':
dependencies:
'@babel/runtime': 7.23.4
'@testing-library/dom': 9.3.4
- '@vue/test-utils': 2.4.1(@vue/server-renderer@3.5.7(vue@3.5.7(typescript@5.6.2)))(vue@3.5.7(typescript@5.6.2))
- vue: 3.5.7(typescript@5.6.2)
+ '@vue/test-utils': 2.4.1(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))
+ vue: 3.5.10(typescript@5.6.2)
optionalDependencies:
- '@vue/compiler-sfc': 3.5.7
+ '@vue/compiler-sfc': 3.5.10
transitivePeerDependencies:
- '@vue/server-renderer'
@@ -15561,8 +15524,6 @@ snapshots:
'@types/doctrine@0.0.9': {}
- '@types/escape-regexp@0.0.3': {}
-
'@types/escodegen@0.0.6': {}
'@types/eslint@7.29.0':
@@ -15572,8 +15533,6 @@ snapshots:
'@types/estree@0.0.51': {}
- '@types/estree@1.0.5': {}
-
'@types/estree@1.0.6': {}
'@types/express-serve-static-core@4.17.33':
@@ -15965,7 +15924,7 @@ snapshots:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
optionalDependencies:
typescript: 5.5.4
@@ -15978,7 +15937,7 @@ snapshots:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
optionalDependencies:
typescript: 5.6.2
@@ -15991,7 +15950,7 @@ snapshots:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.8.0
optionalDependencies:
typescript: 5.6.2
@@ -16012,7 +15971,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
'@typescript-eslint/utils': 7.1.0(eslint@9.11.0)(typescript@5.3.3)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
ts-api-utils: 1.0.1(typescript@5.3.3)
optionalDependencies:
@@ -16024,7 +15983,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
'@typescript-eslint/utils': 7.17.0(eslint@9.11.0)(typescript@5.5.4)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
ts-api-utils: 1.3.0(typescript@5.5.4)
optionalDependencies:
@@ -16036,7 +15995,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
'@typescript-eslint/utils': 7.17.0(eslint@9.11.0)(typescript@5.6.2)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
@@ -16048,7 +16007,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
'@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.8.0
ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
@@ -16064,7 +16023,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.1.0
'@typescript-eslint/visitor-keys': 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@@ -16079,7 +16038,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.4
@@ -16094,7 +16053,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.4
@@ -16164,16 +16123,16 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
- '@vitejs/plugin-vue@5.1.4(vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.7(typescript@5.6.2))':
+ '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))':
dependencies:
- vite: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
- vue: 3.5.7(typescript@5.6.2)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vue: 3.5.10(typescript@5.6.2)
'@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0))':
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.4
@@ -16192,7 +16151,7 @@ snapshots:
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.4
@@ -16236,7 +16195,7 @@ snapshots:
'@vitest/snapshot@1.6.0':
dependencies:
- magic-string: 0.30.10
+ magic-string: 0.30.11
pathe: 1.1.2
pretty-format: 29.7.0
@@ -16295,11 +16254,19 @@ snapshots:
'@vue/compiler-core@3.4.37':
dependencies:
- '@babel/parser': 7.24.7
+ '@babel/parser': 7.25.6
'@vue/shared': 3.4.37
entities: 5.0.0
estree-walker: 2.0.2
- source-map-js: 1.2.0
+ source-map-js: 1.2.1
+
+ '@vue/compiler-core@3.5.10':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@vue/shared': 3.5.10
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
'@vue/compiler-core@3.5.7':
dependencies:
@@ -16307,13 +16274,18 @@ snapshots:
'@vue/shared': 3.5.7
entities: 4.5.0
estree-walker: 2.0.2
- source-map-js: 1.2.0
+ source-map-js: 1.2.1
'@vue/compiler-dom@3.4.37':
dependencies:
'@vue/compiler-core': 3.4.37
'@vue/shared': 3.4.37
+ '@vue/compiler-dom@3.5.10':
+ dependencies:
+ '@vue/compiler-core': 3.5.10
+ '@vue/shared': 3.5.10
+
'@vue/compiler-dom@3.5.7':
dependencies:
'@vue/compiler-core': 3.5.7
@@ -16327,31 +16299,31 @@ snapshots:
'@vue/compiler-ssr': 3.4.37
'@vue/shared': 3.4.37
estree-walker: 2.0.2
- magic-string: 0.30.10
- postcss: 8.4.47
- source-map-js: 1.2.0
-
- '@vue/compiler-sfc@3.5.7':
- dependencies:
- '@babel/parser': 7.25.6
- '@vue/compiler-core': 3.5.7
- '@vue/compiler-dom': 3.5.7
- '@vue/compiler-ssr': 3.5.7
- '@vue/shared': 3.5.7
- estree-walker: 2.0.2
magic-string: 0.30.11
postcss: 8.4.47
source-map-js: 1.2.0
+ '@vue/compiler-sfc@3.5.10':
+ dependencies:
+ '@babel/parser': 7.25.6
+ '@vue/compiler-core': 3.5.10
+ '@vue/compiler-dom': 3.5.10
+ '@vue/compiler-ssr': 3.5.10
+ '@vue/shared': 3.5.10
+ estree-walker: 2.0.2
+ magic-string: 0.30.11
+ postcss: 8.4.47
+ source-map-js: 1.2.1
+
'@vue/compiler-ssr@3.4.37':
dependencies:
'@vue/compiler-dom': 3.4.37
'@vue/shared': 3.4.37
- '@vue/compiler-ssr@3.5.7':
+ '@vue/compiler-ssr@3.5.10':
dependencies:
- '@vue/compiler-dom': 3.5.7
- '@vue/shared': 3.5.7
+ '@vue/compiler-dom': 3.5.10
+ '@vue/shared': 3.5.10
'@vue/compiler-vue2@2.7.16':
dependencies:
@@ -16361,8 +16333,8 @@ snapshots:
'@vue/language-core@2.0.16(typescript@5.6.2)':
dependencies:
'@volar/language-core': 2.2.0
- '@vue/compiler-dom': 3.4.37
- '@vue/shared': 3.4.37
+ '@vue/compiler-dom': 3.5.7
+ '@vue/shared': 3.5.7
computeds: 0.0.1
minimatch: 9.0.4
path-browserify: 1.0.1
@@ -16387,19 +16359,19 @@ snapshots:
dependencies:
'@vue/shared': 3.4.37
- '@vue/reactivity@3.5.7':
+ '@vue/reactivity@3.5.10':
dependencies:
- '@vue/shared': 3.5.7
+ '@vue/shared': 3.5.10
'@vue/runtime-core@3.4.37':
dependencies:
'@vue/reactivity': 3.4.37
'@vue/shared': 3.4.37
- '@vue/runtime-core@3.5.7':
+ '@vue/runtime-core@3.5.10':
dependencies:
- '@vue/reactivity': 3.5.7
- '@vue/shared': 3.5.7
+ '@vue/reactivity': 3.5.10
+ '@vue/shared': 3.5.10
'@vue/runtime-dom@3.4.37':
dependencies:
@@ -16408,11 +16380,11 @@ snapshots:
'@vue/shared': 3.4.37
csstype: 3.1.3
- '@vue/runtime-dom@3.5.7':
+ '@vue/runtime-dom@3.5.10':
dependencies:
- '@vue/reactivity': 3.5.7
- '@vue/runtime-core': 3.5.7
- '@vue/shared': 3.5.7
+ '@vue/reactivity': 3.5.10
+ '@vue/runtime-core': 3.5.10
+ '@vue/shared': 3.5.10
csstype: 3.1.3
'@vue/server-renderer@3.4.37(vue@3.4.37(typescript@5.5.4))':
@@ -16421,23 +16393,25 @@ snapshots:
'@vue/shared': 3.4.37
vue: 3.4.37(typescript@5.5.4)
- '@vue/server-renderer@3.5.7(vue@3.5.7(typescript@5.6.2))':
+ '@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2))':
dependencies:
- '@vue/compiler-ssr': 3.5.7
- '@vue/shared': 3.5.7
- vue: 3.5.7(typescript@5.6.2)
+ '@vue/compiler-ssr': 3.5.10
+ '@vue/shared': 3.5.10
+ vue: 3.5.10(typescript@5.6.2)
'@vue/shared@3.4.37': {}
+ '@vue/shared@3.5.10': {}
+
'@vue/shared@3.5.7': {}
- '@vue/test-utils@2.4.1(@vue/server-renderer@3.5.7(vue@3.5.7(typescript@5.6.2)))(vue@3.5.7(typescript@5.6.2))':
+ '@vue/test-utils@2.4.1(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))':
dependencies:
js-beautify: 1.14.9
- vue: 3.5.7(typescript@5.6.2)
+ vue: 3.5.10(typescript@5.6.2)
vue-component-type-helpers: 1.8.4
optionalDependencies:
- '@vue/server-renderer': 3.5.7(vue@3.5.7(typescript@5.6.2))
+ '@vue/server-renderer': 3.5.10(vue@3.5.10(typescript@5.6.2))
'@webgpu/types@0.1.30': {}
@@ -16491,14 +16465,14 @@ snapshots:
agent-base@6.0.2:
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
optional: true
agent-base@7.1.0:
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -16738,7 +16712,7 @@ snapshots:
ast-types@0.16.1:
dependencies:
- tslib: 2.6.3
+ tslib: 2.7.0
astral-regex@2.0.0: {}
@@ -17259,7 +17233,7 @@ snapshots:
chownr@2.0.0: {}
- chromatic@11.10.2: {}
+ chromatic@11.10.4: {}
ci-info@3.7.1: {}
@@ -17633,6 +17607,51 @@ snapshots:
untildify: 4.0.0
yauzl: 2.10.0
+ cypress@13.15.0:
+ dependencies:
+ '@cypress/request': 3.0.5
+ '@cypress/xvfb': 1.2.4(supports-color@8.1.1)
+ '@types/sinonjs__fake-timers': 8.1.1
+ '@types/sizzle': 2.3.3
+ arch: 2.2.0
+ blob-util: 2.0.2
+ bluebird: 3.7.2
+ buffer: 5.7.1
+ cachedir: 2.3.0
+ chalk: 4.1.2
+ check-more-types: 2.24.0
+ cli-cursor: 3.1.0
+ cli-table3: 0.6.3
+ commander: 6.2.1
+ common-tags: 1.8.2
+ dayjs: 1.11.10
+ debug: 4.3.7(supports-color@8.1.1)
+ enquirer: 2.3.6
+ eventemitter2: 6.4.7
+ execa: 4.1.0
+ executable: 4.1.1
+ extract-zip: 2.0.1(supports-color@8.1.1)
+ figures: 3.2.0
+ fs-extra: 9.1.0
+ getos: 3.2.1
+ is-ci: 3.0.1
+ is-installed-globally: 0.4.0
+ lazy-ass: 1.6.0
+ listr2: 3.14.0(enquirer@2.3.6)
+ lodash: 4.17.21
+ log-symbols: 4.1.0
+ minimist: 1.2.8
+ ospath: 1.2.2
+ pretty-bytes: 5.6.0
+ process: 0.11.10
+ proxy-from-env: 1.0.0
+ request-progress: 3.0.0
+ semver: 7.6.3
+ supports-color: 8.1.1
+ tmp: 0.2.3
+ untildify: 4.0.0
+ yauzl: 2.10.0
+
dashdash@1.14.1:
dependencies:
assert-plus: 1.0.0
@@ -17700,9 +17719,11 @@ snapshots:
optionalDependencies:
supports-color: 8.1.1
- debug@4.3.7:
+ debug@4.3.7(supports-color@8.1.1):
dependencies:
ms: 2.1.3
+ optionalDependencies:
+ supports-color: 8.1.1
decamelize-keys@1.1.1:
dependencies:
@@ -18114,7 +18135,7 @@ snapshots:
esbuild-register@3.5.0(esbuild@0.23.1):
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
esbuild: 0.23.1
transitivePeerDependencies:
- supports-color
@@ -18427,7 +18448,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
escape-string-regexp: 4.0.0
eslint-scope: 8.0.2
eslint-visitor-keys: 4.0.0
@@ -18465,7 +18486,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
escape-string-regexp: 4.0.0
eslint-scope: 8.0.2
eslint-visitor-keys: 4.0.0
@@ -18952,7 +18973,7 @@ snapshots:
follow-redirects@1.15.9(debug@4.3.7):
optionalDependencies:
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
for-each@0.3.3:
dependencies:
@@ -19426,7 +19447,7 @@ snapshots:
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -19465,7 +19486,7 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
optional: true
@@ -19473,14 +19494,14 @@ snapshots:
https-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
https-proxy-agent@7.0.5:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -19691,7 +19712,7 @@ snapshots:
is-generator-function@1.0.10:
dependencies:
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
is-glob@4.0.3:
dependencies:
@@ -19844,7 +19865,7 @@ snapshots:
istanbul-lib-source-maps@4.0.1:
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
source-map: 0.6.1
transitivePeerDependencies:
@@ -19853,7 +19874,7 @@ snapshots:
istanbul-lib-source-maps@5.0.4:
dependencies:
'@jridgewell/trace-mapping': 0.3.25
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
transitivePeerDependencies:
- supports-color
@@ -20275,7 +20296,7 @@ snapshots:
whatwg-encoding: 3.1.1
whatwg-mimetype: 4.0.0
whatwg-url: 14.0.0
- ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ ws: 8.18.0(bufferutil@4.0.7)(utf-8-validate@6.0.3)
xml-name-validator: 5.0.0
transitivePeerDependencies:
- bufferutil
@@ -20586,7 +20607,7 @@ snapshots:
magic-string@0.27.0:
dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
magic-string@0.30.10:
dependencies:
@@ -20972,7 +20993,7 @@ snapshots:
micromark@4.0.0:
dependencies:
'@types/debug': 4.1.12
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-core-commonmark: 2.0.0
@@ -22304,7 +22325,7 @@ snapshots:
dependencies:
'@babel/core': 7.24.7
'@babel/traverse': 7.24.7
- '@babel/types': 7.24.7
+ '@babel/types': 7.25.6
'@types/babel__core': 7.20.0
'@types/babel__traverse': 7.20.0
'@types/doctrine': 0.0.9
@@ -22404,7 +22425,7 @@ snapshots:
esprima: 4.0.1
source-map: 0.6.1
tiny-invariant: 1.3.3
- tslib: 2.6.3
+ tslib: 2.7.0
reconnecting-websocket@4.4.0: {}
@@ -22526,7 +22547,7 @@ snapshots:
require-in-the-middle@7.3.0:
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.7(supports-color@8.1.1)
module-details-from-path: 1.0.3
resolve: 1.22.8
transitivePeerDependencies:
@@ -22589,26 +22610,26 @@ snapshots:
glob: 7.2.3
optional: true
- rollup@4.22.2:
+ rollup@4.22.5:
dependencies:
- '@types/estree': 1.0.5
+ '@types/estree': 1.0.6
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.22.2
- '@rollup/rollup-android-arm64': 4.22.2
- '@rollup/rollup-darwin-arm64': 4.22.2
- '@rollup/rollup-darwin-x64': 4.22.2
- '@rollup/rollup-linux-arm-gnueabihf': 4.22.2
- '@rollup/rollup-linux-arm-musleabihf': 4.22.2
- '@rollup/rollup-linux-arm64-gnu': 4.22.2
- '@rollup/rollup-linux-arm64-musl': 4.22.2
- '@rollup/rollup-linux-powerpc64le-gnu': 4.22.2
- '@rollup/rollup-linux-riscv64-gnu': 4.22.2
- '@rollup/rollup-linux-s390x-gnu': 4.22.2
- '@rollup/rollup-linux-x64-gnu': 4.22.2
- '@rollup/rollup-linux-x64-musl': 4.22.2
- '@rollup/rollup-win32-arm64-msvc': 4.22.2
- '@rollup/rollup-win32-ia32-msvc': 4.22.2
- '@rollup/rollup-win32-x64-msvc': 4.22.2
+ '@rollup/rollup-android-arm-eabi': 4.22.5
+ '@rollup/rollup-android-arm64': 4.22.5
+ '@rollup/rollup-darwin-arm64': 4.22.5
+ '@rollup/rollup-darwin-x64': 4.22.5
+ '@rollup/rollup-linux-arm-gnueabihf': 4.22.5
+ '@rollup/rollup-linux-arm-musleabihf': 4.22.5
+ '@rollup/rollup-linux-arm64-gnu': 4.22.5
+ '@rollup/rollup-linux-arm64-musl': 4.22.5
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.22.5
+ '@rollup/rollup-linux-riscv64-gnu': 4.22.5
+ '@rollup/rollup-linux-s390x-gnu': 4.22.5
+ '@rollup/rollup-linux-x64-gnu': 4.22.5
+ '@rollup/rollup-linux-x64-musl': 4.22.5
+ '@rollup/rollup-win32-arm64-msvc': 4.22.5
+ '@rollup/rollup-win32-ia32-msvc': 4.22.5
+ '@rollup/rollup-win32-x64-msvc': 4.22.5
fsevents: 2.3.3
rrweb-cssom@0.6.0: {}
@@ -22868,7 +22889,7 @@ snapshots:
dependencies:
'@hapi/hoek': 11.0.4
'@hapi/wreck': 18.0.1
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
joi: 17.11.0
transitivePeerDependencies:
- supports-color
@@ -22968,7 +22989,7 @@ snapshots:
socks-proxy-agent@8.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
socks: 2.7.1
transitivePeerDependencies:
- supports-color
@@ -23077,7 +23098,7 @@ snapshots:
arg: 5.0.2
bluebird: 3.7.2
check-more-types: 2.24.0
- debug: 4.3.7
+ debug: 4.3.7(supports-color@8.1.1)
execa: 5.1.1
lazy-ass: 1.6.0
ps-tree: 1.2.0
@@ -23093,22 +23114,22 @@ snapshots:
dependencies:
internal-slot: 1.0.5
- storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@storybook/blocks': 8.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/components': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/core-events': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/manager-api': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/types': 8.3.2(storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/blocks': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/core-events': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/manager-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/types': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
optionalDependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- storybook@8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4):
+ storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4):
dependencies:
- '@storybook/core': 8.3.2(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/core': 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -23362,7 +23383,7 @@ snapshots:
dependencies:
real-require: 0.2.0
- three@0.168.0: {}
+ three@0.169.0: {}
throttle-debounce@5.0.2: {}
@@ -23761,8 +23782,8 @@ snapshots:
inherits: 2.0.4
is-arguments: 1.1.1
is-generator-function: 1.0.10
- is-typed-array: 1.1.10
- which-typed-array: 1.1.11
+ is-typed-array: 1.1.13
+ which-typed-array: 1.1.15
utils-merge@1.0.1: {}
@@ -23774,13 +23795,13 @@ snapshots:
uuid@9.0.1: {}
- v-code-diff@1.13.1(vue@3.5.7(typescript@5.6.2)):
+ v-code-diff@1.13.1(vue@3.5.10(typescript@5.6.2)):
dependencies:
diff: 5.2.0
diff-match-patch: 1.0.5
highlight.js: 11.10.0
- vue: 3.5.7(typescript@5.6.2)
- vue-demi: 0.14.7(vue@3.5.7(typescript@5.6.2))
+ vue: 3.5.10(typescript@5.6.2)
+ vue-demi: 0.14.7(vue@3.5.10(typescript@5.6.2))
v8-to-istanbul@9.2.0:
dependencies:
@@ -23817,10 +23838,10 @@ snapshots:
vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
dependencies:
cac: 6.7.14
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
pathe: 1.1.2
picocolors: 1.0.1
- vite: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
transitivePeerDependencies:
- '@types/node'
- less
@@ -23834,11 +23855,11 @@ snapshots:
vite-plugin-turbosnap@1.0.3: {}
- vite@5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
+ vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
dependencies:
esbuild: 0.21.5
postcss: 8.4.47
- rollup: 4.22.2
+ rollup: 4.22.5
optionalDependencies:
'@types/node': 20.14.12
fsevents: 2.3.3
@@ -23871,7 +23892,7 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.6.0
tinypool: 0.8.4
- vite: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
vite-node: 1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
why-is-node-running: 2.2.2
optionalDependencies:
@@ -23907,7 +23928,7 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.6.0
tinypool: 0.8.4
- vite: 5.4.7(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
vite-node: 1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
why-is-node-running: 2.2.2
optionalDependencies:
@@ -23964,28 +23985,28 @@ snapshots:
vue-component-type-helpers@2.1.6: {}
- vue-demi@0.14.7(vue@3.5.7(typescript@5.6.2)):
+ vue-demi@0.14.7(vue@3.5.10(typescript@5.6.2)):
dependencies:
- vue: 3.5.7(typescript@5.6.2)
+ vue: 3.5.10(typescript@5.6.2)
- vue-docgen-api@4.75.1(vue@3.5.7(typescript@5.6.2)):
+ vue-docgen-api@4.75.1(vue@3.5.10(typescript@5.6.2)):
dependencies:
- '@babel/parser': 7.24.7
- '@babel/types': 7.24.7
- '@vue/compiler-dom': 3.4.37
- '@vue/compiler-sfc': 3.5.7
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
+ '@vue/compiler-dom': 3.5.7
+ '@vue/compiler-sfc': 3.5.10
ast-types: 0.16.1
hash-sum: 2.0.0
lru-cache: 8.0.4
pug: 3.0.3
recast: 0.23.6
ts-map: 1.0.3
- vue: 3.5.7(typescript@5.6.2)
- vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.7(typescript@5.6.2))
+ vue: 3.5.10(typescript@5.6.2)
+ vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.10(typescript@5.6.2))
vue-eslint-parser@9.4.3(eslint@9.11.0):
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
@@ -23996,9 +24017,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.7(typescript@5.6.2)):
+ vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.10(typescript@5.6.2)):
dependencies:
- vue: 3.5.7(typescript@5.6.2)
+ vue: 3.5.10(typescript@5.6.2)
vue-template-compiler@2.7.14:
dependencies:
@@ -24022,20 +24043,20 @@ snapshots:
optionalDependencies:
typescript: 5.5.4
- vue@3.5.7(typescript@5.6.2):
+ vue@3.5.10(typescript@5.6.2):
dependencies:
- '@vue/compiler-dom': 3.5.7
- '@vue/compiler-sfc': 3.5.7
- '@vue/runtime-dom': 3.5.7
- '@vue/server-renderer': 3.5.7(vue@3.5.7(typescript@5.6.2))
- '@vue/shared': 3.5.7
+ '@vue/compiler-dom': 3.5.10
+ '@vue/compiler-sfc': 3.5.10
+ '@vue/runtime-dom': 3.5.10
+ '@vue/server-renderer': 3.5.10(vue@3.5.10(typescript@5.6.2))
+ '@vue/shared': 3.5.10
optionalDependencies:
typescript: 5.6.2
- vuedraggable@4.1.0(vue@3.5.7(typescript@5.6.2)):
+ vuedraggable@4.1.0(vue@3.5.10(typescript@5.6.2)):
dependencies:
sortablejs: 1.14.0
- vue: 3.5.7(typescript@5.6.2)
+ vue: 3.5.10(typescript@5.6.2)
w3c-xmlserializer@5.0.0:
dependencies:
From 25670b5f168021784fd82d4422c85d8f0024bf04 Mon Sep 17 00:00:00 2001
From: FineArchs <133759614+FineArchs@users.noreply.github.com>
Date: Sat, 28 Sep 2024 10:06:01 +0900
Subject: [PATCH 007/194] =?UTF-8?q?Mk:C:container=E3=81=AEborderStyle?=
=?UTF-8?q?=E3=81=A8borderRadius=E3=82=92=E8=A8=AD=E5=AE=9A=E3=81=A7?=
=?UTF-8?q?=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=20(#14638)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* borderStyle and borderRadius
* changelog
---
CHANGELOG.md | 1 +
packages/frontend/src/components/MkAsUi.vue | 27 ++++++++++++++++++--
packages/frontend/src/scripts/aiscript/ui.ts | 8 ++++++
3 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eec73bdaac..f44e247359 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@
- Enhance: ScratchpadにUIインスペクターを追加
- Enhance: Play編集画面の項目の並びを少しリデザイン
- Enhance: 各種メニューをドロワー表示するかどうか設定可能に
+- Enhance: AiScriptのMk:C:containerのオプションに`borderStyle`と`borderRadius`を追加
- Fix: サーバーメトリクスが2つ以上あるとリロード直後の表示がおかしくなる問題を修正
- Fix: コントロールパネル内のAp requests内のチャートの表示がおかしかった問題を修正
- Fix: 月の違う同じ日はセパレータが表示されないのを修正
diff --git a/packages/frontend/src/components/MkAsUi.vue b/packages/frontend/src/components/MkAsUi.vue
index 18e8e7542e..b50a7fea5c 100644
--- a/packages/frontend/src/components/MkAsUi.vue
+++ b/packages/frontend/src/components/MkAsUi.vue
@@ -54,7 +54,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
@@ -63,7 +63,7 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue
index ae8ac88361..93af534a9b 100644
--- a/packages/frontend/src/pages/user/home.vue
+++ b/packages/frontend/src/pages/user/home.vue
@@ -48,9 +48,10 @@ SPDX-License-Identifier: AGPL-3.0-only
@@ -161,6 +162,7 @@ import * as Misskey from 'misskey-js';
import MkNote from '@/components/MkNote.vue';
import MkFollowButton from '@/components/MkFollowButton.vue';
import MkAccountMoved from '@/components/MkAccountMoved.vue';
+import MkFukidashi from '@/components/MkFukidashi.vue';
import MkRemoteCaution from '@/components/MkRemoteCaution.vue';
import MkTextarea from '@/components/MkTextarea.vue';
import MkOmit from '@/components/MkOmit.vue';
@@ -467,7 +469,18 @@ onUnmounted(() => {
> .followedMessage {
padding: 24px 24px 0 154px;
- font-size: 0.9em;
+
+ > .fukidashi {
+ display: block;
+ --fukidashi-bg: color-mix(in srgb, var(--love), var(--panel) 85%);
+ --fukidashi-radius: 16px;
+ font-size: 0.9em;
+
+ .messageHeader {
+ opacity: 0.7;
+ font-size: 0.85em;
+ }
+ }
}
> .roles {
From b6578861acf3002c8111b65850ec4ba45072b212 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 30 Sep 2024 20:22:57 +0900
Subject: [PATCH 026/194] :art:
---
packages/frontend/src/components/MkNoteHeader.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/frontend/src/components/MkNoteHeader.vue b/packages/frontend/src/components/MkNoteHeader.vue
index 888c570571..cf689d1fee 100644
--- a/packages/frontend/src/components/MkNoteHeader.vue
+++ b/packages/frontend/src/components/MkNoteHeader.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
From e9519b02fb1d3abbf97530a60ecb7963f079a925 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
<67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Tue, 1 Oct 2024 20:53:02 +0900
Subject: [PATCH 027/194] fix(misskey-js): build misskey-js with types (#14665)
---
packages/misskey-js/src/autogen/types.ts | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index 0dff85183f..6aaeabec7b 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -5177,6 +5177,8 @@ export type operations = {
urlPreviewRequireContentLength: boolean;
urlPreviewUserAgent: string | null;
urlPreviewSummaryProxyUrl: string | null;
+ federation: string;
+ federationHosts: string[];
};
};
};
@@ -9428,6 +9430,9 @@ export type operations = {
urlPreviewRequireContentLength?: boolean;
urlPreviewUserAgent?: string | null;
urlPreviewSummaryProxyUrl?: string | null;
+ /** @enum {string} */
+ federation?: 'all' | 'none' | 'specified';
+ federationHosts?: string[];
};
};
};
From 6fd4de246c8ba0c59afe6f0c0a588d01783514fe Mon Sep 17 00:00:00 2001
From: Julia
Date: Wed, 2 Oct 2024 20:09:08 -0400
Subject: [PATCH 028/194] Make post form attachments accessible (#14666)
* fix(frontend): Make post form attachments accessible
Adds a role="button", tabindex, and @keydown to MkPostFormAttaches in
order to make it accessible to keyboard users.
* Fix for linter
* Add spacing in type signature
---
.../src/components/MkPostFormAttaches.vue | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/packages/frontend/src/components/MkPostFormAttaches.vue b/packages/frontend/src/components/MkPostFormAttaches.vue
index 80b75a0875..42322fec3d 100644
--- a/packages/frontend/src/components/MkPostFormAttaches.vue
+++ b/packages/frontend/src/components/MkPostFormAttaches.vue
@@ -7,7 +7,14 @@ SPDX-License-Identifier: AGPL-3.0-only
emit('update:modelValue', v)">
-
+
@@ -133,7 +140,7 @@ async function crop(file: Misskey.entities.DriveFile): Promise
{
emit('replaceFile', file, newFile);
}
-function showFileMenu(file: Misskey.entities.DriveFile, ev: MouseEvent): void {
+function showFileMenu(file: Misskey.entities.DriveFile, ev: MouseEvent | KeyboardEvent): void {
if (menuShowing) return;
const isImage = file.type.startsWith('image/');
@@ -199,6 +206,10 @@ function showFileMenu(file: Misskey.entities.DriveFile, ev: MouseEvent): void {
border-radius: 4px;
overflow: hidden;
cursor: move;
+
+ &:focus-visible {
+ outline-offset: 4px;
+ }
}
.thumbnail {
From a25d83f2499898d15ed4907ca67a0fd67822736c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=94=98=E7=80=AC=E3=81=93=E3=81=93=E3=81=82?=
Date: Thu, 3 Oct 2024 09:09:37 +0900
Subject: [PATCH 029/194] =?UTF-8?q?fix:=20sass=E3=81=AEmodern-compiler?=
=?UTF-8?q?=E3=82=92=E4=BD=BF=E3=81=86=E3=82=88=E3=81=86=E3=81=AB=20(#1465?=
=?UTF-8?q?1)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix(frontend-embed): ビルド時にsassのmodern-compilerを使うように
* fix(frontend): ビルド時にsassのmodern-compilerを使うように
---
packages/frontend-embed/vite.config.ts | 5 +++++
packages/frontend/vite.config.ts | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/packages/frontend-embed/vite.config.ts b/packages/frontend-embed/vite.config.ts
index 64e67401c2..2dbee488c5 100644
--- a/packages/frontend-embed/vite.config.ts
+++ b/packages/frontend-embed/vite.config.ts
@@ -91,6 +91,11 @@ export function getConfig(): UserConfig {
}
},
},
+ preprocessorOptions: {
+ scss: {
+ api: 'modern-compiler',
+ },
+ },
},
define: {
diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts
index e982df8ffd..504562a91e 100644
--- a/packages/frontend/vite.config.ts
+++ b/packages/frontend/vite.config.ts
@@ -109,6 +109,11 @@ export function getConfig(): UserConfig {
}
},
},
+ preprocessorOptions: {
+ scss: {
+ api: 'modern-compiler',
+ },
+ },
},
define: {
From 6dde45745294c171d17b60971353e664846a7a57 Mon Sep 17 00:00:00 2001
From: anatawa12
Date: Thu, 3 Oct 2024 09:24:22 +0900
Subject: [PATCH 030/194] Misskey js autogen check improvements (#14652)
* ci: Make failure if misskey js autogen detected changes
* ci: set persist-credentials
---
.github/workflows/check-misskey-js-autogen.yml | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/check-misskey-js-autogen.yml b/.github/workflows/check-misskey-js-autogen.yml
index 5afd7d2714..f26c9a4d45 100644
--- a/.github/workflows/check-misskey-js-autogen.yml
+++ b/.github/workflows/check-misskey-js-autogen.yml
@@ -21,6 +21,7 @@ jobs:
uses: actions/checkout@v4.1.1
with:
submodules: true
+ persist-credentials: false
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: setup pnpm
@@ -57,7 +58,7 @@ jobs:
name: generated-misskey-js
path: packages/misskey-js/generator/built/autogen
- # pull_request_target safety: permissions: read-all, and there are no secrets used in this job
+ # pull_request_target safety: permissions: read-all, and no user codes are executed
get-actual-misskey-js:
runs-on: ubuntu-latest
permissions:
@@ -68,6 +69,7 @@ jobs:
uses: actions/checkout@v4.1.1
with:
submodules: true
+ persist-credentials: false
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Upload From Merged
@@ -131,3 +133,7 @@ jobs:
mode: delete
message: "Thank you!"
create_if_not_exists: false
+
+ - name: Make failure if changes are detected
+ if: steps.check-changes.outputs.changes == 'true'
+ run: exit 1
From 1074d625ed1d651702aca1016cad165e256bab29 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Thu, 3 Oct 2024 12:11:09 +0900
Subject: [PATCH 031/194] enhance: require captcha for signin (#14655)
* wip
* Update MkSignin.vue
* Update MkSignin.vue
* wip
* Update CHANGELOG.md
---
CHANGELOG.md | 2 +-
.../src/server/api/SigninApiService.ts | 37 +++++++++++++++++++
packages/frontend/src/components/MkSignin.vue | 35 +++++++++++++++++-
.../src/components/MkSignupDialog.form.vue | 4 +-
4 files changed, 74 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cfc07476e0..8f0fd24c44 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,7 @@
## Unreleased
### General
--
+- Enhance: セキュリティ向上のため、サインイン時もCAPTCHAを求めるようになりました
### Client
- Enhance: フォロワーへのメッセージ欄のデザイン改良
diff --git a/packages/backend/src/server/api/SigninApiService.ts b/packages/backend/src/server/api/SigninApiService.ts
index edac9b3beb..2ccc75da00 100644
--- a/packages/backend/src/server/api/SigninApiService.ts
+++ b/packages/backend/src/server/api/SigninApiService.ts
@@ -9,6 +9,7 @@ import * as OTPAuth from 'otpauth';
import { IsNull } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type {
+ MiMeta,
SigninsRepository,
UserProfilesRepository,
UsersRepository,
@@ -20,6 +21,8 @@ import { IdService } from '@/core/IdService.js';
import { bindThis } from '@/decorators.js';
import { WebAuthnService } from '@/core/WebAuthnService.js';
import { UserAuthService } from '@/core/UserAuthService.js';
+import { CaptchaService } from '@/core/CaptchaService.js';
+import { FastifyReplyError } from '@/misc/fastify-reply-error.js';
import { RateLimiterService } from './RateLimiterService.js';
import { SigninService } from './SigninService.js';
import type { AuthenticationResponseJSON } from '@simplewebauthn/types';
@@ -31,6 +34,9 @@ export class SigninApiService {
@Inject(DI.config)
private config: Config,
+ @Inject(DI.meta)
+ private meta: MiMeta,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
@@ -45,6 +51,7 @@ export class SigninApiService {
private signinService: SigninService,
private userAuthService: UserAuthService,
private webAuthnService: WebAuthnService,
+ private captchaService: CaptchaService,
) {
}
@@ -56,6 +63,10 @@ export class SigninApiService {
password: string;
token?: string;
credential?: AuthenticationResponseJSON;
+ 'hcaptcha-response'?: string;
+ 'g-recaptcha-response'?: string;
+ 'turnstile-response'?: string;
+ 'm-captcha-response'?: string;
};
}>,
reply: FastifyReply,
@@ -139,6 +150,32 @@ export class SigninApiService {
};
if (!profile.twoFactorEnabled) {
+ if (process.env.NODE_ENV !== 'test') {
+ if (this.meta.enableHcaptcha && this.meta.hcaptchaSecretKey) {
+ await this.captchaService.verifyHcaptcha(this.meta.hcaptchaSecretKey, body['hcaptcha-response']).catch(err => {
+ throw new FastifyReplyError(400, err);
+ });
+ }
+
+ if (this.meta.enableMcaptcha && this.meta.mcaptchaSecretKey && this.meta.mcaptchaSitekey && this.meta.mcaptchaInstanceUrl) {
+ await this.captchaService.verifyMcaptcha(this.meta.mcaptchaSecretKey, this.meta.mcaptchaSitekey, this.meta.mcaptchaInstanceUrl, body['m-captcha-response']).catch(err => {
+ throw new FastifyReplyError(400, err);
+ });
+ }
+
+ if (this.meta.enableRecaptcha && this.meta.recaptchaSecretKey) {
+ await this.captchaService.verifyRecaptcha(this.meta.recaptchaSecretKey, body['g-recaptcha-response']).catch(err => {
+ throw new FastifyReplyError(400, err);
+ });
+ }
+
+ if (this.meta.enableTurnstile && this.meta.turnstileSecretKey) {
+ await this.captchaService.verifyTurnstile(this.meta.turnstileSecretKey, body['turnstile-response']).catch(err => {
+ throw new FastifyReplyError(400, err);
+ });
+ }
+ }
+
if (same) {
return this.signinService.signin(request, reply, user);
} else {
diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue
index 7942a84d66..8ebdac0220 100644
--- a/packages/frontend/src/components/MkSignin.vue
+++ b/packages/frontend/src/components/MkSignin.vue
@@ -32,7 +32,11 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ signing ? i18n.ts.loggingIn : i18n.ts.login }}
+
+
+
+
+ {{ signing ? i18n.ts.loggingIn : i18n.ts.login }}
@@ -68,7 +72,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
diff --git a/packages/frontend/src/components/MkFolder.vue b/packages/frontend/src/components/MkFolder.vue
index a5f3069d45..8262ae5d0c 100644
--- a/packages/frontend/src/components/MkFolder.vue
+++ b/packages/frontend/src/components/MkFolder.vue
@@ -38,9 +38,12 @@ SPDX-License-Identifier: AGPL-3.0-only
>
-
+
+
+
+
@@ -59,9 +62,11 @@ import { defaultStore } from '@/store.js';
const props = withDefaults(defineProps<{
defaultOpen?: boolean;
maxHeight?: number | null;
+ withSpacer?: boolean;
}>(), {
defaultOpen: false,
maxHeight: null,
+ withSpacer: true,
});
const getBgColor = (el: HTMLElement) => {
diff --git a/packages/frontend/src/components/global/RouterView.vue b/packages/frontend/src/components/global/RouterView.vue
index 19bd794a5d..38bdfc52d4 100644
--- a/packages/frontend/src/components/global/RouterView.vue
+++ b/packages/frontend/src/components/global/RouterView.vue
@@ -27,6 +27,7 @@ import MkLoadingPage from '@/pages/_loading_.vue';
const props = defineProps<{
router?: IRouter;
+ nested?: boolean;
}>();
const router = props.router ?? inject('router');
@@ -39,6 +40,8 @@ const currentDepth = inject('routerCurrentDepth', 0);
provide('routerCurrentDepth', currentDepth + 1);
function resolveNested(current: Resolved, d = 0): Resolved | null {
+ if (!props.nested) return current;
+
if (d === currentDepth) {
return current;
} else {
diff --git a/packages/frontend/src/pages/admin/abuses.vue b/packages/frontend/src/pages/admin/abuses.vue
index 0b9847fed3..33021ae025 100644
--- a/packages/frontend/src/pages/admin/abuses.vue
+++ b/packages/frontend/src/pages/admin/abuses.vue
@@ -44,8 +44,10 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
-
+
+
+
+
diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue
index db87bd996d..61745e0ff3 100644
--- a/packages/frontend/src/pages/admin/index.vue
+++ b/packages/frontend/src/pages/admin/index.vue
@@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
diff --git a/packages/frontend/src/pages/settings/index.vue b/packages/frontend/src/pages/settings/index.vue
index 7d16740a3e..96a95f1635 100644
--- a/packages/frontend/src/pages/settings/index.vue
+++ b/packages/frontend/src/pages/settings/index.vue
@@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
From 864327b4a7c59d79b5ba17459c795f007c110e82 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Fri, 4 Oct 2024 11:20:56 +0900
Subject: [PATCH 050/194] update deps
---
packages/backend/package.json | 6 +-
packages/frontend-embed/package.json | 12 +-
packages/frontend/package.json | 50 +-
pnpm-lock.yaml | 947 +++++++++++++++------------
4 files changed, 553 insertions(+), 462 deletions(-)
diff --git a/packages/backend/package.json b/packages/backend/package.json
index bd5dab618a..c6e31797f8 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -101,7 +101,7 @@
"bcryptjs": "2.4.3",
"blurhash": "2.0.5",
"body-parser": "1.20.3",
- "bullmq": "5.13.2",
+ "bullmq": "5.15.0",
"cacheable-lookup": "7.0.0",
"cbor": "9.0.2",
"chalk": "5.3.0",
@@ -166,7 +166,7 @@
"rename": "1.0.4",
"rss-parser": "3.13.0",
"rxjs": "7.8.1",
- "sanitize-html": "2.13.0",
+ "sanitize-html": "2.13.1",
"secure-json-parse": "2.7.0",
"sharp": "0.33.5",
"slacc": "0.0.10",
@@ -194,7 +194,7 @@
"@types/archiver": "6.0.2",
"@types/bcryptjs": "2.4.6",
"@types/body-parser": "1.19.5",
- "@types/color-convert": "2.0.3",
+ "@types/color-convert": "2.0.4",
"@types/content-disposition": "0.5.8",
"@types/fluent-ffmpeg": "2.1.26",
"@types/htmlescape": "1.1.3",
diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json
index 9e720b9835..cb62191c3b 100644
--- a/packages/frontend-embed/package.json
+++ b/packages/frontend-embed/package.json
@@ -18,7 +18,7 @@
"@tabler/icons-webfont": "3.3.0",
"@twemoji/parser": "15.1.1",
"@vitejs/plugin-vue": "5.1.4",
- "@vue/compiler-sfc": "3.5.10",
+ "@vue/compiler-sfc": "3.5.11",
"astring": "1.9.0",
"buraha": "0.0.1",
"estree-walker": "3.0.3",
@@ -27,8 +27,8 @@
"frontend-shared": "workspace:*",
"punycode": "2.3.1",
"rollup": "4.22.5",
- "sass": "1.79.3",
- "shiki": "1.12.0",
+ "sass": "1.79.4",
+ "shiki": "1.21.0",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
@@ -36,7 +36,7 @@
"uuid": "10.0.0",
"json5": "2.2.3",
"vite": "5.4.8",
- "vue": "3.5.10"
+ "vue": "3.5.11"
},
"devDependencies": {
"@misskey-dev/summaly": "5.1.0",
@@ -51,10 +51,10 @@
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"@vitest/coverage-v8": "1.6.0",
- "@vue/runtime-core": "3.5.10",
+ "@vue/runtime-core": "3.5.11",
"acorn": "8.12.1",
"cross-env": "7.0.3",
- "eslint-plugin-import": "2.30.0",
+ "eslint-plugin-import": "2.31.0",
"eslint-plugin-vue": "9.28.0",
"fast-glob": "3.3.2",
"happy-dom": "10.0.3",
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 02878c64d9..11d7ff3963 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -28,7 +28,7 @@
"@tabler/icons-webfont": "3.3.0",
"@twemoji/parser": "15.1.1",
"@vitejs/plugin-vue": "5.1.4",
- "@vue/compiler-sfc": "3.5.10",
+ "@vue/compiler-sfc": "3.5.11",
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.11",
"astring": "1.9.0",
"broadcast-channel": "7.0.0",
@@ -39,7 +39,7 @@
"chartjs-chart-matrix": "2.0.1",
"chartjs-plugin-gradient": "0.6.1",
"chartjs-plugin-zoom": "2.0.1",
- "chromatic": "11.10.4",
+ "chromatic": "11.11.0",
"compare-versions": "6.1.1",
"cropperjs": "2.0.0-rc.2",
"date-fns": "2.30.0",
@@ -58,7 +58,7 @@
"photoswipe": "5.4.4",
"punycode": "2.3.1",
"rollup": "4.22.5",
- "sanitize-html": "2.13.0",
+ "sanitize-html": "2.13.1",
"sass": "1.79.3",
"shiki": "1.21.0",
"strict-event-emitter-types": "2.0.0",
@@ -72,29 +72,29 @@
"uuid": "10.0.0",
"v-code-diff": "1.13.1",
"vite": "5.4.8",
- "vue": "3.5.10",
+ "vue": "3.5.11",
"vuedraggable": "next"
},
"devDependencies": {
"@misskey-dev/summaly": "5.1.0",
- "@storybook/addon-actions": "8.3.3",
- "@storybook/addon-essentials": "8.3.3",
- "@storybook/addon-interactions": "8.3.3",
- "@storybook/addon-links": "8.3.3",
- "@storybook/addon-mdx-gfm": "8.3.3",
- "@storybook/addon-storysource": "8.3.3",
- "@storybook/blocks": "8.3.3",
- "@storybook/components": "8.3.3",
- "@storybook/core-events": "8.3.3",
- "@storybook/manager-api": "8.3.3",
- "@storybook/preview-api": "8.3.3",
- "@storybook/react": "8.3.3",
- "@storybook/react-vite": "8.3.3",
- "@storybook/test": "8.3.3",
- "@storybook/theming": "8.3.3",
- "@storybook/types": "8.3.3",
- "@storybook/vue3": "8.3.3",
- "@storybook/vue3-vite": "8.3.3",
+ "@storybook/addon-actions": "8.3.4",
+ "@storybook/addon-essentials": "8.3.4",
+ "@storybook/addon-interactions": "8.3.4",
+ "@storybook/addon-links": "8.3.4",
+ "@storybook/addon-mdx-gfm": "8.3.4",
+ "@storybook/addon-storysource": "8.3.4",
+ "@storybook/blocks": "8.3.4",
+ "@storybook/components": "8.3.4",
+ "@storybook/core-events": "8.3.4",
+ "@storybook/manager-api": "8.3.4",
+ "@storybook/preview-api": "8.3.4",
+ "@storybook/react": "8.3.4",
+ "@storybook/react-vite": "8.3.4",
+ "@storybook/test": "8.3.4",
+ "@storybook/theming": "8.3.4",
+ "@storybook/types": "8.3.4",
+ "@storybook/vue3": "8.3.4",
+ "@storybook/vue3-vite": "8.3.4",
"@testing-library/vue": "8.1.0",
"@types/estree": "1.0.6",
"@types/matter-js": "0.19.7",
@@ -110,11 +110,11 @@
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"@vitest/coverage-v8": "1.6.0",
- "@vue/runtime-core": "3.5.10",
+ "@vue/runtime-core": "3.5.11",
"acorn": "8.12.1",
"cross-env": "7.0.3",
"cypress": "13.15.0",
- "eslint-plugin-import": "2.30.0",
+ "eslint-plugin-import": "2.31.0",
"eslint-plugin-vue": "9.28.0",
"fast-glob": "3.3.2",
"happy-dom": "10.0.3",
@@ -128,7 +128,7 @@
"react-dom": "18.3.1",
"seedrandom": "3.0.5",
"start-server-and-test": "2.0.8",
- "storybook": "8.3.3",
+ "storybook": "8.3.4",
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
"vite-plugin-turbosnap": "1.0.3",
"vitest": "1.6.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 53d5dbbde0..b21a74cf57 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -52,7 +52,7 @@ importers:
devDependencies:
'@misskey-dev/eslint-plugin':
specifier: 2.0.3
- version: 2.0.3(@eslint/compat@1.1.1)(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2))(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0))(eslint@9.8.0)(globals@15.9.0)
+ version: 2.0.3(@eslint/compat@1.1.1)(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2))(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0))(eslint@9.8.0)(globals@15.9.0)
'@types/node':
specifier: 20.14.12
version: 20.14.12
@@ -192,8 +192,8 @@ importers:
specifier: 1.20.3
version: 1.20.3
bullmq:
- specifier: 5.13.2
- version: 5.13.2
+ specifier: 5.15.0
+ version: 5.15.0
cacheable-lookup:
specifier: 7.0.0
version: 7.0.0
@@ -387,8 +387,8 @@ importers:
specifier: 7.8.1
version: 7.8.1
sanitize-html:
- specifier: 2.13.0
- version: 2.13.0
+ specifier: 2.13.1
+ version: 2.13.1
secure-json-parse:
specifier: 2.7.0
version: 2.7.0
@@ -554,8 +554,8 @@ importers:
specifier: 1.19.5
version: 1.19.5
'@types/color-convert':
- specifier: 2.0.3
- version: 2.0.3
+ specifier: 2.0.4
+ version: 2.0.4
'@types/content-disposition':
specifier: 0.5.8
version: 0.5.8
@@ -723,10 +723,10 @@ importers:
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))
+ version: 5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))
'@vue/compiler-sfc':
- specifier: 3.5.10
- version: 3.5.10
+ specifier: 3.5.11
+ version: 3.5.11
aiscript-vscode:
specifier: github:aiscript-dev/aiscript-vscode#v0.1.11
version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/e1e1b27f2f72cd28a473e004b6da0d8fc0bd40d9
@@ -758,8 +758,8 @@ importers:
specifier: 2.0.1
version: 2.0.1(chart.js@4.4.4)
chromatic:
- specifier: 11.10.4
- version: 11.10.4
+ specifier: 11.11.0
+ version: 11.11.0
compare-versions:
specifier: 6.1.1
version: 6.1.1
@@ -815,8 +815,8 @@ importers:
specifier: 4.22.5
version: 4.22.5
sanitize-html:
- specifier: 2.13.0
- version: 2.13.0
+ specifier: 2.13.1
+ version: 2.13.1
sass:
specifier: 1.79.3
version: 1.79.3
@@ -852,77 +852,77 @@ importers:
version: 10.0.0
v-code-diff:
specifier: 1.13.1
- version: 1.13.1(vue@3.5.10(typescript@5.6.2))
+ version: 1.13.1(vue@3.5.11(typescript@5.6.2))
vite:
specifier: 5.4.8
version: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
vue:
- specifier: 3.5.10
- version: 3.5.10(typescript@5.6.2)
+ specifier: 3.5.11
+ version: 3.5.11(typescript@5.6.2)
vuedraggable:
specifier: next
- version: 4.1.0(vue@3.5.10(typescript@5.6.2))
+ version: 4.1.0(vue@3.5.11(typescript@5.6.2))
devDependencies:
'@misskey-dev/summaly':
specifier: 5.1.0
version: 5.1.0
'@storybook/addon-actions':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-essentials':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-interactions':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-links':
- specifier: 8.3.3
- version: 8.3.3(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-mdx-gfm':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/addon-storysource':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/blocks':
- specifier: 8.3.3
- version: 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/components':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/core-events':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/manager-api':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/preview-api':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/react':
- specifier: 8.3.3
- version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
+ specifier: 8.3.4
+ version: 8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
'@storybook/react-vite':
- specifier: 8.3.3
- version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.5)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
+ specifier: 8.3.4
+ version: 8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.5)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
'@storybook/test':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/theming':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/types':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/vue3':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.10(typescript@5.6.2))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.11(typescript@5.6.2))
'@storybook/vue3-vite':
- specifier: 8.3.3
- version: 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))
+ specifier: 8.3.4
+ version: 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.10)(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))
+ version: 8.1.0(@vue/compiler-sfc@3.5.11)(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))
'@types/estree':
specifier: 1.0.6
version: 1.0.6
@@ -966,8 +966,8 @@ importers:
specifier: 1.6.0
version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0))
'@vue/runtime-core':
- specifier: 3.5.10
- version: 3.5.10
+ specifier: 3.5.11
+ version: 3.5.11
acorn:
specifier: 8.12.1
version: 8.12.1
@@ -978,8 +978,8 @@ importers:
specifier: 13.15.0
version: 13.15.0
eslint-plugin-import:
- specifier: 2.30.0
- version: 2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.11.0)(typescript@5.6.2))(eslint@9.11.0)
+ specifier: 2.31.0
+ version: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.11.0)(typescript@5.6.2))(eslint@9.11.0)
eslint-plugin-vue:
specifier: 9.28.0
version: 9.28.0(eslint@9.11.0)
@@ -1020,11 +1020,11 @@ importers:
specifier: 2.0.8
version: 2.0.8
storybook:
- specifier: 8.3.3
- version: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ specifier: 8.3.4
+ version: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
storybook-addon-misskey-theme:
specifier: github:misskey-dev/storybook-addon-misskey-theme
- version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
vite-plugin-turbosnap:
specifier: 1.0.3
version: 1.0.3
@@ -1066,10 +1066,10 @@ importers:
version: 15.1.1
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))
+ version: 5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))
'@vue/compiler-sfc':
- specifier: 3.5.10
- version: 3.5.10
+ specifier: 3.5.11
+ version: 3.5.11
astring:
specifier: 1.9.0
version: 1.9.0
@@ -1098,11 +1098,11 @@ importers:
specifier: 4.22.5
version: 4.22.5
sass:
- specifier: 1.79.3
- version: 1.79.3
+ specifier: 1.79.4
+ version: 1.79.4
shiki:
- specifier: 1.12.0
- version: 1.12.0
+ specifier: 1.21.0
+ version: 1.21.0
tinycolor2:
specifier: 1.6.0
version: 1.6.0
@@ -1120,17 +1120,17 @@ importers:
version: 10.0.0
vite:
specifier: 5.4.8
- version: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ version: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
vue:
- specifier: 3.5.10
- version: 3.5.10(typescript@5.6.2)
+ specifier: 3.5.11
+ version: 3.5.11(typescript@5.6.2)
devDependencies:
'@misskey-dev/summaly':
specifier: 5.1.0
version: 5.1.0
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.10)(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))
+ version: 8.1.0(@vue/compiler-sfc@3.5.11)(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))
'@types/estree':
specifier: 1.0.6
version: 1.0.6
@@ -1160,10 +1160,10 @@ importers:
version: 7.17.0(eslint@9.11.0)(typescript@5.6.2)
'@vitest/coverage-v8':
specifier: 1.6.0
- version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.3)(terser@5.33.0))
+ version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0))
'@vue/runtime-core':
- specifier: 3.5.10
- version: 3.5.10
+ specifier: 3.5.11
+ version: 3.5.11
acorn:
specifier: 8.12.1
version: 8.12.1
@@ -1171,8 +1171,8 @@ importers:
specifier: 7.0.3
version: 7.0.3
eslint-plugin-import:
- specifier: 2.30.0
- version: 2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.11.0)(typescript@5.6.2))(eslint@9.11.0)
+ specifier: 2.31.0
+ version: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.11.0)(typescript@5.6.2))(eslint@9.11.0)
eslint-plugin-vue:
specifier: 9.28.0
version: 9.28.0(eslint@9.11.0)
@@ -3697,9 +3697,6 @@ packages:
resolution: {integrity: sha512-+1I5H8dojURiEUGPliDwheQk8dhjp8uV1sMccR/W/zjFrt4wZyPs+Ttp/V7gzm9LDJoNek9tmELert/jQqWTgg==}
engines: {node: '>=14.18'}
- '@shikijs/core@1.12.0':
- resolution: {integrity: sha512-mc1cLbm6UQ8RxLc0dZES7v5rkH+99LxQp/ZvTqV3NLyYsO/fD6JhEflP1H5b2SDq9gI0+0G36AVZWxvounfR9w==}
-
'@shikijs/core@1.21.0':
resolution: {integrity: sha512-zAPMJdiGuqXpZQ+pWNezQAk5xhzRXBNiECFPcJLtUdsFM3f//G95Z15EHTnHchYycU8kIIysqGgxp8OVSj1SPQ==}
@@ -4001,97 +3998,97 @@ packages:
'@sqltools/formatter@1.2.5':
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
- '@storybook/addon-actions@8.3.3':
- resolution: {integrity: sha512-cbpksmld7iADwDGXgojZ4r8LGI3YA3NP68duAHg2n1dtnx1oUaFK5wd6dbNuz7GdjyhIOIy3OKU1dAuylYNGOQ==}
+ '@storybook/addon-actions@8.3.4':
+ resolution: {integrity: sha512-1y0yD3upKcyzNwwA6loAGW2cRDqExwl4oAT7GJQA4tmabI+fNwmANSgU/ezLvvSUf4Qo0eJHg2Zcn8y+Apq2eA==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-backgrounds@8.3.3':
- resolution: {integrity: sha512-aX0OIrtjIB7UgSaiv20SFkfC1iWwJIGMPsPSJ5ZPhXIIOWIEBtSujh8YXwjDEXSC4DOHalmeT4bitRRe5KrVKA==}
+ '@storybook/addon-backgrounds@8.3.4':
+ resolution: {integrity: sha512-o3nl7cN3x8erJNxLEv8YptanEQAnbqnaseOAsvSC6/nnSAcRYBSs3BvekKvo4CcpS2mxn7F5NJTBFYnCXzy8EA==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-controls@8.3.3':
- resolution: {integrity: sha512-78xRtVpY7eX/Lti00JLgwYCBRB6ZcvzY3SWk0uQjEqcTnQGoQkVg2L7oWFDlDoA1LBY18P5ei2vu8MYT9GXU4g==}
+ '@storybook/addon-controls@8.3.4':
+ resolution: {integrity: sha512-qQcaK6dczsb6wXkzGZKOjUYNA7FfKBewRv6NvoVKYY6LfhllGOkmUAtYpdtQG8adsZWTSoZaAOJS2vP2uM67lw==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-docs@8.3.3':
- resolution: {integrity: sha512-REUandqq1RnMNOhsocRwx5q2fdlBAYPTDFlKASYfEn4Ln5NgbQRGxOAWl7yXAAFzbDmUDU7K20hkauecF0tyMw==}
+ '@storybook/addon-docs@8.3.4':
+ resolution: {integrity: sha512-TWauhqF/gJgfwPuWeM6KM3LwC+ErCOM+K2z16w3vgao9s67sij8lnrdAoQ0hjA+kw2/KAdCakFS6FyciG81qog==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-essentials@8.3.3':
- resolution: {integrity: sha512-E/uXoUYcg8ulG3lVbsEKb4v5hnMeGkq9YJqiZYKgVK7iRFa6p4HeVB1wU1adnm7RgjWvh+p0vQRo4KL2CTNXqw==}
+ '@storybook/addon-essentials@8.3.4':
+ resolution: {integrity: sha512-C3+3hpmSn/8zdx5sXEP0eE6zMzxgRosHVZYfe9nBcMiEDp6UKVUyHVetWxEULOEgN46ysjcpllZ0bUkRYxi2IQ==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-highlight@8.3.3':
- resolution: {integrity: sha512-MB084xJM66rLU+iFFk34kjLUiAWzDiy6Kz4uZRa1CnNqEK0sdI8HaoQGgOxTIa2xgJor05/8/mlYlMkP/0INsQ==}
+ '@storybook/addon-highlight@8.3.4':
+ resolution: {integrity: sha512-rxZTeuZyZ7RnU+xmRhS01COFLbGnVEmlUNxBw8ArsrTEZKW5PbKpIxNLTj9F0zdH8H0MfryJGP+Aadcm0oHWlw==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-interactions@8.3.3':
- resolution: {integrity: sha512-3w5tpCGYdF33wF44xEhTS3Zmcwd6nITtwy5q+PJvHCJAm3fpjzL3xrjtlHKDvXNwYacJPRCbWKn2QwtxZIdN0g==}
+ '@storybook/addon-interactions@8.3.4':
+ resolution: {integrity: sha512-ORxqe35wUmF7EDHo45mdDHiju3Ryk2pZ1vO9PyvW6ZItNlHt/IxAr7T/TysGejZ/eTBg6tMZR3ExGky3lTg/CQ==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-links@8.3.3':
- resolution: {integrity: sha512-rz4KEbzr1ca4zZEZwbOnhKiaEsokCl1KkngxT/C1YIkpW908j/kg2nnIb5MrtlAW1nirXguAR74t6CGntvdU9w==}
+ '@storybook/addon-links@8.3.4':
+ resolution: {integrity: sha512-R1DjARmxRIKJDGIG6uxmQ1yFNyoQbb+QIPUFjgWCak8+AdLJbC7W+Esvo9F5hQfh6czyy0piiM3qj5hpQJVh3A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.3
+ storybook: ^8.3.4
peerDependenciesMeta:
react:
optional: true
- '@storybook/addon-mdx-gfm@8.3.3':
- resolution: {integrity: sha512-jdwVXoBSEdmuw8L4MxUeJ/qIInADfCwdtShnfTQIJBBRucOl8ykgfTKKNjllT79TFiK0gsWoiZmE05P4wuBofw==}
+ '@storybook/addon-mdx-gfm@8.3.4':
+ resolution: {integrity: sha512-O0sMP7VFo1fKsdViY+W6OMNYEXvB5FzEEsqgsydMcsJ0qOKR1li2l3cLCMLXdUKVZ+2uRbEhnm2RnB9RWF5O7g==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-measure@8.3.3':
- resolution: {integrity: sha512-R20Z83gnxDRrocES344dw1Of/zDhe3XHSM6TLq80UQTJ9PhnMI+wYHQlK9DsdP3KiRkI+pQA6GCOp0s2ZRy5dg==}
+ '@storybook/addon-measure@8.3.4':
+ resolution: {integrity: sha512-IJ6WKEbqmG+r7sukFjo+bVmPB2Zry04sylGx/OGyOh7zIhhqAqpwOwMHP0uQrc3tLNnUM6qB/o83UyYX79ql+A==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-outline@8.3.3':
- resolution: {integrity: sha512-OwqYfieNuqSqWNtUZLu3UmsfQNnwA2UaSMBZyeC2Dte9Jd59PPYggcWmH+b0S6OTbYXWNAUK5U6WdK+X9Ypzdw==}
+ '@storybook/addon-outline@8.3.4':
+ resolution: {integrity: sha512-kRRJTTLKM8gMfeh/e83djN5XLlc0hFtr9zKWxuZxaXt9Hmr+9tH/PRFtVK/S4SgqnBDoXk49Wgv6raiwj5/e3A==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-storysource@8.3.3':
- resolution: {integrity: sha512-yPYQH9NepSNxoSsV9E7OV3/EVFrbU/r2B3E5WP/mCfqTXPg/5noce7iRi+rWqcVM1tsN1qPnSjfQQc7noF0h0Q==}
+ '@storybook/addon-storysource@8.3.4':
+ resolution: {integrity: sha512-uHTUiK7dzWRZAKpPafBH3U5PWAP7+J97lg66HDKAHpmmQdy7v3HfXaYNX1FoI+PeC5piUxFETXM0z+BNvJCknA==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-toolbars@8.3.3':
- resolution: {integrity: sha512-4WyiVqDm4hlJdENIVQg9pLNLdfhnNKa+haerYYSzTVjzYrUx0X6Bxafshq+sud6aRtSYU14abwP56lfW8hgTlA==}
+ '@storybook/addon-toolbars@8.3.4':
+ resolution: {integrity: sha512-Km1YciVIxqluDbd1xmHjANNFyMonEOtnA6e4MrnBnC9XkPXSigeFlj0JvxyI/zjBsLBoFRmQiwq55W6l3hQ9sA==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/addon-viewport@8.3.3':
- resolution: {integrity: sha512-2S+UpbKAL+z1ppzUCkixjaem2UDMkfmm/kyJ1wm3A/ofGLYi4fjMSKNRckk+7NdolXGQJjBo0RcaotUTxFIFwQ==}
+ '@storybook/addon-viewport@8.3.4':
+ resolution: {integrity: sha512-fU4LdXSSqIOLbCEh2leq/tZUYlFliXZBWr/+igQHdUoU7HY8RIImXqVUaR9wlCaTb48WezAWT60vJtwNijyIiQ==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/blocks@8.3.3':
- resolution: {integrity: sha512-8Vsvxqstop3xfbsx3Dn1nEjyxvQUcOYd8vpxyp2YumxYO8FlXIRuYL6HAkYbcX8JexsKvCZYxor52D2vUGIKZg==}
+ '@storybook/blocks@8.3.4':
+ resolution: {integrity: sha512-1g4aCrd5CcN+pVhF2ATu9ZRVvAIgBMb2yF9KkCuTpdvqKDuDNK3sGb0CxjS7jp3LOvyjJr9laTOQsz8v8MQc5A==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.3
+ storybook: ^8.3.4
peerDependenciesMeta:
react:
optional: true
react-dom:
optional: true
- '@storybook/builder-vite@8.3.3':
- resolution: {integrity: sha512-3yTXCLaB6bzhoPH3PqtacKkcaC1uV4L+IHTf1Zypx1NO1pLZHyhYf0T7dIOxTh2JZfqu1Pm9hTvOmWfR12m+9w==}
+ '@storybook/builder-vite@8.3.4':
+ resolution: {integrity: sha512-Sa6SZ7LeHpkrnuvua8P8MR8e8a+MPKbyMmr9TqCCy8Ud/t4AM4kHY3JpJGtrgeK9l43fBnBwfdZYoRl5J6oWeA==}
peerDependencies:
'@preact/preset-vite': '*'
- storybook: ^8.3.3
+ storybook: ^8.3.4
typescript: '>= 4.3.x'
vite: ^4.0.0 || ^5.0.0
vite-plugin-glimmerx: '*'
@@ -4103,23 +4100,23 @@ packages:
vite-plugin-glimmerx:
optional: true
- '@storybook/components@8.3.3':
- resolution: {integrity: sha512-i2JYtesFGkdu+Hwuj+o9fLuO3yo+LPT1/8o5xBVYtEqsgDtEAyuRUWjSz8d8NPtzloGPOv5kvR6MokWDfbeMfw==}
+ '@storybook/components@8.3.4':
+ resolution: {integrity: sha512-iQzLJd87uGbFBbYNqlrN/ABrnx3dUrL0tjPCarzglzshZoPCNOsllJeJx5TJwB9kCxSZ8zB9TTOgr7NXl+oyVA==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/core-events@8.3.3':
- resolution: {integrity: sha512-YL+gBuCS81qktzTkvw0MXUJW0bYAXfRzMoiLfDBTrEKZfcJOB4JAlMGmvRRar0+jygK3icD42Rl5BwWoZY6KFQ==}
+ '@storybook/core-events@8.3.4':
+ resolution: {integrity: sha512-3/5oJN2UnlmUILXCh7SXMTa2MYZOvrjeZCm3wFomoQASU2FFzS5AxBYYnwNdtrZmn4w32uw4T7qvA0+96Utwsg==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/core@8.3.3':
- resolution: {integrity: sha512-pmf2bP3fzh45e56gqOuBT8sDX05hGdUKIZ/hcI84d5xmd6MeHiPW8th2v946wCHcxHzxib2/UU9vQUh+mB4VNw==}
+ '@storybook/core@8.3.4':
+ resolution: {integrity: sha512-4PZB91JJpuKfcjeOR2LXj3ABaPLLSd2P/SfYOKNCygrDstsQa/yay3/yN5Z9yi1cIG84KRr6/sUW+0x8HsGLPg==}
- '@storybook/csf-plugin@8.3.3':
- resolution: {integrity: sha512-7AD7ojpXr3THqpTcEI4K7oKUfSwt1hummgL/cASuQvEPOwAZCVZl2gpGtKxcXhtJXTkn3GMCAvlYMoe7O/1YWw==}
+ '@storybook/csf-plugin@8.3.4':
+ resolution: {integrity: sha512-ZMFWYxeTN4GxCn8dyIH4roECyLDy29yv/QKM+pHM3AC5Ny2HWI35SohWao4fGBAFxPQFbR5hPN8xa6ofHPSSTg==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
'@storybook/csf@0.1.11':
resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==}
@@ -4134,45 +4131,45 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
- '@storybook/instrumenter@8.3.3':
- resolution: {integrity: sha512-ZiODB9EwCQkl4PBxGJjBHXRTLxcNs68ZZvR+xeMr0eMFzzlJG+trXoX5kK95oA4BFhGN+3uM0Zl3MoRjBtJTNA==}
+ '@storybook/instrumenter@8.3.4':
+ resolution: {integrity: sha512-jVhfNOPekOyJmta0BTkQl9Z6rgRbFHlc0eV4z1oSrzaawSlc9TFzAeDCtCP57vg3FuBX8ydDYAvyZ7s4xPpLyg==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/manager-api@8.3.3':
- resolution: {integrity: sha512-Na4U+McOeVUJAR6qzJfQ6y2Qt0kUgEDUriNoAn+curpoKPTmIaZ79RAXBzIqBl31VyQKknKpZbozoRGf861YaQ==}
+ '@storybook/manager-api@8.3.4':
+ resolution: {integrity: sha512-tBx7MBfPUrKSlD666zmVjtIvoNArwCciZiW/UJ8IWmomrTJRfFBnVvPVM2gp1lkDIzRHYmz5x9BHbYaEDNcZWQ==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/preview-api@8.3.3':
- resolution: {integrity: sha512-GP2QlaF3BBQGAyo248N7549YkTQjCentsc1hUvqPnFWU4xfjkejbnFk8yLaIw0VbYbL7jfd7npBtjZ+6AnphMQ==}
+ '@storybook/preview-api@8.3.4':
+ resolution: {integrity: sha512-/YKQ3QDVSHmtFXXCShf5w0XMlg8wkfTpdYxdGv1CKFV8DU24f3N7KWulAgeWWCWQwBzZClDa9kzxmroKlQqx3A==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/react-dom-shim@8.3.3':
- resolution: {integrity: sha512-0dPC9K7+K5+X/bt3GwYmh+pCpisUyKVjWsI+PkzqGnWqaXFakzFakjswowIAIO1rf7wYZR591x3ehUAyL2bJiQ==}
+ '@storybook/react-dom-shim@8.3.4':
+ resolution: {integrity: sha512-L4llDvjaAzqPx6h4ddZMh36wPr75PrI2S8bXy+flLqAeVRYnRt4WNKGuxqH0t0U6MwId9+vlCZ13JBfFuY7eQQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/react-vite@8.3.3':
- resolution: {integrity: sha512-vzOqVaA/rv+X5J17eWKxdZztMKEKfsCSP8pNNmrqXWxK3pSlW0fAPxtn1kw3UNxGtAv71pcqvaCUtTJKqI1PYA==}
+ '@storybook/react-vite@8.3.4':
+ resolution: {integrity: sha512-0Xm8eTH+jQ7SV4moLkPN4G6U2IDrqXPXUqsZdXaccepIMcD4G75foQFm2LOrFJuY+IMySPspKeTqf8OLskPppw==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.3
+ storybook: ^8.3.4
vite: ^4.0.0 || ^5.0.0
- '@storybook/react@8.3.3':
- resolution: {integrity: sha512-fHOW/mNqI+sZWttGOE32Q+rAIbN7/Oib091cmE8usOM0z0vPNpywUBtqC2cCQH39vp19bhTsQaSsTcoBSweAHw==}
+ '@storybook/react@8.3.4':
+ resolution: {integrity: sha512-PA7iQL4/9X2/iLrv+AUPNtlhTHJWhDao9gQIT1Hef39FtFk+TU9lZGbv+g29R1H9V3cHP5162nG2aTu395kmbA==}
engines: {node: '>=18.0.0'}
peerDependencies:
- '@storybook/test': 8.3.3
+ '@storybook/test': 8.3.4
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^8.3.3
+ storybook: ^8.3.4
typescript: '>= 4.2.x'
peerDependenciesMeta:
'@storybook/test':
@@ -4180,38 +4177,38 @@ packages:
typescript:
optional: true
- '@storybook/source-loader@8.3.3':
- resolution: {integrity: sha512-NeP7l53mvnnfwi+91vtRaibZer+UJi6gkoaGRCpphL3L+3qVIXN3p41uXhAy+TahdFI2dbrWvLSNgtsvdXVaFg==}
+ '@storybook/source-loader@8.3.4':
+ resolution: {integrity: sha512-wH//LuWfa2iOmjykSqsub8M8e0EdhEUZoHUFhwBeizfYQQHaMaSEBhhAQCaWWKmdGB9lnCe1cioQ32c2IWtBIw==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/test@8.3.3':
- resolution: {integrity: sha512-uZ8nMIovfI2ry989K2+cYAeEVD/3dpjj2+Rbmy7DiZWWVhFALfmqaTRkzZfShLmlH0TFv+rfcBPihGccBtw0FQ==}
+ '@storybook/test@8.3.4':
+ resolution: {integrity: sha512-HRiUenitln8QPHu6DEWUg9s9cEoiGN79lMykzXzw9shaUvdEIhWCsh82YKtmB3GJPj6qcc6dZL/Aio8srxyGAg==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/theming@8.3.3':
- resolution: {integrity: sha512-gWJKetI6XJQgkrvvry4ez10+jLaGNCQKi5ygRPM9N+qrjA3BB8F2LCuFUTBuisa4l64TILDNjfwP/YTWV5+u5A==}
+ '@storybook/theming@8.3.4':
+ resolution: {integrity: sha512-D4XVsQgTtpHEHLhwkx59aGy1GBwOedVr/mNns7hFrH8FjEpxrrWCuZQASq1ZpCl8LXlh7uvmT5sM2rOdQbGuGg==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/types@8.3.3':
- resolution: {integrity: sha512-wV1kupG1tfTMOXaBrtVHXuqp19vURVDqWTQX6nqkoUFD7Xb1lz/YNVeGP1uT/zJdJy42/HIyoib9JPx9h0Vx9w==}
+ '@storybook/types@8.3.4':
+ resolution: {integrity: sha512-kIyb0g8C6EizI0Mv+l6L6yjCJe9/vW3UvgsZL5BXqs8THTAfs3/+A9Q9jDEMovSIVI3EgesO79+OCEazDUHmOA==}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
- '@storybook/vue3-vite@8.3.3':
- resolution: {integrity: sha512-IFcoOGlUGuUkL3rpm9UFs8FK9JX1ZdfGpLXRObVOVRhW3t+MsNLpx4Fqp3a/re6WcCC3yvHzbLXgvGcjpapkbw==}
+ '@storybook/vue3-vite@8.3.4':
+ resolution: {integrity: sha512-0H1tLbRd8i6L3EW8QC9bDlgPIUM5i6b7onvyyQhyIxODWRfigHi6UP9sjHfrljdvnlOtYlZT2A5QbpkugzwLjg==}
engines: {node: '>=18.0.0'}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
vite: ^4.0.0 || ^5.0.0
- '@storybook/vue3@8.3.3':
- resolution: {integrity: sha512-peu8MFGwmhpXoD3n42qG6TxeVHRhfHZ0/HW4+A6FXSB1c9w0CC4AzHs5f1w3yUvshtexNN5bkw9Q4nSVKtfU7A==}
+ '@storybook/vue3@8.3.4':
+ resolution: {integrity: sha512-NNQXwidr+QjLndORWtPjXv/obsNNfJhP5Xj6vUZslrDpdIyTL3NEM+ktLK2EMw/a3zUbJMnMkyMgoWvioCNHxQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
- storybook: ^8.3.3
+ storybook: ^8.3.4
vue: ^3.0.0
'@swc/cli@0.3.12':
@@ -4591,8 +4588,8 @@ packages:
'@types/cacheable-request@6.0.3':
resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
- '@types/color-convert@2.0.3':
- resolution: {integrity: sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==}
+ '@types/color-convert@2.0.4':
+ resolution: {integrity: sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==}
'@types/color-name@1.1.1':
resolution: {integrity: sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==}
@@ -5106,8 +5103,8 @@ packages:
'@vue/compiler-core@3.5.10':
resolution: {integrity: sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==}
- '@vue/compiler-core@3.5.7':
- resolution: {integrity: sha512-A0gay3lK71MddsSnGlBxRPOugIVdACze9L/rCo5X5srCyjQfZOfYtSFMJc3aOZCM+xN55EQpb4R97rYn/iEbSw==}
+ '@vue/compiler-core@3.5.11':
+ resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==}
'@vue/compiler-dom@3.4.37':
resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==}
@@ -5115,20 +5112,20 @@ packages:
'@vue/compiler-dom@3.5.10':
resolution: {integrity: sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==}
- '@vue/compiler-dom@3.5.7':
- resolution: {integrity: sha512-GYWl3+gO8/g0ZdYaJ18fYHdI/WVic2VuuUd1NsPp60DWXKy+XjdhFsDW7FbUto8siYYZcosBGn9yVBkjhq1M8Q==}
+ '@vue/compiler-dom@3.5.11':
+ resolution: {integrity: sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==}
'@vue/compiler-sfc@3.4.37':
resolution: {integrity: sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==}
- '@vue/compiler-sfc@3.5.10':
- resolution: {integrity: sha512-to8E1BgpakV7224ZCm8gz1ZRSyjNCAWEplwFMWKlzCdP9DkMKhRRwt0WkCjY7jkzi/Vz3xgbpeig5Pnbly4Tow==}
+ '@vue/compiler-sfc@3.5.11':
+ resolution: {integrity: sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw==}
'@vue/compiler-ssr@3.4.37':
resolution: {integrity: sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==}
- '@vue/compiler-ssr@3.5.10':
- resolution: {integrity: sha512-hxP4Y3KImqdtyUKXDRSxKSRkSm1H9fCvhojEYrnaoWhE4w/y8vwWhnosJoPPe2AXm5sU7CSbYYAgkt2ZPhDz+A==}
+ '@vue/compiler-ssr@3.5.11':
+ resolution: {integrity: sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA==}
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
@@ -5152,30 +5149,30 @@ packages:
'@vue/reactivity@3.4.37':
resolution: {integrity: sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==}
- '@vue/reactivity@3.5.10':
- resolution: {integrity: sha512-kW08v06F6xPSHhid9DJ9YjOGmwNDOsJJQk0ax21wKaUYzzuJGEuoKNU2Ujux8FLMrP7CFJJKsHhXN9l2WOVi2g==}
+ '@vue/reactivity@3.5.11':
+ resolution: {integrity: sha512-Nqo5VZEn8MJWlCce8XoyVqHZbd5P2NH+yuAaFzuNSR96I+y1cnuUiq7xfSG+kyvLSiWmaHTKP1r3OZY4mMD50w==}
'@vue/runtime-core@3.4.37':
resolution: {integrity: sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==}
- '@vue/runtime-core@3.5.10':
- resolution: {integrity: sha512-9Q86I5Qq3swSkFfzrZ+iqEy7Vla325M7S7xc1NwKnRm/qoi1Dauz0rT6mTMmscqx4qz0EDJ1wjB+A36k7rl8mA==}
+ '@vue/runtime-core@3.5.11':
+ resolution: {integrity: sha512-7PsxFGqwfDhfhh0OcDWBG1DaIQIVOLgkwA5q6MtkPiDFjp5gohVnJEahSktwSFLq7R5PtxDKy6WKURVN1UDbzA==}
'@vue/runtime-dom@3.4.37':
resolution: {integrity: sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==}
- '@vue/runtime-dom@3.5.10':
- resolution: {integrity: sha512-t3x7ht5qF8ZRi1H4fZqFzyY2j+GTMTDxRheT+i8M9Ph0oepUxoadmbwlFwMoW7RYCpNQLpP2Yx3feKs+fyBdpA==}
+ '@vue/runtime-dom@3.5.11':
+ resolution: {integrity: sha512-GNghjecT6IrGf0UhuYmpgaOlN7kxzQBhxWEn08c/SQDxv1yy4IXI1bn81JgEpQ4IXjRxWtPyI8x0/7TF5rPfYQ==}
'@vue/server-renderer@3.4.37':
resolution: {integrity: sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==}
peerDependencies:
vue: 3.4.37
- '@vue/server-renderer@3.5.10':
- resolution: {integrity: sha512-IVE97tt2kGKwHNq9yVO0xdh1IvYfZCShvDSy46JIh5OQxP1/EXSpoDqetVmyIzL7CYOWnnmMkVqd7YK2QSWkdw==}
+ '@vue/server-renderer@3.5.11':
+ resolution: {integrity: sha512-cVOwYBxR7Wb1B1FoxYvtjJD8X/9E5nlH4VSkJy2uMA1MzYNdzAAB//l8nrmN9py/4aP+3NjWukf9PZ3TeWULaA==}
peerDependencies:
- vue: 3.5.10
+ vue: 3.5.11
'@vue/shared@3.4.37':
resolution: {integrity: sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==}
@@ -5183,8 +5180,8 @@ packages:
'@vue/shared@3.5.10':
resolution: {integrity: sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==}
- '@vue/shared@3.5.7':
- resolution: {integrity: sha512-NBE1PBIvzIedxIc2RZiKXvGbJkrZ2/hLf3h8GlS4/sP9xcXEZMFWOazFkNd6aGeUCMaproe5MHVYB3/4AW9q9g==}
+ '@vue/shared@3.5.11':
+ resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==}
'@vue/test-utils@2.4.1':
resolution: {integrity: sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg==}
@@ -5665,8 +5662,8 @@ packages:
resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
engines: {node: '>=6.14.2'}
- bullmq@5.13.2:
- resolution: {integrity: sha512-McGE8k3mrCvdUHdU0sHkTKDS1xr4pff+hbEKBY51wk5S6Za0gkuejYA620VQTo3Zz37E/NVWMgumwiXPQ3yZcA==}
+ bullmq@5.15.0:
+ resolution: {integrity: sha512-h53shVjx8s6wxYGtUfzAfENpSP7N5T0D4PMTvbZncozLjb8yUKhopfpa7PmcpQfq7SSO9dm/OZ9XQuGOCSGNug==}
buraha@0.0.1:
resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==}
@@ -5864,8 +5861,8 @@ packages:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
- chromatic@11.10.4:
- resolution: {integrity: sha512-nfgDpW5gQ4FtgV1lZXXfqLjONKDCh2K4vwI3dbZrtU1ObOL9THyAzpIdnK9LRcNSeisDLX+XFCryfMg1Ql2U2g==}
+ chromatic@11.11.0:
+ resolution: {integrity: sha512-mwmYsNMsZlRLtlfFUEtac5zhoVRhc+O/lsuMdOpwkiDQiKX6WdSNIhic+dkLenfuzao2r18s50nphcOgFoatBg==}
hasBin: true
peerDependencies:
'@chromatic-com/cypress': ^0.*.* || ^1.0.0
@@ -6684,6 +6681,27 @@ packages:
eslint-import-resolver-webpack:
optional: true
+ eslint-module-utils@2.12.0:
+ resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+
eslint-plugin-import@2.30.0:
resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==}
engines: {node: '>=4'}
@@ -6694,6 +6712,16 @@ packages:
'@typescript-eslint/parser':
optional: true
+ eslint-plugin-import@2.31.0:
+ resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+
eslint-plugin-vue@9.27.0:
resolution: {integrity: sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==}
engines: {node: ^14.17.0 || >=16.0.0}
@@ -9618,10 +9646,6 @@ packages:
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
- postcss@8.4.40:
- resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==}
- engines: {node: ^10 || ^12 || >=14}
-
postcss@8.4.47:
resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
engines: {node: ^10 || ^12 || >=14}
@@ -10174,14 +10198,19 @@ packages:
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- sanitize-html@2.13.0:
- resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==}
+ sanitize-html@2.13.1:
+ resolution: {integrity: sha512-ZXtKq89oue4RP7abL9wp/9URJcqQNABB5GGJ2acW1sdO8JTVl92f4ygD7Yc9Ze09VAZhnt2zegeU0tbNsdcLYg==}
sass@1.79.3:
resolution: {integrity: sha512-m7dZxh0W9EZ3cw50Me5GOuYm/tVAJAn91SUnohLRo9cXBixGUOdvmryN+dXpwR831bhoY3Zv7rEFt85PUwTmzA==}
engines: {node: '>=14.0.0'}
hasBin: true
+ sass@1.79.4:
+ resolution: {integrity: sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
sax@1.2.4:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
@@ -10284,9 +10313,6 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- shiki@1.12.0:
- resolution: {integrity: sha512-BuAxWOm5JhRcbSOl7XCei8wGjgJJonnV0oipUupPY58iULxUGyHhW5CF+9FRMuM1pcJ5cGEJGll1LusX6FwpPA==}
-
shiki@1.21.0:
resolution: {integrity: sha512-apCH5BoWTrmHDPGgg3RF8+HAAbEL/CdbYr8rMw7eIrdhCkZHdVGat5mMNlRtd1erNG01VPMIKHNQ0Pj2HMAiog==}
@@ -10557,8 +10583,8 @@ packages:
react-dom:
optional: true
- storybook@8.3.3:
- resolution: {integrity: sha512-FG2KAVQN54T9R6voudiEftehtkXtLO+YVGP2gBPfacEdDQjY++ld7kTbHzpTT/bpCDx7Yq3dqOegLm9arVJfYw==}
+ storybook@8.3.4:
+ resolution: {integrity: sha512-nzvuK5TsEgJwcWGLGgafabBOxKn37lfJVv7ZoUVPgJIjk2mNRyJDFwYRJzUZaD37eiR/c/lQ6MoaeqlGwiXoxw==}
hasBin: true
stream-browserify@3.0.0:
@@ -11445,8 +11471,8 @@ packages:
typescript:
optional: true
- vue@3.5.10:
- resolution: {integrity: sha512-Vy2kmJwHPlouC/tSnIgXVg03SG+9wSqT1xu1Vehc+ChsXsRd7jLkKgMltVEFOzUdBr3uFwBCG+41LJtfAcBRng==}
+ vue@3.5.11:
+ resolution: {integrity: sha512-/8Wurrd9J3lb72FTQS7gRMNQD4nztTtKPmuDuPuhqXmmpD6+skVjAeahNpVzsuky6Sy9gy7wn8UadqPtt9SQIg==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -12501,7 +12527,7 @@ snapshots:
'@babel/template@7.22.15':
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/parser': 7.24.7
+ '@babel/parser': 7.25.6
'@babel/types': 7.24.7
'@babel/template@7.24.0':
@@ -12513,7 +12539,7 @@ snapshots:
'@babel/template@7.24.7':
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/parser': 7.24.7
+ '@babel/parser': 7.25.6
'@babel/types': 7.24.7
'@babel/traverse@7.23.5':
@@ -12524,7 +12550,7 @@ snapshots:
'@babel/helper-function-name': 7.23.0
'@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
- '@babel/parser': 7.24.7
+ '@babel/parser': 7.25.6
'@babel/types': 7.24.7
debug: 4.3.7(supports-color@8.1.1)
globals: 11.12.0
@@ -12539,7 +12565,7 @@ snapshots:
'@babel/helper-function-name': 7.24.7
'@babel/helper-hoist-variables': 7.24.7
'@babel/helper-split-export-declaration': 7.24.7
- '@babel/parser': 7.24.7
+ '@babel/parser': 7.25.6
'@babel/types': 7.24.7
debug: 4.3.7(supports-color@8.1.1)
globals: 11.12.0
@@ -13652,13 +13678,13 @@ snapshots:
'@misskey-dev/browser-image-resizer@2024.1.0': {}
- '@misskey-dev/eslint-plugin@2.0.3(@eslint/compat@1.1.1)(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2))(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0))(eslint@9.8.0)(globals@15.9.0)':
+ '@misskey-dev/eslint-plugin@2.0.3(@eslint/compat@1.1.1)(@typescript-eslint/eslint-plugin@7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2))(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0))(eslint@9.8.0)(globals@15.9.0)':
dependencies:
'@eslint/compat': 1.1.1
'@typescript-eslint/eslint-plugin': 7.17.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)(typescript@5.6.2)
'@typescript-eslint/parser': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
eslint: 9.8.0
- eslint-plugin-import: 2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0)
globals: 15.9.0
'@misskey-dev/sharp-read-bmp@1.2.0':
@@ -13834,7 +13860,7 @@ snapshots:
'@npmcli/fs@3.1.0':
dependencies:
- semver: 7.6.0
+ semver: 7.6.3
'@nsfw-filter/gif-frames@1.0.2':
dependencies:
@@ -14344,10 +14370,6 @@ snapshots:
dependencies:
'@sentry/types': 8.20.0
- '@shikijs/core@1.12.0':
- dependencies:
- '@types/hast': 3.0.4
-
'@shikijs/core@1.21.0':
dependencies:
'@shikijs/engine-javascript': 1.21.0
@@ -14800,120 +14822,120 @@ snapshots:
'@sqltools/formatter@1.2.5': {}
- '@storybook/addon-actions@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-actions@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
'@types/uuid': 9.0.8
dequal: 2.0.3
polished: 4.2.2
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
uuid: 9.0.1
- '@storybook/addon-backgrounds@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-backgrounds@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
memoizerific: 1.11.3
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-controls@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-controls@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
dequal: 2.0.3
lodash: 4.17.21
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-docs@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-docs@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@mdx-js/react': 3.0.1(@types/react@18.0.28)(react@18.3.1)
- '@storybook/blocks': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/csf-plugin': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/blocks': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/csf-plugin': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/global': 5.0.0
- '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/react-dom-shim': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@types/react': 18.0.28
fs-extra: 11.1.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
rehype-external-links: 3.0.0
rehype-slug: 6.0.0
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-essentials@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-essentials@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- '@storybook/addon-actions': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-backgrounds': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-controls': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-docs': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-highlight': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-measure': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-outline': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-toolbars': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/addon-viewport': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/addon-actions': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-backgrounds': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-controls': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-docs': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-highlight': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-measure': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-outline': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-toolbars': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/addon-viewport': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-highlight@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-highlight@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/addon-interactions@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-interactions@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/test': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/instrumenter': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/test': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
polished: 4.2.2
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-links@8.3.3(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-links@8.3.4(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
optionalDependencies:
react: 18.3.1
- '@storybook/addon-mdx-gfm@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-mdx-gfm@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
remark-gfm: 4.0.0
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
transitivePeerDependencies:
- supports-color
- '@storybook/addon-measure@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-measure@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
tiny-invariant: 1.3.3
- '@storybook/addon-outline@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-outline@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
- '@storybook/addon-storysource@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-storysource@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- '@storybook/source-loader': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/source-loader': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
estraverse: 5.3.0
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
tiny-invariant: 1.3.3
- '@storybook/addon-toolbars@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-toolbars@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/addon-viewport@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/addon-viewport@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
memoizerific: 1.11.3
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/blocks@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
@@ -14926,7 +14948,7 @@ snapshots:
memoizerific: 1.11.3
polished: 4.2.2
react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
telejson: 7.2.0
ts-dedent: 2.2.0
util-deprecate: 1.0.2
@@ -14934,9 +14956,9 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/builder-vite@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
+ '@storybook/builder-vite@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
dependencies:
- '@storybook/csf-plugin': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/csf-plugin': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@types/find-cache-dir': 3.2.1
browser-assert: 1.2.1
es-module-lexer: 1.5.4
@@ -14944,7 +14966,7 @@ snapshots:
find-cache-dir: 3.3.2
fs-extra: 11.1.1
magic-string: 0.30.11
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
optionalDependencies:
@@ -14952,15 +14974,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@storybook/components@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/components@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/core-events@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/core-events@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/core@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)':
+ '@storybook/core@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)':
dependencies:
'@storybook/csf': 0.1.11
'@types/express': 4.17.21
@@ -14980,9 +15002,9 @@ snapshots:
- supports-color
- utf-8-validate
- '@storybook/csf-plugin@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/csf-plugin@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
unplugin: 1.4.0
'@storybook/csf@0.1.11':
@@ -14996,40 +15018,40 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/instrumenter@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/instrumenter@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/global': 5.0.0
'@vitest/utils': 2.1.1
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
util: 0.12.5
- '@storybook/manager-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/manager-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/preview-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/preview-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/react-dom-shim@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/react-dom-shim@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/react-vite@8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.5)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
+ '@storybook/react-vite@8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.5)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))':
dependencies:
'@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
'@rollup/pluginutils': 5.1.2(rollup@4.22.5)
- '@storybook/builder-vite': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
- '@storybook/react': 8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
+ '@storybook/builder-vite': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
+ '@storybook/react': 8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)
find-up: 5.0.0
magic-string: 0.30.11
react: 18.3.1
react-docgen: 7.0.1
react-dom: 18.3.1(react@18.3.1)
resolve: 1.22.8
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
tsconfig-paths: 4.2.0
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
transitivePeerDependencies:
@@ -15040,14 +15062,14 @@ snapshots:
- typescript
- vite-plugin-glimmerx
- '@storybook/react@8.3.3(@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)':
+ '@storybook/react@8.3.4(@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)':
dependencies:
- '@storybook/components': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/global': 5.0.0
- '@storybook/manager-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/manager-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/react-dom-shim': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@types/escodegen': 0.0.6
'@types/estree': 0.0.51
'@types/node': 22.5.5
@@ -15061,72 +15083,72 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
semver: 7.6.3
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
type-fest: 2.19.0
util-deprecate: 1.0.2
optionalDependencies:
- '@storybook/test': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/test': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
typescript: 5.6.2
- '@storybook/source-loader@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/source-loader@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
estraverse: 5.3.0
lodash: 4.17.21
prettier: 3.3.3
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/test@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/test@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
'@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/instrumenter': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@testing-library/dom': 10.4.0
'@testing-library/jest-dom': 6.5.0
'@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0)
'@vitest/expect': 2.0.5
'@vitest/spy': 2.0.5
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
util: 0.12.5
- '@storybook/theming@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/theming@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/types@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
+ '@storybook/types@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))':
dependencies:
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- '@storybook/vue3-vite@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))':
+ '@storybook/vue3-vite@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))':
dependencies:
- '@storybook/builder-vite': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
- '@storybook/vue3': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.10(typescript@5.6.2))
+ '@storybook/builder-vite': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(typescript@5.6.2)(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))
+ '@storybook/vue3': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.11(typescript@5.6.2))
find-package-json: 1.2.0
magic-string: 0.30.11
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
typescript: 5.6.2
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
vue-component-meta: 2.0.16(typescript@5.6.2)
- vue-docgen-api: 4.75.1(vue@3.5.10(typescript@5.6.2))
+ vue-docgen-api: 4.75.1(vue@3.5.11(typescript@5.6.2))
transitivePeerDependencies:
- '@preact/preset-vite'
- supports-color
- vite-plugin-glimmerx
- vue
- '@storybook/vue3@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.10(typescript@5.6.2))':
+ '@storybook/vue3@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))(vue@3.5.11(typescript@5.6.2))':
dependencies:
- '@storybook/components': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
'@storybook/global': 5.0.0
- '@storybook/manager-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@vue/compiler-core': 3.5.7
- storybook: 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/manager-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@vue/compiler-core': 3.5.10
+ storybook: 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
ts-dedent: 2.2.0
type-fest: 2.19.0
- vue: 3.5.10(typescript@5.6.2)
+ vue: 3.5.11(typescript@5.6.2)
vue-component-type-helpers: 2.1.6
'@swc/cli@0.3.12(@swc/core@1.6.6)(chokidar@3.5.3)':
@@ -15434,14 +15456,14 @@ snapshots:
dependencies:
'@testing-library/dom': 10.4.0
- '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.10)(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))':
+ '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.11)(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))':
dependencies:
'@babel/runtime': 7.23.4
'@testing-library/dom': 9.3.4
- '@vue/test-utils': 2.4.1(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))
- vue: 3.5.10(typescript@5.6.2)
+ '@vue/test-utils': 2.4.1(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))
+ vue: 3.5.11(typescript@5.6.2)
optionalDependencies:
- '@vue/compiler-sfc': 3.5.10
+ '@vue/compiler-sfc': 3.5.11
transitivePeerDependencies:
- '@vue/server-renderer'
@@ -15506,7 +15528,7 @@ snapshots:
'@types/node': 20.14.12
'@types/responselike': 1.0.0
- '@types/color-convert@2.0.3':
+ '@types/color-convert@2.0.4':
dependencies:
'@types/color-name': 1.1.1
@@ -16131,10 +16153,15 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
- '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.10(typescript@5.6.2))':
+ '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))':
dependencies:
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
- vue: 3.5.10(typescript@5.6.2)
+ vue: 3.5.11(typescript@5.6.2)
+
+ '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0))(vue@3.5.11(typescript@5.6.2))':
+ dependencies:
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
+ vue: 3.5.11(typescript@5.6.2)
'@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0))':
dependencies:
@@ -16155,7 +16182,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.3)(terser@5.33.0))':
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0))':
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
@@ -16170,7 +16197,7 @@ snapshots:
std-env: 3.7.0
strip-literal: 2.1.0
test-exclude: 6.0.0
- vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.3)(terser@5.33.0)
+ vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0)
transitivePeerDependencies:
- supports-color
@@ -16276,10 +16303,10 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-core@3.5.7':
+ '@vue/compiler-core@3.5.11':
dependencies:
'@babel/parser': 7.25.6
- '@vue/shared': 3.5.7
+ '@vue/shared': 3.5.11
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
@@ -16294,10 +16321,10 @@ snapshots:
'@vue/compiler-core': 3.5.10
'@vue/shared': 3.5.10
- '@vue/compiler-dom@3.5.7':
+ '@vue/compiler-dom@3.5.11':
dependencies:
- '@vue/compiler-core': 3.5.7
- '@vue/shared': 3.5.7
+ '@vue/compiler-core': 3.5.11
+ '@vue/shared': 3.5.11
'@vue/compiler-sfc@3.4.37':
dependencies:
@@ -16311,13 +16338,13 @@ snapshots:
postcss: 8.4.47
source-map-js: 1.2.0
- '@vue/compiler-sfc@3.5.10':
+ '@vue/compiler-sfc@3.5.11':
dependencies:
'@babel/parser': 7.25.6
- '@vue/compiler-core': 3.5.10
- '@vue/compiler-dom': 3.5.10
- '@vue/compiler-ssr': 3.5.10
- '@vue/shared': 3.5.10
+ '@vue/compiler-core': 3.5.11
+ '@vue/compiler-dom': 3.5.11
+ '@vue/compiler-ssr': 3.5.11
+ '@vue/shared': 3.5.11
estree-walker: 2.0.2
magic-string: 0.30.11
postcss: 8.4.47
@@ -16328,10 +16355,10 @@ snapshots:
'@vue/compiler-dom': 3.4.37
'@vue/shared': 3.4.37
- '@vue/compiler-ssr@3.5.10':
+ '@vue/compiler-ssr@3.5.11':
dependencies:
- '@vue/compiler-dom': 3.5.10
- '@vue/shared': 3.5.10
+ '@vue/compiler-dom': 3.5.11
+ '@vue/shared': 3.5.11
'@vue/compiler-vue2@2.7.16':
dependencies:
@@ -16341,8 +16368,8 @@ snapshots:
'@vue/language-core@2.0.16(typescript@5.6.2)':
dependencies:
'@volar/language-core': 2.2.0
- '@vue/compiler-dom': 3.5.7
- '@vue/shared': 3.5.7
+ '@vue/compiler-dom': 3.5.11
+ '@vue/shared': 3.5.11
computeds: 0.0.1
minimatch: 9.0.4
path-browserify: 1.0.1
@@ -16355,7 +16382,7 @@ snapshots:
'@volar/language-core': 2.4.5
'@vue/compiler-dom': 3.4.37
'@vue/compiler-vue2': 2.7.16
- '@vue/shared': 3.4.37
+ '@vue/shared': 3.5.11
computeds: 0.0.1
minimatch: 9.0.4
muggle-string: 0.4.1
@@ -16367,19 +16394,19 @@ snapshots:
dependencies:
'@vue/shared': 3.4.37
- '@vue/reactivity@3.5.10':
+ '@vue/reactivity@3.5.11':
dependencies:
- '@vue/shared': 3.5.10
+ '@vue/shared': 3.5.11
'@vue/runtime-core@3.4.37':
dependencies:
'@vue/reactivity': 3.4.37
'@vue/shared': 3.4.37
- '@vue/runtime-core@3.5.10':
+ '@vue/runtime-core@3.5.11':
dependencies:
- '@vue/reactivity': 3.5.10
- '@vue/shared': 3.5.10
+ '@vue/reactivity': 3.5.11
+ '@vue/shared': 3.5.11
'@vue/runtime-dom@3.4.37':
dependencies:
@@ -16388,11 +16415,11 @@ snapshots:
'@vue/shared': 3.4.37
csstype: 3.1.3
- '@vue/runtime-dom@3.5.10':
+ '@vue/runtime-dom@3.5.11':
dependencies:
- '@vue/reactivity': 3.5.10
- '@vue/runtime-core': 3.5.10
- '@vue/shared': 3.5.10
+ '@vue/reactivity': 3.5.11
+ '@vue/runtime-core': 3.5.11
+ '@vue/shared': 3.5.11
csstype: 3.1.3
'@vue/server-renderer@3.4.37(vue@3.4.37(typescript@5.5.4))':
@@ -16401,25 +16428,25 @@ snapshots:
'@vue/shared': 3.4.37
vue: 3.4.37(typescript@5.5.4)
- '@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2))':
+ '@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2))':
dependencies:
- '@vue/compiler-ssr': 3.5.10
- '@vue/shared': 3.5.10
- vue: 3.5.10(typescript@5.6.2)
+ '@vue/compiler-ssr': 3.5.11
+ '@vue/shared': 3.5.11
+ vue: 3.5.11(typescript@5.6.2)
'@vue/shared@3.4.37': {}
'@vue/shared@3.5.10': {}
- '@vue/shared@3.5.7': {}
+ '@vue/shared@3.5.11': {}
- '@vue/test-utils@2.4.1(@vue/server-renderer@3.5.10(vue@3.5.10(typescript@5.6.2)))(vue@3.5.10(typescript@5.6.2))':
+ '@vue/test-utils@2.4.1(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))':
dependencies:
js-beautify: 1.14.9
- vue: 3.5.10(typescript@5.6.2)
+ vue: 3.5.11(typescript@5.6.2)
vue-component-type-helpers: 1.8.4
optionalDependencies:
- '@vue/server-renderer': 3.5.10(vue@3.5.10(typescript@5.6.2))
+ '@vue/server-renderer': 3.5.11(vue@3.5.11(typescript@5.6.2))
'@webgpu/types@0.1.30': {}
@@ -16973,14 +17000,14 @@ snapshots:
node-gyp-build: 4.6.0
optional: true
- bullmq@5.13.2:
+ bullmq@5.15.0:
dependencies:
cron-parser: 4.8.1
ioredis: 5.4.1
msgpackr: 1.10.1
node-abort-controller: 3.1.1
- semver: 7.6.0
- tslib: 2.6.3
+ semver: 7.6.3
+ tslib: 2.7.0
uuid: 9.0.1
transitivePeerDependencies:
- supports-color
@@ -17228,7 +17255,7 @@ snapshots:
chownr@2.0.0: {}
- chromatic@11.10.4: {}
+ chromatic@11.11.0: {}
ci-info@3.7.1: {}
@@ -17488,12 +17515,12 @@ snapshots:
css-tree@2.2.1:
dependencies:
mdn-data: 2.0.28
- source-map-js: 1.2.0
+ source-map-js: 1.2.1
css-tree@2.3.1:
dependencies:
mdn-data: 2.0.30
- source-map-js: 1.2.0
+ source-map-js: 1.2.1
css-what@6.1.0: {}
@@ -17927,7 +17954,7 @@ snapshots:
'@one-ini/wasm': 0.1.1
commander: 10.0.1
minimatch: 9.0.1
- semver: 7.6.0
+ semver: 7.6.3
ee-first@1.1.1: {}
@@ -18321,7 +18348,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.11.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.11.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.0):
+ dependencies:
+ debug: 3.2.7(supports-color@8.1.1)
+ optionalDependencies:
+ '@typescript-eslint/parser': 7.17.0(eslint@9.11.0)(typescript@5.6.2)
+ eslint: 9.11.0
+ eslint-import-resolver-node: 0.3.9
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0):
dependencies:
debug: 3.2.7(supports-color@8.1.1)
optionalDependencies:
@@ -18359,7 +18396,36 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.30.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.11.0)(typescript@5.6.2))(eslint@9.11.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.11.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.11.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.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': 7.17.0(eslint@9.11.0)(typescript@5.6.2)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint@9.8.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -18370,7 +18436,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.8.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.11.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.17.0(eslint@9.8.0)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.8.0)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -18379,6 +18445,7 @@ snapshots:
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': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
@@ -19633,7 +19700,7 @@ snapshots:
is-boolean-object@1.1.2:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
has-tostringtag: 1.0.0
is-buffer@1.1.6: {}
@@ -19781,7 +19848,7 @@ snapshots:
is-weakset@2.0.2:
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.7
get-intrinsic: 1.2.1
is-wsl@2.2.0:
@@ -19818,7 +19885,7 @@ snapshots:
'@babel/parser': 7.24.7
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
- semver: 7.6.0
+ semver: 7.6.3
transitivePeerDependencies:
- supports-color
@@ -20545,7 +20612,7 @@ snapshots:
lru-cache@10.0.2:
dependencies:
- semver: 7.6.0
+ semver: 7.6.3
lru-cache@10.2.2: {}
@@ -20596,7 +20663,7 @@ snapshots:
make-dir@4.0.0:
dependencies:
- semver: 7.6.0
+ semver: 7.6.3
make-fetch-happen@13.0.0:
dependencies:
@@ -21395,7 +21462,7 @@ snapshots:
dependencies:
hosted-git-info: 4.1.0
is-core-module: 2.13.1
- semver: 7.6.0
+ semver: 7.6.3
validate-npm-package-license: 3.0.4
normalize-path@3.0.0: {}
@@ -22006,12 +22073,6 @@ snapshots:
postcss-value-parser@4.2.0: {}
- postcss@8.4.40:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.0.1
- source-map-js: 1.2.0
-
postcss@8.4.47:
dependencies:
nanoid: 3.3.7
@@ -22664,14 +22725,14 @@ snapshots:
safer-buffer@2.1.2: {}
- sanitize-html@2.13.0:
+ sanitize-html@2.13.1:
dependencies:
deepmerge: 4.2.2
escape-string-regexp: 4.0.0
htmlparser2: 8.0.1
is-plain-object: 5.0.0
parse-srcset: 1.0.2
- postcss: 8.4.40
+ postcss: 8.4.47
sass@1.79.3:
dependencies:
@@ -22679,6 +22740,12 @@ snapshots:
immutable: 4.2.2
source-map-js: 1.2.0
+ sass@1.79.4:
+ dependencies:
+ chokidar: 3.5.3
+ immutable: 4.2.2
+ source-map-js: 1.2.1
+
sax@1.2.4: {}
saxes@6.0.0:
@@ -22809,11 +22876,6 @@ snapshots:
shebang-regex@3.0.0: {}
- shiki@1.12.0:
- dependencies:
- '@shikijs/core': 1.12.0
- '@types/hast': 3.0.4
-
shiki@1.21.0:
dependencies:
'@shikijs/core': 1.21.0
@@ -23073,22 +23135,22 @@ snapshots:
dependencies:
internal-slot: 1.0.5
- storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/components@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/core-events@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/manager-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/preview-api@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/theming@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(@storybook/types@8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@storybook/blocks': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/components': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/core-events': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/manager-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/preview-api': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/theming': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
- '@storybook/types': 8.3.3(storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/blocks': 8.3.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/components': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/core-events': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/manager-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/preview-api': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/theming': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
+ '@storybook/types': 8.3.4(storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4))
optionalDependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- storybook@8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4):
+ storybook@8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4):
dependencies:
- '@storybook/core': 8.3.3(bufferutil@4.0.8)(utf-8-validate@6.0.4)
+ '@storybook/core': 8.3.4(bufferutil@4.0.8)(utf-8-validate@6.0.4)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -23765,13 +23827,13 @@ snapshots:
uuid@9.0.1: {}
- v-code-diff@1.13.1(vue@3.5.10(typescript@5.6.2)):
+ v-code-diff@1.13.1(vue@3.5.11(typescript@5.6.2)):
dependencies:
diff: 5.2.0
diff-match-patch: 1.0.5
highlight.js: 11.10.0
- vue: 3.5.10(typescript@5.6.2)
- vue-demi: 0.14.7(vue@3.5.10(typescript@5.6.2))
+ vue: 3.5.11(typescript@5.6.2)
+ vue-demi: 0.14.7(vue@3.5.11(typescript@5.6.2))
v8-to-istanbul@9.2.0:
dependencies:
@@ -23823,6 +23885,24 @@ snapshots:
- supports-color
- terser
+ vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.3.5(supports-color@8.1.1)
+ pathe: 1.1.2
+ picocolors: 1.0.1
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
vite-plugin-turbosnap@1.0.3: {}
vite@5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
@@ -23836,6 +23916,17 @@ snapshots:
sass: 1.79.3
terser: 5.33.0
+ vite@5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.4.47
+ rollup: 4.22.5
+ optionalDependencies:
+ '@types/node': 20.14.12
+ fsevents: 2.3.3
+ sass: 1.79.4
+ terser: 5.33.0
+
vitest-fetch-mock@0.2.2(encoding@0.1.13)(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.3)(terser@5.33.0)):
dependencies:
cross-fetch: 3.1.6(encoding@0.1.13)
@@ -23879,7 +23970,7 @@ snapshots:
- supports-color
- terser
- vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.3)(terser@5.33.0):
+ vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0):
dependencies:
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0
@@ -23898,8 +23989,8 @@ snapshots:
strip-literal: 2.1.0
tinybench: 2.6.0
tinypool: 0.8.4
- vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
- vite-node: 1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
+ vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
+ vite-node: 1.6.0(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
why-is-node-running: 2.2.2
optionalDependencies:
'@types/node': 20.14.12
@@ -23922,7 +24013,7 @@ snapshots:
vscode-languageclient@9.0.1:
dependencies:
minimatch: 5.1.2
- semver: 7.6.0
+ semver: 7.6.3
vscode-languageserver-protocol: 3.17.5
vscode-languageserver-protocol@3.17.5:
@@ -23955,24 +24046,24 @@ snapshots:
vue-component-type-helpers@2.1.6: {}
- vue-demi@0.14.7(vue@3.5.10(typescript@5.6.2)):
+ vue-demi@0.14.7(vue@3.5.11(typescript@5.6.2)):
dependencies:
- vue: 3.5.10(typescript@5.6.2)
+ vue: 3.5.11(typescript@5.6.2)
- vue-docgen-api@4.75.1(vue@3.5.10(typescript@5.6.2)):
+ vue-docgen-api@4.75.1(vue@3.5.11(typescript@5.6.2)):
dependencies:
'@babel/parser': 7.25.6
'@babel/types': 7.25.6
- '@vue/compiler-dom': 3.5.7
- '@vue/compiler-sfc': 3.5.10
+ '@vue/compiler-dom': 3.5.10
+ '@vue/compiler-sfc': 3.5.11
ast-types: 0.16.1
hash-sum: 2.0.0
lru-cache: 8.0.4
pug: 3.0.3
recast: 0.23.6
ts-map: 1.0.3
- vue: 3.5.10(typescript@5.6.2)
- vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.10(typescript@5.6.2))
+ vue: 3.5.11(typescript@5.6.2)
+ vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.11(typescript@5.6.2))
vue-eslint-parser@9.4.3(eslint@9.11.0):
dependencies:
@@ -23987,9 +24078,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.10(typescript@5.6.2)):
+ vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.11(typescript@5.6.2)):
dependencies:
- vue: 3.5.10(typescript@5.6.2)
+ vue: 3.5.11(typescript@5.6.2)
vue-template-compiler@2.7.14:
dependencies:
@@ -24013,20 +24104,20 @@ snapshots:
optionalDependencies:
typescript: 5.5.4
- vue@3.5.10(typescript@5.6.2):
+ vue@3.5.11(typescript@5.6.2):
dependencies:
- '@vue/compiler-dom': 3.5.10
- '@vue/compiler-sfc': 3.5.10
- '@vue/runtime-dom': 3.5.10
- '@vue/server-renderer': 3.5.10(vue@3.5.10(typescript@5.6.2))
- '@vue/shared': 3.5.10
+ '@vue/compiler-dom': 3.5.11
+ '@vue/compiler-sfc': 3.5.11
+ '@vue/runtime-dom': 3.5.11
+ '@vue/server-renderer': 3.5.11(vue@3.5.11(typescript@5.6.2))
+ '@vue/shared': 3.5.11
optionalDependencies:
typescript: 5.6.2
- vuedraggable@4.1.0(vue@3.5.10(typescript@5.6.2)):
+ vuedraggable@4.1.0(vue@3.5.11(typescript@5.6.2)):
dependencies:
sortablejs: 1.14.0
- vue: 3.5.10(typescript@5.6.2)
+ vue: 3.5.11(typescript@5.6.2)
w3c-xmlserializer@5.0.0:
dependencies:
From ed71b0b7d44ea5c56d1afa5dd113330832e60155 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Fri, 4 Oct 2024 11:27:08 +0900
Subject: [PATCH 051/194] :art:
---
packages/frontend/src/components/MkAbuseReport.vue | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/frontend/src/components/MkAbuseReport.vue b/packages/frontend/src/components/MkAbuseReport.vue
index aa2bffaa17..c9c629046e 100644
--- a/packages/frontend/src/components/MkAbuseReport.vue
+++ b/packages/frontend/src/components/MkAbuseReport.vue
@@ -10,6 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only
(by )
+ {{ report.comment }}
@@ -39,6 +39,7 @@ import MkInput from '@/components/MkInput.vue';
import MkPagination from '@/components/MkPagination.vue';
import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
+import MkDateSeparatedList from '@/components/MkDateSeparatedList.vue';
const logs = shallowRef>();
From 708ffaef5c0ab8b7d7664cb3fae6420ac0e4cbcd Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Fri, 4 Oct 2024 17:29:10 +0900
Subject: [PATCH 059/194] :art:
---
packages/frontend/src/pages/settings/apps.vue | 73 +++++++++----------
1 file changed, 33 insertions(+), 40 deletions(-)
diff --git a/packages/frontend/src/pages/settings/apps.vue b/packages/frontend/src/pages/settings/apps.vue
index 0e0c1f4c0c..68e36ef1bb 100644
--- a/packages/frontend/src/pages/settings/apps.vue
+++ b/packages/frontend/src/pages/settings/apps.vue
@@ -14,30 +14,39 @@ SPDX-License-Identifier: AGPL-3.0-only
-
-
-
-
{{ token.name }}
-
{{ token.description }}
-
- {{ i18n.ts.installedDate }}
-
-
-
- {{ i18n.ts.lastUsedDate }}
-
-
-
- {{ i18n.ts.details }}
+
+
+
+
+
+ {{ token.name }}
+ {{ token.description }}
+
+
+ {{ i18n.ts.delete }}
+
+
+
+
{{ token.description }}
+
+
+ {{ i18n.ts.installedDate }}
+
+
+
+ {{ i18n.ts.lastUsedDate }}
+
+
+
+
+ {{ i18n.ts.permission }}
+ {{ Object.keys(token.permission).length === 0 ? i18n.ts.none : Object.keys(token.permission).length }}
- {{ i18n.ts._permissions[p] }}
-
-
-
-
+
-
+
@@ -52,6 +61,7 @@ import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
import MkKeyValue from '@/components/MkKeyValue.vue';
import MkButton from '@/components/MkButton.vue';
+import MkFolder from '@/components/MkFolder.vue';
import { infoImageUrl } from '@/instance.js';
const list = ref
>();
@@ -82,26 +92,9 @@ definePageMetadata(() => ({
From d8f30fb7938e41e8d4e62c5b7a9094ecefdebd44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
<67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Fri, 4 Oct 2024 17:32:18 +0900
Subject: [PATCH 060/194] =?UTF-8?q?fix(frontend):=20canvas-confetti?=
=?UTF-8?q?=E3=81=AE=E5=9E=8B=E5=AE=9A=E7=BE=A9=E3=82=92=E8=BF=BD=E5=8A=A0?=
=?UTF-8?q?=20(#14692)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/frontend/package.json | 3 +-
pnpm-lock.yaml | 91 +++++++++++++---------------------
2 files changed, 37 insertions(+), 57 deletions(-)
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 11d7ff3963..3226a554a9 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -45,6 +45,7 @@
"date-fns": "2.30.0",
"estree-walker": "3.0.3",
"eventemitter3": "5.0.1",
+ "frontend-shared": "workspace:*",
"idb-keyval": "6.2.1",
"insert-text-at-cursor": "0.3.0",
"is-file-animated": "1.0.2",
@@ -54,7 +55,6 @@
"misskey-bubble-game": "workspace:*",
"misskey-js": "workspace:*",
"misskey-reversi": "workspace:*",
- "frontend-shared": "workspace:*",
"photoswipe": "5.4.4",
"punycode": "2.3.1",
"rollup": "4.22.5",
@@ -96,6 +96,7 @@
"@storybook/vue3": "8.3.4",
"@storybook/vue3-vite": "8.3.4",
"@testing-library/vue": "8.1.0",
+ "@types/canvas-confetti": "^1.6.4",
"@types/estree": "1.0.6",
"@types/matter-js": "0.19.7",
"@types/micromatch": "4.0.9",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b21a74cf57..1312e8c886 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -923,6 +923,9 @@ importers:
'@testing-library/vue':
specifier: 8.1.0
version: 8.1.0(@vue/compiler-sfc@3.5.11)(@vue/server-renderer@3.5.11(vue@3.5.11(typescript@5.6.2)))(vue@3.5.11(typescript@5.6.2))
+ '@types/canvas-confetti':
+ specifier: ^1.6.4
+ version: 1.6.4
'@types/estree':
specifier: 1.0.6
version: 1.0.6
@@ -1160,7 +1163,7 @@ importers:
version: 7.17.0(eslint@9.11.0)(typescript@5.6.2)
'@vitest/coverage-v8':
specifier: 1.6.0
- version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0))
+ version: 1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.4)(terser@5.33.0))
'@vue/runtime-core':
specifier: 3.5.11
version: 3.5.11
@@ -4588,6 +4591,9 @@ packages:
'@types/cacheable-request@6.0.3':
resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
+ '@types/canvas-confetti@1.6.4':
+ resolution: {integrity: sha512-fNyZ/Fdw/Y92X0vv7B+BD6ysHL4xVU5dJcgzgxLdGbn8O3PezZNIJpml44lKM0nsGur+o/6+NZbZeNTt00U1uA==}
+
'@types/color-convert@2.0.4':
resolution: {integrity: sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==}
@@ -15528,6 +15534,8 @@ snapshots:
'@types/node': 20.14.12
'@types/responselike': 1.0.0
+ '@types/canvas-confetti@1.6.4': {}
+
'@types/color-convert@2.0.4':
dependencies:
'@types/color-name': 1.1.1
@@ -15954,7 +15962,7 @@ snapshots:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
optionalDependencies:
typescript: 5.5.4
@@ -15967,7 +15975,7 @@ snapshots:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
optionalDependencies:
typescript: 5.6.2
@@ -15980,7 +15988,7 @@ snapshots:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.8.0
optionalDependencies:
typescript: 5.6.2
@@ -16001,7 +16009,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.1.0(typescript@5.3.3)
'@typescript-eslint/utils': 7.1.0(eslint@9.11.0)(typescript@5.3.3)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
ts-api-utils: 1.0.1(typescript@5.3.3)
optionalDependencies:
@@ -16013,7 +16021,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.5.4)
'@typescript-eslint/utils': 7.17.0(eslint@9.11.0)(typescript@5.5.4)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
ts-api-utils: 1.3.0(typescript@5.5.4)
optionalDependencies:
@@ -16025,7 +16033,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
'@typescript-eslint/utils': 7.17.0(eslint@9.11.0)(typescript@5.6.2)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
@@ -16037,7 +16045,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.17.0(typescript@5.6.2)
'@typescript-eslint/utils': 7.17.0(eslint@9.8.0)(typescript@5.6.2)
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.8.0
ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
@@ -16053,7 +16061,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.1.0
'@typescript-eslint/visitor-keys': 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@@ -16068,7 +16076,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.4
@@ -16083,7 +16091,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.17.0
'@typescript-eslint/visitor-keys': 7.17.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.4
@@ -16167,7 +16175,7 @@ snapshots:
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.4
@@ -16182,11 +16190,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0))':
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.4)(terser@5.33.0))':
dependencies:
'@ampproject/remapping': 2.2.1
'@bcoe/v8-coverage': 0.2.3
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.4
@@ -16197,7 +16205,7 @@ snapshots:
std-env: 3.7.0
strip-literal: 2.1.0
test-exclude: 6.0.0
- vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0)
+ vitest: 1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.4)(terser@5.33.0)
transitivePeerDependencies:
- supports-color
@@ -16507,7 +16515,7 @@ snapshots:
agent-base@7.1.0:
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -19479,7 +19487,7 @@ snapshots:
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -19518,7 +19526,7 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
optional: true
@@ -19526,14 +19534,14 @@ snapshots:
https-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
https-proxy-agent@7.0.5:
dependencies:
agent-base: 7.1.0
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
@@ -19906,7 +19914,7 @@ snapshots:
istanbul-lib-source-maps@5.0.4:
dependencies:
'@jridgewell/trace-mapping': 0.3.25
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
transitivePeerDependencies:
- supports-color
@@ -20307,35 +20315,6 @@ snapshots:
jsdoc-type-pratt-parser@4.1.0: {}
- jsdom@24.1.1:
- dependencies:
- cssstyle: 4.0.1
- data-urls: 5.0.0
- decimal.js: 10.4.3
- form-data: 4.0.0
- html-encoding-sniffer: 4.0.0
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
- is-potential-custom-element-name: 1.0.1
- nwsapi: 2.2.12
- parse5: 7.1.2
- rrweb-cssom: 0.7.1
- saxes: 6.0.0
- symbol-tree: 3.2.4
- tough-cookie: 4.1.4
- w3c-xmlserializer: 5.0.0
- webidl-conversions: 7.0.0
- whatwg-encoding: 3.1.1
- whatwg-mimetype: 4.0.0
- whatwg-url: 14.0.0
- ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)
- xml-name-validator: 5.0.0
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
- optional: true
-
jsdom@24.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3):
dependencies:
cssstyle: 4.0.1
@@ -22910,7 +22889,7 @@ snapshots:
dependencies:
'@hapi/hoek': 11.0.4
'@hapi/wreck': 18.0.1
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
joi: 17.11.0
transitivePeerDependencies:
- supports-color
@@ -23870,7 +23849,7 @@ snapshots:
vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0):
dependencies:
cac: 6.7.14
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
pathe: 1.1.2
picocolors: 1.0.1
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.3)(terser@5.33.0)
@@ -23888,7 +23867,7 @@ snapshots:
vite-node@1.6.0(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0):
dependencies:
cac: 6.7.14
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
pathe: 1.1.2
picocolors: 1.0.1
vite: 5.4.8(@types/node@20.14.12)(sass@1.79.4)(terser@5.33.0)
@@ -23970,7 +23949,7 @@ snapshots:
- supports-color
- terser
- vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1)(sass@1.79.4)(terser@5.33.0):
+ vitest@1.6.0(@types/node@20.14.12)(happy-dom@10.0.3)(jsdom@24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4))(sass@1.79.4)(terser@5.33.0):
dependencies:
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0
@@ -23995,7 +23974,7 @@ snapshots:
optionalDependencies:
'@types/node': 20.14.12
happy-dom: 10.0.3
- jsdom: 24.1.1
+ jsdom: 24.1.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)
transitivePeerDependencies:
- less
- lightningcss
@@ -24067,7 +24046,7 @@ snapshots:
vue-eslint-parser@9.4.3(eslint@9.11.0):
dependencies:
- debug: 4.3.5(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@5.5.0)
eslint: 9.11.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
From 2340de035b250330d7d37179dee3929e9472c29b Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Fri, 4 Oct 2024 17:32:36 +0900
Subject: [PATCH 061/194] New Crowdin updates (#14677)
* New translations ja-jp.yml (Chinese Traditional)
* New translations ja-jp.yml (Korean)
* New translations ja-jp.yml (Chinese Simplified)
* New translations ja-jp.yml (English)
* New translations ja-jp.yml (Chinese Traditional)
* New translations ja-jp.yml (Korean)
* New translations ja-jp.yml (Chinese Simplified)
* New translations ja-jp.yml (Chinese Simplified)
---
locales/en-US.yml | 5 +++++
locales/ko-KR.yml | 4 ++++
locales/zh-CN.yml | 5 +++++
locales/zh-TW.yml | 4 ++++
4 files changed, 18 insertions(+)
diff --git a/locales/en-US.yml b/locales/en-US.yml
index 7db3315f7d..7af6d65ea4 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -8,6 +8,9 @@ search: "Search"
notifications: "Notifications"
username: "Username"
password: "Password"
+initialPasswordForSetup: "Initial password for setup"
+initialPasswordIsIncorrect: "Initial password for setup is incorrect"
+initialPasswordForSetupDescription: "Use the password you entered in the configuration file if you installed Misskey yourself.\n If you are using a Misskey hosting service, use the password provided.\n If you have not set a password, leave it blank to continue."
forgotPassword: "Forgot password"
fetchingAsApObject: "Fetching from the Fediverse..."
ok: "OK"
@@ -1283,6 +1286,7 @@ signinWithPasskey: "Sign in with Passkey"
unknownWebAuthnKey: "Unknown Passkey"
passkeyVerificationFailed: "Passkey verification has failed."
passkeyVerificationSucceededButPasswordlessLoginDisabled: "Passkey verification has succeeded but password-less login is disabled."
+messageToFollower: "Message to followers"
_delivery:
status: "Delivery status"
stop: "Suspended"
@@ -2392,6 +2396,7 @@ _notification:
followedBySomeUsers: "Followed by {n} users"
flushNotification: "Clear notifications"
exportOfXCompleted: "Export of {x} has been completed"
+ login: "Someone logged in"
_types:
all: "All"
note: "New notes"
diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml
index 76ad982056..b85bc048e1 100644
--- a/locales/ko-KR.yml
+++ b/locales/ko-KR.yml
@@ -8,6 +8,9 @@ search: "검색"
notifications: "알림"
username: "유저명"
password: "비밀번호"
+initialPasswordForSetup: "초기 설정용 비밀번호"
+initialPasswordIsIncorrect: "초기 설정용 비밀번호가 올바르지 않습니다."
+initialPasswordForSetupDescription: "Misskey를 직접 설치하는 경우, 설정 파일에 입력해둔 비밀번호를 사용하세요.\nMisskey 설치를 도와주는 호스팅 서비스 등을 사용하는 경우, 서비스 제공자로부터 받은 비밀번호를 사용하세요.\n비밀번호를 따로 설정하지 않은 경우, 아무것도 입력하지 않아도 됩니다."
forgotPassword: "비밀번호 재설정"
fetchingAsApObject: "연합에서 찾아보는 중"
ok: "확인"
@@ -2393,6 +2396,7 @@ _notification:
followedBySomeUsers: "{n}명에게 팔로우됨"
flushNotification: "알림 이력을 초기화"
exportOfXCompleted: "{x} 추출에 성공했습니다."
+ login: "로그인 알림이 있습니다"
_types:
all: "전부"
note: "사용자의 새 글"
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index 7b2037d076..15f84e845d 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -8,6 +8,9 @@ search: "搜索"
notifications: "通知"
username: "用户名"
password: "密码"
+initialPasswordForSetup: "初始化密码"
+initialPasswordIsIncorrect: "初始化密码不正确"
+initialPasswordForSetupDescription: "如果是自己安装的 Misskey,请输入配置文件里设好的密码。\n如果使用的是 Misskey 的托管服务等,请输入服务商提供的密码。\n如果没有设置密码,请留空并继续。"
forgotPassword: "忘记密码"
fetchingAsApObject: "在联邦宇宙查询中..."
ok: "OK"
@@ -921,6 +924,7 @@ followersVisibility: "关注者的公开范围"
continueThread: "查看更多帖子"
deleteAccountConfirm: "将要删除账户。是否确认?"
incorrectPassword: "密码错误"
+incorrectTotp: "一次性密码不正确或已过期"
voteConfirm: "确定投给 “{choice}” ?"
hide: "隐藏"
useDrawerReactionPickerForMobile: "在移动设备上使用抽屉显示"
@@ -2393,6 +2397,7 @@ _notification:
followedBySomeUsers: "被 {n} 人关注"
flushNotification: "重置通知历史"
exportOfXCompleted: "已完成 {x} 个导出"
+ login: "有新的登录"
_types:
all: "全部"
note: "用户的新帖子"
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index f73bba6664..6659efcb7a 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -8,6 +8,9 @@ search: "搜尋"
notifications: "通知"
username: "使用者名稱"
password: "密碼"
+initialPasswordForSetup: "初始設定用的密碼"
+initialPasswordIsIncorrect: "初始設定用的密碼錯誤。"
+initialPasswordForSetupDescription: "如果您自己安裝了 Misskey,請使用您在設定檔中輸入的密碼。\n如果您使用 Misskey 的託管服務之類的服務,請使用提供的密碼。\n如果您尚未設定密碼,請將其留空並繼續。"
forgotPassword: "忘記密碼"
fetchingAsApObject: "從聯邦宇宙取得中..."
ok: "OK"
@@ -2393,6 +2396,7 @@ _notification:
followedBySomeUsers: "被{n}人追隨了"
flushNotification: "重置通知歷史紀錄"
exportOfXCompleted: "{x} 的匯出已完成。"
+ login: "已登入"
_types:
all: "全部 "
note: "使用者的最新貼文"
From 3d637af65b4f4fa7e557231aa9790bb87211b4e9 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
Date: Fri, 4 Oct 2024 08:41:30 +0000
Subject: [PATCH 062/194] Bump version to 2024.10.0-beta.4
---
package.json | 2 +-
packages/misskey-js/package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index fd919d866f..7c01180531 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "misskey",
- "version": "2024.10.0-beta.3",
+ "version": "2024.10.0-beta.4",
"codename": "nasubi",
"repository": {
"type": "git",
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index d9ee630faf..4643516b7b 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
- "version": "2024.10.0-beta.3",
+ "version": "2024.10.0-beta.4",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/index.js",
From b36d13d90ca7835f385cb744f2b6a94d05220d09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
<67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Fri, 4 Oct 2024 18:45:03 +0900
Subject: [PATCH 063/194] =?UTF-8?q?fix(frontend):=20=E3=83=AD=E3=82=B0?=
=?UTF-8?q?=E3=82=A4=E3=83=B3=E7=94=BB=E9=9D=A2=E3=81=A7=E3=82=AD=E3=83=A3?=
=?UTF-8?q?=E3=83=97=E3=83=81=E3=83=A3=E3=81=8C=E8=A1=A8=E7=A4=BA=E3=81=95?=
=?UTF-8?q?=E3=82=8C=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE?=
=?UTF-8?q?=E6=AD=A3=20(#14694)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix(frontend): ログイン画面でキャプチャが表示されない問題を修正
* rename
---
packages/frontend/src/components/MkSignin.vue | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue
index 81a98cae0e..03dd61f6c6 100644
--- a/packages/frontend/src/components/MkSignin.vue
+++ b/packages/frontend/src/components/MkSignin.vue
@@ -124,7 +124,7 @@ function onPasskeyLogin(): void {
page.value = 'passkey';
waiting.value = false;
})
- .catch(onLoginFailed);
+ .catch(onSigninApiError);
}
}
@@ -137,11 +137,11 @@ function onPasskeyDone(credential: AuthenticationPublicKeyCredential): void {
context: passkeyContext.value,
}).then((res) => {
if (res.signinResponse == null) {
- onLoginFailed();
+ onSigninApiError();
return;
}
emit('login', res.signinResponse);
- }).catch(onLoginFailed);
+ }).catch(onSigninApiError);
} else if (userInfo.value != null) {
tryLogin({
username: userInfo.value.username,
@@ -231,7 +231,7 @@ async function tryLogin(req: Partial): Promise {
- onLoginFailed(err);
+ onSigninApiError(err);
return Promise.reject(err);
});
}
@@ -242,16 +242,18 @@ async function onLoginSucceeded(res: Misskey.entities.SigninResponse) {
}
}
-function onLoginFailed(err?: any): void {
+function onSigninApiError(err?: any): void {
const id = err?.id ?? null;
if (typeof err === 'object' && 'next' in err) {
switch (err.next) {
case 'captcha': {
+ needCaptcha.value = true;
page.value = 'password';
break;
}
case 'password': {
+ needCaptcha.value = false;
page.value = 'password';
break;
}
@@ -365,6 +367,7 @@ function onLoginFailed(err?: any): void {
onBeforeUnmount(() => {
password.value = '';
+ needCaptcha.value = false;
userInfo.value = null;
});
From fa06c59eaee5b7efeabf081b8a380390a2a1cd83 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Fri, 4 Oct 2024 19:09:46 +0900
Subject: [PATCH 064/194] :art:
---
.../frontend/src/pages/settings/profile.vue | 39 +++++++------------
1 file changed, 15 insertions(+), 24 deletions(-)
diff --git a/packages/frontend/src/pages/settings/profile.vue b/packages/frontend/src/pages/settings/profile.vue
index 9e6cd04365..19c5d892de 100644
--- a/packages/frontend/src/pages/settings/profile.vue
+++ b/packages/frontend/src/pages/settings/profile.vue
@@ -46,14 +46,17 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._profile.metadataEdit }}
-
-
-
-
{{ i18n.ts.add }}
-
{{ i18n.ts.delete }}
-
{{ i18n.ts.rearrange }}
-
{{ i18n.ts.save }}
+
+
+ {{ i18n.ts.save }}
+ {{ i18n.ts.add }}
+ {{ i18n.ts.delete }}
+ {{ i18n.ts.rearrange }}
+
+
+
+
{{ i18n.ts._profile.verifiedLinkDescription }}
e.item.classList.remove('active')"
>
-
+
-
- {{ i18n.ts._profile.metadataLabel }}
+
-
- {{ i18n.ts._profile.metadataContent }}
+
-
-
{{ i18n.ts._profile.verifiedLinkDescription }}
{{ i18n.ts._profile.metadataDescription }}
@@ -310,19 +309,11 @@ definePageMetadata(() => ({
container-type: inline-size;
}
-.metadataMargin {
- margin-bottom: 1.5em;
-}
-
.fieldDragItem {
display: flex;
- padding-bottom: .75em;
+ padding: 10px;
align-items: flex-end;
- border-bottom: solid 0.5px var(--divider);
-
- &:last-child {
- border-bottom: 0;
- }
+ border-radius: 6px;
/* (drag button) 32px + (drag button margin) 8px + (input width) 200px * 2 + (input gap) 12px = 452px */
@container (max-width: 452px) {
From ae3c155490d9b5a574c45309744ba2a0cbe78932 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
<67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Sat, 5 Oct 2024 12:03:47 +0900
Subject: [PATCH 065/194] =?UTF-8?q?fix:=20signin=20=E3=81=AE=E8=B3=87?=
=?UTF-8?q?=E6=A0=BC=E6=83=85=E5=A0=B1=E3=81=8C=E8=B6=B3=E3=82=8A=E3=81=AA?=
=?UTF-8?q?=E3=81=84=E3=81=A0=E3=81=91=E3=81=AE=E5=A0=B4=E5=90=88=E3=81=AF?=
=?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=AB=E3=81=9B=E3=81=9A200?=
=?UTF-8?q?=E3=82=92=E8=BF=94=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=20(#1470?=
=?UTF-8?q?0)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix: signin の資格情報が足りないだけの場合はエラーにせず200を返すように
* run api extractor
* fix
* fix
* fix test
* /signin -> /signin-flow
* fix
* fix lint
* rename
* fix
* fix
---
cypress/e2e/basic.cy.ts | 2 +-
cypress/support/commands.ts | 2 +-
.../src/server/api/ApiServerService.ts | 2 +-
.../src/server/api/SigninApiService.ts | 66 ++---
.../backend/src/server/api/SigninService.ts | 6 +-
packages/backend/test/e2e/2fa.ts | 71 +++---
packages/backend/test/e2e/endpoints.ts | 8 +-
packages/frontend/src/components/MkSignin.vue | 236 +++++++++---------
.../src/components/MkSignupDialog.form.vue | 11 +-
.../src/components/MkSignupDialog.vue | 4 +-
packages/misskey-js/etc/misskey-js.api.md | 24 +-
packages/misskey-js/src/api.types.ts | 10 +-
packages/misskey-js/src/entities.ts | 22 +-
13 files changed, 230 insertions(+), 234 deletions(-)
diff --git a/cypress/e2e/basic.cy.ts b/cypress/e2e/basic.cy.ts
index c9d7e0a24a..d2efbf709c 100644
--- a/cypress/e2e/basic.cy.ts
+++ b/cypress/e2e/basic.cy.ts
@@ -120,7 +120,7 @@ describe('After user signup', () => {
it('signin', () => {
cy.visitHome();
- cy.intercept('POST', '/api/signin').as('signin');
+ cy.intercept('POST', '/api/signin-flow').as('signin');
cy.get('[data-cy-signin]').click();
diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts
index ed5cda31b0..197ff963ac 100644
--- a/cypress/support/commands.ts
+++ b/cypress/support/commands.ts
@@ -55,7 +55,7 @@ Cypress.Commands.add('registerUser', (username, password, isAdmin = false) => {
Cypress.Commands.add('login', (username, password) => {
cy.visitHome();
- cy.intercept('POST', '/api/signin').as('signin');
+ cy.intercept('POST', '/api/signin-flow').as('signin');
cy.get('[data-cy-signin]').click();
cy.get('[data-cy-signin-page-input]').should('be.visible', { timeout: 1000 });
diff --git a/packages/backend/src/server/api/ApiServerService.ts b/packages/backend/src/server/api/ApiServerService.ts
index 356e145681..6b760c258b 100644
--- a/packages/backend/src/server/api/ApiServerService.ts
+++ b/packages/backend/src/server/api/ApiServerService.ts
@@ -133,7 +133,7 @@ export class ApiServerService {
'turnstile-response'?: string;
'm-captcha-response'?: string;
};
- }>('/signin', (request, reply) => this.signinApiService.signin(request, reply));
+ }>('/signin-flow', (request, reply) => this.signinApiService.signin(request, reply));
fastify.post<{
Body: {
diff --git a/packages/backend/src/server/api/SigninApiService.ts b/packages/backend/src/server/api/SigninApiService.ts
index 81684beb3c..0d24ffa56a 100644
--- a/packages/backend/src/server/api/SigninApiService.ts
+++ b/packages/backend/src/server/api/SigninApiService.ts
@@ -5,8 +5,8 @@
import { Inject, Injectable } from '@nestjs/common';
import bcrypt from 'bcryptjs';
-import * as OTPAuth from 'otpauth';
import { IsNull } from 'typeorm';
+import * as Misskey from 'misskey-js';
import { DI } from '@/di-symbols.js';
import type {
MiMeta,
@@ -26,27 +26,9 @@ import { CaptchaService } from '@/core/CaptchaService.js';
import { FastifyReplyError } from '@/misc/fastify-reply-error.js';
import { RateLimiterService } from './RateLimiterService.js';
import { SigninService } from './SigninService.js';
-import type { AuthenticationResponseJSON, PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types';
+import type { AuthenticationResponseJSON } from '@simplewebauthn/types';
import type { FastifyReply, FastifyRequest } from 'fastify';
-/**
- * next を指定すると、次にクライアント側で行うべき処理を指定できる。
- *
- * - `captcha`: パスワードと、(有効になっている場合は)CAPTCHAを求める
- * - `password`: パスワードを求める
- * - `totp`: ワンタイムパスワードを求める
- * - `passkey`: WebAuthn認証を求める(WebAuthnに対応していないブラウザの場合はワンタイムパスワード)
- */
-
-type SigninErrorResponse = {
- id: string;
- next?: 'captcha' | 'password' | 'totp';
-} | {
- id: string;
- next: 'passkey';
- authRequest: PublicKeyCredentialRequestOptionsJSON;
-};
-
@Injectable()
export class SigninApiService {
constructor(
@@ -101,7 +83,7 @@ export class SigninApiService {
const password = body['password'];
const token = body['token'];
- function error(status: number, error: SigninErrorResponse) {
+ function error(status: number, error: { id: string }) {
reply.code(status);
return { error };
}
@@ -152,21 +134,17 @@ export class SigninApiService {
const securityKeysAvailable = await this.userSecurityKeysRepository.countBy({ userId: user.id }).then(result => result >= 1);
if (password == null) {
- reply.code(403);
+ reply.code(200);
if (profile.twoFactorEnabled) {
return {
- error: {
- id: '144ff4f8-bd6c-41bc-82c3-b672eb09efbf',
- next: 'password',
- },
- } satisfies { error: SigninErrorResponse };
+ finished: false,
+ next: 'password',
+ } satisfies Misskey.entities.SigninFlowResponse;
} else {
return {
- error: {
- id: '144ff4f8-bd6c-41bc-82c3-b672eb09efbf',
- next: 'captcha',
- },
- } satisfies { error: SigninErrorResponse };
+ finished: false,
+ next: 'captcha',
+ } satisfies Misskey.entities.SigninFlowResponse;
}
}
@@ -178,7 +156,7 @@ export class SigninApiService {
// Compare password
const same = await bcrypt.compare(password, profile.password!);
- const fail = async (status?: number, failure?: SigninErrorResponse) => {
+ const fail = async (status?: number, failure?: { id: string; }) => {
// Append signin history
await this.signinsRepository.insert({
id: this.idService.gen(),
@@ -268,27 +246,23 @@ export class SigninApiService {
const authRequest = await this.webAuthnService.initiateAuthentication(user.id);
- reply.code(403);
+ reply.code(200);
return {
- error: {
- id: '06e661b9-8146-4ae3-bde5-47138c0ae0c4',
- next: 'passkey',
- authRequest,
- },
- } satisfies { error: SigninErrorResponse };
+ finished: false,
+ next: 'passkey',
+ authRequest,
+ } satisfies Misskey.entities.SigninFlowResponse;
} else {
if (!same || !profile.twoFactorEnabled) {
return await fail(403, {
id: '932c904e-9460-45b7-9ce6-7ed33be7eb2c',
});
} else {
- reply.code(403);
+ reply.code(200);
return {
- error: {
- id: '144ff4f8-bd6c-41bc-82c3-b672eb09efbf',
- next: 'totp',
- },
- } satisfies { error: SigninErrorResponse };
+ finished: false,
+ next: 'totp',
+ } satisfies Misskey.entities.SigninFlowResponse;
}
}
// never get here
diff --git a/packages/backend/src/server/api/SigninService.ts b/packages/backend/src/server/api/SigninService.ts
index 4b041f373f..640356b50c 100644
--- a/packages/backend/src/server/api/SigninService.ts
+++ b/packages/backend/src/server/api/SigninService.ts
@@ -4,6 +4,7 @@
*/
import { Inject, Injectable } from '@nestjs/common';
+import * as Misskey from 'misskey-js';
import { DI } from '@/di-symbols.js';
import type { SigninsRepository, UserProfilesRepository } from '@/models/_.js';
import { IdService } from '@/core/IdService.js';
@@ -57,9 +58,10 @@ export class SigninService {
reply.code(200);
return {
+ finished: true,
id: user.id,
- i: user.token,
- };
+ i: user.token!,
+ } satisfies Misskey.entities.SigninFlowResponse;
}
}
diff --git a/packages/backend/test/e2e/2fa.ts b/packages/backend/test/e2e/2fa.ts
index 88c32b4346..48e1bababb 100644
--- a/packages/backend/test/e2e/2fa.ts
+++ b/packages/backend/test/e2e/2fa.ts
@@ -136,7 +136,7 @@ describe('2要素認証', () => {
keyName: string,
credentialId: Buffer,
requestOptions: PublicKeyCredentialRequestOptionsJSON,
- }): misskey.entities.SigninRequest => {
+ }): misskey.entities.SigninFlowRequest => {
// AuthenticatorAssertionResponse.authenticatorData
// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse/authenticatorData
const authenticatorData = Buffer.concat([
@@ -196,22 +196,21 @@ describe('2要素認証', () => {
}, alice);
assert.strictEqual(doneResponse.status, 200);
- const signinWithoutTokenResponse = await api('signin', {
+ const signinWithoutTokenResponse = await api('signin-flow', {
...signinParam(),
});
- assert.strictEqual(signinWithoutTokenResponse.status, 403);
+ assert.strictEqual(signinWithoutTokenResponse.status, 200);
assert.deepStrictEqual(signinWithoutTokenResponse.body, {
- error: {
- id: '144ff4f8-bd6c-41bc-82c3-b672eb09efbf',
- next: 'totp',
- },
+ finished: false,
+ next: 'totp',
});
- const signinResponse = await api('signin', {
+ const signinResponse = await api('signin-flow', {
...signinParam(),
token: otpToken(registerResponse.body.secret),
});
assert.strictEqual(signinResponse.status, 200);
+ assert.strictEqual(signinResponse.body.finished, true);
assert.notEqual(signinResponse.body.i, undefined);
// 後片付け
@@ -252,29 +251,23 @@ describe('2要素認証', () => {
assert.strictEqual(keyDoneResponse.body.id, credentialId.toString('base64url'));
assert.strictEqual(keyDoneResponse.body.name, keyName);
- const signinResponse = await api('signin', {
+ const signinResponse = await api('signin-flow', {
...signinParam(),
});
- const signinResponseBody = signinResponse.body as unknown as {
- error: {
- id: string;
- next: 'passkey';
- authRequest: PublicKeyCredentialRequestOptionsJSON;
- };
- };
- assert.strictEqual(signinResponse.status, 403);
- assert.strictEqual(signinResponseBody.error.id, '06e661b9-8146-4ae3-bde5-47138c0ae0c4');
- assert.strictEqual(signinResponseBody.error.next, 'passkey');
- assert.notEqual(signinResponseBody.error.authRequest.challenge, undefined);
- assert.notEqual(signinResponseBody.error.authRequest.allowCredentials, undefined);
- assert.strictEqual(signinResponseBody.error.authRequest.allowCredentials && signinResponseBody.error.authRequest.allowCredentials[0]?.id, credentialId.toString('base64url'));
+ assert.strictEqual(signinResponse.status, 200);
+ assert.strictEqual(signinResponse.body.finished, false);
+ assert.strictEqual(signinResponse.body.next, 'passkey');
+ assert.notEqual(signinResponse.body.authRequest.challenge, undefined);
+ assert.notEqual(signinResponse.body.authRequest.allowCredentials, undefined);
+ assert.strictEqual(signinResponse.body.authRequest.allowCredentials && signinResponse.body.authRequest.allowCredentials[0]?.id, credentialId.toString('base64url'));
- const signinResponse2 = await api('signin', signinWithSecurityKeyParam({
+ const signinResponse2 = await api('signin-flow', signinWithSecurityKeyParam({
keyName,
credentialId,
- requestOptions: signinResponseBody.error.authRequest,
+ requestOptions: signinResponse.body.authRequest,
}));
assert.strictEqual(signinResponse2.status, 200);
+ assert.strictEqual(signinResponse2.body.finished, true);
assert.notEqual(signinResponse2.body.i, undefined);
// 後片付け
@@ -320,32 +313,26 @@ describe('2要素認証', () => {
assert.strictEqual(iResponse.status, 200);
assert.strictEqual(iResponse.body.usePasswordLessLogin, true);
- const signinResponse = await api('signin', {
+ const signinResponse = await api('signin-flow', {
...signinParam(),
password: '',
});
- const signinResponseBody = signinResponse.body as unknown as {
- error: {
- id: string;
- next: 'passkey';
- authRequest: PublicKeyCredentialRequestOptionsJSON;
- };
- };
- assert.strictEqual(signinResponse.status, 403);
- assert.strictEqual(signinResponseBody.error.id, '06e661b9-8146-4ae3-bde5-47138c0ae0c4');
- assert.strictEqual(signinResponseBody.error.next, 'passkey');
- assert.notEqual(signinResponseBody.error.authRequest.challenge, undefined);
- assert.notEqual(signinResponseBody.error.authRequest.allowCredentials, undefined);
+ assert.strictEqual(signinResponse.status, 200);
+ assert.strictEqual(signinResponse.body.finished, false);
+ assert.strictEqual(signinResponse.body.next, 'passkey');
+ assert.notEqual(signinResponse.body.authRequest.challenge, undefined);
+ assert.notEqual(signinResponse.body.authRequest.allowCredentials, undefined);
- const signinResponse2 = await api('signin', {
+ const signinResponse2 = await api('signin-flow', {
...signinWithSecurityKeyParam({
keyName,
credentialId,
- requestOptions: signinResponseBody.error.authRequest,
+ requestOptions: signinResponse.body.authRequest,
} as any),
password: '',
});
assert.strictEqual(signinResponse2.status, 200);
+ assert.strictEqual(signinResponse2.body.finished, true);
assert.notEqual(signinResponse2.body.i, undefined);
// 後片付け
@@ -450,11 +437,12 @@ describe('2要素認証', () => {
assert.strictEqual(afterIResponse.status, 200);
assert.strictEqual(afterIResponse.body.securityKeys, false);
- const signinResponse = await api('signin', {
+ const signinResponse = await api('signin-flow', {
...signinParam(),
token: otpToken(registerResponse.body.secret),
});
assert.strictEqual(signinResponse.status, 200);
+ assert.strictEqual(signinResponse.body.finished, true);
assert.notEqual(signinResponse.body.i, undefined);
// 後片付け
@@ -485,10 +473,11 @@ describe('2要素認証', () => {
}, alice);
assert.strictEqual(unregisterResponse.status, 204);
- const signinResponse = await api('signin', {
+ const signinResponse = await api('signin-flow', {
...signinParam(),
});
assert.strictEqual(signinResponse.status, 200);
+ assert.strictEqual(signinResponse.body.finished, true);
assert.notEqual(signinResponse.body.i, undefined);
// 後片付け
diff --git a/packages/backend/test/e2e/endpoints.ts b/packages/backend/test/e2e/endpoints.ts
index 5aaec7f6f9..b91d77c398 100644
--- a/packages/backend/test/e2e/endpoints.ts
+++ b/packages/backend/test/e2e/endpoints.ts
@@ -66,9 +66,9 @@ describe('Endpoints', () => {
});
});
- describe('signin', () => {
+ describe('signin-flow', () => {
test('間違ったパスワードでサインインできない', async () => {
- const res = await api('signin', {
+ const res = await api('signin-flow', {
username: 'test1',
password: 'bar',
});
@@ -77,7 +77,7 @@ describe('Endpoints', () => {
});
test('クエリをインジェクションできない', async () => {
- const res = await api('signin', {
+ const res = await api('signin-flow', {
username: 'test1',
// @ts-expect-error password must be string
password: {
@@ -89,7 +89,7 @@ describe('Endpoints', () => {
});
test('正しい情報でサインインできる', async () => {
- const res = await api('signin', {
+ const res = await api('signin-flow', {
username: 'test1',
password: 'test1',
});
diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue
index 03dd61f6c6..26e1ac516c 100644
--- a/packages/frontend/src/components/MkSignin.vue
+++ b/packages/frontend/src/components/MkSignin.vue
@@ -83,7 +83,7 @@ import type { AuthenticationPublicKeyCredential } from '@github/webauthn-json/br
import type { OpenOnRemoteOptions } from '@/scripts/please-login.js';
const emit = defineEmits<{
- (ev: 'login', v: Misskey.entities.SigninResponse): void;
+ (ev: 'login', v: Misskey.entities.SigninFlowResponse): void;
}>();
const props = withDefaults(defineProps<{
@@ -212,23 +212,63 @@ async function onTotpSubmitted(token: string) {
}
}
-async function tryLogin(req: Partial): Promise {
+async function tryLogin(req: Partial): Promise {
const _req = {
username: req.username ?? userInfo.value?.username,
...req,
};
- function assertIsSigninRequest(x: Partial): x is Misskey.entities.SigninRequest {
+ function assertIsSigninFlowRequest(x: Partial): x is Misskey.entities.SigninFlowRequest {
return x.username != null;
}
- if (!assertIsSigninRequest(_req)) {
+ if (!assertIsSigninFlowRequest(_req)) {
throw new Error('Invalid request');
}
- return await misskeyApi('signin', _req).then(async (res) => {
- emit('login', res);
- await onLoginSucceeded(res);
+ return await misskeyApi('signin-flow', _req).then(async (res) => {
+ if (res.finished) {
+ emit('login', res);
+ await onLoginSucceeded(res);
+ } else {
+ switch (res.next) {
+ case 'captcha': {
+ needCaptcha.value = true;
+ page.value = 'password';
+ break;
+ }
+ case 'password': {
+ needCaptcha.value = false;
+ page.value = 'password';
+ break;
+ }
+ case 'totp': {
+ page.value = 'totp';
+ break;
+ }
+ case 'passkey': {
+ if (webAuthnSupported()) {
+ credentialRequest.value = parseRequestOptionsFromJSON({
+ publicKey: res.authRequest,
+ });
+ page.value = 'passkey';
+ } else {
+ page.value = 'totp';
+ }
+ break;
+ }
+ }
+
+ if (doingPasskeyFromInputPage.value === true) {
+ doingPasskeyFromInputPage.value = false;
+ page.value = 'input';
+ password.value = '';
+ }
+ passwordPageEl.value?.resetCaptcha();
+ nextTick(() => {
+ waiting.value = false;
+ });
+ }
return res;
}).catch((err) => {
onSigninApiError(err);
@@ -236,7 +276,7 @@ async function tryLogin(req: Partial): Promise();
@@ -269,14 +269,19 @@ async function onSubmit(): Promise {
});
emit('signupEmailPending');
} else {
- const res = await misskeyApi('signin', {
+ const res = await misskeyApi('signin-flow', {
username: username.value,
password: password.value,
});
emit('signup', res);
- if (props.autoSet) {
+ if (props.autoSet && res.finished) {
return login(res.i);
+ } else {
+ os.alert({
+ type: 'error',
+ text: i18n.ts.somethingHappened,
+ });
}
}
} catch {
diff --git a/packages/frontend/src/components/MkSignupDialog.vue b/packages/frontend/src/components/MkSignupDialog.vue
index 97310d32a6..4cccd99492 100644
--- a/packages/frontend/src/components/MkSignupDialog.vue
+++ b/packages/frontend/src/components/MkSignupDialog.vue
@@ -47,7 +47,7 @@ const props = withDefaults(defineProps<{
});
const emit = defineEmits<{
- (ev: 'done', res: Misskey.entities.SigninResponse): void;
+ (ev: 'done', res: Misskey.entities.SigninFlowResponse): void;
(ev: 'closed'): void;
}>();
@@ -55,7 +55,7 @@ const dialog = shallowRef>();
const isAcceptedServerRule = ref(false);
-function onSignup(res: Misskey.entities.SigninResponse) {
+function onSignup(res: Misskey.entities.SigninFlowResponse) {
emit('done', res);
dialog.value?.close();
}
diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md
index 9ad784c296..732352abd8 100644
--- a/packages/misskey-js/etc/misskey-js.api.md
+++ b/packages/misskey-js/etc/misskey-js.api.md
@@ -1158,9 +1158,9 @@ export type Endpoints = Overwrite> = T[keyof T];
From 88698462a91e0fe15501a44f923a812d169bb030 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8A=E3=81=95=E3=82=80=E3=81=AE=E3=81=B2=E3=81=A8?=
<46447427+samunohito@users.noreply.github.com>
Date: Sat, 5 Oct 2024 12:51:46 +0900
Subject: [PATCH 066/194] =?UTF-8?q?feat(backend):=20=E9=80=9A=E5=A0=B1?=
=?UTF-8?q?=E3=81=8A=E3=82=88=E3=81=B3=E9=80=9A=E5=A0=B1=E8=A7=A3=E6=B1=BA?=
=?UTF-8?q?=E6=99=82=E3=81=AB=E9=80=81=E5=87=BA=E3=81=95=E3=82=8C=E3=82=8B?=
=?UTF-8?q?SystemWebhook=E3=81=AB=E3=83=A6=E3=83=BC=E3=82=B6=E6=83=85?=
=?UTF-8?q?=E5=A0=B1=E3=82=92=E5=90=AB=E3=82=81=E3=82=8B=E3=82=88=E3=81=86?=
=?UTF-8?q?=E3=81=AB=E3=81=99=E3=82=8B=20(#14698)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat(backend): 通報および通報解決時に送出されるSystemWebhookにユーザ情報を含めるようにする
* テスト送信もペイロード形式を合わせる
* add spaces
* fix test
---
CHANGELOG.md | 2 +-
.../core/AbuseReportNotificationService.ts | 24 ++++++++++++++++++-
.../backend/src/core/WebhookTestService.ts | 20 +++++++++++++---
.../unit/AbuseReportNotificationService.ts | 6 ++++-
4 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a31be063f0..04acc11ac3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,7 +21,7 @@
### Server
- Enhance: セキュリティ向上のため、ログイン時にメール通知を行うように
- Enhance: 自分とモデレーター以外のユーザーから二要素認証関連のデータが取得できないように
-
+- Enhance: 通報および通報解決時に送出されるSystemWebhookにユーザ情報を含めるように ( #14697 )
## 2024.9.0
diff --git a/packages/backend/src/core/AbuseReportNotificationService.ts b/packages/backend/src/core/AbuseReportNotificationService.ts
index fe2c63e7d6..fb7c7bd2c3 100644
--- a/packages/backend/src/core/AbuseReportNotificationService.ts
+++ b/packages/backend/src/core/AbuseReportNotificationService.ts
@@ -22,6 +22,7 @@ import { RoleService } from '@/core/RoleService.js';
import { RecipientMethod } from '@/models/AbuseReportNotificationRecipient.js';
import { ModerationLogService } from '@/core/ModerationLogService.js';
import { SystemWebhookService } from '@/core/SystemWebhookService.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { IdService } from './IdService.js';
@Injectable()
@@ -42,6 +43,7 @@ export class AbuseReportNotificationService implements OnApplicationShutdown {
private emailService: EmailService,
private moderationLogService: ModerationLogService,
private globalEventService: GlobalEventService,
+ private userEntityService: UserEntityService,
) {
this.redisForSub.on('message', this.onMessage);
}
@@ -135,6 +137,26 @@ export class AbuseReportNotificationService implements OnApplicationShutdown {
return;
}
+ const usersMap = await this.userEntityService.packMany(
+ [
+ ...new Set([
+ ...abuseReports.map(it => it.reporter ?? it.reporterId),
+ ...abuseReports.map(it => it.targetUser ?? it.targetUserId),
+ ...abuseReports.map(it => it.assignee ?? it.assigneeId),
+ ].filter(x => x != null)),
+ ],
+ null,
+ { schema: 'UserLite' },
+ ).then(it => new Map(it.map(it => [it.id, it])));
+ const convertedReports = abuseReports.map(it => {
+ return {
+ ...it,
+ reporter: usersMap.get(it.reporterId),
+ targetUser: usersMap.get(it.targetUserId),
+ assignee: it.assigneeId ? usersMap.get(it.assigneeId) : null,
+ };
+ });
+
const recipientWebhookIds = await this.fetchWebhookRecipients()
.then(it => it
.filter(it => it.isActive && it.systemWebhookId && it.method === 'webhook')
@@ -142,7 +164,7 @@ export class AbuseReportNotificationService implements OnApplicationShutdown {
.filter(x => x != null));
for (const webhookId of recipientWebhookIds) {
await Promise.all(
- abuseReports.map(it => {
+ convertedReports.map(it => {
return this.systemWebhookService.enqueueSystemWebhook(
webhookId,
type,
diff --git a/packages/backend/src/core/WebhookTestService.ts b/packages/backend/src/core/WebhookTestService.ts
index c2764f30e8..149c753d4c 100644
--- a/packages/backend/src/core/WebhookTestService.ts
+++ b/packages/backend/src/core/WebhookTestService.ts
@@ -15,8 +15,14 @@ import { QueueService } from '@/core/QueueService.js';
const oneDayMillis = 24 * 60 * 60 * 1000;
-function generateAbuseReport(override?: Partial): MiAbuseUserReport {
- return {
+type AbuseUserReportDto = Omit & {
+ targetUser: Packed<'UserLite'> | null,
+ reporter: Packed<'UserLite'> | null,
+ assignee: Packed<'UserLite'> | null,
+};
+
+function generateAbuseReport(override?: Partial): AbuseUserReportDto {
+ const result: MiAbuseUserReport = {
id: 'dummy-abuse-report1',
targetUserId: 'dummy-target-user',
targetUser: null,
@@ -31,6 +37,13 @@ function generateAbuseReport(override?: Partial): MiAbuseUser
reporterHost: null,
...override,
};
+
+ return {
+ ...result,
+ targetUser: result.targetUser ? toPackedUserLite(result.targetUser) : null,
+ reporter: result.reporter ? toPackedUserLite(result.reporter) : null,
+ assignee: result.assignee ? toPackedUserLite(result.assignee) : null,
+ };
}
function generateDummyUser(override?: Partial): MiUser {
@@ -268,7 +281,8 @@ const dummyUser3 = generateDummyUser({
@Injectable()
export class WebhookTestService {
- public static NoSuchWebhookError = class extends Error {};
+ public static NoSuchWebhookError = class extends Error {
+ };
constructor(
private userWebhookService: UserWebhookService,
diff --git a/packages/backend/test/unit/AbuseReportNotificationService.ts b/packages/backend/test/unit/AbuseReportNotificationService.ts
index e971659070..235af29f0d 100644
--- a/packages/backend/test/unit/AbuseReportNotificationService.ts
+++ b/packages/backend/test/unit/AbuseReportNotificationService.ts
@@ -5,6 +5,7 @@
import { jest } from '@jest/globals';
import { Test, TestingModule } from '@nestjs/testing';
+import { randomString } from '../utils.js';
import { AbuseReportNotificationService } from '@/core/AbuseReportNotificationService.js';
import {
AbuseReportNotificationRecipientRepository,
@@ -25,7 +26,7 @@ import { ModerationLogService } from '@/core/ModerationLogService.js';
import { GlobalEventService } from '@/core/GlobalEventService.js';
import { RecipientMethod } from '@/models/AbuseReportNotificationRecipient.js';
import { SystemWebhookService } from '@/core/SystemWebhookService.js';
-import { randomString } from '../utils.js';
+import { UserEntityService } from '@/core/entities/UserEntityService.js';
process.env.NODE_ENV = 'test';
@@ -110,6 +111,9 @@ describe('AbuseReportNotificationService', () => {
{
provide: SystemWebhookService, useFactory: () => ({ enqueueSystemWebhook: jest.fn() }),
},
+ {
+ provide: UserEntityService, useFactory: () => ({ pack: (v: any) => v }),
+ },
{
provide: EmailService, useFactory: () => ({ sendEmail: jest.fn() }),
},
From d8bf1ff7e9ab4d39b2e924bf7eae010e9b9e21f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
<67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Sat, 5 Oct 2024 13:47:50 +0900
Subject: [PATCH 067/194] =?UTF-8?q?#14675=20=E3=83=AC=E3=83=93=E3=83=A5?=
=?UTF-8?q?=E3=83=BC=E3=81=AE=E4=BF=AE=E6=AD=A3=20(#14705)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/backend/src/server/api/ApiServerService.ts | 2 +-
packages/frontend/src/components/MkFukidashi.vue | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/packages/backend/src/server/api/ApiServerService.ts b/packages/backend/src/server/api/ApiServerService.ts
index 6b760c258b..be63635efe 100644
--- a/packages/backend/src/server/api/ApiServerService.ts
+++ b/packages/backend/src/server/api/ApiServerService.ts
@@ -125,7 +125,7 @@ export class ApiServerService {
fastify.post<{
Body: {
username: string;
- password: string;
+ password?: string;
token?: string;
credential?: AuthenticationResponseJSON;
'hcaptcha-response'?: string;
diff --git a/packages/frontend/src/components/MkFukidashi.vue b/packages/frontend/src/components/MkFukidashi.vue
index ba82eb442f..09825487bf 100644
--- a/packages/frontend/src/components/MkFukidashi.vue
+++ b/packages/frontend/src/components/MkFukidashi.vue
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:class="[
$style.root,
tail === 'left' ? $style.left : $style.right,
- negativeMargin === true && $style.negativeMergin,
+ negativeMargin === true && $style.negativeMargin,
shadow === true && $style.shadow,
]"
>
@@ -54,7 +54,7 @@ withDefaults(defineProps<{
&.left {
padding-left: calc(var(--fukidashi-radius) * .13);
- &.negativeMergin {
+ &.negativeMargin {
margin-left: calc(calc(var(--fukidashi-radius) * .13) * -1);
}
}
@@ -62,7 +62,7 @@ withDefaults(defineProps<{
&.right {
padding-right: calc(var(--fukidashi-radius) * .13);
- &.negativeMergin {
+ &.negativeMargin {
margin-right: calc(calc(var(--fukidashi-radius) * .13) * -1);
}
}
From 0d7d1091c8970d9979e8efb02f0accd6dcd39422 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8A=E3=81=95=E3=82=80=E3=81=AE=E3=81=B2=E3=81=A8?=
<46447427+samunohito@users.noreply.github.com>
Date: Sat, 5 Oct 2024 14:37:52 +0900
Subject: [PATCH 068/194] =?UTF-8?q?enhance:=20=E4=BA=BA=E6=B0=97=E3=81=AEP?=
=?UTF-8?q?lay=E3=82=9210=E4=BB=B6=E4=BB=A5=E4=B8=8A=E8=A1=A8=E7=A4=BA?=
=?UTF-8?q?=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=20(#1444?=
=?UTF-8?q?3)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: osamu <46447427+sam-osamu@users.noreply.github.com>
---
CHANGELOG.md | 1 +
packages/backend/src/core/CoreModule.ts | 5 +
packages/backend/src/core/FlashService.ts | 40 +++++
.../src/core/entities/FlashEntityService.ts | 41 +++--
packages/backend/src/models/Flash.ts | 5 +-
.../server/api/endpoints/flash/featured.ts | 22 +--
packages/backend/test/unit/FlashService.ts | 152 ++++++++++++++++++
.../frontend/src/pages/flash/flash-index.vue | 3 +-
packages/misskey-js/etc/misskey-js.api.md | 4 +
packages/misskey-js/src/autogen/endpoint.ts | 3 +-
packages/misskey-js/src/autogen/entities.ts | 1 +
packages/misskey-js/src/autogen/types.ts | 10 ++
12 files changed, 262 insertions(+), 25 deletions(-)
create mode 100644 packages/backend/src/core/FlashService.ts
create mode 100644 packages/backend/test/unit/FlashService.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 04acc11ac3..6a9143ea1b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,7 @@
- Enhance: セキュリティ向上のため、サインイン時もCAPTCHAを求めるようになりました
- Enhance: 依存関係の更新
- Enhance: l10nの更新
+- Enhance: Playの「人気」タブで10件以上表示可能に #14399
- Fix: 連合のホワイトリストが正常に登録されない問題を修正
### Client
diff --git a/packages/backend/src/core/CoreModule.ts b/packages/backend/src/core/CoreModule.ts
index 3b3c35f976..734d135648 100644
--- a/packages/backend/src/core/CoreModule.ts
+++ b/packages/backend/src/core/CoreModule.ts
@@ -14,6 +14,7 @@ import { AbuseReportNotificationService } from '@/core/AbuseReportNotificationSe
import { SystemWebhookService } from '@/core/SystemWebhookService.js';
import { UserSearchService } from '@/core/UserSearchService.js';
import { WebhookTestService } from '@/core/WebhookTestService.js';
+import { FlashService } from '@/core/FlashService.js';
import { AccountMoveService } from './AccountMoveService.js';
import { AccountUpdateService } from './AccountUpdateService.js';
import { AiService } from './AiService.js';
@@ -217,6 +218,7 @@ const $SystemWebhookService: Provider = { provide: 'SystemWebhookService', useEx
const $WebhookTestService: Provider = { provide: 'WebhookTestService', useExisting: WebhookTestService };
const $UtilityService: Provider = { provide: 'UtilityService', useExisting: UtilityService };
const $FileInfoService: Provider = { provide: 'FileInfoService', useExisting: FileInfoService };
+const $FlashService: Provider = { provide: 'FlashService', useExisting: FlashService };
const $SearchService: Provider = { provide: 'SearchService', useExisting: SearchService };
const $ClipService: Provider = { provide: 'ClipService', useExisting: ClipService };
const $FeaturedService: Provider = { provide: 'FeaturedService', useExisting: FeaturedService };
@@ -367,6 +369,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
WebhookTestService,
UtilityService,
FileInfoService,
+ FlashService,
SearchService,
ClipService,
FeaturedService,
@@ -513,6 +516,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
$WebhookTestService,
$UtilityService,
$FileInfoService,
+ $FlashService,
$SearchService,
$ClipService,
$FeaturedService,
@@ -660,6 +664,7 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting
WebhookTestService,
UtilityService,
FileInfoService,
+ FlashService,
SearchService,
ClipService,
FeaturedService,
diff --git a/packages/backend/src/core/FlashService.ts b/packages/backend/src/core/FlashService.ts
new file mode 100644
index 0000000000..2a98225382
--- /dev/null
+++ b/packages/backend/src/core/FlashService.ts
@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Inject, Injectable } from '@nestjs/common';
+import { DI } from '@/di-symbols.js';
+import { type FlashsRepository } from '@/models/_.js';
+
+/**
+ * MisskeyPlay関係のService
+ */
+@Injectable()
+export class FlashService {
+ constructor(
+ @Inject(DI.flashsRepository)
+ private flashRepository: FlashsRepository,
+ ) {
+ }
+
+ /**
+ * 人気のあるPlay一覧を取得する.
+ */
+ public async featured(opts?: { offset?: number, limit: number }) {
+ const builder = this.flashRepository.createQueryBuilder('flash')
+ .andWhere('flash.likedCount > 0')
+ .andWhere('flash.visibility = :visibility', { visibility: 'public' })
+ .addOrderBy('flash.likedCount', 'DESC')
+ .addOrderBy('flash.updatedAt', 'DESC')
+ .addOrderBy('flash.id', 'DESC');
+
+ if (opts?.offset) {
+ builder.skip(opts.offset);
+ }
+
+ builder.take(opts?.limit ?? 10);
+
+ return await builder.getMany();
+ }
+}
diff --git a/packages/backend/src/core/entities/FlashEntityService.ts b/packages/backend/src/core/entities/FlashEntityService.ts
index 4aa7104c1e..0cdcf3310a 100644
--- a/packages/backend/src/core/entities/FlashEntityService.ts
+++ b/packages/backend/src/core/entities/FlashEntityService.ts
@@ -5,10 +5,8 @@
import { Inject, Injectable } from '@nestjs/common';
import { DI } from '@/di-symbols.js';
-import type { FlashsRepository, FlashLikesRepository } from '@/models/_.js';
-import { awaitAll } from '@/misc/prelude/await-all.js';
+import type { FlashLikesRepository, FlashsRepository } from '@/models/_.js';
import type { Packed } from '@/misc/json-schema.js';
-import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import type { MiFlash } from '@/models/Flash.js';
import { bindThis } from '@/decorators.js';
@@ -20,10 +18,8 @@ export class FlashEntityService {
constructor(
@Inject(DI.flashsRepository)
private flashsRepository: FlashsRepository,
-
@Inject(DI.flashLikesRepository)
private flashLikesRepository: FlashLikesRepository,
-
private userEntityService: UserEntityService,
private idService: IdService,
) {
@@ -34,25 +30,36 @@ export class FlashEntityService {
src: MiFlash['id'] | MiFlash,
me?: { id: MiUser['id'] } | null | undefined,
hint?: {
- packedUser?: Packed<'UserLite'>
+ packedUser?: Packed<'UserLite'>,
+ likedFlashIds?: MiFlash['id'][],
},
): Promise> {
const meId = me ? me.id : null;
const flash = typeof src === 'object' ? src : await this.flashsRepository.findOneByOrFail({ id: src });
- return await awaitAll({
+ // { schema: 'UserDetailed' } すると無限ループするので注意
+ const user = hint?.packedUser ?? await this.userEntityService.pack(flash.user ?? flash.userId, me);
+
+ let isLiked = false;
+ if (meId) {
+ isLiked = hint?.likedFlashIds
+ ? hint.likedFlashIds.includes(flash.id)
+ : await this.flashLikesRepository.exists({ where: { flashId: flash.id, userId: meId } });
+ }
+
+ return {
id: flash.id,
createdAt: this.idService.parse(flash.id).date.toISOString(),
updatedAt: flash.updatedAt.toISOString(),
userId: flash.userId,
- user: hint?.packedUser ?? this.userEntityService.pack(flash.user ?? flash.userId, me), // { schema: 'UserDetailed' } すると無限ループするので注意
+ user: user,
title: flash.title,
summary: flash.summary,
script: flash.script,
visibility: flash.visibility,
likedCount: flash.likedCount,
- isLiked: meId ? await this.flashLikesRepository.exists({ where: { flashId: flash.id, userId: meId } }) : undefined,
- });
+ isLiked: isLiked,
+ };
}
@bindThis
@@ -63,7 +70,19 @@ export class FlashEntityService {
const _users = flashes.map(({ user, userId }) => user ?? userId);
const _userMap = await this.userEntityService.packMany(_users, me)
.then(users => new Map(users.map(u => [u.id, u])));
- return Promise.all(flashes.map(flash => this.pack(flash, me, { packedUser: _userMap.get(flash.userId) })));
+ const _likedFlashIds = me
+ ? await this.flashLikesRepository.createQueryBuilder('flashLike')
+ .select('flashLike.flashId')
+ .where('flashLike.userId = :userId', { userId: me.id })
+ .getRawMany<{ flashLike_flashId: string }>()
+ .then(likes => [...new Set(likes.map(like => like.flashLike_flashId))])
+ : [];
+ return Promise.all(
+ flashes.map(flash => this.pack(flash, me, {
+ packedUser: _userMap.get(flash.userId),
+ likedFlashIds: _likedFlashIds,
+ })),
+ );
}
}
diff --git a/packages/backend/src/models/Flash.ts b/packages/backend/src/models/Flash.ts
index a1469a0d94..5db7dca992 100644
--- a/packages/backend/src/models/Flash.ts
+++ b/packages/backend/src/models/Flash.ts
@@ -7,6 +7,9 @@ import { Entity, Index, JoinColumn, Column, PrimaryColumn, ManyToOne } from 'typ
import { id } from './util/id.js';
import { MiUser } from './User.js';
+export const flashVisibility = ['public', 'private'] as const;
+export type FlashVisibility = typeof flashVisibility[number];
+
@Entity('flash')
export class MiFlash {
@PrimaryColumn(id())
@@ -63,5 +66,5 @@ export class MiFlash {
@Column('varchar', {
length: 512, default: 'public',
})
- public visibility: 'public' | 'private';
+ public visibility: FlashVisibility;
}
diff --git a/packages/backend/src/server/api/endpoints/flash/featured.ts b/packages/backend/src/server/api/endpoints/flash/featured.ts
index c2d6ab5085..9a0cb461f2 100644
--- a/packages/backend/src/server/api/endpoints/flash/featured.ts
+++ b/packages/backend/src/server/api/endpoints/flash/featured.ts
@@ -8,6 +8,7 @@ import type { FlashsRepository } from '@/models/_.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { FlashEntityService } from '@/core/entities/FlashEntityService.js';
import { DI } from '@/di-symbols.js';
+import { FlashService } from '@/core/FlashService.js';
export const meta = {
tags: ['flash'],
@@ -27,26 +28,25 @@ export const meta = {
export const paramDef = {
type: 'object',
- properties: {},
+ properties: {
+ offset: { type: 'integer', minimum: 0, default: 0 },
+ limit: { type: 'integer', minimum: 1, maximum: 100, default: 10 },
+ },
required: [],
} as const;
@Injectable()
export default class extends Endpoint { // eslint-disable-line import/no-default-export
constructor(
- @Inject(DI.flashsRepository)
- private flashsRepository: FlashsRepository,
-
+ private flashService: FlashService,
private flashEntityService: FlashEntityService,
) {
super(meta, paramDef, async (ps, me) => {
- const query = this.flashsRepository.createQueryBuilder('flash')
- .andWhere('flash.likedCount > 0')
- .orderBy('flash.likedCount', 'DESC');
-
- const flashs = await query.limit(10).getMany();
-
- return await this.flashEntityService.packMany(flashs, me);
+ const result = await this.flashService.featured({
+ offset: ps.offset,
+ limit: ps.limit,
+ });
+ return await this.flashEntityService.packMany(result, me);
});
}
}
diff --git a/packages/backend/test/unit/FlashService.ts b/packages/backend/test/unit/FlashService.ts
new file mode 100644
index 0000000000..12ffaf3421
--- /dev/null
+++ b/packages/backend/test/unit/FlashService.ts
@@ -0,0 +1,152 @@
+/* eslint-disable @typescript-eslint/no-unused-vars */
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Test, TestingModule } from '@nestjs/testing';
+import { FlashService } from '@/core/FlashService.js';
+import { IdService } from '@/core/IdService.js';
+import { FlashsRepository, MiFlash, MiUser, UserProfilesRepository, UsersRepository } from '@/models/_.js';
+import { DI } from '@/di-symbols.js';
+import { GlobalModule } from '@/GlobalModule.js';
+
+describe('FlashService', () => {
+ let app: TestingModule;
+ let service: FlashService;
+
+ // --------------------------------------------------------------------------------------
+
+ let flashsRepository: FlashsRepository;
+ let usersRepository: UsersRepository;
+ let userProfilesRepository: UserProfilesRepository;
+ let idService: IdService;
+
+ // --------------------------------------------------------------------------------------
+
+ let root: MiUser;
+ let alice: MiUser;
+ let bob: MiUser;
+
+ // --------------------------------------------------------------------------------------
+
+ async function createFlash(data: Partial) {
+ return flashsRepository.insert({
+ id: idService.gen(),
+ updatedAt: new Date(),
+ userId: root.id,
+ title: 'title',
+ summary: 'summary',
+ script: 'script',
+ permissions: [],
+ likedCount: 0,
+ ...data,
+ }).then(x => flashsRepository.findOneByOrFail(x.identifiers[0]));
+ }
+
+ async function createUser(data: Partial = {}) {
+ const user = await usersRepository
+ .insert({
+ id: idService.gen(),
+ ...data,
+ })
+ .then(x => usersRepository.findOneByOrFail(x.identifiers[0]));
+
+ await userProfilesRepository.insert({
+ userId: user.id,
+ });
+
+ return user;
+ }
+
+ // --------------------------------------------------------------------------------------
+
+ beforeEach(async () => {
+ app = await Test.createTestingModule({
+ imports: [
+ GlobalModule,
+ ],
+ providers: [
+ FlashService,
+ IdService,
+ ],
+ }).compile();
+
+ service = app.get(FlashService);
+
+ flashsRepository = app.get(DI.flashsRepository);
+ usersRepository = app.get(DI.usersRepository);
+ userProfilesRepository = app.get(DI.userProfilesRepository);
+ idService = app.get(IdService);
+
+ root = await createUser({ username: 'root', usernameLower: 'root', isRoot: true });
+ alice = await createUser({ username: 'alice', usernameLower: 'alice', isRoot: false });
+ bob = await createUser({ username: 'bob', usernameLower: 'bob', isRoot: false });
+ });
+
+ afterEach(async () => {
+ await usersRepository.delete({});
+ await userProfilesRepository.delete({});
+ await flashsRepository.delete({});
+ });
+
+ afterAll(async () => {
+ await app.close();
+ });
+
+ // --------------------------------------------------------------------------------------
+
+ describe('featured', () => {
+ test('should return featured flashes', async () => {
+ const flash1 = await createFlash({ likedCount: 1 });
+ const flash2 = await createFlash({ likedCount: 2 });
+ const flash3 = await createFlash({ likedCount: 3 });
+
+ const result = await service.featured({
+ offset: 0,
+ limit: 10,
+ });
+
+ expect(result).toEqual([flash3, flash2, flash1]);
+ });
+
+ test('should return featured flashes public visibility only', async () => {
+ const flash1 = await createFlash({ likedCount: 1, visibility: 'public' });
+ const flash2 = await createFlash({ likedCount: 2, visibility: 'public' });
+ const flash3 = await createFlash({ likedCount: 3, visibility: 'private' });
+
+ const result = await service.featured({
+ offset: 0,
+ limit: 10,
+ });
+
+ expect(result).toEqual([flash2, flash1]);
+ });
+
+ test('should return featured flashes with offset', async () => {
+ const flash1 = await createFlash({ likedCount: 1 });
+ const flash2 = await createFlash({ likedCount: 2 });
+ const flash3 = await createFlash({ likedCount: 3 });
+
+ const result = await service.featured({
+ offset: 1,
+ limit: 10,
+ });
+
+ expect(result).toEqual([flash2, flash1]);
+ });
+
+ test('should return featured flashes with limit', async () => {
+ const flash1 = await createFlash({ likedCount: 1 });
+ const flash2 = await createFlash({ likedCount: 2 });
+ const flash3 = await createFlash({ likedCount: 3 });
+
+ const result = await service.featured({
+ offset: 0,
+ limit: 2,
+ });
+
+ expect(result).toEqual([flash3, flash2]);
+ });
+ });
+});
diff --git a/packages/frontend/src/pages/flash/flash-index.vue b/packages/frontend/src/pages/flash/flash-index.vue
index f63a799365..2b85489706 100644
--- a/packages/frontend/src/pages/flash/flash-index.vue
+++ b/packages/frontend/src/pages/flash/flash-index.vue
@@ -55,7 +55,8 @@ const tab = ref('featured');
const featuredFlashsPagination = {
endpoint: 'flash/featured' as const,
- noPaging: true,
+ limit: 5,
+ offsetMode: true,
};
const myFlashsPagination = {
endpoint: 'flash/my' as const,
diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md
index 732352abd8..de52be3a61 100644
--- a/packages/misskey-js/etc/misskey-js.api.md
+++ b/packages/misskey-js/etc/misskey-js.api.md
@@ -1680,6 +1680,7 @@ declare namespace entities {
FlashCreateRequest,
FlashCreateResponse,
FlashDeleteRequest,
+ FlashFeaturedRequest,
FlashFeaturedResponse,
FlashLikeRequest,
FlashShowRequest,
@@ -1929,6 +1930,9 @@ type FlashCreateResponse = operations['flash___create']['responses']['200']['con
// @public (undocumented)
type FlashDeleteRequest = operations['flash___delete']['requestBody']['content']['application/json'];
+// @public (undocumented)
+type FlashFeaturedRequest = operations['flash___featured']['requestBody']['content']['application/json'];
+
// @public (undocumented)
type FlashFeaturedResponse = operations['flash___featured']['responses']['200']['content']['application/json'];
diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts
index 42c74599a5..bf61c20628 100644
--- a/packages/misskey-js/src/autogen/endpoint.ts
+++ b/packages/misskey-js/src/autogen/endpoint.ts
@@ -465,6 +465,7 @@ import type {
FlashCreateRequest,
FlashCreateResponse,
FlashDeleteRequest,
+ FlashFeaturedRequest,
FlashFeaturedResponse,
FlashLikeRequest,
FlashShowRequest,
@@ -889,7 +890,7 @@ export type Endpoints = {
'pages/update': { req: PagesUpdateRequest; res: EmptyResponse };
'flash/create': { req: FlashCreateRequest; res: FlashCreateResponse };
'flash/delete': { req: FlashDeleteRequest; res: EmptyResponse };
- 'flash/featured': { req: EmptyRequest; res: FlashFeaturedResponse };
+ 'flash/featured': { req: FlashFeaturedRequest; res: FlashFeaturedResponse };
'flash/like': { req: FlashLikeRequest; res: EmptyResponse };
'flash/show': { req: FlashShowRequest; res: FlashShowResponse };
'flash/unlike': { req: FlashUnlikeRequest; res: EmptyResponse };
diff --git a/packages/misskey-js/src/autogen/entities.ts b/packages/misskey-js/src/autogen/entities.ts
index 87ed653d44..72c7c35ed4 100644
--- a/packages/misskey-js/src/autogen/entities.ts
+++ b/packages/misskey-js/src/autogen/entities.ts
@@ -468,6 +468,7 @@ export type PagesUpdateRequest = operations['pages___update']['requestBody']['co
export type FlashCreateRequest = operations['flash___create']['requestBody']['content']['application/json'];
export type FlashCreateResponse = operations['flash___create']['responses']['200']['content']['application/json'];
export type FlashDeleteRequest = operations['flash___delete']['requestBody']['content']['application/json'];
+export type FlashFeaturedRequest = operations['flash___featured']['requestBody']['content']['application/json'];
export type FlashFeaturedResponse = operations['flash___featured']['responses']['200']['content']['application/json'];
export type FlashLikeRequest = operations['flash___like']['requestBody']['content']['application/json'];
export type FlashShowRequest = operations['flash___show']['requestBody']['content']['application/json'];
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index 3876a0bfe5..0938973481 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -23799,6 +23799,16 @@ export type operations = {
* **Credential required**: *No*
*/
flash___featured: {
+ requestBody: {
+ content: {
+ 'application/json': {
+ /** @default 0 */
+ offset?: number;
+ /** @default 10 */
+ limit?: number;
+ };
+ };
+ };
responses: {
/** @description OK (with results) */
200: {
From 043fef9fdf65ee5de9143a14f0626dc4e3f6e54d Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sat, 5 Oct 2024 15:19:07 +0900
Subject: [PATCH 069/194] :art:
---
packages/frontend/src/components/MkMenu.vue | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/packages/frontend/src/components/MkMenu.vue b/packages/frontend/src/components/MkMenu.vue
index 890b99fcc2..14f6bdcc34 100644
--- a/packages/frontend/src/components/MkMenu.vue
+++ b/packages/frontend/src/components/MkMenu.vue
@@ -437,9 +437,11 @@ onBeforeUnmount(() => {
&.big:not(.asDrawer) {
> .menu {
+ min-width: 230px;
+
> .item {
padding: 6px 20px;
- font-size: 1em;
+ font-size: 0.95em;
line-height: 24px;
}
}
From d8cb7305ef4d5ad6398d9eb57ece2f3ba7ca73eb Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sat, 5 Oct 2024 16:20:15 +0900
Subject: [PATCH 070/194] =?UTF-8?q?feat:=20=E9=80=9A=E5=A0=B1=E3=81=AE?=
=?UTF-8?q?=E5=BC=B7=E5=8C=96=20(#14704)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* wip
* Update CHANGELOG.md
* lint
* Update types.ts
* wip
* :v:
* Update MkAbuseReport.vue
* tweak
---
CHANGELOG.md | 3 +
locales/index.d.ts | 55 ++++++--
locales/ja-JP.yml | 15 ++-
.../1728085812127-refine-abuse-user-report.js | 18 +++
.../backend/src/core/AbuseReportService.ts | 80 ++++++++---
.../backend/src/core/WebhookTestService.ts | 2 +
.../entities/AbuseUserReportEntityService.ts | 2 +
.../backend/src/models/AbuseUserReport.ts | 18 +++
.../backend/src/server/api/EndpointsModule.ts | 8 ++
packages/backend/src/server/api/endpoints.ts | 4 +
.../admin/forward-abuse-user-report.ts | 55 ++++++++
.../admin/resolve-abuse-user-report.ts | 4 +-
.../admin/update-abuse-user-report.ts | 58 ++++++++
packages/backend/src/types.ts | 15 ++-
.../backend/test/e2e/synalio/abuse-report.ts | 6 -
.../frontend/src/components/MkAbuseReport.vue | 74 ++++++++--
packages/frontend/src/pages/admin-user.vue | 3 +-
packages/frontend/src/pages/admin/abuses.vue | 11 +-
.../src/pages/admin/modlog.ModLog.vue | 5 +
packages/frontend/src/pages/instance-info.vue | 1 +
packages/frontend/src/pages/user/home.vue | 3 +-
packages/frontend/src/store.ts | 4 +
packages/misskey-js/etc/misskey-js.api.md | 16 ++-
.../misskey-js/src/autogen/apiClientJSDoc.ts | 22 +++
packages/misskey-js/src/autogen/endpoint.ts | 4 +
packages/misskey-js/src/autogen/entities.ts | 2 +
packages/misskey-js/src/autogen/types.ts | 127 +++++++++++++++++-
packages/misskey-js/src/consts.ts | 15 ++-
packages/misskey-js/src/entities.ts | 6 +
29 files changed, 574 insertions(+), 62 deletions(-)
create mode 100644 packages/backend/migration/1728085812127-refine-abuse-user-report.js
create mode 100644 packages/backend/src/server/api/endpoints/admin/forward-abuse-user-report.ts
create mode 100644 packages/backend/src/server/api/endpoints/admin/update-abuse-user-report.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6a9143ea1b..3fd1b7f899 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,9 @@
### General
- Feat: サーバー初期設定時に初期パスワードを設定できるように
+- Feat: 通報にモデレーションノートを残せるように
+- Feat: 通報の解決種別を設定できるように
+- Enhance: 通報の解決と転送を個別に行えるように
- Enhance: セキュリティ向上のため、サインイン時もCAPTCHAを求めるようになりました
- Enhance: 依存関係の更新
- Enhance: l10nの更新
diff --git a/locales/index.d.ts b/locales/index.d.ts
index 1a0547ebc6..d502c5b432 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -1834,6 +1834,10 @@ export interface Locale extends ILocale {
* モデレーションノート
*/
"moderationNote": string;
+ /**
+ * モデレーター間でだけ共有されるメモを記入することができます。
+ */
+ "moderationNoteDescription": string;
/**
* モデレーションノートを追加する
*/
@@ -2894,22 +2898,10 @@ export interface Locale extends ILocale {
* 通報元
*/
"reporterOrigin": string;
- /**
- * リモートサーバーに通報を転送する
- */
- "forwardReport": string;
- /**
- * リモートサーバーからはあなたの情報は見れず、匿名のシステムアカウントとして表示されます。
- */
- "forwardReportIsAnonymous": string;
/**
* 送信
*/
"send": string;
- /**
- * 対応済みにする
- */
- "abuseMarkAsResolved": string;
/**
* 新しいタブで開く
*/
@@ -5170,6 +5162,37 @@ export interface Locale extends ILocale {
* フォロワーへのメッセージ
*/
"messageToFollower": string;
+ /**
+ * 対象
+ */
+ "target": string;
+ "_abuseUserReport": {
+ /**
+ * 転送
+ */
+ "forward": string;
+ /**
+ * 匿名のシステムアカウントとして、リモートサーバーに通報を転送します。
+ */
+ "forwardDescription": string;
+ /**
+ * 解決
+ */
+ "resolve": string;
+ /**
+ * 是認
+ */
+ "accept": string;
+ /**
+ * 否認
+ */
+ "reject": string;
+ /**
+ * 内容が正当である通報に対応した場合は「是認」を選択し、肯定的にケースが解決されたことをマークします。
+ * 内容が正当でない通報の場合は「否認」を選択し、否定的にケースが解決されたことをマークします。
+ */
+ "resolveTutorial": string;
+ };
"_delivery": {
/**
* 配信状態
@@ -9785,6 +9808,14 @@ export interface Locale extends ILocale {
* 通報を解決
*/
"resolveAbuseReport": string;
+ /**
+ * 通報を転送
+ */
+ "forwardAbuseReport": string;
+ /**
+ * 通報のモデレーションノート更新
+ */
+ "updateAbuseReportNote": string;
/**
* 招待コードを作成
*/
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 92014c8abc..678bc7e66b 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -454,6 +454,7 @@ totpDescription: "認証アプリを使ってワンタイムパスワードを
moderator: "モデレーター"
moderation: "モデレーション"
moderationNote: "モデレーションノート"
+moderationNoteDescription: "モデレーター間でだけ共有されるメモを記入することができます。"
addModerationNote: "モデレーションノートを追加する"
moderationLogs: "モデログ"
nUsersMentioned: "{n}人が投稿"
@@ -719,10 +720,7 @@ abuseReported: "内容が送信されました。ご報告ありがとうござ
reporter: "通報者"
reporteeOrigin: "通報先"
reporterOrigin: "通報元"
-forwardReport: "リモートサーバーに通報を転送する"
-forwardReportIsAnonymous: "リモートサーバーからはあなたの情報は見れず、匿名のシステムアカウントとして表示されます。"
send: "送信"
-abuseMarkAsResolved: "対応済みにする"
openInNewTab: "新しいタブで開く"
openInSideView: "サイドビューで開く"
defaultNavigationBehaviour: "デフォルトのナビゲーション"
@@ -1288,6 +1286,15 @@ unknownWebAuthnKey: "登録されていないパスキーです。"
passkeyVerificationFailed: "パスキーの検証に失敗しました。"
passkeyVerificationSucceededButPasswordlessLoginDisabled: "パスキーの検証に成功しましたが、パスワードレスログインが無効になっています。"
messageToFollower: "フォロワーへのメッセージ"
+target: "対象"
+
+_abuseUserReport:
+ forward: "転送"
+ forwardDescription: "匿名のシステムアカウントとして、リモートサーバーに通報を転送します。"
+ resolve: "解決"
+ accept: "是認"
+ reject: "否認"
+ resolveTutorial: "内容が正当である通報に対応した場合は「是認」を選択し、肯定的にケースが解決されたことをマークします。\n内容が正当でない通報の場合は「否認」を選択し、否定的にケースが解決されたことをマークします。"
_delivery:
status: "配信状態"
@@ -2593,6 +2600,8 @@ _moderationLogTypes:
markSensitiveDriveFile: "ファイルをセンシティブ付与"
unmarkSensitiveDriveFile: "ファイルをセンシティブ解除"
resolveAbuseReport: "通報を解決"
+ forwardAbuseReport: "通報を転送"
+ updateAbuseReportNote: "通報のモデレーションノート更新"
createInvitation: "招待コードを作成"
createAd: "広告を作成"
deleteAd: "広告を削除"
diff --git a/packages/backend/migration/1728085812127-refine-abuse-user-report.js b/packages/backend/migration/1728085812127-refine-abuse-user-report.js
new file mode 100644
index 0000000000..57cbfdcf6d
--- /dev/null
+++ b/packages/backend/migration/1728085812127-refine-abuse-user-report.js
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class RefineAbuseUserReport1728085812127 {
+ name = 'RefineAbuseUserReport1728085812127'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "abuse_user_report" ADD "moderationNote" character varying(8192) NOT NULL DEFAULT ''`);
+ await queryRunner.query(`ALTER TABLE "abuse_user_report" ADD "resolvedAs" character varying(128)`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "abuse_user_report" DROP COLUMN "resolvedAs"`);
+ await queryRunner.query(`ALTER TABLE "abuse_user_report" DROP COLUMN "moderationNote"`);
+ }
+}
diff --git a/packages/backend/src/core/AbuseReportService.ts b/packages/backend/src/core/AbuseReportService.ts
index 69c51509ba..cddfe5eb81 100644
--- a/packages/backend/src/core/AbuseReportService.ts
+++ b/packages/backend/src/core/AbuseReportService.ts
@@ -20,8 +20,10 @@ export class AbuseReportService {
constructor(
@Inject(DI.abuseUserReportsRepository)
private abuseUserReportsRepository: AbuseUserReportsRepository,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
+
private idService: IdService,
private abuseReportNotificationService: AbuseReportNotificationService,
private queueService: QueueService,
@@ -77,16 +79,16 @@ export class AbuseReportService {
* - SystemWebhook
*
* @param params 通報内容. もし複数件の通報に対応した時のために、あらかじめ複数件を処理できる前提で考える
- * @param operator 通報を処理したユーザ
+ * @param moderator 通報を処理したユーザ
* @see AbuseReportNotificationService.notify
*/
@bindThis
public async resolve(
params: {
reportId: string;
- forward: boolean;
+ resolvedAs: MiAbuseUserReport['resolvedAs'];
}[],
- operator: MiUser,
+ moderator: MiUser,
) {
const paramsMap = new Map(params.map(it => [it.reportId, it]));
const reports = await this.abuseUserReportsRepository.findBy({
@@ -99,25 +101,15 @@ export class AbuseReportService {
await this.abuseUserReportsRepository.update(report.id, {
resolved: true,
- assigneeId: operator.id,
- forwarded: ps.forward && report.targetUserHost !== null,
+ assigneeId: moderator.id,
+ resolvedAs: ps.resolvedAs,
});
- if (ps.forward && report.targetUserHost != null) {
- const actor = await this.instanceActorService.getInstanceActor();
- const targetUser = await this.usersRepository.findOneByOrFail({ id: report.targetUserId });
-
- // eslint-disable-next-line
- const flag = this.apRendererService.renderFlag(actor, targetUser.uri!, report.comment);
- const contextAssignedFlag = this.apRendererService.addContext(flag);
- this.queueService.deliver(actor, contextAssignedFlag, targetUser.inbox, false);
- }
-
this.moderationLogService
- .log(operator, 'resolveAbuseReport', {
+ .log(moderator, 'resolveAbuseReport', {
reportId: report.id,
report: report,
- forwarded: ps.forward && report.targetUserHost !== null,
+ resolvedAs: ps.resolvedAs,
})
.then();
}
@@ -125,4 +117,58 @@ export class AbuseReportService {
return this.abuseUserReportsRepository.findBy({ id: In(reports.map(it => it.id)) })
.then(reports => this.abuseReportNotificationService.notifySystemWebhook(reports, 'abuseReportResolved'));
}
+
+ @bindThis
+ public async forward(
+ reportId: MiAbuseUserReport['id'],
+ moderator: MiUser,
+ ) {
+ const report = await this.abuseUserReportsRepository.findOneByOrFail({ id: reportId });
+
+ if (report.targetUserHost == null) {
+ throw new Error('The target user host is null.');
+ }
+
+ await this.abuseUserReportsRepository.update(report.id, {
+ forwarded: true,
+ });
+
+ const actor = await this.instanceActorService.getInstanceActor();
+ const targetUser = await this.usersRepository.findOneByOrFail({ id: report.targetUserId });
+
+ const flag = this.apRendererService.renderFlag(actor, targetUser.uri!, report.comment);
+ const contextAssignedFlag = this.apRendererService.addContext(flag);
+ this.queueService.deliver(actor, contextAssignedFlag, targetUser.inbox, false);
+
+ this.moderationLogService
+ .log(moderator, 'forwardAbuseReport', {
+ reportId: report.id,
+ report: report,
+ })
+ .then();
+ }
+
+ @bindThis
+ public async update(
+ reportId: MiAbuseUserReport['id'],
+ params: {
+ moderationNote?: MiAbuseUserReport['moderationNote'];
+ },
+ moderator: MiUser,
+ ) {
+ const report = await this.abuseUserReportsRepository.findOneByOrFail({ id: reportId });
+
+ await this.abuseUserReportsRepository.update(report.id, {
+ moderationNote: params.moderationNote,
+ });
+
+ if (params.moderationNote != null && report.moderationNote !== params.moderationNote) {
+ this.moderationLogService.log(moderator, 'updateAbuseReportNote', {
+ reportId: report.id,
+ report: report,
+ before: report.moderationNote,
+ after: params.moderationNote,
+ });
+ }
+ }
}
diff --git a/packages/backend/src/core/WebhookTestService.ts b/packages/backend/src/core/WebhookTestService.ts
index 149c753d4c..4c45b95a64 100644
--- a/packages/backend/src/core/WebhookTestService.ts
+++ b/packages/backend/src/core/WebhookTestService.ts
@@ -35,6 +35,8 @@ function generateAbuseReport(override?: Partial): AbuseUserRe
comment: 'This is a dummy report for testing purposes.',
targetUserHost: null,
reporterHost: null,
+ resolvedAs: null,
+ moderationNote: 'foo',
...override,
};
diff --git a/packages/backend/src/core/entities/AbuseUserReportEntityService.ts b/packages/backend/src/core/entities/AbuseUserReportEntityService.ts
index a13c244c19..70ead890ab 100644
--- a/packages/backend/src/core/entities/AbuseUserReportEntityService.ts
+++ b/packages/backend/src/core/entities/AbuseUserReportEntityService.ts
@@ -53,6 +53,8 @@ export class AbuseUserReportEntityService {
schema: 'UserDetailedNotMe',
}) : null,
forwarded: report.forwarded,
+ resolvedAs: report.resolvedAs,
+ moderationNote: report.moderationNote,
});
}
diff --git a/packages/backend/src/models/AbuseUserReport.ts b/packages/backend/src/models/AbuseUserReport.ts
index 0615fd7eb5..cb5672e4ac 100644
--- a/packages/backend/src/models/AbuseUserReport.ts
+++ b/packages/backend/src/models/AbuseUserReport.ts
@@ -50,6 +50,9 @@ export class MiAbuseUserReport {
})
public resolved: boolean;
+ /**
+ * リモートサーバーに転送したかどうか
+ */
@Column('boolean', {
default: false,
})
@@ -60,6 +63,21 @@ export class MiAbuseUserReport {
})
public comment: string;
+ @Column('varchar', {
+ length: 8192, default: '',
+ })
+ public moderationNote: string;
+
+ /**
+ * accept 是認 ... 通報内容が正当であり、肯定的に対応された
+ * reject 否認 ... 通報内容が正当でなく、否定的に対応された
+ * null ... その他
+ */
+ @Column('varchar', {
+ length: 128, nullable: true,
+ })
+ public resolvedAs: 'accept' | 'reject' | null;
+
//#region Denormalized fields
@Index()
@Column('varchar', {
diff --git a/packages/backend/src/server/api/EndpointsModule.ts b/packages/backend/src/server/api/EndpointsModule.ts
index 08a0468ab2..3557fa40a5 100644
--- a/packages/backend/src/server/api/EndpointsModule.ts
+++ b/packages/backend/src/server/api/EndpointsModule.ts
@@ -68,6 +68,8 @@ import * as ep___admin_relays_list from './endpoints/admin/relays/list.js';
import * as ep___admin_relays_remove from './endpoints/admin/relays/remove.js';
import * as ep___admin_resetPassword from './endpoints/admin/reset-password.js';
import * as ep___admin_resolveAbuseUserReport from './endpoints/admin/resolve-abuse-user-report.js';
+import * as ep___admin_forwardAbuseUserReport from './endpoints/admin/forward-abuse-user-report.js';
+import * as ep___admin_updateAbuseUserReport from './endpoints/admin/update-abuse-user-report.js';
import * as ep___admin_sendEmail from './endpoints/admin/send-email.js';
import * as ep___admin_serverInfo from './endpoints/admin/server-info.js';
import * as ep___admin_showModerationLogs from './endpoints/admin/show-moderation-logs.js';
@@ -453,6 +455,8 @@ const $admin_relays_list: Provider = { provide: 'ep:admin/relays/list', useClass
const $admin_relays_remove: Provider = { provide: 'ep:admin/relays/remove', useClass: ep___admin_relays_remove.default };
const $admin_resetPassword: Provider = { provide: 'ep:admin/reset-password', useClass: ep___admin_resetPassword.default };
const $admin_resolveAbuseUserReport: Provider = { provide: 'ep:admin/resolve-abuse-user-report', useClass: ep___admin_resolveAbuseUserReport.default };
+const $admin_forwardAbuseUserReport: Provider = { provide: 'ep:admin/forward-abuse-user-report', useClass: ep___admin_forwardAbuseUserReport.default };
+const $admin_updateAbuseUserReport: Provider = { provide: 'ep:admin/update-abuse-user-report', useClass: ep___admin_updateAbuseUserReport.default };
const $admin_sendEmail: Provider = { provide: 'ep:admin/send-email', useClass: ep___admin_sendEmail.default };
const $admin_serverInfo: Provider = { provide: 'ep:admin/server-info', useClass: ep___admin_serverInfo.default };
const $admin_showModerationLogs: Provider = { provide: 'ep:admin/show-moderation-logs', useClass: ep___admin_showModerationLogs.default };
@@ -842,6 +846,8 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
$admin_relays_remove,
$admin_resetPassword,
$admin_resolveAbuseUserReport,
+ $admin_forwardAbuseUserReport,
+ $admin_updateAbuseUserReport,
$admin_sendEmail,
$admin_serverInfo,
$admin_showModerationLogs,
@@ -1225,6 +1231,8 @@ const $reversi_verify: Provider = { provide: 'ep:reversi/verify', useClass: ep__
$admin_relays_remove,
$admin_resetPassword,
$admin_resolveAbuseUserReport,
+ $admin_forwardAbuseUserReport,
+ $admin_updateAbuseUserReport,
$admin_sendEmail,
$admin_serverInfo,
$admin_showModerationLogs,
diff --git a/packages/backend/src/server/api/endpoints.ts b/packages/backend/src/server/api/endpoints.ts
index 2462781f7b..49b07d6ced 100644
--- a/packages/backend/src/server/api/endpoints.ts
+++ b/packages/backend/src/server/api/endpoints.ts
@@ -74,6 +74,8 @@ import * as ep___admin_relays_list from './endpoints/admin/relays/list.js';
import * as ep___admin_relays_remove from './endpoints/admin/relays/remove.js';
import * as ep___admin_resetPassword from './endpoints/admin/reset-password.js';
import * as ep___admin_resolveAbuseUserReport from './endpoints/admin/resolve-abuse-user-report.js';
+import * as ep___admin_forwardAbuseUserReport from './endpoints/admin/forward-abuse-user-report.js';
+import * as ep___admin_updateAbuseUserReport from './endpoints/admin/update-abuse-user-report.js';
import * as ep___admin_sendEmail from './endpoints/admin/send-email.js';
import * as ep___admin_serverInfo from './endpoints/admin/server-info.js';
import * as ep___admin_showModerationLogs from './endpoints/admin/show-moderation-logs.js';
@@ -457,6 +459,8 @@ const eps = [
['admin/relays/remove', ep___admin_relays_remove],
['admin/reset-password', ep___admin_resetPassword],
['admin/resolve-abuse-user-report', ep___admin_resolveAbuseUserReport],
+ ['admin/forward-abuse-user-report', ep___admin_forwardAbuseUserReport],
+ ['admin/update-abuse-user-report', ep___admin_updateAbuseUserReport],
['admin/send-email', ep___admin_sendEmail],
['admin/server-info', ep___admin_serverInfo],
['admin/show-moderation-logs', ep___admin_showModerationLogs],
diff --git a/packages/backend/src/server/api/endpoints/admin/forward-abuse-user-report.ts b/packages/backend/src/server/api/endpoints/admin/forward-abuse-user-report.ts
new file mode 100644
index 0000000000..3e42c91fed
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/forward-abuse-user-report.ts
@@ -0,0 +1,55 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import type { AbuseUserReportsRepository } from '@/models/_.js';
+import { DI } from '@/di-symbols.js';
+import { ApiError } from '@/server/api/error.js';
+import { AbuseReportService } from '@/core/AbuseReportService.js';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true,
+ requireModerator: true,
+ kind: 'write:admin:resolve-abuse-user-report',
+
+ errors: {
+ noSuchAbuseReport: {
+ message: 'No such abuse report.',
+ code: 'NO_SUCH_ABUSE_REPORT',
+ id: '8763e21b-d9bc-40be-acf6-54c1a6986493',
+ kind: 'server',
+ httpStatusCode: 404,
+ },
+ },
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ reportId: { type: 'string', format: 'misskey:id' },
+ },
+ required: ['reportId'],
+} as const;
+
+@Injectable()
+export default class extends Endpoint { // eslint-disable-line import/no-default-export
+ constructor(
+ @Inject(DI.abuseUserReportsRepository)
+ private abuseUserReportsRepository: AbuseUserReportsRepository,
+ private abuseReportService: AbuseReportService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const report = await this.abuseUserReportsRepository.findOneBy({ id: ps.reportId });
+ if (!report) {
+ throw new ApiError(meta.errors.noSuchAbuseReport);
+ }
+
+ await this.abuseReportService.forward(report.id, me);
+ });
+ }
+}
diff --git a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
index 9b79100fcf..554d324ff2 100644
--- a/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
+++ b/packages/backend/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
@@ -32,7 +32,7 @@ export const paramDef = {
type: 'object',
properties: {
reportId: { type: 'string', format: 'misskey:id' },
- forward: { type: 'boolean', default: false },
+ resolvedAs: { type: 'string', enum: ['accept', 'reject', null], nullable: true },
},
required: ['reportId'],
} as const;
@@ -50,7 +50,7 @@ export default class extends Endpoint { // eslint-
throw new ApiError(meta.errors.noSuchAbuseReport);
}
- await this.abuseReportService.resolve([{ reportId: report.id, forward: ps.forward }], me);
+ await this.abuseReportService.resolve([{ reportId: report.id, resolvedAs: ps.resolvedAs ?? null }], me);
});
}
}
diff --git a/packages/backend/src/server/api/endpoints/admin/update-abuse-user-report.ts b/packages/backend/src/server/api/endpoints/admin/update-abuse-user-report.ts
new file mode 100644
index 0000000000..73d4b843f0
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/admin/update-abuse-user-report.ts
@@ -0,0 +1,58 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Inject, Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import type { AbuseUserReportsRepository } from '@/models/_.js';
+import { DI } from '@/di-symbols.js';
+import { ApiError } from '@/server/api/error.js';
+import { AbuseReportService } from '@/core/AbuseReportService.js';
+
+export const meta = {
+ tags: ['admin'],
+
+ requireCredential: true,
+ requireModerator: true,
+ kind: 'write:admin:resolve-abuse-user-report',
+
+ errors: {
+ noSuchAbuseReport: {
+ message: 'No such abuse report.',
+ code: 'NO_SUCH_ABUSE_REPORT',
+ id: '15f51cf5-46d1-4b1d-a618-b35bcbed0662',
+ kind: 'server',
+ httpStatusCode: 404,
+ },
+ },
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ reportId: { type: 'string', format: 'misskey:id' },
+ moderationNote: { type: 'string' },
+ },
+ required: ['reportId'],
+} as const;
+
+@Injectable()
+export default class extends Endpoint { // eslint-disable-line import/no-default-export
+ constructor(
+ @Inject(DI.abuseUserReportsRepository)
+ private abuseUserReportsRepository: AbuseUserReportsRepository,
+ private abuseReportService: AbuseReportService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const report = await this.abuseUserReportsRepository.findOneBy({ id: ps.reportId });
+ if (!report) {
+ throw new ApiError(meta.errors.noSuchAbuseReport);
+ }
+
+ await this.abuseReportService.update(report.id, {
+ moderationNote: ps.moderationNote,
+ }, me);
+ });
+ }
+}
diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts
index 0389143daf..df3cfee171 100644
--- a/packages/backend/src/types.ts
+++ b/packages/backend/src/types.ts
@@ -99,6 +99,8 @@ export const moderationLogTypes = [
'markSensitiveDriveFile',
'unmarkSensitiveDriveFile',
'resolveAbuseReport',
+ 'forwardAbuseReport',
+ 'updateAbuseReportNote',
'createInvitation',
'createAd',
'updateAd',
@@ -267,7 +269,18 @@ export type ModerationLogPayloads = {
resolveAbuseReport: {
reportId: string;
report: any;
- forwarded: boolean;
+ forwarded?: boolean;
+ resolvedAs?: string | null;
+ };
+ forwardAbuseReport: {
+ reportId: string;
+ report: any;
+ };
+ updateAbuseReportNote: {
+ reportId: string;
+ report: any;
+ before: string;
+ after: string;
};
createInvitation: {
invitations: any[];
diff --git a/packages/backend/test/e2e/synalio/abuse-report.ts b/packages/backend/test/e2e/synalio/abuse-report.ts
index 6ce6e47781..c98d199f35 100644
--- a/packages/backend/test/e2e/synalio/abuse-report.ts
+++ b/packages/backend/test/e2e/synalio/abuse-report.ts
@@ -157,7 +157,6 @@ describe('[シナリオ] ユーザ通報', () => {
const webhookBody2 = await captureWebhook(async () => {
await resolveAbuseReport({
reportId: webhookBody1.body.id,
- forward: false,
}, admin);
});
@@ -214,7 +213,6 @@ describe('[シナリオ] ユーザ通報', () => {
const webhookBody2 = await captureWebhook(async () => {
await resolveAbuseReport({
reportId: abuseReportId,
- forward: false,
}, admin);
});
@@ -257,7 +255,6 @@ describe('[シナリオ] ユーザ通報', () => {
const webhookBody2 = await captureWebhook(async () => {
await resolveAbuseReport({
reportId: webhookBody1.body.id,
- forward: false,
}, admin);
}).catch(e => e.message);
@@ -288,7 +285,6 @@ describe('[シナリオ] ユーザ通報', () => {
const webhookBody2 = await captureWebhook(async () => {
await resolveAbuseReport({
reportId: abuseReportId,
- forward: false,
}, admin);
}).catch(e => e.message);
@@ -319,7 +315,6 @@ describe('[シナリオ] ユーザ通報', () => {
const webhookBody2 = await captureWebhook(async () => {
await resolveAbuseReport({
reportId: abuseReportId,
- forward: false,
}, admin);
}).catch(e => e.message);
@@ -350,7 +345,6 @@ describe('[シナリオ] ユーザ通報', () => {
const webhookBody2 = await captureWebhook(async () => {
await resolveAbuseReport({
reportId: abuseReportId,
- forward: false,
}, admin);
}).catch(e => e.message);
diff --git a/packages/frontend/src/components/MkAbuseReport.vue b/packages/frontend/src/components/MkAbuseReport.vue
index c9c629046e..2f0e09fc4b 100644
--- a/packages/frontend/src/components/MkAbuseReport.vue
+++ b/packages/frontend/src/components/MkAbuseReport.vue
@@ -6,26 +6,33 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
+
+
(by )
{{ report.comment }}
-
+
- Target:
+ {{ i18n.ts.target }}:
#{{ report.targetUserId.toUpperCase() }}
@@ -36,7 +43,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.details }}
-
+
@@ -51,6 +58,17 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
+ {{ i18n.ts.moderationNote }}
+ {{ moderationNote.length > 0 ? '...' : i18n.ts.none }}
+
+
+ {{ i18n.ts.moderationNoteDescription }}
+
+
+
+
{{ i18n.ts.moderator }}:
@@ -60,7 +78,7 @@ SPDX-License-Identifier: AGPL-3.0-only
diff --git a/packages/frontend/src/pages/install-extensions.vue b/packages/frontend/src/pages/install-extensions.vue
index 4bee437f65..83f16fce68 100644
--- a/packages/frontend/src/pages/install-extensions.vue
+++ b/packages/frontend/src/pages/install-extensions.vue
@@ -8,76 +8,26 @@ SPDX-License-Identifier: AGPL-3.0-only
-
-
-
-
-
-
-
{{ i18n.ts._externalResourceInstaller[`_${data.type}`].title }}
-
{{ i18n.ts._externalResourceInstaller.checkVendorBeforeInstall }}
-
{{ i18n.ts._plugin.installWarn }}
-
- {{ i18n.ts._externalResourceInstaller[`_${data.type}`].metaTitle }}
-
-
+
+
+
+ {{ i18n.ts._externalResourceInstaller._vendorInfo.title }}
+
- {{ i18n.ts.name }}
- {{ data.meta?.name }}
+ {{ i18n.ts._externalResourceInstaller._vendorInfo.endpoint }}
+
- {{ i18n.ts.author }}
- {{ data.meta?.author }}
+ {{ i18n.ts._externalResourceInstaller._vendorInfo.hashVerify }}
+
+
+
+
-
-
- {{ i18n.ts.description }}
- {{ data.meta?.description }}
-
-
- {{ i18n.ts.version }}
- {{ data.meta?.version }}
-
-
- {{ i18n.ts.permission }}
-
-
- - {{ i18n.ts._permissions[permission] }}
-
-
-
-
- {{ i18n.ts._externalResourceInstaller._meta.base }}
- {{ i18n.ts[data.meta.base] }}
-
-
-
- {{ i18n.ts._plugin.viewSource }}
-
-
-
-
-
-
- {{ i18n.ts._externalResourceInstaller._vendorInfo.title }}
-
-
- {{ i18n.ts._externalResourceInstaller._vendorInfo.endpoint }}
-
-
-
- {{ i18n.ts._externalResourceInstaller._vendorInfo.hashVerify }}
-
-
-
-
-
-
-
-
- {{ i18n.ts.install }}
-
-
+
+
+
+
@@ -96,14 +46,11 @@ SPDX-License-Identifier: AGPL-3.0-only
@@ -37,7 +37,7 @@ const bgCss = bg.toRgbString();
display: inline-block;
padding: 4px 8px 4px 4px;
border-radius: 999px;
- color: var(--mention);
+ color: var(--MI_THEME-mention);
}
.host {
diff --git a/packages/frontend-embed/src/components/EmMfm.ts b/packages/frontend-embed/src/components/EmMfm.ts
index 59f0d495e6..cae2feb8fb 100644
--- a/packages/frontend-embed/src/components/EmMfm.ts
+++ b/packages/frontend-embed/src/components/EmMfm.ts
@@ -26,8 +26,8 @@ const QUOTE_STYLE = `
display: block;
margin: 8px;
padding: 6px 0 6px 12px;
-color: var(--fg);
-border-left: solid 3px var(--fg);
+color: var(--MI_THEME-fg);
+border-left: solid 3px var(--MI_THEME-fg);
opacity: 0.7;
`.split('\n').join(' ');
@@ -251,7 +251,7 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext
.collapsedLabel {
- background: var(--panelHighlight);
+ background: var(--MI_THEME-panelHighlight);
}
}
.collapsedLabel {
display: inline-block;
- background: var(--panel);
+ background: var(--MI_THEME-panel);
padding: 6px 10px;
font-size: 0.8em;
border-radius: 999px;
@@ -424,12 +424,12 @@ const isDeleted = ref(false);
}
.replyIcon {
- color: var(--accent);
+ color: var(--MI_THEME-accent);
margin-right: 0.5em;
}
.translation {
- border: solid 0.5px var(--divider);
+ border: solid 0.5px var(--MI_THEME-divider);
border-radius: var(--radius);
padding: 12px;
margin-top: 8px;
@@ -449,7 +449,7 @@ const isDeleted = ref(false);
.quoteNote {
padding: 16px;
- border: dashed 1px var(--renote);
+ border: dashed 1px var(--MI_THEME-renote);
border-radius: 8px;
overflow: clip;
}
@@ -473,7 +473,7 @@ const isDeleted = ref(false);
}
&:hover {
- color: var(--fgHighlighted);
+ color: var(--MI_THEME-fgHighlighted);
}
}
diff --git a/packages/frontend-embed/src/components/EmNoteDetailed.vue b/packages/frontend-embed/src/components/EmNoteDetailed.vue
index 360de31864..ccd723d7d2 100644
--- a/packages/frontend-embed/src/components/EmNoteDetailed.vue
+++ b/packages/frontend-embed/src/components/EmNoteDetailed.vue
@@ -195,7 +195,7 @@ const collapsed = ref(appearNote.value.cw == null && isLong);
padding: 16px 32px 8px 32px;
line-height: 28px;
white-space: pre;
- color: var(--renote);
+ color: var(--MI_THEME-renote);
}
.renoteAvatar {
@@ -281,7 +281,7 @@ const collapsed = ref(appearNote.value.cw == null && isLong);
padding: 4px 6px;
font-size: 80%;
line-height: 1;
- border: solid 0.5px var(--divider);
+ border: solid 0.5px var(--MI_THEME-divider);
border-radius: 4px;
}
@@ -323,14 +323,14 @@ const collapsed = ref(appearNote.value.cw == null && isLong);
}
.noteReplyTarget {
- color: var(--accent);
+ color: var(--MI_THEME-accent);
margin-right: 0.5em;
}
.rn {
margin-left: 4px;
font-style: oblique;
- color: var(--renote);
+ color: var(--MI_THEME-renote);
}
.reactionOmitted {
@@ -350,7 +350,7 @@ const collapsed = ref(appearNote.value.cw == null && isLong);
.quoteNote {
padding: 16px;
- border: dashed 1px var(--renote);
+ border: dashed 1px var(--MI_THEME-renote);
border-radius: 8px;
overflow: clip;
}
@@ -369,7 +369,7 @@ const collapsed = ref(appearNote.value.cw == null && isLong);
.showLessLabel {
display: inline-block;
- background: var(--popup);
+ background: var(--MI_THEME-popup);
padding: 6px 10px;
font-size: 0.8em;
border-radius: 999px;
@@ -390,16 +390,16 @@ const collapsed = ref(appearNote.value.cw == null && isLong);
z-index: 2;
width: 100%;
height: 64px;
- background: linear-gradient(0deg, var(--panel), var(--X15));
+ background: linear-gradient(0deg, var(--MI_THEME-panel), var(--MI_THEME-X15));
&:hover > .collapsedLabel {
- background: var(--panelHighlight);
+ background: var(--MI_THEME-panelHighlight);
}
}
.collapsedLabel {
display: inline-block;
- background: var(--panel);
+ background: var(--MI_THEME-panel);
padding: 6px 10px;
font-size: 0.8em;
border-radius: 999px;
@@ -422,7 +422,7 @@ const collapsed = ref(appearNote.value.cw == null && isLong);
}
&:hover {
- color: var(--fgHighlighted);
+ color: var(--MI_THEME-fgHighlighted);
}
}
@@ -438,7 +438,7 @@ const collapsed = ref(appearNote.value.cw == null && isLong);
opacity: 0.7;
&.reacted {
- color: var(--accent);
+ color: var(--MI_THEME-accent);
}
}
diff --git a/packages/frontend-embed/src/components/EmNoteHeader.vue b/packages/frontend-embed/src/components/EmNoteHeader.vue
index 7d0b9bacad..85b4aac071 100644
--- a/packages/frontend-embed/src/components/EmNoteHeader.vue
+++ b/packages/frontend-embed/src/components/EmNoteHeader.vue
@@ -72,7 +72,7 @@ defineProps<{
margin: 0 .5em 0 0;
padding: 1px 6px;
font-size: 80%;
- border: solid 0.5px var(--divider);
+ border: solid 0.5px var(--MI_THEME-divider);
border-radius: 3px;
}
diff --git a/packages/frontend-embed/src/components/EmNoteSub.vue b/packages/frontend-embed/src/components/EmNoteSub.vue
index f60aea3e7e..59be8608e0 100644
--- a/packages/frontend-embed/src/components/EmNoteSub.vue
+++ b/packages/frontend-embed/src/components/EmNoteSub.vue
@@ -123,7 +123,7 @@ if (props.detail) {
}
.reply, .more {
- border-left: solid 0.5px var(--divider);
+ border-left: solid 0.5px var(--MI_THEME-divider);
margin-top: 10px;
}
@@ -144,7 +144,7 @@ if (props.detail) {
.muted {
text-align: center;
padding: 8px !important;
- border: 1px solid var(--divider);
+ border: 1px solid var(--MI_THEME-divider);
margin: 8px 8px 0 8px;
border-radius: 8px;
}
diff --git a/packages/frontend-embed/src/components/EmNotes.vue b/packages/frontend-embed/src/components/EmNotes.vue
index 3418d97f77..4211261e19 100644
--- a/packages/frontend-embed/src/components/EmNotes.vue
+++ b/packages/frontend-embed/src/components/EmNotes.vue
@@ -43,10 +43,10 @@ defineExpose({
diff --git a/packages/frontend-embed/src/components/EmPoll.vue b/packages/frontend-embed/src/components/EmPoll.vue
index a2b1203449..d197e094c6 100644
--- a/packages/frontend-embed/src/components/EmPoll.vue
+++ b/packages/frontend-embed/src/components/EmPoll.vue
@@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
({{ i18n.tsx._poll.votesCount({ n: choice.votes }) }})
@@ -52,8 +52,8 @@ const total = computed(() => sum(props.poll.choices.map(x => x.votes)));
position: relative;
margin: 4px 0;
padding: 4px;
- //border: solid 0.5px var(--divider);
- background: var(--accentedBg);
+ //border: solid 0.5px var(--MI_THEME-divider);
+ background: var(--MI_THEME-accentedBg);
border-radius: 4px;
overflow: clip;
}
@@ -63,8 +63,8 @@ const total = computed(() => sum(props.poll.choices.map(x => x.votes)));
top: 0;
left: 0;
height: 100%;
- background: var(--accent);
- background: linear-gradient(90deg,var(--buttonGradateA),var(--buttonGradateB));
+ background: var(--MI_THEME-accent);
+ background: linear-gradient(90deg,var(--MI_THEME-buttonGradateA),var(--MI_THEME-buttonGradateB));
transition: width 1s ease;
}
@@ -72,11 +72,11 @@ const total = computed(() => sum(props.poll.choices.map(x => x.votes)));
position: relative;
display: inline-block;
padding: 3px 5px;
- background: var(--panel);
+ background: var(--MI_THEME-panel);
border-radius: 3px;
}
.info {
- color: var(--fg);
+ color: var(--MI_THEME-fg);
}
diff --git a/packages/frontend-embed/src/components/EmReactionsViewer.reaction.vue b/packages/frontend-embed/src/components/EmReactionsViewer.reaction.vue
index 2e43eb8d17..2ebff489fd 100644
--- a/packages/frontend-embed/src/components/EmReactionsViewer.reaction.vue
+++ b/packages/frontend-embed/src/components/EmReactionsViewer.reaction.vue
@@ -38,7 +38,7 @@ const props = defineProps<{
justify-content: center;
&.canToggle {
- background: var(--buttonBg);
+ background: var(--MI_THEME-buttonBg);
&:hover {
background: rgba(0, 0, 0, 0.1);
@@ -72,12 +72,12 @@ const props = defineProps<{
}
&.reacted, &.reacted:hover {
- background: var(--accentedBg);
- color: var(--accent);
- box-shadow: 0 0 0 1px var(--accent) inset;
+ background: var(--MI_THEME-accentedBg);
+ color: var(--MI_THEME-accent);
+ box-shadow: 0 0 0 1px var(--MI_THEME-accent) inset;
> .count {
- color: var(--accent);
+ color: var(--MI_THEME-accent);
}
> .icon {
diff --git a/packages/frontend-embed/src/components/EmSubNoteContent.vue b/packages/frontend-embed/src/components/EmSubNoteContent.vue
index db2666a45f..dcaa1ec914 100644
--- a/packages/frontend-embed/src/components/EmSubNoteContent.vue
+++ b/packages/frontend-embed/src/components/EmSubNoteContent.vue
@@ -65,11 +65,11 @@ const collapsed = ref(isLong);
left: 0;
width: 100%;
height: 64px;
- background: linear-gradient(0deg, var(--panel), color(from var(--panel) srgb r g b / 0));
+ background: linear-gradient(0deg, var(--MI_THEME-panel), color(from var(--MI_THEME-panel) srgb r g b / 0));
> .fadeLabel {
display: inline-block;
- background: var(--panel);
+ background: var(--MI_THEME-panel);
padding: 6px 10px;
font-size: 0.8em;
border-radius: 999px;
@@ -78,7 +78,7 @@ const collapsed = ref(isLong);
&:hover {
> .fadeLabel {
- background: var(--panelHighlight);
+ background: var(--MI_THEME-panelHighlight);
}
}
}
@@ -87,13 +87,13 @@ const collapsed = ref(isLong);
.reply {
margin-right: 6px;
- color: var(--accent);
+ color: var(--MI_THEME-accent);
}
.rp {
margin-left: 4px;
font-style: oblique;
- color: var(--renote);
+ color: var(--MI_THEME-renote);
}
.showLess {
@@ -105,7 +105,7 @@ const collapsed = ref(isLong);
.showLessLabel {
display: inline-block;
- background: var(--popup);
+ background: var(--MI_THEME-popup);
padding: 6px 10px;
font-size: 0.8em;
border-radius: 999px;
diff --git a/packages/frontend-embed/src/components/EmTime.vue b/packages/frontend-embed/src/components/EmTime.vue
index c3986f7d70..7902e18483 100644
--- a/packages/frontend-embed/src/components/EmTime.vue
+++ b/packages/frontend-embed/src/components/EmTime.vue
@@ -98,10 +98,10 @@ if (!invalid && props.origin === null && (props.mode === 'relative' || props.mod
diff --git a/packages/frontend-embed/src/components/EmTimelineContainer.vue b/packages/frontend-embed/src/components/EmTimelineContainer.vue
index 6c30b1102d..60fd67ced9 100644
--- a/packages/frontend-embed/src/components/EmTimelineContainer.vue
+++ b/packages/frontend-embed/src/components/EmTimelineContainer.vue
@@ -20,7 +20,7 @@ withDefaults(defineProps<{
diff --git a/packages/frontend-embed/src/pages/tag.vue b/packages/frontend-embed/src/pages/tag.vue
index b481b3ebe5..78049e4041 100644
--- a/packages/frontend-embed/src/pages/tag.vue
+++ b/packages/frontend-embed/src/pages/tag.vue
@@ -93,8 +93,8 @@ function top(ev: MouseEvent) {
line-height: 32px;
font-size: 14px;
text-align: center;
- background-color: var(--accentedBg);
- color: var(--accent);
+ background-color: var(--MI_THEME-accentedBg);
+ color: var(--MI_THEME-accent);
border-radius: 50%;
}
diff --git a/packages/frontend-embed/src/style.scss b/packages/frontend-embed/src/style.scss
index 02008ddbd0..1569de01f8 100644
--- a/packages/frontend-embed/src/style.scss
+++ b/packages/frontend-embed/src/style.scss
@@ -17,8 +17,8 @@
html {
background-color: transparent;
color-scheme: light dark;
- color: var(--fg);
- accent-color: var(--accent);
+ color: var(--MI_THEME-fg);
+ accent-color: var(--MI_THEME-accent);
overflow: clip;
overflow-wrap: break-word;
font-family: 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif;
@@ -29,7 +29,7 @@ html {
-webkit-text-size-adjust: 100%;
&, * {
- scrollbar-color: var(--scrollbarHandle) transparent;
+ scrollbar-color: var(--MI_THEME-scrollbarHandle) transparent;
scrollbar-width: thin;
&::-webkit-scrollbar {
@@ -42,14 +42,14 @@ html {
}
&::-webkit-scrollbar-thumb {
- background: var(--scrollbarHandle);
+ background: var(--MI_THEME-scrollbarHandle);
&:hover {
- background: var(--scrollbarHandleHover);
+ background: var(--MI_THEME-scrollbarHandleHover);
}
&:active {
- background: var(--accent);
+ background: var(--MI_THEME-accent);
}
}
}
@@ -93,7 +93,7 @@ rt {
}
:focus-visible {
- outline: var(--focus) solid 2px;
+ outline: var(--MI_THEME-focus) solid 2px;
outline-offset: -2px;
&:hover {
@@ -151,38 +151,38 @@ rt {
._buttonGray {
@extend ._button;
- background: var(--buttonBg);
+ background: var(--MI_THEME-buttonBg);
&:not(:disabled):hover {
- background: var(--buttonHoverBg);
+ background: var(--MI_THEME-buttonHoverBg);
}
}
._buttonPrimary {
@extend ._button;
- color: var(--fgOnAccent);
- background: var(--accent);
+ color: var(--MI_THEME-fgOnAccent);
+ background: var(--MI_THEME-accent);
&:not(:disabled):hover {
- background: hsl(from var(--accent) h s calc(l + 5));
+ background: hsl(from var(--MI_THEME-accent) h s calc(l + 5));
}
&:not(:disabled):active {
- background: hsl(from var(--accent) h s calc(l - 5));
+ background: hsl(from var(--MI_THEME-accent) h s calc(l - 5));
}
}
._buttonGradate {
@extend ._buttonPrimary;
- color: var(--fgOnAccent);
- background: linear-gradient(90deg, var(--buttonGradateA), var(--buttonGradateB));
+ color: var(--MI_THEME-fgOnAccent);
+ background: linear-gradient(90deg, var(--MI_THEME-buttonGradateA), var(--MI_THEME-buttonGradateB));
&:not(:disabled):hover {
- background: linear-gradient(90deg, hsl(from var(--accent) h s calc(l + 5)), hsl(from var(--accent) h s calc(l + 5)));
+ background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5)));
}
&:not(:disabled):active {
- background: linear-gradient(90deg, hsl(from var(--accent) h s calc(l + 5)), hsl(from var(--accent) h s calc(l + 5)));
+ background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5)));
}
}
@@ -199,13 +199,13 @@ rt {
}
._help {
- color: var(--accent);
+ color: var(--MI_THEME-accent);
cursor: help;
}
._textButton {
@extend ._button;
- color: var(--accent);
+ color: var(--MI_THEME-accent);
&:focus-visible {
outline-offset: 2px;
@@ -217,7 +217,7 @@ rt {
}
._panel {
- background: var(--panel);
+ background: var(--MI_THEME-panel);
border-radius: var(--radius);
overflow: clip;
}
@@ -263,22 +263,22 @@ rt {
padding: 10px;
box-sizing: border-box;
text-align: center;
- border: solid 0.5px var(--divider);
+ border: solid 0.5px var(--MI_THEME-divider);
border-radius: var(--radius);
&:active {
- border-color: var(--accent);
+ border-color: var(--MI_THEME-accent);
}
}
._popup {
- background: var(--popup);
+ background: var(--MI_THEME-popup);
border-radius: var(--radius);
contain: content;
}
._acrylic {
- background: var(--acrylicPanel);
+ background: var(--MI_THEME-acrylicPanel);
-webkit-backdrop-filter: var(--blur, blur(15px));
backdrop-filter: var(--blur, blur(15px));
}
@@ -296,7 +296,7 @@ rt {
}
._link {
- color: var(--link);
+ color: var(--MI_THEME-link);
}
._caption {
diff --git a/packages/frontend-embed/src/theme.ts b/packages/frontend-embed/src/theme.ts
index 23e70cd0d3..4664ad4880 100644
--- a/packages/frontend-embed/src/theme.ts
+++ b/packages/frontend-embed/src/theme.ts
@@ -61,7 +61,7 @@ export function applyTheme(theme: Theme, persist = true) {
}
for (const [k, v] of Object.entries(props)) {
- document.documentElement.style.setProperty(`--${k}`, v.toString());
+ document.documentElement.style.setProperty(`--MI_THEME-${k}`, v.toString());
}
// iframeを正常に透過させるために、cssのcolor-schemeは `light dark;` 固定にしてある。style.scss参照
diff --git a/packages/frontend-embed/src/ui.vue b/packages/frontend-embed/src/ui.vue
index 8da5f46a96..2ed2f58376 100644
--- a/packages/frontend-embed/src/ui.vue
+++ b/packages/frontend-embed/src/ui.vue
@@ -88,8 +88,8 @@ onUnmounted(() => {
diff --git a/packages/frontend/src/components/MkAsUi.vue b/packages/frontend/src/components/MkAsUi.vue
index b50a7fea5c..e52ab5ccad 100644
--- a/packages/frontend/src/components/MkAsUi.vue
+++ b/packages/frontend/src/components/MkAsUi.vue
@@ -106,7 +106,7 @@ const containerStyle = computed(() => {
const border = isBordered ? {
borderWidth: c.borderWidth ?? '1px',
- borderColor: c.borderColor ?? 'var(--divider)',
+ borderColor: c.borderColor ?? 'var(--MI_THEME-divider)',
borderStyle: c.borderStyle ?? 'solid',
} : undefined;
@@ -165,7 +165,7 @@ function openPostForm() {
}
.postForm {
- background: var(--bg);
+ background: var(--MI_THEME-bg);
border-radius: 8px;
}
diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue
index f547991369..0ea4566d4e 100644
--- a/packages/frontend/src/components/MkAutocomplete.vue
+++ b/packages/frontend/src/components/MkAutocomplete.vue
@@ -407,16 +407,16 @@ onBeforeUnmount(() => {
text-overflow: ellipsis;
&:hover {
- background: var(--X3);
+ background: var(--MI_THEME-X3);
}
&[data-selected='true'] {
- background: var(--accent);
+ background: var(--MI_THEME-accent);
color: #fff !important;
}
&:active {
- background: var(--accentDarken);
+ background: var(--MI_THEME-accentDarken);
color: #fff !important;
}
}
diff --git a/packages/frontend/src/components/MkButton.vue b/packages/frontend/src/components/MkButton.vue
index 1156b3f2b8..311facb4aa 100644
--- a/packages/frontend/src/components/MkButton.vue
+++ b/packages/frontend/src/components/MkButton.vue
@@ -129,7 +129,7 @@ function onMousedown(evt: MouseEvent): void {
font-size: 95%;
box-shadow: none;
text-decoration: none;
- background: var(--buttonBg);
+ background: var(--MI_THEME-buttonBg);
border-radius: 5px;
overflow: clip;
box-sizing: border-box;
@@ -140,11 +140,11 @@ function onMousedown(evt: MouseEvent): void {
}
&:not(:disabled):hover {
- background: var(--buttonHoverBg);
+ background: var(--MI_THEME-buttonHoverBg);
}
&:not(:disabled):active {
- background: var(--buttonHoverBg);
+ background: var(--MI_THEME-buttonHoverBg);
}
&.small {
@@ -167,15 +167,15 @@ function onMousedown(evt: MouseEvent): void {
&.primary {
font-weight: bold;
- color: var(--fgOnAccent) !important;
- background: var(--accent);
+ color: var(--MI_THEME-fgOnAccent) !important;
+ background: var(--MI_THEME-accent);
&:not(:disabled):hover {
- background: hsl(from var(--accent) h s calc(l + 5));
+ background: hsl(from var(--MI_THEME-accent) h s calc(l + 5));
}
&:not(:disabled):active {
- background: hsl(from var(--accent) h s calc(l + 5));
+ background: hsl(from var(--MI_THEME-accent) h s calc(l + 5));
}
}
@@ -216,15 +216,15 @@ function onMousedown(evt: MouseEvent): void {
&.gradate {
font-weight: bold;
- color: var(--fgOnAccent) !important;
- background: linear-gradient(90deg, var(--buttonGradateA), var(--buttonGradateB));
+ color: var(--MI_THEME-fgOnAccent) !important;
+ background: linear-gradient(90deg, var(--MI_THEME-buttonGradateA), var(--MI_THEME-buttonGradateB));
&:not(:disabled):hover {
- background: linear-gradient(90deg, hsl(from var(--accent) h s calc(l + 5)), hsl(from var(--accent) h s calc(l + 5)));
+ background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5)));
}
&:not(:disabled):active {
- background: linear-gradient(90deg, hsl(from var(--accent) h s calc(l + 5)), hsl(from var(--accent) h s calc(l + 5)));
+ background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5)));
}
}
diff --git a/packages/frontend/src/components/MkChannelFollowButton.vue b/packages/frontend/src/components/MkChannelFollowButton.vue
index 35dc3ad4bf..d4e4f6179a 100644
--- a/packages/frontend/src/components/MkChannelFollowButton.vue
+++ b/packages/frontend/src/components/MkChannelFollowButton.vue
@@ -68,9 +68,9 @@ async function onClick() {
position: relative;
display: inline-block;
font-weight: bold;
- color: var(--accent);
+ color: var(--MI_THEME-accent);
background: transparent;
- border: solid 1px var(--accent);
+ border: solid 1px var(--MI_THEME-accent);
padding: 0;
height: 31px;
font-size: 16px;
@@ -99,17 +99,17 @@ async function onClick() {
}
&.active {
- color: var(--fgOnAccent);
- background: var(--accent);
+ color: var(--MI_THEME-fgOnAccent);
+ background: var(--MI_THEME-accent);
&:hover {
- background: var(--accentLighten);
- border-color: var(--accentLighten);
+ background: var(--MI_THEME-accentLighten);
+ border-color: var(--MI_THEME-accentLighten);
}
&:active {
- background: var(--accentDarken);
- border-color: var(--accentDarken);
+ background: var(--MI_THEME-accentDarken);
+ border-color: var(--MI_THEME-accentDarken);
}
}
diff --git a/packages/frontend/src/components/MkChannelPreview.vue b/packages/frontend/src/components/MkChannelPreview.vue
index 3c0874a1eb..99580df5e2 100644
--- a/packages/frontend/src/components/MkChannelPreview.vue
+++ b/packages/frontend/src/components/MkChannelPreview.vue
@@ -100,7 +100,7 @@ const bannerStyle = computed(() => {
height: 100%;
border-radius: inherit;
pointer-events: none;
- box-shadow: inset 0 0 0 2px var(--focus);
+ box-shadow: inset 0 0 0 2px var(--MI_THEME-focus);
}
}
@@ -117,7 +117,7 @@ const bannerStyle = computed(() => {
left: 0;
width: 100%;
height: 64px;
- background: linear-gradient(0deg, var(--panel), color(from var(--panel) srgb r g b / 0));
+ background: linear-gradient(0deg, var(--MI_THEME-panel), color(from var(--MI_THEME-panel) srgb r g b / 0));
}
> .name {
@@ -148,7 +148,7 @@ const bannerStyle = computed(() => {
bottom: 16px;
left: 16px;
background: rgba(0, 0, 0, 0.7);
- color: var(--warn);
+ color: var(--MI_THEME-warn);
border-radius: 6px;
font-weight: bold;
font-size: 1em;
@@ -167,7 +167,7 @@ const bannerStyle = computed(() => {
> footer {
padding: 12px 16px;
- border-top: solid 0.5px var(--divider);
+ border-top: solid 0.5px var(--MI_THEME-divider);
> span {
opacity: 0.7;
@@ -213,8 +213,8 @@ const bannerStyle = computed(() => {
top: 0;
right: 0;
transform: translate(25%, -25%);
- background-color: var(--accent);
- border: solid var(--bg) 4px;
+ background-color: var(--MI_THEME-accent);
+ border: solid var(--MI_THEME-bg) 4px;
border-radius: 100%;
width: 1.5rem;
height: 1.5rem;
diff --git a/packages/frontend/src/components/MkChartLegend.vue b/packages/frontend/src/components/MkChartLegend.vue
index 6eb2009784..574cde9da4 100644
--- a/packages/frontend/src/components/MkChartLegend.vue
+++ b/packages/frontend/src/components/MkChartLegend.vue
@@ -53,11 +53,11 @@ defineExpose({
> .item {
font-size: 85%;
padding: 4px 12px 4px 8px;
- border: solid 1px var(--divider);
+ border: solid 1px var(--MI_THEME-divider);
border-radius: 999px;
&:hover {
- border-color: var(--inputBorderHover);
+ border-color: var(--MI_THEME-inputBorderHover);
}
&.disabled {
diff --git a/packages/frontend/src/components/MkClipPreview.vue b/packages/frontend/src/components/MkClipPreview.vue
index dd550733cb..5b09ec90dd 100644
--- a/packages/frontend/src/components/MkClipPreview.vue
+++ b/packages/frontend/src/components/MkClipPreview.vue
@@ -49,13 +49,13 @@ const remaining = computed(() => {
outline: none;
.root {
- box-shadow: inset 0 0 0 2px var(--focus);
+ box-shadow: inset 0 0 0 2px var(--MI_THEME-focus);
}
}
&:hover {
text-decoration: none;
- color: var(--accent);
+ color: var(--MI_THEME-accent);
}
}
@@ -65,7 +65,7 @@ const remaining = computed(() => {
.divider {
height: 1px;
- background: var(--divider);
+ background: var(--MI_THEME-divider);
}
.description {
diff --git a/packages/frontend/src/components/MkCode.core.vue b/packages/frontend/src/components/MkCode.core.vue
index c0e7df5dac..0d7a67eaec 100644
--- a/packages/frontend/src/components/MkCode.core.vue
+++ b/packages/frontend/src/components/MkCode.core.vue
@@ -77,7 +77,7 @@ watch(() => props.lang, (to) => {
margin: .5em 0;
overflow: auto;
border-radius: 8px;
- border: 1px solid var(--divider);
+ border: 1px solid var(--MI_THEME-divider);
font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;
color: var(--shiki-fallback);
diff --git a/packages/frontend/src/components/MkCode.vue b/packages/frontend/src/components/MkCode.vue
index 716dd92678..cb82bfd98b 100644
--- a/packages/frontend/src/components/MkCode.vue
+++ b/packages/frontend/src/components/MkCode.vue
@@ -71,7 +71,7 @@ function copy() {
.codeBlockFallbackRoot {
display: block;
overflow-wrap: anywhere;
- background: var(--bg);
+ background: var(--MI_THEME-bg);
padding: 1em;
margin: .5em 0;
overflow: auto;
@@ -94,8 +94,8 @@ function copy() {
border-radius: 8px;
padding: 24px;
margin-top: 4px;
- color: var(--fg);
- background: var(--bg);
+ color: var(--MI_THEME-fg);
+ background: var(--MI_THEME-bg);
}
.codePlaceholderContainer {
diff --git a/packages/frontend/src/components/MkCodeEditor.vue b/packages/frontend/src/components/MkCodeEditor.vue
index afd9132a12..5bf2301e72 100644
--- a/packages/frontend/src/components/MkCodeEditor.vue
+++ b/packages/frontend/src/components/MkCodeEditor.vue
@@ -140,7 +140,7 @@ watch(v, newValue => {
.caption {
font-size: 0.85em;
padding: 8px 0 0 0;
- color: var(--fgTransparentWeak);
+ color: var(--MI_THEME-fgTransparentWeak);
&:empty {
display: none;
@@ -160,17 +160,17 @@ watch(v, newValue => {
margin: 0;
border-radius: 6px;
padding: 0;
- color: var(--fg);
- border: solid 1px var(--panel);
+ color: var(--MI_THEME-fg);
+ border: solid 1px var(--MI_THEME-panel);
transition: border-color 0.1s ease-out;
font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;
&:hover {
- border-color: var(--inputBorderHover) !important;
+ border-color: var(--MI_THEME-inputBorderHover) !important;
}
}
.focused.codeEditorRoot {
- border-color: var(--accent) !important;
+ border-color: var(--MI_THEME-accent) !important;
border-radius: 6px;
}
@@ -196,7 +196,7 @@ watch(v, newValue => {
resize: none;
text-align: left;
color: transparent;
- caret-color: var(--fg);
+ caret-color: var(--MI_THEME-fg);
background-color: transparent;
border: 0;
border-radius: 6px;
@@ -211,6 +211,6 @@ watch(v, newValue => {
}
.textarea::selection {
- color: var(--bg);
+ color: var(--MI_THEME-bg);
}
diff --git a/packages/frontend/src/components/MkCodeInline.vue b/packages/frontend/src/components/MkCodeInline.vue
index 6add80d1bc..04b6e54108 100644
--- a/packages/frontend/src/components/MkCodeInline.vue
+++ b/packages/frontend/src/components/MkCodeInline.vue
@@ -18,7 +18,7 @@ const props = defineProps<{
display: inline-block;
font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;
overflow-wrap: anywhere;
- background: var(--bg);
+ background: var(--MI_THEME-bg);
padding: .1em;
border-radius: .3em;
}
diff --git a/packages/frontend/src/components/MkColorInput.vue b/packages/frontend/src/components/MkColorInput.vue
index f5c580789b..55a32664de 100644
--- a/packages/frontend/src/components/MkColorInput.vue
+++ b/packages/frontend/src/components/MkColorInput.vue
@@ -60,7 +60,7 @@ const onInput = () => {
.caption {
font-size: 0.85em;
padding: 8px 0 0 0;
- color: var(--fgTransparentWeak);
+ color: var(--MI_THEME-fgTransparentWeak);
&:empty {
display: none;
@@ -72,8 +72,8 @@ const onInput = () => {
&.focused {
> .inputCore {
- border-color: var(--accent) !important;
- //box-shadow: 0 0 0 4px var(--focus);
+ border-color: var(--MI_THEME-accent) !important;
+ //box-shadow: 0 0 0 4px var(--MI_THEME-focus);
}
}
@@ -98,9 +98,9 @@ const onInput = () => {
font: inherit;
font-weight: normal;
font-size: 1em;
- color: var(--fg);
- background: var(--panel);
- border: solid 1px var(--panel);
+ color: var(--MI_THEME-fg);
+ background: var(--MI_THEME-panel);
+ border: solid 1px var(--MI_THEME-panel);
border-radius: 6px;
outline: none;
box-shadow: none;
@@ -108,7 +108,7 @@ const onInput = () => {
transition: border-color 0.1s ease-out;
&:hover {
- border-color: var(--inputBorderHover) !important;
+ border-color: var(--MI_THEME-inputBorderHover) !important;
}
}
diff --git a/packages/frontend/src/components/MkContainer.vue b/packages/frontend/src/components/MkContainer.vue
index 8ad653a0bf..f2bafb4adf 100644
--- a/packages/frontend/src/components/MkContainer.vue
+++ b/packages/frontend/src/components/MkContainer.vue
@@ -167,9 +167,9 @@ onUnmounted(() => {
position: sticky;
top: var(--stickyTop, 0px);
left: 0;
- color: var(--panelHeaderFg);
- background: var(--panelHeaderBg);
- border-bottom: solid 0.5px var(--panelHeaderDivider);
+ color: var(--MI_THEME-panelHeaderFg);
+ background: var(--MI_THEME-panelHeaderBg);
+ border-bottom: solid 0.5px var(--MI_THEME-panelHeaderDivider);
z-index: 2;
line-height: 1.4em;
}
@@ -216,11 +216,11 @@ onUnmounted(() => {
left: 0;
width: 100%;
height: 64px;
- background: linear-gradient(0deg, var(--panel), color(from var(--panel) srgb r g b / 0));
+ background: linear-gradient(0deg, var(--MI_THEME-panel), color(from var(--MI_THEME-panel) srgb r g b / 0));
> .fadeLabel {
display: inline-block;
- background: var(--panel);
+ background: var(--MI_THEME-panel);
padding: 6px 10px;
font-size: 0.8em;
border-radius: 999px;
@@ -229,7 +229,7 @@ onUnmounted(() => {
&:hover {
> .fadeLabel {
- background: var(--panelHighlight);
+ background: var(--MI_THEME-panelHighlight);
}
}
}
diff --git a/packages/frontend/src/components/MkCropperDialog.vue b/packages/frontend/src/components/MkCropperDialog.vue
index 2e1e92cbdf..a25dc36882 100644
--- a/packages/frontend/src/components/MkCropperDialog.vue
+++ b/packages/frontend/src/components/MkCropperDialog.vue
@@ -125,7 +125,7 @@ onMounted(() => {
const computedStyle = getComputedStyle(document.documentElement);
const selection = cropper.getCropperSelection()!;
- selection.themeColor = tinycolor(computedStyle.getPropertyValue('--accent')).toHexString();
+ selection.themeColor = tinycolor(computedStyle.getPropertyValue('--MI_THEME-accent')).toHexString();
selection.aspectRatio = props.aspectRatio;
selection.initialAspectRatio = props.aspectRatio;
selection.outlined = true;
diff --git a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
index c7f1288729..29a435fb1a 100644
--- a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
+++ b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
@@ -85,7 +85,7 @@ function cancel() {
.emojiImgWrapper {
max-width: 100%;
height: 40cqh;
- background-image: repeating-linear-gradient(45deg, transparent, transparent 8px, var(--X5) 8px, var(--X5) 14px);
+ background-image: repeating-linear-gradient(45deg, transparent, transparent 8px, var(--MI_THEME-X5) 8px, var(--MI_THEME-X5) 14px);
border-radius: var(--radius);
margin: auto;
overflow-y: hidden;
@@ -101,8 +101,8 @@ function cancel() {
display: inline-block;
word-break: break-all;
padding: 3px 10px;
- background-color: var(--X5);
- border: solid 1px var(--divider);
+ background-color: var(--MI_THEME-X5);
+ border: solid 1px var(--MI_THEME-divider);
border-radius: var(--radius);
}
diff --git a/packages/frontend/src/components/MkDateSeparatedList.vue b/packages/frontend/src/components/MkDateSeparatedList.vue
index 4b94bef4b6..0886b7a4f7 100644
--- a/packages/frontend/src/components/MkDateSeparatedList.vue
+++ b/packages/frontend/src/components/MkDateSeparatedList.vue
@@ -194,7 +194,7 @@ export default defineComponent({
box-shadow: none;
&:not(:last-child) {
- border-bottom: solid 0.5px var(--divider);
+ border-bottom: solid 0.5px var(--MI_THEME-divider);
}
}
}
@@ -235,7 +235,7 @@ export default defineComponent({
line-height: 32px;
text-align: center;
font-size: 12px;
- color: var(--dateLabelFg);
+ color: var(--MI_THEME-dateLabelFg);
}
.date-1 {
diff --git a/packages/frontend/src/components/MkDialog.vue b/packages/frontend/src/components/MkDialog.vue
index 16cf5b1b75..22130d4fab 100644
--- a/packages/frontend/src/components/MkDialog.vue
+++ b/packages/frontend/src/components/MkDialog.vue
@@ -184,7 +184,7 @@ function onInputKeydown(evt: KeyboardEvent) {
max-width: 480px;
box-sizing: border-box;
text-align: center;
- background: var(--panel);
+ background: var(--MI_THEME-panel);
border-radius: 16px;
}
@@ -206,15 +206,15 @@ function onInputKeydown(evt: KeyboardEvent) {
}
.type_success {
- color: var(--success);
+ color: var(--MI_THEME-success);
}
.type_error {
- color: var(--error);
+ color: var(--MI_THEME-error);
}
.type_warning {
- color: var(--warn);
+ color: var(--MI_THEME-warn);
}
.title {
diff --git a/packages/frontend/src/components/MkDivider.vue b/packages/frontend/src/components/MkDivider.vue
index e4e3af99e4..f72f091383 100644
--- a/packages/frontend/src/components/MkDivider.vue
+++ b/packages/frontend/src/components/MkDivider.vue
@@ -27,6 +27,6 @@ defineProps<{
diff --git a/packages/frontend/src/components/MkDonation.vue b/packages/frontend/src/components/MkDonation.vue
index 098be07a8c..ebface5185 100644
--- a/packages/frontend/src/components/MkDonation.vue
+++ b/packages/frontend/src/components/MkDonation.vue
@@ -79,7 +79,7 @@ function neverShow() {
text-align: center;
padding-top: 25px;
width: 100px;
- color: var(--accent);
+ color: var(--MI_THEME-accent);
}
@media (max-width: 500px) {
.icon {
diff --git a/packages/frontend/src/components/MkDrive.file.vue b/packages/frontend/src/components/MkDrive.file.vue
index 90284890a5..e45c3bd9ce 100644
--- a/packages/frontend/src/components/MkDrive.file.vue
+++ b/packages/frontend/src/components/MkDrive.file.vue
@@ -148,14 +148,14 @@ function onDragend() {
}
&.isSelected {
- background: var(--accent);
+ background: var(--MI_THEME-accent);
&:hover {
- background: var(--accentLighten);
+ background: var(--MI_THEME-accentLighten);
}
&:active {
- background: var(--accentDarken);
+ background: var(--MI_THEME-accentDarken);
}
> .label {
@@ -244,7 +244,7 @@ function onDragend() {
font-size: 0.8em;
text-align: center;
word-break: break-all;
- color: var(--fg);
+ color: var(--MI_THEME-fg);
overflow: hidden;
}
diff --git a/packages/frontend/src/components/MkDrive.folder.vue b/packages/frontend/src/components/MkDrive.folder.vue
index 92b3a23662..391acbc8d3 100644
--- a/packages/frontend/src/components/MkDrive.folder.vue
+++ b/packages/frontend/src/components/MkDrive.folder.vue
@@ -313,7 +313,7 @@ function onContextmenu(ev: MouseEvent) {
position: relative;
padding: 8px;
height: 64px;
- background: var(--driveFolderBg);
+ background: var(--MI_THEME-driveFolderBg);
border-radius: 4px;
cursor: pointer;
@@ -326,7 +326,7 @@ function onContextmenu(ev: MouseEvent) {
right: -4px;
bottom: -4px;
left: -4px;
- border: 2px dashed var(--focus);
+ border: 2px dashed var(--MI_THEME-focus);
border-radius: 4px;
}
}
@@ -345,13 +345,13 @@ function onContextmenu(ev: MouseEvent) {
width: 18px;
height: 18px;
background: #fff;
- border: solid 2px var(--divider);
+ border: solid 2px var(--MI_THEME-divider);
border-radius: 4px;
box-sizing: border-box;
&.checked {
- border-color: var(--accent);
- background: var(--accent);
+ border-color: var(--MI_THEME-accent);
+ background: var(--MI_THEME-accent);
&::after {
content: "\ea5e";
@@ -368,7 +368,7 @@ function onContextmenu(ev: MouseEvent) {
}
&:hover {
- background: var(--accentedBg);
+ background: var(--MI_THEME-accentedBg);
}
}
diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue
index d9ca0a72a0..8bd7ee8324 100644
--- a/packages/frontend/src/components/MkDrive.vue
+++ b/packages/frontend/src/components/MkDrive.vue
@@ -721,7 +721,7 @@ onBeforeUnmount(() => {
box-sizing: border-box;
overflow: auto;
font-size: 0.9em;
- box-shadow: 0 1px 0 var(--divider);
+ box-shadow: 0 1px 0 var(--MI_THEME-divider);
user-select: none;
}
@@ -815,7 +815,7 @@ onBeforeUnmount(() => {
top: 38px;
width: 100%;
height: calc(100% - 38px);
- border: dashed 2px var(--focus);
+ border: dashed 2px var(--MI_THEME-focus);
pointer-events: none;
}
diff --git a/packages/frontend/src/components/MkDriveFileThumbnail.vue b/packages/frontend/src/components/MkDriveFileThumbnail.vue
index eb93aaab6e..3410a915c3 100644
--- a/packages/frontend/src/components/MkDriveFileThumbnail.vue
+++ b/packages/frontend/src/components/MkDriveFileThumbnail.vue
@@ -69,7 +69,7 @@ const isThumbnailAvailable = computed(() => {
.root {
position: relative;
display: flex;
- background: var(--panel);
+ background: var(--MI_THEME-panel);
border-radius: 8px;
overflow: clip;
}
@@ -83,7 +83,7 @@ const isThumbnailAvailable = computed(() => {
height: 100%;
pointer-events: none;
border-radius: inherit;
- box-shadow: inset 0 0 0 4px var(--warn);
+ box-shadow: inset 0 0 0 4px var(--MI_THEME-warn);
}
.iconSub {
diff --git a/packages/frontend/src/components/MkEmbedCodeGenDialog.vue b/packages/frontend/src/components/MkEmbedCodeGenDialog.vue
index c060c3a659..c2bb516c7c 100644
--- a/packages/frontend/src/components/MkEmbedCodeGenDialog.vue
+++ b/packages/frontend/src/components/MkEmbedCodeGenDialog.vue
@@ -306,9 +306,9 @@ onUnmounted(() => {
.embedCodeGenPreviewRoot {
position: relative;
- background-color: var(--bg);
+ background-color: var(--MI_THEME-bg);
background-size: auto auto;
- background-image: repeating-linear-gradient(135deg, transparent, transparent 6px, var(--panel) 6px, var(--panel) 12px);
+ background-image: repeating-linear-gradient(135deg, transparent, transparent 6px, var(--MI_THEME-panel) 6px, var(--MI_THEME-panel) 12px);
cursor: not-allowed;
}
@@ -381,8 +381,8 @@ onUnmounted(() => {
.embedCodeGenResultHeadingIcon {
margin: 0 auto;
- background-color: var(--accentedBg);
- color: var(--accent);
+ background-color: var(--MI_THEME-accentedBg);
+ color: var(--MI_THEME-accent);
text-align: center;
height: 64px;
width: 64px;
diff --git a/packages/frontend/src/components/MkEmojiPicker.section.vue b/packages/frontend/src/components/MkEmojiPicker.section.vue
index fca7aa2f4e..f4caa730bf 100644
--- a/packages/frontend/src/components/MkEmojiPicker.section.vue
+++ b/packages/frontend/src/components/MkEmojiPicker.section.vue
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
@@ -26,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
(:{{ customEmojiTree?.length }} :{{ emojis.length }})
diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue
index 3bad8da06f..219950f135 100644
--- a/packages/frontend/src/components/MkEmojiPicker.vue
+++ b/packages/frontend/src/components/MkEmojiPicker.vue
@@ -580,7 +580,7 @@ defineExpose({
&:disabled {
cursor: not-allowed;
- background: linear-gradient(-45deg, transparent 0% 48%, var(--X6) 48% 52%, transparent 52% 100%);
+ background: linear-gradient(-45deg, transparent 0% 48%, var(--MI_THEME-X6) 48% 52%, transparent 52% 100%);
opacity: 1;
> .emoji {
@@ -615,7 +615,7 @@ defineExpose({
&:disabled {
cursor: not-allowed;
- background: linear-gradient(-45deg, transparent 0% 48%, var(--X6) 48% 52%, transparent 52% 100%);
+ background: linear-gradient(-45deg, transparent 0% 48%, var(--MI_THEME-X6) 48% 52%, transparent 52% 100%);
opacity: 1;
> .emoji {
@@ -638,7 +638,7 @@ defineExpose({
outline: none;
border: none;
background: transparent;
- color: var(--fg);
+ color: var(--MI_THEME-fg);
&:not(:focus):not(.filled) {
margin-bottom: env(safe-area-inset-bottom, 0px);
@@ -647,7 +647,7 @@ defineExpose({
&:not(.filled) {
order: 1;
z-index: 2;
- box-shadow: 0px -1px 0 0px var(--divider);
+ box-shadow: 0px -1px 0 0px var(--MI_THEME-divider);
}
}
@@ -658,11 +658,11 @@ defineExpose({
> .tab {
flex: 1;
height: 38px;
- border-top: solid 0.5px var(--divider);
+ border-top: solid 0.5px var(--MI_THEME-divider);
&.active {
- border-top: solid 1px var(--accent);
- color: var(--accent);
+ border-top: solid 1px var(--MI_THEME-accent);
+ color: var(--MI_THEME-accent);
}
}
}
@@ -681,7 +681,7 @@ defineExpose({
> .group {
&:not(.index) {
padding: 4px 0 8px 0;
- border-top: solid 0.5px var(--divider);
+ border-top: solid 0.5px var(--MI_THEME-divider);
}
> header {
@@ -708,7 +708,7 @@ defineExpose({
cursor: pointer;
&:hover {
- color: var(--accent);
+ color: var(--MI_THEME-accent);
}
}
@@ -730,13 +730,13 @@ defineExpose({
}
&:active {
- background: var(--accent);
+ background: var(--MI_THEME-accent);
box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15);
}
&:disabled {
cursor: not-allowed;
- background: linear-gradient(-45deg, transparent 0% 48%, var(--X6) 48% 52%, transparent 52% 100%);
+ background: linear-gradient(-45deg, transparent 0% 48%, var(--MI_THEME-X6) 48% 52%, transparent 52% 100%);
opacity: 1;
> .emoji {
@@ -757,7 +757,7 @@ defineExpose({
}
&.result {
- border-bottom: solid 0.5px var(--divider);
+ border-bottom: solid 0.5px var(--MI_THEME-divider);
&:empty {
display: none;
diff --git a/packages/frontend/src/components/MkExtensionInstaller.vue b/packages/frontend/src/components/MkExtensionInstaller.vue
index 0f7acd69e7..ed29dade7a 100644
--- a/packages/frontend/src/components/MkExtensionInstaller.vue
+++ b/packages/frontend/src/components/MkExtensionInstaller.vue
@@ -111,7 +111,7 @@ const emits = defineEmits<{
diff --git a/packages/frontend/src/components/MkFollowButton.vue b/packages/frontend/src/components/MkFollowButton.vue
index 0de52906ed..ccea7cd453 100644
--- a/packages/frontend/src/components/MkFollowButton.vue
+++ b/packages/frontend/src/components/MkFollowButton.vue
@@ -165,8 +165,8 @@ onBeforeUnmount(() => {
position: relative;
display: inline-block;
font-weight: bold;
- color: var(--fgOnWhite);
- border: solid 1px var(--accent);
+ color: var(--MI_THEME-fgOnWhite);
+ border: solid 1px var(--MI_THEME-accent);
padding: 0;
height: 31px;
font-size: 16px;
@@ -201,17 +201,17 @@ onBeforeUnmount(() => {
}
&.active {
- color: var(--fgOnAccent);
- background: var(--accent);
+ color: var(--MI_THEME-fgOnAccent);
+ background: var(--MI_THEME-accent);
&:hover {
- background: var(--accentLighten);
- border-color: var(--accentLighten);
+ background: var(--MI_THEME-accentLighten);
+ border-color: var(--MI_THEME-accentLighten);
}
&:active {
- background: var(--accentDarken);
- border-color: var(--accentDarken);
+ background: var(--MI_THEME-accentDarken);
+ border-color: var(--MI_THEME-accentDarken);
}
}
diff --git a/packages/frontend/src/components/MkFormDialog.file.vue b/packages/frontend/src/components/MkFormDialog.file.vue
index 9360594236..ecb6cf882b 100644
--- a/packages/frontend/src/components/MkFormDialog.file.vue
+++ b/packages/frontend/src/components/MkFormDialog.file.vue
@@ -66,6 +66,6 @@ function selectButton(ev: MouseEvent) {
diff --git a/packages/frontend/src/components/MkFormFooter.vue b/packages/frontend/src/components/MkFormFooter.vue
index 1e88d59d8e..f409f6ce50 100644
--- a/packages/frontend/src/components/MkFormFooter.vue
+++ b/packages/frontend/src/components/MkFormFooter.vue
@@ -36,7 +36,7 @@ const props = defineProps<{
}
.text {
- color: var(--warn);
+ color: var(--MI_THEME-warn);
font-size: 90%;
animation: modified-blink 2s infinite;
}
diff --git a/packages/frontend/src/components/MkFukidashi.vue b/packages/frontend/src/components/MkFukidashi.vue
index 09825487bf..307cd15dc8 100644
--- a/packages/frontend/src/components/MkFukidashi.vue
+++ b/packages/frontend/src/components/MkFukidashi.vue
@@ -40,7 +40,7 @@ withDefaults(defineProps<{
diff --git a/packages/frontend/src/components/MkMediaRange.vue b/packages/frontend/src/components/MkMediaRange.vue
index 86ed8ba2cf..df7505b0c3 100644
--- a/packages/frontend/src/components/MkMediaRange.vue
+++ b/packages/frontend/src/components/MkMediaRange.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
@@ -67,7 +67,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@@ -508,7 +508,7 @@ onDeactivated(() => {
height: 100%;
pointer-events: none;
border-radius: inherit;
- box-shadow: inset 0 0 0 4px var(--warn);
+ box-shadow: inset 0 0 0 4px var(--MI_THEME-warn);
}
}
@@ -523,10 +523,10 @@ onDeactivated(() => {
}
.indicator {
- /* Hardcode to black because either --bg or --fg makes it hard to read in dark/light mode */
+ /* Hardcode to black because either --MI_THEME-bg or --MI_THEME-fg makes it hard to read in dark/light mode */
background-color: black;
border-radius: 6px;
- color: var(--accentLighten);
+ color: var(--MI_THEME-accentLighten);
display: inline-block;
font-weight: bold;
font-size: 0.8em;
@@ -537,8 +537,8 @@ onDeactivated(() => {
display: block;
position: absolute;
border-radius: 6px;
- background-color: var(--fg);
- color: var(--accentLighten);
+ background-color: var(--MI_THEME-fg);
+ color: var(--MI_THEME-accentLighten);
font-size: 12px;
opacity: .5;
padding: 5px 8px;
@@ -592,7 +592,7 @@ onDeactivated(() => {
opacity: 0;
transition: opacity .4s ease-in-out;
- background: var(--accent);
+ background: var(--MI_THEME-accent);
color: #fff;
padding: 1rem;
border-radius: 99rem;
@@ -663,7 +663,7 @@ onDeactivated(() => {
font-size: 1.05rem;
&:hover {
- background-color: var(--accent);
+ background-color: var(--MI_THEME-accent);
}
&:focus-visible {
diff --git a/packages/frontend/src/components/MkMention.vue b/packages/frontend/src/components/MkMention.vue
index 71bd5addfb..ac2d3f4398 100644
--- a/packages/frontend/src/components/MkMention.vue
+++ b/packages/frontend/src/components/MkMention.vue
@@ -47,12 +47,12 @@ const avatarUrl = computed(() => defaultStore.state.disableShowingAnimatedImages
display: inline-block;
padding: 4px 8px 4px 4px;
border-radius: 999px;
- color: var(--mention);
- background: color(from var(--mention) srgb r g b / 0.1);
+ color: var(--MI_THEME-mention);
+ background: color(from var(--MI_THEME-mention) srgb r g b / 0.1);
&.isMe {
- color: var(--mentionMe);
- background: color(from var(--mentionMe) srgb r g b / 0.1);
+ color: var(--MI_THEME-mentionMe);
+ background: color(from var(--MI_THEME-mentionMe) srgb r g b / 0.1);
}
}
diff --git a/packages/frontend/src/components/MkMenu.vue b/packages/frontend/src/components/MkMenu.vue
index 14f6bdcc34..59f36f8eec 100644
--- a/packages/frontend/src/components/MkMenu.vue
+++ b/packages/frontend/src/components/MkMenu.vue
@@ -507,7 +507,7 @@ onBeforeUnmount(() => {
overflow: hidden;
text-overflow: ellipsis;
text-decoration: none !important;
- color: var(--menuFg, var(--fg));
+ color: var(--menuFg, var(--MI_THEME-fg));
&::before {
content: "";
@@ -527,7 +527,7 @@ onBeforeUnmount(() => {
outline: none;
&:not(:hover):not(:active)::before {
- outline: var(--focus) solid 2px;
+ outline: var(--MI_THEME-focus) solid 2px;
outline-offset: -2px;
}
}
@@ -536,19 +536,19 @@ onBeforeUnmount(() => {
&:hover,
&:focus-visible:active,
&:focus-visible.active {
- color: var(--menuHoverFg, var(--accent));
+ color: var(--menuHoverFg, var(--MI_THEME-accent));
&::before {
- background-color: var(--menuHoverBg, var(--accentedBg));
+ background-color: var(--menuHoverBg, var(--MI_THEME-accentedBg));
}
}
&:not(:focus-visible):active,
&:not(:focus-visible).active {
- color: var(--menuActiveFg, var(--fgOnAccent));
+ color: var(--menuActiveFg, var(--MI_THEME-fgOnAccent));
&::before {
- background-color: var(--menuActiveBg, var(--accent));
+ background-color: var(--menuActiveBg, var(--MI_THEME-accent));
}
}
}
@@ -566,13 +566,13 @@ onBeforeUnmount(() => {
}
&.radio {
- --menuActiveFg: var(--accent);
- --menuActiveBg: var(--accentedBg);
+ --menuActiveFg: var(--MI_THEME-accent);
+ --menuActiveBg: var(--MI_THEME-accentedBg);
}
&.parent {
- --menuActiveFg: var(--accent);
- --menuActiveBg: var(--accentedBg);
+ --menuActiveFg: var(--MI_THEME-accent);
+ --menuActiveBg: var(--MI_THEME-accentedBg);
}
&.label {
@@ -637,14 +637,14 @@ onBeforeUnmount(() => {
.indicator {
display: flex;
align-items: center;
- color: var(--indicator);
+ color: var(--MI_THEME-indicator);
font-size: 12px;
animation: global-blink 1s infinite;
}
.divider {
margin: 8px 0;
- border-top: solid 0.5px var(--divider);
+ border-top: solid 0.5px var(--MI_THEME-divider);
}
.radioIcon {
@@ -654,11 +654,11 @@ onBeforeUnmount(() => {
height: 1em;
vertical-align: -0.125em;
border-radius: 50%;
- border: solid 2px var(--divider);
- background-color: var(--panel);
+ border: solid 2px var(--MI_THEME-divider);
+ background-color: var(--MI_THEME-panel);
&.radioChecked {
- border-color: var(--accent);
+ border-color: var(--MI_THEME-accent);
&::after {
content: "";
@@ -670,7 +670,7 @@ onBeforeUnmount(() => {
width: 50%;
height: 50%;
border-radius: 50%;
- background-color: var(--accent);
+ background-color: var(--MI_THEME-accent);
}
}
}
diff --git a/packages/frontend/src/components/MkMiniChart.vue b/packages/frontend/src/components/MkMiniChart.vue
index 1b6f6cef31..7ea585ecc2 100644
--- a/packages/frontend/src/components/MkMiniChart.vue
+++ b/packages/frontend/src/components/MkMiniChart.vue
@@ -48,7 +48,7 @@ const polygonPoints = ref('');
const headX = ref
(null);
const headY = ref(null);
const clock = ref(null);
-const accent = tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--accent'));
+const accent = tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--MI_THEME-accent'));
const color = accent.toRgbString();
function draw(): void {
diff --git a/packages/frontend/src/components/MkModalWindow.vue b/packages/frontend/src/components/MkModalWindow.vue
index f26959888b..c77611ef12 100644
--- a/packages/frontend/src/components/MkModalWindow.vue
+++ b/packages/frontend/src/components/MkModalWindow.vue
@@ -94,8 +94,8 @@ defineExpose({
--root-margin: 24px;
- --headerHeight: 46px;
- --headerHeightNarrow: 42px;
+ --MI_THEME-headerHeight: 46px;
+ --MI_THEME-headerHeightNarrow: 42px;
@media (max-width: 500px) {
--root-margin: 16px;
@@ -105,24 +105,24 @@ defineExpose({
.header {
display: flex;
flex-shrink: 0;
- background: var(--windowHeader);
+ background: var(--MI_THEME-windowHeader);
-webkit-backdrop-filter: var(--blur, blur(15px));
backdrop-filter: var(--blur, blur(15px));
}
.headerButton {
- height: var(--headerHeight);
- width: var(--headerHeight);
+ height: var(--MI_THEME-headerHeight);
+ width: var(--MI_THEME-headerHeight);
@media (max-width: 500px) {
- height: var(--headerHeightNarrow);
- width: var(--headerHeightNarrow);
+ height: var(--MI_THEME-headerHeightNarrow);
+ width: var(--MI_THEME-headerHeightNarrow);
}
}
.title {
flex: 1;
- line-height: var(--headerHeight);
+ line-height: var(--MI_THEME-headerHeight);
padding-left: 32px;
font-weight: bold;
white-space: nowrap;
@@ -131,7 +131,7 @@ defineExpose({
pointer-events: none;
@media (max-width: 500px) {
- line-height: var(--headerHeightNarrow);
+ line-height: var(--MI_THEME-headerHeightNarrow);
padding-left: 16px;
}
}
@@ -143,7 +143,7 @@ defineExpose({
.body {
flex: 1;
overflow: auto;
- background: var(--panel);
+ background: var(--MI_THEME-panel);
container-type: size;
}
diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index e8ff743bf2..c5f5431dcf 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -126,8 +126,8 @@ SPDX-License-Identifier: AGPL-3.0-only