From bc5be83e29c6d698fe55877fe111a32a31be9ba5 Mon Sep 17 00:00:00 2001 From: tamaina Date: Thu, 6 Apr 2023 01:56:58 +0000 Subject: [PATCH 01/81] use pnpm@8.1.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e3b806687a..837cbcab1d 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "git", "url": "https://github.com/misskey-dev/misskey.git" }, - "packageManager": "pnpm@8.1.0", + "packageManager": "pnpm@8.1.1", "workspaces": [ "packages/frontend", "packages/backend", From b38811af7c9952d15054f4aec6f81ea22dd290ca Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 15:09:21 +0900 Subject: [PATCH 02/81] fix(backend): fix pack of notification behaviour --- .../src/core/entities/NotificationEntityService.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/core/entities/NotificationEntityService.ts b/packages/backend/src/core/entities/NotificationEntityService.ts index 6b9a9d3320..1948cabad9 100644 --- a/packages/backend/src/core/entities/NotificationEntityService.ts +++ b/packages/backend/src/core/entities/NotificationEntityService.ts @@ -108,7 +108,9 @@ export class NotificationEntityService implements OnModuleInit { ) { if (notifications.length === 0) return []; - const noteIds = notifications.map(x => x.noteId).filter(isNotNull); + let validNotifications = notifications; + + const noteIds = validNotifications.map(x => x.noteId).filter(isNotNull); const notes = noteIds.length > 0 ? await this.notesRepository.find({ where: { id: In(noteIds) }, relations: ['user', 'user.avatar', 'user.banner', 'reply', 'reply.user', 'reply.user.avatar', 'reply.user.banner', 'renote', 'renote.user', 'renote.user.avatar', 'renote.user.banner'], @@ -118,7 +120,9 @@ export class NotificationEntityService implements OnModuleInit { }); const packedNotes = new Map(packedNotesArray.map(p => [p.id, p])); - const userIds = notifications.map(x => x.notifierId).filter(isNotNull); + validNotifications = validNotifications.filter(x => x.noteId == null || packedNotes.has(x.noteId)); + + const userIds = validNotifications.map(x => x.notifierId).filter(isNotNull); const users = userIds.length > 0 ? await this.usersRepository.find({ where: { id: In(userIds) }, relations: ['avatar', 'banner'], @@ -128,7 +132,7 @@ export class NotificationEntityService implements OnModuleInit { }); const packedUsers = new Map(packedUsersArray.map(p => [p.id, p])); - return await Promise.all(notifications.map(x => this.pack(x, meId, {}, { + return await Promise.all(validNotifications.map(x => this.pack(x, meId, {}, { packedNotes, packedUsers, }))); From a0d5e2469dac8ac04026b0c346923decdf92dc50 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 18:08:35 +0900 Subject: [PATCH 03/81] Update about-misskey.vue --- packages/frontend/src/pages/about-misskey.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/frontend/src/pages/about-misskey.vue b/packages/frontend/src/pages/about-misskey.vue index 60f61ed293..7e0696f8bc 100644 --- a/packages/frontend/src/pages/about-misskey.vue +++ b/packages/frontend/src/pages/about-misskey.vue @@ -217,6 +217,7 @@ const patrons = [ '氷月氷華里', 'Ebise Lutica', '巣黒るい@リスケモ男の娘VTuber!', + 'ふぇいぽむ', ]; let thereIsTreasure = $ref($i && !claimedAchievements.includes('foundTreasure')); From de9d136a3f5477535d0f0825f907bfb988c6d69d Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 18:27:42 +0900 Subject: [PATCH 04/81] perf(backend): reduce db query --- packages/backend/src/core/entities/NoteEntityService.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts index 94b3029c58..1320e56ca2 100644 --- a/packages/backend/src/core/entities/NoteEntityService.ts +++ b/packages/backend/src/core/entities/NoteEntityService.ts @@ -183,6 +183,11 @@ export class NoteEntityService implements OnModuleInit { // 実装上抜けがあるだけかもしれないので、「ヒントに含まれてなかったら(=undefinedなら)return」のようにはしない } + // パフォーマンスのためノートが作成されてから1秒以上経っていない場合はリアクションを取得しない + if (note.createdAt.getTime() + 1000 > Date.now()) { + return undefined; + } + const reaction = await this.noteReactionsRepository.findOneBy({ userId: meId, noteId: note.id, @@ -395,7 +400,8 @@ export class NoteEntityService implements OnModuleInit { const myReactionsMap = new Map(); if (meId) { const renoteIds = notes.filter(n => n.renoteId != null).map(n => n.renoteId!); - const targets = [...notes.map(n => n.id), ...renoteIds]; + // パフォーマンスのためノートが作成されてから1秒以上経っていない場合はリアクションを取得しない + const targets = [...notes.filter(n => n.createdAt.getTime() + 1000 < Date.now()).map(n => n.id), ...renoteIds]; const myReactions = await this.noteReactionsRepository.findBy({ userId: meId, noteId: In(targets), From c29f21ac56f464cfe05b04c44a3c666da5c8e717 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 19:45:12 +0900 Subject: [PATCH 05/81] perf(backend): prevent emit needless db queries --- packages/backend/src/core/entities/DriveFileEntityService.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/backend/src/core/entities/DriveFileEntityService.ts b/packages/backend/src/core/entities/DriveFileEntityService.ts index 2d40f444cb..d82f36d971 100644 --- a/packages/backend/src/core/entities/DriveFileEntityService.ts +++ b/packages/backend/src/core/entities/DriveFileEntityService.ts @@ -266,6 +266,7 @@ export class DriveFileEntityService { fileIds: DriveFile['id'][], options?: PackOptions, ): Promise['id'], Packed<'DriveFile'> | null>> { + if (fileIds.length === 0) return new Map(); const files = await this.driveFilesRepository.findBy({ id: In(fileIds) }); const packedFiles = await this.packMany(files, options); const map = new Map['id'], Packed<'DriveFile'> | null>(packedFiles.map(f => [f.id, f])); @@ -280,6 +281,7 @@ export class DriveFileEntityService { fileIds: DriveFile['id'][], options?: PackOptions, ): Promise[]> { + if (fileIds.length === 0) return []; const filesMap = await this.packManyByIdsMap(fileIds, options); return fileIds.map(id => filesMap.get(id)).filter(isNotNull); } From 521eb95dbc89d1825867f9ab4dc3510cbd504ba9 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 19:48:24 +0900 Subject: [PATCH 06/81] perf(backend): cache avatar and banner url to db --- ...1680775031481-avatar-url-and-banner-url.js | 17 ++++++ .../activitypub/models/ApPersonService.ts | 49 +++++++++++----- .../src/core/entities/NoteEntityService.ts | 2 +- .../entities/NotificationEntityService.ts | 3 +- .../src/core/entities/UserEntityService.ts | 57 +++++++------------ packages/backend/src/models/entities/User.ts | 20 +++++++ packages/backend/src/server/ServerService.ts | 3 +- .../server/api/endpoints/antennas/notes.ts | 8 +-- .../server/api/endpoints/channels/timeline.ts | 6 -- .../src/server/api/endpoints/clips/notes.ts | 6 -- .../src/server/api/endpoints/i/update.ts | 12 +++- .../backend/src/server/api/endpoints/notes.ts | 8 +-- .../server/api/endpoints/notes/children.ts | 8 +-- .../server/api/endpoints/notes/featured.ts | 8 +-- .../api/endpoints/notes/global-timeline.ts | 8 +-- .../api/endpoints/notes/hybrid-timeline.ts | 6 -- .../api/endpoints/notes/local-timeline.ts | 8 +-- .../server/api/endpoints/notes/mentions.ts | 8 +-- .../server/api/endpoints/notes/reactions.ts | 2 +- .../src/server/api/endpoints/notes/renotes.ts | 10 +--- .../src/server/api/endpoints/notes/replies.ts | 8 +-- .../api/endpoints/notes/search-by-tag.ts | 8 +-- .../src/server/api/endpoints/notes/search.ts | 8 +-- .../server/api/endpoints/notes/timeline.ts | 8 +-- .../api/endpoints/notes/user-list-timeline.ts | 6 -- .../src/server/api/endpoints/users/notes.ts | 8 +-- .../src/server/web/ClientServerService.ts | 12 ++-- .../backend/src/server/web/FeedService.ts | 2 +- 28 files changed, 126 insertions(+), 183 deletions(-) create mode 100644 packages/backend/migration/1680775031481-avatar-url-and-banner-url.js diff --git a/packages/backend/migration/1680775031481-avatar-url-and-banner-url.js b/packages/backend/migration/1680775031481-avatar-url-and-banner-url.js new file mode 100644 index 0000000000..7c5fe7ac5e --- /dev/null +++ b/packages/backend/migration/1680775031481-avatar-url-and-banner-url.js @@ -0,0 +1,17 @@ +export class AvatarUrlAndBannerUrl1680775031481 { + name = 'AvatarUrlAndBannerUrl1680775031481' + + async up(queryRunner) { + await queryRunner.query(`ALTER TABLE "user" ADD "avatarUrl" character varying(512)`); + await queryRunner.query(`ALTER TABLE "user" ADD "bannerUrl" character varying(512)`); + await queryRunner.query(`ALTER TABLE "user" ADD "avatarBlurhash" character varying(128)`); + await queryRunner.query(`ALTER TABLE "user" ADD "bannerBlurhash" character varying(128)`); + } + + async down(queryRunner) { + await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "bannerBlurhash"`); + await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "avatarBlurhash"`); + await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "bannerUrl"`); + await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "avatarUrl"`); + } +} diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts index 67e907c271..664e7eb4ea 100644 --- a/packages/backend/src/core/activitypub/models/ApPersonService.ts +++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts @@ -31,6 +31,7 @@ import type { UtilityService } from '@/core/UtilityService.js'; import type { UserEntityService } from '@/core/entities/UserEntityService.js'; import { bindThis } from '@/decorators.js'; import { MetaService } from '@/core/MetaService.js'; +import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js'; import { getApId, getApType, getOneApHrefNullable, isActor, isCollection, isCollectionOrOrderedCollection, isPropertyValue } from '../type.js'; import { extractApHashtags } from './tag.js'; import type { OnModuleInit } from '@nestjs/common'; @@ -49,6 +50,7 @@ const summaryLength = 2048; export class ApPersonService implements OnModuleInit { private utilityService: UtilityService; private userEntityService: UserEntityService; + private driveFileEntityService: DriveFileEntityService; private idService: IdService; private globalEventService: GlobalEventService; private metaService: MetaService; @@ -113,6 +115,7 @@ export class ApPersonService implements OnModuleInit { onModuleInit() { this.utilityService = this.moduleRef.get('UtilityService'); this.userEntityService = this.moduleRef.get('UserEntityService'); + this.driveFileEntityService = this.moduleRef.get('DriveFileEntityService'); this.idService = this.moduleRef.get('IdService'); this.globalEventService = this.moduleRef.get('GlobalEventService'); this.metaService = this.moduleRef.get('MetaService'); @@ -356,32 +359,44 @@ export class ApPersonService implements OnModuleInit { const avatarId = avatar ? avatar.id : null; const bannerId = banner ? banner.id : null; + const avatarUrl = avatar ? this.driveFileEntityService.getPublicUrl(avatar, 'avatar') : null; + const bannerUrl = banner ? this.driveFileEntityService.getPublicUrl(banner) : null; + const avatarBlurhash = avatar ? avatar.blurhash : null; + const bannerBlurhash = banner ? banner.blurhash : null; await this.usersRepository.update(user!.id, { avatarId, bannerId, + avatarUrl, + bannerUrl, + avatarBlurhash, + bannerBlurhash, }); - user!.avatarId = avatarId; - user!.bannerId = bannerId; - //#endregion + user!.avatarId = avatarId; + user!.bannerId = bannerId; + user!.avatarUrl = avatarUrl; + user!.bannerUrl = bannerUrl; + user!.avatarBlurhash = avatarBlurhash; + user!.bannerBlurhash = bannerBlurhash; + //#endregion - //#region カスタム絵文字取得 - const emojis = await this.apNoteService.extractEmojis(person.tag ?? [], host).catch(err => { - this.logger.info(`extractEmojis: ${err}`); - return [] as Emoji[]; - }); + //#region カスタム絵文字取得 + const emojis = await this.apNoteService.extractEmojis(person.tag ?? [], host).catch(err => { + this.logger.info(`extractEmojis: ${err}`); + return [] as Emoji[]; + }); - const emojiNames = emojis.map(emoji => emoji.name); + const emojiNames = emojis.map(emoji => emoji.name); - await this.usersRepository.update(user!.id, { - emojis: emojiNames, - }); - //#endregion + await this.usersRepository.update(user!.id, { + emojis: emojiNames, + }); + //#endregion - await this.updateFeatured(user!.id, resolver).catch(err => this.logger.error(err)); + await this.updateFeatured(user!.id, resolver).catch(err => this.logger.error(err)); - return user!; + return user!; } /** @@ -463,10 +478,14 @@ export class ApPersonService implements OnModuleInit { if (avatar) { updates.avatarId = avatar.id; + updates.avatarUrl = this.driveFileEntityService.getPublicUrl(avatar, 'avatar'); + updates.avatarBlurhash = avatar.blurhash; } if (banner) { updates.bannerId = banner.id; + updates.bannerUrl = this.driveFileEntityService.getPublicUrl(banner); + updates.bannerBlurhash = banner.blurhash; } // Update user diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts index 1320e56ca2..f23e0f38ea 100644 --- a/packages/backend/src/core/entities/NoteEntityService.ts +++ b/packages/backend/src/core/entities/NoteEntityService.ts @@ -415,7 +415,7 @@ export class NoteEntityService implements OnModuleInit { await this.customEmojiService.prefetchEmojis(this.aggregateNoteEmojis(notes)); // TODO: 本当は renote とか reply がないのに renoteId とか replyId があったらここで解決しておく const fileIds = notes.map(n => [n.fileIds, n.renote?.fileIds, n.reply?.fileIds]).flat(2).filter(isNotNull); - const packedFiles = await this.driveFileEntityService.packManyByIdsMap(fileIds); + const packedFiles = fileIds.length > 0 ? await this.driveFileEntityService.packManyByIdsMap(fileIds) : new Map(); return await Promise.all(notes.map(n => this.pack(n, me, { ...options, diff --git a/packages/backend/src/core/entities/NotificationEntityService.ts b/packages/backend/src/core/entities/NotificationEntityService.ts index 1948cabad9..0dc63d969f 100644 --- a/packages/backend/src/core/entities/NotificationEntityService.ts +++ b/packages/backend/src/core/entities/NotificationEntityService.ts @@ -113,7 +113,7 @@ export class NotificationEntityService implements OnModuleInit { const noteIds = validNotifications.map(x => x.noteId).filter(isNotNull); const notes = noteIds.length > 0 ? await this.notesRepository.find({ where: { id: In(noteIds) }, - relations: ['user', 'user.avatar', 'user.banner', 'reply', 'reply.user', 'reply.user.avatar', 'reply.user.banner', 'renote', 'renote.user', 'renote.user.avatar', 'renote.user.banner'], + relations: ['user', 'reply', 'reply.user', 'renote', 'renote.user'], }) : []; const packedNotesArray = await this.noteEntityService.packMany(notes, { id: meId }, { detail: true, @@ -125,7 +125,6 @@ export class NotificationEntityService implements OnModuleInit { const userIds = validNotifications.map(x => x.notifierId).filter(isNotNull); const users = userIds.length > 0 ? await this.usersRepository.find({ where: { id: In(userIds) }, - relations: ['avatar', 'banner'], }) : []; const packedUsersArray = await this.userEntityService.packMany(users, { id: meId }, { detail: false, diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts index f2f5e4b582..6d8a4dc14e 100644 --- a/packages/backend/src/core/entities/UserEntityService.ts +++ b/packages/backend/src/core/entities/UserEntityService.ts @@ -269,27 +269,6 @@ export class UserEntityService implements OnModuleInit { ); } - @bindThis - public async getAvatarUrl(user: User): Promise { - if (user.avatar) { - return this.driveFileEntityService.getPublicUrl(user.avatar, 'avatar') ?? this.getIdenticonUrl(user); - } else if (user.avatarId) { - const avatar = await this.driveFilesRepository.findOneByOrFail({ id: user.avatarId }); - return this.driveFileEntityService.getPublicUrl(avatar, 'avatar') ?? this.getIdenticonUrl(user); - } else { - return this.getIdenticonUrl(user); - } - } - - @bindThis - public getAvatarUrlSync(user: User): string { - if (user.avatar) { - return this.driveFileEntityService.getPublicUrl(user.avatar, 'avatar') ?? this.getIdenticonUrl(user); - } else { - return this.getIdenticonUrl(user); - } - } - @bindThis public getIdenticonUrl(user: User): string { return `${this.config.url}/identicon/${user.username.toLowerCase()}@${user.host ?? this.config.host}`; @@ -309,19 +288,23 @@ export class UserEntityService implements OnModuleInit { includeSecrets: false, }, options); - let user: User; + const user = typeof src === 'object' ? src : await this.usersRepository.findOneByOrFail({ id: src }); - if (typeof src === 'object') { - user = src; - if (src.avatar === undefined && src.avatarId) src.avatar = await this.driveFilesRepository.findOneBy({ id: src.avatarId }) ?? null; - if (src.banner === undefined && src.bannerId) src.banner = await this.driveFilesRepository.findOneBy({ id: src.bannerId }) ?? null; - } else { - user = await this.usersRepository.findOneOrFail({ - where: { id: src }, - relations: { - avatar: true, - banner: true, - }, + // migration + if (user.avatarId != null && user.avatarUrl === null) { + const avatar = await this.driveFilesRepository.findOneByOrFail({ id: user.avatarId }); + user.avatarUrl = this.driveFileEntityService.getPublicUrl(avatar, 'avatar'); + this.usersRepository.update(user.id, { + avatarUrl: user.avatarUrl, + avatarBlurhash: avatar.blurhash, + }); + } + if (user.bannerId != null && user.bannerUrl === null) { + const banner = await this.driveFilesRepository.findOneByOrFail({ id: user.bannerId }); + user.bannerUrl = this.driveFileEntityService.getPublicUrl(banner); + this.usersRepository.update(user.id, { + bannerUrl: user.bannerUrl, + bannerBlurhash: banner.blurhash, }); } @@ -356,8 +339,8 @@ export class UserEntityService implements OnModuleInit { name: user.name, username: user.username, host: user.host, - avatarUrl: this.getAvatarUrlSync(user), - avatarBlurhash: user.avatar?.blurhash ?? null, + avatarUrl: user.avatarUrl ?? this.getIdenticonUrl(user), + avatarBlurhash: user.avatarBlurhash, isBot: user.isBot ?? falsy, isCat: user.isCat ?? falsy, instance: user.host ? this.userInstanceCache.fetch(user.host, @@ -386,8 +369,8 @@ export class UserEntityService implements OnModuleInit { createdAt: user.createdAt.toISOString(), updatedAt: user.updatedAt ? user.updatedAt.toISOString() : null, lastFetchedAt: user.lastFetchedAt ? user.lastFetchedAt.toISOString() : null, - bannerUrl: user.banner ? this.driveFileEntityService.getPublicUrl(user.banner) : null, - bannerBlurhash: user.banner?.blurhash ?? null, + bannerUrl: user.bannerUrl, + bannerBlurhash: user.bannerBlurhash, isLocked: user.isLocked, isSilenced: this.roleService.getUserPolicies(user.id).then(r => !r.canPublicNote), isSuspended: user.isSuspended ?? falsy, diff --git a/packages/backend/src/models/entities/User.ts b/packages/backend/src/models/entities/User.ts index 0a8b89ea06..ca53c57d5a 100644 --- a/packages/backend/src/models/entities/User.ts +++ b/packages/backend/src/models/entities/User.ts @@ -100,6 +100,26 @@ export class User { @JoinColumn() public banner: DriveFile | null; + @Column('varchar', { + length: 512, nullable: true, + }) + public avatarUrl: string | null; + + @Column('varchar', { + length: 512, nullable: true, + }) + public bannerUrl: string | null; + + @Column('varchar', { + length: 128, nullable: true, + }) + public avatarBlurhash: string | null; + + @Column('varchar', { + length: 128, nullable: true, + }) + public bannerBlurhash: string | null; + @Index() @Column('varchar', { length: 128, array: true, default: '{}', diff --git a/packages/backend/src/server/ServerService.ts b/packages/backend/src/server/ServerService.ts index 3f116845cb..9257fee13e 100644 --- a/packages/backend/src/server/ServerService.ts +++ b/packages/backend/src/server/ServerService.ts @@ -149,13 +149,12 @@ export class ServerService implements OnApplicationShutdown { host: (host == null) || (host === this.config.host) ? IsNull() : host, isSuspended: false, }, - relations: ['avatar'], }); reply.header('Cache-Control', 'public, max-age=86400'); if (user) { - reply.redirect(this.userEntityService.getAvatarUrlSync(user)); + reply.redirect(user.avatarUrl ?? this.userEntityService.getIdenticonUrl(user)); } else { reply.redirect('/static-assets/user-unknown.png'); } diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts index 364f9d9c05..f08c20ae48 100644 --- a/packages/backend/src/server/api/endpoints/antennas/notes.ts +++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts @@ -95,16 +95,10 @@ export default class extends Endpoint { const query = this.notesRepository.createQueryBuilder('note') .where('note.id IN (:...noteIds)', { noteIds: noteIds }) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateVisibilityQuery(query, me); this.queryService.generateMutedUserQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/channels/timeline.ts b/packages/backend/src/server/api/endpoints/channels/timeline.ts index eef343d139..dfc2a582dc 100644 --- a/packages/backend/src/server/api/endpoints/channels/timeline.ts +++ b/packages/backend/src/server/api/endpoints/channels/timeline.ts @@ -93,16 +93,10 @@ export default class extends Endpoint { const query = this.notesRepository.createQueryBuilder('note') .where('note.id IN (:...noteIds)', { noteIds: noteIds }) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner') .leftJoinAndSelect('note.channel', 'channel'); if (me) { diff --git a/packages/backend/src/server/api/endpoints/clips/notes.ts b/packages/backend/src/server/api/endpoints/clips/notes.ts index 6818d31cc4..dcb415b752 100644 --- a/packages/backend/src/server/api/endpoints/clips/notes.ts +++ b/packages/backend/src/server/api/endpoints/clips/notes.ts @@ -75,16 +75,10 @@ export default class extends Endpoint { const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) .innerJoin(this.clipNotesRepository.metadata.targetName, 'clipNote', 'clipNote.noteId = note.id') .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner') .andWhere('clipNote.clipId = :clipId', { clipId: clip.id }); if (me) { diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index c20f2b7913..be1c72b207 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -19,6 +19,7 @@ import { HashtagService } from '@/core/HashtagService.js'; import { DI } from '@/di-symbols.js'; import { RoleService } from '@/core/RoleService.js'; import { CacheService } from '@/core/CacheService.js'; +import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js'; import { ApiError } from '../../error.js'; export const meta = { @@ -148,6 +149,7 @@ export default class extends Endpoint { private pagesRepository: PagesRepository, private userEntityService: UserEntityService, + private driveFileEntityService: DriveFileEntityService, private globalEventService: GlobalEventService, private userFollowingService: UserFollowingService, private accountUpdateService: AccountUpdateService, @@ -170,8 +172,6 @@ export default class extends Endpoint { if (ps.location !== undefined) profileUpdates.location = ps.location; if (ps.birthday !== undefined) profileUpdates.birthday = ps.birthday; if (ps.ffVisibility !== undefined) profileUpdates.ffVisibility = ps.ffVisibility; - if (ps.avatarId !== undefined) updates.avatarId = ps.avatarId; - if (ps.bannerId !== undefined) updates.bannerId = ps.bannerId; if (ps.mutedWords !== undefined) { // TODO: ちゃんと数える const length = JSON.stringify(ps.mutedWords).length; @@ -217,6 +217,10 @@ export default class extends Endpoint { if (avatar == null || avatar.userId !== user.id) throw new ApiError(meta.errors.noSuchAvatar); if (!avatar.type.startsWith('image/')) throw new ApiError(meta.errors.avatarNotAnImage); + + updates.avatarId = avatar.id; + updates.avatarUrl = this.driveFileEntityService.getPublicUrl(avatar, 'avatar'); + updates.avatarBlurhash = avatar.blurhash; } if (ps.bannerId) { @@ -224,6 +228,10 @@ export default class extends Endpoint { if (banner == null || banner.userId !== user.id) throw new ApiError(meta.errors.noSuchBanner); if (!banner.type.startsWith('image/')) throw new ApiError(meta.errors.bannerNotAnImage); + + updates.bannerId = banner.id; + updates.bannerUrl = this.driveFileEntityService.getPublicUrl(banner); + updates.bannerBlurhash = banner.blurhash; } if (ps.pinnedPageId) { diff --git a/packages/backend/src/server/api/endpoints/notes.ts b/packages/backend/src/server/api/endpoints/notes.ts index 0a8f2292ac..5fbc7aba58 100644 --- a/packages/backend/src/server/api/endpoints/notes.ts +++ b/packages/backend/src/server/api/endpoints/notes.ts @@ -49,16 +49,10 @@ export default class extends Endpoint { .andWhere('note.visibility = \'public\'') .andWhere('note.localOnly = FALSE') .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); if (ps.local) { query.andWhere('note.userHost IS NULL'); diff --git a/packages/backend/src/server/api/endpoints/notes/children.ts b/packages/backend/src/server/api/endpoints/notes/children.ts index ea7a825f9d..26f2d6772d 100644 --- a/packages/backend/src/server/api/endpoints/notes/children.ts +++ b/packages/backend/src/server/api/endpoints/notes/children.ts @@ -57,16 +57,10 @@ export default class extends Endpoint { })); })) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateVisibilityQuery(query, me); if (me) { diff --git a/packages/backend/src/server/api/endpoints/notes/featured.ts b/packages/backend/src/server/api/endpoints/notes/featured.ts index 6bf17b222a..bdb06498bc 100644 --- a/packages/backend/src/server/api/endpoints/notes/featured.ts +++ b/packages/backend/src/server/api/endpoints/notes/featured.ts @@ -53,16 +53,10 @@ export default class extends Endpoint { .andWhere('note.createdAt > :date', { date: new Date(Date.now() - day) }) .andWhere('note.visibility = \'public\'') .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); if (ps.channelId) query.andWhere('note.channelId = :channelId', { channelId: ps.channelId }); diff --git a/packages/backend/src/server/api/endpoints/notes/global-timeline.ts b/packages/backend/src/server/api/endpoints/notes/global-timeline.ts index 9118d33936..c11c1eac40 100644 --- a/packages/backend/src/server/api/endpoints/notes/global-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/global-timeline.ts @@ -73,16 +73,10 @@ export default class extends Endpoint { .andWhere('note.visibility = \'public\'') .andWhere('note.channelId IS NULL') .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateRepliesQuery(query, me); if (me) { diff --git a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts index 8a7ec65ab4..89abd91c7e 100644 --- a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts @@ -91,16 +91,10 @@ export default class extends Endpoint { .orWhere('(note.visibility = \'public\') AND (note.userHost IS NULL)'); })) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner') .setParameters(followingQuery.getParameters()); this.queryService.generateChannelQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts index 8c1c07a9f4..afdafc7c55 100644 --- a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts @@ -80,16 +80,10 @@ export default class extends Endpoint { .andWhere('note.id > :minId', { minId: this.idService.genId(new Date(Date.now() - (1000 * 60 * 60 * 24 * 10))) }) // 10日前まで .andWhere('(note.visibility = \'public\') AND (note.userHost IS NULL)') .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateChannelQuery(query, me); this.queryService.generateRepliesQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/notes/mentions.ts b/packages/backend/src/server/api/endpoints/notes/mentions.ts index dcb0d0adcb..4e9f604d8d 100644 --- a/packages/backend/src/server/api/endpoints/notes/mentions.ts +++ b/packages/backend/src/server/api/endpoints/notes/mentions.ts @@ -60,16 +60,10 @@ export default class extends Endpoint { .orWhere(`'{"${me.id}"}' <@ note.visibleUserIds`); })) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateVisibilityQuery(query, me); this.queryService.generateMutedUserQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/notes/reactions.ts b/packages/backend/src/server/api/endpoints/notes/reactions.ts index f758bfe9b1..4772c4f809 100644 --- a/packages/backend/src/server/api/endpoints/notes/reactions.ts +++ b/packages/backend/src/server/api/endpoints/notes/reactions.ts @@ -75,7 +75,7 @@ export default class extends Endpoint { order: { id: -1, }, - relations: ['user', 'user.avatar', 'user.banner', 'note'], + relations: ['user', 'note'], }); return await Promise.all(reactions.map(reaction => this.noteReactionEntityService.pack(reaction, me))); diff --git a/packages/backend/src/server/api/endpoints/notes/renotes.ts b/packages/backend/src/server/api/endpoints/notes/renotes.ts index 026a1baa3e..d406855660 100644 --- a/packages/backend/src/server/api/endpoints/notes/renotes.ts +++ b/packages/backend/src/server/api/endpoints/notes/renotes.ts @@ -4,8 +4,8 @@ import { Endpoint } from '@/server/api/endpoint-base.js'; import { QueryService } from '@/core/QueryService.js'; import { NoteEntityService } from '@/core/entities/NoteEntityService.js'; import { DI } from '@/di-symbols.js'; -import { ApiError } from '../../error.js'; import { GetterService } from '@/server/api/GetterService.js'; +import { ApiError } from '../../error.js'; export const meta = { tags: ['notes'], @@ -62,16 +62,10 @@ export default class extends Endpoint { const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) .andWhere('note.renoteId = :renoteId', { renoteId: note.id }) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateVisibilityQuery(query, me); if (me) this.queryService.generateMutedUserQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/notes/replies.ts b/packages/backend/src/server/api/endpoints/notes/replies.ts index 4df95962c8..f2af71d55f 100644 --- a/packages/backend/src/server/api/endpoints/notes/replies.ts +++ b/packages/backend/src/server/api/endpoints/notes/replies.ts @@ -46,16 +46,10 @@ export default class extends Endpoint { const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) .andWhere('note.replyId = :replyId', { replyId: ps.noteId }) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateVisibilityQuery(query, me); if (me) this.queryService.generateMutedUserQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts b/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts index da1a4bcc46..2956bf1cbd 100644 --- a/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts +++ b/packages/backend/src/server/api/endpoints/notes/search-by-tag.ts @@ -71,16 +71,10 @@ export default class extends Endpoint { super(meta, paramDef, async (ps, me) => { const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateVisibilityQuery(query, me); if (me) this.queryService.generateMutedUserQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts index 5db5b6267f..fb5abd917f 100644 --- a/packages/backend/src/server/api/endpoints/notes/search.ts +++ b/packages/backend/src/server/api/endpoints/notes/search.ts @@ -85,16 +85,10 @@ export default class extends Endpoint { query .andWhere('note.text ILIKE :q', { q: `%${ sqlLikeEscape(ps.query) }%` }) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateVisibilityQuery(query, me); if (me) this.queryService.generateMutedUserQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts index d9e72d2603..c6ee1e5c2b 100644 --- a/packages/backend/src/server/api/endpoints/notes/timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts @@ -70,16 +70,10 @@ export default class extends Endpoint { ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) .andWhere('note.id > :minId', { minId: this.idService.genId(new Date(Date.now() - (1000 * 60 * 60 * 24 * 10))) }) // 10日前まで .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); if (followees.length > 0) { const meOrFolloweeIds = [me.id, ...followees.map(f => f.followeeId)]; diff --git a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts index 9b23103fd4..afc9bc4213 100644 --- a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts @@ -84,16 +84,10 @@ export default class extends Endpoint { const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) .innerJoin(this.userListJoiningsRepository.metadata.targetName, 'userListJoining', 'userListJoining.userId = note.userId') .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner') .andWhere('userListJoining.userListId = :userListId', { userListId: list.id }); this.queryService.generateVisibilityQuery(query, me); diff --git a/packages/backend/src/server/api/endpoints/users/notes.ts b/packages/backend/src/server/api/endpoints/users/notes.ts index aab32cc58c..aaf94734a3 100644 --- a/packages/backend/src/server/api/endpoints/users/notes.ts +++ b/packages/backend/src/server/api/endpoints/users/notes.ts @@ -74,16 +74,10 @@ export default class extends Endpoint { const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate) .andWhere('note.userId = :userId', { userId: user.id }) .innerJoinAndSelect('note.user', 'user') - .leftJoinAndSelect('user.avatar', 'avatar') - .leftJoinAndSelect('user.banner', 'banner') .leftJoinAndSelect('note.reply', 'reply') .leftJoinAndSelect('note.renote', 'renote') .leftJoinAndSelect('reply.user', 'replyUser') - .leftJoinAndSelect('replyUser.avatar', 'replyUserAvatar') - .leftJoinAndSelect('replyUser.banner', 'replyUserBanner') - .leftJoinAndSelect('renote.user', 'renoteUser') - .leftJoinAndSelect('renoteUser.avatar', 'renoteUserAvatar') - .leftJoinAndSelect('renoteUser.banner', 'renoteUserBanner'); + .leftJoinAndSelect('renote.user', 'renoteUser'); this.queryService.generateVisibilityQuery(query, me); if (me) { diff --git a/packages/backend/src/server/web/ClientServerService.ts b/packages/backend/src/server/web/ClientServerService.ts index fb76f07e48..99ae1b7af6 100644 --- a/packages/backend/src/server/web/ClientServerService.ts +++ b/packages/backend/src/server/web/ClientServerService.ts @@ -419,7 +419,7 @@ export class ClientServerService { reply.header('Cache-Control', 'public, max-age=15'); return await reply.view('user', { user, profile, me, - avatarUrl: await this.userEntityService.getAvatarUrl(user), + avatarUrl: user.avatarUrl ?? this.userEntityService.getIdenticonUrl(user), sub: request.params.sub, instanceName: meta.name ?? 'Misskey', icon: meta.iconUrl, @@ -464,7 +464,7 @@ export class ClientServerService { return await reply.view('note', { note: _note, profile, - avatarUrl: await this.userEntityService.getAvatarUrl(await this.usersRepository.findOneByOrFail({ id: note.userId })), + avatarUrl: _note.user.avatarUrl, // TODO: Let locale changeable by instance setting summary: getNoteSummary(_note), instanceName: meta.name ?? 'Misskey', @@ -503,7 +503,7 @@ export class ClientServerService { return await reply.view('page', { page: _page, profile, - avatarUrl: await this.userEntityService.getAvatarUrl(await this.usersRepository.findOneByOrFail({ id: page.userId })), + avatarUrl: _page.user.avatarUrl, instanceName: meta.name ?? 'Misskey', icon: meta.iconUrl, themeColor: meta.themeColor, @@ -527,7 +527,7 @@ export class ClientServerService { return await reply.view('flash', { flash: _flash, profile, - avatarUrl: await this.userEntityService.getAvatarUrl(await this.usersRepository.findOneByOrFail({ id: flash.userId })), + avatarUrl: _flash.user.avatarUrl, instanceName: meta.name ?? 'Misskey', icon: meta.iconUrl, themeColor: meta.themeColor, @@ -551,7 +551,7 @@ export class ClientServerService { return await reply.view('clip', { clip: _clip, profile, - avatarUrl: await this.userEntityService.getAvatarUrl(await this.usersRepository.findOneByOrFail({ id: clip.userId })), + avatarUrl: _clip.user.avatarUrl, instanceName: meta.name ?? 'Misskey', icon: meta.iconUrl, themeColor: meta.themeColor, @@ -573,7 +573,7 @@ export class ClientServerService { return await reply.view('gallery-post', { post: _post, profile, - avatarUrl: await this.userEntityService.getAvatarUrl(await this.usersRepository.findOneByOrFail({ id: post.userId })), + avatarUrl: _post.user.avatarUrl, instanceName: meta.name ?? 'Misskey', icon: meta.iconUrl, themeColor: meta.themeColor, diff --git a/packages/backend/src/server/web/FeedService.ts b/packages/backend/src/server/web/FeedService.ts index a14609adf9..0c0e92cc04 100644 --- a/packages/backend/src/server/web/FeedService.ts +++ b/packages/backend/src/server/web/FeedService.ts @@ -58,7 +58,7 @@ export class FeedService { generator: 'Misskey', description: `${user.notesCount} Notes, ${profile.ffVisibility === 'public' ? user.followingCount : '?'} Following, ${profile.ffVisibility === 'public' ? user.followersCount : '?'} Followers${profile.description ? ` · ${profile.description}` : ''}`, link: author.link, - image: await this.userEntityService.getAvatarUrl(user), + image: user.avatarUrl ?? this.userEntityService.getIdenticonUrl(user), feedLinks: { json: `${author.link}.json`, atom: `${author.link}.atom`, From 89c12948a11daf246da9028d4aff8f1940472e03 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 19:51:33 +0900 Subject: [PATCH 07/81] 13.11.0-beta.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 837cbcab1d..aedb161902 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "13.11.0.beta-3", + "version": "13.11.0-beta.4", "codename": "nasubi", "repository": { "type": "git", From 88f22da05293ed5c3cb6cf8cd3805d82a8bc8a7f Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 20:22:26 +0900 Subject: [PATCH 08/81] update deps --- package.json | 6 ++--- packages/backend/package.json | 46 ++++++++++++++++---------------- packages/frontend/package.json | 34 +++++++++++------------ packages/misskey-js/package.json | 14 +++++----- packages/sw/package.json | 4 +-- 5 files changed, 52 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index aedb161902..012d8eb59c 100644 --- a/package.json +++ b/package.json @@ -50,13 +50,13 @@ "gulp-replace": "1.1.4", "gulp-terser": "2.1.0", "js-yaml": "4.1.0", - "typescript": "5.0.2" + "typescript": "5.0.3" }, "devDependencies": { "@types/gulp": "4.0.10", "@types/gulp-rename": "2.0.1", - "@typescript-eslint/eslint-plugin": "5.57.0", - "@typescript-eslint/parser": "5.57.0", + "@typescript-eslint/eslint-plugin": "5.57.1", + "@typescript-eslint/parser": "5.57.1", "cross-env": "7.0.3", "cypress": "12.9.0", "eslint": "8.37.0", diff --git a/packages/backend/package.json b/packages/backend/package.json index 4666563dc1..875774bbd5 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -22,24 +22,24 @@ "test-and-coverage": "pnpm jest-and-coverage" }, "optionalDependencies": { - "@swc/core-android-arm64": "^1.3.11", - "@swc/core-darwin-arm64": "^1.3.42", - "@swc/core-darwin-x64": "^1.3.42", - "@swc/core-linux-arm-gnueabihf": "^1.3.42", - "@swc/core-linux-arm64-gnu": "^1.3.42", - "@swc/core-linux-arm64-musl": "^1.3.42", - "@swc/core-linux-x64-gnu": "^1.3.42", - "@swc/core-linux-x64-musl": "^1.3.42", - "@swc/core-win32-arm64-msvc": "^1.3.42", - "@swc/core-win32-ia32-msvc": "^1.3.42", - "@swc/core-win32-x64-msvc": "^1.3.42", + "@swc/core-android-arm64": "1.3.11", + "@swc/core-darwin-arm64": "1.3.46", + "@swc/core-darwin-x64": "1.3.46", + "@swc/core-linux-arm-gnueabihf": "1.3.46", + "@swc/core-linux-arm64-gnu": "1.3.46", + "@swc/core-linux-arm64-musl": "1.3.46", + "@swc/core-linux-x64-gnu": "1.3.46", + "@swc/core-linux-x64-musl": "1.3.46", + "@swc/core-win32-arm64-msvc": "1.3.46", + "@swc/core-win32-ia32-msvc": "1.3.46", + "@swc/core-win32-x64-msvc": "1.3.46", "@tensorflow/tfjs": "4.2.0", "@tensorflow/tfjs-node": "4.2.0" }, "dependencies": { - "@aws-sdk/client-s3": "3.301.0", - "@aws-sdk/lib-storage": "3.301.0", - "@aws-sdk/node-http-handler": "3.296.0", + "@aws-sdk/client-s3": "3.306.0", + "@aws-sdk/lib-storage": "3.306.0", + "@aws-sdk/node-http-handler": "3.306.0", "@bull-board/api": "5.0.0", "@bull-board/fastify": "5.0.0", "@bull-board/ui": "5.0.0", @@ -49,15 +49,15 @@ "@fastify/cors": "8.2.1", "@fastify/http-proxy": "9.0.0", "@fastify/multipart": "7.5.0", - "@fastify/static": "6.9.0", + "@fastify/static": "6.10.0", "@fastify/view": "7.4.1", - "@nestjs/common": "9.3.12", - "@nestjs/core": "9.3.12", - "@nestjs/testing": "9.3.12", + "@nestjs/common": "9.4.0", + "@nestjs/core": "9.4.0", + "@nestjs/testing": "9.4.0", "@peertube/http-signature": "1.7.0", "@sinonjs/fake-timers": "10.0.2", "@swc/cli": "0.1.62", - "@swc/core": "1.3.42", + "@swc/core": "1.3.46", "accepts": "1.3.8", "ajv": "8.12.0", "archiver": "5.3.1", @@ -136,8 +136,8 @@ "tsc-alias": "1.8.5", "tsconfig-paths": "4.2.0", "twemoji-parser": "14.0.0", - "typeorm": "0.3.11", - "typescript": "5.0.2", + "typeorm": "0.3.13", + "typescript": "5.0.3", "ulid": "2.3.0", "unzipper": "0.10.11", "uuid": "9.0.0", @@ -190,8 +190,8 @@ "@types/web-push": "3.3.2", "@types/websocket": "1.0.5", "@types/ws": "8.5.4", - "@typescript-eslint/eslint-plugin": "5.57.0", - "@typescript-eslint/parser": "5.57.0", + "@typescript-eslint/eslint-plugin": "5.57.1", + "@typescript-eslint/parser": "5.57.1", "aws-sdk-client-mock": "^2.1.1", "cross-env": "7.0.3", "eslint": "8.37.0", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 2d96d5514e..02f53d915b 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -58,13 +58,13 @@ "strict-event-emitter-types": "2.0.0", "syuilo-password-strength": "0.0.1", "textarea-caret": "3.1.0", - "three": "0.150.1", + "three": "0.151.3", "throttle-debounce": "5.0.0", "tinycolor2": "1.6.0", "tsc-alias": "1.8.5", "tsconfig-paths": "4.2.0", "twemoji-parser": "14.0.0", - "typescript": "5.0.2", + "typescript": "5.0.3", "uuid": "9.0.0", "vanilla-tilt": "1.8.0", "vite": "4.2.1", @@ -91,10 +91,10 @@ "@storybook/types": "7.0.2", "@storybook/vue3": "7.0.2", "@storybook/vue3-vite": "7.0.2", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/vue": "^6.6.1", + "@testing-library/jest-dom": "5.16.5", + "@testing-library/vue": "7.0.0", "@types/escape-regexp": "0.0.1", - "@types/estree": "^1.0.0", + "@types/estree": "1.0.0", "@types/gulp": "4.0.10", "@types/gulp-rename": "2.0.1", "@types/matter-js": "0.18.2", @@ -108,32 +108,32 @@ "@types/uuid": "9.0.1", "@types/websocket": "1.0.5", "@types/ws": "8.5.4", - "@typescript-eslint/eslint-plugin": "5.57.0", - "@typescript-eslint/parser": "5.57.0", + "@typescript-eslint/eslint-plugin": "5.57.1", + "@typescript-eslint/parser": "5.57.1", "@vitest/coverage-c8": "^0.29.8", "@vue/runtime-core": "3.2.47", "astring": "^1.8.4", "chokidar-cli": "^3.0.0", - "chromatic": "^6.17.2", + "chromatic": "6.17.3", "cross-env": "7.0.3", "cypress": "12.9.0", "eslint": "8.37.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-vue": "9.10.0", - "fast-glob": "^3.2.12", + "fast-glob": "3.2.12", "happy-dom": "8.9.0", - "msw": "^1.1.0", - "msw-storybook-addon": "^1.8.0", - "prettier": "^2.8.4", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "msw": "1.2.1", + "msw-storybook-addon": "^.8.0", + "prettier": "2.8.7", + "react": "18.2.0", + "react-dom": "18.2.0", "start-server-and-test": "2.0.0", "storybook": "7.0.2", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "summaly": "github:misskey-dev/summaly", - "vitest": "^0.29.8", - "vitest-fetch-mock": "^0.2.2", - "vue-eslint-parser": "9.1.0", + "vitest": "0.29.8", + "vitest-fetch-mock": "0.2.2", + "vue-eslint-parser": "9.1.1", "vue-tsc": "1.2.0" } } diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 445602c456..ace130c463 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -24,23 +24,23 @@ "@swc/jest": "0.2.24", "@types/jest": "29.5.0", "@types/node": "18.15.11", - "@typescript-eslint/eslint-plugin": "5.57.0", - "@typescript-eslint/parser": "5.57.0", + "@typescript-eslint/eslint-plugin": "5.57.1", + "@typescript-eslint/parser": "5.57.1", "eslint": "8.37.0", - "jest": "^29.5.0", - "jest-fetch-mock": "^3.0.3", + "jest": "29.5.0", + "jest-fetch-mock": "^.0.3", "jest-websocket-mock": "2.4.0", "mock-socket": "9.2.1", "tsd": "0.28.1", - "typescript": "5.0.2" + "typescript": "5.0.3" }, "files": [ "built" ], "dependencies": { "@swc/cli": "0.1.62", - "@swc/core": "1.3.42", + "@swc/core": "1.3.46", "eventemitter3": "5.0.0", - "reconnecting-websocket": "^4.4.0" + "reconnecting-websocket": "4.4.0" } } diff --git a/packages/sw/package.json b/packages/sw/package.json index 03d14dd256..f82f186619 100644 --- a/packages/sw/package.json +++ b/packages/sw/package.json @@ -14,10 +14,10 @@ "misskey-js": "workspace:*" }, "devDependencies": { - "@typescript-eslint/parser": "5.57.0", + "@typescript-eslint/parser": "5.57.1", "@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67", "eslint": "8.37.0", "eslint-plugin-import": "2.27.5", - "typescript": "5.0.2" + "typescript": "5.0.3" } } From a561b8307046f20eaeeaa5f25dd142d28fd372fc Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 6 Apr 2023 20:29:17 +0900 Subject: [PATCH 09/81] fix deps --- packages/frontend/package.json | 2 +- packages/misskey-js/package.json | 2 +- pnpm-lock.yaml | 1642 +++++++++++++++--------------- 3 files changed, 833 insertions(+), 813 deletions(-) diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 02f53d915b..4a3be2497b 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -123,7 +123,7 @@ "fast-glob": "3.2.12", "happy-dom": "8.9.0", "msw": "1.2.1", - "msw-storybook-addon": "^.8.0", + "msw-storybook-addon": "1.8.0", "prettier": "2.8.7", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index ace130c463..76e0452444 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -28,7 +28,7 @@ "@typescript-eslint/parser": "5.57.1", "eslint": "8.37.0", "jest": "29.5.0", - "jest-fetch-mock": "^.0.3", + "jest-fetch-mock": "3.0.3", "jest-websocket-mock": "2.4.0", "mock-socket": "9.2.1", "tsd": "0.28.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a130bb12c6..932046f795 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: 4.1.0 version: 4.1.0 typescript: - specifier: 5.0.2 - version: 5.0.2 + specifier: 5.0.3 + version: 5.0.3 optionalDependencies: '@tensorflow/tfjs-core': specifier: 4.2.0 @@ -44,11 +44,11 @@ importers: specifier: 2.0.1 version: 2.0.1 '@typescript-eslint/eslint-plugin': - specifier: 5.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/parser': - specifier: 5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(eslint@8.37.0)(typescript@5.0.3) cross-env: specifier: 7.0.3 version: 7.0.3 @@ -65,14 +65,14 @@ importers: packages/backend: dependencies: '@aws-sdk/client-s3': - specifier: 3.301.0 - version: 3.301.0 + specifier: 3.306.0 + version: 3.306.0 '@aws-sdk/lib-storage': - specifier: 3.301.0 - version: 3.301.0(@aws-sdk/abort-controller@3.296.0)(@aws-sdk/client-s3@3.301.0) + specifier: 3.306.0 + version: 3.306.0(@aws-sdk/abort-controller@3.306.0)(@aws-sdk/client-s3@3.306.0) '@aws-sdk/node-http-handler': - specifier: 3.296.0 - version: 3.296.0 + specifier: 3.306.0 + version: 3.306.0 '@bull-board/api': specifier: 5.0.0 version: 5.0.0 @@ -101,20 +101,20 @@ importers: specifier: 7.5.0 version: 7.5.0 '@fastify/static': - specifier: 6.9.0 - version: 6.9.0 + specifier: 6.10.0 + version: 6.10.0 '@fastify/view': specifier: 7.4.1 version: 7.4.1 '@nestjs/common': - specifier: 9.3.12 - version: 9.3.12(reflect-metadata@0.1.13)(rxjs@7.8.0) + specifier: 9.4.0 + version: 9.4.0(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/core': - specifier: 9.3.12 - version: 9.3.12(@nestjs/common@9.3.12)(reflect-metadata@0.1.13)(rxjs@7.8.0) + specifier: 9.4.0 + version: 9.4.0(@nestjs/common@9.4.0)(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nestjs/testing': - specifier: 9.3.12 - version: 9.3.12(@nestjs/common@9.3.12)(@nestjs/core@9.3.12) + specifier: 9.4.0 + version: 9.4.0(@nestjs/common@9.4.0)(@nestjs/core@9.4.0) '@peertube/http-signature': specifier: 1.7.0 version: 1.7.0 @@ -123,10 +123,10 @@ importers: version: 10.0.2 '@swc/cli': specifier: 0.1.62 - version: 0.1.62(@swc/core@1.3.42)(chokidar@3.5.3) + version: 0.1.62(@swc/core@1.3.46)(chokidar@3.5.3) '@swc/core': - specifier: 1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46(@swc/helpers@0.5.0) accepts: specifier: 1.3.8 version: 1.3.8 @@ -362,11 +362,11 @@ importers: specifier: 14.0.0 version: 14.0.0 typeorm: - specifier: 0.3.11 - version: 0.3.11(ioredis@4.28.5)(pg@8.10.0) + specifier: 0.3.13 + version: 0.3.13(ioredis@4.28.5)(pg@8.10.0) typescript: - specifier: 5.0.2 - version: 5.0.2 + specifier: 5.0.3 + version: 5.0.3 ulid: specifier: 2.3.0 version: 2.3.0 @@ -393,38 +393,38 @@ importers: version: 3.0.2 optionalDependencies: '@swc/core-android-arm64': - specifier: ^1.3.11 + specifier: 1.3.11 version: 1.3.11 '@swc/core-darwin-arm64': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-darwin-x64': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-linux-arm-gnueabihf': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-linux-arm64-gnu': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-linux-arm64-musl': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-linux-x64-gnu': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-linux-x64-musl': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-win32-arm64-msvc': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-win32-ia32-msvc': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@swc/core-win32-x64-msvc': - specifier: ^1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46 '@tensorflow/tfjs': specifier: 4.2.0 version: 4.2.0(seedrandom@3.0.5) @@ -437,7 +437,7 @@ importers: version: 29.5.0 '@swc/jest': specifier: 0.2.24 - version: 0.2.24(@swc/core@1.3.42) + version: 0.2.24(@swc/core@1.3.46) '@types/accepts': specifier: 1.3.5 version: 1.3.5 @@ -559,11 +559,11 @@ importers: specifier: 8.5.4 version: 8.5.4 '@typescript-eslint/eslint-plugin': - specifier: 5.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/parser': - specifier: 5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(eslint@8.37.0)(typescript@5.0.3) aws-sdk-client-mock: specifier: ^2.1.1 version: 2.1.1 @@ -575,7 +575,7 @@ importers: version: 8.37.0 eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0) + version: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint@8.37.0) execa: specifier: 6.1.0 version: 6.1.0 @@ -721,8 +721,8 @@ importers: specifier: 3.1.0 version: 3.1.0 three: - specifier: 0.150.1 - version: 0.150.1 + specifier: 0.151.3 + version: 0.151.3 throttle-debounce: specifier: 5.0.0 version: 5.0.0 @@ -739,8 +739,8 @@ importers: specifier: 14.0.0 version: 14.0.0 typescript: - specifier: 5.0.2 - version: 5.0.2 + specifier: 5.0.3 + version: 5.0.3 uuid: specifier: 9.0.0 version: 9.0.0 @@ -795,10 +795,10 @@ importers: version: 7.0.2 '@storybook/react': specifier: 7.0.2 - version: 7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.2) + version: 7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.3) '@storybook/react-vite': specifier: 7.0.2 - version: 7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.2)(vite@4.2.1) + version: 7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.3)(vite@4.2.1) '@storybook/testing-library': specifier: 0.0.14-next.1 version: 0.0.14-next.1 @@ -813,18 +813,18 @@ importers: version: 7.0.2(vue@3.2.47) '@storybook/vue3-vite': specifier: 7.0.2 - version: 7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.2)(vite@4.2.1)(vue@3.2.47) + version: 7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.3)(vite@4.2.1)(vue@3.2.47) '@testing-library/jest-dom': - specifier: ^5.16.5 + specifier: 5.16.5 version: 5.16.5 '@testing-library/vue': - specifier: ^6.6.1 - version: 6.6.1(@vue/compiler-sfc@3.2.47)(vue@3.2.47) + specifier: 7.0.0 + version: 7.0.0(@vue/compiler-sfc@3.2.47)(vue@3.2.47) '@types/escape-regexp': specifier: 0.0.1 version: 0.0.1 '@types/estree': - specifier: ^1.0.0 + specifier: 1.0.0 version: 1.0.0 '@types/gulp': specifier: 4.0.10 @@ -866,11 +866,11 @@ importers: specifier: 8.5.4 version: 8.5.4 '@typescript-eslint/eslint-plugin': - specifier: 5.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/parser': - specifier: 5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(eslint@8.37.0)(typescript@5.0.3) '@vitest/coverage-c8': specifier: ^0.29.8 version: 0.29.8(vitest@0.29.8) @@ -884,8 +884,8 @@ importers: specifier: ^3.0.0 version: 3.0.0 chromatic: - specifier: ^6.17.2 - version: 6.17.2 + specifier: 6.17.3 + version: 6.17.3 cross-env: specifier: 7.0.3 version: 7.0.3 @@ -897,30 +897,30 @@ importers: version: 8.37.0 eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0) + version: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint@8.37.0) eslint-plugin-vue: specifier: 9.10.0 version: 9.10.0(eslint@8.37.0) fast-glob: - specifier: ^3.2.12 + specifier: 3.2.12 version: 3.2.12 happy-dom: specifier: 8.9.0 version: 8.9.0 msw: - specifier: ^1.1.0 - version: 1.1.0(typescript@5.0.2) + specifier: 1.2.1 + version: 1.2.1(typescript@5.0.3) msw-storybook-addon: - specifier: ^1.8.0 - version: 1.8.0(msw@1.1.0) + specifier: 1.8.0 + version: 1.8.0(msw@1.2.1) prettier: - specifier: ^2.8.4 - version: 2.8.4 + specifier: 2.8.7 + version: 2.8.7 react: - specifier: ^18.2.0 + specifier: 18.2.0 version: 18.2.0 react-dom: - specifier: ^18.2.0 + specifier: 18.2.0 version: 18.2.0(react@18.2.0) start-server-and-test: specifier: 2.0.0 @@ -935,31 +935,31 @@ importers: specifier: github:misskey-dev/summaly version: github.com/misskey-dev/summaly/1bab7afee616429b8bbf7a7cbcbb8ebcef66d992 vitest: - specifier: ^0.29.8 + specifier: 0.29.8 version: 0.29.8(happy-dom@8.9.0)(sass@1.60.0) vitest-fetch-mock: - specifier: ^0.2.2 + specifier: 0.2.2 version: 0.2.2(vitest@0.29.8) vue-eslint-parser: - specifier: 9.1.0 - version: 9.1.0(eslint@8.37.0) + specifier: 9.1.1 + version: 9.1.1(eslint@8.37.0) vue-tsc: specifier: 1.2.0 - version: 1.2.0(typescript@5.0.2) + version: 1.2.0(typescript@5.0.3) packages/misskey-js: dependencies: '@swc/cli': specifier: 0.1.62 - version: 0.1.62(@swc/core@1.3.42)(chokidar@3.5.3) + version: 0.1.62(@swc/core@1.3.46)(chokidar@3.5.3) '@swc/core': - specifier: 1.3.42 - version: 1.3.42 + specifier: 1.3.46 + version: 1.3.46(@swc/helpers@0.5.0) eventemitter3: specifier: 5.0.0 version: 5.0.0 reconnecting-websocket: - specifier: ^4.4.0 + specifier: 4.4.0 version: 4.4.0 devDependencies: '@microsoft/api-extractor': @@ -967,7 +967,7 @@ importers: version: 7.34.4(@types/node@18.15.11) '@swc/jest': specifier: 0.2.24 - version: 0.2.24(@swc/core@1.3.42) + version: 0.2.24(@swc/core@1.3.46) '@types/jest': specifier: 29.5.0 version: 29.5.0 @@ -975,19 +975,19 @@ importers: specifier: 18.15.11 version: 18.15.11 '@typescript-eslint/eslint-plugin': - specifier: 5.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/parser': - specifier: 5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(eslint@8.37.0)(typescript@5.0.3) eslint: specifier: 8.37.0 version: 8.37.0 jest: - specifier: ^29.5.0 + specifier: 29.5.0 version: 29.5.0(@types/node@18.15.11) jest-fetch-mock: - specifier: ^3.0.3 + specifier: 3.0.3 version: 3.0.3 jest-websocket-mock: specifier: 2.4.0 @@ -999,8 +999,8 @@ importers: specifier: 0.28.1 version: 0.28.1 typescript: - specifier: 5.0.2 - version: 5.0.2 + specifier: 5.0.3 + version: 5.0.3 packages/sw: dependencies: @@ -1015,8 +1015,8 @@ importers: version: link:../misskey-js devDependencies: '@typescript-eslint/parser': - specifier: 5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.2) + specifier: 5.57.1 + version: 5.57.1(eslint@8.37.0)(typescript@5.0.3) '@typescript/lib-webworker': specifier: npm:@types/serviceworker@0.0.67 version: /@types/serviceworker@0.0.67 @@ -1025,10 +1025,10 @@ importers: version: 8.37.0 eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0) + version: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint@8.37.0) typescript: - specifier: 5.0.2 - version: 5.0.2 + specifier: 5.0.3 + version: 5.0.3 packages: @@ -1061,7 +1061,7 @@ packages: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 1.14.1 dev: false @@ -1069,7 +1069,7 @@ packages: resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 1.14.1 dev: false @@ -1085,7 +1085,7 @@ packages: '@aws-crypto/ie11-detection': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 '@aws-sdk/util-locate-window': 3.208.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -1098,7 +1098,7 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 '@aws-sdk/util-locate-window': 3.208.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -1108,7 +1108,7 @@ packages: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 1.14.1 dev: false @@ -1121,81 +1121,81 @@ packages: /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false - /@aws-sdk/abort-controller@3.296.0: - resolution: {integrity: sha512-gNUFBlBw6+sEMfDjPVa83iscpQwXBS4uoiZXnfeQ6s6tnaxqQpJDrBBmNvYqDEXNdaAJX4FhayEwkSvtir/f3A==} + /@aws-sdk/abort-controller@3.306.0: + resolution: {integrity: sha512-ewCvdUrMJMlnkNaqXdG7L2H6O7CDI036y6lkTU8gQqa2lCzZvqBkzz6R5NbWqb8TJPi69Z7lXEITgk2b0+pl6w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/chunked-blob-reader@3.295.0: - resolution: {integrity: sha512-oWWcEKyrx4sNFxfvOgkMai1jJtOuERmND8fAp8vRA6i38HBU80q8jjkoAitFGPHUz57EhI2ewYYNnf7vkGteOQ==} + /@aws-sdk/chunked-blob-reader@3.303.0: + resolution: {integrity: sha512-Cofcujz08TTKA7CtsIcWyFTyfe84KBa72kTjsXA9GQgn0cuUHZgGoFpBzoyDT8Ff3TPMKmAGDXmllRGFZw4mQw==} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/client-s3@3.301.0: - resolution: {integrity: sha512-ZOc6pCyPVpTFUtvLvs8hpDz51Ylu3GfhjYH5XqKlo2RJJcXgwUM+isVKyi9ZfWPC31bQw+WxtCZN7Vap6ltelQ==} + /@aws-sdk/client-s3@3.306.0: + resolution: {integrity: sha512-UkR5jFomspBAXSeAX/1T+YdUMusjg6xDHNvngL9JcW6qbtVv2zDuaGQ65474n2eFr4iJfgVL+IhKy+GNTZ03HA==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.301.0 - '@aws-sdk/config-resolver': 3.300.0 - '@aws-sdk/credential-provider-node': 3.301.0 - '@aws-sdk/eventstream-serde-browser': 3.296.0 - '@aws-sdk/eventstream-serde-config-resolver': 3.296.0 - '@aws-sdk/eventstream-serde-node': 3.299.0 - '@aws-sdk/fetch-http-handler': 3.296.0 - '@aws-sdk/hash-blob-browser': 3.299.0 - '@aws-sdk/hash-node': 3.296.0 - '@aws-sdk/hash-stream-node': 3.296.0 - '@aws-sdk/invalid-dependency': 3.296.0 - '@aws-sdk/md5-js': 3.296.0 - '@aws-sdk/middleware-bucket-endpoint': 3.300.0 - '@aws-sdk/middleware-content-length': 3.296.0 - '@aws-sdk/middleware-endpoint': 3.299.0 - '@aws-sdk/middleware-expect-continue': 3.296.0 - '@aws-sdk/middleware-flexible-checksums': 3.296.0 - '@aws-sdk/middleware-host-header': 3.296.0 - '@aws-sdk/middleware-location-constraint': 3.296.0 - '@aws-sdk/middleware-logger': 3.296.0 - '@aws-sdk/middleware-recursion-detection': 3.296.0 - '@aws-sdk/middleware-retry': 3.300.0 - '@aws-sdk/middleware-sdk-s3': 3.296.0 - '@aws-sdk/middleware-serde': 3.296.0 - '@aws-sdk/middleware-signing': 3.299.0 - '@aws-sdk/middleware-ssec': 3.296.0 - '@aws-sdk/middleware-stack': 3.296.0 - '@aws-sdk/middleware-user-agent': 3.299.0 - '@aws-sdk/node-config-provider': 3.300.0 - '@aws-sdk/node-http-handler': 3.296.0 - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/signature-v4-multi-region': 3.299.0 - '@aws-sdk/smithy-client': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/url-parser': 3.296.0 - '@aws-sdk/util-base64': 3.295.0 - '@aws-sdk/util-body-length-browser': 3.295.0 - '@aws-sdk/util-body-length-node': 3.295.0 - '@aws-sdk/util-defaults-mode-browser': 3.296.0 - '@aws-sdk/util-defaults-mode-node': 3.300.0 - '@aws-sdk/util-endpoints': 3.296.0 - '@aws-sdk/util-retry': 3.296.0 - '@aws-sdk/util-stream-browser': 3.296.0 - '@aws-sdk/util-stream-node': 3.296.0 - '@aws-sdk/util-user-agent-browser': 3.299.0 - '@aws-sdk/util-user-agent-node': 3.300.0 - '@aws-sdk/util-utf8': 3.295.0 - '@aws-sdk/util-waiter': 3.296.0 - '@aws-sdk/xml-builder': 3.295.0 + '@aws-sdk/client-sts': 3.306.0 + '@aws-sdk/config-resolver': 3.306.0 + '@aws-sdk/credential-provider-node': 3.306.0 + '@aws-sdk/eventstream-serde-browser': 3.306.0 + '@aws-sdk/eventstream-serde-config-resolver': 3.306.0 + '@aws-sdk/eventstream-serde-node': 3.306.0 + '@aws-sdk/fetch-http-handler': 3.306.0 + '@aws-sdk/hash-blob-browser': 3.306.0 + '@aws-sdk/hash-node': 3.306.0 + '@aws-sdk/hash-stream-node': 3.306.0 + '@aws-sdk/invalid-dependency': 3.306.0 + '@aws-sdk/md5-js': 3.306.0 + '@aws-sdk/middleware-bucket-endpoint': 3.306.0 + '@aws-sdk/middleware-content-length': 3.306.0 + '@aws-sdk/middleware-endpoint': 3.306.0 + '@aws-sdk/middleware-expect-continue': 3.306.0 + '@aws-sdk/middleware-flexible-checksums': 3.306.0 + '@aws-sdk/middleware-host-header': 3.306.0 + '@aws-sdk/middleware-location-constraint': 3.306.0 + '@aws-sdk/middleware-logger': 3.306.0 + '@aws-sdk/middleware-recursion-detection': 3.306.0 + '@aws-sdk/middleware-retry': 3.306.0 + '@aws-sdk/middleware-sdk-s3': 3.306.0 + '@aws-sdk/middleware-serde': 3.306.0 + '@aws-sdk/middleware-signing': 3.306.0 + '@aws-sdk/middleware-ssec': 3.306.0 + '@aws-sdk/middleware-stack': 3.306.0 + '@aws-sdk/middleware-user-agent': 3.306.0 + '@aws-sdk/node-config-provider': 3.306.0 + '@aws-sdk/node-http-handler': 3.306.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/signature-v4-multi-region': 3.306.0 + '@aws-sdk/smithy-client': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/url-parser': 3.306.0 + '@aws-sdk/util-base64': 3.303.0 + '@aws-sdk/util-body-length-browser': 3.303.0 + '@aws-sdk/util-body-length-node': 3.303.0 + '@aws-sdk/util-defaults-mode-browser': 3.306.0 + '@aws-sdk/util-defaults-mode-node': 3.306.0 + '@aws-sdk/util-endpoints': 3.306.0 + '@aws-sdk/util-retry': 3.306.0 + '@aws-sdk/util-stream-browser': 3.306.0 + '@aws-sdk/util-stream-node': 3.306.0 + '@aws-sdk/util-user-agent-browser': 3.306.0 + '@aws-sdk/util-user-agent-node': 3.306.0 + '@aws-sdk/util-utf8': 3.303.0 + '@aws-sdk/util-waiter': 3.306.0 + '@aws-sdk/xml-builder': 3.303.0 fast-xml-parser: 4.1.2 tslib: 2.5.0 transitivePeerDependencies: @@ -1203,581 +1203,581 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sso-oidc@3.301.0: - resolution: {integrity: sha512-bCBA70/7gkrk1s1iGWt3st4p9yNIkQ3e+KV8Kx3uzRvjD0f7KltGqSNA28453tsa7ko+H/V4c7fzrJnWaQomCg==} + /@aws-sdk/client-sso-oidc@3.306.0: + resolution: {integrity: sha512-O27yrApCkbC0/uPRb1aHkENpFSqrkPbXRi76NF/8T97qC8bngRpy6yeafcQRrp9NGQSF/m9xbPWYsQuiurqedw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.300.0 - '@aws-sdk/fetch-http-handler': 3.296.0 - '@aws-sdk/hash-node': 3.296.0 - '@aws-sdk/invalid-dependency': 3.296.0 - '@aws-sdk/middleware-content-length': 3.296.0 - '@aws-sdk/middleware-endpoint': 3.299.0 - '@aws-sdk/middleware-host-header': 3.296.0 - '@aws-sdk/middleware-logger': 3.296.0 - '@aws-sdk/middleware-recursion-detection': 3.296.0 - '@aws-sdk/middleware-retry': 3.300.0 - '@aws-sdk/middleware-serde': 3.296.0 - '@aws-sdk/middleware-stack': 3.296.0 - '@aws-sdk/middleware-user-agent': 3.299.0 - '@aws-sdk/node-config-provider': 3.300.0 - '@aws-sdk/node-http-handler': 3.296.0 - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/smithy-client': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/url-parser': 3.296.0 - '@aws-sdk/util-base64': 3.295.0 - '@aws-sdk/util-body-length-browser': 3.295.0 - '@aws-sdk/util-body-length-node': 3.295.0 - '@aws-sdk/util-defaults-mode-browser': 3.296.0 - '@aws-sdk/util-defaults-mode-node': 3.300.0 - '@aws-sdk/util-endpoints': 3.296.0 - '@aws-sdk/util-retry': 3.296.0 - '@aws-sdk/util-user-agent-browser': 3.299.0 - '@aws-sdk/util-user-agent-node': 3.300.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/config-resolver': 3.306.0 + '@aws-sdk/fetch-http-handler': 3.306.0 + '@aws-sdk/hash-node': 3.306.0 + '@aws-sdk/invalid-dependency': 3.306.0 + '@aws-sdk/middleware-content-length': 3.306.0 + '@aws-sdk/middleware-endpoint': 3.306.0 + '@aws-sdk/middleware-host-header': 3.306.0 + '@aws-sdk/middleware-logger': 3.306.0 + '@aws-sdk/middleware-recursion-detection': 3.306.0 + '@aws-sdk/middleware-retry': 3.306.0 + '@aws-sdk/middleware-serde': 3.306.0 + '@aws-sdk/middleware-stack': 3.306.0 + '@aws-sdk/middleware-user-agent': 3.306.0 + '@aws-sdk/node-config-provider': 3.306.0 + '@aws-sdk/node-http-handler': 3.306.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/smithy-client': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/url-parser': 3.306.0 + '@aws-sdk/util-base64': 3.303.0 + '@aws-sdk/util-body-length-browser': 3.303.0 + '@aws-sdk/util-body-length-node': 3.303.0 + '@aws-sdk/util-defaults-mode-browser': 3.306.0 + '@aws-sdk/util-defaults-mode-node': 3.306.0 + '@aws-sdk/util-endpoints': 3.306.0 + '@aws-sdk/util-retry': 3.306.0 + '@aws-sdk/util-user-agent-browser': 3.306.0 + '@aws-sdk/util-user-agent-node': 3.306.0 + '@aws-sdk/util-utf8': 3.303.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sso@3.301.0: - resolution: {integrity: sha512-nABoNn0O79PL72jg2oy9gR/MLmM4opZ6nQefXvXUb6RzlITZCCZ6uKkGcH2LMxOcRu6qQlY+uauX+9p0GJexlg==} + /@aws-sdk/client-sso@3.306.0: + resolution: {integrity: sha512-uqfLUOP9LlBoqXe3P250TPX3fGrabfRt9Q9rlLFK0fVBI7HPIQ/wsPplLoPrMeT04qQmTI03UnVKMNza3GqyIg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.300.0 - '@aws-sdk/fetch-http-handler': 3.296.0 - '@aws-sdk/hash-node': 3.296.0 - '@aws-sdk/invalid-dependency': 3.296.0 - '@aws-sdk/middleware-content-length': 3.296.0 - '@aws-sdk/middleware-endpoint': 3.299.0 - '@aws-sdk/middleware-host-header': 3.296.0 - '@aws-sdk/middleware-logger': 3.296.0 - '@aws-sdk/middleware-recursion-detection': 3.296.0 - '@aws-sdk/middleware-retry': 3.300.0 - '@aws-sdk/middleware-serde': 3.296.0 - '@aws-sdk/middleware-stack': 3.296.0 - '@aws-sdk/middleware-user-agent': 3.299.0 - '@aws-sdk/node-config-provider': 3.300.0 - '@aws-sdk/node-http-handler': 3.296.0 - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/smithy-client': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/url-parser': 3.296.0 - '@aws-sdk/util-base64': 3.295.0 - '@aws-sdk/util-body-length-browser': 3.295.0 - '@aws-sdk/util-body-length-node': 3.295.0 - '@aws-sdk/util-defaults-mode-browser': 3.296.0 - '@aws-sdk/util-defaults-mode-node': 3.300.0 - '@aws-sdk/util-endpoints': 3.296.0 - '@aws-sdk/util-retry': 3.296.0 - '@aws-sdk/util-user-agent-browser': 3.299.0 - '@aws-sdk/util-user-agent-node': 3.300.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/config-resolver': 3.306.0 + '@aws-sdk/fetch-http-handler': 3.306.0 + '@aws-sdk/hash-node': 3.306.0 + '@aws-sdk/invalid-dependency': 3.306.0 + '@aws-sdk/middleware-content-length': 3.306.0 + '@aws-sdk/middleware-endpoint': 3.306.0 + '@aws-sdk/middleware-host-header': 3.306.0 + '@aws-sdk/middleware-logger': 3.306.0 + '@aws-sdk/middleware-recursion-detection': 3.306.0 + '@aws-sdk/middleware-retry': 3.306.0 + '@aws-sdk/middleware-serde': 3.306.0 + '@aws-sdk/middleware-stack': 3.306.0 + '@aws-sdk/middleware-user-agent': 3.306.0 + '@aws-sdk/node-config-provider': 3.306.0 + '@aws-sdk/node-http-handler': 3.306.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/smithy-client': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/url-parser': 3.306.0 + '@aws-sdk/util-base64': 3.303.0 + '@aws-sdk/util-body-length-browser': 3.303.0 + '@aws-sdk/util-body-length-node': 3.303.0 + '@aws-sdk/util-defaults-mode-browser': 3.306.0 + '@aws-sdk/util-defaults-mode-node': 3.306.0 + '@aws-sdk/util-endpoints': 3.306.0 + '@aws-sdk/util-retry': 3.306.0 + '@aws-sdk/util-user-agent-browser': 3.306.0 + '@aws-sdk/util-user-agent-node': 3.306.0 + '@aws-sdk/util-utf8': 3.303.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sts@3.301.0: - resolution: {integrity: sha512-OS8wE21Lxd8aT8PMj/dusCUZKXmXaxnSI4RIO3M8w/ZPRMKkBHtzB+JXbzUcpGGxvt9mse8l6w9iLIE6XuHmig==} + /@aws-sdk/client-sts@3.306.0: + resolution: {integrity: sha512-LivDrH0OnAZDC3EB6hVrrl25itlMLn/C/epwDjpnH2Qdq+gjbZ0ElVNu8XOX4qaXoo0zyV5pztnzwD/A76mX2g==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.300.0 - '@aws-sdk/credential-provider-node': 3.301.0 - '@aws-sdk/fetch-http-handler': 3.296.0 - '@aws-sdk/hash-node': 3.296.0 - '@aws-sdk/invalid-dependency': 3.296.0 - '@aws-sdk/middleware-content-length': 3.296.0 - '@aws-sdk/middleware-endpoint': 3.299.0 - '@aws-sdk/middleware-host-header': 3.296.0 - '@aws-sdk/middleware-logger': 3.296.0 - '@aws-sdk/middleware-recursion-detection': 3.296.0 - '@aws-sdk/middleware-retry': 3.300.0 - '@aws-sdk/middleware-sdk-sts': 3.299.0 - '@aws-sdk/middleware-serde': 3.296.0 - '@aws-sdk/middleware-signing': 3.299.0 - '@aws-sdk/middleware-stack': 3.296.0 - '@aws-sdk/middleware-user-agent': 3.299.0 - '@aws-sdk/node-config-provider': 3.300.0 - '@aws-sdk/node-http-handler': 3.296.0 - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/smithy-client': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/url-parser': 3.296.0 - '@aws-sdk/util-base64': 3.295.0 - '@aws-sdk/util-body-length-browser': 3.295.0 - '@aws-sdk/util-body-length-node': 3.295.0 - '@aws-sdk/util-defaults-mode-browser': 3.296.0 - '@aws-sdk/util-defaults-mode-node': 3.300.0 - '@aws-sdk/util-endpoints': 3.296.0 - '@aws-sdk/util-retry': 3.296.0 - '@aws-sdk/util-user-agent-browser': 3.299.0 - '@aws-sdk/util-user-agent-node': 3.300.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/config-resolver': 3.306.0 + '@aws-sdk/credential-provider-node': 3.306.0 + '@aws-sdk/fetch-http-handler': 3.306.0 + '@aws-sdk/hash-node': 3.306.0 + '@aws-sdk/invalid-dependency': 3.306.0 + '@aws-sdk/middleware-content-length': 3.306.0 + '@aws-sdk/middleware-endpoint': 3.306.0 + '@aws-sdk/middleware-host-header': 3.306.0 + '@aws-sdk/middleware-logger': 3.306.0 + '@aws-sdk/middleware-recursion-detection': 3.306.0 + '@aws-sdk/middleware-retry': 3.306.0 + '@aws-sdk/middleware-sdk-sts': 3.306.0 + '@aws-sdk/middleware-serde': 3.306.0 + '@aws-sdk/middleware-signing': 3.306.0 + '@aws-sdk/middleware-stack': 3.306.0 + '@aws-sdk/middleware-user-agent': 3.306.0 + '@aws-sdk/node-config-provider': 3.306.0 + '@aws-sdk/node-http-handler': 3.306.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/smithy-client': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/url-parser': 3.306.0 + '@aws-sdk/util-base64': 3.303.0 + '@aws-sdk/util-body-length-browser': 3.303.0 + '@aws-sdk/util-body-length-node': 3.303.0 + '@aws-sdk/util-defaults-mode-browser': 3.306.0 + '@aws-sdk/util-defaults-mode-node': 3.306.0 + '@aws-sdk/util-endpoints': 3.306.0 + '@aws-sdk/util-retry': 3.306.0 + '@aws-sdk/util-user-agent-browser': 3.306.0 + '@aws-sdk/util-user-agent-node': 3.306.0 + '@aws-sdk/util-utf8': 3.303.0 fast-xml-parser: 4.1.2 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/config-resolver@3.300.0: - resolution: {integrity: sha512-u3YS+XWjoHmH9wh07Lv+HueYZek/wTO8tlGvVzrlACpaS1JrALuCw8UsJUHNDack63xh9v4oMf+7c0kjuqbmtA==} + /@aws-sdk/config-resolver@3.306.0: + resolution: {integrity: sha512-kpqHu6LvNMYxullm+tLCsY6KQ2mZUxZTdyWJKTYLZCTxj4HcGJxf4Jxj9dwFAZVl/clcVPGWcHJaQJjyjwzBzw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 '@aws-sdk/util-config-provider': 3.295.0 - '@aws-sdk/util-middleware': 3.296.0 + '@aws-sdk/util-middleware': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/credential-provider-env@3.296.0: - resolution: {integrity: sha512-eDWSU3p04gytkkVXnYn05YzrP5SEaj/DQiafd4y+iBl8IFfF3zM6982rs6qFhvpwrHeSbLqHNfKR1HDWVwfG5g==} + /@aws-sdk/credential-provider-env@3.306.0: + resolution: {integrity: sha512-DTH+aMvMu+LAoWW+yfPkWzFXt/CPNFQ7+/4xiMnc7FWf+tjt+HZIrPECAV2rBVppNCkh7PC+xDSN61PFvBYOsw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/credential-provider-imds@3.300.0: - resolution: {integrity: sha512-l7ZFGlr4TjhS0FIt3XwuAJYNAbQ4eDsovMMUVYLDPti1NxlbQDH85xAyaDWF9dU1Gulrpfzz9Ei7q4GYFFPHnQ==} + /@aws-sdk/credential-provider-imds@3.306.0: + resolution: {integrity: sha512-WdrNhq2MwvjZk2I8Of+bZ/qWHG2hREQpwlBiG3tMeEkuywx7M1x3Rt0eHgiR1sTcm05kxNn0rB4OeWOeek37cA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/node-config-provider': 3.300.0 - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/url-parser': 3.296.0 + '@aws-sdk/node-config-provider': 3.306.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/url-parser': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/credential-provider-ini@3.301.0: - resolution: {integrity: sha512-tAsNH6vQZ7U459FzjStIXoi3HZAsl6y8CMf6364dyisZ0xiCiVHLxziTmSxntcR0560NFFSOY1WS5MrbIIneGQ==} + /@aws-sdk/credential-provider-ini@3.306.0: + resolution: {integrity: sha512-6VvP0YmXVd+pCnlD2iTDhNvO2Ikzyk9Ade/t5R1eZ4Vf1gKhDiNA2/AgDt9XlzQHk7iw1okTmYCeQsK1j+7+NQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.296.0 - '@aws-sdk/credential-provider-imds': 3.300.0 - '@aws-sdk/credential-provider-process': 3.300.0 - '@aws-sdk/credential-provider-sso': 3.301.0 - '@aws-sdk/credential-provider-web-identity': 3.296.0 - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/shared-ini-file-loader': 3.300.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/credential-provider-env': 3.306.0 + '@aws-sdk/credential-provider-imds': 3.306.0 + '@aws-sdk/credential-provider-process': 3.306.0 + '@aws-sdk/credential-provider-sso': 3.306.0 + '@aws-sdk/credential-provider-web-identity': 3.306.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/shared-ini-file-loader': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-node@3.301.0: - resolution: {integrity: sha512-WNz7+HoGEkAHaOL1d4D2c/LxYS3zBdqzLs7uYgekoqTSMQhTaIMyJIJgChcklAmV/yM1+2c3lS1NEtCCz3/Vxw==} + /@aws-sdk/credential-provider-node@3.306.0: + resolution: {integrity: sha512-HYuMmABRzbVWo03CElRUa+T+yenyUmLkwNCVAAvIRmbr9TnLT/bJbplXpUSzgSCS6T3TgwbQ9zf9xY9tX+gHzA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.296.0 - '@aws-sdk/credential-provider-imds': 3.300.0 - '@aws-sdk/credential-provider-ini': 3.301.0 - '@aws-sdk/credential-provider-process': 3.300.0 - '@aws-sdk/credential-provider-sso': 3.301.0 - '@aws-sdk/credential-provider-web-identity': 3.296.0 - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/shared-ini-file-loader': 3.300.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/credential-provider-env': 3.306.0 + '@aws-sdk/credential-provider-imds': 3.306.0 + '@aws-sdk/credential-provider-ini': 3.306.0 + '@aws-sdk/credential-provider-process': 3.306.0 + '@aws-sdk/credential-provider-sso': 3.306.0 + '@aws-sdk/credential-provider-web-identity': 3.306.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/shared-ini-file-loader': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-process@3.300.0: - resolution: {integrity: sha512-HGBLXupPU2XTvHmlcbSgH/zLyhQ1joLIBAvKvyxyjQTIeFSDOufDqRBY4CzNzPv0yJlvSi3gAfL36CR9dh2R4w==} + /@aws-sdk/credential-provider-process@3.306.0: + resolution: {integrity: sha512-2RezGskHqJeHtGbK7CqhGNAoqXgQJb7FfPFqwUQ9oVDZS8f145jVwajjHcc7Qn3IwGoqylMF3uXIljUv89uDzA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/shared-ini-file-loader': 3.300.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/shared-ini-file-loader': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/credential-provider-sso@3.301.0: - resolution: {integrity: sha512-5mGoBX5WmZRuL3RIWgdhMbnKYHSmM54qEFjbtRiFXZQ1QSItom1ICBCyIEoNMZQ20+iRxyTgf/fGCJrXhDlIqQ==} + /@aws-sdk/credential-provider-sso@3.306.0: + resolution: {integrity: sha512-6msBUisMdOzk0ywJQNunZIb0rVMaA6GTx7ek8aCuWInX+lJm0oEPPVp+b3ewwVheih1rRC2bgNk8eAjfC9YcKw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.301.0 - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/shared-ini-file-loader': 3.300.0 - '@aws-sdk/token-providers': 3.301.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/client-sso': 3.306.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/shared-ini-file-loader': 3.306.0 + '@aws-sdk/token-providers': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-web-identity@3.296.0: - resolution: {integrity: sha512-Rl6Ohoekxe+pccA55XXQDW5wApbg3rGWr6FkmPRcg7Ld6Vfe+HL8OtfsFf83/0eoFerevbif+00BdknXWT05LA==} + /@aws-sdk/credential-provider-web-identity@3.306.0: + resolution: {integrity: sha512-MOQGQaOtdo4zLQZ1bRjD2n1PUzfNty+sKe+1wlm5bIqTN93UX3S8f0QznucZr7uJxI4Z14ZLwuYeAUV4Tgchlw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-codec@3.296.0: - resolution: {integrity: sha512-BtmUc1f4vmYykfpYwbez+SV9CnnnUlzjsvoBu88dOYJwYh+47+84bY+t8yDOGtPR5+CGeTsXLITVxAAQB+MD8Q==} + /@aws-sdk/eventstream-codec@3.306.0: + resolution: {integrity: sha512-tQCo0tl/NdD3rVt9hDkGO3SLPXdohlRx6j9IMor5HpM7tCFcB4WNpDHPHyClxRoprLT04BZksJZcbVUybAeTcA==} dependencies: '@aws-crypto/crc32': 3.0.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 '@aws-sdk/util-hex-encoding': 3.295.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-serde-browser@3.296.0: - resolution: {integrity: sha512-/8+CK0xlrCPwNj+Y+dOS51n+TJYS9GqWbZbA14tkRJvjEpRWhke69UsON9TA0aW2LsO+Lz+5P9Gjv+1hNqCKGg==} + /@aws-sdk/eventstream-serde-browser@3.306.0: + resolution: {integrity: sha512-Vbx0KQzZ5YAeYwC3tbCGsJZ2nSqKQlQFbuwhXe/Btz/dh1HaJPMxoIC8Dr0b6Z7S8l2Pq4ucqdNaUzLeJJbezw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-serde-universal': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/eventstream-serde-universal': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-serde-config-resolver@3.296.0: - resolution: {integrity: sha512-wJXfJg6z05WcHYWyWtzDKQL8mRYQu8ZCZogLGGu7SZuVBqSVTCLwyPt4JpKkQ6Aw7CqP7LHR77EGCpRHLs2xDQ==} + /@aws-sdk/eventstream-serde-config-resolver@3.306.0: + resolution: {integrity: sha512-MBNJspHTbP3+bZeDgfH+FcAxBodKH3NnXmSCyUosMJMaNQ8JtqsaW+y6FfvC6aVht3FyC6qKWBjuKfEeG2jLCA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-serde-node@3.299.0: - resolution: {integrity: sha512-xBF1hpxxbsjojrJQLbeqliTNiELvfqQFem13RjvfYMmVN0DzVNzMNg3Ni73NEdiddfYBX3KNWDhiiLD7imkurA==} + /@aws-sdk/eventstream-serde-node@3.306.0: + resolution: {integrity: sha512-Fq6n8vUMxMSqWFD2xSjh/X7Wyr+CggGHjsVgIFfXIXEK14iTOnOK7/yS86mDR6GBRupIfrw/Q+Jf0A7b8o2Wlg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-serde-universal': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/eventstream-serde-universal': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/eventstream-serde-universal@3.296.0: - resolution: {integrity: sha512-TbHDJN79UORGVUKBPfEVMOJHj8yQyb9ru41dw3aFy7KxeGQxWH4OL07cEJyjTTq8mgQXPIdPjav7PTvOIuE59g==} + /@aws-sdk/eventstream-serde-universal@3.306.0: + resolution: {integrity: sha512-Xp2JCRkZm3dyVv2O/EJnOP1vwUwEmXXminbX1MgnuVIMifSbbjeo6lGqCsjrIkXyymkx4TvrmPmSWlwzPCnyVw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-codec': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/eventstream-codec': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/fetch-http-handler@3.296.0: - resolution: {integrity: sha512-wHuKQ+PGKQkYGVuIGscbcbbASl8yIVOSC+QTrZQ4PNsMDvQd9ey2npsmxZk1Z2ULaxY+qYtZCmByyGc8k51TtQ==} + /@aws-sdk/fetch-http-handler@3.306.0: + resolution: {integrity: sha512-T8OODOnPpDqkXS+XSMIkd6hf90h833JLN93wq3ibbyD/WvGveufFFHsbsNyccE9+CSv/BjEuN5QbHqTKTp3BlA==} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/querystring-builder': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-base64': 3.295.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/querystring-builder': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-base64': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/hash-blob-browser@3.299.0: - resolution: {integrity: sha512-/Ehpbu40SI964QByz5xjacpQVKGsYO1rz8vVveq9gdtiwMCFnYrVE8G9LMB5oRgOXxP8cvcqHYNjvxWWIeNBnA==} + /@aws-sdk/hash-blob-browser@3.306.0: + resolution: {integrity: sha512-OK3xQ60Vz1VTDgMGk8PjFESQlDjXCLR/q1xc9ODyXBO2/A+ntUxMBcGfu7KYjtGI69g91H/BGhPAy+W5Gg+rmw==} dependencies: - '@aws-sdk/chunked-blob-reader': 3.295.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/chunked-blob-reader': 3.303.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/hash-node@3.296.0: - resolution: {integrity: sha512-01Sgxm0NE3rtEznLY8vx1bfNsIeM5Sk5SjY9RXqnvCf9EyaKH9x5FMS/DX/SgDdIYi3aXbTwiwScNVCNBzOIQA==} + /@aws-sdk/hash-node@3.306.0: + resolution: {integrity: sha512-EcSLd6gKoDEEBPZqEv+Ky9gIyefwyyrAJGILGKoYBmcOIY7Y0xKId0hxCa9/1xvWTaVC1u+rA06DGgksZOa78w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-buffer-from': 3.295.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-buffer-from': 3.303.0 + '@aws-sdk/util-utf8': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/hash-stream-node@3.296.0: - resolution: {integrity: sha512-EO3nNQiTq5/AQj55E9T10RC7QRnExCIYsvTiKzQPfJEdKiTy8Xga6oQEAGttRABBlP0wTjG4HVnHEEFZ6HbcoQ==} + /@aws-sdk/hash-stream-node@3.306.0: + resolution: {integrity: sha512-9owhr/kmCRwRZWAeGnf3k+L5tD/DcLAEMfbIuH8uolEigI+YGRMXnJB0PpyzIyd1N8TM/bm6WW3uvQiFHy7Hxw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-utf8': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/invalid-dependency@3.296.0: - resolution: {integrity: sha512-dmy4fUds0woHGjxwziaSYCLtb/SOfoEeQjW0GFvHj+YGFyY5hJzna4C759Tt8X5obh1evUXlQcH+FL7TS+7tRQ==} + /@aws-sdk/invalid-dependency@3.306.0: + resolution: {integrity: sha512-9Mkcr+qG7QR4R5bJcA8bBNd8E2x6WaZStsQ3QeFbdQr3V3Tunvra/KlCFsEL55GgU8BZt5isOaHqq7uxs5ILtQ==} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/is-array-buffer@3.295.0: - resolution: {integrity: sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==} + /@aws-sdk/is-array-buffer@3.303.0: + resolution: {integrity: sha512-IitBTr+pou7v5BrYLFH/SbIf3g1LIgMhcI3bDXBq2FjzmDftj4bW8BOmg05b9YKf2TrrggvJ4yk/jH+yYFXoJQ==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/lib-storage@3.301.0(@aws-sdk/abort-controller@3.296.0)(@aws-sdk/client-s3@3.301.0): - resolution: {integrity: sha512-pIms1o+cBY5BUu5XVI/hhoP5+uzYKzYAi7tP96+Erfn9HsNSYXpnyGG2EcempbDNCX72DMzCQx/oPaYVNbzASQ==} + /@aws-sdk/lib-storage@3.306.0(@aws-sdk/abort-controller@3.306.0)(@aws-sdk/client-s3@3.306.0): + resolution: {integrity: sha512-/XPTLZ39gxaQGpcZhYW+o/cKpkELt94Exurs/2YSjNv0BiTueDLoY8pPMkXeuspOKlcPLQneX2HnjbvaQXjUhQ==} engines: {node: '>=14.0.0'} peerDependencies: '@aws-sdk/abort-controller': ^3.0.0 '@aws-sdk/client-s3': ^3.0.0 dependencies: - '@aws-sdk/abort-controller': 3.296.0 - '@aws-sdk/client-s3': 3.301.0 - '@aws-sdk/middleware-endpoint': 3.299.0 - '@aws-sdk/smithy-client': 3.296.0 + '@aws-sdk/abort-controller': 3.306.0 + '@aws-sdk/client-s3': 3.306.0 + '@aws-sdk/middleware-endpoint': 3.306.0 + '@aws-sdk/smithy-client': 3.306.0 buffer: 5.6.0 events: 3.3.0 stream-browserify: 3.0.0 tslib: 2.5.0 dev: false - /@aws-sdk/md5-js@3.296.0: - resolution: {integrity: sha512-TvDafbHFcplnf0QqRlkjZ/Dz+dLWBmzBEclRk+h34r4XaIWxvmQ9EtQRo6+6sfAVRtAj2l+i1fm9EjwPMVkb9A==} + /@aws-sdk/md5-js@3.306.0: + resolution: {integrity: sha512-QCv5hfFL3AsSQPZvO8YOaBoNlRu6+B2lVSVZHLaWrortlaRGQi5+fYgYPhpTho/2cw0qeogB4pQIho3UgCAmfg==} dependencies: - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-utf8': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-bucket-endpoint@3.300.0: - resolution: {integrity: sha512-i4CM71ajZIeTaZ2Oo2Y7ah8XjSOiEU/SB3X5psp/Ig4YZPkQpFyTjuIy5PdIlKr7pXn/sd2cud9Uezlcx+J5Cw==} + /@aws-sdk/middleware-bucket-endpoint@3.306.0: + resolution: {integrity: sha512-DL8Q146s0nJ7MSHxt8sr6MDR4tIh+q7z9Yki7o1soCMNGTaYCUC20nSffs7IhQAUo1/q3pRh8LoJNtIpa7Q3pA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/types': 3.306.0 '@aws-sdk/util-arn-parser': 3.295.0 '@aws-sdk/util-config-provider': 3.295.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-content-length@3.296.0: - resolution: {integrity: sha512-e7lJm3kkC2pWZdIw23gpMUk1GrpRTBRqhdFfVwyduXw6Wo4nBYv8Z5MOYy3/SlpjE1BDCaPBoZ3O19cO3arHxg==} + /@aws-sdk/middleware-content-length@3.306.0: + resolution: {integrity: sha512-JbONf2Ms+/DVRcpFNsKGdOQU94Js56KV+AhlPJmCwLxfyWvQjTt0KxFC1Dd+cjeNEXUduvBarrehgsqFlWnoHQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-endpoint@3.299.0: - resolution: {integrity: sha512-37BGxHem6yKjSC6zG2xPjvjE7APIDIvwkxL+/K1Jz9+T6AZITcs7tx5y6mIfvaHsdPuCKjrl7Wzg/9jgUKuLkw==} + /@aws-sdk/middleware-endpoint@3.306.0: + resolution: {integrity: sha512-i3QRiwgkcsuVN55O7l8I/QGwCypGRZXdYkPjU56LI2w2oiZ82f/nVMNXVc+ZFm2YH7WbCE+5jguw2J7HXdOlyQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-serde': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/url-parser': 3.296.0 - '@aws-sdk/util-middleware': 3.296.0 + '@aws-sdk/middleware-serde': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/url-parser': 3.306.0 + '@aws-sdk/util-middleware': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-expect-continue@3.296.0: - resolution: {integrity: sha512-aVCv9CdAVWt9AlZKQZRweIywkAszRrZUCo8K5bBUJNdD4061DoDqLK/6jmqXmObas0j1wQr/eNzjYbv99MZBCg==} + /@aws-sdk/middleware-expect-continue@3.306.0: + resolution: {integrity: sha512-k+UgyQpTqFaizClQRdVTpcGJduRXKS0GCDDV/pdz1NVx09YHCIxVpkpdkYj+2T1Ufp3bK7ju2FLaXJwoO6/r+Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-flexible-checksums@3.296.0: - resolution: {integrity: sha512-F5wVMhLIgA86PKsK/Az7LGIiNVDdZjoSn0+boe6fYW/AIAmgJhPf//500Md0GsKsLOCcPcxiQC43a0hVT2zbew==} + /@aws-sdk/middleware-flexible-checksums@3.306.0: + resolution: {integrity: sha512-0Z3eKIVdP9son45Id18pDWwfcqoYTzDsSfePMD//HByBQQusL8pS1D1mlWqVpnV++ZfNmPcnph+v6cIfHYVM4Q==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/crc32': 3.0.0 '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/is-array-buffer': 3.295.0 - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/is-array-buffer': 3.303.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-utf8': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-host-header@3.296.0: - resolution: {integrity: sha512-V47dFtfkX5lXWv9GDp71gZVCRws4fEdQ9QF9BQ/2UMSNrYjQLg6mFe7NibH+IJoNOid2FIwWIl94Eos636VGYQ==} + /@aws-sdk/middleware-host-header@3.306.0: + resolution: {integrity: sha512-mHDHK9E+c7HwMlrCJ+VFSB6tkq8oJVkYEHCvPkdrnzN/g9P/d/UhPIeGapZXMbAIZEaLpEGqs536mYzeRKZG8A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-location-constraint@3.296.0: - resolution: {integrity: sha512-KHkWaIrZOtJmV1/WO9KOf7kSK41ngfqts3YIun956NYglKTDKyrBIOPCgmXTT/03odnYsKVT/UfbEIh/v4RxGA==} + /@aws-sdk/middleware-location-constraint@3.306.0: + resolution: {integrity: sha512-TfSPLDcl/QTs2OHplJhbJMzdWe3/du5wrNn0LECligzX4f7Ygn2zV/UtqHet36tv206ssDm6b9g8KvRvG3FT2g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-logger@3.296.0: - resolution: {integrity: sha512-LzfEEFyBR9LXdWwLdtBrmi1vLdzgdJNntEgzqktVF8LwaCyY+9xIE6TGu/2V+9fJHAwECxjOC1eQbNQdAZ0Tmw==} + /@aws-sdk/middleware-logger@3.306.0: + resolution: {integrity: sha512-1FRHp/QB0Lb+CgP+c9CYW6BZh+q+5pnuOKo/Rd6hjYiM+kT1G/cWdXnMJQBR4rbTCTixbqCnObNJ1EyP/ofQhQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-recursion-detection@3.296.0: - resolution: {integrity: sha512-UG7TLDPz9ImQG0uVklHTxE9Us7rTImwN+6el6qZCpoTBuGeXgOkfb0/p8izJyFgY/hMUR4cZqs7IdCDUkxQF3w==} + /@aws-sdk/middleware-recursion-detection@3.306.0: + resolution: {integrity: sha512-Hpj42ZLmwCy/CtVxi57NTeOEPoUJlivF3VIgowZ9JhaF61cakVKyrJ+f3jwXciDUtuYrdKm5Wf6prW6apWo0YA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-retry@3.300.0: - resolution: {integrity: sha512-c3tj0Uc64mqnsosAjRBQbit0EUOd0OKrqC5eDB3YCJyLWQSlYRBk4ZBBbN2qTfo3ZCDP+tHgWxRduQlV6Knezg==} + /@aws-sdk/middleware-retry@3.306.0: + resolution: {integrity: sha512-eMyfr/aeurXXDz4x+WVrvLI8fVDP6klJOjziBEWZ/MUNP/hTFhkiQsMVbvT6O4Pspp7+FgCSdcUPG6Os2gK+CQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/service-error-classification': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-middleware': 3.296.0 - '@aws-sdk/util-retry': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/service-error-classification': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-middleware': 3.306.0 + '@aws-sdk/util-retry': 3.306.0 tslib: 2.5.0 uuid: 8.3.2 dev: false - /@aws-sdk/middleware-sdk-s3@3.296.0: - resolution: {integrity: sha512-zH4uZKEqumo01wn+dTwrYnvOui9GjDiuBHdECnSjnA0Mkxo/tfMPYzYD7mE8kUlBz7HfQcXeXlyaApj9fPkxvg==} + /@aws-sdk/middleware-sdk-s3@3.306.0: + resolution: {integrity: sha512-x1V4NKpY8waDBTUjg2TLcqLZjD6OoED0NMFvKPxul/l2rzInvcNK6L2ifxxhYb7YG9N4MtLnCvAUqEW5h3eLYw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/types': 3.306.0 '@aws-sdk/util-arn-parser': 3.295.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-sdk-sts@3.299.0: - resolution: {integrity: sha512-yE7IiMQpF1FYqLSYOei4AYM9z62ayFfMMyhKE9IFs+TVaag97uz8NaRlr88HDTcBCZ0CMl6UwNJlZytPD4NjCw==} + /@aws-sdk/middleware-sdk-sts@3.306.0: + resolution: {integrity: sha512-2rSAR3nc5faYuEnh1KxQMCMCkEkJyaDfA3zwWLqZ+/TBCH0PlPkBv+Z9yXmteEki0vI5Hr+e+atTutJZoyG13g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-signing': 3.299.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/middleware-signing': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-serde@3.296.0: - resolution: {integrity: sha512-xk2PpWAAX758oUTGkGBAncpOr7ddIXisjD2Y2r9DDXuE4JMho2x6zcrVSiYsGIQ6MHZ9XNJKBVDiK9PA4iQWGQ==} + /@aws-sdk/middleware-serde@3.306.0: + resolution: {integrity: sha512-M3gyPLPduZXMvdgt4XEpVO+3t0ZVPdgeQQwG6JnXv0dgyUizshYs4lrVOAb1KwF6StsmkrAgSN+I273elLiKjA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-signing@3.299.0: - resolution: {integrity: sha512-anhrjeNuo0470QodEmzteFMnqABNebL900yhfODySXCMiaoeTBpo8Qd8t4q4O8PizA7FeLYA3l/5tb/udp7qew==} + /@aws-sdk/middleware-signing@3.306.0: + resolution: {integrity: sha512-JhpSriN4xa4a/p5gAPL0OWFKJF4eWYU3K+LLlXBNGMbxg/qNL4skgT4dMFe3ii9EW8kI+r6tpvSgC+lP7/Tyng==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/signature-v4': 3.299.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-middleware': 3.296.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/signature-v4': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-middleware': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-ssec@3.296.0: - resolution: {integrity: sha512-vcSyXxEXAC9rWzUd7rq2/JxPdt87DKiA+wfiBrpGvFV+bacocIV0TFcpJncgZqMOoP8b6Osd+mW4BjlkwBamtA==} + /@aws-sdk/middleware-ssec@3.306.0: + resolution: {integrity: sha512-4oXDBsQSPWxyr5K9OjQA1Y+WChGYLD85mvcycd3WqKn9BKsQ9F4enE3XHmRg0qlgXV9CJ/fG1axLC3R9Aa6u/g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/middleware-stack@3.296.0: - resolution: {integrity: sha512-Rgo7/mdk9tt4qa9+pzG3AoGNhuj7NmnF5H+3DoPm75h58BYP8hKbKobdPGgI2rZLPtO3PGgmyw/4K4tQJPIZ8g==} + /@aws-sdk/middleware-stack@3.306.0: + resolution: {integrity: sha512-G//a6MVSxyFVpOMZ+dzT3+w7XblOd2tRJ5g+/okjn3pNBLbo5o9Hu33K/bz0SQjT/m5mU2F9m0wcdCPYbRPysg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/middleware-user-agent@3.299.0: - resolution: {integrity: sha512-Brm5UcbRhuVVmmbpDN8/WSJPCHogV64jGXL5upfL+iJ0c5eZ57LXOZ8kz++t3BU1rEkSIXHJanneEmn7Wbd5sA==} + /@aws-sdk/middleware-user-agent@3.306.0: + resolution: {integrity: sha512-tP6I+Lbs68muPfdMA6Rfc+8fYo49nEn9A3RMiOU2COClWsmiZatpbK9UYlqIOxeGB/s2jI7hXmQq6tT2LStLSg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-endpoints': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-endpoints': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/node-config-provider@3.300.0: - resolution: {integrity: sha512-60XJV+eW1FyyRNT75kAGdqDHLpWWqnZeCrEyufqQ3BXhhbD1l6oHy5W573DccEO84/0gQYlNbKL8hd8+iB59vA==} + /@aws-sdk/node-config-provider@3.306.0: + resolution: {integrity: sha512-+m+ALxNx5E1zLPPijO1pAbT5tnofLzZFWlnSYBEiOIwzaRU44rLYDqAhgXJkMMbOECkffDrv6ym0oWJIwJI+DA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/shared-ini-file-loader': 3.300.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/shared-ini-file-loader': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/node-http-handler@3.296.0: - resolution: {integrity: sha512-D15jjPqYSNhEq58BwkmIpD3VwqG4bL5acAaNu5wWAI4S4236JlG+nmpi3gEeE25z1KCwtBl7G30fVRgXYJ2CWA==} + /@aws-sdk/node-http-handler@3.306.0: + resolution: {integrity: sha512-qvNSIVdGf0pnWEXsAulIqXk7LML25Zc1yxbujxoAj8oX5y+mDhzQdHKrMgc0FuI4RKoEd9px4DYoUbmTWrrxwA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/abort-controller': 3.296.0 - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/querystring-builder': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/abort-controller': 3.306.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/querystring-builder': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/property-provider@3.296.0: - resolution: {integrity: sha512-kjczxE9Od5LoAKQOmxVWISJ9oPG3aCsB+2+NdI+k9EJFDXUUdMcVV3Skei5uHGgKLMsI6CZy8ezZx6YxOSLSew==} + /@aws-sdk/property-provider@3.306.0: + resolution: {integrity: sha512-37PnbjpANjHys0Y+DVmKUz1JbSGZ/mAndZeplTUsFDUtbNwJRw/fDyWUvGC82JWB4gNSP5muWscFvetZnK2l8A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/protocol-http@3.296.0: - resolution: {integrity: sha512-0U1Z/+tpwdRiSToWo1bpdkbTzjbLugTnd02ATjvK4B7zi363SUGlKfoWgV+v7FU/22CIUI1ZIe7XzXvq5rJfjA==} + /@aws-sdk/protocol-http@3.306.0: + resolution: {integrity: sha512-6Z8bqB8Ydz/qG7+lJzjwsjIca2w2zp4nZ2HjxMoUm0NBbVXGDx7H9qy9eOUqEiCbdXbsfK2BmVQreLhFLt056Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/querystring-builder@3.296.0: - resolution: {integrity: sha512-+ZrZdTRaVI1R1xKQNrTwuiRoPateUaJ/DNw/myJpTPt+ZRg0H7LKBGaJYwL4pl5l/z1UM/E1fOttSfSW7GHxfw==} + /@aws-sdk/querystring-builder@3.306.0: + resolution: {integrity: sha512-kvz6fLwE4KojTxbphuo9JPwKKuhau2mmSurnqhtf77t9+0cOh2uzyYhIUtOFewpLj+qGoh4b2EODlJqczc7IKg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-uri-escape': 3.295.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-uri-escape': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/querystring-parser@3.296.0: - resolution: {integrity: sha512-nLNZKVQfK42euv7101cE5qfg17YCtGcfccx3B5XSAzvyTROR46kwYqbEvYSsWisbZoRhbQc905gB/5E0U5HDIw==} + /@aws-sdk/querystring-parser@3.306.0: + resolution: {integrity: sha512-YjOdLcyS/8sNkFPgnxyUx+cM/P2XFGCA2WjQ0e9AXX8xFFkmnY6U5w2EknQ5zyvKy+R/KAV0KAMJBUB+ofjg0A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/service-error-classification@3.296.0: - resolution: {integrity: sha512-YIsWSQ38e1+FqXz3CMrkKS0JD8OLlHf6I72PJhbfegePpQQFqi9R8OREjP5V7UR9Z972yruv4i96ROH6SCtmoA==} + /@aws-sdk/service-error-classification@3.306.0: + resolution: {integrity: sha512-lmXIVHWU5J60GmmTgyj79kupWYg5ntyNrUPt1P9FYTsXz+tdk4YYH7/2IxZ1XjBr4jEsN56gfSI0cfT07ztQJA==} engines: {node: '>=14.0.0'} dev: false - /@aws-sdk/shared-ini-file-loader@3.300.0: - resolution: {integrity: sha512-xA+V08AMsb1EcNJ2UF896T4I3f6Q/H56Z3gTwcXyFXsCY3lYkEB2MEdST+x4+20emELkYjtu5SNsGgUCBehR7g==} + /@aws-sdk/shared-ini-file-loader@3.306.0: + resolution: {integrity: sha512-mDmBRN+Y0+EBD5megId97UIJGV/rmRsAds22qy0mmVdD3X7qlxn974btXVgfZyda6qw/pX6hgi8X99Qj6Wjb0w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/signature-v4-multi-region@3.299.0: - resolution: {integrity: sha512-AiS1JAVzfvaB6xqke/6dFU+jchk98tZ0RDGn4IoWw1iGf19uEEWj2hMfJeFjdtYSwLRDQmB0CO5bdZ2mzZBQtw==} + /@aws-sdk/signature-v4-multi-region@3.306.0: + resolution: {integrity: sha512-c+J/7oYZf1MWgEqHyzW6EM25FZfqHer+pMWwyaDCEQFsAuuNeqbvr5MWFrjYpSeF8MpfVbFsEfho5XmjHMq6jw==} engines: {node: '>=14.0.0'} peerDependencies: '@aws-sdk/signature-v4-crt': ^3.118.0 @@ -1785,59 +1785,59 @@ packages: '@aws-sdk/signature-v4-crt': optional: true dependencies: - '@aws-sdk/protocol-http': 3.296.0 - '@aws-sdk/signature-v4': 3.299.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/protocol-http': 3.306.0 + '@aws-sdk/signature-v4': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/signature-v4@3.299.0: - resolution: {integrity: sha512-3TtP+S3Tu0Q2/EwJLnN+IEok9nRyez79f6vprqXbC9Lex623cqh/OOYSy2oUjFlIgsIOLPum87/1bfcznYW+yQ==} + /@aws-sdk/signature-v4@3.306.0: + resolution: {integrity: sha512-yoQTo6wLirKHg34Zhm8tKmfEaK8fOn+psVdMtRs2vGq3uzKLb+YW5zywnujoVwBvygQTWxiDMwRxDduWAisccA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/is-array-buffer': 3.295.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/is-array-buffer': 3.303.0 + '@aws-sdk/types': 3.306.0 '@aws-sdk/util-hex-encoding': 3.295.0 - '@aws-sdk/util-middleware': 3.296.0 - '@aws-sdk/util-uri-escape': 3.295.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/util-middleware': 3.306.0 + '@aws-sdk/util-uri-escape': 3.303.0 + '@aws-sdk/util-utf8': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/smithy-client@3.296.0: - resolution: {integrity: sha512-HEpsLNozGe9XOWouq5A1TFw5KhFodi8tZqYVNEbSpLoRR+EQKf6OCRvKIRkOn7FnnaOasOR1n7S0D51UG6/irw==} + /@aws-sdk/smithy-client@3.306.0: + resolution: {integrity: sha512-AFdNkto0Md6laio9t70WtvocoZqVcAydbY5csimXQh+lhKVmy/C+ZcKarDvaa0JD6PjSHb4snYzcINFpHW5LJQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-stack': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/middleware-stack': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/token-providers@3.301.0: - resolution: {integrity: sha512-TgchzkIOLGMhL3dFKGHyztZ4/HOM/WvJC0bRxvrWTs+iDHRaaKNpzW1RzCVCtbH8F/B9h5qPdRFJ6jTHtCKf4A==} + /@aws-sdk/token-providers@3.306.0: + resolution: {integrity: sha512-GQlUx9u+fHLjOJedudLM//j7RSZAip57n59bjn/I3TRVjDs065opNu2xSWMPm1n46kPx6VA5z+DktvuFeAblxQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso-oidc': 3.301.0 - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/shared-ini-file-loader': 3.300.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/client-sso-oidc': 3.306.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/shared-ini-file-loader': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/types@3.296.0: - resolution: {integrity: sha512-s0wIac64rrMEo2ioUxP9IarGiiCGmelCspNcoNTPSjGl25QqjhyfQqTeGgS58qJ4fHoQb07qra39930xp1IzJg==} + /@aws-sdk/types@3.306.0: + resolution: {integrity: sha512-RnyknWWpQcRmNH7AsNr89sdhOoltCU/4YEwBMw34Eh+/36l7HfA5PdEKbsOkO7MO4+2g5qmmm/AHcnHRvymApg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/url-parser@3.296.0: - resolution: {integrity: sha512-nBgeGF+ziuDSLz+y8UAl6zL2tXxDwh3wqeXFe9ZcR4YW71BWuh+vEqEsaEMutOrfnJacCrYKTs9TkIOW41cEGg==} + /@aws-sdk/url-parser@3.306.0: + resolution: {integrity: sha512-mhyOjtycZgxKYo2CoDhDQONuRd5TLfEwmyGWVgFrfubF0LejQ3rkBRLC5zT9TBZ8RJHNlqU2oGdsZCy3JV6Rlw==} dependencies: - '@aws-sdk/querystring-parser': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/querystring-parser': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false @@ -1848,32 +1848,32 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/util-base64@3.295.0: - resolution: {integrity: sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==} + /@aws-sdk/util-base64@3.303.0: + resolution: {integrity: sha512-oj+p/GHHPcZEKjiiOHU/CyNQeh8i+8dfMMzU+VGdoK5jHaVG8h2b+V7GPf7I4wDkG2ySCK5b5Jw5NUHwdTJ13Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/util-buffer-from': 3.295.0 + '@aws-sdk/util-buffer-from': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-body-length-browser@3.295.0: - resolution: {integrity: sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==} + /@aws-sdk/util-body-length-browser@3.303.0: + resolution: {integrity: sha512-T643m0pKzgjAvPFy4W8zL+aszG3T22U8hb6stlMvT0z++Smv8QfIvkIkXjWyH2KlOt5GKliHwdOv8SAi0FSMJQ==} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/util-body-length-node@3.295.0: - resolution: {integrity: sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==} + /@aws-sdk/util-body-length-node@3.303.0: + resolution: {integrity: sha512-/hS8z6e18Le60hJr2TUIFoUjUiAsnQsuDn6DxX74GXhMOHeSwZDJ9jHF39quYkNMmAE37GrVH4MI9vE0pN27qw==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/util-buffer-from@3.295.0: - resolution: {integrity: sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==} + /@aws-sdk/util-buffer-from@3.303.0: + resolution: {integrity: sha512-hUU+NW+SW6RNojtAKnnmz+tDShVKlEx2YsS4a5fSfrKRUes+zWz10cxVX0RQfysd3R6tdSHhbjsSj8eCIybheg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/is-array-buffer': 3.295.0 + '@aws-sdk/is-array-buffer': 3.303.0 tslib: 2.5.0 dev: false @@ -1884,33 +1884,33 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/util-defaults-mode-browser@3.296.0: - resolution: {integrity: sha512-R+nzc0PuTMaOG3LV4FoS5W7oMAqqr8G1IyI+A4Q5iem6YDMF157qV5h6wpIt3A8n9YfjyssLsAT/WPfyv/M79w==} + /@aws-sdk/util-defaults-mode-browser@3.306.0: + resolution: {integrity: sha512-XczPC/klGngMNDcNvThloyeKoPoG61ts1tZVcDbyRaOqmoMH80fn+c6Ah4A/BPzbo8wm1MIA9kqeJI0ypps6qQ==} engines: {node: '>= 10.0.0'} dependencies: - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/types': 3.306.0 bowser: 2.11.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-defaults-mode-node@3.300.0: - resolution: {integrity: sha512-a8tZsgkMBhnBlADyhDXMglFh6vkX6zXcJ4pnE9D3JrLDL0Fl50/Zk8FbePilEF2Dv7XRIOe4K70OZnNeeELJcg==} + /@aws-sdk/util-defaults-mode-node@3.306.0: + resolution: {integrity: sha512-0hs/cS7Pu4sEO78n0Uv7ybBEFq5j23TOu3QNH+YMzF8n4yuQtaMwNM8DI2s03/pVGXYsPzO7036jREGcu+enXw==} engines: {node: '>= 10.0.0'} dependencies: - '@aws-sdk/config-resolver': 3.300.0 - '@aws-sdk/credential-provider-imds': 3.300.0 - '@aws-sdk/node-config-provider': 3.300.0 - '@aws-sdk/property-provider': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/config-resolver': 3.306.0 + '@aws-sdk/credential-provider-imds': 3.306.0 + '@aws-sdk/node-config-provider': 3.306.0 + '@aws-sdk/property-provider': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-endpoints@3.296.0: - resolution: {integrity: sha512-YraGGLJepXM6HCTaqEGTFf8RFRBdJ0C6uG5k0kVhiXmYxBkeupn8J07CVp9jfWqcPYWElAnMGVEZKU1OjRo4HQ==} + /@aws-sdk/util-endpoints@3.306.0: + resolution: {integrity: sha512-aPTqU4VGhec8LDhKZrfA3/sBHTYRa0favKEo8aEa/vIZJTNBAFlUhvr5z7peAr8gBOtZZcElzX8PiK3jjn3ILw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false @@ -1928,59 +1928,59 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/util-middleware@3.296.0: - resolution: {integrity: sha512-MNWU+doVuX+mIehEManP6OP+f08T33qQpHoBqKIeKpn3TjZjMHG7ujACTkJiEOHUrnwTov7h0Sm+3OZwk3kh9w==} + /@aws-sdk/util-middleware@3.306.0: + resolution: {integrity: sha512-14CSm1mTrfSNBGbkZu8vSjXYg7DUMfZc74IinOajcFtTswa/6SyiyhU9DK0a837qqwxSfFGpnE2thVeJIF/7FA==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/util-retry@3.296.0: - resolution: {integrity: sha512-0mh7SqOMjuJ4vE423SzA/AfCLM68jykbfpEBkTmfqkpjkeQSW+UXHAUdXsMmfzIneiq7go5Z548F868C3cZnwQ==} + /@aws-sdk/util-retry@3.306.0: + resolution: {integrity: sha512-zcgTEIehQAIAm4vBNWfXZpDNbIrDM095vZmpbozQwK/pfDqMGvq7j3r9atKuEGTtoomoGoYwj3x/KEhO6JXJLg==} engines: {node: '>= 14.0.0'} dependencies: - '@aws-sdk/service-error-classification': 3.296.0 + '@aws-sdk/service-error-classification': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-stream-browser@3.296.0: - resolution: {integrity: sha512-6L72tvxIImTDtZ0ckUfpPA2cGE2XhawNsjdngWySkwYev5Unqm/ywmfZm1wa52/4bmJwX35hcGPFQ8qgrPVeNQ==} + /@aws-sdk/util-stream-browser@3.306.0: + resolution: {integrity: sha512-g/UdUlVtMrdctzu8Yk6UKIlN9OtqGyTDC3bCzzr6dNmfdRMuilL5LZCAgusEEzH2MZGTNtw5BbYZBN//UNhxwQ==} dependencies: - '@aws-sdk/fetch-http-handler': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-base64': 3.295.0 + '@aws-sdk/fetch-http-handler': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-base64': 3.303.0 '@aws-sdk/util-hex-encoding': 3.295.0 - '@aws-sdk/util-utf8': 3.295.0 + '@aws-sdk/util-utf8': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-stream-node@3.296.0: - resolution: {integrity: sha512-Gva28bJVlkR10Wy1IGB9ZaQo6wCP8tDacrxwSWP/cPBegFf8yUX53LUqIWxI6Fo4GcSI/+Blri51Sni7oldYhg==} + /@aws-sdk/util-stream-node@3.306.0: + resolution: {integrity: sha512-hF8P52E3borUp6Z4K8cQOGm+bJgkbkE/VSl0EiO29E563ZiPnT/VBYVICX7MIDNPgHKDN5n/OSVfe1egjhOigQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/node-http-handler': 3.296.0 - '@aws-sdk/types': 3.296.0 - '@aws-sdk/util-buffer-from': 3.295.0 + '@aws-sdk/node-http-handler': 3.306.0 + '@aws-sdk/types': 3.306.0 + '@aws-sdk/util-buffer-from': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-uri-escape@3.295.0: - resolution: {integrity: sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==} + /@aws-sdk/util-uri-escape@3.303.0: + resolution: {integrity: sha512-N3ULNuHCL3QzAlCTY+XRRkRQTYCTU8RRuzFCJX0pDpz9t2K+tLT7DbxqupWGNFGl5Xlulf1Is14J3BP/Dx91rA==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false - /@aws-sdk/util-user-agent-browser@3.299.0: - resolution: {integrity: sha512-TRPAemTDzqxCxbpVkXV+Sp9JbEo0JdT/W8qzP/uuOdglZlNXM+SadkOuNFmqr2KG83bJE6lvomGJcJb9vMN4XQ==} + /@aws-sdk/util-user-agent-browser@3.306.0: + resolution: {integrity: sha512-uZAtpvCasUdWRlB/nEjN0gf6G7810hT50VyWjpd6mQW78myV8M5fu/R03UFAZ+D8fhqqIdzR/IXDY1QUGp8bCA==} dependencies: - '@aws-sdk/types': 3.296.0 + '@aws-sdk/types': 3.306.0 bowser: 2.11.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-user-agent-node@3.300.0: - resolution: {integrity: sha512-lBx4HxyTxxQiqGcmvOK4p09XC2YxmH6ANQXdXdiT28qM3OJjf5WLyl4FfdH7grDSryTFdF06FRFtJDFSuSWYrw==} + /@aws-sdk/util-user-agent-node@3.306.0: + resolution: {integrity: sha512-zLp9wIx7FZ0qFLimYW3lJ1uJM5gqxmmcQjNimUaUq/4a1caDkaiF/QeyyMFva+wIjyHRv22P5abUBjIEZrs5WA==} engines: {node: '>=14.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1988,8 +1988,8 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/node-config-provider': 3.300.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/node-config-provider': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false @@ -1999,25 +1999,25 @@ packages: tslib: 2.5.0 dev: false - /@aws-sdk/util-utf8@3.295.0: - resolution: {integrity: sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==} + /@aws-sdk/util-utf8@3.303.0: + resolution: {integrity: sha512-tZXVuMOIONPOuOGBs/XRdzxv6jUvTM620dRFFIHZwlGiW8bo0x0LlonrzDAJZA4e9ZwmxJIj8Ji13WVRBGvZWg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/util-buffer-from': 3.295.0 + '@aws-sdk/util-buffer-from': 3.303.0 tslib: 2.5.0 dev: false - /@aws-sdk/util-waiter@3.296.0: - resolution: {integrity: sha512-L57uIC74VyTjAdCH0wQqtvJtwK4+gIT/51K/BJHEqVg6C1pOwgrdT6dHC3q8b+gdOrZ6Ff/vTEfh7FZmVcPPjg==} + /@aws-sdk/util-waiter@3.306.0: + resolution: {integrity: sha512-/cCmEaxGJOVKHuuzm4zM3aY2Un7pJGyewcd9WWvLjZIoF9jCCqyjmsxM+OXdCjs7NOdo41cValYhILYI+nD8Tg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/abort-controller': 3.296.0 - '@aws-sdk/types': 3.296.0 + '@aws-sdk/abort-controller': 3.306.0 + '@aws-sdk/types': 3.306.0 tslib: 2.5.0 dev: false - /@aws-sdk/xml-builder@3.295.0: - resolution: {integrity: sha512-7VX3Due7Ip73yfYErFDHZvhgBohC4IyMTfW49DI4C/LFKFCcAoB888MdevUkB87GoiNaRLeT3ZMZ86IWlSEaow==} + /@aws-sdk/xml-builder@3.303.0: + resolution: {integrity: sha512-Oht8XdmCkLhwZx2WTjOOLN8rt9000zJS4Hehv9NG7+kKfaA6sKFGIculmumaS+h8hAwWFndtgpOTlKC95zHSWQ==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 @@ -2047,13 +2047,13 @@ packages: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.21.3 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.3) '@babel/helper-module-transforms': 7.21.2 '@babel/helpers': 7.21.0 '@babel/parser': 7.21.3 '@babel/template': 7.20.7 '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -2067,7 +2067,7 @@ packages: resolution: {integrity: sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 @@ -2214,7 +2214,7 @@ packages: '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true @@ -2312,7 +2312,7 @@ packages: dependencies: '@babel/template': 7.20.7 '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true @@ -3043,7 +3043,7 @@ packages: '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.3) - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 dev: true /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.3): @@ -3389,6 +3389,13 @@ packages: dependencies: regenerator-runtime: 0.13.11 + /@babel/runtime@7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: true + /@babel/template@7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} @@ -3409,7 +3416,7 @@ packages: '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.3 - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: @@ -3451,7 +3458,7 @@ packages: dependencies: '@bull-board/api': 5.0.0 '@bull-board/ui': 5.0.0 - '@fastify/static': 6.9.0 + '@fastify/static': 6.10.0 '@fastify/view': 7.4.1 ejs: 3.1.8 dev: false @@ -3949,8 +3956,8 @@ packages: mime: 3.0.0 dev: false - /@fastify/static@6.9.0: - resolution: {integrity: sha512-9SBVNJi2+KTnfiW1WjiVXDsmUxliNI54OF1eOiaop264dh8FwXSuLmO62JXvx7+VD0vQXEqsyRbFCYUJ9aJxng==} + /@fastify/static@6.10.0: + resolution: {integrity: sha512-TGruNm6ZabkQz2oRNoarPnY2BvS9i9DNf8Nn1aDcZp+WjOQRPCq0Wy2ko78yGB5JHytdCWoHpprc128QtLl8hw==} dependencies: '@fastify/accept-negotiator': 1.0.0 '@fastify/send': 2.0.1 @@ -4259,7 +4266,7 @@ packages: chalk: 4.1.2 dev: true - /@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.0.2)(vite@4.2.1): + /@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.0.3)(vite@4.2.1): resolution: {integrity: sha512-ou4ZJSXMMWHqGS4g8uNRbC5TiTWxAgQZiVucoUrOCWuPrTbkpJbmVyIi9jU72SBry7gQtuMEDp4YR8EEXAg7VQ==} peerDependencies: typescript: '>= 4.3.x' @@ -4271,8 +4278,8 @@ packages: 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.0.2) - typescript: 5.0.2 + react-docgen-typescript: 2.2.2(typescript@5.0.3) + typescript: 5.0.3 vite: 4.2.1(@types/node@18.15.11)(sass@1.60.0) dev: true @@ -4478,7 +4485,7 @@ packages: '@xmldom/xmldom': 0.8.6 debug: 4.3.4(supports-color@8.1.1) headers-polyfill: 3.1.2 - outvariant: 1.3.0 + outvariant: 1.4.0 strict-event-emitter: 0.2.8 web-encoding: 1.1.5 transitivePeerDependencies: @@ -4493,8 +4500,8 @@ packages: tar-fs: 2.1.1 dev: true - /@nestjs/common@9.3.12(reflect-metadata@0.1.13)(rxjs@7.8.0): - resolution: {integrity: sha512-NtrUG2VgCbhmZEO1yRt/Utq16uFRV+xeHAOtdYIsfHGG0ssAV2lVLlvFFAQYh0SQ+KuYY1Gsxd3GK2JFoJCNqQ==} + /@nestjs/common@9.4.0(reflect-metadata@0.1.13)(rxjs@7.8.0): + resolution: {integrity: sha512-RUcVAQsEF4WPrmzFXEOUfZnPwrLTe1UVlzXTlSyfqfqbdWDPKDGlIPVelBLfc5/+RRUQ0I5iE4+CQvpCmkqldw==} peerDependencies: cache-manager: <=5 class-transformer: '*' @@ -4513,11 +4520,11 @@ packages: reflect-metadata: 0.1.13 rxjs: 7.8.0 tslib: 2.5.0 - uid: 2.0.1 + uid: 2.0.2 dev: false - /@nestjs/core@9.3.12(@nestjs/common@9.3.12)(reflect-metadata@0.1.13)(rxjs@7.8.0): - resolution: {integrity: sha512-Qe0ZjJo7bOlfudn7KHLppYrt5i4k1nR1+9d5ppYat2bb5knCIT4kIqblj666n+22/2zvsHRiTo015cLyLKsLRQ==} + /@nestjs/core@9.4.0(@nestjs/common@9.4.0)(reflect-metadata@0.1.13)(rxjs@7.8.0): + resolution: {integrity: sha512-yTLryCgFD0462wPe4HIzhyTcDgibt8Stfwb5YzcX7Ma0NM4m8uBIpcPG109KBubp8ZmV85e5mw4rl20qLQQVsQ==} requiresBuild: true peerDependencies: '@nestjs/common': ^9.0.0 @@ -4534,7 +4541,7 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 9.3.12(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.0(reflect-metadata@0.1.13)(rxjs@7.8.0) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 @@ -4542,13 +4549,13 @@ packages: reflect-metadata: 0.1.13 rxjs: 7.8.0 tslib: 2.5.0 - uid: 2.0.1 + uid: 2.0.2 transitivePeerDependencies: - encoding dev: false - /@nestjs/testing@9.3.12(@nestjs/common@9.3.12)(@nestjs/core@9.3.12): - resolution: {integrity: sha512-nH274IXEqU4hr4bcb71POe58hYLONt9RcfKKM5ZvOS7wYMnybMpKKR8DkC1WcfE1P2k2GQmQoHeSH5emPtYrBA==} + /@nestjs/testing@9.4.0(@nestjs/common@9.4.0)(@nestjs/core@9.4.0): + resolution: {integrity: sha512-xZWp363P4otcebg++gSjUcdCfTK0RorORzyFq3aLaSAQOlq8kxfFDRIKzEATR4aOUfqTMMsAA8lhnMJWf35N6A==} peerDependencies: '@nestjs/common': ^9.0.0 '@nestjs/core': ^9.0.0 @@ -4560,8 +4567,8 @@ packages: '@nestjs/platform-express': optional: true dependencies: - '@nestjs/common': 9.3.12(reflect-metadata@0.1.13)(rxjs@7.8.0) - '@nestjs/core': 9.3.12(@nestjs/common@9.3.12)(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/common': 9.4.0(reflect-metadata@0.1.13)(rxjs@7.8.0) + '@nestjs/core': 9.4.0(@nestjs/common@9.4.0)(reflect-metadata@0.1.13)(rxjs@7.8.0) tslib: 2.5.0 dev: false @@ -5282,7 +5289,7 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.0.2(typescript@5.0.2)(vite@4.2.1): + /@storybook/builder-vite@7.0.2(typescript@5.0.3)(vite@4.2.1): resolution: {integrity: sha512-G6CD2Gf2zwzRslvNvqgz4FeADVEA9XA4Mw6+NM6Twc+Wy/Ah482dvHS9ApSgirtGyBKjOfdHn1xQT4Z+kzbJnw==} peerDependencies: '@preact/preset-vite': '*' @@ -5320,7 +5327,7 @@ packages: remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.20.2 - typescript: 5.0.2 + typescript: 5.0.3 vite: 4.2.1(@types/node@18.15.11)(sass@1.60.0) transitivePeerDependencies: - supports-color @@ -5337,17 +5344,6 @@ packages: telejson: 7.0.4 dev: true - /@storybook/channel-postmessage@7.0.1: - resolution: {integrity: sha512-wcJfnq49PwqKhfMJciDCJ1P5YcpN43gj9MLXIEprq7escegiM4YHBeOHCsu/YZnaE7pLnYRSxqCoy/MpWZPbIQ==} - dependencies: - '@storybook/channels': 7.0.1 - '@storybook/client-logger': 7.0.1 - '@storybook/core-events': 7.0.1 - '@storybook/global': 5.0.0 - qs: 6.11.1 - telejson: 7.0.4 - dev: true - /@storybook/channel-postmessage@7.0.2: resolution: {integrity: sha512-SZ/KqnZcx10W9hJbrzBKcP9dmgaeTaXugUhcgw1IkmjKWdsKazqFZCPwQWZZKAmhO4wYbyYOhkz3wfSIeB4mFw==} dependencies: @@ -5359,6 +5355,17 @@ packages: telejson: 7.0.4 dev: true + /@storybook/channel-postmessage@7.1.0-alpha.0: + resolution: {integrity: sha512-uNt2+hsf31DT2c/QkwjZFIJ/tE4BLe/JQss721/9xR91WsCestdcJfDhUHLcC+d2q2qoLq29rWrWW2TK+kojKw==} + dependencies: + '@storybook/channels': 7.1.0-alpha.0 + '@storybook/client-logger': 7.1.0-alpha.0 + '@storybook/core-events': 7.1.0-alpha.0 + '@storybook/global': 5.0.0 + qs: 6.11.1 + telejson: 7.0.4 + dev: true + /@storybook/channel-websocket@7.0.2: resolution: {integrity: sha512-YU3lFId6Nsi75ddA+3qfbnLfNUPswboYyx+SALhaLuXqz7zqfzX4ezMgxeS/h0gRlUJ7nf2/yJ5qie/kZaizjw==} dependencies: @@ -5372,14 +5379,14 @@ packages: resolution: {integrity: sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==} dev: true - /@storybook/channels@7.0.1: - resolution: {integrity: sha512-Hm/vrCkpxvZRIIjs9vwLDvK4TVINj8E3xRBPq29qUs/kdpf3f8+NiYd/gRXN+JNH7Ov1NC4L5khlR1rXh5AUNQ==} - dev: true - /@storybook/channels@7.0.2: resolution: {integrity: sha512-qkI8mFy9c8mxN2f01etayKhCaauL6RAsxRzbX1/pKj6UqhHWqqUbtHwymrv4hG5qDYjV1e9pd7ae5eNF8Kui0g==} dev: true + /@storybook/channels@7.1.0-alpha.0: + resolution: {integrity: sha512-9FGJaJU7FdrsF4O8JmvJe/8L3VoriNFssMGH+zkl4Amk0lpEQ/zB9FnHTaALV2hP5DUdtHhyO81u3YXQrmgOUQ==} + dev: true + /@storybook/cli@7.0.2: resolution: {integrity: sha512-xMM2QdXNGg09wuXzAGroKrbsnaHSFPmtmefX1XGALhHuKVwxOoC2apWMpek6gY/9vh5EIRTog2Dvfd2BzNrT6Q==} hasBin: true @@ -5411,7 +5418,7 @@ packages: globby: 11.1.0 jscodeshift: 0.14.0(@babel/preset-env@7.20.2) leven: 3.1.0 - prettier: 2.8.4 + prettier: 2.8.7 prompts: 2.4.2 puppeteer-core: 2.1.1 read-pkg-up: 7.0.1 @@ -5435,14 +5442,14 @@ packages: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.0.1: - resolution: {integrity: sha512-yR8tGywLSTY/cmCae9yCmo6CzU+F4QAzA2RqgKRHpM44LHjsD1rG3wQxnBa5cZs7/zopMKYK1Bt7xhp/dSS56g==} + /@storybook/client-logger@7.0.2: + resolution: {integrity: sha512-rv7W2BhzIQHbFpUM5/CP/acS6T5lTmaxT0MbZ9n+9h++9QQU/cFOdkZgSUbLVAb1AeUGoLsk0HYzcqPpV35Xsw==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.0.2: - resolution: {integrity: sha512-rv7W2BhzIQHbFpUM5/CP/acS6T5lTmaxT0MbZ9n+9h++9QQU/cFOdkZgSUbLVAb1AeUGoLsk0HYzcqPpV35Xsw==} + /@storybook/client-logger@7.1.0-alpha.0: + resolution: {integrity: sha512-NFIFFeKgZxSXvDnd0nTG1MehTw1j7tMCg8rbK4lJ/R5waQkygJ/9QDVXZlZjC9+FU/Gj175iSIf5LNCHQjylAQ==} dependencies: '@storybook/global': 5.0.0 dev: true @@ -5461,7 +5468,7 @@ packages: globby: 11.1.0 jscodeshift: 0.14.0(@babel/preset-env@7.21.4) lodash: 4.17.21 - prettier: 2.8.4 + prettier: 2.8.7 recast: 0.23.1 transitivePeerDependencies: - supports-color @@ -5522,14 +5529,14 @@ packages: resolution: {integrity: sha512-pxzNmgEI1p90bHyAYABHDDtB2XM5pffq6CqIHboK6aSCux7Cdc16IjOYq6BJIhCKaaI+qQHaFLR4JfaFAsxwQQ==} dev: true - /@storybook/core-events@7.0.1: - resolution: {integrity: sha512-Q3wBHoahO5d7Zm0S0zvXIqnG/fuf02RNMjTiAMYG55MlPZEmu3ll4VzDtroeku4Zwo9xbHGxgVQH5LFScQncEQ==} - dev: true - /@storybook/core-events@7.0.2: resolution: {integrity: sha512-1DCHCwHRL3+rlvnVVc/BCfReP31XaT2WYgcLeGTmkX1E43Po1MkgcM7PnJPSaa9POvSqZ+6YLZv5Bs1SXbufow==} dev: true + /@storybook/core-events@7.1.0-alpha.0: + resolution: {integrity: sha512-GckKwXy5rcbeLym9yvwziT3KiryLr3uvh2hF9F3Tde1iKvi822Acytg8viVQIUahzdBvlnaRZIIBxhAFPIAu5g==} + dev: true + /@storybook/core-server@7.0.2: resolution: {integrity: sha512-7ipGws8YffVaiwkc+D0+MfZc/Sy52aKenG3nDJdK4Ajmp5LPAlelb/sxIhfRvoHDbDsy2FQNz++Mb55Yh03KkA==} dependencies: @@ -5657,16 +5664,6 @@ packages: '@storybook/preview-api': 7.0.0 dev: true - /@storybook/instrumenter@7.0.1: - resolution: {integrity: sha512-QeM4Jkib9/2KwPiw1dPlvwJ6ld9AZCweeKAH+uQg2BiU4qPINg6SGFoa2SwLxviZZzsMjAU/XvUei1BW2QLaow==} - dependencies: - '@storybook/channels': 7.0.1 - '@storybook/client-logger': 7.0.1 - '@storybook/core-events': 7.0.1 - '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.0.1 - dev: true - /@storybook/instrumenter@7.0.2: resolution: {integrity: sha512-zr9/fuaYtGVUtcL8XgjA4Iq5jtzdcqQyOSH4XLXtz6JtSad3lkRagbJo2Vzbw7dO/4vzjfTMxEzvWjUuPxLOhA==} dependencies: @@ -5677,6 +5674,16 @@ packages: '@storybook/preview-api': 7.0.2 dev: true + /@storybook/instrumenter@7.1.0-alpha.0: + resolution: {integrity: sha512-ySi6SXRAKoY202QZaUQqsdBXV3YhlcIfIkfdrcOOa8+abwxQABrZJeRQi41gGWIiqXDWTfx2BZDlaRU39Kyw5Q==} + dependencies: + '@storybook/channels': 7.1.0-alpha.0 + '@storybook/client-logger': 7.1.0-alpha.0 + '@storybook/core-events': 7.1.0-alpha.0 + '@storybook/global': 5.0.0 + '@storybook/preview-api': 7.1.0-alpha.0 + dev: true + /@storybook/jest@0.1.0: resolution: {integrity: sha512-TmybnEXlv5Fu2/Hq4nRj7alS9mw4CasLR0RDwaAzS+Vpvu1TC4+j9rh+b1BHtmWebbJh0JMT6mgzPqOyJdgtQA==} dependencies: @@ -5752,26 +5759,6 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.0.1: - resolution: {integrity: sha512-7MIDCND5plj1RSuCUnRBlJGkH4lBr3j8fIqqmzkoBaw7sMggtWlgGg6lF9j/OOzirpQeDKf4pjKhF0DdL6UAWw==} - dependencies: - '@storybook/channel-postmessage': 7.0.1 - '@storybook/channels': 7.0.1 - '@storybook/client-logger': 7.0.1 - '@storybook/core-events': 7.0.1 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/types': 7.0.1 - '@types/qs': 6.9.7 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.1 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true - /@storybook/preview-api@7.0.2: resolution: {integrity: sha512-QAlJM/r92+dQe/kB7MTTR9b/1mt9UJjxNjazGdEWipA/nw23kOF3o/hBcvKwBYkit4zGYsX70H+vuzW8hCo/lA==} dependencies: @@ -5792,6 +5779,26 @@ packages: util-deprecate: 1.0.2 dev: true + /@storybook/preview-api@7.1.0-alpha.0: + resolution: {integrity: sha512-wZCEFCpxqjjSGdJKtVYd/ck/Fg/dsU3cPEbjPhUyLQqKnUA/MsR8vVzDtkmugWwupviChfjARvwLdNN8u45OXw==} + dependencies: + '@storybook/channel-postmessage': 7.1.0-alpha.0 + '@storybook/channels': 7.1.0-alpha.0 + '@storybook/client-logger': 7.1.0-alpha.0 + '@storybook/core-events': 7.1.0-alpha.0 + '@storybook/csf': 0.1.0 + '@storybook/global': 5.0.0 + '@storybook/types': 7.1.0-alpha.0 + '@types/qs': 6.9.7 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.11.1 + synchronous-promise: 2.0.17 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + /@storybook/preview@7.0.2: resolution: {integrity: sha512-U7MZkDT9bBq7HggLAXmTO9gI4eqhYs26fZS0L6iTE/PCX4Wg2TJBJSq2X8jhDXRqJFOt8SrQ756+V5Vtwrh4Og==} dev: true @@ -5806,7 +5813,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/react-vite@7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.2)(vite@4.2.1): + /@storybook/react-vite@7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.3)(vite@4.2.1): resolution: {integrity: sha512-1bDrmGo6imxBzZKJJ+SEHPuDn474JY3Yatm0cPaNVtlYhbnbiTPa3PxhI4U3233l4Qsc6DXNLKvi++j/knXDCw==} engines: {node: '>=16'} peerDependencies: @@ -5814,10 +5821,10 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.0.2)(vite@4.2.1) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.0.3)(vite@4.2.1) '@rollup/pluginutils': 4.2.1 - '@storybook/builder-vite': 7.0.2(typescript@5.0.2)(vite@4.2.1) - '@storybook/react': 7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.2) + '@storybook/builder-vite': 7.0.2(typescript@5.0.3)(vite@4.2.1) + '@storybook/react': 7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.3) '@vitejs/plugin-react': 3.1.0(vite@4.2.1) ast-types: 0.14.2 magic-string: 0.27.0 @@ -5833,7 +5840,7 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.2): + /@storybook/react@7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.3): resolution: {integrity: sha512-2P7Oju1XKWMyn75dO0vjL4gthzBL/lLiCBRyAHKXZJ1H2eNdWjXkOOtH1HxnbRcXjWSU4tW96dqKY8m0iR9zAA==} engines: {node: '>=16.0.0'} peerDependencies: @@ -5866,7 +5873,7 @@ packages: react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 5.0.2 + typescript: 5.0.3 util-deprecate: 1.0.2 transitivePeerDependencies: - supports-color @@ -5895,7 +5902,7 @@ packages: '@storybook/types': 7.0.2 estraverse: 5.3.0 lodash: 4.17.21 - prettier: 2.8.4 + prettier: 2.8.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -5920,8 +5927,8 @@ packages: /@storybook/testing-library@0.0.14-next.1: resolution: {integrity: sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw==} dependencies: - '@storybook/client-logger': 7.0.1 - '@storybook/instrumenter': 7.0.1 + '@storybook/client-logger': 7.1.0-alpha.0 + '@storybook/instrumenter': 7.1.0-alpha.0 '@testing-library/dom': 8.20.0 '@testing-library/user-event': 13.5.0(@testing-library/dom@8.20.0) ts-dedent: 2.2.0 @@ -5950,15 +5957,6 @@ packages: file-system-cache: 2.0.2 dev: true - /@storybook/types@7.0.1: - resolution: {integrity: sha512-Tpmxv0cZzujB6fktjf5hHZk9nBMQ5dA+dez3avGfow3BkSuqSZgNZ3NF5Bb6sDR/ccO2hWh+zttZqfS4SngVvQ==} - dependencies: - '@storybook/channels': 7.0.1 - '@types/babel__core': 7.20.0 - '@types/express': 4.17.17 - file-system-cache: 2.0.2 - dev: true - /@storybook/types@7.0.2: resolution: {integrity: sha512-0OCt/kAexa8MCcljxA+yZxGMn0n2U2Ync0KxotItqNbKBKVkaLQUls0+IXTWSCpC/QJvNZ049jxUHHanNi/96w==} dependencies: @@ -5968,7 +5966,16 @@ packages: file-system-cache: 2.0.2 dev: true - /@storybook/vue3-vite@7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.2)(vite@4.2.1)(vue@3.2.47): + /@storybook/types@7.1.0-alpha.0: + resolution: {integrity: sha512-84VOCC/NEH6B5puWgK9VGjigmAfTU1iJJmly+OaF2lJv6LeHRb4/UOPSeg8fA8uHh3E32jSRKA2B8sUnxCCQrg==} + dependencies: + '@storybook/channels': 7.1.0-alpha.0 + '@types/babel__core': 7.20.0 + '@types/express': 4.17.17 + file-system-cache: 2.0.2 + dev: true + + /@storybook/vue3-vite@7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.3)(vite@4.2.1)(vue@3.2.47): resolution: {integrity: sha512-lmxnHA9wHkgbNq+oW6dVnXbe9QOFjOz4Ejkl1AAjjg0blJ+VGautVa3mSeYM99szx5EigSfQjFAkv/TAJVC80Q==} engines: {node: ^14.18 || >=16} peerDependencies: @@ -5976,7 +5983,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 dependencies: - '@storybook/builder-vite': 7.0.2(typescript@5.0.2)(vite@4.2.1) + '@storybook/builder-vite': 7.0.2(typescript@5.0.3)(vite@4.2.1) '@storybook/core-server': 7.0.2 '@storybook/vue3': 7.0.2(vue@3.2.47) '@vitejs/plugin-vue': 4.1.0(vite@4.2.1)(vue@3.2.47) @@ -6015,7 +6022,7 @@ packages: - supports-color dev: true - /@swc/cli@0.1.62(@swc/core@1.3.42)(chokidar@3.5.3): + /@swc/cli@0.1.62(@swc/core@1.3.46)(chokidar@3.5.3): resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} engines: {node: '>= 12.13'} hasBin: true @@ -6027,7 +6034,7 @@ packages: optional: true dependencies: '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.3.42 + '@swc/core': 1.3.46(@swc/helpers@0.5.0) chokidar: 3.5.3 commander: 7.2.0 fast-glob: 3.2.12 @@ -6047,110 +6054,119 @@ packages: dev: false optional: true - /@swc/core-darwin-arm64@1.3.42: - resolution: {integrity: sha512-hM6RrZFyoCM9mX3cj/zM5oXwhAqjUdOCLXJx7KTQps7NIkv/Qjvobgvyf2gAb89j3ARNo9NdIoLjTjJ6oALtiA==} + /@swc/core-darwin-arm64@1.3.46: + resolution: {integrity: sha512-kY4ASe7SsntDw2B1T70H9K1CFmK8POi+LyIpeCyC96EB9wbH2Sax+ploBB/wZALbYzr/dMJzOCU8QXzdmVS4Rg==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64@1.3.42: - resolution: {integrity: sha512-bjsWtHMb6wJK1+RGlBs2USvgZ0txlMk11y0qBLKo32gLKTqzUwRw0Fmfzuf6Ue2a/w//7eqMlPFEre4LvJajGw==} + /@swc/core-darwin-x64@1.3.46: + resolution: {integrity: sha512-kE3PMk8xW+2BZ3oZiTxxsUU/GzrGwM+qS4frOBz9TYHZe+W1dTtj4F9vBit4PFJ+tv4O6DPt9neGobzdq0UmRw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.42: - resolution: {integrity: sha512-Oe0ggMz3MyqXNfeVmY+bBTL0hFSNY3bx8dhcqsh4vXk/ZVGse94QoC4dd92LuPHmKT0x6nsUzB86x2jU9QHW5g==} + /@swc/core-linux-arm-gnueabihf@1.3.46: + resolution: {integrity: sha512-7TbiUr9MYxT+mC7sVrayag/isFoaZUG/ogkEK8B/ouA1pnIYqWh3N5ifqCzfcSRiOURt+vVqPyoO1puSiNzVuQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-gnu@1.3.42: - resolution: {integrity: sha512-ZJsa8NIW1RLmmHGTJCbM7OPSbBZ9rOMrLqDtUOGrT0uoJXZnnQqolflamB5wviW0X6h3Z3/PSTNGNDCJ3u3Lqg==} + /@swc/core-linux-arm64-gnu@1.3.46: + resolution: {integrity: sha512-Ycw4LU/wsUK9R+Y/2qFOPQseZDfM5D5gbWGrrYj5RoTm57FbnUsSsO26QeZxUNvams1oAQDkZDuerCc9qBRzIQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl@1.3.42: - resolution: {integrity: sha512-YpZwlFAfOp5vkm/uVUJX1O7N3yJDO1fDQRWqsOPPNyIJkI2ydlRQtgN6ZylC159Qv+TimfXnGTlNr7o3iBAqjg==} + /@swc/core-linux-arm64-musl@1.3.46: + resolution: {integrity: sha512-cBclyr6IW1PBr8l9D4FkebgbqlkiIYnSJCbY84J/6PfTzQlD6w9a1TAoYxdGZpJ7SGHdmB0oDiZS1rhxCSCV/Q==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu@1.3.42: - resolution: {integrity: sha512-0ccpKnsZbyHBzaQFdP8U9i29nvOfKitm6oJfdJzlqsY/jCqwvD8kv2CAKSK8WhJz//ExI2LqNrDI0yazx5j7+A==} + /@swc/core-linux-x64-gnu@1.3.46: + resolution: {integrity: sha512-amqMhTA2CXB6t11hVAZSSPKq4DZ9/sWbW3wYYQHxzqrMJML0726OJs4pt0XnlU7FzdP/9M9j2B/gWCRaCMxXVA==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl@1.3.42: - resolution: {integrity: sha512-7eckRRuTZ6+3K21uyfXXgc2ZCg0mSWRRNwNT3wap2bYkKPeqTgb8pm8xYSZNEiMuDonHEat6XCCV36lFY6kOdQ==} + /@swc/core-linux-x64-musl@1.3.46: + resolution: {integrity: sha512-WOQZTIkJ9khIj5Z2unf6OTrWV9k8br+HZ93RvnamEmJBlLPUuT9IjB+agNhjaDgOpz9/ZldSGqV7vzl5FGQl1Q==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc@1.3.42: - resolution: {integrity: sha512-t27dJkdw0GWANdN4TV0lY/V5vTYSx5SRjyzzZolep358ueCGuN1XFf1R0JcCbd1ojosnkQg2L7A7991UjXingg==} + /@swc/core-win32-arm64-msvc@1.3.46: + resolution: {integrity: sha512-4JSREbqaTRQ6QO0EeoiB6G5vuFT8zI8aTOLu5At7Cvlw+X7bOGNO+wJ3Tqw7O+68OL+0bPHzHGTXKL9kUccY1A==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-ia32-msvc@1.3.42: - resolution: {integrity: sha512-xfpc/Zt/aMILX4IX0e3loZaFyrae37u3MJCv1gJxgqrpeLi7efIQr3AmERkTK3mxTO6R5urSliWw2W3FyZ7D3Q==} + /@swc/core-win32-ia32-msvc@1.3.46: + resolution: {integrity: sha512-kC8dIDzcArm1e85yHJsEZFxcNq5NztLkrqkP1nVOQ+9QXD9DKhjbZtWy2gnpclinii6KEGng8SieWiJiOA0CBQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-x64-msvc@1.3.42: - resolution: {integrity: sha512-ra2K4Tu++EJLPhzZ6L8hWUsk94TdK/2UKhL9dzCBhtzKUixsGCEqhtqH1zISXNvW8qaVLFIMUP37ULe80/IJaA==} + /@swc/core-win32-x64-msvc@1.3.46: + resolution: {integrity: sha512-rrSAfq+DvpJioBxUsnuH+sKl0eXid1DwkwNzkVGHEreN9GoP7GospWtFq7VDcO6DrS/s3HtR4/TzoIYFEBCRIg==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.3.42: - resolution: {integrity: sha512-nVFUd5+7tGniM2cT3LXaqnu3735Cu4az8A9gAKK+8sdpASI52SWuqfDBmjFCK9xG90MiVDVp2PTZr0BWqCIzpw==} + /@swc/core@1.3.46(@swc/helpers@0.5.0): + resolution: {integrity: sha512-WxzgJMWUBVJ95HsvEqlWzM3Qxp2FQrPa4QdAkQQuuvCMnfdctGUbhX/c3LiSRlWrl2LIkYAi4bLansTOol4QcQ==} engines: {node: '>=10'} requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + dependencies: + '@swc/helpers': 0.5.0 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.42 - '@swc/core-darwin-x64': 1.3.42 - '@swc/core-linux-arm-gnueabihf': 1.3.42 - '@swc/core-linux-arm64-gnu': 1.3.42 - '@swc/core-linux-arm64-musl': 1.3.42 - '@swc/core-linux-x64-gnu': 1.3.42 - '@swc/core-linux-x64-musl': 1.3.42 - '@swc/core-win32-arm64-msvc': 1.3.42 - '@swc/core-win32-ia32-msvc': 1.3.42 - '@swc/core-win32-x64-msvc': 1.3.42 + '@swc/core-darwin-arm64': 1.3.46 + '@swc/core-darwin-x64': 1.3.46 + '@swc/core-linux-arm-gnueabihf': 1.3.46 + '@swc/core-linux-arm64-gnu': 1.3.46 + '@swc/core-linux-arm64-musl': 1.3.46 + '@swc/core-linux-x64-gnu': 1.3.46 + '@swc/core-linux-x64-musl': 1.3.46 + '@swc/core-win32-arm64-msvc': 1.3.46 + '@swc/core-win32-ia32-msvc': 1.3.46 + '@swc/core-win32-x64-msvc': 1.3.46 - /@swc/jest@0.2.24(@swc/core@1.3.42): + /@swc/helpers@0.5.0: + resolution: {integrity: sha512-SjY/p4MmECVVEWspzSRpQEM3sjR17sP8PbGxELWrT+YZMBfiUyt1MRUNjMV23zohwlG2HYtCQOsCwsTHguXkyg==} + dependencies: + tslib: 2.5.0 + + /@swc/jest@0.2.24(@swc/core@1.3.46): resolution: {integrity: sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.3.42 + '@swc/core': 1.3.46(@swc/helpers@0.5.0) jsonc-parser: 3.2.0 dev: true @@ -6308,7 +6324,21 @@ packages: engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.21.0 + '@types/aria-query': 5.0.1 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/dom@9.2.0: + resolution: {integrity: sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/runtime': 7.21.0 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -6338,21 +6368,21 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.21.0 '@testing-library/dom': 8.20.0 dev: true - /@testing-library/vue@6.6.1(@vue/compiler-sfc@3.2.47)(vue@3.2.47): - resolution: {integrity: sha512-vpyBPrHzKTwEGS7ehUC8/IXgnqTBEMk6jd52Gouf51arG2jUorPhmkbsxUwJOyxz6L0gj2ZcmWnznG1OJcTCDQ==} - engines: {node: '>=12'} + /@testing-library/vue@7.0.0(@vue/compiler-sfc@3.2.47)(vue@3.2.47): + resolution: {integrity: sha512-JU/q93HGo2qdm1dCgWymkeQlfpC0/0/DBZ2nAHgEAsVZxX11xVIxT7gbXdI7HACQpUbsUWt1zABGU075Fzt9XQ==} + engines: {node: '>=14'} peerDependencies: '@vue/compiler-sfc': '>= 3' vue: '>= 3' dependencies: - '@babel/runtime': 7.20.7 - '@testing-library/dom': 8.20.0 + '@babel/runtime': 7.21.0 + '@testing-library/dom': 9.2.0 '@vue/compiler-sfc': 3.2.47 - '@vue/test-utils': 2.3.0(vue@3.2.47) + '@vue/test-utils': 2.3.2(vue@3.2.47) vue: 3.2.47 dev: true @@ -7042,8 +7072,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2): - resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} + /@typescript-eslint/eslint-plugin@5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -7054,24 +7084,24 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/scope-manager': 5.57.1 + '@typescript-eslint/type-utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.37.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.2) - typescript: 5.0.2 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.2): - resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} + /@typescript-eslint/parser@5.57.1(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -7080,26 +7110,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) + '@typescript-eslint/scope-manager': 5.57.1 + '@typescript-eslint/types': 5.57.1 + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.37.0 - typescript: 5.0.2 + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.57.0: - resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} + /@typescript-eslint/scope-manager@5.57.1: + resolution: {integrity: sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/visitor-keys': 5.57.0 + '@typescript-eslint/types': 5.57.1 + '@typescript-eslint/visitor-keys': 5.57.1 dev: true - /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.2): - resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} + /@typescript-eslint/type-utils@5.57.1(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -7108,23 +7138,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.37.0 - tsutils: 3.21.0(typescript@5.0.2) - typescript: 5.0.2 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.57.0: - resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} + /@typescript-eslint/types@5.57.1: + resolution: {integrity: sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.2): - resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} + /@typescript-eslint/typescript-estree@5.57.1(typescript@5.0.3): + resolution: {integrity: sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -7132,20 +7162,20 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/visitor-keys': 5.57.0 + '@typescript-eslint/types': 5.57.1 + '@typescript-eslint/visitor-keys': 5.57.1 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.2) - typescript: 5.0.2 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.2): - resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} + /@typescript-eslint/utils@5.57.1(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -7153,9 +7183,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) + '@typescript-eslint/scope-manager': 5.57.1 + '@typescript-eslint/types': 5.57.1 + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) eslint: 8.37.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -7164,11 +7194,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.57.0: - resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} + /@typescript-eslint/visitor-keys@5.57.1: + resolution: {integrity: sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/types': 5.57.1 eslint-visitor-keys: 3.4.0 dev: true @@ -7360,8 +7390,8 @@ packages: /@vue/shared@3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} - /@vue/test-utils@2.3.0(vue@3.2.47): - resolution: {integrity: sha512-S8/9Z+B4VSsTUNtZtzS7J1TfxJbf10n+gcH9X8cASbG0Tp7qD6vqs/sUNlmpzk6i7+pP00ptauJp9rygyW89Ww==} + /@vue/test-utils@2.3.2(vue@3.2.47): + resolution: {integrity: sha512-hJnVaYhbrIm0yBS0+e1Y0Sj85cMyAi+PAbK4JHqMRUZ6S622Goa+G7QzkRSyvCteG8wop7tipuEbHoZo26wsSA==} peerDependencies: vue: ^3.0.1 dependencies: @@ -8983,8 +9013,8 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - /chromatic@6.17.2: - resolution: {integrity: sha512-rtrkywh1CuDDuuiRWXpdiX38aEGN3sGCATsgdh3X/EUBjQjgQtEbSzcMusC3cqz3K9dFKcWwKpFm3jaw9gNymA==} + /chromatic@6.17.3: + resolution: {integrity: sha512-x6WAHLBqub/BYiGXEOsgw9T3m459SmwOvIz0Ra7rCriE2A9AqDKRmVdAEhzVud24ut6ehd54FJpDtArnR5/TbA==} hasBin: true dependencies: '@discoveryjs/json-ext': 0.5.7 @@ -10676,7 +10706,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -10697,7 +10727,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) debug: 3.2.7(supports-color@8.1.1) eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 @@ -10705,7 +10735,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint@8.37.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.1)(eslint@8.37.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -10715,7 +10745,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -10723,7 +10753,7 @@ packages: doctrine: 2.1.0 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint@8.37.0) has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -10750,7 +10780,7 @@ packages: nth-check: 2.1.1 postcss-selector-parser: 6.0.11 semver: 7.3.8 - vue-eslint-parser: 9.1.0(eslint@8.37.0) + vue-eslint-parser: 9.1.1(eslint@8.37.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -10776,11 +10806,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /eslint-visitor-keys@3.4.0: resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -10835,15 +10860,6 @@ packages: - supports-color dev: true - /espree@9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.0 - dev: true - /espree@9.5.1: resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -10864,13 +10880,6 @@ packages: engines: {node: '>=4'} hasBin: true - /esquery@1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - /esquery@1.4.2: resolution: {integrity: sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==} engines: {node: '>=0.10'} @@ -10899,7 +10908,7 @@ packages: engines: {node: '>=8.3.0'} dependencies: '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 c8: 7.13.0 transitivePeerDependencies: - supports-color @@ -13069,6 +13078,10 @@ packages: resolution: {integrity: sha512-5IcdXuf++TTNt3oGl9EBdkvndXA8gmc4bz/Y+mdEpWh3Mcn/+kOw6hI7LD5CocqJWMzeb0I0ClndRVNdEPuJXQ==} dev: true + /is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + dev: true + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -14806,6 +14819,7 @@ packages: /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} + hasBin: true dev: false /mimic-fn@2.1.0: @@ -14961,6 +14975,12 @@ packages: engines: {node: '>=10'} hasBin: true + /mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true + dev: false + /mlly@1.1.1: resolution: {integrity: sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==} dependencies: @@ -15023,22 +15043,22 @@ packages: optionalDependencies: msgpackr-extract: 2.2.0 - /msw-storybook-addon@1.8.0(msw@1.1.0): + /msw-storybook-addon@1.8.0(msw@1.2.1): resolution: {integrity: sha512-dw3vZwqjixmiur0vouRSOax7wPSu9Og2Hspy9JZFHf49bZRjwDiLF0Pfn2NXEkGviYJOJiGxS1ejoTiUwoSg4A==} peerDependencies: msw: '>=0.35.0 <2.0.0' dependencies: is-node-process: 1.0.1 - msw: 1.1.0(typescript@5.0.2) + msw: 1.2.1(typescript@5.0.3) dev: true - /msw@1.1.0(typescript@5.0.2): - resolution: {integrity: sha512-oqMvUXm1bMbwvGpoXAQVz8vXXQyQyx52HBDg3EDOK+dFXkQHssgkXEG4LfMwwZyr2Qt18I/w04XPaY4BkFTkzA==} + /msw@1.2.1(typescript@5.0.3): + resolution: {integrity: sha512-bF7qWJQSmKn6bwGYVPXOxhexTCGD5oJSZg8yt8IBClxvo3Dx/1W0zqE1nX9BSWmzRsCKWfeGWcB/vpqV6aclpw==} engines: {node: '>=14'} hasBin: true requiresBuild: true peerDependencies: - typescript: '>= 4.4.x <= 4.9.x' + typescript: '>= 4.4.x <= 5.0.x' peerDependenciesMeta: typescript: optional: true @@ -15054,14 +15074,14 @@ packages: graphql: 16.6.0 headers-polyfill: 3.1.2 inquirer: 8.2.5 - is-node-process: 1.0.1 + is-node-process: 1.2.0 js-levenshtein: 1.1.6 node-fetch: 2.6.7 - outvariant: 1.3.0 + outvariant: 1.4.0 path-to-regexp: 6.2.1 strict-event-emitter: 0.4.6 type-fest: 2.19.0 - typescript: 5.0.2 + typescript: 5.0.3 yargs: 17.6.2 transitivePeerDependencies: - encoding @@ -15706,8 +15726,8 @@ packages: jssha: 3.3.0 dev: false - /outvariant@1.3.0: - resolution: {integrity: sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==} + /outvariant@1.4.0: + resolution: {integrity: sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==} dev: true /p-cancelable@2.1.1: @@ -16507,8 +16527,8 @@ packages: engines: {node: '>=0.10.0'} dev: false - /prettier@2.8.4: - resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} + /prettier@2.8.7: + resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -16988,12 +17008,12 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /react-docgen-typescript@2.2.2(typescript@5.0.2): + /react-docgen-typescript@2.2.2(typescript@5.0.3): resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: typescript: '>= 4.3.x' dependencies: - typescript: 5.0.2 + typescript: 5.0.3 dev: true /react-docgen@6.0.0-alpha.3: @@ -17072,7 +17092,7 @@ packages: peerDependencies: react: '>= 0.14.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.21.0 highlight.js: 10.7.3 lowlight: 1.20.0 prismjs: 1.29.0 @@ -17314,7 +17334,7 @@ packages: /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.21.0 dev: true /regex-not@1.0.2: @@ -17846,6 +17866,7 @@ packages: /sha.js@2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 @@ -18789,8 +18810,8 @@ packages: real-require: 0.2.0 dev: false - /three@0.150.1: - resolution: {integrity: sha512-5C1MqKUWaHYo13BX0Q64qcdwImgnnjSOFgBscOzAo8MYCzEtqfQqorEKMcajnA3FHy1yVlIe9AmaMQ0OQracNA==} + /three@0.151.3: + resolution: {integrity: sha512-+vbuqxFy8kzLeO5MgpBHUvP/EAiecaDwDuOPPDe6SbrZr96kccF0ktLngXc7xA7bzyd3N0t2f6mw3Z9y6JCojQ==} dev: false /throttle-debounce@5.0.0: @@ -19052,14 +19073,14 @@ packages: /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tsutils@3.21.0(typescript@5.0.2): + /tsutils@3.21.0(typescript@5.0.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.0.2 + typescript: 5.0.3 dev: true /tunnel-agent@0.6.0: @@ -19156,8 +19177,8 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - /typeorm@0.3.11(ioredis@4.28.5)(pg@8.10.0): - resolution: {integrity: sha512-pzdOyWbVuz/z8Ww6gqvBW4nylsM0KLdUCDExr2gR20/x1khGSVxQkjNV/3YqliG90jrWzrknYbYscpk8yxFJVg==} + /typeorm@0.3.13(ioredis@4.28.5)(pg@8.10.0): + resolution: {integrity: sha512-AqyKG4xtYST2zpgX/LdAleP8WAjwyO7EemRtG67EmmbFpWsPBk9BVr87wkN59huBned3qPEehVOSUQ81pNuH8A==} engines: {node: '>= 12.9.0'} hasBin: true peerDependencies: @@ -19167,8 +19188,8 @@ packages: hdb-pool: ^0.1.6 ioredis: ^5.0.4 mongodb: ^3.6.0 - mssql: ^7.3.0 - mysql2: ^2.2.5 + mssql: ^9.1.1 + mysql2: ^2.2.5 || ^3.0.1 oracledb: ^5.1.0 pg: ^8.5.1 pg-native: ^3.0.0 @@ -19219,18 +19240,17 @@ packages: buffer: 6.0.3 chalk: 4.1.2 cli-highlight: 2.1.11 - date-fns: 2.29.3 debug: 4.3.4(supports-color@8.1.1) dotenv: 16.0.3 - glob: 7.2.3 + glob: 8.1.0 ioredis: 4.28.5 js-yaml: 4.1.0 - mkdirp: 1.0.4 + mkdirp: 2.1.6 pg: 8.10.0 reflect-metadata: 0.1.13 sha.js: 2.4.11 tslib: 2.5.0 - uuid: 8.3.2 + uuid: 9.0.0 xml2js: 0.4.23 yargs: 17.6.2 transitivePeerDependencies: @@ -19243,8 +19263,8 @@ packages: hasBin: true dev: true - /typescript@5.0.2: - resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + /typescript@5.0.3: + resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} engines: {node: '>=12.20'} hasBin: true @@ -19260,8 +19280,8 @@ packages: dev: true optional: true - /uid@2.0.1: - resolution: {integrity: sha512-PF+1AnZgycpAIEmNtjxGBVmKbZAQguaa4pBUq6KNaGEcpzZ2klCNZLM34tsjp76maN00TttiiUf6zkIBpJQm2A==} + /uid@2.0.2: + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} engines: {node: '>=8'} dependencies: '@lukeed/csprng': 1.0.1 @@ -19813,7 +19833,7 @@ packages: resolution: {integrity: sha512-jbOf7ByE3Zvtuk+429Jorl+eIeh2aB2Fx1GUo3xJd1aByJWE8KDlSEa6b11PB1ze8f0sRUBraRDinICCk0KY7g==} dependencies: '@babel/parser': 7.21.3 - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 '@vue/compiler-dom': 3.2.47 '@vue/compiler-sfc': 3.2.47 ast-types: 0.14.2 @@ -19827,8 +19847,8 @@ packages: - vue dev: true - /vue-eslint-parser@9.1.0(eslint@8.37.0): - resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} + /vue-eslint-parser@9.1.1(eslint@8.37.0): + resolution: {integrity: sha512-C2aI/r85Q6tYcz4dpgvrs4wH/MqVrRAVIdpYedrxnATDHHkb+TroeRcDpKWGZCx/OcECMWfz7tVwQ8e+Opy6rA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' @@ -19836,9 +19856,9 @@ packages: debug: 4.3.4(supports-color@8.1.1) eslint: 8.37.0 eslint-scope: 7.1.1 - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.4.2 lodash: 4.17.21 semver: 7.3.8 transitivePeerDependencies: @@ -19876,7 +19896,7 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.2.0(typescript@5.0.2): + /vue-tsc@1.2.0(typescript@5.0.3): resolution: {integrity: sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==} hasBin: true peerDependencies: @@ -19884,7 +19904,7 @@ packages: dependencies: '@volar/vue-language-core': 1.2.0 '@volar/vue-typescript': 1.2.0 - typescript: 5.0.2 + typescript: 5.0.3 dev: true /vue@2.7.14: From f4588f3907c676389603944bd716a239c3444c53 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 10:07:41 +0900 Subject: [PATCH 10/81] perf(backend): reduce db query --- packages/backend/src/core/entities/NoteEntityService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts index f23e0f38ea..26debd6adc 100644 --- a/packages/backend/src/core/entities/NoteEntityService.ts +++ b/packages/backend/src/core/entities/NoteEntityService.ts @@ -288,7 +288,7 @@ export class NoteEntityService implements OnModuleInit { }, options); const meId = me ? me.id : null; - const note = typeof src === 'object' ? src : await this.notesRepository.findOneByOrFail({ id: src }); + const note = typeof src === 'object' ? src : await this.notesRepository.findOneOrFail({ where: { id: src }, relations: ['user'] }); const host = note.userHost; let text = note.text; From ff6d9d28604d173b57bdb26b94ccd16bd0f4c4ba Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 11:20:14 +0900 Subject: [PATCH 11/81] =?UTF-8?q?feat(backend):=20=E3=82=A4=E3=83=99?= =?UTF-8?q?=E3=83=B3=E3=83=88=E7=94=A8Redis=E3=82=92=E5=88=A5=E3=82=B5?= =?UTF-8?q?=E3=83=BC=E3=83=90=E3=83=BC=E3=81=AB=E5=88=86=E9=9B=A2=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .config/docker_example.yml | 8 ++++ .config/example.yml | 8 ++++ .devcontainer/devcontainer.yml | 8 ++++ CHANGELOG.md | 1 + chart/files/default.yml | 9 +++++ packages/backend/check_connect.js | 11 ++++- packages/backend/src/GlobalModule.ts | 40 ++++++++++++------- packages/backend/src/config.ts | 9 +++++ packages/backend/src/core/AntennaService.ts | 8 ++-- packages/backend/src/core/MetaService.ts | 8 ++-- packages/backend/src/core/RoleService.ts | 8 ++-- packages/backend/src/core/WebhookService.ts | 8 ++-- packages/backend/src/di-symbols.ts | 2 +- packages/backend/src/redis.ts | 13 ------ .../server/api/StreamingApiServerService.ts | 8 ++-- 15 files changed, 98 insertions(+), 51 deletions(-) delete mode 100644 packages/backend/src/redis.ts diff --git a/.config/docker_example.yml b/.config/docker_example.yml index f8124bc9df..13ecfac549 100644 --- a/.config/docker_example.yml +++ b/.config/docker_example.yml @@ -62,6 +62,14 @@ redis: #prefix: example-prefix #db: 1 +#redisForPubsub: +# host: redis +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 + # ┌─────────────────────────────┐ #───┘ Elasticsearch configuration └───────────────────────────── diff --git a/.config/example.yml b/.config/example.yml index 92b8726623..fbdb7b0241 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -62,6 +62,14 @@ redis: #prefix: example-prefix #db: 1 +#redisForPubsub: +# host: localhost +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 + # ┌─────────────────────────────┐ #───┘ Elasticsearch configuration └───────────────────────────── diff --git a/.devcontainer/devcontainer.yml b/.devcontainer/devcontainer.yml index 8a363a15dc..4cc7ae3b59 100644 --- a/.devcontainer/devcontainer.yml +++ b/.devcontainer/devcontainer.yml @@ -62,6 +62,14 @@ redis: #prefix: example-prefix #db: 1 +#redisForPubsub: +# host: redis +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 + # ┌─────────────────────────────┐ #───┘ Elasticsearch configuration └───────────────────────────── diff --git a/CHANGELOG.md b/CHANGELOG.md index e52c4e0d01..28be3faff9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ - 「UIのアニメーションを減らす」 (`reduceAnimation`) で猫耳を撫でられなくなります ### Server +- イベント用Redisを別サーバーに分離できるように - サーバーの全体的なパフォーマンスを向上 - ノート作成時のパフォーマンスを向上 - アンテナのタイムライン取得時のパフォーマンスを向上 diff --git a/chart/files/default.yml b/chart/files/default.yml index 4061ca3eb6..afaf8a162d 100644 --- a/chart/files/default.yml +++ b/chart/files/default.yml @@ -78,10 +78,19 @@ db: redis: host: localhost port: 6379 + #family: 0 # 0=Both, 4=IPv4, 6=IPv6 #pass: example-pass #prefix: example-prefix #db: 1 +#redisForPubsub: +# host: localhost +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 + # ┌─────────────────────────────┐ #───┘ Elasticsearch configuration └───────────────────────────── diff --git a/packages/backend/check_connect.js b/packages/backend/check_connect.js index ed429c0254..ef0a350fbf 100644 --- a/packages/backend/check_connect.js +++ b/packages/backend/check_connect.js @@ -1,8 +1,15 @@ +import Redis from 'ioredis'; import { loadConfig } from './built/config.js'; -import { createRedisConnection } from './built/redis.js'; const config = loadConfig(); -const redis = createRedisConnection(config); +const redis = new Redis({ + port: config.redis.port, + host: config.redis.host, + family: config.redis.family == null ? 0 : config.redis.family, + password: config.redis.pass, + keyPrefix: `${config.redis.prefix}:`, + db: config.redis.db ?? 0, +}); redis.on('connect', () => redis.disconnect()); redis.on('error', (e) => { diff --git a/packages/backend/src/GlobalModule.ts b/packages/backend/src/GlobalModule.ts index 801f1db741..cb713b25ad 100644 --- a/packages/backend/src/GlobalModule.ts +++ b/packages/backend/src/GlobalModule.ts @@ -2,18 +2,15 @@ import { setTimeout } from 'node:timers/promises'; import { Global, Inject, Module } from '@nestjs/common'; import Redis from 'ioredis'; import { DataSource } from 'typeorm'; -import { createRedisConnection } from '@/redis.js'; import { DI } from './di-symbols.js'; import { loadConfig } from './config.js'; import { createPostgresDataSource } from './postgres.js'; import { RepositoryModule } from './models/RepositoryModule.js'; import type { Provider, OnApplicationShutdown } from '@nestjs/common'; -const config = loadConfig(); - const $config: Provider = { provide: DI.config, - useValue: config, + useValue: loadConfig(), }; const $db: Provider = { @@ -28,18 +25,31 @@ const $db: Provider = { const $redis: Provider = { provide: DI.redis, useFactory: (config) => { - const redisClient = createRedisConnection(config); - return redisClient; + return new Redis({ + port: config.redis.port, + host: config.redis.host, + family: config.redis.family == null ? 0 : config.redis.family, + password: config.redis.pass, + keyPrefix: `${config.redis.prefix}:`, + db: config.redis.db ?? 0, + }); }, inject: [DI.config], }; -const $redisSubscriber: Provider = { - provide: DI.redisSubscriber, +const $redisForPubsub: Provider = { + provide: DI.redisForPubsub, useFactory: (config) => { - const redisSubscriber = createRedisConnection(config); - redisSubscriber.subscribe(config.host); - return redisSubscriber; + const redis = new Redis({ + port: config.redisForPubsub.port, + host: config.redisForPubsub.host, + family: config.redisForPubsub.family == null ? 0 : config.redisForPubsub.family, + password: config.redisForPubsub.pass, + keyPrefix: `${config.redisForPubsub.prefix}:`, + db: config.redisForPubsub.db ?? 0, + }); + redis.subscribe(config.host); + return redis; }, inject: [DI.config], }; @@ -47,14 +57,14 @@ const $redisSubscriber: Provider = { @Global() @Module({ imports: [RepositoryModule], - providers: [$config, $db, $redis, $redisSubscriber], - exports: [$config, $db, $redis, $redisSubscriber, RepositoryModule], + providers: [$config, $db, $redis, $redisForPubsub], + exports: [$config, $db, $redis, $redisForPubsub, RepositoryModule], }) export class GlobalModule implements OnApplicationShutdown { constructor( @Inject(DI.db) private db: DataSource, @Inject(DI.redis) private redisClient: Redis.Redis, - @Inject(DI.redisSubscriber) private redisSubscriber: Redis.Redis, + @Inject(DI.redisForPubsub) private redisForPubsub: Redis.Redis, ) {} async onApplicationShutdown(signal: string): Promise { @@ -69,7 +79,7 @@ export class GlobalModule implements OnApplicationShutdown { await Promise.all([ this.db.destroy(), this.redisClient.disconnect(), - this.redisSubscriber.disconnect(), + this.redisForPubsub.disconnect(), ]); } } diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index 73f45e92e1..e8554e5c84 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -33,6 +33,14 @@ export type Source = { db?: number; prefix?: string; }; + redisForPubsub?: { + host: string; + port: number; + family?: number; + pass: string; + db?: number; + prefix?: string; + }; elasticsearch: { host: string; port: number; @@ -151,6 +159,7 @@ export function loadConfig() { : null; if (!config.redis.prefix) config.redis.prefix = mixin.host; + if (config.redisForPubsub == null) config.redisForPubsub = config.redis; return Object.assign(config, mixin); } diff --git a/packages/backend/src/core/AntennaService.ts b/packages/backend/src/core/AntennaService.ts index 4bd3f39af2..35266ac16d 100644 --- a/packages/backend/src/core/AntennaService.ts +++ b/packages/backend/src/core/AntennaService.ts @@ -27,8 +27,8 @@ export class AntennaService implements OnApplicationShutdown { @Inject(DI.redis) private redisClient: Redis.Redis, - @Inject(DI.redisSubscriber) - private redisSubscriber: Redis.Redis, + @Inject(DI.redisForPubsub) + private redisForPubsub: Redis.Redis, @Inject(DI.mutingsRepository) private mutingsRepository: MutingsRepository, @@ -52,12 +52,12 @@ export class AntennaService implements OnApplicationShutdown { this.antennasFetched = false; this.antennas = []; - this.redisSubscriber.on('message', this.onRedisMessage); + this.redisForPubsub.on('message', this.onRedisMessage); } @bindThis public onApplicationShutdown(signal?: string | undefined) { - this.redisSubscriber.off('message', this.onRedisMessage); + this.redisForPubsub.off('message', this.onRedisMessage); } @bindThis diff --git a/packages/backend/src/core/MetaService.ts b/packages/backend/src/core/MetaService.ts index 4b792c083d..2b6160c82e 100644 --- a/packages/backend/src/core/MetaService.ts +++ b/packages/backend/src/core/MetaService.ts @@ -14,8 +14,8 @@ export class MetaService implements OnApplicationShutdown { private intervalId: NodeJS.Timer; constructor( - @Inject(DI.redisSubscriber) - private redisSubscriber: Redis.Redis, + @Inject(DI.redisForPubsub) + private redisForPubsub: Redis.Redis, @Inject(DI.db) private db: DataSource, @@ -33,7 +33,7 @@ export class MetaService implements OnApplicationShutdown { }, 1000 * 60 * 5); } - this.redisSubscriber.on('message', this.onMessage); + this.redisForPubsub.on('message', this.onMessage); } @bindThis @@ -122,6 +122,6 @@ export class MetaService implements OnApplicationShutdown { @bindThis public onApplicationShutdown(signal?: string | undefined) { clearInterval(this.intervalId); - this.redisSubscriber.off('message', this.onMessage); + this.redisForPubsub.off('message', this.onMessage); } } diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index 54e098ea52..3379f5af8b 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -64,8 +64,8 @@ export class RoleService implements OnApplicationShutdown { public static NotAssignedError = class extends Error {}; constructor( - @Inject(DI.redisSubscriber) - private redisSubscriber: Redis.Redis, + @Inject(DI.redisForPubsub) + private redisForPubsub: Redis.Redis, @Inject(DI.usersRepository) private usersRepository: UsersRepository, @@ -87,7 +87,7 @@ export class RoleService implements OnApplicationShutdown { this.rolesCache = new MemorySingleCache(Infinity); this.roleAssignmentByUserIdCache = new MemoryKVCache(Infinity); - this.redisSubscriber.on('message', this.onMessage); + this.redisForPubsub.on('message', this.onMessage); } @bindThis @@ -400,6 +400,6 @@ export class RoleService implements OnApplicationShutdown { @bindThis public onApplicationShutdown(signal?: string | undefined) { - this.redisSubscriber.off('message', this.onMessage); + this.redisForPubsub.off('message', this.onMessage); } } diff --git a/packages/backend/src/core/WebhookService.ts b/packages/backend/src/core/WebhookService.ts index ac1e413de6..85594f8557 100644 --- a/packages/backend/src/core/WebhookService.ts +++ b/packages/backend/src/core/WebhookService.ts @@ -13,14 +13,14 @@ export class WebhookService implements OnApplicationShutdown { private webhooks: Webhook[] = []; constructor( - @Inject(DI.redisSubscriber) - private redisSubscriber: Redis.Redis, + @Inject(DI.redisForPubsub) + private redisForPubsub: Redis.Redis, @Inject(DI.webhooksRepository) private webhooksRepository: WebhooksRepository, ) { //this.onMessage = this.onMessage.bind(this); - this.redisSubscriber.on('message', this.onMessage); + this.redisForPubsub.on('message', this.onMessage); } @bindThis @@ -82,6 +82,6 @@ export class WebhookService implements OnApplicationShutdown { @bindThis public onApplicationShutdown(signal?: string | undefined) { - this.redisSubscriber.off('message', this.onMessage); + this.redisForPubsub.off('message', this.onMessage); } } diff --git a/packages/backend/src/di-symbols.ts b/packages/backend/src/di-symbols.ts index 56ce755a1a..482e8f83e1 100644 --- a/packages/backend/src/di-symbols.ts +++ b/packages/backend/src/di-symbols.ts @@ -2,7 +2,7 @@ export const DI = { config: Symbol('config'), db: Symbol('db'), redis: Symbol('redis'), - redisSubscriber: Symbol('redisSubscriber'), + redisForPubsub: Symbol('redisForPubsub'), //#region Repositories usersRepository: Symbol('usersRepository'), diff --git a/packages/backend/src/redis.ts b/packages/backend/src/redis.ts deleted file mode 100644 index 690f4715dd..0000000000 --- a/packages/backend/src/redis.ts +++ /dev/null @@ -1,13 +0,0 @@ -import Redis from 'ioredis'; -import { Config } from '@/config.js'; - -export function createRedisConnection(config: Config): Redis.Redis { - return new Redis({ - port: config.redis.port, - host: config.redis.host, - family: config.redis.family == null ? 0 : config.redis.family, - password: config.redis.pass, - keyPrefix: `${config.redis.prefix}:`, - db: config.redis.db ?? 0, - }); -} diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts index bd2d436a23..e0e5b71a82 100644 --- a/packages/backend/src/server/api/StreamingApiServerService.ts +++ b/packages/backend/src/server/api/StreamingApiServerService.ts @@ -22,8 +22,8 @@ export class StreamingApiServerService { @Inject(DI.config) private config: Config, - @Inject(DI.redisSubscriber) - private redisSubscriber: Redis.Redis, + @Inject(DI.redisForPubsub) + private redisForPubsub: Redis.Redis, @Inject(DI.usersRepository) private usersRepository: UsersRepository, @@ -81,7 +81,7 @@ export class StreamingApiServerService { ev.emit(parsed.channel, parsed.message); } - this.redisSubscriber.on('message', onRedisMessage); + this.redisForPubsub.on('message', onRedisMessage); const main = new MainStreamConnection( this.channelsService, @@ -111,7 +111,7 @@ export class StreamingApiServerService { connection.once('close', () => { ev.removeAllListeners(); main.dispose(); - this.redisSubscriber.off('message', onRedisMessage); + this.redisForPubsub.off('message', onRedisMessage); if (intervalId) clearInterval(intervalId); }); From 239d3f2dbfb602c20a8bcc89b0be2eeedcc6f3ae Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 11:27:01 +0900 Subject: [PATCH 12/81] =?UTF-8?q?feat(backend):=20=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=96=E3=82=AD=E3=83=A5=E3=83=BC=E7=94=A8Redis=E3=82=92?= =?UTF-8?q?=E5=88=A5=E3=82=B5=E3=83=BC=E3=83=90=E3=83=BC=E3=81=AB=E5=88=86?= =?UTF-8?q?=E9=9B=A2=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .config/docker_example.yml | 8 ++++++++ .config/example.yml | 8 ++++++++ .devcontainer/devcontainer.yml | 8 ++++++++ CHANGELOG.md | 1 + chart/files/default.yml | 8 ++++++++ packages/backend/src/config.ts | 11 +++++++++++ packages/backend/src/core/QueueModule.ts | 12 ++++++------ 7 files changed, 50 insertions(+), 6 deletions(-) diff --git a/.config/docker_example.yml b/.config/docker_example.yml index 13ecfac549..d93cc8b70e 100644 --- a/.config/docker_example.yml +++ b/.config/docker_example.yml @@ -70,6 +70,14 @@ redis: # #prefix: example-prefix # #db: 1 +#redisForJobQueue: +# host: redis +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 + # ┌─────────────────────────────┐ #───┘ Elasticsearch configuration └───────────────────────────── diff --git a/.config/example.yml b/.config/example.yml index fbdb7b0241..b61ed14809 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -70,6 +70,14 @@ redis: # #prefix: example-prefix # #db: 1 +#redisForJobQueue: +# host: localhost +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 + # ┌─────────────────────────────┐ #───┘ Elasticsearch configuration └───────────────────────────── diff --git a/.devcontainer/devcontainer.yml b/.devcontainer/devcontainer.yml index 4cc7ae3b59..1350e70157 100644 --- a/.devcontainer/devcontainer.yml +++ b/.devcontainer/devcontainer.yml @@ -70,6 +70,14 @@ redis: # #prefix: example-prefix # #db: 1 +#redisForJobQueue: +# host: redis +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 + # ┌─────────────────────────────┐ #───┘ Elasticsearch configuration └───────────────────────────── diff --git a/CHANGELOG.md b/CHANGELOG.md index 28be3faff9..03cf179a86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ ### Server - イベント用Redisを別サーバーに分離できるように +- ジョブキュー用Redisを別サーバーに分離できるように - サーバーの全体的なパフォーマンスを向上 - ノート作成時のパフォーマンスを向上 - アンテナのタイムライン取得時のパフォーマンスを向上 diff --git a/chart/files/default.yml b/chart/files/default.yml index afaf8a162d..1d8e5b490a 100644 --- a/chart/files/default.yml +++ b/chart/files/default.yml @@ -91,6 +91,14 @@ redis: # #prefix: example-prefix # #db: 1 +#redisForJobQueue: +# host: localhost +# port: 6379 +# #family: 0 # 0=Both, 4=IPv4, 6=IPv6 +# #pass: example-pass +# #prefix: example-prefix +# #db: 1 + # ┌─────────────────────────────┐ #───┘ Elasticsearch configuration └───────────────────────────── diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index e8554e5c84..fd2b83cf2a 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -41,6 +41,14 @@ export type Source = { db?: number; prefix?: string; }; + redisForJobQueue?: { + host: string; + port: number; + family?: number; + pass: string; + db?: number; + prefix?: string; + }; elasticsearch: { host: string; port: number; @@ -99,6 +107,8 @@ export type Mixin = { mediaProxy: string; externalMediaProxyEnabled: boolean; videoThumbnailGenerator: string | null; + redisForPubsub: NonNullable; + redisForJobQueue: NonNullable; }; export type Config = Source & Mixin; @@ -160,6 +170,7 @@ export function loadConfig() { if (!config.redis.prefix) config.redis.prefix = mixin.host; if (config.redisForPubsub == null) config.redisForPubsub = config.redis; + if (config.redisForJobQueue == null) config.redisForJobQueue = config.redis; return Object.assign(config, mixin); } diff --git a/packages/backend/src/core/QueueModule.ts b/packages/backend/src/core/QueueModule.ts index edd843977b..8733a7d7eb 100644 --- a/packages/backend/src/core/QueueModule.ts +++ b/packages/backend/src/core/QueueModule.ts @@ -8,13 +8,13 @@ import type { DeliverJobData, InboxJobData, DbJobData, ObjectStorageJobData, End function q(config: Config, name: string, limitPerSec = -1) { return new Bull(name, { redis: { - port: config.redis.port, - host: config.redis.host, - family: config.redis.family == null ? 0 : config.redis.family, - password: config.redis.pass, - db: config.redis.db ?? 0, + port: config.redisForJobQueue.port, + host: config.redisForJobQueue.host, + family: config.redisForJobQueue.family == null ? 0 : config.redisForJobQueue.family, + password: config.redisForJobQueue.pass, + db: config.redisForJobQueue.db ?? 0, }, - prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : 'queue', + prefix: config.redisForJobQueue.prefix ? `${config.redisForJobQueue.prefix}:queue` : 'queue', limiter: limitPerSec > 0 ? { max: limitPerSec, duration: 1000, From 1e3fb5531b4ee18bb9939a4ae25beea14cb6b0b5 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 11:33:15 +0900 Subject: [PATCH 13/81] typo --- packages/backend/src/core/CacheService.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/backend/src/core/CacheService.ts b/packages/backend/src/core/CacheService.ts index f0c311b9b0..d74f3e8788 100644 --- a/packages/backend/src/core/CacheService.ts +++ b/packages/backend/src/core/CacheService.ts @@ -27,8 +27,8 @@ export class CacheService implements OnApplicationShutdown { @Inject(DI.redis) private redisClient: Redis.Redis, - @Inject(DI.redisSubscriber) - private redisSubscriber: Redis.Redis, + @Inject(DI.redisForPubsub) + private redisForPubsub: Redis.Redis, @Inject(DI.usersRepository) private usersRepository: UsersRepository, @@ -116,7 +116,7 @@ export class CacheService implements OnApplicationShutdown { fromRedisConverter: (value) => new Set(JSON.parse(value)), }); - this.redisSubscriber.on('message', this.onMessage); + this.redisForPubsub.on('message', this.onMessage); } @bindThis @@ -167,6 +167,6 @@ export class CacheService implements OnApplicationShutdown { @bindThis public onApplicationShutdown(signal?: string | undefined) { - this.redisSubscriber.off('message', this.onMessage); + this.redisForPubsub.off('message', this.onMessage); } } From 58c8d21348c5f787df98aee24db3d24873f0e9b0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 12:01:52 +0900 Subject: [PATCH 14/81] 13.11.0-beta.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 012d8eb59c..7c08b0c1b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "13.11.0-beta.4", + "version": "13.11.0-beta.5", "codename": "nasubi", "repository": { "type": "git", From 69828e8dac5b18ab2af6cc13a46f48255e9de789 Mon Sep 17 00:00:00 2001 From: okayurisotto Date: Fri, 7 Apr 2023 15:48:49 +0900 Subject: [PATCH 15/81] =?UTF-8?q?fix(sw):=20=E3=83=97=E3=83=83=E3=82=B7?= =?UTF-8?q?=E3=83=A5=E9=80=9A=E7=9F=A5=E3=81=AE=E6=93=8D=E4=BD=9C=E3=81=A7?= =?UTF-8?q?Zen=20UI=E3=81=AA=E3=82=AF=E3=83=A9=E3=82=A4=E3=82=A2=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=81=8C=E9=96=8B=E3=81=8B=E3=82=8C=E3=81=A6=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=86=E5=A0=B4=E5=90=88=E3=81=8C=E3=81=82=E3=82=8B?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3=20(#10497)=20(#10?= =?UTF-8?q?498)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sw/src/scripts/operations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sw/src/scripts/operations.ts b/packages/sw/src/scripts/operations.ts index 8936a7763a..02217ed74e 100644 --- a/packages/sw/src/scripts/operations.ts +++ b/packages/sw/src/scripts/operations.ts @@ -59,7 +59,7 @@ export async function findClient() { type: 'window', }); for (const c of clients) { - if (c.url.indexOf('?zen') < 0) return c; + if (!new URL(c.url).searchParams.has('zen')) return c; } return null; } From 3bbeec70ec4fb2414b51f9dfd130f3e008b3cf08 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 18:12:24 +0900 Subject: [PATCH 16/81] perf(backend): improve cache of instance of user --- .../src/core/entities/UserEntityService.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts index 6d8a4dc14e..d964b1b1be 100644 --- a/packages/backend/src/core/entities/UserEntityService.ts +++ b/packages/backend/src/core/entities/UserEntityService.ts @@ -9,7 +9,7 @@ import type { Packed } from '@/misc/json-schema.js'; import type { Promiseable } from '@/misc/prelude/await-all.js'; import { awaitAll } from '@/misc/prelude/await-all.js'; import { USER_ACTIVE_THRESHOLD, USER_ONLINE_THRESHOLD } from '@/const.js'; -import { MemoryKVCache } from '@/misc/cache.js'; +import { MemoryKVCache, RedisKVCache } from '@/misc/cache.js'; import type { Instance } from '@/models/entities/Instance.js'; import type { LocalUser, RemoteUser, User } from '@/models/entities/User.js'; import { birthdaySchema, descriptionSchema, localUsernameSchema, locationSchema, nameSchema, passwordSchema } from '@/models/entities/User.js'; @@ -53,7 +53,7 @@ export class UserEntityService implements OnModuleInit { private customEmojiService: CustomEmojiService; private antennaService: AntennaService; private roleService: RoleService; - private userInstanceCache: MemoryKVCache; + private userInstanceCache: RedisKVCache; constructor( private moduleRef: ModuleRef, @@ -119,7 +119,13 @@ export class UserEntityService implements OnModuleInit { //private antennaService: AntennaService, //private roleService: RoleService, ) { - this.userInstanceCache = new MemoryKVCache(1000 * 60 * 60 * 3); + this.userInstanceCache = new RedisKVCache(this.redisClient, 'userInstance', { + lifetime: 1000 * 60 * 60 * 24, // 24h + memoryCacheLifetime: 1000 * 60 * 30, // 30m + fetcher: (key) => this.instancesRepository.findOneBy({ host: key }), + toRedisConverter: (value) => JSON.stringify(value), + fromRedisConverter: (value) => JSON.parse(value), // TODO: date型の考慮 + }); } onModuleInit() { @@ -343,10 +349,7 @@ export class UserEntityService implements OnModuleInit { avatarBlurhash: user.avatarBlurhash, isBot: user.isBot ?? falsy, isCat: user.isCat ?? falsy, - instance: user.host ? this.userInstanceCache.fetch(user.host, - () => this.instancesRepository.findOneBy({ host: user.host! }), - v => v != null, - ).then(instance => instance ? { + instance: user.host ? this.userInstanceCache.fetch(user.host).then(instance => instance ? { name: instance.name, softwareName: instance.softwareName, softwareVersion: instance.softwareVersion, From 6e1ae7b2426fc5729f410a52db1c0b8adcc69d36 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 18:15:47 +0900 Subject: [PATCH 17/81] enhance(backend): tweak cache of role #10439 --- packages/backend/src/core/RoleService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index 3379f5af8b..c8ebe1adb7 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -84,8 +84,8 @@ export class RoleService implements OnApplicationShutdown { ) { //this.onMessage = this.onMessage.bind(this); - this.rolesCache = new MemorySingleCache(Infinity); - this.roleAssignmentByUserIdCache = new MemoryKVCache(Infinity); + this.rolesCache = new MemorySingleCache(1000 * 60 * 60 * 1); + this.roleAssignmentByUserIdCache = new MemoryKVCache(1000 * 60 * 60 * 1); this.redisForPubsub.on('message', this.onMessage); } From 1377ea4178ffb49cc76466df56ef945fc4c2f713 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 18:48:45 +0900 Subject: [PATCH 18/81] perf(backend): improve cache of federated instances --- .../src/core/FederatedInstanceService.ts | 26 +++++++++++++------ .../src/core/entities/UserEntityService.ts | 14 +++------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/backend/src/core/FederatedInstanceService.ts b/packages/backend/src/core/FederatedInstanceService.ts index 2c6d3ac508..bc66591bc9 100644 --- a/packages/backend/src/core/FederatedInstanceService.ts +++ b/packages/backend/src/core/FederatedInstanceService.ts @@ -1,7 +1,8 @@ import { Inject, Injectable } from '@nestjs/common'; +import Redis from 'ioredis'; import type { InstancesRepository } from '@/models/index.js'; import type { Instance } from '@/models/entities/Instance.js'; -import { MemoryKVCache } from '@/misc/cache.js'; +import { MemoryKVCache, RedisKVCache } from '@/misc/cache.js'; import { IdService } from '@/core/IdService.js'; import { DI } from '@/di-symbols.js'; import { UtilityService } from '@/core/UtilityService.js'; @@ -9,23 +10,32 @@ import { bindThis } from '@/decorators.js'; @Injectable() export class FederatedInstanceService { - private cache: MemoryKVCache; + public federatedInstanceCache: RedisKVCache; constructor( + @Inject(DI.redis) + private redisClient: Redis.Redis, + @Inject(DI.instancesRepository) private instancesRepository: InstancesRepository, private utilityService: UtilityService, private idService: IdService, ) { - this.cache = new MemoryKVCache(1000 * 60 * 60); + this.federatedInstanceCache = new RedisKVCache(this.redisClient, 'federatedInstance', { + lifetime: 1000 * 60 * 60 * 24, // 24h + memoryCacheLifetime: 1000 * 60 * 30, // 30m + fetcher: (key) => this.instancesRepository.findOneBy({ host: key }), + toRedisConverter: (value) => JSON.stringify(value), + fromRedisConverter: (value) => JSON.parse(value), // TODO: date型の考慮 + }); } @bindThis public async fetch(host: string): Promise { host = this.utilityService.toPuny(host); - const cached = this.cache.get(host); + const cached = await this.federatedInstanceCache.get(host); if (cached) return cached; const index = await this.instancesRepository.findOneBy({ host }); @@ -37,10 +47,10 @@ export class FederatedInstanceService { firstRetrievedAt: new Date(), }).then(x => this.instancesRepository.findOneByOrFail(x.identifiers[0])); - this.cache.set(host, i); + this.federatedInstanceCache.set(host, i); return i; } else { - this.cache.set(host, index); + this.federatedInstanceCache.set(host, index); return index; } } @@ -49,10 +59,10 @@ export class FederatedInstanceService { public async updateCachePartial(host: string, data: Partial): Promise { host = this.utilityService.toPuny(host); - const cached = this.cache.get(host); + const cached = await this.federatedInstanceCache.get(host); if (cached == null) return; - this.cache.set(host, { + this.federatedInstanceCache.set(host, { ...cached, ...data, }); diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts index d964b1b1be..cbe94451cc 100644 --- a/packages/backend/src/core/entities/UserEntityService.ts +++ b/packages/backend/src/core/entities/UserEntityService.ts @@ -9,13 +9,13 @@ import type { Packed } from '@/misc/json-schema.js'; import type { Promiseable } from '@/misc/prelude/await-all.js'; import { awaitAll } from '@/misc/prelude/await-all.js'; import { USER_ACTIVE_THRESHOLD, USER_ONLINE_THRESHOLD } from '@/const.js'; -import { MemoryKVCache, RedisKVCache } from '@/misc/cache.js'; import type { Instance } from '@/models/entities/Instance.js'; import type { LocalUser, RemoteUser, User } from '@/models/entities/User.js'; import { birthdaySchema, descriptionSchema, localUsernameSchema, locationSchema, nameSchema, passwordSchema } from '@/models/entities/User.js'; import type { UsersRepository, UserSecurityKeysRepository, FollowingsRepository, FollowRequestsRepository, BlockingsRepository, MutingsRepository, DriveFilesRepository, NoteUnreadsRepository, ChannelFollowingsRepository, UserNotePiningsRepository, UserProfilesRepository, InstancesRepository, AnnouncementReadsRepository, AnnouncementsRepository, PagesRepository, UserProfile, RenoteMutingsRepository } from '@/models/index.js'; import { bindThis } from '@/decorators.js'; import { RoleService } from '@/core/RoleService.js'; +import { FederatedInstanceService } from '@/core/FederatedInstanceService.js'; import type { OnModuleInit } from '@nestjs/common'; import type { AntennaService } from '../AntennaService.js'; import type { CustomEmojiService } from '../CustomEmojiService.js'; @@ -53,7 +53,7 @@ export class UserEntityService implements OnModuleInit { private customEmojiService: CustomEmojiService; private antennaService: AntennaService; private roleService: RoleService; - private userInstanceCache: RedisKVCache; + private federatedInstanceService: FederatedInstanceService; constructor( private moduleRef: ModuleRef, @@ -119,13 +119,6 @@ export class UserEntityService implements OnModuleInit { //private antennaService: AntennaService, //private roleService: RoleService, ) { - this.userInstanceCache = new RedisKVCache(this.redisClient, 'userInstance', { - lifetime: 1000 * 60 * 60 * 24, // 24h - memoryCacheLifetime: 1000 * 60 * 30, // 30m - fetcher: (key) => this.instancesRepository.findOneBy({ host: key }), - toRedisConverter: (value) => JSON.stringify(value), - fromRedisConverter: (value) => JSON.parse(value), // TODO: date型の考慮 - }); } onModuleInit() { @@ -135,6 +128,7 @@ export class UserEntityService implements OnModuleInit { this.customEmojiService = this.moduleRef.get('CustomEmojiService'); this.antennaService = this.moduleRef.get('AntennaService'); this.roleService = this.moduleRef.get('RoleService'); + this.federatedInstanceService = this.moduleRef.get('FederatedInstanceService'); } //#region Validators @@ -349,7 +343,7 @@ export class UserEntityService implements OnModuleInit { avatarBlurhash: user.avatarBlurhash, isBot: user.isBot ?? falsy, isCat: user.isCat ?? falsy, - instance: user.host ? this.userInstanceCache.fetch(user.host).then(instance => instance ? { + instance: user.host ? this.federatedInstanceService.federatedInstanceCache.fetch(user.host).then(instance => instance ? { name: instance.name, softwareName: instance.softwareName, softwareVersion: instance.softwareVersion, From ed4a100e969dab5b7d561dddc99e719f4ca5a676 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 18:55:11 +0900 Subject: [PATCH 19/81] fix(backend): restore date properly of federated instance cache --- packages/backend/src/core/FederatedInstanceService.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/core/FederatedInstanceService.ts b/packages/backend/src/core/FederatedInstanceService.ts index bc66591bc9..1d0c87280f 100644 --- a/packages/backend/src/core/FederatedInstanceService.ts +++ b/packages/backend/src/core/FederatedInstanceService.ts @@ -27,7 +27,15 @@ export class FederatedInstanceService { memoryCacheLifetime: 1000 * 60 * 30, // 30m fetcher: (key) => this.instancesRepository.findOneBy({ host: key }), toRedisConverter: (value) => JSON.stringify(value), - fromRedisConverter: (value) => JSON.parse(value), // TODO: date型の考慮 + fromRedisConverter: (value) => { + const parsed = JSON.parse(value); + return { + ...parsed, + firstRetrievedAt: new Date(parsed.firstRetrievedAt), + latestRequestReceivedAt: parsed.latestRequestReceivedAt ? new Date(parsed.latestRequestReceivedAt) : null, + infoUpdatedAt: parsed.infoUpdatedAt ? new Date(parsed.infoUpdatedAt) : null, + }; + }, }); } From e3f4c9bcf63499cd21712756c7c7811bc94f9ce5 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 18:57:18 +0900 Subject: [PATCH 20/81] 13.11.0-beta.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7c08b0c1b9..aa98c3c99f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "13.11.0-beta.5", + "version": "13.11.0-beta.6", "codename": "nasubi", "repository": { "type": "git", From cb39db100aefd0d174567a186f9f37ffb95a2680 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 19:45:08 +0900 Subject: [PATCH 21/81] test --- packages/backend/test/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/test/utils.ts b/packages/backend/test/utils.ts index 4f501a8726..39fe04c100 100644 --- a/packages/backend/test/utils.ts +++ b/packages/backend/test/utils.ts @@ -301,7 +301,7 @@ export const waitFire = async (user: any, channel: string, trgr: () => any, cond timer = setTimeout(() => { ws.close(); res(false); - }, 3000); + }, 5000); try { await trgr(); From 7da2ca1862b10c483a76c6e43328ef12d25aeccc Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 20:05:15 +0900 Subject: [PATCH 22/81] Revert "test" This reverts commit cb39db100aefd0d174567a186f9f37ffb95a2680. --- packages/backend/test/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend/test/utils.ts b/packages/backend/test/utils.ts index 39fe04c100..4f501a8726 100644 --- a/packages/backend/test/utils.ts +++ b/packages/backend/test/utils.ts @@ -301,7 +301,7 @@ export const waitFire = async (user: any, channel: string, trgr: () => any, cond timer = setTimeout(() => { ws.close(); res(false); - }, 5000); + }, 3000); try { await trgr(); From 191ed3c8147d1459bc1956a0a9fa93038bc689a6 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 20:09:22 +0900 Subject: [PATCH 23/81] fix(test): disable remote user tests #10495 --- packages/backend/test/e2e/streaming.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/backend/test/e2e/streaming.ts b/packages/backend/test/e2e/streaming.ts index e1b690c30f..b832117b37 100644 --- a/packages/backend/test/e2e/streaming.ts +++ b/packages/backend/test/e2e/streaming.ts @@ -172,6 +172,7 @@ describe('Streaming', () => { assert.strictEqual(fired, true); }); + /* TODO test('リモートユーザーの投稿は流れない', async () => { const fired = await waitFire( ayano, 'localTimeline', // ayano:Local @@ -191,6 +192,7 @@ describe('Streaming', () => { assert.strictEqual(fired, false); }); + */ test('ホーム指定の投稿は流れない', async () => { const fired = await waitFire( @@ -244,6 +246,7 @@ describe('Streaming', () => { assert.strictEqual(fired, true); }); + /* TODO test('フォローしているリモートユーザーの投稿が流れる', async () => { const fired = await waitFire( ayano, 'hybridTimeline', // ayano:Hybrid @@ -263,6 +266,7 @@ describe('Streaming', () => { assert.strictEqual(fired, false); }); + */ test('フォローしているユーザーのダイレクト投稿が流れる', async () => { const fired = await waitFire( @@ -316,6 +320,7 @@ describe('Streaming', () => { assert.strictEqual(fired, true); }); + /* TODO test('フォローしていないリモートユーザーの投稿が流れる', async () => { const fired = await waitFire( ayano, 'globalTimeline', // ayano:Global @@ -325,6 +330,7 @@ describe('Streaming', () => { assert.strictEqual(fired, true); }); + */ test('ホーム投稿は流れない', async () => { const fired = await waitFire( From abda3b6c8c6e2688e5fa102dd70422c140bc2966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Fri, 7 Apr 2023 20:34:23 +0900 Subject: [PATCH 24/81] ci(#10336): use TurboSnap (#10494) * ci(#10336): use TurboSnap * build: fix version * ci(#10336): update build dir * chore(#10336): fire changes * chore: stabilize icon width on `PageHeader` * chore: fire changes * ci: invalid ignore * ci: trace logs * chore: debug * revert: debug This reverts commit 2329165e252640504ef17e97389e0460ada83e70. * chore: do not reuse build dir * build: scripts * ci: tweak * revert: re-revert debug This reverts commit 596ef05d9eabe11c0ec3125fa4a87071d59b9b2f. * chore: detect changes manually * fix: syntax * ci: do not use only-changed * ci: fix command * revert: re-re-revert debug This reverts commit b027170d7504277006ce9abac386df8c38d55fd2. * ci: use build dir * revert: re-re-re-revert debug This reverts commit 529ab126ed63ec10eeeaaee3e9ef581b75e739c9. * ci: fix path * revert: re-re-re-re-revert debug This reverts commit 0b0c0b9ea48d37d617b777e9f602ccf8a2400381. * ci: fix typo * ci: only show story files * revert: re-re-re-re-re-revert debug This reverts commit 9f5b88df3225f23efd72bb099cfebe359af7acdb. * ci: skip when no stories found * ci: use skip * revert: re-re-re-re-re-re-revert debug This reverts commit 0df4bdc30bbf425c8682594d500a6d986517e721. * ci: fix micromatch version * revert: re-re-re-re-re-re-re-revert debug This reverts commit 63063b02bbcb37e85b93afe3f919b185425ddcf0. * revert: re-re-re-re-re-re-re-re-revert debug This reverts commit 01d9669e2a2c758c478bad5379fe19768e2096bc. * chore: pin tabler icon width globally * ci: notify when Chromatic skips * ci: fix endpoint --------- Co-authored-by: syuilo --- .github/workflows/storybook.yml | 44 ++-- package.json | 1 + packages/frontend/.storybook/.gitignore | 6 +- packages/frontend/.storybook/changes.ts | 80 +++++++ packages/frontend/.storybook/main.ts | 8 +- packages/frontend/.storybook/tsconfig.json | 7 +- packages/frontend/package.json | 7 +- .../src/components/global/MkA.stories.impl.ts | 2 +- .../global/MkPageHeader.stories.impl.ts | 9 +- packages/frontend/src/style.scss | 1 + pnpm-lock.yaml | 196 ++++-------------- 11 files changed, 178 insertions(+), 183 deletions(-) create mode 100644 packages/frontend/.storybook/changes.ts diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml index 9659757c49..1296477faf 100644 --- a/.github/workflows/storybook.yml +++ b/.github/workflows/storybook.yml @@ -2,10 +2,6 @@ name: Storybook on: push: - branches: - - master - - develop - pull_request: branches-ignore: - l10n_develop @@ -13,6 +9,9 @@ jobs: build: runs-on: ubuntu-latest + env: + NODE_OPTIONS: "--max_old_space_size=7168" + steps: - uses: actions/checkout@v3.3.0 with: @@ -36,21 +35,34 @@ jobs: run: pnpm --filter misskey-js build - name: Build storybook run: pnpm --filter frontend build-storybook - env: - NODE_OPTIONS: "--max_old_space_size=7168" - name: Publish to Chromatic - id: chromatic - uses: chromaui/action@v1 - with: - exitOnceUploaded: true - projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} - storybookBuildDir: storybook-static - workingDir: packages/frontend - - name: Compare on Chromatic - if: github.event_name == 'pull_request_target' - run: pnpm --filter frontend chromatic -d storybook-static --exit-once-uploaded --patch-build ${{ github.head_ref }}...${{ github.base_ref }} + if: github.ref == 'refs/heads/master' + run: pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static env: CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + - name: Publish to Chromatic + if: github.ref != 'refs/heads/master' + id: chromatic + run: | + CHROMATIC_PARAMETER="$(node packages/frontend/.storybook/changes.js $(git diff-tree --no-commit-id --name-only -r ${{ github.event.before }} HEAD | xargs))" + if [ "$CHROMATIC_PARAMETER" = " --skip" ]; then + echo "skip=true" >> $GITHUB_OUTPUT + fi + pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static $(echo "$CHROMATIC_PARAMETER") + env: + CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + - name: Notify that Chromatic will skip testing + uses: actions/github-script@v6.4.0 + if: github.ref != 'refs/heads/master' && steps.chromatic.outputs.skip == 'true' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + github.rest.repos.createCommitComment({ + owner: context.repo.owner, + repo: context.repo.repo, + commit_sha: context.sha, + body: 'Chromatic will skip testing but you may still have to [review the changes on Chromatic](https://www.chromatic.com/pullrequests?appId=6428f7d7b962f0b79f97d6e4).' + }) - name: Upload Artifacts uses: actions/upload-artifact@v3 with: diff --git a/package.json b/package.json index aa98c3c99f..d1c081c86d 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "scripts": { "build-pre": "node ./scripts/build-pre.js", "build": "pnpm build-pre && pnpm -r build && pnpm gulp", + "build-storybook": "pnpm --filter frontend build-storybook", "start": "pnpm check:connect && cd packages/backend && node ./built/boot/index.js", "start:test": "cd packages/backend && cross-env NODE_ENV=test node ./built/boot/index.js", "init": "pnpm migrate", diff --git a/packages/frontend/.storybook/.gitignore b/packages/frontend/.storybook/.gitignore index 649b36b848..e421532a54 100644 --- a/packages/frontend/.storybook/.gitignore +++ b/packages/frontend/.storybook/.gitignore @@ -1,9 +1,7 @@ -# (cd path/to/frontend; pnpm tsc -p .storybook) -# (cd path/to/frontend; node .storybook/generate.js) +/changes.js /generate.js -# (cd path/to/frontend; node .storybook/preload-locale.js) /preload-locale.js /locale.ts -# (cd path/to/frontend; node .storybook/preload-theme.js) +/main.js /preload-theme.js /themes.ts diff --git a/packages/frontend/.storybook/changes.ts b/packages/frontend/.storybook/changes.ts new file mode 100644 index 0000000000..f0827331f7 --- /dev/null +++ b/packages/frontend/.storybook/changes.ts @@ -0,0 +1,80 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; +import micromatch from 'micromatch'; +import main from './main'; + +interface Stats { + readonly modules: readonly { + readonly id: string; + readonly name: string; + readonly reasons: readonly { + readonly moduleName: string; + }[]; + }[]; +} + +fs.readFile( + path.resolve(__dirname, '../storybook-static/preview-stats.json') +).then((buffer) => { + const stats: Stats = JSON.parse(buffer.toString()); + const keys = new Set(stats.modules.map((stat) => stat.id)); + const map = new Map( + Array.from(keys, (key) => [ + key, + new Set( + stats.modules + .filter((stat) => stat.id === key) + .flatMap((stat) => stat.reasons) + .map((reason) => reason.moduleName) + ), + ]) + ); + const modules = new Set( + process.argv + .slice(2) + .map((arg) => + path.relative( + path.resolve(__dirname, '..'), + path.resolve(__dirname, '../../..', arg) + ) + ) + .map((path) => (path.startsWith('.') ? path : `./${path}`)) + ); + if ( + micromatch(Array.from(modules), [ + '../../assets/**', + '../../fluent-emojis/**', + '../../locales/**', + '../../misskey-assets/**', + 'assets/**', + 'public/**', + '../../pnpm-lock.yaml', + ]).length + ) { + return; + } + for (;;) { + const oldSize = modules.size; + for (const module of Array.from(modules)) { + if (map.has(module)) { + for (const dependency of Array.from(map.get(module)!)) { + modules.add(dependency); + } + } + } + if (modules.size === oldSize) { + break; + } + } + const stories = micromatch( + Array.from(modules), + main.stories.map((story) => `./${path.relative('..', story)}`) + ); + if (stories.length) { + for (const story of stories) { + process.stdout.write(` --only-story-files ${story}`); + } + } else { + process.stdout.write(` --skip`); + } +}); diff --git a/packages/frontend/.storybook/main.ts b/packages/frontend/.storybook/main.ts index 1e57c97b67..45db48fa1d 100644 --- a/packages/frontend/.storybook/main.ts +++ b/packages/frontend/.storybook/main.ts @@ -1,6 +1,7 @@ import { resolve } from 'node:path'; import type { StorybookConfig } from '@storybook/vue3-vite'; import { mergeConfig } from 'vite'; +import turbosnap from 'vite-plugin-turbosnap'; const config = { stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], addons: [ @@ -20,8 +21,13 @@ const config = { core: { disableTelemetry: true, }, - async viteFinal(config, options) { + async viteFinal(config) { return mergeConfig(config, { + plugins: [ + turbosnap({ + rootDir: config.root ?? process.cwd(), + }), + ], build: { target: [ 'chrome108', diff --git a/packages/frontend/.storybook/tsconfig.json b/packages/frontend/.storybook/tsconfig.json index 01aa9db6eb..2db2f1eabe 100644 --- a/packages/frontend/.storybook/tsconfig.json +++ b/packages/frontend/.storybook/tsconfig.json @@ -18,5 +18,10 @@ "jsx": "react", "jsxFactory": "h" }, - "files": ["./generate.tsx", "./preload-locale.ts", "./preload-theme.ts"] + "files": [ + "./changes.ts", + "./generate.tsx", + "./preload-locale.ts", + "./preload-theme.ts" + ] } diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 4a3be2497b..79fb626a9a 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -98,6 +98,7 @@ "@types/gulp": "4.0.10", "@types/gulp-rename": "2.0.1", "@types/matter-js": "0.18.2", + "@types/micromatch": "3.1.1", "@types/node": "18.15.11", "@types/punycode": "2.1.0", "@types/sanitize-html": "2.9.0", @@ -112,8 +113,8 @@ "@typescript-eslint/parser": "5.57.1", "@vitest/coverage-c8": "^0.29.8", "@vue/runtime-core": "3.2.47", - "astring": "^1.8.4", - "chokidar-cli": "^3.0.0", + "astring": "1.8.4", + "chokidar-cli": "3.0.0", "chromatic": "6.17.3", "cross-env": "7.0.3", "cypress": "12.9.0", @@ -122,6 +123,7 @@ "eslint-plugin-vue": "9.10.0", "fast-glob": "3.2.12", "happy-dom": "8.9.0", + "micromatch": "3.1.10", "msw": "1.2.1", "msw-storybook-addon": "1.8.0", "prettier": "2.8.7", @@ -131,6 +133,7 @@ "storybook": "7.0.2", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "summaly": "github:misskey-dev/summaly", + "vite-plugin-turbosnap": "^1.0.1", "vitest": "0.29.8", "vitest-fetch-mock": "0.2.2", "vue-eslint-parser": "9.1.1", diff --git a/packages/frontend/src/components/global/MkA.stories.impl.ts b/packages/frontend/src/components/global/MkA.stories.impl.ts index 72d069e853..639ed19af2 100644 --- a/packages/frontend/src/components/global/MkA.stories.impl.ts +++ b/packages/frontend/src/components/global/MkA.stories.impl.ts @@ -22,7 +22,7 @@ export const Default = { }; }, }, - template: 'Text', + template: 'Misskey', }; }, async play({ canvasElement }) { diff --git a/packages/frontend/src/components/global/MkPageHeader.stories.impl.ts b/packages/frontend/src/components/global/MkPageHeader.stories.impl.ts index 5519d60fc4..7485f3b82f 100644 --- a/packages/frontend/src/components/global/MkPageHeader.stories.impl.ts +++ b/packages/frontend/src/components/global/MkPageHeader.stories.impl.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/explicit-function-return-type */ +import { waitFor } from '@storybook/testing-library'; import { StoryObj } from '@storybook/vue3'; import MkPageHeader from './MkPageHeader.vue'; export const Empty = { @@ -22,16 +23,16 @@ export const Empty = { template: '', }; }, + async play() { + const wait = new Promise((resolve) => setTimeout(resolve, 800)); + await waitFor(async () => await wait); + }, args: { static: true, tabs: [], }, parameters: { layout: 'centered', - chromatic: { - /* This component has animations that are implemented with JavaScript. So it's unstable to take a snapshot. */ - disableSnapshot: true, - }, }, } satisfies StoryObj; export const OneTab = { diff --git a/packages/frontend/src/style.scss b/packages/frontend/src/style.scss index 3634e02745..20254d335e 100644 --- a/packages/frontend/src/style.scss +++ b/packages/frontend/src/style.scss @@ -127,6 +127,7 @@ hr { } .ti { + width: 1.28em; vertical-align: -12%; line-height: 1em; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 932046f795..ff9765b5c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -835,6 +835,9 @@ importers: '@types/matter-js': specifier: 0.18.2 version: 0.18.2 + '@types/micromatch': + specifier: 3.1.1 + version: 3.1.1 '@types/node': specifier: 18.15.11 version: 18.15.11 @@ -878,10 +881,10 @@ importers: specifier: 3.2.47 version: 3.2.47 astring: - specifier: ^1.8.4 + specifier: 1.8.4 version: 1.8.4 chokidar-cli: - specifier: ^3.0.0 + specifier: 3.0.0 version: 3.0.0 chromatic: specifier: 6.17.3 @@ -907,6 +910,9 @@ importers: happy-dom: specifier: 8.9.0 version: 8.9.0 + micromatch: + specifier: 3.1.10 + version: 3.1.10 msw: specifier: 1.2.1 version: 1.2.1(typescript@5.0.3) @@ -934,6 +940,9 @@ importers: summaly: specifier: github:misskey-dev/summaly version: github.com/misskey-dev/summaly/1bab7afee616429b8bbf7a7cbcbb8ebcef66d992 + vite-plugin-turbosnap: + specifier: ^1.0.1 + version: 1.0.1 vitest: specifier: 0.29.8 version: 0.29.8(happy-dom@8.9.0)(sass@1.60.0) @@ -2047,13 +2056,13 @@ packages: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.21.3 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.3) + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.3) '@babel/helper-module-transforms': 7.21.2 '@babel/helpers': 7.21.0 '@babel/parser': 7.21.3 '@babel/template': 7.20.7 '@babel/traverse': 7.21.3 - '@babel/types': 7.21.4 + '@babel/types': 7.21.3 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -2067,7 +2076,7 @@ packages: resolution: {integrity: sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.3 '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 @@ -2077,7 +2086,7 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: @@ -2200,7 +2209,7 @@ packages: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 dev: true /@babel/helper-module-transforms@7.21.2: @@ -3043,7 +3052,7 @@ packages: '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.3) - '@babel/types': 7.21.4 + '@babel/types': 7.21.3 dev: true /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.3): @@ -3402,7 +3411,7 @@ packages: dependencies: '@babel/code-frame': 7.18.6 '@babel/parser': 7.21.3 - '@babel/types': 7.21.3 + '@babel/types': 7.21.4 dev: true /@babel/traverse@7.21.3: @@ -5355,17 +5364,6 @@ packages: telejson: 7.0.4 dev: true - /@storybook/channel-postmessage@7.1.0-alpha.0: - resolution: {integrity: sha512-uNt2+hsf31DT2c/QkwjZFIJ/tE4BLe/JQss721/9xR91WsCestdcJfDhUHLcC+d2q2qoLq29rWrWW2TK+kojKw==} - dependencies: - '@storybook/channels': 7.1.0-alpha.0 - '@storybook/client-logger': 7.1.0-alpha.0 - '@storybook/core-events': 7.1.0-alpha.0 - '@storybook/global': 5.0.0 - qs: 6.11.1 - telejson: 7.0.4 - dev: true - /@storybook/channel-websocket@7.0.2: resolution: {integrity: sha512-YU3lFId6Nsi75ddA+3qfbnLfNUPswboYyx+SALhaLuXqz7zqfzX4ezMgxeS/h0gRlUJ7nf2/yJ5qie/kZaizjw==} dependencies: @@ -5383,10 +5381,6 @@ packages: resolution: {integrity: sha512-qkI8mFy9c8mxN2f01etayKhCaauL6RAsxRzbX1/pKj6UqhHWqqUbtHwymrv4hG5qDYjV1e9pd7ae5eNF8Kui0g==} dev: true - /@storybook/channels@7.1.0-alpha.0: - resolution: {integrity: sha512-9FGJaJU7FdrsF4O8JmvJe/8L3VoriNFssMGH+zkl4Amk0lpEQ/zB9FnHTaALV2hP5DUdtHhyO81u3YXQrmgOUQ==} - dev: true - /@storybook/cli@7.0.2: resolution: {integrity: sha512-xMM2QdXNGg09wuXzAGroKrbsnaHSFPmtmefX1XGALhHuKVwxOoC2apWMpek6gY/9vh5EIRTog2Dvfd2BzNrT6Q==} hasBin: true @@ -5448,12 +5442,6 @@ packages: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.1.0-alpha.0: - resolution: {integrity: sha512-NFIFFeKgZxSXvDnd0nTG1MehTw1j7tMCg8rbK4lJ/R5waQkygJ/9QDVXZlZjC9+FU/Gj175iSIf5LNCHQjylAQ==} - dependencies: - '@storybook/global': 5.0.0 - dev: true - /@storybook/codemod@7.0.2: resolution: {integrity: sha512-D9PdByxJlFiaDJcLkM+RN1DHCj4VfQIlSZkADOcNtI4o9H064oiMloWDGZiR1i1FCYMSXuWmW6tMsuCVebA+Nw==} dependencies: @@ -5533,10 +5521,6 @@ packages: resolution: {integrity: sha512-1DCHCwHRL3+rlvnVVc/BCfReP31XaT2WYgcLeGTmkX1E43Po1MkgcM7PnJPSaa9POvSqZ+6YLZv5Bs1SXbufow==} dev: true - /@storybook/core-events@7.1.0-alpha.0: - resolution: {integrity: sha512-GckKwXy5rcbeLym9yvwziT3KiryLr3uvh2hF9F3Tde1iKvi822Acytg8viVQIUahzdBvlnaRZIIBxhAFPIAu5g==} - dev: true - /@storybook/core-server@7.0.2: resolution: {integrity: sha512-7ipGws8YffVaiwkc+D0+MfZc/Sy52aKenG3nDJdK4Ajmp5LPAlelb/sxIhfRvoHDbDsy2FQNz++Mb55Yh03KkA==} dependencies: @@ -5674,16 +5658,6 @@ packages: '@storybook/preview-api': 7.0.2 dev: true - /@storybook/instrumenter@7.1.0-alpha.0: - resolution: {integrity: sha512-ySi6SXRAKoY202QZaUQqsdBXV3YhlcIfIkfdrcOOa8+abwxQABrZJeRQi41gGWIiqXDWTfx2BZDlaRU39Kyw5Q==} - dependencies: - '@storybook/channels': 7.1.0-alpha.0 - '@storybook/client-logger': 7.1.0-alpha.0 - '@storybook/core-events': 7.1.0-alpha.0 - '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.1.0-alpha.0 - dev: true - /@storybook/jest@0.1.0: resolution: {integrity: sha512-TmybnEXlv5Fu2/Hq4nRj7alS9mw4CasLR0RDwaAzS+Vpvu1TC4+j9rh+b1BHtmWebbJh0JMT6mgzPqOyJdgtQA==} dependencies: @@ -5779,26 +5753,6 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.1.0-alpha.0: - resolution: {integrity: sha512-wZCEFCpxqjjSGdJKtVYd/ck/Fg/dsU3cPEbjPhUyLQqKnUA/MsR8vVzDtkmugWwupviChfjARvwLdNN8u45OXw==} - dependencies: - '@storybook/channel-postmessage': 7.1.0-alpha.0 - '@storybook/channels': 7.1.0-alpha.0 - '@storybook/client-logger': 7.1.0-alpha.0 - '@storybook/core-events': 7.1.0-alpha.0 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/types': 7.1.0-alpha.0 - '@types/qs': 6.9.7 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.1 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true - /@storybook/preview@7.0.2: resolution: {integrity: sha512-U7MZkDT9bBq7HggLAXmTO9gI4eqhYs26fZS0L6iTE/PCX4Wg2TJBJSq2X8jhDXRqJFOt8SrQ756+V5Vtwrh4Og==} dev: true @@ -5927,8 +5881,8 @@ packages: /@storybook/testing-library@0.0.14-next.1: resolution: {integrity: sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw==} dependencies: - '@storybook/client-logger': 7.1.0-alpha.0 - '@storybook/instrumenter': 7.1.0-alpha.0 + '@storybook/client-logger': 7.0.2 + '@storybook/instrumenter': 7.0.2 '@testing-library/dom': 8.20.0 '@testing-library/user-event': 13.5.0(@testing-library/dom@8.20.0) ts-dedent: 2.2.0 @@ -5966,15 +5920,6 @@ packages: file-system-cache: 2.0.2 dev: true - /@storybook/types@7.1.0-alpha.0: - resolution: {integrity: sha512-84VOCC/NEH6B5puWgK9VGjigmAfTU1iJJmly+OaF2lJv6LeHRb4/UOPSeg8fA8uHh3E32jSRKA2B8sUnxCCQrg==} - dependencies: - '@storybook/channels': 7.1.0-alpha.0 - '@types/babel__core': 7.20.0 - '@types/express': 4.17.17 - file-system-cache: 2.0.2 - dev: true - /@storybook/vue3-vite@7.0.2(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.3)(vite@4.2.1)(vue@3.2.47): resolution: {integrity: sha512-lmxnHA9wHkgbNq+oW6dVnXbe9QOFjOz4Ejkl1AAjjg0blJ+VGautVa3mSeYM99szx5EigSfQjFAkv/TAJVC80Q==} engines: {node: ^14.18 || >=16} @@ -6459,6 +6404,10 @@ packages: '@types/node': 18.15.11 dev: true + /@types/braces@3.0.1: + resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} + dev: true + /@types/bull@4.10.0: resolution: {integrity: sha512-RkYW8K2H3J76HT6twmHYbzJ0GtLDDotpLP9ah9gtiA7zfF6peBH1l5fEiK0oeIZ3/642M7Jcb9sPmor8Vf4w6g==} dependencies: @@ -6726,6 +6675,12 @@ packages: resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} dev: true + /@types/micromatch@3.1.1: + resolution: {integrity: sha512-Wr5y4uv3r7JP4jEUqv7rZeYiMBGRHcbojDVsl11wq6gw1v/ZZQvJexd9rtvVx3EIVqw8dwtcRjSs8m2DV9qHjQ==} + dependencies: + '@types/braces': 3.0.1 + dev: true + /@types/mime-types@2.1.1: resolution: {integrity: sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==} dev: true @@ -7867,7 +7822,6 @@ packages: /arr-diff@4.0.0: resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} engines: {node: '>=0.10.0'} - dev: false /arr-filter@1.1.2: resolution: {integrity: sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==} @@ -7879,7 +7833,6 @@ packages: /arr-flatten@1.1.0: resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} engines: {node: '>=0.10.0'} - dev: false /arr-map@2.0.2: resolution: {integrity: sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==} @@ -7891,7 +7844,6 @@ packages: /arr-union@3.1.0: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} - dev: false /array-each@1.0.1: resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} @@ -7949,7 +7901,6 @@ packages: /array-unique@0.3.2: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} - dev: false /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} @@ -8016,7 +7967,6 @@ packages: /assign-symbols@1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} - dev: false /ast-types@0.14.2: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} @@ -8083,7 +8033,7 @@ packages: /atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} - dev: false + hasBin: true /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} @@ -8320,7 +8270,6 @@ packages: isobject: 3.0.1 mixin-deep: 1.3.2 pascalcase: 0.1.1 - dev: false /bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} @@ -8490,7 +8439,6 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -8697,7 +8645,6 @@ packages: to-object-path: 0.3.0 union-value: 1.0.1 unset-value: 1.0.0 - dev: false /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} @@ -9052,7 +8999,6 @@ packages: define-property: 0.2.5 isobject: 3.0.1 static-extend: 0.1.2 - dev: false /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} @@ -9245,7 +9191,6 @@ packages: dependencies: map-visit: 1.0.0 object-visit: 1.0.1 - dev: false /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -9366,7 +9311,6 @@ packages: /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: false /compress-commons@4.1.1: resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} @@ -9466,7 +9410,6 @@ packages: /copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} - dev: false /copy-props@2.0.5: resolution: {integrity: sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==} @@ -9818,7 +9761,6 @@ packages: /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} - dev: false /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -9929,14 +9871,12 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-descriptor: 0.1.6 - dev: false /define-property@1.0.0: resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} engines: {node: '>=0.10.0'} dependencies: is-descriptor: 1.0.2 - dev: false /define-property@2.0.2: resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} @@ -9944,7 +9884,6 @@ packages: dependencies: is-descriptor: 1.0.2 isobject: 3.0.1 - dev: false /defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} @@ -10908,7 +10847,7 @@ packages: engines: {node: '>=8.3.0'} dependencies: '@babel/traverse': 7.21.3 - '@babel/types': 7.21.4 + '@babel/types': 7.21.3 c8: 7.13.0 transitivePeerDependencies: - supports-color @@ -11046,7 +10985,6 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} @@ -11136,7 +11074,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 - dev: false /extend-shallow@3.0.2: resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} @@ -11144,7 +11081,6 @@ packages: dependencies: assign-symbols: 1.0.0 is-extendable: 1.0.1 - dev: false /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -11172,7 +11108,6 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false /extract-zip@1.7.0: resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} @@ -11421,7 +11356,6 @@ packages: is-number: 3.0.0 repeat-string: 1.6.1 to-regex-range: 2.1.1 - dev: false /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -11604,7 +11538,6 @@ packages: /for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} engines: {node: '>=0.10.0'} - dev: false /for-own@1.0.0: resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} @@ -11672,7 +11605,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: map-cache: 0.2.2 - dev: false /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} @@ -11894,7 +11826,6 @@ packages: /get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} - dev: false /getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} @@ -12344,7 +12275,6 @@ packages: get-value: 2.0.6 has-values: 0.1.4 isobject: 2.1.0 - dev: false /has-value@1.0.0: resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} @@ -12353,12 +12283,10 @@ packages: get-value: 2.0.6 has-values: 1.0.0 isobject: 3.0.1 - dev: false /has-values@0.1.4: resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} engines: {node: '>=0.10.0'} - dev: false /has-values@1.0.0: resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} @@ -12366,7 +12294,6 @@ packages: dependencies: is-number: 3.0.0 kind-of: 4.0.0 - dev: false /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -12811,14 +12738,12 @@ packages: engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false /is-accessor-descriptor@1.0.0: resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 6.0.3 - dev: false /is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} @@ -12876,7 +12801,6 @@ packages: /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -12900,14 +12824,12 @@ packages: engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false /is-data-descriptor@1.0.0: resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 6.0.3 - dev: false /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -12931,7 +12853,6 @@ packages: is-accessor-descriptor: 0.1.6 is-data-descriptor: 0.1.4 kind-of: 5.1.0 - dev: false /is-descriptor@1.0.2: resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} @@ -12940,7 +12861,6 @@ packages: is-accessor-descriptor: 1.0.0 is-data-descriptor: 1.0.0 kind-of: 6.0.3 - dev: false /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} @@ -12957,14 +12877,12 @@ packages: /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} - dev: false /is-extendable@1.0.1: resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} engines: {node: '>=0.10.0'} dependencies: is-plain-object: 2.0.4 - dev: false /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -13094,7 +13012,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false /is-number@4.0.0: resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} @@ -13257,7 +13174,6 @@ packages: /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - dev: false /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} @@ -13288,7 +13204,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: isarray: 1.0.0 - dev: false /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} @@ -14169,19 +14084,16 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 - dev: false /kind-of@4.0.0: resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 - dev: false /kind-of@5.1.0: resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} engines: {node: '>=0.10.0'} - dev: false /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -14649,7 +14561,6 @@ packages: /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} - dev: false /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} @@ -14674,7 +14585,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: object-visit: 1.0.1 - dev: false /markdown-to-jsx@7.2.0(react@18.2.0): resolution: {integrity: sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==} @@ -14785,7 +14695,6 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -14959,7 +14868,6 @@ packages: dependencies: for-in: 1.0.2 is-extendable: 1.0.1 - dev: false /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -15144,7 +15052,6 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} @@ -15495,7 +15402,6 @@ packages: copy-descriptor: 0.1.1 define-property: 0.2.5 kind-of: 3.2.2 - dev: false /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} @@ -15523,7 +15429,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: false /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} @@ -15557,7 +15462,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: false /object.reduce@1.0.1: resolution: {integrity: sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==} @@ -15921,7 +15825,6 @@ packages: /pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} engines: {node: '>=0.10.0'} - dev: false /path-dirname@1.0.2: resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} @@ -16241,13 +16144,12 @@ packages: resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} engines: {node: '>=10'} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.21.0 dev: true /posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} - dev: false /postcss-calc@5.3.1: resolution: {integrity: sha512-iBcptYFq+QUh9gzP7ta2btw50o40s4uLI4UDVgd5yRAZtUDWc5APdl5yQDd2h/TyiZNbJrv0HiYhT102CMgN7Q==} @@ -17343,7 +17245,6 @@ packages: dependencies: extend-shallow: 3.0.2 safe-regex: 1.1.0 - dev: false /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} @@ -17423,12 +17324,10 @@ packages: /repeat-element@1.1.4: resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} engines: {node: '>=0.10.0'} - dev: false /repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} - dev: false /replace-ext@1.0.1: resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} @@ -17541,7 +17440,7 @@ packages: /resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - dev: false + deprecated: https://github.com/lydell/resolve-url#deprecated /resolve.exports@2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} @@ -17585,7 +17484,6 @@ packages: /ret@0.1.15: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} - dev: false /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} @@ -17699,7 +17597,6 @@ packages: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} dependencies: ret: 0.1.15 - dev: false /safe-stable-stringify@2.4.2: resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} @@ -17855,7 +17752,6 @@ packages: is-extendable: 0.1.1 is-plain-object: 2.0.4 split-string: 3.1.0 - dev: false /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -18047,14 +17943,12 @@ packages: define-property: 1.0.0 isobject: 3.0.1 snapdragon-util: 3.0.1 - dev: false /snapdragon-util@3.0.1: resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false /snapdragon@0.8.2: resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} @@ -18070,7 +17964,6 @@ packages: use: 3.1.1 transitivePeerDependencies: - supports-color - dev: false /snyk-config@5.1.0: resolution: {integrity: sha512-wqVMxUGqjjHX+MJrz0WHa/pJTDWU17aRv6cnI/6i7cq93J3TkkJZ8sjgvwCgP8cWX5wTHIlRuMV+IAd59K4X/g==} @@ -18156,13 +18049,13 @@ packages: /source-map-resolve@0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated dependencies: atob: 2.1.2 decode-uri-component: 0.2.2 resolve-url: 0.2.1 source-map-url: 0.4.1 urix: 0.1.0 - dev: false /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -18179,12 +18072,11 @@ packages: /source-map-url@0.4.1: resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - dev: false + deprecated: See https://github.com/lydell/source-map-url#deprecated /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} - dev: false /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -18230,7 +18122,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: extend-shallow: 3.0.2 - dev: false /split2@4.1.0: resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} @@ -18312,7 +18203,6 @@ packages: dependencies: define-property: 0.2.5 object-copy: 0.1.0 - dev: false /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} @@ -18915,7 +18805,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 - dev: false /to-regex-range@2.1.1: resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} @@ -18923,7 +18812,6 @@ packages: dependencies: is-number: 3.0.0 repeat-string: 1.6.1 - dev: false /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -18939,7 +18827,6 @@ packages: extend-shallow: 3.0.2 regex-not: 1.0.2 safe-regex: 1.1.0 - dev: false /to-through@2.0.0: resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==} @@ -19375,7 +19262,6 @@ packages: get-value: 2.0.6 is-extendable: 0.1.1 set-value: 2.0.1 - dev: false /uniq@1.0.1: resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} @@ -19470,7 +19356,6 @@ packages: dependencies: has-value: 0.3.1 isobject: 3.0.1 - dev: false /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -19510,7 +19395,7 @@ packages: /urix@0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - dev: false + deprecated: Please see https://github.com/lydell/urix#deprecated /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -19541,7 +19426,6 @@ packages: /use@3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} engines: {node: '>=0.10.0'} - dev: false /utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} @@ -19714,6 +19598,10 @@ packages: - terser dev: true + /vite-plugin-turbosnap@1.0.1: + resolution: {integrity: sha512-isVvISdXZyflIsXYrpTMBnyrtZq92ftohL8/xHi1H0kUwXIFDegqedX1kCKIQ04tjUkphB0cFbGzuvOGVwVTnQ==} + dev: true + /vite@4.2.1(@types/node@18.15.11)(sass@1.60.0): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -19833,7 +19721,7 @@ packages: resolution: {integrity: sha512-jbOf7ByE3Zvtuk+429Jorl+eIeh2aB2Fx1GUo3xJd1aByJWE8KDlSEa6b11PB1ze8f0sRUBraRDinICCk0KY7g==} dependencies: '@babel/parser': 7.21.3 - '@babel/types': 7.21.4 + '@babel/types': 7.21.3 '@vue/compiler-dom': 3.2.47 '@vue/compiler-sfc': 3.2.47 ast-types: 0.14.2 From eb30976ae6776c407140ae5e1adfacb5c64abcfb Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 7 Apr 2023 20:35:58 +0900 Subject: [PATCH 25/81] Update CHANGELOG.md --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03cf179a86..e701d84bbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,8 @@ ## 13.x.x (unreleased) ### NOTE -- Redis 7.xが必要です +- このバージョンからRedis 7.xが必要です。 +- アップデートを行うと全ての通知はリセットされます。 ### General - チャンネルをお気に入りに登録できるように From 79f198e4f174261fd7d1936b3d161fd557e1bd37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Fri, 7 Apr 2023 23:27:22 +0900 Subject: [PATCH 26/81] ci: ignore develop commits --- .github/workflows/storybook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml index 1296477faf..3a62bf2378 100644 --- a/.github/workflows/storybook.yml +++ b/.github/workflows/storybook.yml @@ -53,7 +53,7 @@ jobs: CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} - name: Notify that Chromatic will skip testing uses: actions/github-script@v6.4.0 - if: github.ref != 'refs/heads/master' && steps.chromatic.outputs.skip == 'true' + if: github.ref != 'refs/heads/master' && github.ref != 'refs/heads/develop' && steps.chromatic.outputs.skip == 'true' with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | From 44a4faebc00c67becba925bd4bb928b941cde91a Mon Sep 17 00:00:00 2001 From: remi <768.jac@gmail.com> Date: Sat, 8 Apr 2023 05:55:05 +0200 Subject: [PATCH 27/81] feat: add minimize/Fold button for windows (#10508) * add window minimizing! * Fix window being able to go offscreen * Revert en-US.yml changes --------- Co-authored-by: mothmoon --- CHANGELOG.md | 1 + locales/ja-JP.yml | 1 + packages/frontend/src/components/MkWindow.vue | 64 +++++++++++++------ 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e701d84bbf..3fce3195ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ - 左耳は上からおよそ 10%, 左からおよそ 20% の位置で決定します - 右耳は上からおよそ 10%, 左からおよそ 80% の位置で決定します - 「UIのアニメーションを減らす」 (`reduceAnimation`) で猫耳を撫でられなくなります +- Add Minimizing ("folding") of windows ### Server - イベント用Redisを別サーバーに分離できるように diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 66b591760c..04e4d52b28 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -920,6 +920,7 @@ pushNotificationNotSupported: "ブラウザかサーバーがプッシュ通知 sendPushNotificationReadMessage: "通知やメッセージが既読になったらプッシュ通知を削除する" sendPushNotificationReadMessageCaption: "「{emptyPushNotificationMessage}」という通知が一瞬表示されるようになります。端末の電池消費量が増加する可能性があります。" windowMaximize: "最大化" +windowMinimize: "最小化" windowRestore: "元に戻す" caption: "キャプション" loggedInAsBot: "Botアカウントでログイン中" diff --git a/packages/frontend/src/components/MkWindow.vue b/packages/frontend/src/components/MkWindow.vue index 30b5391e9a..1afcb104e9 100644 --- a/packages/frontend/src/components/MkWindow.vue +++ b/packages/frontend/src/components/MkWindow.vue @@ -11,15 +11,17 @@
- + - + + + - +
@@ -27,7 +29,7 @@
-