From 68c3eb5b5d614e333d6c4c7797598de01831749f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=82=8F=E3=82=8F=E3=82=8F=E3=81=A8=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E3=82=85?= <17376330+u1-liquid@users.noreply.github.com> Date: Wed, 15 Jan 2025 03:24:33 +0900 Subject: [PATCH] update deps (MisskeyIO#889) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - メンテナンスされないredis-lockを自前実装に変更 - 既にロックされている場合のリトライ間隔を調整 --- package.json | 8 +- packages/backend/package.json | 7 +- packages/backend/src/@types/redis-lock.d.ts | 13 - packages/backend/src/core/AppLockService.ts | 44 -- packages/backend/src/core/CoreModule.ts | 6 - packages/backend/src/core/QueueService.ts | 5 +- .../src/core/activitypub/ApInboxService.ts | 15 +- .../core/activitypub/models/ApNoteService.ts | 9 +- .../src/core/chart/charts/active-users.ts | 9 +- .../src/core/chart/charts/ap-request.ts | 9 +- .../backend/src/core/chart/charts/drive.ts | 9 +- .../src/core/chart/charts/federation.ts | 9 +- .../backend/src/core/chart/charts/instance.ts | 9 +- .../backend/src/core/chart/charts/notes.ts | 9 +- .../src/core/chart/charts/per-user-drive.ts | 9 +- .../core/chart/charts/per-user-following.ts | 9 +- .../src/core/chart/charts/per-user-notes.ts | 9 +- .../src/core/chart/charts/per-user-pv.ts | 9 +- .../core/chart/charts/per-user-reactions.ts | 9 +- .../src/core/chart/charts/test-grouped.ts | 9 +- .../core/chart/charts/test-intersection.ts | 9 +- .../src/core/chart/charts/test-unique.ts | 9 +- .../backend/src/core/chart/charts/test.ts | 9 +- .../backend/src/core/chart/charts/users.ts | 9 +- packages/backend/src/misc/distributed-lock.ts | 44 ++ packages/backend/test/unit/chart.ts | 17 +- packages/frontend/package.json | 10 +- packages/frontend/src/pages/sso.vue | 2 +- .../src/ui/_common_/navbar-for-mobile.vue | 2 +- packages/misskey-bubble-game/package.json | 2 +- packages/misskey-js/generator/package.json | 2 +- packages/misskey-js/package.json | 2 +- packages/misskey-reversi/package.json | 2 +- packages/sw/package.json | 2 +- pnpm-lock.yaml | 727 +++++++++--------- 35 files changed, 546 insertions(+), 517 deletions(-) delete mode 100644 packages/backend/src/@types/redis-lock.d.ts delete mode 100644 packages/backend/src/core/AppLockService.ts create mode 100644 packages/backend/src/misc/distributed-lock.ts diff --git a/package.json b/package.json index 88844f072..6b0a7cfef 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "git", "url": "https://github.com/MisskeyIO/misskey.git" }, - "packageManager": "pnpm@9.15.3", + "packageManager": "pnpm@9.15.4", "workspaces": [ "packages/frontend", "packages/backend", @@ -63,19 +63,19 @@ "cssnano": "7.0.6", "execa": "9.5.2", "js-yaml": "4.1.0", - "postcss": "8.4.49", + "postcss": "8.5.1", "terser": "5.37.0", "typescript": "5.7.3" }, "devDependencies": { - "@types/node": "22.10.5", + "@types/node": "22.10.6", "@typescript-eslint/eslint-plugin": "7.10.0", "@typescript-eslint/parser": "7.10.0", "cross-env": "7.0.3", "cypress": "13.17.0", "eslint": "8.57.1", "ncp": "2.0.0", - "start-server-and-test": "2.0.9" + "start-server-and-test": "2.0.10" }, "optionalDependencies": { "@tensorflow/tfjs-core": "4.22.0" diff --git a/packages/backend/package.json b/packages/backend/package.json index affcad38d..ba1d961e2 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -99,7 +99,7 @@ "bcryptjs": "2.4.3", "blurhash": "2.0.5", "body-parser": "1.20.3", - "bullmq": "5.34.9", + "bullmq": "5.34.10", "cacheable-lookup": "7.0.0", "cbor": "10.0.3", "chalk": "5.4.1", @@ -131,7 +131,7 @@ "json5": "2.2.3", "jsonld": "8.3.3", "jsrsasign": "11.1.0", - "meilisearch": "0.47.0", + "meilisearch": "0.48.0", "mfm-js": "0.24.0", "microformats-parser": "2.0.2", "mime-types": "2.1.35", @@ -163,7 +163,6 @@ "random-seed": "0.3.0", "ratelimiter": "3.4.1", "re2": "1.21.4", - "redis-lock": "0.1.4", "reflect-metadata": "0.2.2", "rename": "1.0.4", "rss-parser": "3.13.0", @@ -210,7 +209,7 @@ "@types/jsrsasign": "10.5.15", "@types/mime-types": "2.1.4", "@types/ms": "0.7.34", - "@types/node": "22.10.5", + "@types/node": "22.10.6", "@types/node-forge": "1.3.11", "@types/nodemailer": "6.4.17", "@types/oauth": "0.9.6", diff --git a/packages/backend/src/@types/redis-lock.d.ts b/packages/backend/src/@types/redis-lock.d.ts deleted file mode 100644 index b037cde5e..000000000 --- a/packages/backend/src/@types/redis-lock.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * SPDX-FileCopyrightText: syuilo and misskey-project - * SPDX-License-Identifier: AGPL-3.0-only - */ - -declare module 'redis-lock' { - import type Redis from 'ioredis'; - - type Lock = (lockName: string, timeout?: number, taskToPerform?: () => Promise) => void; - function redisLock(client: Redis.Redis, retryDelay: number): Lock; - - export = redisLock; -} diff --git a/packages/backend/src/core/AppLockService.ts b/packages/backend/src/core/AppLockService.ts deleted file mode 100644 index bd2749cb8..000000000 --- a/packages/backend/src/core/AppLockService.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SPDX-FileCopyrightText: syuilo and misskey-project - * SPDX-License-Identifier: AGPL-3.0-only - */ - -import { promisify } from 'node:util'; -import { Inject, Injectable } from '@nestjs/common'; -import redisLock from 'redis-lock'; -import * as Redis from 'ioredis'; -import { DI } from '@/di-symbols.js'; -import { bindThis } from '@/decorators.js'; - -/** - * Retry delay (ms) for lock acquisition - */ -const retryDelay = 100; - -@Injectable() -export class AppLockService { - private lock: (key: string, timeout?: number, _?: (() => Promise) | undefined) => Promise<() => void>; - - constructor( - @Inject(DI.redis) - private redisClient: Redis.Redis, - ) { - this.lock = promisify(redisLock(this.redisClient, retryDelay)); - } - - /** - * Get AP Object lock - * @param uri AP object ID - * @param timeout Lock timeout (ms), The timeout releases previous lock. - * @returns Unlock function - */ - @bindThis - public getApLock(uri: string, timeout = 30 * 1000): Promise<() => void> { - return this.lock(`ap-object:${uri}`, timeout); - } - - @bindThis - public getChartInsertLock(lockKey: string, timeout = 30 * 1000): Promise<() => void> { - return this.lock(`chart-insert:${lockKey}`, timeout); - } -} diff --git a/packages/backend/src/core/CoreModule.ts b/packages/backend/src/core/CoreModule.ts index eaa828091..ba89f6022 100644 --- a/packages/backend/src/core/CoreModule.ts +++ b/packages/backend/src/core/CoreModule.ts @@ -10,7 +10,6 @@ import { AccountUpdateService } from './AccountUpdateService.js'; import { AiService } from './AiService.js'; import { AnnouncementService } from './AnnouncementService.js'; import { AntennaService } from './AntennaService.js'; -import { AppLockService } from './AppLockService.js'; import { AchievementService } from './AchievementService.js'; import { AvatarDecorationService } from './AvatarDecorationService.js'; import { CaptchaService } from './CaptchaService.js'; @@ -149,7 +148,6 @@ const $AccountUpdateService: Provider = { provide: 'AccountUpdateService', useEx const $AiService: Provider = { provide: 'AiService', useExisting: AiService }; const $AnnouncementService: Provider = { provide: 'AnnouncementService', useExisting: AnnouncementService }; const $AntennaService: Provider = { provide: 'AntennaService', useExisting: AntennaService }; -const $AppLockService: Provider = { provide: 'AppLockService', useExisting: AppLockService }; const $AchievementService: Provider = { provide: 'AchievementService', useExisting: AchievementService }; const $AvatarDecorationService: Provider = { provide: 'AvatarDecorationService', useExisting: AvatarDecorationService }; const $CaptchaService: Provider = { provide: 'CaptchaService', useExisting: CaptchaService }; @@ -292,7 +290,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting AiService, AnnouncementService, AntennaService, - AppLockService, AchievementService, AvatarDecorationService, CaptchaService, @@ -429,7 +426,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting $AiService, $AnnouncementService, $AntennaService, - $AppLockService, $AchievementService, $AvatarDecorationService, $CaptchaService, @@ -567,7 +563,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting AiService, AnnouncementService, AntennaService, - AppLockService, AchievementService, AvatarDecorationService, CaptchaService, @@ -703,7 +698,6 @@ const $ApQuestionService: Provider = { provide: 'ApQuestionService', useExisting $AiService, $AnnouncementService, $AntennaService, - $AppLockService, $AchievementService, $AvatarDecorationService, $CaptchaService, diff --git a/packages/backend/src/core/QueueService.ts b/packages/backend/src/core/QueueService.ts index 526751044..a41c9c96e 100644 --- a/packages/backend/src/core/QueueService.ts +++ b/packages/backend/src/core/QueueService.ts @@ -376,7 +376,10 @@ export class QueueService { @bindThis public createReportAbuseJob(report: MiAbuseUserReport) { - return this.dbQueue.add('reportAbuse', report); + return this.dbQueue.add('reportAbuse', report, { + removeOnComplete: true, + removeOnFail: true, + }); } @bindThis diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts index 9542eabe5..291abd05f 100644 --- a/packages/backend/src/core/activitypub/ApInboxService.ts +++ b/packages/backend/src/core/activitypub/ApInboxService.ts @@ -5,6 +5,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { In } from 'typeorm'; +import * as Redis from 'ioredis'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; import { UserFollowingService } from '@/core/UserFollowingService.js'; @@ -14,8 +15,8 @@ import { NotePiningService } from '@/core/NotePiningService.js'; import { UserBlockingService } from '@/core/UserBlockingService.js'; import { NoteDeleteService } from '@/core/NoteDeleteService.js'; import { NoteCreateService } from '@/core/NoteCreateService.js'; +import { acquireApObjectLock } from '@/misc/distributed-lock.js'; import { concat, toArray, toSingle, unique } from '@/misc/prelude/array.js'; -import { AppLockService } from '@/core/AppLockService.js'; import type Logger from '@/logger.js'; import { MetaService } from '@/core/MetaService.js'; import { IdService } from '@/core/IdService.js'; @@ -49,6 +50,9 @@ export class ApInboxService { @Inject(DI.config) private config: Config, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.usersRepository) private usersRepository: UsersRepository, @@ -77,7 +81,6 @@ export class ApInboxService { private userBlockingService: UserBlockingService, private noteCreateService: NoteCreateService, private noteDeleteService: NoteDeleteService, - private appLockService: AppLockService, private apResolverService: ApResolverService, private apDbResolverService: ApDbResolverService, private apLoggerService: ApLoggerService, @@ -312,7 +315,7 @@ export class ApInboxService { const meta = await this.metaService.fetch(); if (this.utilityService.isItemListedIn(this.utilityService.extractHost(uri), meta.blockedHosts)) return 'skip: blocked host'; - const unlock = await this.appLockService.getApLock(uri); + const unlock = await acquireApObjectLock(this.redisForTimelines, uri); try { // 既に同じURIを持つものが登録されていないかチェック @@ -440,7 +443,7 @@ export class ApInboxService { } } - const unlock = await this.appLockService.getApLock(uri); + const unlock = await acquireApObjectLock(this.redisForTimelines, uri); try { const exist = await this.apNoteService.fetchNote(note); @@ -543,7 +546,7 @@ export class ApInboxService { private async deleteNote(actor: MiRemoteUser, uri: string): Promise { this.logger.info(`Deleting the Note: ${uri}`); - const unlock = await this.appLockService.getApLock(uri); + const unlock = await acquireApObjectLock(this.redisForTimelines, uri); try { const note = await this.apDbResolverService.getNoteFromApId(uri); @@ -813,7 +816,7 @@ export class ApInboxService { return 'ok: Question updated'; } else if (additionalCc && isPost(object)) { const uri = getApId(object); - const unlock = await this.appLockService.getApLock(uri); + const unlock = await acquireApObjectLock(this.redisForTimelines, uri); try { const exist = await this.apNoteService.fetchNote(object); diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts index 03c91b3c4..1e6ff5a5a 100644 --- a/packages/backend/src/core/activitypub/models/ApNoteService.ts +++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts @@ -5,15 +5,16 @@ import { forwardRef, Inject, Injectable } from '@nestjs/common'; import { In } from 'typeorm'; +import * as Redis from 'ioredis'; import { DI } from '@/di-symbols.js'; import type { UsersRepository, PollsRepository, EmojisRepository } from '@/models/_.js'; import type { Config } from '@/config.js'; import type { MiRemoteUser } from '@/models/User.js'; import type { MiNote } from '@/models/Note.js'; +import { acquireApObjectLock } from '@/misc/distributed-lock.js'; import { toArray, toSingle, unique } from '@/misc/prelude/array.js'; import type { MiEmoji } from '@/models/Emoji.js'; import { MetaService } from '@/core/MetaService.js'; -import { AppLockService } from '@/core/AppLockService.js'; import type { MiDriveFile } from '@/models/DriveFile.js'; import { NoteCreateService } from '@/core/NoteCreateService.js'; import type Logger from '@/logger.js'; @@ -47,6 +48,9 @@ export class ApNoteService { @Inject(DI.config) private config: Config, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.usersRepository) private usersRepository: UsersRepository, @@ -70,7 +74,6 @@ export class ApNoteService { private apImageService: ApImageService, private apQuestionService: ApQuestionService, private metaService: MetaService, - private appLockService: AppLockService, private pollService: PollService, private noteCreateService: NoteCreateService, private apDbResolverService: ApDbResolverService, @@ -379,7 +382,7 @@ export class ApNoteService { throw new StatusError('blocked host', 451); } - const unlock = await this.appLockService.getApLock(uri); + const unlock = await acquireApObjectLock(this.redisForTimelines, uri); try { //#region このサーバーに既に登録されていたらそれを返す diff --git a/packages/backend/src/core/chart/charts/active-users.ts b/packages/backend/src/core/chart/charts/active-users.ts index 05905f378..0f118ef7f 100644 --- a/packages/backend/src/core/chart/charts/active-users.ts +++ b/packages/backend/src/core/chart/charts/active-users.ts @@ -5,11 +5,12 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; -import { AppLockService } from '@/core/AppLockService.js'; +import * as Redis from 'ioredis'; import type { MiUser } from '@/models/User.js'; import { DI } from '@/di-symbols.js'; import { bindThis } from '@/decorators.js'; import { IdService } from '@/core/IdService.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/active-users.js'; @@ -28,11 +29,13 @@ export default class ActiveUsersChart extends Chart { // eslint-d @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + private chartLoggerService: ChartLoggerService, private idService: IdService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/ap-request.ts b/packages/backend/src/core/chart/charts/ap-request.ts index 04e771a95..401bcdca6 100644 --- a/packages/backend/src/core/chart/charts/ap-request.ts +++ b/packages/backend/src/core/chart/charts/ap-request.ts @@ -5,9 +5,10 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; -import { AppLockService } from '@/core/AppLockService.js'; +import * as Redis from 'ioredis'; import { DI } from '@/di-symbols.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/ap-request.js'; @@ -22,10 +23,12 @@ export default class ApRequestChart extends Chart { // eslint-dis @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/drive.ts b/packages/backend/src/core/chart/charts/drive.ts index 613e074a9..552afec89 100644 --- a/packages/backend/src/core/chart/charts/drive.ts +++ b/packages/backend/src/core/chart/charts/drive.ts @@ -5,10 +5,11 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { MiDriveFile } from '@/models/DriveFile.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/drive.js'; @@ -23,10 +24,12 @@ export default class DriveChart extends Chart { // eslint-disable @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/federation.ts b/packages/backend/src/core/chart/charts/federation.ts index 5e4555ee9..106874b9d 100644 --- a/packages/backend/src/core/chart/charts/federation.ts +++ b/packages/backend/src/core/chart/charts/federation.ts @@ -5,11 +5,12 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { FollowingsRepository, InstancesRepository } from '@/models/_.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import { MetaService } from '@/core/MetaService.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/federation.js'; @@ -24,6 +25,9 @@ export default class FederationChart extends Chart { // eslint-di @Inject(DI.db) private db: DataSource, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.followingsRepository) private followingsRepository: FollowingsRepository, @@ -31,10 +35,9 @@ export default class FederationChart extends Chart { // eslint-di private instancesRepository: InstancesRepository, private metaService: MetaService, - private appLockService: AppLockService, private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/instance.ts b/packages/backend/src/core/chart/charts/instance.ts index 037c4dd08..de0bc4270 100644 --- a/packages/backend/src/core/chart/charts/instance.ts +++ b/packages/backend/src/core/chart/charts/instance.ts @@ -5,13 +5,14 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { DriveFilesRepository, FollowingsRepository, UsersRepository, NotesRepository } from '@/models/_.js'; import type { MiDriveFile } from '@/models/DriveFile.js'; import type { MiNote } from '@/models/Note.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import { UtilityService } from '@/core/UtilityService.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/instance.js'; @@ -26,6 +27,9 @@ export default class InstanceChart extends Chart { // eslint-disa @Inject(DI.db) private db: DataSource, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.usersRepository) private usersRepository: UsersRepository, @@ -39,10 +43,9 @@ export default class InstanceChart extends Chart { // eslint-disa private followingsRepository: FollowingsRepository, private utilityService: UtilityService, - private appLockService: AppLockService, private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema, true); } protected async tickMajor(group: string): Promise>> { diff --git a/packages/backend/src/core/chart/charts/notes.ts b/packages/backend/src/core/chart/charts/notes.ts index f763b5fff..c6258ccc5 100644 --- a/packages/backend/src/core/chart/charts/notes.ts +++ b/packages/backend/src/core/chart/charts/notes.ts @@ -5,11 +5,12 @@ import { Injectable, Inject } from '@nestjs/common'; import { Not, IsNull, DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { NotesRepository } from '@/models/_.js'; import type { MiNote } from '@/models/Note.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/notes.js'; @@ -24,13 +25,15 @@ export default class NotesChart extends Chart { // eslint-disable @Inject(DI.db) private db: DataSource, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.notesRepository) private notesRepository: NotesRepository, - private appLockService: AppLockService, private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/per-user-drive.ts b/packages/backend/src/core/chart/charts/per-user-drive.ts index 404964d8b..070ae055f 100644 --- a/packages/backend/src/core/chart/charts/per-user-drive.ts +++ b/packages/backend/src/core/chart/charts/per-user-drive.ts @@ -5,12 +5,13 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { DriveFilesRepository } from '@/models/_.js'; import type { MiDriveFile } from '@/models/DriveFile.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/per-user-drive.js'; @@ -25,14 +26,16 @@ export default class PerUserDriveChart extends Chart { // eslint- @Inject(DI.db) private db: DataSource, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.driveFilesRepository) private driveFilesRepository: DriveFilesRepository, - private appLockService: AppLockService, private driveFileEntityService: DriveFileEntityService, private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema, true); } protected async tickMajor(group: string): Promise>> { diff --git a/packages/backend/src/core/chart/charts/per-user-following.ts b/packages/backend/src/core/chart/charts/per-user-following.ts index 588ac638d..cbac5cfb1 100644 --- a/packages/backend/src/core/chart/charts/per-user-following.ts +++ b/packages/backend/src/core/chart/charts/per-user-following.ts @@ -5,12 +5,13 @@ import { Injectable, Inject } from '@nestjs/common'; import { Not, IsNull, DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { MiUser } from '@/models/User.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import { UserEntityService } from '@/core/entities/UserEntityService.js'; import type { FollowingsRepository } from '@/models/_.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/per-user-following.js'; @@ -25,14 +26,16 @@ export default class PerUserFollowingChart extends Chart { // esl @Inject(DI.db) private db: DataSource, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.followingsRepository) private followingsRepository: FollowingsRepository, - private appLockService: AppLockService, private userEntityService: UserEntityService, private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema, true); } protected async tickMajor(group: string): Promise>> { diff --git a/packages/backend/src/core/chart/charts/per-user-notes.ts b/packages/backend/src/core/chart/charts/per-user-notes.ts index e4900772b..e66dcd974 100644 --- a/packages/backend/src/core/chart/charts/per-user-notes.ts +++ b/packages/backend/src/core/chart/charts/per-user-notes.ts @@ -5,12 +5,13 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { MiUser } from '@/models/User.js'; import type { MiNote } from '@/models/Note.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import type { NotesRepository } from '@/models/_.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/per-user-notes.js'; @@ -25,13 +26,15 @@ export default class PerUserNotesChart extends Chart { // eslint- @Inject(DI.db) private db: DataSource, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.notesRepository) private notesRepository: NotesRepository, - private appLockService: AppLockService, private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema, true); } protected async tickMajor(group: string): Promise>> { diff --git a/packages/backend/src/core/chart/charts/per-user-pv.ts b/packages/backend/src/core/chart/charts/per-user-pv.ts index 3ad90b090..6d498c469 100644 --- a/packages/backend/src/core/chart/charts/per-user-pv.ts +++ b/packages/backend/src/core/chart/charts/per-user-pv.ts @@ -5,11 +5,12 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { MiUser } from '@/models/User.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { addTime, dateUTC, subtractTime } from '@/misc/prelude/time.js'; import { DI } from '@/di-symbols.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/per-user-pv.js'; @@ -24,10 +25,12 @@ export default class PerUserPvChart extends Chart { // eslint-dis @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema, true); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/per-user-reactions.ts b/packages/backend/src/core/chart/charts/per-user-reactions.ts index c29c4d287..a07945710 100644 --- a/packages/backend/src/core/chart/charts/per-user-reactions.ts +++ b/packages/backend/src/core/chart/charts/per-user-reactions.ts @@ -5,12 +5,13 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { MiUser } from '@/models/User.js'; import type { MiNote } from '@/models/Note.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import { UserEntityService } from '@/core/entities/UserEntityService.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/per-user-reactions.js'; @@ -25,11 +26,13 @@ export default class PerUserReactionsChart extends Chart { // esl @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + private userEntityService: UserEntityService, private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema, true); } protected async tickMajor(group: string): Promise>> { diff --git a/packages/backend/src/core/chart/charts/test-grouped.ts b/packages/backend/src/core/chart/charts/test-grouped.ts index 7a2844f4e..7492e5914 100644 --- a/packages/backend/src/core/chart/charts/test-grouped.ts +++ b/packages/backend/src/core/chart/charts/test-grouped.ts @@ -5,10 +5,11 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; -import { AppLockService } from '@/core/AppLockService.js'; +import * as Redis from 'ioredis'; import { DI } from '@/di-symbols.js'; import Logger from '@/logger.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { name, schema } from './entities/test-grouped.js'; import type { KVs } from '../core.js'; @@ -24,10 +25,12 @@ export default class TestGroupedChart extends Chart { // eslint-d @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + logger: Logger, ) { - super(db, (k) => appLockService.getChartInsertLock(k), logger, name, schema, true); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), logger, name, schema, true); } protected async tickMajor(group: string): Promise>> { diff --git a/packages/backend/src/core/chart/charts/test-intersection.ts b/packages/backend/src/core/chart/charts/test-intersection.ts index b8d0556c9..cf96622d1 100644 --- a/packages/backend/src/core/chart/charts/test-intersection.ts +++ b/packages/backend/src/core/chart/charts/test-intersection.ts @@ -5,10 +5,11 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; -import { AppLockService } from '@/core/AppLockService.js'; +import * as Redis from 'ioredis'; import { DI } from '@/di-symbols.js'; import Logger from '@/logger.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { name, schema } from './entities/test-intersection.js'; import type { KVs } from '../core.js'; @@ -22,10 +23,12 @@ export default class TestIntersectionChart extends Chart { // esl @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + logger: Logger, ) { - super(db, (k) => appLockService.getChartInsertLock(k), logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/test-unique.ts b/packages/backend/src/core/chart/charts/test-unique.ts index f94e00805..7c8b651b3 100644 --- a/packages/backend/src/core/chart/charts/test-unique.ts +++ b/packages/backend/src/core/chart/charts/test-unique.ts @@ -5,10 +5,11 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; -import { AppLockService } from '@/core/AppLockService.js'; +import * as Redis from 'ioredis'; import { DI } from '@/di-symbols.js'; import Logger from '@/logger.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { name, schema } from './entities/test-unique.js'; import type { KVs } from '../core.js'; @@ -22,10 +23,12 @@ export default class TestUniqueChart extends Chart { // eslint-di @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + logger: Logger, ) { - super(db, (k) => appLockService.getChartInsertLock(k), logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/test.ts b/packages/backend/src/core/chart/charts/test.ts index a90dc8f99..4dee2ccef 100644 --- a/packages/backend/src/core/chart/charts/test.ts +++ b/packages/backend/src/core/chart/charts/test.ts @@ -5,10 +5,11 @@ import { Injectable, Inject } from '@nestjs/common'; import { DataSource } from 'typeorm'; -import { AppLockService } from '@/core/AppLockService.js'; +import * as Redis from 'ioredis'; import { DI } from '@/di-symbols.js'; import Logger from '@/logger.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { name, schema } from './entities/test.js'; import type { KVs } from '../core.js'; @@ -24,10 +25,12 @@ export default class TestChart extends Chart { // eslint-disable- @Inject(DI.db) private db: DataSource, - private appLockService: AppLockService, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + logger: Logger, ) { - super(db, (k) => appLockService.getChartInsertLock(k), logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/core/chart/charts/users.ts b/packages/backend/src/core/chart/charts/users.ts index d148fc629..0c7c95f42 100644 --- a/packages/backend/src/core/chart/charts/users.ts +++ b/packages/backend/src/core/chart/charts/users.ts @@ -5,12 +5,13 @@ import { Injectable, Inject } from '@nestjs/common'; import { Not, IsNull, DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import type { MiUser } from '@/models/User.js'; -import { AppLockService } from '@/core/AppLockService.js'; import { DI } from '@/di-symbols.js'; import { UserEntityService } from '@/core/entities/UserEntityService.js'; import type { UsersRepository } from '@/models/_.js'; import { bindThis } from '@/decorators.js'; +import { acquireChartInsertLock } from '@/misc/distributed-lock.js'; import Chart from '../core.js'; import { ChartLoggerService } from '../ChartLoggerService.js'; import { name, schema } from './entities/users.js'; @@ -25,14 +26,16 @@ export default class UsersChart extends Chart { // eslint-disable @Inject(DI.db) private db: DataSource, + @Inject(DI.redisForTimelines) + private redisForTimelines: Redis.Redis, + @Inject(DI.usersRepository) private usersRepository: UsersRepository, - private appLockService: AppLockService, private userEntityService: UserEntityService, private chartLoggerService: ChartLoggerService, ) { - super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema); + super(db, (k) => acquireChartInsertLock(redisForTimelines, k), chartLoggerService.logger, name, schema); } protected async tickMajor(): Promise>> { diff --git a/packages/backend/src/misc/distributed-lock.ts b/packages/backend/src/misc/distributed-lock.ts new file mode 100644 index 000000000..0d7dfb159 --- /dev/null +++ b/packages/backend/src/misc/distributed-lock.ts @@ -0,0 +1,44 @@ +import * as Redis from 'ioredis'; + +export async function acquireDistributedLock( + redis: Redis.Redis, + name: string, + timeout: number, + maxRetries: number, + retryInterval: number, +): Promise<() => Promise> { + const lockKey = `lock:${name}`; + const identifier = Math.random().toString(36).slice(2); + + let retries = 0; + while (retries < maxRetries) { + const result = await redis.set(lockKey, identifier, 'PX', timeout, 'NX'); + if (result === 'OK') { + return async () => { + const currentIdentifier = await redis.get(lockKey); + if (currentIdentifier === identifier) { + await redis.del(lockKey); + } + }; + } + + await new Promise(resolve => setTimeout(resolve, retryInterval)); + retries++; + } + + throw new Error(`Failed to acquire lock ${name}`); +} + +export function acquireApObjectLock( + redis: Redis.Redis, + uri: string, +): Promise<() => Promise> { + return acquireDistributedLock(redis, `ap-object:${uri}`, 30 * 1000, 600, 100); +} + +export function acquireChartInsertLock( + redis: Redis.Redis, + name: string, +): Promise<() => Promise> { + return acquireDistributedLock(redis, `chart-insert:${name}`, 30 * 1000, 120, 500); +} diff --git a/packages/backend/test/unit/chart.ts b/packages/backend/test/unit/chart.ts index d54f5f431..ccdb9a33c 100644 --- a/packages/backend/test/unit/chart.ts +++ b/packages/backend/test/unit/chart.ts @@ -9,6 +9,7 @@ import * as assert from 'assert'; import { jest } from '@jest/globals'; import * as lolex from '@sinonjs/fake-timers'; import { DataSource } from 'typeorm'; +import * as Redis from 'ioredis'; import TestChart from '@/core/chart/charts/test.js'; import TestGroupedChart from '@/core/chart/charts/test-grouped.js'; import TestUniqueChart from '@/core/chart/charts/test-unique.js'; @@ -18,16 +19,16 @@ import { entity as TestGroupedChartEntity } from '@/core/chart/charts/entities/t import { entity as TestUniqueChartEntity } from '@/core/chart/charts/entities/test-unique.js'; import { entity as TestIntersectionChartEntity } from '@/core/chart/charts/entities/test-intersection.js'; import { loadConfig } from '@/config.js'; -import type { AppLockService } from '@/core/AppLockService.js'; import { coreLogger } from '@/logger.js'; describe('Chart', () => { const config = loadConfig(); - const appLockService = { - getChartInsertLock: () => () => Promise.resolve(() => {}), - } as unknown as jest.Mocked; let db: DataSource | undefined; + let redisForTimelines = { + set: () => Promise.resolve('OK'), + get: () => Promise.resolve(null), + } as unknown as jest.Mocked; let testChart: TestChart; let testGroupedChart: TestGroupedChart; @@ -64,10 +65,10 @@ describe('Chart', () => { await db.initialize(); const logger = coreLogger.createSubLogger('chart'); // TODO: モックにする - testChart = new TestChart(db, appLockService, logger); - testGroupedChart = new TestGroupedChart(db, appLockService, logger); - testUniqueChart = new TestUniqueChart(db, appLockService, logger); - testIntersectionChart = new TestIntersectionChart(db, appLockService, logger); + testChart = new TestChart(db, redisForTimelines, logger); + testGroupedChart = new TestGroupedChart(db, redisForTimelines, logger); + testUniqueChart = new TestUniqueChart(db, redisForTimelines, logger); + testIntersectionChart = new TestIntersectionChart(db, redisForTimelines, logger); clock = lolex.install({ now: new Date(Date.UTC(2000, 0, 1, 0, 0, 0)), diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 751555bf7..8b2e91116 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -41,7 +41,7 @@ "chartjs-chart-matrix": "2.0.1", "chartjs-plugin-gradient": "0.6.1", "chartjs-plugin-zoom": "2.2.0", - "chromatic": "11.22.2", + "chromatic": "11.23.0", "compare-versions": "6.1.1", "cropperjs": "2.0.0-rc.0", "date-fns": "4.1.0", @@ -61,8 +61,8 @@ "punycode.js": "2.3.1", "rollup": "4.30.1", "sanitize-html": "2.14.0", - "sass": "1.83.1", - "shiki": "1.26.2", + "sass": "1.83.4", + "shiki": "1.27.0", "strict-event-emitter-types": "2.0.0", "textarea-caret": "3.1.0", "three": "0.172.0", @@ -105,7 +105,7 @@ "@types/estree": "1.0.6", "@types/matter-js": "0.19.8", "@types/micromatch": "4.0.9", - "@types/node": "22.10.5", + "@types/node": "22.10.6", "@types/punycode.js": "npm:@types/punycode@2.1.4", "@types/sanitize-html": "2.13.0", "@types/three": "0.172.0", @@ -132,7 +132,7 @@ "prettier": "3.4.2", "react": "19.0.0", "react-dom": "19.0.0", - "start-server-and-test": "2.0.9", + "start-server-and-test": "2.0.10", "storybook": "8.4.7", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "vite-plugin-turbosnap": "1.0.3", diff --git a/packages/frontend/src/pages/sso.vue b/packages/frontend/src/pages/sso.vue index 13e9fc356..31022211e 100644 --- a/packages/frontend/src/pages/sso.vue +++ b/packages/frontend/src/pages/sso.vue @@ -19,7 +19,7 @@ import MkAnimBg from '@/components/MkAnimBg.vue'; import { definePageMetadata } from '@/scripts/page-metadata.js'; import MkAuthConfirm from '@/components/MkAuthConfirm.vue'; import { nextTick, onMounted, useTemplateRef } from "vue"; -import { $i } from "@/account.js"; +import { $i } from '@/account.js'; const transactionIdMeta = document.querySelector('meta[name="misskey:sso:transaction-id"]'); if (transactionIdMeta) { diff --git a/packages/frontend/src/ui/_common_/navbar-for-mobile.vue b/packages/frontend/src/ui/_common_/navbar-for-mobile.vue index 3f4e5bad6..f53eccc0a 100644 --- a/packages/frontend/src/ui/_common_/navbar-for-mobile.vue +++ b/packages/frontend/src/ui/_common_/navbar-for-mobile.vue @@ -58,7 +58,7 @@ import { $i, openAccountMenu as openAccountMenu_ } from '@/account.js'; import { defaultStore } from '@/store.js'; import { i18n } from '@/i18n.js'; import { instance } from '@/instance.js'; -import { miLocalStorage } from "@/local-storage.js"; +import { miLocalStorage } from '@/local-storage.js'; const kawaiiMode = miLocalStorage.getItem('kawaii') === 'true'; const menu = toRef(defaultStore.state, 'menu'); diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json index aad1ba07f..dbde67029 100644 --- a/packages/misskey-bubble-game/package.json +++ b/packages/misskey-bubble-game/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@misskey-dev/eslint-plugin": "1.0.0", "@types/matter-js": "0.19.8", - "@types/node": "22.10.5", + "@types/node": "22.10.6", "@types/seedrandom": "3.0.8", "@typescript-eslint/eslint-plugin": "7.10.0", "@typescript-eslint/parser": "7.10.0", diff --git a/packages/misskey-js/generator/package.json b/packages/misskey-js/generator/package.json index 707f6997d..99fe4bd1b 100644 --- a/packages/misskey-js/generator/package.json +++ b/packages/misskey-js/generator/package.json @@ -9,7 +9,7 @@ "devDependencies": { "@misskey-dev/eslint-plugin": "1.0.0", "@readme/openapi-parser": "2.6.0", - "@types/node": "22.10.5", + "@types/node": "22.10.6", "@typescript-eslint/eslint-plugin": "7.10.0", "@typescript-eslint/parser": "7.10.0", "eslint": "8.57.1", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 621cdab4a..10275cdd5 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -39,7 +39,7 @@ "@misskey-dev/eslint-plugin": "1.0.0", "@swc/jest": "0.2.37", "@types/jest": "29.5.14", - "@types/node": "22.10.5", + "@types/node": "22.10.6", "@typescript-eslint/eslint-plugin": "7.10.0", "@typescript-eslint/parser": "7.10.0", "eslint": "8.57.1", diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json index 25faa667a..a84190d9e 100644 --- a/packages/misskey-reversi/package.json +++ b/packages/misskey-reversi/package.json @@ -25,7 +25,7 @@ }, "devDependencies": { "@misskey-dev/eslint-plugin": "1.0.0", - "@types/node": "22.10.5", + "@types/node": "22.10.6", "@typescript-eslint/eslint-plugin": "7.10.0", "@typescript-eslint/parser": "7.10.0", "eslint": "8.57.1", diff --git a/packages/sw/package.json b/packages/sw/package.json index ca47d8876..156a66acd 100644 --- a/packages/sw/package.json +++ b/packages/sw/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@misskey-dev/eslint-plugin": "1.0.0", - "@types/serviceworker": "0.0.111", + "@types/serviceworker": "0.0.112", "@typescript-eslint/parser": "7.10.0", "eslint": "8.57.1", "eslint-plugin-import": "2.31.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b9130b76..a785d48cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,7 +24,7 @@ importers: dependencies: cssnano: specifier: 7.0.6 - version: 7.0.6(postcss@8.4.49) + version: 7.0.6(postcss@8.5.1) execa: specifier: 9.5.2 version: 9.5.2 @@ -32,8 +32,8 @@ importers: specifier: 4.1.0 version: 4.1.0 postcss: - specifier: 8.4.49 - version: 8.4.49 + specifier: 8.5.1 + version: 8.5.1 terser: specifier: 5.37.0 version: 5.37.0 @@ -46,8 +46,8 @@ importers: version: 4.22.0(encoding@0.1.13) devDependencies: '@types/node': - specifier: 22.10.5 - version: 22.10.5 + specifier: 22.10.6 + version: 22.10.6 '@typescript-eslint/eslint-plugin': specifier: 7.10.0 version: 7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) @@ -67,8 +67,8 @@ importers: specifier: 2.0.0 version: 2.0.0 start-server-and-test: - specifier: 2.0.9 - version: 2.0.9 + specifier: 2.0.10 + version: 2.0.10 packages/backend: dependencies: @@ -184,8 +184,8 @@ importers: specifier: 1.20.3 version: 1.20.3 bullmq: - specifier: 5.34.9 - version: 5.34.9 + specifier: 5.34.10 + version: 5.34.10 cacheable-lookup: specifier: 7.0.0 version: 7.0.0 @@ -280,8 +280,8 @@ importers: specifier: 11.1.0 version: 11.1.0 meilisearch: - specifier: 0.47.0 - version: 0.47.0 + specifier: 0.48.0 + version: 0.48.0 mfm-js: specifier: 0.24.0 version: 0.24.0 @@ -375,9 +375,6 @@ importers: re2: specifier: 1.21.4 version: 1.21.4 - redis-lock: - specifier: 0.1.4 - version: 0.1.4 reflect-metadata: specifier: 0.2.2 version: 0.2.2 @@ -594,8 +591,8 @@ importers: specifier: 0.7.34 version: 0.7.34 '@types/node': - specifier: 22.10.5 - version: 22.10.5 + specifier: 22.10.6 + version: 22.10.6 '@types/node-forge': specifier: 1.3.11 version: 1.3.11 @@ -688,7 +685,7 @@ importers: version: 9.0.0 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.10.5) + version: 29.7.0(@types/node@22.10.6) jest-mock: specifier: 29.7.0 version: 29.7.0 @@ -742,7 +739,7 @@ importers: version: 15.1.1 '@vitejs/plugin-vue': specifier: 5.2.1 - version: 5.2.1(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)) + version: 5.2.1(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)) '@vue/compiler-sfc': specifier: 3.5.13 version: 3.5.13 @@ -777,8 +774,8 @@ importers: specifier: 2.2.0 version: 2.2.0(chart.js@4.4.7) chromatic: - specifier: 11.22.2 - version: 11.22.2 + specifier: 11.23.0 + version: 11.23.0 compare-versions: specifier: 6.1.1 version: 6.1.1 @@ -837,11 +834,11 @@ importers: specifier: 2.14.0 version: 2.14.0 sass: - specifier: 1.83.1 - version: 1.83.1 + specifier: 1.83.4 + version: 1.83.4 shiki: - specifier: 1.26.2 - version: 1.26.2 + specifier: 1.27.0 + version: 1.27.0 strict-event-emitter-types: specifier: 2.0.0 version: 2.0.0 @@ -874,7 +871,7 @@ importers: version: 1.13.1(vue@3.5.13(typescript@5.7.3)) vite: specifier: 6.0.7 - version: 6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2) + version: 6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2) vue: specifier: 3.5.13 version: 3.5.13(typescript@5.7.3) @@ -899,7 +896,7 @@ importers: version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-essentials': specifier: 8.4.7 - version: 8.4.7(@types/react@19.0.6)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(@types/react@19.0.7)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-interactions': specifier: 8.4.7 version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) @@ -932,7 +929,7 @@ importers: version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.3) '@storybook/react-vite': specifier: 8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.30.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2)) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.30.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2)) '@storybook/test': specifier: 8.4.7 version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) @@ -947,7 +944,7 @@ importers: version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.3)) '@storybook/vue3-vite': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3)) '@testing-library/vue': specifier: 8.1.0 version: 8.1.0(@vue/compiler-sfc@3.5.13)(vue@3.5.13(typescript@5.7.3)) @@ -964,8 +961,8 @@ importers: specifier: 4.0.9 version: 4.0.9 '@types/node': - specifier: 22.10.5 - version: 22.10.5 + specifier: 22.10.6 + version: 22.10.6 '@types/punycode.js': specifier: npm:@types/punycode@2.1.4 version: '@types/punycode@2.1.4' @@ -992,7 +989,7 @@ importers: version: 7.10.0(eslint@8.57.1)(typescript@5.7.3) '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(vitest@2.1.8(@types/node@22.10.5)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(sass@1.83.1)(terser@5.37.0)) + version: 2.1.8(vitest@2.1.8(@types/node@22.10.6)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0)) '@vue/runtime-core': specifier: 3.5.13 version: 3.5.13 @@ -1028,10 +1025,10 @@ importers: version: 4.0.8 msw: specifier: 2.7.0 - version: 2.7.0(@types/node@22.10.5)(typescript@5.7.3) + version: 2.7.0(@types/node@22.10.6)(typescript@5.7.3) msw-storybook-addon: specifier: 2.0.4 - version: 2.0.4(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3)) + version: 2.0.4(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3)) nodemon: specifier: 3.1.9 version: 3.1.9 @@ -1045,8 +1042,8 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) start-server-and-test: - specifier: 2.0.9 - version: 2.0.9 + specifier: 2.0.10 + version: 2.0.10 storybook: specifier: 8.4.7 version: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) @@ -1058,10 +1055,10 @@ importers: version: 1.0.3 vitest: specifier: 2.1.8 - version: 2.1.8(@types/node@22.10.5)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(sass@1.83.1)(terser@5.37.0) + version: 2.1.8(@types/node@22.10.6)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0) vitest-fetch-mock: specifier: 0.3.0 - version: 0.3.0(encoding@0.1.13)(vitest@2.1.8(@types/node@22.10.5)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(sass@1.83.1)(terser@5.37.0)) + version: 0.3.0(encoding@0.1.13)(vitest@2.1.8(@types/node@22.10.6)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0)) vue-component-type-helpers: specifier: 2.2.0 version: 2.2.0 @@ -1097,8 +1094,8 @@ importers: specifier: 0.19.8 version: 0.19.8 '@types/node': - specifier: 22.10.5 - version: 22.10.5 + specifier: 22.10.6 + version: 22.10.6 '@types/seedrandom': specifier: 3.0.8 version: 3.0.8 @@ -1135,7 +1132,7 @@ importers: devDependencies: '@microsoft/api-extractor': specifier: 7.49.1 - version: 7.49.1(@types/node@22.10.5) + version: 7.49.1(@types/node@22.10.6) '@misskey-dev/eslint-plugin': specifier: 1.0.0 version: 1.0.0(@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) @@ -1146,8 +1143,8 @@ importers: specifier: 29.5.14 version: 29.5.14 '@types/node': - specifier: 22.10.5 - version: 22.10.5 + specifier: 22.10.6 + version: 22.10.6 '@typescript-eslint/eslint-plugin': specifier: 7.10.0 version: 7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) @@ -1159,7 +1156,7 @@ importers: version: 8.57.1 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.10.5) + version: 29.7.0(@types/node@22.10.6) jest-fetch-mock: specifier: 3.0.3 version: 3.0.3(encoding@0.1.13) @@ -1191,8 +1188,8 @@ importers: specifier: 2.6.0 version: 2.6.0(openapi-types@12.1.3) '@types/node': - specifier: 22.10.5 - version: 22.10.5 + specifier: 22.10.6 + version: 22.10.6 '@typescript-eslint/eslint-plugin': specifier: 7.10.0 version: 7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) @@ -1234,8 +1231,8 @@ importers: specifier: 1.0.0 version: 1.0.0(@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) '@types/node': - specifier: 22.10.5 - version: 22.10.5 + specifier: 22.10.6 + version: 22.10.6 '@typescript-eslint/eslint-plugin': specifier: 7.10.0 version: 7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) @@ -1268,8 +1265,8 @@ importers: specifier: 1.0.0 version: 1.0.0(@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1))(eslint@8.57.1) '@types/serviceworker': - specifier: 0.0.111 - version: 0.0.111 + specifier: 0.0.112 + version: 0.0.112 '@typescript-eslint/parser': specifier: 7.10.0 version: 7.10.0(eslint@8.57.1)(typescript@5.7.3) @@ -2148,14 +2145,14 @@ packages: cpu: [x64] os: [win32] - '@inquirer/confirm@5.1.2': - resolution: {integrity: sha512-VKgaKxw2I3cu2smedeMFyxuYyI+HABlFY1Px4j8NueA7xDskKAo9hxEQemTpp1Fu4OiTtOCgU4eK91BVuBKH3g==} + '@inquirer/confirm@5.1.3': + resolution: {integrity: sha512-fuF9laMmHoOgWapF9h9hv6opA5WvmGFHsTYGCmuFxcghIhEhb3dN0CdQR4BUMqa2H506NCj8cGX4jwMsE4t6dA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' - '@inquirer/core@10.1.3': - resolution: {integrity: sha512-+7/dCYwDku2xfcWJWX6Urxb8aRz6d0K+4lRgIBM08ktE84dm++RPROgnVfWq4hLK5FVu/O4rbO9HnJtaz3pt2w==} + '@inquirer/core@10.1.4': + resolution: {integrity: sha512-5y4/PUJVnRb4bwWY67KLdebWOhOc7xj5IP2J80oWXa64mVag24rwQ1VAdnj7/eDY/odhguW0zQ1Mp1pj6fO/2w==} engines: {node: '>=18'} '@inquirer/figures@1.0.9': @@ -2930,23 +2927,23 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/core@1.26.2': - resolution: {integrity: sha512-ORyu3MrY7dCC7FDLDsFSkBM9b/AT9/Y8rH+UQ07Rtek48pp0ZhQOMPTKolqszP4bBCas6FqTZQYt18BBamVl/g==} + '@shikijs/core@1.27.0': + resolution: {integrity: sha512-2RkIwaXVWxJQQw8JvqikTVe4gBxS3elH3qF3b7Ews1KdJc+TH9/nsVEftrtPn0bLOkdlMaGj5H2RBHpfWmRIcA==} - '@shikijs/engine-javascript@1.26.2': - resolution: {integrity: sha512-ngkIu9swLVo9Zt5QBtz5Sk08vmPcwuj01r7pPK/Zjmo2U2WyKMK4WMUMmkdQiUacdcLth0zt8u1onp4zhkFXKQ==} + '@shikijs/engine-javascript@1.27.0': + resolution: {integrity: sha512-1nzz37go+wb6uR97QSRtU4GEwx99efuucB6QI4R682wmPbti6LeWe5VcMNy8LJJt02GEYcZeJK6Lvq8YXBVNXA==} - '@shikijs/engine-oniguruma@1.26.2': - resolution: {integrity: sha512-mlN7Qrs+w60nKrd7at7XkXSwz6728Pe34taDmHrG6LRHjzCqQ+ysg+/AT6/D2LMk0s2lsr71DjpI73430QP4/w==} + '@shikijs/engine-oniguruma@1.27.0': + resolution: {integrity: sha512-x1XMJvQuToX2KhESav2cnaTFDEwpJ1bcczaXy8wlRWhPVVAGR/MxlWnJbhHFe+ETerQgdpLZN8l+EgO0rVfEFQ==} - '@shikijs/langs@1.26.2': - resolution: {integrity: sha512-o5cdPycB2Kw3IgncHxWopWPiTkjAj7dG01fLkkUyj3glb5ftxL/Opecq9F54opMlrgXy7ZIqDERvFLlUzsCOuA==} + '@shikijs/langs@1.27.0': + resolution: {integrity: sha512-6fBE0OL17XGYlNj8IuHfKtTALLk6+CVAXw8Rj2y/K8NP646/hows9+XwzIFcvFo3wZ0fPAcPKQ9pwG6a1FBevw==} - '@shikijs/themes@1.26.2': - resolution: {integrity: sha512-y4Pn6PM5mODz/e3yF6jAUG7WLKJzqL2tJ5qMJCUkMUB1VRgtQVvoa1cHh7NScryGXyrYGJ8nPnRDhdv2rw0xpA==} + '@shikijs/themes@1.27.0': + resolution: {integrity: sha512-L21LFq8hdsrBUXLh0fxKRURwE1brSlofK3Onutpwk71/EddfPqv60PG+Cg/KawPi8B04Mwp66EWw1shQjcYfBQ==} - '@shikijs/types@1.26.2': - resolution: {integrity: sha512-PO2jucx2FIdlLBPYbIUlMtWSLs5ulcRcuV93cR3T65lkK5SJP4MGBRt9kmWGXiQc0f7+FHj/0BEawditZcI/fQ==} + '@shikijs/types@1.27.0': + resolution: {integrity: sha512-oOJdIeOnGo+hbM7MH+Ejpksse2ASex4DVHdvBoKyY3+26GEzG9PwM85BeXNGxUZuVxtVKo43sZl0qtJs/K2Zow==} '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} @@ -3790,8 +3787,8 @@ packages: '@types/node@20.17.12': resolution: {integrity: sha512-vo/wmBgMIiEA23A/knMfn/cf37VnuF52nZh5ZoW0GWt4e4sxNquibrMRJ7UQsA06+MBx9r/H1jsI9grYjQCQlw==} - '@types/node@22.10.5': - resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} + '@types/node@22.10.6': + resolution: {integrity: sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==} '@types/nodemailer@6.4.17': resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} @@ -3829,8 +3826,8 @@ packages: '@types/qrcode@1.5.5': resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} - '@types/qs@6.9.17': - resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} '@types/random-seed@0.3.5': resolution: {integrity: sha512-CftxcDPAHgs0SLHU2dt+ZlDPJfGqLW3sZlC/ATr5vJDSe5tRLeOne7HMvCOJnFyF8e1U41wqzs3h6AMC613xtA==} @@ -3841,8 +3838,8 @@ packages: '@types/ratelimiter@3.4.6': resolution: {integrity: sha512-Bv6WLSXPGLVsBjkizXtn+ef78R92e36/DFQo2wXPTHtp1cYXF6rCULMqf9WcZPAtyMZMvQAtIPeYMA1xAyxghw==} - '@types/react@19.0.6': - resolution: {integrity: sha512-gIlMztcTeDgXCUj0vCBOqEuSEhX//63fW9SZtCJ+agxoQTOklwDfiEMlTWn4mR/C/UK5VHlpwsCsOyf7/hc4lw==} + '@types/react@19.0.7': + resolution: {integrity: sha512-MoFsEJKkAtZCrC1r6CM8U22GzhG7u2Wir8ons/aCKH6MBdD1ibV24zOSSkdZVUKqN5i396zG5VKLYZ3yaUZdLA==} '@types/readdir-glob@1.1.5': resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} @@ -3871,8 +3868,8 @@ packages: '@types/serve-static@1.15.7': resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - '@types/serviceworker@0.0.111': - resolution: {integrity: sha512-EuvrNgu5oq8cB+TigpmsF+pUY2/oYkwqCEgadICvPSaoUnDSHjs33QwhQuBI2A2pJ+6HcTlOgVSFjlVm/lY0yg==} + '@types/serviceworker@0.0.112': + resolution: {integrity: sha512-L/OmJLuGUcFyuGfW9NlNYOrXqhsnRXhmC05uJ0Q7EjSdOcPIi44Lz3e5ReSs57myuAvAh1t7B70JQ56eterhDg==} '@types/simple-oauth2@5.0.7': resolution: {integrity: sha512-8JbWVJbiTSBQP/7eiyGKyXWAqp3dKQZpaA+pdW16FCi32ujkzRMG8JfjoAzdWt6W8U591ZNdHcPtP2D7ILTKuA==} @@ -3925,8 +3922,8 @@ packages: '@types/web-push@3.6.4': resolution: {integrity: sha512-GnJmSr40H3RAnj0s34FNTcJi1hmWFV5KXugE0mYWnYhgTAHLJ/dJKAwDmvPJYMke0RplY2XE9LnM4hqSqKIjhQ==} - '@types/webxr@0.5.20': - resolution: {integrity: sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==} + '@types/webxr@0.5.21': + resolution: {integrity: sha512-geZIAtLzjGmgY2JUi6VxXdCrTb99A7yP49lxLr2Nm/uIK0PkkxcEi4OGhoGDO4pxCf3JwGz2GiJL2Ej4K2bKaA==} '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} @@ -4592,8 +4589,8 @@ packages: resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} - bullmq@5.34.9: - resolution: {integrity: sha512-olCiFMy9o+pUpBcb/RguS5uUwbma+E80cYgDcG5p7ksvWpoyoEmxq5FOUQcobeTQwO7R9PEIvVsel5yewt0mlw==} + bullmq@5.34.10: + resolution: {integrity: sha512-ia6EzpQm1ZPq6GUBSLyfvzJrhdBTd1f3Gn2g9pFtLX4hBOob6QHmcmBzGgPlSCyr/i2Qfe4OdjS21bRd02srbw==} buraha@0.0.1: resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==} @@ -4771,8 +4768,8 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - chromatic@11.22.2: - resolution: {integrity: sha512-Z7+9hD1yp1fUm34XX1wojIco0lQlXOVYhzDSE8v1ZU6qLD2r4N6UHKD+N+XY1Jj+gpsDFWYMTpSnDfcHZf5mhg==} + chromatic@11.23.0: + resolution: {integrity: sha512-9LgsRyLe9FAGpWh2p3A2dec1jrP94+PTVAieQ5mreBAYaqlnmuZ1RC+IIw4WqiSRYmL7WHNBVkuVXVxJk6AUPg==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -5311,8 +5308,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.80: - resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} + electron-to-chromium@1.5.82: + resolution: {integrity: sha512-Zq16uk1hfQhyGx5GpwPAYDwddJuSGhtRhgOA2mCxANYaDT79nAeGnaXogMGng4KqLaJUVnOnuL0+TDop9nLOiA==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -5383,8 +5380,8 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + es-object-atoms@1.1.0: + resolution: {integrity: sha512-Ujz8Al/KfOVR7fkaghAB1WvnLsdYxHDWmfoi2vlA2jZWRg31XhIC1a4B+/I24muD8iSbHxJ1JkrfqmWb65P/Mw==} engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: @@ -7042,8 +7039,8 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - meilisearch@0.47.0: - resolution: {integrity: sha512-Qq+hatuDJ0z5c+szVb0O/uI7Z2jfMUjj8eNB6xPyKp9Og7GVnrOZJRVoDPqGoVY484Iwh+F61y2UreIetda00w==} + meilisearch@0.48.0: + resolution: {integrity: sha512-asxy5MYumbNGyGWeyeM3jCavXmvIY8lVjDv5mcwDqUYZlyW8yvDIijP/zL1L7o22gYe9frHb5j+9XBe+OP242Q==} memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} @@ -8058,8 +8055,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -8397,10 +8394,6 @@ packages: redis-info@3.1.0: resolution: {integrity: sha512-ER4L9Sh/vm63DkIE0bkSjxluQlioBiBgf5w1UuldaW/3vPcecdljVDisZhmnCMvsxHNiARTTDDHGg9cGwTfrKg==} - redis-lock@0.1.4: - resolution: {integrity: sha512-7/+zu86XVQfJVx1nHTzux5reglDiyUCDwmW7TSlvVezfhH2YLc/Rc8NE0ejQG+8/0lwKzm29/u/4+ogKeLosiA==} - engines: {node: '>=0.6'} - redis-parser@3.0.0: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} @@ -8568,8 +8561,8 @@ packages: sanitize-html@2.14.0: resolution: {integrity: sha512-CafX+IUPxZshXqqRaG9ZClSlfPVjSxI0td7n07hk8QO2oO+9JDnlcL8iM8TWeOXOIBFgIOx6zioTzM53AOMn3g==} - sass@1.83.1: - resolution: {integrity: sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==} + sass@1.83.4: + resolution: {integrity: sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==} engines: {node: '>=14.0.0'} hasBin: true @@ -8673,8 +8666,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.26.2: - resolution: {integrity: sha512-iP7u2NA9A6JwRRCkIUREEX2cMhlYV5EBmbbSlfSRvPThwca8HBRbVkWuNWW+kw9+i6BSUZqqG6YeUs5dC2SjZw==} + shiki@1.27.0: + resolution: {integrity: sha512-PdrOqs36vGmftWETJJF6IJAUDS0ERYOYofHCBTHpLTvWLC8E/E6lyh+Xm1lMIZ/sBWT5uJSmri6NNW5ZDglMqQ==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -8902,8 +8895,8 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - start-server-and-test@2.0.9: - resolution: {integrity: sha512-DDceIvc4wdpr+z3Aqkot2QMho8TcUBh5qH0wEHDpEexBTzlheOcmh53d3dExABY4J5C7qS2UbSXqRWLtxpbWIQ==} + start-server-and-test@2.0.10: + resolution: {integrity: sha512-nZphcfcqGqwk74lbZkqSwClkYz+M5ZPGOMgWxNVJrdztPKN96qe6HooRu6L3TpwITn0lKJJdKACqHbJtqythOQ==} engines: {node: '>=16'} hasBin: true @@ -9801,8 +9794,8 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - wait-on@8.0.1: - resolution: {integrity: sha512-1wWQOyR2LVVtaqrcIL2+OM+x7bkpmzVROa0Nf6FryXkS+er5Sa1kzFGjzZRqLnHa3n1rACFLeTwUqE1ETL9Mig==} + wait-on@8.0.2: + resolution: {integrity: sha512-qHlU6AawrgAIHlueGQHQ+ETcPLAauXbnoTKl3RKq20W0T8x0DKVAo5xWIYjHSyvHxQlcYbFdR0jp4T9bDVITFA==} engines: {node: '>=12.0.0'} hasBin: true @@ -11307,16 +11300,16 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true - '@inquirer/confirm@5.1.2(@types/node@22.10.5)': + '@inquirer/confirm@5.1.3(@types/node@22.10.6)': dependencies: - '@inquirer/core': 10.1.3(@types/node@22.10.5) - '@inquirer/type': 3.0.2(@types/node@22.10.5) - '@types/node': 22.10.5 + '@inquirer/core': 10.1.4(@types/node@22.10.6) + '@inquirer/type': 3.0.2(@types/node@22.10.6) + '@types/node': 22.10.6 - '@inquirer/core@10.1.3(@types/node@22.10.5)': + '@inquirer/core@10.1.4(@types/node@22.10.6)': dependencies: '@inquirer/figures': 1.0.9 - '@inquirer/type': 3.0.2(@types/node@22.10.5) + '@inquirer/type': 3.0.2(@types/node@22.10.6) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -11329,9 +11322,9 @@ snapshots: '@inquirer/figures@1.0.9': {} - '@inquirer/type@3.0.2(@types/node@22.10.5)': + '@inquirer/type@3.0.2(@types/node@22.10.6)': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@ioredis/commands@1.2.0': {} @@ -11359,7 +11352,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -11372,14 +11365,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.10.5) + jest-config: 29.7.0(@types/node@22.10.6) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -11408,7 +11401,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -11426,7 +11419,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.10.5 + '@types/node': 22.10.6 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -11448,7 +11441,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.10.5 + '@types/node': 22.10.6 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -11518,15 +11511,15 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2))': dependencies: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.7.3) - vite: 6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2) optionalDependencies: typescript: 5.7.3 @@ -11584,29 +11577,29 @@ snapshots: dependencies: '@mcaptcha/core-glue': 0.1.0-alpha-5 - '@mdx-js/react@3.1.0(@types/react@19.0.6)(react@18.3.1)': + '@mdx-js/react@3.1.0(@types/react@19.0.7)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.0.6 + '@types/react': 19.0.7 react: 18.3.1 - '@microsoft/api-extractor-model@7.30.2(@types/node@22.10.5)': + '@microsoft/api-extractor-model@7.30.2(@types/node@22.10.6)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.2(@types/node@22.10.5) + '@rushstack/node-core-library': 5.10.2(@types/node@22.10.6) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.49.1(@types/node@22.10.5)': + '@microsoft/api-extractor@7.49.1(@types/node@22.10.6)': dependencies: - '@microsoft/api-extractor-model': 7.30.2(@types/node@22.10.5) + '@microsoft/api-extractor-model': 7.30.2(@types/node@22.10.6) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.2(@types/node@22.10.5) + '@rushstack/node-core-library': 5.10.2(@types/node@22.10.6) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.5(@types/node@22.10.5) - '@rushstack/ts-command-line': 4.23.3(@types/node@22.10.5) + '@rushstack/terminal': 0.14.5(@types/node@22.10.6) + '@rushstack/ts-command-line': 4.23.3(@types/node@22.10.6) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -12104,7 +12097,7 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@5.10.2(@types/node@22.10.5)': + '@rushstack/node-core-library@5.10.2(@types/node@22.10.6)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -12115,23 +12108,23 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.14.5(@types/node@22.10.5)': + '@rushstack/terminal@0.14.5(@types/node@22.10.6)': dependencies: - '@rushstack/node-core-library': 5.10.2(@types/node@22.10.5) + '@rushstack/node-core-library': 5.10.2(@types/node@22.10.6) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 - '@rushstack/ts-command-line@4.23.3(@types/node@22.10.5)': + '@rushstack/ts-command-line@4.23.3(@types/node@22.10.6)': dependencies: - '@rushstack/terminal': 0.14.5(@types/node@22.10.5) + '@rushstack/terminal': 0.14.5(@types/node@22.10.6) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -12140,35 +12133,35 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/core@1.26.2': + '@shikijs/core@1.27.0': dependencies: - '@shikijs/engine-javascript': 1.26.2 - '@shikijs/engine-oniguruma': 1.26.2 - '@shikijs/types': 1.26.2 + '@shikijs/engine-javascript': 1.27.0 + '@shikijs/engine-oniguruma': 1.27.0 + '@shikijs/types': 1.27.0 '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.26.2': + '@shikijs/engine-javascript@1.27.0': dependencies: - '@shikijs/types': 1.26.2 + '@shikijs/types': 1.27.0 '@shikijs/vscode-textmate': 10.0.1 oniguruma-to-es: 1.0.0 - '@shikijs/engine-oniguruma@1.26.2': + '@shikijs/engine-oniguruma@1.27.0': dependencies: - '@shikijs/types': 1.26.2 + '@shikijs/types': 1.27.0 '@shikijs/vscode-textmate': 10.0.1 - '@shikijs/langs@1.26.2': + '@shikijs/langs@1.27.0': dependencies: - '@shikijs/types': 1.26.2 + '@shikijs/types': 1.27.0 - '@shikijs/themes@1.26.2': + '@shikijs/themes@1.27.0': dependencies: - '@shikijs/types': 1.26.2 + '@shikijs/types': 1.27.0 - '@shikijs/types@1.26.2': + '@shikijs/types@1.27.0': dependencies: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 @@ -12585,9 +12578,9 @@ snapshots: storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-docs@8.4.7(@types/react@19.0.6)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-docs@8.4.7(@types/react@19.0.7)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - '@mdx-js/react': 3.1.0(@types/react@19.0.6)(react@18.3.1) + '@mdx-js/react': 3.1.0(@types/react@19.0.7)(react@18.3.1) '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) @@ -12598,12 +12591,12 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.4.7(@types/react@19.0.6)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-essentials@8.4.7(@types/react@19.0.7)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/addon-actions': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-controls': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-docs': 8.4.7(@types/react@19.0.6)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-docs': 8.4.7(@types/react@19.0.7)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-measure': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-outline': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) @@ -12693,13 +12686,13 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@storybook/builder-vite@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2))': + '@storybook/builder-vite@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2))': dependencies: '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) browser-assert: 1.2.1 storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - vite: 6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2) '@storybook/components@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: @@ -12776,11 +12769,11 @@ snapshots: react-dom: 19.0.0(react@19.0.0) storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.30.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2))': + '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.30.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.3)(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2)) '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2)) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2)) '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.3) find-up: 5.0.0 magic-string: 0.30.17 @@ -12790,7 +12783,7 @@ snapshots: resolve: 1.22.10 storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) tsconfig-paths: 4.2.0 - vite: 6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2) transitivePeerDependencies: - '@storybook/test' - rollup @@ -12840,15 +12833,15 @@ snapshots: dependencies: storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/vue3-vite@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))': + '@storybook/vue3-vite@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))': dependencies: - '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2)) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2)) '@storybook/vue3': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.3)) find-package-json: 1.2.0 magic-string: 0.30.17 storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) typescript: 5.7.3 - vite: 6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2) vue-component-meta: 2.2.0(typescript@5.7.3) vue-docgen-api: 4.79.2(vue@3.5.13(typescript@5.7.3)) transitivePeerDependencies: @@ -13101,7 +13094,7 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/archiver@6.0.3': dependencies: @@ -13137,7 +13130,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/braces@3.0.5': {} @@ -13153,7 +13146,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/content-disposition@0.5.8': {} @@ -13178,8 +13171,8 @@ snapshots: '@types/express-serve-static-core@5.0.4': dependencies: - '@types/node': 22.10.5 - '@types/qs': 6.9.17 + '@types/node': 22.10.6 + '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13187,16 +13180,16 @@ snapshots: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 5.0.4 - '@types/qs': 6.9.17 + '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 '@types/fluent-ffmpeg@2.1.27': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/hammerjs@2.0.46': {} @@ -13212,7 +13205,7 @@ snapshots: '@types/http-link-header@1.0.7': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/istanbul-lib-coverage@2.0.6': {} @@ -13233,7 +13226,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 @@ -13269,24 +13262,24 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 form-data: 4.0.1 '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/node@20.17.12': dependencies: undici-types: 6.19.8 - '@types/node@22.10.5': + '@types/node@22.10.6': dependencies: undici-types: 6.20.0 '@types/nodemailer@6.4.17': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/normalize-package-data@2.4.4': {} @@ -13297,11 +13290,11 @@ snapshots: '@types/oauth2orize@1.11.5': dependencies: '@types/express': 5.0.0 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/oauth@0.9.6': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/offscreencanvas@2019.3.0': {} @@ -13309,7 +13302,7 @@ snapshots: '@types/pg@8.11.10': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 pg-protocol: 1.7.0 pg-types: 4.0.2 @@ -13321,9 +13314,9 @@ snapshots: '@types/qrcode@1.5.5': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 - '@types/qs@6.9.17': {} + '@types/qs@6.9.18': {} '@types/random-seed@0.3.5': {} @@ -13331,13 +13324,13 @@ snapshots: '@types/ratelimiter@3.4.6': {} - '@types/react@19.0.6': + '@types/react@19.0.7': dependencies: csstype: 3.1.3 '@types/readdir-glob@1.1.5': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/rename@1.0.7': {} @@ -13356,15 +13349,15 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/send': 0.17.4 - '@types/serviceworker@0.0.111': {} + '@types/serviceworker@0.0.112': {} '@types/simple-oauth2@5.0.7': {} @@ -13388,7 +13381,7 @@ snapshots: dependencies: '@tweenjs/tween.js': 23.1.3 '@types/stats.js': 0.17.3 - '@types/webxr': 0.5.20 + '@types/webxr': 0.5.21 '@webgpu/types': 0.1.52 fflate: 0.8.2 meshoptimizer: 0.18.1 @@ -13407,17 +13400,17 @@ snapshots: '@types/vary@1.1.3': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/web-push@3.6.4': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 - '@types/webxr@0.5.20': {} + '@types/webxr@0.5.21': {} '@types/ws@8.5.13': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/yargs-parser@21.0.3': {} @@ -13427,7 +13420,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 optional: true '@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': @@ -13513,12 +13506,12 @@ snapshots: '@ungap/structured-clone@1.2.1': {} - '@vitejs/plugin-vue@5.2.1(vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))': + '@vitejs/plugin-vue@5.2.1(vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.3))': dependencies: - vite: 6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2) vue: 3.5.13(typescript@5.7.3) - '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.5)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(sass@1.83.1)(terser@5.37.0))': + '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.6)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -13532,7 +13525,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.5)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(sass@1.83.1)(terser@5.37.0) + vitest: 2.1.8(@types/node@22.10.6)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0) transitivePeerDependencies: - supports-color @@ -13550,14 +13543,14 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(vite@5.4.11(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0))': + '@vitest/mocker@2.1.8(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(vite@5.4.11(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.7.0(@types/node@22.10.5)(typescript@5.7.3) - vite: 5.4.11(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0) + msw: 2.7.0(@types/node@22.10.6)(typescript@5.7.3) + vite: 5.4.11(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0) '@vitest/pretty-format@2.0.5': dependencies: @@ -13633,7 +13626,7 @@ snapshots: '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.4.49 + postcss: 8.5.1 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': @@ -13972,7 +13965,7 @@ snapshots: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 get-intrinsic: 1.2.7 is-string: 1.1.1 @@ -13984,7 +13977,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 es-shim-unscopables: 1.0.2 array.prototype.flat@1.3.3: @@ -14232,7 +14225,7 @@ snapshots: browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001692 - electron-to-chromium: 1.5.80 + electron-to-chromium: 1.5.82 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -14268,7 +14261,7 @@ snapshots: node-gyp-build: 4.8.4 optional: true - bullmq@5.34.9: + bullmq@5.34.10: dependencies: cron-parser: 4.9.0 ioredis: 5.4.2 @@ -14477,7 +14470,7 @@ snapshots: chownr@2.0.0: {} - chromatic@11.22.2: {} + chromatic@11.23.0: {} ci-info@3.9.0: {} @@ -14664,13 +14657,13 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 - create-jest@29.7.0(@types/node@22.10.5): + create-jest@29.7.0(@types/node@22.10.6): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.10.5) + jest-config: 29.7.0(@types/node@22.10.6) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -14710,9 +14703,9 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-declaration-sorter@7.2.0(postcss@8.4.49): + css-declaration-sorter@7.2.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 css-select@5.1.0: dependencies: @@ -14738,49 +14731,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.4.49): + cssnano-preset-default@7.0.6(postcss@8.5.1): dependencies: browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.4.49) - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 - postcss-calc: 10.1.0(postcss@8.4.49) - postcss-colormin: 7.0.2(postcss@8.4.49) - postcss-convert-values: 7.0.4(postcss@8.4.49) - postcss-discard-comments: 7.0.3(postcss@8.4.49) - postcss-discard-duplicates: 7.0.1(postcss@8.4.49) - postcss-discard-empty: 7.0.0(postcss@8.4.49) - postcss-discard-overridden: 7.0.0(postcss@8.4.49) - postcss-merge-longhand: 7.0.4(postcss@8.4.49) - postcss-merge-rules: 7.0.4(postcss@8.4.49) - postcss-minify-font-values: 7.0.0(postcss@8.4.49) - postcss-minify-gradients: 7.0.0(postcss@8.4.49) - postcss-minify-params: 7.0.2(postcss@8.4.49) - postcss-minify-selectors: 7.0.4(postcss@8.4.49) - postcss-normalize-charset: 7.0.0(postcss@8.4.49) - postcss-normalize-display-values: 7.0.0(postcss@8.4.49) - postcss-normalize-positions: 7.0.0(postcss@8.4.49) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.49) - postcss-normalize-string: 7.0.0(postcss@8.4.49) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.49) - postcss-normalize-unicode: 7.0.2(postcss@8.4.49) - postcss-normalize-url: 7.0.0(postcss@8.4.49) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.49) - postcss-ordered-values: 7.0.1(postcss@8.4.49) - postcss-reduce-initial: 7.0.2(postcss@8.4.49) - postcss-reduce-transforms: 7.0.0(postcss@8.4.49) - postcss-svgo: 7.0.1(postcss@8.4.49) - postcss-unique-selectors: 7.0.3(postcss@8.4.49) + css-declaration-sorter: 7.2.0(postcss@8.5.1) + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 + postcss-calc: 10.1.0(postcss@8.5.1) + postcss-colormin: 7.0.2(postcss@8.5.1) + postcss-convert-values: 7.0.4(postcss@8.5.1) + postcss-discard-comments: 7.0.3(postcss@8.5.1) + postcss-discard-duplicates: 7.0.1(postcss@8.5.1) + postcss-discard-empty: 7.0.0(postcss@8.5.1) + postcss-discard-overridden: 7.0.0(postcss@8.5.1) + postcss-merge-longhand: 7.0.4(postcss@8.5.1) + postcss-merge-rules: 7.0.4(postcss@8.5.1) + postcss-minify-font-values: 7.0.0(postcss@8.5.1) + postcss-minify-gradients: 7.0.0(postcss@8.5.1) + postcss-minify-params: 7.0.2(postcss@8.5.1) + postcss-minify-selectors: 7.0.4(postcss@8.5.1) + postcss-normalize-charset: 7.0.0(postcss@8.5.1) + postcss-normalize-display-values: 7.0.0(postcss@8.5.1) + postcss-normalize-positions: 7.0.0(postcss@8.5.1) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.1) + postcss-normalize-string: 7.0.0(postcss@8.5.1) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.1) + postcss-normalize-unicode: 7.0.2(postcss@8.5.1) + postcss-normalize-url: 7.0.0(postcss@8.5.1) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.1) + postcss-ordered-values: 7.0.1(postcss@8.5.1) + postcss-reduce-initial: 7.0.2(postcss@8.5.1) + postcss-reduce-transforms: 7.0.0(postcss@8.5.1) + postcss-svgo: 7.0.1(postcss@8.5.1) + postcss-unique-selectors: 7.0.3(postcss@8.5.1) - cssnano-utils@5.0.0(postcss@8.4.49): + cssnano-utils@5.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 - cssnano@7.0.6(postcss@8.4.49): + cssnano@7.0.6(postcss@8.5.1): dependencies: - cssnano-preset-default: 7.0.6(postcss@8.4.49) + cssnano-preset-default: 7.0.6(postcss@8.5.1) lilconfig: 3.1.3 - postcss: 8.4.49 + postcss: 8.5.1 csso@5.0.5: dependencies: @@ -15076,7 +15069,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.80: {} + electron-to-chromium@1.5.82: {} emittery@0.13.1: {} @@ -15133,7 +15126,7 @@ snapshots: data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 function.prototype.name: 1.1.8 @@ -15193,7 +15186,7 @@ snapshots: es-module-lexer@1.6.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.1.0: dependencies: es-errors: 1.3.0 @@ -15891,7 +15884,7 @@ snapshots: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 @@ -15904,7 +15897,7 @@ snapshots: get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 get-stream@5.2.0: dependencies: @@ -16555,7 +16548,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -16575,16 +16568,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.10.5): + jest-cli@29.7.0(@types/node@22.10.6): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.10.5) + create-jest: 29.7.0(@types/node@22.10.6) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.10.5) + jest-config: 29.7.0(@types/node@22.10.6) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -16594,7 +16587,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.10.5): + jest-config@29.7.0(@types/node@22.10.6): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -16619,7 +16612,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -16648,7 +16641,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -16665,7 +16658,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.10.5 + '@types/node': 22.10.6 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -16704,7 +16697,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -16739,7 +16732,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -16767,7 +16760,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 chalk: 4.1.2 cjs-module-lexer: 1.4.1 collect-v8-coverage: 1.0.2 @@ -16813,7 +16806,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -16832,7 +16825,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.10.5 + '@types/node': 22.10.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -16846,17 +16839,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.10.5): + jest@29.7.0(@types/node@22.10.6): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.10.5) + jest-cli: 29.7.0(@types/node@22.10.6) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -17332,7 +17325,7 @@ snapshots: media-typer@0.3.0: {} - meilisearch@0.47.0: {} + meilisearch@0.48.0: {} memoizerific@1.11.3: dependencies: @@ -17694,17 +17687,17 @@ snapshots: optionalDependencies: msgpackr-extract: 3.0.3 - msw-storybook-addon@2.0.4(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3)): + msw-storybook-addon@2.0.4(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3)): dependencies: is-node-process: 1.2.0 - msw: 2.7.0(@types/node@22.10.5)(typescript@5.7.3) + msw: 2.7.0(@types/node@22.10.6)(typescript@5.7.3) - msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3): + msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.2(@types/node@22.10.5) + '@inquirer/confirm': 5.1.3(@types/node@22.10.6) '@mswjs/interceptors': 0.37.5 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -17944,7 +17937,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 has-symbols: 1.1.0 object-keys: 1.1.1 @@ -17953,7 +17946,7 @@ snapshots: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 object.groupby@1.0.3: dependencies: @@ -17966,7 +17959,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 obliterator@2.0.5: {} @@ -18290,142 +18283,142 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-calc@10.1.0(postcss@8.4.49): + postcss-calc@10.1.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.4.49): + postcss-colormin@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.4.49): + postcss-convert-values@7.0.4(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.3(postcss@8.4.49): + postcss-discard-comments@7.0.3(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.4.49): + postcss-discard-duplicates@7.0.1(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 - postcss-discard-empty@7.0.0(postcss@8.4.49): + postcss-discard-empty@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 - postcss-discard-overridden@7.0.0(postcss@8.4.49): + postcss-discard-overridden@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 - postcss-merge-longhand@7.0.4(postcss@8.4.49): + postcss-merge-longhand@7.0.4(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.4.49) + stylehacks: 7.0.4(postcss@8.5.1) - postcss-merge-rules@7.0.4(postcss@8.4.49): + postcss-merge-rules@7.0.4(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.4.49): + postcss-minify-font-values@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.49): + postcss-minify-gradients@7.0.0(postcss@8.5.1): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.4.49): + postcss-minify-params@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.4.49): + postcss-minify-selectors@7.0.4(postcss@8.5.1): dependencies: cssesc: 3.0.0 - postcss: 8.4.49 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-normalize-charset@7.0.0(postcss@8.4.49): + postcss-normalize-charset@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 - postcss-normalize-display-values@7.0.0(postcss@8.4.49): + postcss-normalize-display-values@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.49): + postcss-normalize-positions@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.49): + postcss-normalize-repeat-style@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.49): + postcss-normalize-string@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.49): + postcss-normalize-timing-functions@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.4.49): + postcss-normalize-unicode@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.49): + postcss-normalize-url@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.49): + postcss-normalize-whitespace@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.4.49): + postcss-ordered-values@7.0.1(postcss@8.5.1): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.49) - postcss: 8.4.49 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.2(postcss@8.4.49): + postcss-reduce-initial@7.0.2(postcss@8.5.1): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - postcss: 8.4.49 + postcss: 8.5.1 - postcss-reduce-transforms@7.0.0(postcss@8.4.49): + postcss-reduce-transforms@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 postcss-selector-parser@6.1.2: @@ -18438,20 +18431,20 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.49): + postcss-svgo@7.0.1(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.4.49): + postcss-unique-selectors@7.0.3(postcss@8.5.1): dependencies: - postcss: 8.4.49 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss@8.4.49: + postcss@8.5.1: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 @@ -18824,8 +18817,6 @@ snapshots: dependencies: lodash: 4.17.21 - redis-lock@0.1.4: {} - redis-parser@3.0.0: dependencies: redis-errors: 1.2.0 @@ -18838,7 +18829,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 get-intrinsic: 1.2.7 get-proto: 1.0.1 which-builtin-type: 1.2.1 @@ -19047,9 +19038,9 @@ snapshots: htmlparser2: 8.0.2 is-plain-object: 5.0.0 parse-srcset: 1.0.2 - postcss: 8.4.49 + postcss: 8.5.1 - sass@1.83.1: + sass@1.83.4: dependencies: chokidar: 4.0.3 immutable: 5.0.3 @@ -19146,7 +19137,7 @@ snapshots: dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 setimmediate@1.0.5: {} @@ -19189,14 +19180,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.26.2: + shiki@1.27.0: dependencies: - '@shikijs/core': 1.26.2 - '@shikijs/engine-javascript': 1.26.2 - '@shikijs/engine-oniguruma': 1.26.2 - '@shikijs/langs': 1.26.2 - '@shikijs/themes': 1.26.2 - '@shikijs/types': 1.26.2 + '@shikijs/core': 1.27.0 + '@shikijs/engine-javascript': 1.27.0 + '@shikijs/engine-oniguruma': 1.27.0 + '@shikijs/langs': 1.27.0 + '@shikijs/themes': 1.27.0 + '@shikijs/types': 1.27.0 '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 @@ -19426,7 +19417,7 @@ snapshots: standard-as-callback@2.1.0: {} - start-server-and-test@2.0.9: + start-server-and-test@2.0.10: dependencies: arg: 5.0.2 bluebird: 3.7.2 @@ -19435,7 +19426,7 @@ snapshots: execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 - wait-on: 8.0.1(debug@4.4.0) + wait-on: 8.0.2(debug@4.4.0) transitivePeerDependencies: - supports-color @@ -19526,7 +19517,7 @@ snapshots: define-data-property: 1.1.4 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: @@ -19534,13 +19525,13 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.0 string_decoder@1.1.1: dependencies: @@ -19599,10 +19590,10 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 5.3.1 - stylehacks@7.0.4(postcss@8.4.49): + stylehacks@7.0.4(postcss@8.5.1): dependencies: browserslist: 4.24.4 - postcss: 8.4.49 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 supports-color@5.5.0: @@ -20086,13 +20077,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.8(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0): + vite-node@2.1.8(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -20106,40 +20097,40 @@ snapshots: vite-plugin-turbosnap@1.0.3: {} - vite@5.4.11(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0): + vite@5.4.11(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0): dependencies: esbuild: 0.24.2 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 4.30.1 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 fsevents: 2.3.3 - sass: 1.83.1 + sass: 1.83.4 terser: 5.37.0 - vite@6.0.7(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.2): + vite@6.0.7(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.2): dependencies: esbuild: 0.24.2 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 4.30.1 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 fsevents: 2.3.3 - sass: 1.83.1 + sass: 1.83.4 terser: 5.37.0 tsx: 4.19.2 - vitest-fetch-mock@0.3.0(encoding@0.1.13)(vitest@2.1.8(@types/node@22.10.5)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(sass@1.83.1)(terser@5.37.0)): + vitest-fetch-mock@0.3.0(encoding@0.1.13)(vitest@2.1.8(@types/node@22.10.6)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0)): dependencies: cross-fetch: 4.1.0(encoding@0.1.13) - vitest: 2.1.8(@types/node@22.10.5)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(sass@1.83.1)(terser@5.37.0) + vitest: 2.1.8(@types/node@22.10.6)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0) transitivePeerDependencies: - encoding - vitest@2.1.8(@types/node@22.10.5)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(sass@1.83.1)(terser@5.37.0): + vitest@2.1.8(@types/node@22.10.6)(happy-dom@16.5.3)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(sass@1.83.4)(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(msw@2.7.0(@types/node@22.10.5)(typescript@5.7.3))(vite@5.4.11(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0)) + '@vitest/mocker': 2.1.8(msw@2.7.0(@types/node@22.10.6)(typescript@5.7.3))(vite@5.4.11(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -20155,11 +20146,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.10.5)(sass@1.83.1)(terser@5.37.0) + vite: 5.4.11(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0) + vite-node: 2.1.8(@types/node@22.10.6)(sass@1.83.4)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 happy-dom: 16.5.3 jsdom: 26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: @@ -20275,7 +20266,7 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wait-on@8.0.1(debug@4.4.0): + wait-on@8.0.2(debug@4.4.0): dependencies: axios: 1.7.9(debug@4.4.0) joi: 17.13.3