From 1facca1ac59af0da21e85f17ded97b39e179dafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8A=E3=81=95=E3=82=80=E3=81=AE=E3=81=B2=E3=81=A8?= <46447427+samunohito@users.noreply.github.com> Date: Wed, 3 Dec 2025 09:00:37 +0900 Subject: [PATCH 01/63] =?UTF-8?q?enhance(backend):=20=E8=B5=B7=E5=8B=95?= =?UTF-8?q?=E5=89=8D=E3=81=ABconfig=E3=82=92json=E5=8C=96=20(#16923)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * enhance(backend): 起動前にconfigをjson化 * fix * fix * fix * fix * fix * fix CHANGELOG.md * fix * Update CHANGELOG.md * get original --- package.json | 6 +- packages/backend/package.json | 36 ++++++------ packages/backend/scripts/convert_config.js | 56 +++++++++++++++++++ packages/backend/src/config.ts | 9 ++- .../backend/test-federation/compose.a.yml | 4 ++ .../backend/test-federation/compose.b.yml | 4 ++ .../backend/test-federation/compose.tpl.yml | 4 ++ packages/backend/test-federation/compose.yml | 4 ++ pnpm-lock.yaml | 9 +-- 9 files changed, 100 insertions(+), 32 deletions(-) create mode 100644 packages/backend/scripts/convert_config.js diff --git a/package.json b/package.json index 907b6fcb65..212d51cf2b 100644 --- a/package.json +++ b/package.json @@ -27,9 +27,9 @@ "build": "pnpm build-pre && pnpm -r build && pnpm build-assets", "build-storybook": "pnpm --filter frontend build-storybook", "build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json --no-build && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api", - "start": "pnpm check:connect && cd packages/backend && node ./built/boot/entry.js", - "start:inspect": "cd packages/backend && node --inspect ./built/boot/entry.js", - "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && cross-env NODE_ENV=test node ./built/boot/entry.js", + "start": "pnpm check:connect && cd packages/backend && pnpm convert:config && node ./built/boot/entry.js", + "start:inspect": "cd packages/backend && pnpm convert:config && node --inspect ./built/boot/entry.js", + "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && pnpm convert:config && cross-env NODE_ENV=test node ./built/boot/entry.js", "cli": "cd packages/backend && pnpm cli", "init": "pnpm migrate", "migrate": "cd packages/backend && pnpm migrate", diff --git a/packages/backend/package.json b/packages/backend/package.json index dad664d0ca..25d84a1e14 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -7,36 +7,37 @@ "node": "^22.15.0 || ^24.10.0" }, "scripts": { - "start": "node ./built/boot/entry.js", - "start:inspect": "node --inspect ./built/boot/entry.js", - "start:test": "cross-env NODE_ENV=test node ./built/boot/entry.js", - "migrate": "pnpm typeorm migration:run -d ormconfig.js", - "revert": "pnpm typeorm migration:revert -d ormconfig.js", - "cli": "node ./built/boot/cli.js", - "check:connect": "node ./scripts/check_connect.js", + "start": "pnpm convert:config && node ./built/boot/entry.js", + "start:inspect": "pnpm convert:config && node --inspect ./built/boot/entry.js", + "start:test": "pnpm convert:config && cross-env NODE_ENV=test node ./built/boot/entry.js", + "migrate": "pnpm convert:config && pnpm typeorm migration:run -d ormconfig.js", + "revert": "pnpm convert:config && pnpm typeorm migration:revert -d ormconfig.js", + "cli": "pnpm convert:config && node ./built/boot/cli.js", + "check:connect": "pnpm convert:config && node ./scripts/check_connect.js", + "convert:config": "node ./scripts/convert_config.js", "build": "swc src -d built -D --strip-leading-paths", "build:test": "swc test-server -d built-test -D --config-file test-server/.swcrc --strip-leading-paths", "watch:swc": "swc src -d built -D -w --strip-leading-paths", "build:tsc": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json", - "watch": "node ./scripts/watch.mjs", + "watch": "pnpm convert:config && node ./scripts/watch.mjs", "restart": "pnpm build && pnpm start", - "dev": "node ./scripts/dev.mjs", + "dev": "pnpm convert:config && node ./scripts/dev.mjs", "typecheck": "tsc --noEmit && tsc -p test --noEmit && tsc -p test-federation --noEmit", "eslint": "eslint --quiet \"{src,test-federation}/**/*.ts\"", "lint": "pnpm typecheck && pnpm eslint", - "jest": "cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.unit.cjs", - "jest:e2e": "cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.e2e.cjs", - "jest:fed": "node ./jest.js --forceExit --config jest.config.fed.cjs", - "jest-and-coverage": "cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.unit.cjs", - "jest-and-coverage:e2e": "cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.e2e.cjs", - "jest-clear": "cross-env NODE_ENV=test node ./jest.js --clearCache", + "jest": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.unit.cjs", + "jest:e2e": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.e2e.cjs", + "jest:fed": "pnpm convert:config && node ./jest.js --forceExit --config jest.config.fed.cjs", + "jest-and-coverage": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.unit.cjs", + "jest-and-coverage:e2e": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.e2e.cjs", + "jest-clear": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --clearCache", "test": "pnpm jest", "test:e2e": "pnpm build && pnpm build:test && pnpm jest:e2e", "test:fed": "pnpm jest:fed", "test-and-coverage": "pnpm jest-and-coverage", "test-and-coverage:e2e": "pnpm build && pnpm build:test && pnpm jest-and-coverage:e2e", "check-migrations": "node scripts/check_migrations_clean.js", - "generate-api-json": "node ./scripts/generate_api_json.js" + "generate-api-json": "pnpm convert:config && node ./scripts/generate_api_json.js" }, "optionalDependencies": { "@swc/core-android-arm64": "1.3.11", @@ -128,7 +129,6 @@ "ip-cidr": "4.0.2", "ipaddr.js": "2.2.0", "is-svg": "6.1.0", - "js-yaml": "4.1.1", "json5": "2.2.3", "jsonld": "9.0.0", "jsrsasign": "11.1.0", @@ -198,7 +198,6 @@ "@types/fluent-ffmpeg": "2.1.28", "@types/http-link-header": "1.0.7", "@types/jest": "29.5.14", - "@types/js-yaml": "4.0.9", "@types/jsonld": "1.5.15", "@types/jsrsasign": "10.5.15", "@types/mime-types": "3.0.1", @@ -233,6 +232,7 @@ "jest": "29.7.0", "jest-mock": "29.7.0", "jest-util": "29.7.0", + "js-yaml": "4.1.1", "nodemon": "3.1.11", "pid-port": "2.0.0", "simple-oauth2": "5.1.0", diff --git a/packages/backend/scripts/convert_config.js b/packages/backend/scripts/convert_config.js new file mode 100644 index 0000000000..32576621cb --- /dev/null +++ b/packages/backend/scripts/convert_config.js @@ -0,0 +1,56 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +/** + * YAMLファイルをJSONファイルに変換するスクリプト + * ビルド前に実行し、ランタイムにjs-yamlを含まないようにする + */ + +import fs from 'node:fs'; +import { resolve, dirname } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import yaml from 'js-yaml'; + +const _filename = fileURLToPath(import.meta.url); +const _dirname = dirname(_filename); + +const configDir = resolve(_dirname, '../../../.config'); + +/** + * YAMLファイルをJSONファイルに変換 + * @param {string} ymlPath - YAMLファイルのパス + * @param {string} jsonPath - JSONファイルの出力パス + */ +function convertYamlToJson(ymlPath, jsonPath) { + if (!fs.existsSync(ymlPath)) { + console.log(`${ymlPath} が見つからないためスキップします`); + return; + } + + const yamlContent = fs.readFileSync(ymlPath, 'utf-8'); + const jsonContent = yaml.load(yamlContent); + fs.writeFileSync(jsonPath, JSON.stringify(jsonContent, null, 2), 'utf-8'); + console.log(`✓ ${ymlPath} → ${jsonPath}`); +} + +// default.yml と test.yml を変換 +convertYamlToJson( + resolve(configDir, 'default.yml'), + resolve(configDir, 'default.json'), +); + +convertYamlToJson( + resolve(configDir, 'test.yml'), + resolve(configDir, 'test.json'), +); + +// MISSKEY_CONFIG_YML 環境変数が指定されている場合も変換 +if (process.env.MISSKEY_CONFIG_YML) { + const customYmlPath = resolve(configDir, process.env.MISSKEY_CONFIG_YML); + const customJsonPath = customYmlPath.replace(/\.ya?ml$/i, '.json'); + convertYamlToJson(customYmlPath, customJsonPath); +} + +console.log('設定ファイルの変換が完了しました'); diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index fc83899eb7..53946a0bdc 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -6,7 +6,6 @@ import * as fs from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname, resolve } from 'node:path'; -import * as yaml from 'js-yaml'; import { type FastifyServerOptions } from 'fastify'; import type * as Sentry from '@sentry/node'; import type * as SentryVue from '@sentry/vue'; @@ -227,10 +226,10 @@ const dir = `${_dirname}/../../../.config`; * Path of configuration file */ export const path = process.env.MISSKEY_CONFIG_YML - ? resolve(dir, process.env.MISSKEY_CONFIG_YML) + ? resolve(dir, process.env.MISSKEY_CONFIG_YML).replace(/\.ya?ml$/i, '.json') : process.env.NODE_ENV === 'test' - ? resolve(dir, 'test.yml') - : resolve(dir, 'default.yml'); + ? resolve(dir, 'test.json') + : resolve(dir, 'default.json'); export function loadConfig(): Config { const meta = JSON.parse(fs.readFileSync(`${_dirname}/../../../built/meta.json`, 'utf-8')); @@ -244,7 +243,7 @@ export function loadConfig(): Config { JSON.parse(fs.readFileSync(`${_dirname}/../../../built/_frontend_embed_vite_/manifest.json`, 'utf-8')) : { 'src/boot.ts': { file: null } }; - const config = yaml.load(fs.readFileSync(path, 'utf-8')) as Source; + const config = JSON.parse(fs.readFileSync(path, 'utf-8')) as Source; const url = tryCreateUrl(config.url ?? process.env.MISSKEY_URL ?? ''); const version = meta.version; diff --git a/packages/backend/test-federation/compose.a.yml b/packages/backend/test-federation/compose.a.yml index 6a305b404c..1d3d8fd404 100644 --- a/packages/backend/test-federation/compose.a.yml +++ b/packages/backend/test-federation/compose.a.yml @@ -40,6 +40,10 @@ services: source: ./.config/a.test.default.yml target: /misskey/.config/default.yml read_only: true + - type: bind + source: ../scripts/convert_config.js + target: /misskey/packages/backend/scripts/convert_config.js + read_only: true db.a.test: extends: diff --git a/packages/backend/test-federation/compose.b.yml b/packages/backend/test-federation/compose.b.yml index 1158b53bae..9a3bfb8abe 100644 --- a/packages/backend/test-federation/compose.b.yml +++ b/packages/backend/test-federation/compose.b.yml @@ -40,6 +40,10 @@ services: source: ./.config/b.test.default.yml target: /misskey/.config/default.yml read_only: true + - type: bind + source: ../scripts/convert_config.js + target: /misskey/packages/backend/scripts/convert_config.js + read_only: true db.b.test: extends: diff --git a/packages/backend/test-federation/compose.tpl.yml b/packages/backend/test-federation/compose.tpl.yml index 97068171d3..ad9e127b3a 100644 --- a/packages/backend/test-federation/compose.tpl.yml +++ b/packages/backend/test-federation/compose.tpl.yml @@ -42,6 +42,10 @@ services: source: ../package.json target: /misskey/packages/backend/package.json read_only: true + - type: bind + source: ../scripts/convert_config.js + target: /misskey/packages/backend/scripts/convert_config.js + read_only: true - type: bind source: ../../misskey-js/built target: /misskey/packages/misskey-js/built diff --git a/packages/backend/test-federation/compose.yml b/packages/backend/test-federation/compose.yml index e9ac63e4f4..07c0e03f99 100644 --- a/packages/backend/test-federation/compose.yml +++ b/packages/backend/test-federation/compose.yml @@ -54,6 +54,10 @@ services: source: ../jest.js target: /misskey/packages/backend/jest.js read_only: true + - type: bind + source: ../scripts/convert_config.js + target: /misskey/packages/backend/scripts/convert_config.js + read_only: true - type: bind source: ../../misskey-js/built target: /misskey/packages/misskey-js/built diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28795dfa43..46b867469c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -267,9 +267,6 @@ importers: is-svg: specifier: 6.1.0 version: 6.1.0 - js-yaml: - specifier: 4.1.1 - version: 4.1.1 json5: specifier: 2.2.3 version: 2.2.3 @@ -472,9 +469,6 @@ importers: '@types/jest': specifier: 29.5.14 version: 29.5.14 - '@types/js-yaml': - specifier: 4.0.9 - version: 4.0.9 '@types/jsonld': specifier: 1.5.15 version: 1.5.15 @@ -577,6 +571,9 @@ importers: jest-util: specifier: 29.7.0 version: 29.7.0 + js-yaml: + specifier: 4.1.1 + version: 4.1.1 nodemon: specifier: 3.1.11 version: 3.1.11 From 613900598ad0ce8989614df8a14ee9c6c98600a2 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 3 Dec 2025 09:01:19 +0900 Subject: [PATCH 02/63] New Crowdin updates (#16911) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (Italian) --- locales/es-ES.yml | 20 ++++++++++---------- locales/it-IT.yml | 16 +++++++++------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index c442d69c2b..259dcadd2c 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -319,10 +319,10 @@ remoteUserCaution: "Para el usuario remoto, la información está incompleta" activity: "Actividad" images: "Imágenes" image: "Imágenes" -birthday: "Fecha de nacimiento" +birthday: "Cumpleaños" yearsOld: "{age} años" registeredDate: "Fecha de registro" -location: "Lugar" +location: "Ubicación" theme: "Tema" themeForLightMode: "Tema para usar en Modo Linterna" themeForDarkMode: "Tema para usar en Modo Oscuro" @@ -579,7 +579,7 @@ objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir " s3ForcePathStyleDesc: "Si s3ForcePathStyle esta habilitado el nombre del bucket debe ser especificado como parte de la URL en lugar del nombre de host en la URL. Puede ser necesario activar esta opción cuando se utilice, por ejemplo, Minio en un servidor propio." serverLogs: "Registros del servidor" deleteAll: "Eliminar todos" -showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo" +showFixedPostForm: "Visualizar la ventana de publicación en la parte superior de la línea de tiempo." showFixedPostFormInChannel: "Mostrar el formulario de publicación por encima de la cronología (Canales)" withRepliesByDefaultForNewlyFollowed: "Incluir por defecto respuestas de usuarios recién seguidos en la línea de tiempo" newNoteRecived: "Tienes una nota nueva" @@ -844,7 +844,7 @@ jumpToSpecifiedDate: "Saltar a una fecha específica" showingPastTimeline: "Mostrar líneas de tiempo antiguas" clear: "Limpiar" markAllAsRead: "Marcar todo como leído" -goBack: "Deseleccionar" +goBack: "Anterior" unlikeConfirm: "¿Quitar como favorito?" fullView: "Vista completa" quitFullView: "quitar vista completa" @@ -1511,7 +1511,7 @@ _emojiPalette: palettes: "Paleta\n" enableSyncBetweenDevicesForPalettes: "Activar la sincronización de paletas entre dispositivos" paletteForMain: "Paleta principal" - paletteForReaction: "Paleta de reacción" + paletteForReaction: "Paleta utilizada para las reacciones" _settings: driveBanner: "Puedes gestionar y configurar la unidad, comprobar su uso y configurar los ajustes de carga de archivos." pluginBanner: "Puedes ampliar las funciones del cliente con plugins. Puedes instalar plugins, configurarlos y gestionarlos individualmente." @@ -1523,7 +1523,7 @@ _settings: accountData: "Datos de la cuenta" accountDataBanner: "Exportación e importación para gestionar los datos de la cuenta." muteAndBlockBanner: "Puedes configurar y gestionar ajustes para ocultar contenidos y restringir acciones a usuarios específicos." - accessibilityBanner: "Puedes personalizar los visuales y el comportamiento del cliente, y configurar los ajustes para optimizar el uso." + accessibilityBanner: "Puedes personalizar el aspecto y el comportamiento del cliente y configurar los ajustes para optimizar su uso." privacyBanner: "Puedes configurar opciones relacionadas con la privacidad de la cuenta, como la visibilidad del contenido, la posibilidad de descubrir la cuenta y la aprobación de seguimiento." securityBanner: "Puedes configurar opciones relacionadas con la seguridad de la cuenta, como la contraseña, los métodos de inicio de sesión, las aplicaciones de autenticación y Passkeys." preferencesBanner: "Puedes configurar el comportamiento general del cliente según tus preferencias." @@ -1540,7 +1540,7 @@ _settings: ifOff: "Si está desactivado" enableSyncThemesBetweenDevices: "Sincronizar los temas instalados entre dispositivos." enablePullToRefresh: "Tirar para actualizar" - enablePullToRefresh_description: "Si utiliza un ratón, arrastre mientras pulsa la rueda de desplazamiento." + enablePullToRefresh_description: "Si utilizas un ratón, arrastra mientras pulsas la rueda de desplazamiento." realtimeMode_description: "Establece una conexión con el servidor y actualiza el contenido en tiempo real. Esto puede aumentar el tráfico y el consumo de memoria." contentsUpdateFrequency: "Frecuencia de adquisición del contenido." contentsUpdateFrequency_description: "Cuanto mayor sea el valor, más se actualiza el contenido, pero disminuye el rendimiento y aumenta el tráfico y el consumo de memoria." @@ -2156,7 +2156,7 @@ _accountDelete: started: "El proceso de eliminación ha comenzado." inProgress: "La eliminación está en proceso." _ad: - back: "Deseleccionar" + back: "Anterior" reduceFrequencyOfThisAd: "Mostrar menos este anuncio." hide: "No mostrar" timezoneinfo: "El día de la semana está determidado por la zona horaria del servidor." @@ -2610,10 +2610,10 @@ _profile: name: "Nombre" username: "Nombre de usuario" description: "Descripción" - youCanIncludeHashtags: "Puedes añadir hashtags" + youCanIncludeHashtags: "También puedes incluir hashtags en tu biografía" metadata: "información adicional" metadataEdit: "Editar información adicional" - metadataDescription: "Muestra la información adicional en el perfil" + metadataDescription: "Usando esto puedes mostrar campos de información adicionales en tu perfil." metadataLabel: "Etiqueta" metadataContent: "Contenido" changeAvatar: "Cambiar avatar" diff --git a/locales/it-IT.yml b/locales/it-IT.yml index e3cffed3a1..3b918e9c9f 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -83,6 +83,8 @@ files: "Allegati" download: "Scarica" driveFileDeleteConfirm: "Vuoi davvero eliminare il file \"{name}\", e le Note a cui è stato allegato?" unfollowConfirm: "Vuoi davvero togliere il Following a {name}?" +cancelFollowRequestConfirm: "Vuoi annullare la tua richiesta di follow inviata a {name}?" +rejectFollowRequestConfirm: "Vuoi rifiutare la richiesta di follow ricevuta da {name}?" exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando sarà compiuta, il file verrà aggiunto direttamente al Drive." importRequested: "Hai richiesto un'importazione. Potrebbe richiedere un po' di tempo." lists: "Liste" @@ -2350,13 +2352,13 @@ _ago: yearsAgo: "{n} anni fa" invalid: "Niente da visualizzare" _timeIn: - seconds: "Dopo {n} secondi" - minutes: "Dopo {n} minuti" - hours: "Dopo {n} ore" - days: "Dopo {n} giorni" - weeks: "Dopo {n} settimane" - months: "Dopo {n} mesi" - years: "Dopo {n} anni" + seconds: "Tra {n} secondi" + minutes: "Tra {n} minuti" + hours: "Tra {n} ore" + days: "Tra {n} giorni" + weeks: "Tra {n} settimane" + months: "Tra {n} mesi" + years: "Tra {n} anni" _time: second: "s" minute: "min" From d9c9b95fc07dfb7c6d0ed65ffb3a8b67daa307db Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 3 Dec 2025 00:15:47 +0000 Subject: [PATCH 03/63] Bump version to 2025.12.0-alpha.1 --- package.json | 2 +- packages/misskey-js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 212d51cf2b..b95bf2bd71 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.12.0-alpha.0", + "version": "2025.12.0-alpha.1", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index b6efa160b9..c66ca7a3a6 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.12.0-alpha.0", + "version": "2025.12.0-alpha.1", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 9900b3492a72d1cc0d9d112259c8a8ee22ffb386 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 3 Dec 2025 12:02:18 +0900 Subject: [PATCH 04/63] add DeepWiki badge to enable auto-refresh --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 92e8fef639..a73102d713 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ become a patron +[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/misskey-dev/misskey) + ## Thanks From 0b77dc8c483ea8cbbb719679da3ca438d0d92535 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 16:02:49 +0900 Subject: [PATCH 05/63] Add backend memory usage comparison action for PRs (#16926) * Initial plan * Add backend memory usage comparison action Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> * Fix deprecated serverProcess.killed usage Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> * Add explicit permissions to save-pr-number job Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> * Change PR comment text from Japanese to English Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> * Inline memory measurement script to fix base ref compatibility Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> * Revert "Inline memory measurement script to fix base ref compatibility" This reverts commit 6f76a121efd450c257167cce6e298c59936f4e37. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --- .github/workflows/get-backend-memory.yml | 85 +++++++++++ .github/workflows/report-backend-memory.yml | 122 ++++++++++++++++ packages/backend/scripts/measure-memory.mjs | 152 ++++++++++++++++++++ 3 files changed, 359 insertions(+) create mode 100644 .github/workflows/get-backend-memory.yml create mode 100644 .github/workflows/report-backend-memory.yml create mode 100644 packages/backend/scripts/measure-memory.mjs diff --git a/.github/workflows/get-backend-memory.yml b/.github/workflows/get-backend-memory.yml new file mode 100644 index 0000000000..6f36c088f1 --- /dev/null +++ b/.github/workflows/get-backend-memory.yml @@ -0,0 +1,85 @@ +# this name is used in report-backend-memory.yml so be careful when change name +name: Get backend memory usage + +on: + pull_request: + branches: + - master + - develop + paths: + - packages/backend/** + - packages/misskey-js/** + - .github/workflows/get-backend-memory.yml + +jobs: + get-memory-usage: + runs-on: ubuntu-latest + permissions: + contents: read + + strategy: + matrix: + memory-json-name: [memory-base.json, memory-head.json] + include: + - memory-json-name: memory-base.json + ref: ${{ github.base_ref }} + - memory-json-name: memory-head.json + ref: refs/pull/${{ github.event.number }}/merge + + services: + postgres: + image: postgres:18 + ports: + - 54312:5432 + env: + POSTGRES_DB: test-misskey + POSTGRES_HOST_AUTH_METHOD: trust + redis: + image: redis:7 + ports: + - 56312:6379 + + steps: + - uses: actions/checkout@v4.3.0 + with: + ref: ${{ matrix.ref }} + submodules: true + - name: Setup pnpm + uses: pnpm/action-setup@v4.2.0 + - name: Use Node.js + uses: actions/setup-node@v4.4.0 + with: + node-version-file: '.node-version' + cache: 'pnpm' + - run: pnpm i --frozen-lockfile + - name: Check pnpm-lock.yaml + run: git diff --exit-code pnpm-lock.yaml + - name: Copy Configure + run: cp .github/misskey/test.yml .config/default.yml + - name: Build + run: pnpm build + - name: Run migrations + run: pnpm --filter backend migrate + - name: Measure memory usage + run: | + # Start the server and measure memory usage + node packages/backend/scripts/measure-memory.mjs > ${{ matrix.memory-json-name }} + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: memory-artifact-${{ matrix.memory-json-name }} + path: ${{ matrix.memory-json-name }} + + save-pr-number: + runs-on: ubuntu-latest + permissions: {} + steps: + - name: Save PR number + env: + PR_NUMBER: ${{ github.event.number }} + run: | + echo "$PR_NUMBER" > ./pr_number + - uses: actions/upload-artifact@v4 + with: + name: memory-artifact-pr-number + path: pr_number diff --git a/.github/workflows/report-backend-memory.yml b/.github/workflows/report-backend-memory.yml new file mode 100644 index 0000000000..8ae33bc582 --- /dev/null +++ b/.github/workflows/report-backend-memory.yml @@ -0,0 +1,122 @@ +name: Report backend memory + +on: + workflow_run: + types: [completed] + workflows: + - Get backend memory usage # get-backend-memory.yml + +jobs: + compare-memory: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + permissions: + pull-requests: write + + steps: + - name: Download artifact + uses: actions/github-script@v7.1.0 + with: + script: | + const fs = require('fs'); + let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + let matchArtifacts = allArtifacts.data.artifacts.filter((artifact) => { + return artifact.name.startsWith("memory-artifact-") || artifact.name == "memory-artifact" + }); + await Promise.all(matchArtifacts.map(async (artifact) => { + let download = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: artifact.id, + archive_format: 'zip', + }); + await fs.promises.writeFile(`${process.env.GITHUB_WORKSPACE}/${artifact.name}.zip`, Buffer.from(download.data)); + })); + - name: Extract all artifacts + run: | + find . -mindepth 1 -maxdepth 1 -type f -name '*.zip' -exec unzip {} -d artifacts ';' + ls -la artifacts/ + - name: Load PR Number + id: load-pr-num + run: echo "pr-number=$(cat artifacts/pr_number)" >> "$GITHUB_OUTPUT" + + - name: Output base + run: cat ./artifacts/memory-base.json + - name: Output head + run: cat ./artifacts/memory-head.json + - name: Compare memory usage + id: compare + run: | + BASE_MEMORY=$(cat ./artifacts/memory-base.json) + HEAD_MEMORY=$(cat ./artifacts/memory-head.json) + + BASE_RSS=$(echo "$BASE_MEMORY" | jq -r '.memory.rss // 0') + HEAD_RSS=$(echo "$HEAD_MEMORY" | jq -r '.memory.rss // 0') + + # Calculate difference + if [ "$BASE_RSS" -gt 0 ] && [ "$HEAD_RSS" -gt 0 ]; then + DIFF=$((HEAD_RSS - BASE_RSS)) + DIFF_PERCENT=$(echo "scale=2; ($DIFF * 100) / $BASE_RSS" | bc) + + # Convert to MB for readability + BASE_MB=$(echo "scale=2; $BASE_RSS / 1048576" | bc) + HEAD_MB=$(echo "scale=2; $HEAD_RSS / 1048576" | bc) + DIFF_MB=$(echo "scale=2; $DIFF / 1048576" | bc) + + echo "base_mb=$BASE_MB" >> "$GITHUB_OUTPUT" + echo "head_mb=$HEAD_MB" >> "$GITHUB_OUTPUT" + echo "diff_mb=$DIFF_MB" >> "$GITHUB_OUTPUT" + echo "diff_percent=$DIFF_PERCENT" >> "$GITHUB_OUTPUT" + echo "has_data=true" >> "$GITHUB_OUTPUT" + + # Determine if this is a significant change (more than 5% increase) + if [ "$(echo "$DIFF_PERCENT > 5" | bc)" -eq 1 ]; then + echo "significant_increase=true" >> "$GITHUB_OUTPUT" + else + echo "significant_increase=false" >> "$GITHUB_OUTPUT" + fi + else + echo "has_data=false" >> "$GITHUB_OUTPUT" + fi + - id: build-comment + name: Build memory comment + run: | + HEADER="## Backend Memory Usage Comparison" + FOOTER="[See workflow logs for details](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})" + + echo "$HEADER" > ./output.md + echo >> ./output.md + + if [ "${{ steps.compare.outputs.has_data }}" == "true" ]; then + echo "| Metric | base | head | Diff |" >> ./output.md + echo "|--------|------|------|------|" >> ./output.md + echo "| RSS | ${{ steps.compare.outputs.base_mb }} MB | ${{ steps.compare.outputs.head_mb }} MB | ${{ steps.compare.outputs.diff_mb }} MB (${{ steps.compare.outputs.diff_percent }}%) |" >> ./output.md + echo >> ./output.md + + if [ "${{ steps.compare.outputs.significant_increase }}" == "true" ]; then + echo "⚠️ **Warning**: Memory usage has increased by more than 5%. Please verify this is not an unintended change." >> ./output.md + echo >> ./output.md + fi + else + echo "Could not retrieve memory usage data." >> ./output.md + echo >> ./output.md + fi + + echo "$FOOTER" >> ./output.md + - uses: thollander/actions-comment-pull-request@v2 + with: + pr_number: ${{ steps.load-pr-num.outputs.pr-number }} + comment_tag: show_memory_diff + filePath: ./output.md + - name: Tell error to PR + uses: thollander/actions-comment-pull-request@v2 + if: failure() && steps.load-pr-num.outputs.pr-number + with: + pr_number: ${{ steps.load-pr-num.outputs.pr-number }} + comment_tag: show_memory_diff_error + message: | + An error occurred while comparing backend memory usage. See [workflow logs](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details. diff --git a/packages/backend/scripts/measure-memory.mjs b/packages/backend/scripts/measure-memory.mjs new file mode 100644 index 0000000000..017252d7ec --- /dev/null +++ b/packages/backend/scripts/measure-memory.mjs @@ -0,0 +1,152 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +/** + * This script starts the Misskey backend server, waits for it to be ready, + * measures memory usage, and outputs the result as JSON. + * + * Usage: node scripts/measure-memory.mjs + */ + +import { fork } from 'node:child_process'; +import { setTimeout } from 'node:timers/promises'; +import { fileURLToPath } from 'node:url'; +import { dirname, join } from 'node:path'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const STARTUP_TIMEOUT = 120000; // 120 seconds timeout for server startup +const MEMORY_SETTLE_TIME = 10000; // Wait 10 seconds after startup for memory to settle + +async function measureMemory() { + const startTime = Date.now(); + + // Start the Misskey backend server using fork to enable IPC + const serverProcess = fork(join(__dirname, '../built/boot/entry.js'), [], { + cwd: join(__dirname, '..'), + env: { + ...process.env, + NODE_ENV: 'test', + }, + stdio: ['pipe', 'pipe', 'pipe', 'ipc'], + }); + + let serverReady = false; + + // Listen for the 'ok' message from the server indicating it's ready + serverProcess.on('message', (message) => { + if (message === 'ok') { + serverReady = true; + } + }); + + // Handle server output + serverProcess.stdout?.on('data', (data) => { + process.stderr.write(`[server stdout] ${data}`); + }); + + serverProcess.stderr?.on('data', (data) => { + process.stderr.write(`[server stderr] ${data}`); + }); + + // Handle server error + serverProcess.on('error', (err) => { + process.stderr.write(`[server error] ${err}\n`); + }); + + // Wait for server to be ready or timeout + const startupStartTime = Date.now(); + while (!serverReady) { + if (Date.now() - startupStartTime > STARTUP_TIMEOUT) { + serverProcess.kill('SIGTERM'); + throw new Error('Server startup timeout'); + } + await setTimeout(100); + } + + const startupTime = Date.now() - startupStartTime; + process.stderr.write(`Server started in ${startupTime}ms\n`); + + // Wait for memory to settle + await setTimeout(MEMORY_SETTLE_TIME); + + // Get memory usage from the server process via /proc + const pid = serverProcess.pid; + let memoryInfo; + + try { + const fs = await import('node:fs/promises'); + + // Read /proc/[pid]/status for detailed memory info + const status = await fs.readFile(`/proc/${pid}/status`, 'utf-8'); + const vmRssMatch = status.match(/VmRSS:\s+(\d+)\s+kB/); + const vmDataMatch = status.match(/VmData:\s+(\d+)\s+kB/); + const vmSizeMatch = status.match(/VmSize:\s+(\d+)\s+kB/); + + memoryInfo = { + rss: vmRssMatch ? parseInt(vmRssMatch[1], 10) * 1024 : null, + heapUsed: vmDataMatch ? parseInt(vmDataMatch[1], 10) * 1024 : null, + vmSize: vmSizeMatch ? parseInt(vmSizeMatch[1], 10) * 1024 : null, + }; + } catch (err) { + // Fallback: use ps command + process.stderr.write(`Warning: Could not read /proc/${pid}/status: ${err}\n`); + + const { execSync } = await import('node:child_process'); + try { + const ps = execSync(`ps -o rss= -p ${pid}`, { encoding: 'utf-8' }); + const rssKb = parseInt(ps.trim(), 10); + memoryInfo = { + rss: rssKb * 1024, + heapUsed: null, + vmSize: null, + }; + } catch { + memoryInfo = { + rss: null, + heapUsed: null, + vmSize: null, + error: 'Could not measure memory', + }; + } + } + + // Stop the server + serverProcess.kill('SIGTERM'); + + // Wait for process to exit + let exited = false; + await new Promise((resolve) => { + serverProcess.on('exit', () => { + exited = true; + resolve(undefined); + }); + // Force kill after 10 seconds if not exited + setTimeout(10000).then(() => { + if (!exited) { + serverProcess.kill('SIGKILL'); + } + resolve(undefined); + }); + }); + + const result = { + timestamp: new Date().toISOString(), + startupTimeMs: startupTime, + memory: memoryInfo, + }; + + // Output as JSON to stdout + console.log(JSON.stringify(result, null, 2)); +} + +measureMemory().catch((err) => { + console.error(JSON.stringify({ + error: err.message, + timestamp: new Date().toISOString(), + })); + process.exit(1); +}); From 5512898463fa8487b9e6488912f35102b91f25f7 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Wed, 3 Dec 2025 08:08:45 +0100 Subject: [PATCH 06/63] Merge commit from fork * Change trustProxy default value to false * Update trustProxy default value in example.yml * Update trustProxy default description in example.yml --- .config/example.yml | 4 ++-- packages/backend/src/server/ServerService.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/example.yml b/.config/example.yml index 489cceec34..1a6b0f5b4b 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -110,10 +110,10 @@ port: 3000 # Changes how the server interpret the origin IP of the request. # # Any format supported by Fastify is accepted. -# Default: trust all proxies (i.e. trustProxy: true) +# Default: do not trust any proxies (i.e. trustProxy: false) # See: https://fastify.dev/docs/latest/reference/server/#trustproxy # -# trustProxy: 1 +# trustProxy: false # ┌──────────────────────────┐ #───┘ PostgreSQL configuration └──────────────────────────────── diff --git a/packages/backend/src/server/ServerService.ts b/packages/backend/src/server/ServerService.ts index 1286b4dad6..4e05322b12 100644 --- a/packages/backend/src/server/ServerService.ts +++ b/packages/backend/src/server/ServerService.ts @@ -75,7 +75,7 @@ export class ServerService implements OnApplicationShutdown { @bindThis public async launch(): Promise { const fastify = Fastify({ - trustProxy: this.config.trustProxy ?? true, + trustProxy: this.config.trustProxy ?? false, logger: false, }); this.#fastify = fastify; From 6293a57de888662671c2c0aaa6ee120003c525b9 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 3 Dec 2025 18:10:08 +0900 Subject: [PATCH 07/63] fix action --- .github/workflows/get-backend-memory.yml | 2 ++ .github/workflows/report-backend-memory.yml | 12 ++++++------ package.json | 1 + 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/get-backend-memory.yml b/.github/workflows/get-backend-memory.yml index 6f36c088f1..b14885ec34 100644 --- a/.github/workflows/get-backend-memory.yml +++ b/.github/workflows/get-backend-memory.yml @@ -56,6 +56,8 @@ jobs: run: git diff --exit-code pnpm-lock.yaml - name: Copy Configure run: cp .github/misskey/test.yml .config/default.yml + - name: Compile Configure + run: pnpm convert:config - name: Build run: pnpm build - name: Run migrations diff --git a/.github/workflows/report-backend-memory.yml b/.github/workflows/report-backend-memory.yml index 8ae33bc582..ede43cc645 100644 --- a/.github/workflows/report-backend-memory.yml +++ b/.github/workflows/report-backend-memory.yml @@ -20,9 +20,9 @@ jobs: script: | const fs = require('fs'); let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: context.payload.workflow_run.id, + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, }); let matchArtifacts = allArtifacts.data.artifacts.filter((artifact) => { return artifact.name.startsWith("memory-artifact-") || artifact.name == "memory-artifact" @@ -61,18 +61,18 @@ jobs: if [ "$BASE_RSS" -gt 0 ] && [ "$HEAD_RSS" -gt 0 ]; then DIFF=$((HEAD_RSS - BASE_RSS)) DIFF_PERCENT=$(echo "scale=2; ($DIFF * 100) / $BASE_RSS" | bc) - + # Convert to MB for readability BASE_MB=$(echo "scale=2; $BASE_RSS / 1048576" | bc) HEAD_MB=$(echo "scale=2; $HEAD_RSS / 1048576" | bc) DIFF_MB=$(echo "scale=2; $DIFF / 1048576" | bc) - + echo "base_mb=$BASE_MB" >> "$GITHUB_OUTPUT" echo "head_mb=$HEAD_MB" >> "$GITHUB_OUTPUT" echo "diff_mb=$DIFF_MB" >> "$GITHUB_OUTPUT" echo "diff_percent=$DIFF_PERCENT" >> "$GITHUB_OUTPUT" echo "has_data=true" >> "$GITHUB_OUTPUT" - + # Determine if this is a significant change (more than 5% increase) if [ "$(echo "$DIFF_PERCENT > 5" | bc)" -eq 1 ]; then echo "significant_increase=true" >> "$GITHUB_OUTPUT" diff --git a/package.json b/package.json index b95bf2bd71..e72bb70d5f 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ ], "private": true, "scripts": { + "convert:config": "cd packages/backend && pnpm convert:config", "build-pre": "node ./scripts/build-pre.js", "build-assets": "node ./scripts/build-assets.mjs", "build": "pnpm build-pre && pnpm -r build && pnpm build-assets", From 55ef4c5faa7073ec9bfdbeb3fb43590c7c5dd580 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 3 Dec 2025 18:20:41 +0900 Subject: [PATCH 08/63] tweak convert_config --- packages/backend/scripts/convert_config.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/backend/scripts/convert_config.js b/packages/backend/scripts/convert_config.js index 32576621cb..e93baa409a 100644 --- a/packages/backend/scripts/convert_config.js +++ b/packages/backend/scripts/convert_config.js @@ -25,13 +25,16 @@ const configDir = resolve(_dirname, '../../../.config'); */ function convertYamlToJson(ymlPath, jsonPath) { if (!fs.existsSync(ymlPath)) { - console.log(`${ymlPath} が見つからないためスキップします`); + console.log(`skipped: ${ymlPath} is not found`); return; } const yamlContent = fs.readFileSync(ymlPath, 'utf-8'); const jsonContent = yaml.load(yamlContent); - fs.writeFileSync(jsonPath, JSON.stringify(jsonContent, null, 2), 'utf-8'); + fs.writeFileSync(jsonPath, JSON.stringify({ + '_NOTE_': 'This file is auto-generated from YAML file. DO NOT EDIT.', + ...jsonContent, + }), 'utf-8'); console.log(`✓ ${ymlPath} → ${jsonPath}`); } @@ -53,4 +56,4 @@ if (process.env.MISSKEY_CONFIG_YML) { convertYamlToJson(customYmlPath, customJsonPath); } -console.log('設定ファイルの変換が完了しました'); +console.log('Configuration compiled'); From a6f57d99f97aded4928f7c98e06c4f961e5dae69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 4 Dec 2025 13:36:30 +0900 Subject: [PATCH 09/63] fix(gh): fix federation test (#16936) --- packages/backend/test-federation/.config/example.default.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend/test-federation/.config/example.default.yml b/packages/backend/test-federation/.config/example.default.yml index fd20613885..b1cd3bdba8 100644 --- a/packages/backend/test-federation/.config/example.default.yml +++ b/packages/backend/test-federation/.config/example.default.yml @@ -7,6 +7,7 @@ db: user: postgres pass: postgres dbReplications: false +trustProxy: true redis: host: redis.test port: 6379 From a3c3052d0fae8223b73b4ee0abca2b6702da92a2 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Dec 2025 15:19:15 +0900 Subject: [PATCH 10/63] =?UTF-8?q?fix(frontend):=20stacking=20router=20view?= =?UTF-8?q?=E3=81=A7=E9=80=A3=E7=B6=9A=E3=81=97=E3=81=A6=E6=88=BB=E3=82=8B?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E3=82=92=E8=A1=8C=E3=81=86=E3=81=A8=E4=BD=95?= =?UTF-8?q?=E3=82=82=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=8F?= =?UTF-8?q?=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- .../frontend/src/components/global/StackingRouterView.vue | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4f7933824..a30bf8c441 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正 ### Server - Enhance: メモリ使用量を削減しました diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue index 4c56767608..e9c24bfcb4 100644 --- a/packages/frontend/src/components/global/StackingRouterView.vue +++ b/packages/frontend/src/components/global/StackingRouterView.vue @@ -74,7 +74,9 @@ function mount() { } function back() { - const prev = tabs.value[tabs.value.length - 2]; + const prev = tabs.value.at(tabs.value.length - 2); + if (prev == null) return; // transitionの関係でprevが無い状態でbackが呼ばれることがある + tabs.value = [...tabs.value.slice(0, tabs.value.length - 1)]; router?.replaceByPath(prev.fullPath); } From 24bd1509677023ddd8a749bb7fbfe876c7627b48 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Dec 2025 16:49:25 +0900 Subject: [PATCH 11/63] =?UTF-8?q?refactor(backend):=20=E5=A4=89=E6=8F=9B?= =?UTF-8?q?=E5=BE=8C.config.json=E3=81=AB=E7=B5=B1=E4=B8=80=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB+=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=81=AA=E3=81=A9=20(#16929)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * wip * Update config.ts * wip * convertは元ファイルを変更するようなニュアンスを若干感じるのでcompileに改名 * wip * Update package.json * Revert "Update package.json" This reverts commit e5c28023168f4631dc6b36a14b35cfddbad1fac0. * wip * wip * 謎 * clean up * wip * wip * Revert "wip" This reverts commit 3aa25ac7cf337d57412308e63d8f54e2536b0f7f. * wip * wip * Update dummy.yml * wip * Update compile_config.js * Update compile_config.js * wip * Revert "wip" This reverts commit fd78e097c65f747962e7a411938a0e67538ed347. * Update dummy.yml * Update compile_config.js --- .github/workflows/get-backend-memory.yml | 2 +- package.json | 8 ++--- .../1745378064470-composite-note-index.js | 8 ++--- ...915-migrateSomeConfigFileSettingsToMeta.js | 8 ++--- .../backend/migration/js/migration-config.js | 31 ---------------- packages/backend/ormconfig.js | 5 +-- packages/backend/package.json | 34 +++++++++--------- .../{convert_config.js => compile_config.js} | 35 ++++++++----------- packages/backend/src/config.ts | 20 ++++------- .../backend/test-federation/.config/dummy.yml | 2 ++ .../.config/example.config.json | 29 +++++++++++++++ .../.config/example.default.yml | 23 ------------ .../backend/test-federation/compose.a.yml | 8 ++--- .../backend/test-federation/compose.b.yml | 8 ++--- .../backend/test-federation/compose.tpl.yml | 8 +++-- packages/backend/test-federation/compose.yml | 4 +-- packages/backend/test-federation/setup.sh | 2 +- 17 files changed, 98 insertions(+), 137 deletions(-) delete mode 100644 packages/backend/migration/js/migration-config.js rename packages/backend/scripts/{convert_config.js => compile_config.js} (59%) create mode 100644 packages/backend/test-federation/.config/dummy.yml create mode 100644 packages/backend/test-federation/.config/example.config.json delete mode 100644 packages/backend/test-federation/.config/example.default.yml diff --git a/.github/workflows/get-backend-memory.yml b/.github/workflows/get-backend-memory.yml index b14885ec34..458f303f0f 100644 --- a/.github/workflows/get-backend-memory.yml +++ b/.github/workflows/get-backend-memory.yml @@ -57,7 +57,7 @@ jobs: - name: Copy Configure run: cp .github/misskey/test.yml .config/default.yml - name: Compile Configure - run: pnpm convert:config + run: pnpm compile-config - name: Build run: pnpm build - name: Run migrations diff --git a/package.json b/package.json index e72bb70d5f..7fe2c36ffc 100644 --- a/package.json +++ b/package.json @@ -22,15 +22,15 @@ ], "private": true, "scripts": { - "convert:config": "cd packages/backend && pnpm convert:config", + "compile-config": "cd packages/backend && pnpm compile-config", "build-pre": "node ./scripts/build-pre.js", "build-assets": "node ./scripts/build-assets.mjs", "build": "pnpm build-pre && pnpm -r build && pnpm build-assets", "build-storybook": "pnpm --filter frontend build-storybook", "build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json --no-build && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api", - "start": "pnpm check:connect && cd packages/backend && pnpm convert:config && node ./built/boot/entry.js", - "start:inspect": "cd packages/backend && pnpm convert:config && node --inspect ./built/boot/entry.js", - "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && pnpm convert:config && cross-env NODE_ENV=test node ./built/boot/entry.js", + "start": "pnpm check:connect && cd packages/backend && pnpm compile-config && node ./built/boot/entry.js", + "start:inspect": "cd packages/backend && pnpm compile-config && node --inspect ./built/boot/entry.js", + "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./built/boot/entry.js", "cli": "cd packages/backend && pnpm cli", "init": "pnpm migrate", "migrate": "cd packages/backend && pnpm migrate", diff --git a/packages/backend/migration/1745378064470-composite-note-index.js b/packages/backend/migration/1745378064470-composite-note-index.js index 12108a6b3c..576bf7d19a 100644 --- a/packages/backend/migration/1745378064470-composite-note-index.js +++ b/packages/backend/migration/1745378064470-composite-note-index.js @@ -3,14 +3,14 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { isConcurrentIndexMigrationEnabled } from "./js/migration-config.js"; +const isConcurrentIndexMigrationEnabled = process.env.MISSKEY_MIGRATION_CREATE_INDEX_CONCURRENTLY === '1'; export class CompositeNoteIndex1745378064470 { name = 'CompositeNoteIndex1745378064470'; - transaction = isConcurrentIndexMigrationEnabled() ? false : undefined; + transaction = isConcurrentIndexMigrationEnabled ? false : undefined; async up(queryRunner) { - const concurrently = isConcurrentIndexMigrationEnabled(); + const concurrently = isConcurrentIndexMigrationEnabled; if (concurrently) { const hasValidIndex = await queryRunner.query(`SELECT indisvalid FROM pg_index INNER JOIN pg_class ON pg_index.indexrelid = pg_class.oid WHERE pg_class.relname = 'IDX_724b311e6f883751f261ebe378'`); @@ -29,7 +29,7 @@ export class CompositeNoteIndex1745378064470 { } async down(queryRunner) { - const mayConcurrently = isConcurrentIndexMigrationEnabled() ? 'CONCURRENTLY' : ''; + const mayConcurrently = isConcurrentIndexMigrationEnabled ? 'CONCURRENTLY' : ''; await queryRunner.query(`DROP INDEX IF EXISTS "IDX_724b311e6f883751f261ebe378"`); await queryRunner.query(`CREATE INDEX ${mayConcurrently} "IDX_5b87d9d19127bd5d92026017a7" ON "note" ("userId")`); } diff --git a/packages/backend/migration/1746949539915-migrateSomeConfigFileSettingsToMeta.js b/packages/backend/migration/1746949539915-migrateSomeConfigFileSettingsToMeta.js index 3243f43b91..cb8bb33459 100644 --- a/packages/backend/migration/1746949539915-migrateSomeConfigFileSettingsToMeta.js +++ b/packages/backend/migration/1746949539915-migrateSomeConfigFileSettingsToMeta.js @@ -3,17 +3,15 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import {loadConfig} from "./js/migration-config.js"; export class MigrateSomeConfigFileSettingsToMeta1746949539915 { name = 'MigrateSomeConfigFileSettingsToMeta1746949539915' async up(queryRunner) { - const config = loadConfig(); // $1 cannot be used in ALTER TABLE queries - await queryRunner.query(`ALTER TABLE "meta" ADD "proxyRemoteFiles" boolean NOT NULL DEFAULT ${config.proxyRemoteFiles}`); - await queryRunner.query(`ALTER TABLE "meta" ADD "signToActivityPubGet" boolean NOT NULL DEFAULT ${config.signToActivityPubGet}`); - await queryRunner.query(`ALTER TABLE "meta" ADD "allowExternalApRedirect" boolean NOT NULL DEFAULT ${!config.disallowExternalApRedirect}`); + await queryRunner.query(`ALTER TABLE "meta" ADD "proxyRemoteFiles" boolean NOT NULL DEFAULT TRUE`); + await queryRunner.query(`ALTER TABLE "meta" ADD "signToActivityPubGet" boolean NOT NULL DEFAULT TRUE`); + await queryRunner.query(`ALTER TABLE "meta" ADD "allowExternalApRedirect" boolean NOT NULL DEFAULT TRUE`); } async down(queryRunner) { diff --git a/packages/backend/migration/js/migration-config.js b/packages/backend/migration/js/migration-config.js deleted file mode 100644 index 853735661b..0000000000 --- a/packages/backend/migration/js/migration-config.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * SPDX-FileCopyrightText: syuilo and misskey-project - * SPDX-License-Identifier: AGPL-3.0-only - */ - -import { path as configYamlPath } from '../../built/config.js'; -import * as yaml from 'js-yaml'; -import fs from "node:fs"; - -export function isConcurrentIndexMigrationEnabled() { - return process.env.MISSKEY_MIGRATION_CREATE_INDEX_CONCURRENTLY === '1'; -} - -let loadedConfigCache = undefined; - -function loadConfigInternal() { - const config = yaml.load(fs.readFileSync(configYamlPath, 'utf-8')); - - return { - disallowExternalApRedirect: Boolean(config.disallowExternalApRedirect ?? false), - proxyRemoteFiles: Boolean(config.proxyRemoteFiles ?? false), - signToActivityPubGet: Boolean(config.signToActivityPubGet ?? true), - } -} - -export function loadConfig() { - if (loadedConfigCache === undefined) { - loadedConfigCache = loadConfigInternal(); - } - return loadedConfigCache; -} diff --git a/packages/backend/ormconfig.js b/packages/backend/ormconfig.js index f979c36ad7..dabc0893f4 100644 --- a/packages/backend/ormconfig.js +++ b/packages/backend/ormconfig.js @@ -1,7 +1,8 @@ import { DataSource } from 'typeorm'; import { loadConfig } from './built/config.js'; import { entities } from './built/postgres.js'; -import { isConcurrentIndexMigrationEnabled } from "./migration/js/migration-config.js"; + +const isConcurrentIndexMigrationEnabled = process.env.MISSKEY_MIGRATION_CREATE_INDEX_CONCURRENTLY === '1'; const config = loadConfig(); @@ -15,5 +16,5 @@ export default new DataSource({ extra: config.db.extra, entities: entities, migrations: ['migration/*.js'], - migrationsTransactionMode: isConcurrentIndexMigrationEnabled() ? 'each' : 'all', + migrationsTransactionMode: isConcurrentIndexMigrationEnabled ? 'each' : 'all', }); diff --git a/packages/backend/package.json b/packages/backend/package.json index 25d84a1e14..e9143b525a 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -7,37 +7,37 @@ "node": "^22.15.0 || ^24.10.0" }, "scripts": { - "start": "pnpm convert:config && node ./built/boot/entry.js", - "start:inspect": "pnpm convert:config && node --inspect ./built/boot/entry.js", - "start:test": "pnpm convert:config && cross-env NODE_ENV=test node ./built/boot/entry.js", - "migrate": "pnpm convert:config && pnpm typeorm migration:run -d ormconfig.js", - "revert": "pnpm convert:config && pnpm typeorm migration:revert -d ormconfig.js", - "cli": "pnpm convert:config && node ./built/boot/cli.js", - "check:connect": "pnpm convert:config && node ./scripts/check_connect.js", - "convert:config": "node ./scripts/convert_config.js", + "start": "pnpm compile-config && node ./built/boot/entry.js", + "start:inspect": "pnpm compile-config && node --inspect ./built/boot/entry.js", + "start:test": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./built/boot/entry.js", + "migrate": "pnpm compile-config && pnpm typeorm migration:run -d ormconfig.js", + "revert": "pnpm compile-config && pnpm typeorm migration:revert -d ormconfig.js", + "cli": "pnpm compile-config && node ./built/boot/cli.js", + "check:connect": "pnpm compile-config && node ./scripts/check_connect.js", + "compile-config": "node ./scripts/compile_config.js", "build": "swc src -d built -D --strip-leading-paths", "build:test": "swc test-server -d built-test -D --config-file test-server/.swcrc --strip-leading-paths", "watch:swc": "swc src -d built -D -w --strip-leading-paths", "build:tsc": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json", - "watch": "pnpm convert:config && node ./scripts/watch.mjs", + "watch": "pnpm compile-config && node ./scripts/watch.mjs", "restart": "pnpm build && pnpm start", - "dev": "pnpm convert:config && node ./scripts/dev.mjs", + "dev": "pnpm compile-config && node ./scripts/dev.mjs", "typecheck": "tsc --noEmit && tsc -p test --noEmit && tsc -p test-federation --noEmit", "eslint": "eslint --quiet \"{src,test-federation}/**/*.ts\"", "lint": "pnpm typecheck && pnpm eslint", - "jest": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.unit.cjs", - "jest:e2e": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.e2e.cjs", - "jest:fed": "pnpm convert:config && node ./jest.js --forceExit --config jest.config.fed.cjs", - "jest-and-coverage": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.unit.cjs", - "jest-and-coverage:e2e": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.e2e.cjs", - "jest-clear": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --clearCache", + "jest": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.unit.cjs", + "jest:e2e": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.e2e.cjs", + "jest:fed": "pnpm compile-config && node ./jest.js --forceExit --config jest.config.fed.cjs", + "jest-and-coverage": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.unit.cjs", + "jest-and-coverage:e2e": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.e2e.cjs", + "jest-clear": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --clearCache", "test": "pnpm jest", "test:e2e": "pnpm build && pnpm build:test && pnpm jest:e2e", "test:fed": "pnpm jest:fed", "test-and-coverage": "pnpm jest-and-coverage", "test-and-coverage:e2e": "pnpm build && pnpm build:test && pnpm jest-and-coverage:e2e", "check-migrations": "node scripts/check_migrations_clean.js", - "generate-api-json": "pnpm convert:config && node ./scripts/generate_api_json.js" + "generate-api-json": "pnpm compile-config && node ./scripts/generate_api_json.js" }, "optionalDependencies": { "@swc/core-android-arm64": "1.3.11", diff --git a/packages/backend/scripts/convert_config.js b/packages/backend/scripts/compile_config.js similarity index 59% rename from packages/backend/scripts/convert_config.js rename to packages/backend/scripts/compile_config.js index e93baa409a..e78fa3dc9f 100644 --- a/packages/backend/scripts/convert_config.js +++ b/packages/backend/scripts/compile_config.js @@ -17,43 +17,38 @@ const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const configDir = resolve(_dirname, '../../../.config'); +const OUTPUT_PATH = resolve(_dirname, '../../../built/.config.json'); + +// TODO: yamlのパースに失敗したときのエラーハンドリング /** * YAMLファイルをJSONファイルに変換 * @param {string} ymlPath - YAMLファイルのパス - * @param {string} jsonPath - JSONファイルの出力パス */ -function convertYamlToJson(ymlPath, jsonPath) { +function yamlToJson(ymlPath) { if (!fs.existsSync(ymlPath)) { - console.log(`skipped: ${ymlPath} is not found`); + console.warn(`YAML file not found: ${ymlPath}`); return; } + console.log(`${ymlPath} → ${OUTPUT_PATH}`); + const yamlContent = fs.readFileSync(ymlPath, 'utf-8'); const jsonContent = yaml.load(yamlContent); - fs.writeFileSync(jsonPath, JSON.stringify({ + if (!fs.existsSync(dirname(OUTPUT_PATH))) { + fs.mkdirSync(dirname(OUTPUT_PATH), { recursive: true }); + } + fs.writeFileSync(OUTPUT_PATH, JSON.stringify({ '_NOTE_': 'This file is auto-generated from YAML file. DO NOT EDIT.', ...jsonContent, }), 'utf-8'); - console.log(`✓ ${ymlPath} → ${jsonPath}`); } -// default.yml と test.yml を変換 -convertYamlToJson( - resolve(configDir, 'default.yml'), - resolve(configDir, 'default.json'), -); - -convertYamlToJson( - resolve(configDir, 'test.yml'), - resolve(configDir, 'test.json'), -); - -// MISSKEY_CONFIG_YML 環境変数が指定されている場合も変換 if (process.env.MISSKEY_CONFIG_YML) { const customYmlPath = resolve(configDir, process.env.MISSKEY_CONFIG_YML); - const customJsonPath = customYmlPath.replace(/\.ya?ml$/i, '.json'); - convertYamlToJson(customYmlPath, customJsonPath); + yamlToJson(customYmlPath); +} else { + yamlToJson(resolve(configDir, process.env.NODE_ENV === 'test' ? 'test.yml' : 'default.yml')); } -console.log('Configuration compiled'); +console.log('Configuration compiled ✓'); diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index 53946a0bdc..f9852d3578 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -217,21 +217,15 @@ export type FulltextSearchProvider = 'sqlLike' | 'sqlPgroonga' | 'meilisearch'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); -/** - * Path of configuration directory - */ -const dir = `${_dirname}/../../../.config`; +const compiledConfigFilePathForTest = resolve(_dirname, '../../../built/._config_.json'); -/** - * Path of configuration file - */ -export const path = process.env.MISSKEY_CONFIG_YML - ? resolve(dir, process.env.MISSKEY_CONFIG_YML).replace(/\.ya?ml$/i, '.json') - : process.env.NODE_ENV === 'test' - ? resolve(dir, 'test.json') - : resolve(dir, 'default.json'); +export const compiledConfigFilePath = fs.existsSync(compiledConfigFilePathForTest) ? compiledConfigFilePathForTest : resolve(_dirname, '../../../built/.config.json'); export function loadConfig(): Config { + if (!fs.existsSync(compiledConfigFilePath)) { + throw new Error('Compiled configuration file not found. Try running \'pnpm compile-config\'.'); + } + const meta = JSON.parse(fs.readFileSync(`${_dirname}/../../../built/meta.json`, 'utf-8')); const frontendManifestExists = fs.existsSync(_dirname + '/../../../built/_frontend_vite_/manifest.json'); @@ -243,7 +237,7 @@ export function loadConfig(): Config { JSON.parse(fs.readFileSync(`${_dirname}/../../../built/_frontend_embed_vite_/manifest.json`, 'utf-8')) : { 'src/boot.ts': { file: null } }; - const config = JSON.parse(fs.readFileSync(path, 'utf-8')) as Source; + const config = JSON.parse(fs.readFileSync(compiledConfigFilePath, 'utf-8')) as Source; const url = tryCreateUrl(config.url ?? process.env.MISSKEY_URL ?? ''); const version = meta.version; diff --git a/packages/backend/test-federation/.config/dummy.yml b/packages/backend/test-federation/.config/dummy.yml new file mode 100644 index 0000000000..841cab9783 --- /dev/null +++ b/packages/backend/test-federation/.config/dummy.yml @@ -0,0 +1,2 @@ +url: https://example.com/ +port: 3000 diff --git a/packages/backend/test-federation/.config/example.config.json b/packages/backend/test-federation/.config/example.config.json new file mode 100644 index 0000000000..2035d1a200 --- /dev/null +++ b/packages/backend/test-federation/.config/example.config.json @@ -0,0 +1,29 @@ +{ + "url": "https://${HOST}/", + "port": 3000, + "db": { + "host": "db.${HOST}", + "port": 5432, + "db": "misskey", + "user": "postgres", + "pass": "postgres" + }, + "dbReplications": false, + "trustProxy": true, + "redis": { + "host": "redis.test", + "port": 6379 + }, + "id": "aidx", + "proxyBypassHosts": [ + "api.deepl.com", + "api-free.deepl.com", + "www.recaptcha.net", + "hcaptcha.com", + "challenges.cloudflare.com" + ], + "allowedPrivateNetworks": [ + "127.0.0.1/32", + "172.20.0.0/16" + ] +} diff --git a/packages/backend/test-federation/.config/example.default.yml b/packages/backend/test-federation/.config/example.default.yml deleted file mode 100644 index b1cd3bdba8..0000000000 --- a/packages/backend/test-federation/.config/example.default.yml +++ /dev/null @@ -1,23 +0,0 @@ -url: https://${HOST}/ -port: 3000 -db: - host: db.${HOST} - port: 5432 - db: misskey - user: postgres - pass: postgres -dbReplications: false -trustProxy: true -redis: - host: redis.test - port: 6379 -id: 'aidx' -proxyBypassHosts: - - api.deepl.com - - api-free.deepl.com - - www.recaptcha.net - - hcaptcha.com - - challenges.cloudflare.com -allowedPrivateNetworks: - - 127.0.0.1/32 - - 172.20.0.0/16 diff --git a/packages/backend/test-federation/compose.a.yml b/packages/backend/test-federation/compose.a.yml index 1d3d8fd404..4fd4eb3851 100644 --- a/packages/backend/test-federation/compose.a.yml +++ b/packages/backend/test-federation/compose.a.yml @@ -37,12 +37,8 @@ services: - internal_network_a volumes: - type: bind - source: ./.config/a.test.default.yml - target: /misskey/.config/default.yml - read_only: true - - type: bind - source: ../scripts/convert_config.js - target: /misskey/packages/backend/scripts/convert_config.js + source: ./.config/a.test.config.json + target: /misskey/built/._config_.json read_only: true db.a.test: diff --git a/packages/backend/test-federation/compose.b.yml b/packages/backend/test-federation/compose.b.yml index 9a3bfb8abe..753da22822 100644 --- a/packages/backend/test-federation/compose.b.yml +++ b/packages/backend/test-federation/compose.b.yml @@ -37,12 +37,8 @@ services: - internal_network_b volumes: - type: bind - source: ./.config/b.test.default.yml - target: /misskey/.config/default.yml - read_only: true - - type: bind - source: ../scripts/convert_config.js - target: /misskey/packages/backend/scripts/convert_config.js + source: ./.config/b.test.config.json + target: /misskey/built/._config_.json read_only: true db.b.test: diff --git a/packages/backend/test-federation/compose.tpl.yml b/packages/backend/test-federation/compose.tpl.yml index ad9e127b3a..1404345e2a 100644 --- a/packages/backend/test-federation/compose.tpl.yml +++ b/packages/backend/test-federation/compose.tpl.yml @@ -21,6 +21,10 @@ services: - type: bind source: ../../../built target: /misskey/built + read_only: false + - type: bind + source: ./.config/dummy.yml + target: /misskey/.config/default.yml read_only: true - type: bind source: ../assets @@ -43,8 +47,8 @@ services: target: /misskey/packages/backend/package.json read_only: true - type: bind - source: ../scripts/convert_config.js - target: /misskey/packages/backend/scripts/convert_config.js + source: ../scripts/compile_config.js + target: /misskey/packages/backend/scripts/compile_config.js read_only: true - type: bind source: ../../misskey-js/built diff --git a/packages/backend/test-federation/compose.yml b/packages/backend/test-federation/compose.yml index 07c0e03f99..25475a89ab 100644 --- a/packages/backend/test-federation/compose.yml +++ b/packages/backend/test-federation/compose.yml @@ -55,8 +55,8 @@ services: target: /misskey/packages/backend/jest.js read_only: true - type: bind - source: ../scripts/convert_config.js - target: /misskey/packages/backend/scripts/convert_config.js + source: ../scripts/compile_config.js + target: /misskey/packages/backend/scripts/compile_config.js read_only: true - type: bind source: ../../misskey-js/built diff --git a/packages/backend/test-federation/setup.sh b/packages/backend/test-federation/setup.sh index 1bc3a2a87c..15aa2eee7f 100644 --- a/packages/backend/test-federation/setup.sh +++ b/packages/backend/test-federation/setup.sh @@ -28,7 +28,7 @@ function generate { -days 500 if [ ! -f .config/docker.env ]; then cp .config/example.docker.env .config/docker.env; fi if [ ! -f .config/$1.conf ]; then sed "s/\${HOST}/$1/g" .config/example.conf > .config/$1.conf; fi - if [ ! -f .config/$1.default.yml ]; then sed "s/\${HOST}/$1/g" .config/example.default.yml > .config/$1.default.yml; fi + if [ ! -f .config/$1.default.yml ]; then sed "s/\${HOST}/$1/g" .config/example.config.json > .config/$1.config.json; fi } generate a.test From 29a0750eefed50f025c1a613759cf070cb3d147c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 4 Dec 2025 07:51:39 +0000 Subject: [PATCH 12/63] Bump version to 2025.12.0-alpha.2 --- package.json | 2 +- packages/misskey-js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7fe2c36ffc..446c344879 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.12.0-alpha.1", + "version": "2025.12.0-alpha.2", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index c66ca7a3a6..eab037f08d 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.12.0-alpha.1", + "version": "2025.12.0-alpha.2", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 6716950d7fe1819d1f7d990008cc91822c904a4d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:39:33 +0900 Subject: [PATCH 13/63] fix(deps): update dependency body-parser to v2.2.1 [security] (#16899) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/backend/package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index e9143b525a..6ee348da57 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -104,7 +104,7 @@ "async-mutex": "0.5.0", "bcryptjs": "3.0.3", "blurhash": "2.0.5", - "body-parser": "2.2.0", + "body-parser": "2.2.1", "bullmq": "5.64.1", "cacheable-lookup": "7.0.0", "cbor": "10.0.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46b867469c..69aa8cc33f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -193,8 +193,8 @@ importers: specifier: 2.0.5 version: 2.0.5 body-parser: - specifier: 2.2.0 - version: 2.2.0 + specifier: 2.2.1 + version: 2.2.1 bullmq: specifier: 5.64.1 version: 5.64.1 @@ -5619,8 +5619,8 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.0: - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + body-parser@2.2.1: + resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} engines: {node: '>=18'} boolbase@1.0.0: @@ -16242,13 +16242,13 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.2.0: + body-parser@2.2.1: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.0 - iconv-lite: 0.6.3 + iconv-lite: 0.7.0 on-finished: 2.4.1 qs: 6.14.0 raw-body: 3.0.1 @@ -17697,7 +17697,7 @@ snapshots: express@5.1.0: dependencies: accepts: 2.0.0 - body-parser: 2.2.0 + body-parser: 2.2.1 content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.1 From daf2a57b3ca29fe6e8ccce4a36c3538045406a1e Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:01:45 +0900 Subject: [PATCH 14/63] =?UTF-8?q?Revert=20"fix(frontend):=20stacking=20rou?= =?UTF-8?q?ter=20view=E3=81=A7=E9=80=A3=E7=B6=9A=E3=81=97=E3=81=A6?= =?UTF-8?q?=E6=88=BB=E3=82=8B=E6=93=8D=E4=BD=9C=E3=82=92=E8=A1=8C=E3=81=86?= =?UTF-8?q?=E3=81=A8=E4=BD=95=E3=82=82=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=AA=E3=81=8F=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a3c3052d0fae8223b73b4ee0abca2b6702da92a2. --- CHANGELOG.md | 2 +- .../frontend/src/components/global/StackingRouterView.vue | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a30bf8c441..f4f7933824 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正 +- ### Server - Enhance: メモリ使用量を削減しました diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue index e9c24bfcb4..4c56767608 100644 --- a/packages/frontend/src/components/global/StackingRouterView.vue +++ b/packages/frontend/src/components/global/StackingRouterView.vue @@ -74,9 +74,7 @@ function mount() { } function back() { - const prev = tabs.value.at(tabs.value.length - 2); - if (prev == null) return; // transitionの関係でprevが無い状態でbackが呼ばれることがある - + const prev = tabs.value[tabs.value.length - 2]; tabs.value = [...tabs.value.slice(0, tabs.value.length - 1)]; router?.replaceByPath(prev.fullPath); } From fc1e2229e5dc9f89c008403ecb202bd07fba2080 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:03:41 +0900 Subject: [PATCH 15/63] =?UTF-8?q?fix(frontend):=20stacking=20router=20view?= =?UTF-8?q?=E3=81=A7=E9=80=A3=E7=B6=9A=E3=81=97=E3=81=A6=E6=88=BB=E3=82=8B?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E3=82=92=E8=A1=8C=E3=81=86=E3=81=A8=E4=BD=95?= =?UTF-8?q?=E3=82=82=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=8F?= =?UTF-8?q?=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- packages/frontend/src/components/global/StackingRouterView.vue | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4f7933824..a30bf8c441 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正 ### Server - Enhance: メモリ使用量を削減しました diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue index 4c56767608..d52dd9b89d 100644 --- a/packages/frontend/src/components/global/StackingRouterView.vue +++ b/packages/frontend/src/components/global/StackingRouterView.vue @@ -74,6 +74,7 @@ function mount() { } function back() { + if (tabs.value.length <= 1) return; // transitionの関係でタブが1つの状態でbackが呼ばれることがある const prev = tabs.value[tabs.value.length - 2]; tabs.value = [...tabs.value.slice(0, tabs.value.length - 1)]; router?.replaceByPath(prev.fullPath); From 6bb29ab5c34586adc9ec81a28ea0c140373ea2ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:42:36 +0900 Subject: [PATCH 16/63] fix(deps): update dependency @sentry/node to v10.27.0 [security] [ci skip] (#16860) * fix(deps): update dependency @sentry/node to v10.27.0 [security] * fix --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> --- packages/backend/package.json | 6 +- pnpm-lock.yaml | 480 +++++++++++++++++----------------- 2 files changed, 246 insertions(+), 240 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 6ee348da57..fa772e979f 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -89,8 +89,8 @@ "@nestjs/core": "11.1.9", "@nestjs/testing": "11.1.9", "@peertube/http-signature": "1.7.0", - "@sentry/node": "10.26.0", - "@sentry/profiling-node": "10.26.0", + "@sentry/node": "10.27.0", + "@sentry/profiling-node": "10.27.0", "@simplewebauthn/server": "13.2.2", "@sinonjs/fake-timers": "15.0.0", "@smithy/node-http-handler": "4.4.5", @@ -187,7 +187,7 @@ "@jest/globals": "29.7.0", "@kitajs/ts-html-plugin": "4.1.3", "@nestjs/platform-express": "11.1.9", - "@sentry/vue": "10.26.0", + "@sentry/vue": "10.27.0", "@simplewebauthn/types": "12.0.0", "@swc/jest": "0.2.39", "@types/accepts": "1.3.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69aa8cc33f..ac659123ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -148,11 +148,11 @@ importers: specifier: 1.7.0 version: 1.7.0 '@sentry/node': - specifier: 10.26.0 - version: 10.26.0 + specifier: 10.27.0 + version: 10.27.0 '@sentry/profiling-node': - specifier: 10.26.0 - version: 10.26.0 + specifier: 10.27.0 + version: 10.27.0 '@simplewebauthn/server': specifier: 13.2.2 version: 13.2.2 @@ -437,8 +437,8 @@ importers: specifier: 11.1.9 version: 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) '@sentry/vue': - specifier: 10.26.0 - version: 10.26.0(vue@3.5.24(typescript@5.9.3)) + specifier: 10.27.0 + version: 10.27.0(vue@3.5.24(typescript@5.9.3)) '@simplewebauthn/types': specifier: 12.0.0 version: 12.0.0 @@ -3240,14 +3240,10 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@opentelemetry/api-logs@0.204.0': - resolution: {integrity: sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw==} + '@opentelemetry/api-logs@0.208.0': + resolution: {integrity: sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==} engines: {node: '>=8.0.0'} - '@opentelemetry/api-logs@0.57.2': - resolution: {integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==} - engines: {node: '>=14'} - '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} @@ -3258,162 +3254,150 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.1.0': - resolution: {integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.2.0': resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/instrumentation-amqplib@0.51.0': - resolution: {integrity: sha512-XGmjYwjVRktD4agFnWBWQXo9SiYHKBxR6Ag3MLXwtLE4R99N3a08kGKM5SC1qOFKIELcQDGFEFT9ydXMH00Luw==} + '@opentelemetry/instrumentation-amqplib@0.55.0': + resolution: {integrity: sha512-5ULoU8p+tWcQw5PDYZn8rySptGSLZHNX/7srqo2TioPnAAcvTy6sQFQXsNPrAnyRRtYGMetXVyZUy5OaX1+IfA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-connect@0.48.0': - resolution: {integrity: sha512-OMjc3SFL4pC16PeK+tDhwP7MRvDPalYCGSvGqUhX5rASkI2H0RuxZHOWElYeXkV0WP+70Gw6JHWac/2Zqwmhdw==} + '@opentelemetry/instrumentation-connect@0.52.0': + resolution: {integrity: sha512-GXPxfNB5szMbV3I9b7kNWSmQBoBzw7MT0ui6iU/p+NIzVx3a06Ri2cdQO7tG9EKb4aKSLmfX9Cw5cKxXqX6Ohg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-dataloader@0.22.0': - resolution: {integrity: sha512-bXnTcwtngQsI1CvodFkTemrrRSQjAjZxqHVc+CJZTDnidT0T6wt3jkKhnsjU/Kkkc0lacr6VdRpCu2CUWa0OKw==} + '@opentelemetry/instrumentation-dataloader@0.26.0': + resolution: {integrity: sha512-P2BgnFfTOarZ5OKPmYfbXfDFjQ4P9WkQ1Jji7yH5/WwB6Wm/knynAoA1rxbjWcDlYupFkyT0M1j6XLzDzy0aCA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-express@0.53.0': - resolution: {integrity: sha512-r/PBafQmFYRjuxLYEHJ3ze1iBnP2GDA1nXOSS6E02KnYNZAVjj6WcDA1MSthtdAUUK0XnotHvvWM8/qz7DMO5A==} + '@opentelemetry/instrumentation-express@0.57.0': + resolution: {integrity: sha512-HAdx/o58+8tSR5iW+ru4PHnEejyKrAy9fYFhlEI81o10nYxrGahnMAHWiSjhDC7UQSY3I4gjcPgSKQz4rm/asg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-fs@0.24.0': - resolution: {integrity: sha512-HjIxJ6CBRD770KNVaTdMXIv29Sjz4C1kPCCK5x1Ujpc6SNnLGPqUVyJYZ3LUhhnHAqdbrl83ogVWjCgeT4Q0yw==} + '@opentelemetry/instrumentation-fs@0.28.0': + resolution: {integrity: sha512-FFvg8fq53RRXVBRHZViP+EMxMR03tqzEGpuq55lHNbVPyFklSVfQBN50syPhK5UYYwaStx0eyCtHtbRreusc5g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-generic-pool@0.48.0': - resolution: {integrity: sha512-TLv/On8pufynNR+pUbpkyvuESVASZZKMlqCm4bBImTpXKTpqXaJJ3o/MUDeMlM91rpen+PEv2SeyOKcHCSlgag==} + '@opentelemetry/instrumentation-generic-pool@0.52.0': + resolution: {integrity: sha512-ISkNcv5CM2IwvsMVL31Tl61/p2Zm2I2NAsYq5SSBgOsOndT0TjnptjufYVScCnD5ZLD1tpl4T3GEYULLYOdIdQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-graphql@0.52.0': - resolution: {integrity: sha512-3fEJ8jOOMwopvldY16KuzHbRhPk8wSsOTSF0v2psmOCGewh6ad+ZbkTx/xyUK9rUdUMWAxRVU0tFpj4Wx1vkPA==} + '@opentelemetry/instrumentation-graphql@0.56.0': + resolution: {integrity: sha512-IPvNk8AFoVzTAM0Z399t34VDmGDgwT6rIqCUug8P9oAGerl2/PEIYMPOl/rerPGu+q8gSWdmbFSjgg7PDVRd3Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-hapi@0.51.0': - resolution: {integrity: sha512-qyf27DaFNL1Qhbo/da+04MSCw982B02FhuOS5/UF+PMhM61CcOiu7fPuXj8TvbqyReQuJFljXE6UirlvoT/62g==} + '@opentelemetry/instrumentation-hapi@0.55.0': + resolution: {integrity: sha512-prqAkRf9e4eEpy4G3UcR32prKE8NLNlA90TdEU1UsghOTg0jUvs40Jz8LQWFEs5NbLbXHYGzB4CYVkCI8eWEVQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-http@0.204.0': - resolution: {integrity: sha512-1afJYyGRA4OmHTv0FfNTrTAzoEjPQUYgd+8ih/lX0LlZBnGio/O80vxA0lN3knsJPS7FiDrsDrWq25K7oAzbkw==} + '@opentelemetry/instrumentation-http@0.208.0': + resolution: {integrity: sha512-rhmK46DRWEbQQB77RxmVXGyjs6783crXCnFjYQj+4tDH/Kpv9Rbg3h2kaNyp5Vz2emF1f9HOQQvZoHzwMWOFZQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-ioredis@0.52.0': - resolution: {integrity: sha512-rUvlyZwI90HRQPYicxpDGhT8setMrlHKokCtBtZgYxQWRF5RBbG4q0pGtbZvd7kyseuHbFpA3I/5z7M8b/5ywg==} + '@opentelemetry/instrumentation-ioredis@0.56.0': + resolution: {integrity: sha512-XSWeqsd3rKSsT3WBz/JKJDcZD4QYElZEa0xVdX8f9dh4h4QgXhKRLorVsVkK3uXFbC2sZKAS2Ds+YolGwD83Dg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-kafkajs@0.14.0': - resolution: {integrity: sha512-kbB5yXS47dTIdO/lfbbXlzhvHFturbux4EpP0+6H78Lk0Bn4QXiZQW7rmZY1xBCY16mNcCb8Yt0mhz85hTnSVA==} + '@opentelemetry/instrumentation-kafkajs@0.18.0': + resolution: {integrity: sha512-KCL/1HnZN5zkUMgPyOxfGjLjbXjpd4odDToy+7c+UsthIzVLFf99LnfIBE8YSSrYE4+uS7OwJMhvhg3tWjqMBg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-knex@0.49.0': - resolution: {integrity: sha512-NKsRRT27fbIYL4Ix+BjjP8h4YveyKc+2gD6DMZbr5R5rUeDqfC8+DTfIt3c3ex3BIc5Vvek4rqHnN7q34ZetLQ==} + '@opentelemetry/instrumentation-knex@0.53.0': + resolution: {integrity: sha512-xngn5cH2mVXFmiT1XfQ1aHqq1m4xb5wvU6j9lSgLlihJ1bXzsO543cpDwjrZm2nMrlpddBf55w8+bfS4qDh60g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-koa@0.52.0': - resolution: {integrity: sha512-JJSBYLDx/mNSy8Ibi/uQixu2rH0bZODJa8/cz04hEhRaiZQoeJ5UrOhO/mS87IdgVsHrnBOsZ6vDu09znupyuA==} + '@opentelemetry/instrumentation-koa@0.57.0': + resolution: {integrity: sha512-3JS8PU/D5E3q295mwloU2v7c7/m+DyCqdu62BIzWt+3u9utjxC9QS7v6WmUNuoDN3RM+Q+D1Gpj13ERo+m7CGg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + + '@opentelemetry/instrumentation-lru-memoizer@0.53.0': + resolution: {integrity: sha512-LDwWz5cPkWWr0HBIuZUjslyvijljTwmwiItpMTHujaULZCxcYE9eU44Qf/pbVC8TulT0IhZi+RoGvHKXvNhysw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-lru-memoizer@0.49.0': - resolution: {integrity: sha512-ctXu+O/1HSadAxtjoEg2w307Z5iPyLOMM8IRNwjaKrIpNAthYGSOanChbk1kqY6zU5CrpkPHGdAT6jk8dXiMqw==} + '@opentelemetry/instrumentation-mongodb@0.61.0': + resolution: {integrity: sha512-OV3i2DSoY5M/pmLk+68xr5RvkHU8DRB3DKMzYJdwDdcxeLs62tLbkmRyqJZsYf3Ht7j11rq35pHOWLuLzXL7pQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mongodb@0.57.0': - resolution: {integrity: sha512-KD6Rg0KSHWDkik+qjIOWoksi1xqSpix8TSPfquIK1DTmd9OTFb5PHmMkzJe16TAPVEuElUW8gvgP59cacFcrMQ==} + '@opentelemetry/instrumentation-mongoose@0.55.0': + resolution: {integrity: sha512-5afj0HfF6aM6Nlqgu6/PPHFk8QBfIe3+zF9FGpX76jWPS0/dujoEYn82/XcLSaW5LPUDW8sni+YeK0vTBNri+w==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mongoose@0.51.0': - resolution: {integrity: sha512-gwWaAlhhV2By7XcbyU3DOLMvzsgeaymwP/jktDC+/uPkCmgB61zurwqOQdeiRq9KAf22Y2dtE5ZLXxytJRbEVA==} + '@opentelemetry/instrumentation-mysql2@0.55.0': + resolution: {integrity: sha512-0cs8whQG55aIi20gnK8B7cco6OK6N+enNhW0p5284MvqJ5EPi+I1YlWsWXgzv/V2HFirEejkvKiI4Iw21OqDWg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mysql2@0.51.0': - resolution: {integrity: sha512-zT2Wg22Xn43RyfU3NOUmnFtb5zlDI0fKcijCj9AcK9zuLZ4ModgtLXOyBJSSfO+hsOCZSC1v/Fxwj+nZJFdzLQ==} + '@opentelemetry/instrumentation-mysql@0.54.0': + resolution: {integrity: sha512-bqC1YhnwAeWmRzy1/Xf9cDqxNG2d/JDkaxnqF5N6iJKN1eVWI+vg7NfDkf52/Nggp3tl1jcC++ptC61BD6738A==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mysql@0.50.0': - resolution: {integrity: sha512-duKAvMRI3vq6u9JwzIipY9zHfikN20bX05sL7GjDeLKr2qV0LQ4ADtKST7KStdGcQ+MTN5wghWbbVdLgNcB3rA==} + '@opentelemetry/instrumentation-pg@0.61.0': + resolution: {integrity: sha512-UeV7KeTnRSM7ECHa3YscoklhUtTQPs6V6qYpG283AB7xpnPGCUCUfECFT9jFg6/iZOQTt3FHkB1wGTJCNZEvPw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-pg@0.57.0': - resolution: {integrity: sha512-dWLGE+r5lBgm2A8SaaSYDE3OKJ/kwwy5WLyGyzor8PLhUL9VnJRiY6qhp4njwhnljiLtzeffRtG2Mf/YyWLeTw==} + '@opentelemetry/instrumentation-redis@0.57.0': + resolution: {integrity: sha512-bCxTHQFXzrU3eU1LZnOZQ3s5LURxQPDlU3/upBzlWY77qOI1GZuGofazj3jtzjctMJeBEJhNwIFEgRPBX1kp/Q==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-redis@0.53.0': - resolution: {integrity: sha512-WUHV8fr+8yo5RmzyU7D5BIE1zwiaNQcTyZPwtxlfr7px6NYYx7IIpSihJK7WA60npWynfxxK1T67RAVF0Gdfjg==} + '@opentelemetry/instrumentation-tedious@0.27.0': + resolution: {integrity: sha512-jRtyUJNZppPBjPae4ZjIQ2eqJbcRaRfJkr0lQLHFmOU/no5A6e9s1OHLd5XZyZoBJ/ymngZitanyRRA5cniseA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-tedious@0.23.0': - resolution: {integrity: sha512-3TMTk/9VtlRonVTaU4tCzbg4YqW+Iq/l5VnN2e5whP6JgEg/PKfrGbqQ+CxQWNLfLaQYIUgEZqAn5gk/inh1uQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-undici@0.15.0': - resolution: {integrity: sha512-sNFGA/iCDlVkNjzTzPRcudmI11vT/WAfAguRdZY9IspCw02N4WSC72zTuQhSMheh2a1gdeM9my1imnKRvEEvEg==} + '@opentelemetry/instrumentation-undici@0.19.0': + resolution: {integrity: sha512-Pst/RhR61A2OoZQZkn6OLpdVpXp6qn3Y92wXa6umfJe9rV640r4bc6SWvw4pPN6DiQqPu2c8gnSSZPDtC6JlpQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.7.0 - '@opentelemetry/instrumentation@0.204.0': - resolution: {integrity: sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==} + '@opentelemetry/instrumentation@0.208.0': + resolution: {integrity: sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.57.2': - resolution: {integrity: sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - '@opentelemetry/redis-common@0.38.2': resolution: {integrity: sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==} engines: {node: ^18.19.0 || >=20.6.0} @@ -3579,8 +3563,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@prisma/instrumentation@6.15.0': - resolution: {integrity: sha512-6TXaH6OmDkMOQvOxwLZ8XS51hU2v4A3vmE2pSijCIiGRJYyNeMcL6nMHQMyYdZRD8wl7LF3Wzc+AMPMV/9Oo7A==} + '@prisma/instrumentation@6.19.0': + resolution: {integrity: sha512-QcuYy25pkXM8BJ37wVFBO7Zh34nyRV1GOb2n3lPkkbRYfl4hWl3PTcImP41P0KrzVXfa/45p6eVCos27x3exIg==} peerDependencies: '@opentelemetry/api': ^1.8 @@ -3801,10 +3785,18 @@ packages: resolution: {integrity: sha512-rPg1+JZlfp912pZONQAWZzbSaZ9L6R2VrMcCEa+2e2Gqk9um4b+LqF5RQWZsbt5Z0n0azSy/KQ6zAe/zTPXSOg==} engines: {node: '>=18'} + '@sentry-internal/browser-utils@10.27.0': + resolution: {integrity: sha512-17tO6AXP+rmVQtLJ3ROQJF2UlFmvMWp7/8RDT5x9VM0w0tY31z8Twc0gw2KA7tcDxa5AaHDUbf9heOf+R6G6ow==} + engines: {node: '>=18'} + '@sentry-internal/feedback@10.26.0': resolution: {integrity: sha512-0vk9eQP0CXD7Y2WkcCIWHaAqnXOAi18/GupgWLnbB2kuQVYVtStWxtW+OWRe8W/XwSnZ5m6JBTVeokuk/O16DQ==} engines: {node: '>=18'} + '@sentry-internal/feedback@10.27.0': + resolution: {integrity: sha512-UecsIDJcv7VBwycge/MDvgSRxzevDdcItE1i0KSwlPz00rVVxLY9kV28PJ4I2E7r6/cIaP9BkbWegCEcv09NuA==} + engines: {node: '>=18'} + '@sentry-internal/node-cpu-profiler@2.2.0': resolution: {integrity: sha512-oLHVYurqZfADPh5hvmQYS5qx8t0UZzT2u6+/68VXsFruQEOnYJTODKgU3BVLmemRs3WE6kCJjPeFdHVYOQGSzQ==} engines: {node: '>=18'} @@ -3813,46 +3805,62 @@ packages: resolution: {integrity: sha512-vs7d/P+8M1L1JVAhhJx2wo15QDhqAipnEQvuRZ6PV7LUcS1un9/Vx49FMxpIkx6JcKADJVwtXrS1sX2hoNT/kw==} engines: {node: '>=18'} + '@sentry-internal/replay-canvas@10.27.0': + resolution: {integrity: sha512-inhsRYSVBpu3BI1kZphXj6uB59baJpYdyHeIPCiTfdFNBE5tngNH0HS/aedZ1g9zICw290lwvpuyrWJqp4VBng==} + engines: {node: '>=18'} + '@sentry-internal/replay@10.26.0': resolution: {integrity: sha512-FMySQnY2/p0dVtFUBgUO+aMdK2ovqnd7Q/AkvMQUsN/5ulyj6KZx3JX3CqOqRtAr1izoCe4Kh2pi5t//sQmvsg==} engines: {node: '>=18'} + '@sentry-internal/replay@10.27.0': + resolution: {integrity: sha512-tKSzHq1hNzB619Ssrqo25cqdQJ84R3xSSLsUWEnkGO/wcXJvpZy94gwdoS+KmH18BB1iRRRGtnMxZcUkiPSesw==} + engines: {node: '>=18'} + '@sentry/browser@10.26.0': resolution: {integrity: sha512-uvV4hnkt8bh8yP0disJ0fszy8FdnkyGtzyIVKdeQZbNUefwbDhd3H0KJrAHhJ5ocULMH3B+dipdPmw2QXbEflg==} engines: {node: '>=18'} + '@sentry/browser@10.27.0': + resolution: {integrity: sha512-G8q362DdKp9y1b5qkQEmhTFzyWTOVB0ps1rflok0N6bVA75IEmSDX1pqJsNuY3qy14VsVHYVwQBJQsNltQLS0g==} + engines: {node: '>=18'} + '@sentry/core@10.26.0': resolution: {integrity: sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q==} engines: {node: '>=18'} - '@sentry/node-core@10.26.0': - resolution: {integrity: sha512-7OrHVn8XAsq9mMVMlpL18XTKQEVcLOJSo0n2M7QGKfFk/OfVtSFMcUWGqN1qhYtT9aMTr2bjtR5+BI33djnNTQ==} + '@sentry/core@10.27.0': + resolution: {integrity: sha512-Zc68kdH7tWTDtDbV1zWIbo3Jv0fHAU2NsF5aD2qamypKgfSIMSbWVxd22qZyDBkaX8gWIPm/0Sgx6aRXRBXrYQ==} + engines: {node: '>=18'} + + '@sentry/node-core@10.27.0': + resolution: {integrity: sha512-Dzo1I64Psb7AkpyKVUlR9KYbl4wcN84W4Wet3xjLmVKMgrCo2uAT70V4xIacmoMH5QLZAx0nGfRy9yRCd4nzBg==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.9.0 - '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 - '@opentelemetry/core': ^1.30.1 || ^2.1.0 + '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0 '@opentelemetry/instrumentation': '>=0.57.1 <1' - '@opentelemetry/resources': ^1.30.1 || ^2.1.0 - '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 + '@opentelemetry/resources': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0 '@opentelemetry/semantic-conventions': ^1.37.0 - '@sentry/node@10.26.0': - resolution: {integrity: sha512-VUwNoKYhRpnHQSj9lty1TgooO+1wcpS1V0K87HU8sZEas5gx3Ujiouk5ocPjlgbKreoYOApgOnEEIq5W/hfQcQ==} + '@sentry/node@10.27.0': + resolution: {integrity: sha512-1cQZ4+QqV9juW64Jku1SMSz+PoZV+J59lotz4oYFvCNYzex8hRAnDKvNiKW1IVg5mEEkz98mg1fvcUtiw7GTiQ==} engines: {node: '>=18'} - '@sentry/opentelemetry@10.26.0': - resolution: {integrity: sha512-ASJdOwn6NwMH2ZeBrnGJI+l/xkJp1AOiQ5FWkvTqLc/vHX+r3PDMO7c+koecY+LiZxSzZF4IV8sALXfOh6UnwA==} + '@sentry/opentelemetry@10.27.0': + resolution: {integrity: sha512-z2vXoicuGiqlRlgL9HaYJgkin89ncMpNQy0Kje6RWyhpzLe8BRgUXlgjux7WrSrcbopDdC1OttSpZsJ/Wjk7fg==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.9.0 - '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 - '@opentelemetry/core': ^1.30.1 || ^2.1.0 - '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 + '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0 + '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0 '@opentelemetry/semantic-conventions': ^1.37.0 - '@sentry/profiling-node@10.26.0': - resolution: {integrity: sha512-NgfKgrJc39q/khkWZFph1tiZ1uUadtL8VrBTe+7eB/vogPAuEJa+eH/oCS3/M+Pu2fal61MoCw+2qHDH5JDxQQ==} + '@sentry/profiling-node@10.27.0': + resolution: {integrity: sha512-IMUdgNaiT7aji6/VDF5F1noY8LPpF3yFD6BjomQz72h0KeUrN/88S5MZNjcY7ZpW7wvI2yahUDLkMk11ScSMXQ==} engines: {node: '>=18'} hasBin: true @@ -3866,6 +3874,16 @@ packages: pinia: optional: true + '@sentry/vue@10.27.0': + resolution: {integrity: sha512-vQVxnw59jRe5WsdB9ad/WpMPQ93QXE6Y0JEy01xIRcDlQ1pXp5wuxLkKGuTfvjdQzVUGIBLr0CgIqRAmPRymVg==} + engines: {node: '>=18'} + peerDependencies: + pinia: 2.x || 3.x + vue: 2.x || 3.x + peerDependenciesMeta: + pinia: + optional: true + '@shikijs/core@3.15.0': resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} @@ -4811,9 +4829,6 @@ packages: '@types/pg-pool@2.0.6': resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} - '@types/pg@8.15.5': - resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} - '@types/pg@8.15.6': resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==} @@ -4874,9 +4889,6 @@ packages: '@types/serviceworker@0.0.74': resolution: {integrity: sha512-HNt7NJHrjGtCmI3h1+rsb1g/ZY0iy5KaeenfEV7zAWPSaCs49hEUvgH++V1BHNwlLfB3sbjPh3pSiNixfYjb1w==} - '@types/shimmer@1.2.0': - resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} - '@types/simple-oauth2@5.0.7': resolution: {integrity: sha512-8JbWVJbiTSBQP/7eiyGKyXWAqp3dKQZpaA+pdW16FCi32ujkzRMG8JfjoAzdWt6W8U591ZNdHcPtP2D7ILTKuA==} @@ -7387,8 +7399,8 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-in-the-middle@1.15.0: - resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==} + import-in-the-middle@2.0.0: + resolution: {integrity: sha512-yNZhyQYqXpkT0AKq3F3KLasUSK4fHvebNH5hOsKQw2dhGSALvQ4U0BqUc5suziKvydO5u5hgN2hy1RJaho8U5A==} import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} @@ -9601,9 +9613,9 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - require-in-the-middle@7.5.2: - resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} - engines: {node: '>=8.6.0'} + require-in-the-middle@8.0.1: + resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} + engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} @@ -9838,9 +9850,6 @@ packages: shiki@3.15.0: resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} - shimmer@1.2.1: - resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} - side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -13272,11 +13281,7 @@ snapshots: '@open-draft/until@2.1.0': {} - '@opentelemetry/api-logs@0.204.0': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api-logs@0.57.2': + '@opentelemetry/api-logs@0.208.0': dependencies: '@opentelemetry/api': 1.9.0 @@ -13286,224 +13291,202 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.38.0 - '@opentelemetry/instrumentation-amqplib@0.51.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-amqplib@0.55.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-connect@0.48.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-connect@0.52.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 '@types/connect': 3.4.38 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-dataloader@0.22.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-dataloader@0.26.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-express@0.53.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-express@0.57.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fs@0.24.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-fs@0.28.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-generic-pool@0.48.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-generic-pool@0.52.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-graphql@0.52.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-graphql@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-hapi@0.51.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-hapi@0.55.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-http@0.204.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-http@0.208.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 forwarded-parse: 2.1.2 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-ioredis@0.52.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-ioredis@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.38.2 - '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-kafkajs@0.14.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-kafkajs@0.18.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-knex@0.49.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-knex@0.53.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-koa@0.52.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-koa@0.57.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-lru-memoizer@0.49.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-lru-memoizer@0.53.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongodb@0.57.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mongodb@0.61.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongoose@0.51.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mongoose@0.55.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql2@0.51.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mysql2@0.55.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql@0.50.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mysql@0.54.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@types/mysql': 2.15.27 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-pg@0.57.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-pg@0.61.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) - '@types/pg': 8.15.5 + '@types/pg': 8.15.6 '@types/pg-pool': 2.0.6 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-redis@0.53.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-redis@0.57.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.38.2 '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-tedious@0.23.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-tedious@0.27.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@types/tedious': 4.0.14 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-undici@0.15.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-undici@0.19.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.204.0 - import-in-the-middle: 1.15.0 - require-in-the-middle: 7.5.2 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.57.2 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.15.0 - require-in-the-middle: 7.5.2 - semver: 7.7.3 - shimmer: 1.2.1 + '@opentelemetry/api-logs': 0.208.0 + import-in-the-middle: 2.0.0 + require-in-the-middle: 8.0.1 transitivePeerDependencies: - supports-color @@ -13701,10 +13684,10 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@prisma/instrumentation@6.15.0(@opentelemetry/api@1.9.0)': + '@prisma/instrumentation@6.19.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color @@ -13889,10 +13872,18 @@ snapshots: dependencies: '@sentry/core': 10.26.0 + '@sentry-internal/browser-utils@10.27.0': + dependencies: + '@sentry/core': 10.27.0 + '@sentry-internal/feedback@10.26.0': dependencies: '@sentry/core': 10.26.0 + '@sentry-internal/feedback@10.27.0': + dependencies: + '@sentry/core': 10.27.0 + '@sentry-internal/node-cpu-profiler@2.2.0': dependencies: detect-libc: 2.1.2 @@ -13903,11 +13894,21 @@ snapshots: '@sentry-internal/replay': 10.26.0 '@sentry/core': 10.26.0 + '@sentry-internal/replay-canvas@10.27.0': + dependencies: + '@sentry-internal/replay': 10.27.0 + '@sentry/core': 10.27.0 + '@sentry-internal/replay@10.26.0': dependencies: '@sentry-internal/browser-utils': 10.26.0 '@sentry/core': 10.26.0 + '@sentry-internal/replay@10.27.0': + dependencies: + '@sentry-internal/browser-utils': 10.27.0 + '@sentry/core': 10.27.0 + '@sentry/browser@10.26.0': dependencies: '@sentry-internal/browser-utils': 10.26.0 @@ -13916,78 +13917,88 @@ snapshots: '@sentry-internal/replay-canvas': 10.26.0 '@sentry/core': 10.26.0 + '@sentry/browser@10.27.0': + dependencies: + '@sentry-internal/browser-utils': 10.27.0 + '@sentry-internal/feedback': 10.27.0 + '@sentry-internal/replay': 10.27.0 + '@sentry-internal/replay-canvas': 10.27.0 + '@sentry/core': 10.27.0 + '@sentry/core@10.26.0': {} - '@sentry/node-core@10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)': + '@sentry/core@10.27.0': {} + + '@sentry/node-core@10.27.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)': dependencies: '@apm-js-collab/tracing-hooks': 0.3.1 '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 - '@sentry/core': 10.26.0 - '@sentry/opentelemetry': 10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) - import-in-the-middle: 1.15.0 + '@sentry/core': 10.27.0 + '@sentry/opentelemetry': 10.27.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) + import-in-the-middle: 2.0.0 transitivePeerDependencies: - supports-color - '@sentry/node@10.26.0': + '@sentry/node@10.27.0': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-amqplib': 0.51.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-connect': 0.48.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-dataloader': 0.22.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-express': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fs': 0.24.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-generic-pool': 0.48.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-graphql': 0.52.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-hapi': 0.51.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-http': 0.204.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-ioredis': 0.52.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-kafkajs': 0.14.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-knex': 0.49.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-koa': 0.52.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-lru-memoizer': 0.49.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongodb': 0.57.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongoose': 0.51.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql': 0.50.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql2': 0.51.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pg': 0.57.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-redis': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-tedious': 0.23.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-undici': 0.15.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.57.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.208.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.18.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.57.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.61.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.54.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.61.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis': 0.57.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.19.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 - '@prisma/instrumentation': 6.15.0(@opentelemetry/api@1.9.0) - '@sentry/core': 10.26.0 - '@sentry/node-core': 10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) - '@sentry/opentelemetry': 10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) - import-in-the-middle: 1.15.0 + '@prisma/instrumentation': 6.19.0(@opentelemetry/api@1.9.0) + '@sentry/core': 10.27.0 + '@sentry/node-core': 10.27.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) + '@sentry/opentelemetry': 10.27.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0) + import-in-the-middle: 2.0.0 minimatch: 9.0.5 transitivePeerDependencies: - supports-color - '@sentry/opentelemetry@10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)': + '@sentry/opentelemetry@10.27.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.38.0 - '@sentry/core': 10.26.0 + '@sentry/core': 10.27.0 - '@sentry/profiling-node@10.26.0': + '@sentry/profiling-node@10.27.0': dependencies: '@sentry-internal/node-cpu-profiler': 2.2.0 - '@sentry/core': 10.26.0 - '@sentry/node': 10.26.0 + '@sentry/core': 10.27.0 + '@sentry/node': 10.27.0 transitivePeerDependencies: - supports-color @@ -13997,6 +14008,12 @@ snapshots: '@sentry/core': 10.26.0 vue: 3.5.24(typescript@5.9.3) + '@sentry/vue@10.27.0(vue@3.5.24(typescript@5.9.3))': + dependencies: + '@sentry/browser': 10.27.0 + '@sentry/core': 10.27.0 + vue: 3.5.24(typescript@5.9.3) + '@shikijs/core@3.15.0': dependencies: '@shikijs/types': 3.15.0 @@ -15201,12 +15218,6 @@ snapshots: dependencies: '@types/pg': 8.15.6 - '@types/pg@8.15.5': - dependencies: - '@types/node': 24.10.1 - pg-protocol: 1.10.3 - pg-types: 2.2.0 - '@types/pg@8.15.6': dependencies: '@types/node': 24.10.1 @@ -15268,8 +15279,6 @@ snapshots: '@types/serviceworker@0.0.74': {} - '@types/shimmer@1.2.0': {} - '@types/simple-oauth2@5.0.7': {} '@types/sinon@17.0.4': @@ -18434,7 +18443,7 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-in-the-middle@1.15.0: + import-in-the-middle@2.0.0: dependencies: acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) @@ -21058,11 +21067,10 @@ snapshots: require-from-string@2.0.2: {} - require-in-the-middle@7.5.2: + require-in-the-middle@8.0.1: dependencies: debug: 4.4.3(supports-color@10.2.2) module-details-from-path: 1.0.4 - resolve: 1.22.11 transitivePeerDependencies: - supports-color @@ -21386,8 +21394,6 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shimmer@1.2.1: {} - side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 From 50379e52db0be24116e079e513131b9e29088cfe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:57:47 +0900 Subject: [PATCH 17/63] fix(deps): update dependency nodemailer to v7.0.11 [security] [ci skip] (#16919) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> --- packages/backend/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index fa772e979f..5f5595b326 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -143,7 +143,7 @@ "nested-property": "4.0.0", "node-fetch": "3.3.2", "node-html-parser": "7.0.1", - "nodemailer": "7.0.10", + "nodemailer": "7.0.11", "nsfwjs": "4.2.0", "oauth": "0.10.2", "oauth2orize": "1.12.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac659123ab..61467d7166 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -310,8 +310,8 @@ importers: specifier: 7.0.1 version: 7.0.1 nodemailer: - specifier: 7.0.10 - version: 7.0.10 + specifier: 7.0.11 + version: 7.0.11 nsfwjs: specifier: 4.2.0 version: 4.2.0(@tensorflow/tfjs@4.22.0(encoding@0.1.13)(seedrandom@3.0.5))(buffer@6.0.3) @@ -8651,8 +8651,8 @@ packages: node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - nodemailer@7.0.10: - resolution: {integrity: sha512-Us/Se1WtT0ylXgNFfyFSx4LElllVLJXQjWi2Xz17xWw7amDKO2MLtFnVp1WACy7GkVGs+oBlRopVNUzlrGSw1w==} + nodemailer@7.0.11: + resolution: {integrity: sha512-gnXhNRE0FNhD7wPSCGhdNh46Hs6nm+uTyg+Kq0cZukNQiYdnCsoQjodNP9BQVG9XrcK/v6/MgpAPBUFyzh9pvw==} engines: {node: '>=6.0.0'} nodemon@3.1.11: @@ -20056,7 +20056,7 @@ snapshots: node-releases@2.0.27: {} - nodemailer@7.0.10: {} + nodemailer@7.0.11: {} nodemon@3.1.11: dependencies: From 4ee6f90ab20dec17291f9d1c5b35b1aa862ac9c1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 21:31:04 +0900 Subject: [PATCH 18/63] chore(deps): update [tools] update dependencies to v4.0.14 [ci skip] (#16940) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- scripts/changelog-checker/package-lock.json | 106 ++++++++++---------- scripts/changelog-checker/package.json | 4 +- 2 files changed, 53 insertions(+), 57 deletions(-) diff --git a/scripts/changelog-checker/package-lock.json b/scripts/changelog-checker/package-lock.json index 3bf65e528a..cb18038f52 100644 --- a/scripts/changelog-checker/package-lock.json +++ b/scripts/changelog-checker/package-lock.json @@ -10,7 +10,7 @@ "devDependencies": { "@types/mdast": "4.0.4", "@types/node": "24.10.1", - "@vitest/coverage-v8": "4.0.13", + "@vitest/coverage-v8": "4.0.14", "mdast-util-to-string": "4.0.0", "remark": "15.0.1", "remark-parse": "11.0.0", @@ -18,7 +18,7 @@ "unified": "11.0.5", "vite": "7.2.4", "vite-node": "5.2.0", - "vitest": "4.0.13" + "vitest": "4.0.14" } }, "node_modules/@babel/helper-string-parser": { @@ -915,21 +915,21 @@ "dev": true }, "node_modules/@vitest/coverage-v8": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.13.tgz", - "integrity": "sha512-w77N6bmtJ3CFnL/YHiYotwW/JI3oDlR3K38WEIqegRfdMSScaYxwYKB/0jSNpOTZzUjQkG8HHEz4sdWQMWpQ5g==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.14.tgz", + "integrity": "sha512-EYHLqN/BY6b47qHH7gtMxAg++saoGmsjWmAq9MlXxAz4M0NcHh9iOyKhBZyU4yxZqOd8Xnqp80/5saeitz4Cng==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.0.13", + "@vitest/utils": "4.0.14", "ast-v8-to-istanbul": "^0.3.8", - "debug": "^4.4.3", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.2.0", "magicast": "^0.5.1", + "obug": "^2.1.1", "std-env": "^3.10.0", "tinyrainbow": "^3.0.3" }, @@ -937,8 +937,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.0.13", - "vitest": "4.0.13" + "@vitest/browser": "4.0.14", + "vitest": "4.0.14" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -947,16 +947,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.13.tgz", - "integrity": "sha512-zYtcnNIBm6yS7Gpr7nFTmq8ncowlMdOJkWLqYvhr/zweY6tFbDkDi8BPPOeHxEtK1rSI69H7Fd4+1sqvEGli6w==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.14.tgz", + "integrity": "sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.13", - "@vitest/utils": "4.0.13", + "@vitest/spy": "4.0.14", + "@vitest/utils": "4.0.14", "chai": "^6.2.1", "tinyrainbow": "^3.0.3" }, @@ -965,13 +965,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.13.tgz", - "integrity": "sha512-eNCwzrI5djoauklwP1fuslHBjrbR8rqIVbvNlAnkq1OTa6XT+lX68mrtPirNM9TnR69XUPt4puBCx2Wexseylg==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.14.tgz", + "integrity": "sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.13", + "@vitest/spy": "4.0.14", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -992,9 +992,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.13.tgz", - "integrity": "sha512-ooqfze8URWbI2ozOeLDMh8YZxWDpGXoeY3VOgcDnsUxN0jPyPWSUvjPQWqDGCBks+opWlN1E4oP1UYl3C/2EQA==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.14.tgz", + "integrity": "sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1005,13 +1005,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.13.tgz", - "integrity": "sha512-9IKlAru58wcVaWy7hz6qWPb2QzJTKt+IOVKjAx5vb5rzEFPTL6H4/R9BMvjZ2ppkxKgTrFONEJFtzvnyEpiT+A==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.14.tgz", + "integrity": "sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.13", + "@vitest/utils": "4.0.14", "pathe": "^2.0.3" }, "funding": { @@ -1019,13 +1019,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.13.tgz", - "integrity": "sha512-hb7Usvyika1huG6G6l191qu1urNPsq1iFc2hmdzQY3F5/rTgqQnwwplyf8zoYHkpt7H6rw5UfIw6i/3qf9oSxQ==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.14.tgz", + "integrity": "sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.13", + "@vitest/pretty-format": "4.0.14", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -1034,9 +1034,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.13.tgz", - "integrity": "sha512-hSu+m4se0lDV5yVIcNWqjuncrmBgwaXa2utFLIrBkQCQkt+pSwyZTPFQAZiiF/63j8jYa8uAeUZ3RSfcdWaYWw==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.14.tgz", + "integrity": "sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==", "dev": true, "license": "MIT", "funding": { @@ -1044,13 +1044,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.13.tgz", - "integrity": "sha512-ydozWyQ4LZuu8rLp47xFUWis5VOKMdHjXCWhs1LuJsTNKww+pTHQNK4e0assIB9K80TxFyskENL6vCu3j34EYA==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.14.tgz", + "integrity": "sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.13", + "@vitest/pretty-format": "4.0.14", "tinyrainbow": "^3.0.3" }, "funding": { @@ -2439,24 +2439,24 @@ } }, "node_modules/vitest": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.13.tgz", - "integrity": "sha512-QSD4I0fN6uZQfftryIXuqvqgBxTvJ3ZNkF6RWECd82YGAYAfhcppBLFXzXJHQAAhVFyYEuFTrq6h0hQqjB7jIQ==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.14.tgz", + "integrity": "sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vitest/expect": "4.0.13", - "@vitest/mocker": "4.0.13", - "@vitest/pretty-format": "4.0.13", - "@vitest/runner": "4.0.13", - "@vitest/snapshot": "4.0.13", - "@vitest/spy": "4.0.13", - "@vitest/utils": "4.0.13", - "debug": "^4.4.3", + "@vitest/expect": "4.0.14", + "@vitest/mocker": "4.0.14", + "@vitest/pretty-format": "4.0.14", + "@vitest/runner": "4.0.14", + "@vitest/snapshot": "4.0.14", + "@vitest/spy": "4.0.14", + "@vitest/utils": "4.0.14", "es-module-lexer": "^1.7.0", "expect-type": "^1.2.2", "magic-string": "^0.30.21", + "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^3.10.0", @@ -2479,12 +2479,11 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", - "@types/debug": "^4.1.12", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.13", - "@vitest/browser-preview": "4.0.13", - "@vitest/browser-webdriverio": "4.0.13", - "@vitest/ui": "4.0.13", + "@vitest/browser-playwright": "4.0.14", + "@vitest/browser-preview": "4.0.14", + "@vitest/browser-webdriverio": "4.0.14", + "@vitest/ui": "4.0.14", "happy-dom": "*", "jsdom": "*" }, @@ -2495,9 +2494,6 @@ "@opentelemetry/api": { "optional": true }, - "@types/debug": { - "optional": true - }, "@types/node": { "optional": true }, diff --git a/scripts/changelog-checker/package.json b/scripts/changelog-checker/package.json index 8cc94d0532..3ca43d9001 100644 --- a/scripts/changelog-checker/package.json +++ b/scripts/changelog-checker/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@types/mdast": "4.0.4", "@types/node": "24.10.1", - "@vitest/coverage-v8": "4.0.13", + "@vitest/coverage-v8": "4.0.14", "mdast-util-to-string": "4.0.0", "remark": "15.0.1", "remark-parse": "11.0.0", @@ -19,6 +19,6 @@ "unified": "11.0.5", "vite": "7.2.4", "vite-node": "5.2.0", - "vitest": "4.0.13" + "vitest": "4.0.14" } } From b0bffd3842bdd796982f96859105db003c9076d7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 23:10:04 +0900 Subject: [PATCH 19/63] fix(deps): update [frontend] update dependencies [ci skip] (#16942) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/frontend-builder/package.json | 4 +- packages/frontend-embed/package.json | 22 +- packages/frontend-shared/package.json | 8 +- packages/frontend/package.json | 42 +- packages/icons-subsetter/package.json | 4 +- packages/misskey-bubble-game/package.json | 4 +- packages/misskey-reversi/package.json | 4 +- packages/sw/package.json | 2 +- pnpm-lock.yaml | 1255 +++++++++++++-------- 9 files changed, 852 insertions(+), 493 deletions(-) diff --git a/packages/frontend-builder/package.json b/packages/frontend-builder/package.json index 37dd133fe6..36c32b915d 100644 --- a/packages/frontend-builder/package.json +++ b/packages/frontend-builder/package.json @@ -12,8 +12,8 @@ "devDependencies": { "@types/estree": "1.0.8", "@types/node": "24.10.1", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", "rollup": "4.53.3", "typescript": "5.9.3" }, diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index c27583cf86..6122f2cab6 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -17,7 +17,7 @@ "@rollup/pluginutils": "5.3.0", "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "6.0.2", - "@vue/compiler-sfc": "3.5.24", + "@vue/compiler-sfc": "3.5.25", "astring": "1.9.0", "buraha": "0.0.1", "estree-walker": "3.0.3", @@ -29,14 +29,14 @@ "punycode.js": "2.3.1", "rollup": "4.53.3", "sass": "1.94.2", - "shiki": "3.15.0", + "shiki": "3.17.0", "tinycolor2": "1.6.0", "tsc-alias": "1.8.16", "tsconfig-paths": "4.2.0", "typescript": "5.9.3", "uuid": "13.0.0", "vite": "7.2.4", - "vue": "3.5.24" + "vue": "3.5.25" }, "devDependencies": { "@misskey-dev/summaly": "5.2.5", @@ -48,21 +48,21 @@ "@types/punycode.js": "npm:@types/punycode@2.1.4", "@types/tinycolor2": "1.4.6", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", - "@vitest/coverage-v8": "4.0.13", - "@vue/runtime-core": "3.5.24", + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", + "@vitest/coverage-v8": "4.0.14", + "@vue/runtime-core": "3.5.25", "acorn": "8.15.0", "cross-env": "10.1.0", "eslint-plugin-import": "2.32.0", - "eslint-plugin-vue": "10.6.0", + "eslint-plugin-vue": "10.6.2", "fast-glob": "3.3.3", - "happy-dom": "20.0.10", + "happy-dom": "20.0.11", "intersection-observer": "0.12.2", "micromatch": "4.0.8", - "msw": "2.12.2", + "msw": "2.12.3", "nodemon": "3.1.11", - "prettier": "3.6.2", + "prettier": "3.7.1", "start-server-and-test": "2.1.3", "tsx": "4.20.6", "vite-plugin-turbosnap": "1.0.3", diff --git a/packages/frontend-shared/package.json b/packages/frontend-shared/package.json index 5806414930..baf5c561d8 100644 --- a/packages/frontend-shared/package.json +++ b/packages/frontend-shared/package.json @@ -22,10 +22,10 @@ }, "devDependencies": { "@types/node": "24.10.1", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", "esbuild": "0.27.0", - "eslint-plugin-vue": "10.6.0", + "eslint-plugin-vue": "10.6.2", "nodemon": "3.1.11", "typescript": "5.9.3", "vue-eslint-parser": "10.2.0" @@ -36,6 +36,6 @@ "dependencies": { "i18n": "workspace:*", "misskey-js": "workspace:*", - "vue": "3.5.24" + "vue": "3.5.25" } } diff --git a/packages/frontend/package.json b/packages/frontend/package.json index c3baf5ea74..c9d49201c4 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -25,12 +25,12 @@ "@rollup/plugin-json": "6.1.0", "@rollup/plugin-replace": "6.0.3", "@rollup/pluginutils": "5.3.0", - "@sentry/vue": "10.26.0", + "@sentry/vue": "10.27.0", "@syuilo/aiscript": "1.2.0", "@syuilo/aiscript-0-19-0": "npm:@syuilo/aiscript@^0.19.0", "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "6.0.2", - "@vue/compiler-sfc": "3.5.24", + "@vue/compiler-sfc": "3.5.25", "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15", "analytics": "0.8.19", "astring": "1.9.0", @@ -59,7 +59,7 @@ "json5": "2.2.3", "magic-string": "0.30.21", "matter-js": "0.20.0", - "mediabunny": "1.25.1", + "mediabunny": "1.25.3", "mfm-js": "0.25.0", "misskey-bubble-game": "workspace:*", "misskey-js": "workspace:*", @@ -71,7 +71,7 @@ "rollup": "4.53.3", "sanitize-html": "2.17.0", "sass": "1.94.2", - "shiki": "3.15.0", + "shiki": "3.17.0", "strict-event-emitter-types": "2.0.0", "textarea-caret": "3.1.0", "three": "0.181.2", @@ -82,7 +82,7 @@ "typescript": "5.9.3", "v-code-diff": "1.13.1", "vite": "7.2.4", - "vue": "3.5.24", + "vue": "3.5.25", "vuedraggable": "next", "wanakana": "5.3.1" }, @@ -90,7 +90,7 @@ "@misskey-dev/summaly": "5.2.5", "@storybook/addon-essentials": "8.6.14", "@storybook/addon-interactions": "8.6.14", - "@storybook/addon-links": "10.0.8", + "@storybook/addon-links": "10.1.0", "@storybook/addon-mdx-gfm": "8.6.14", "@storybook/addon-storysource": "8.6.14", "@storybook/blocks": "8.6.14", @@ -98,13 +98,13 @@ "@storybook/core-events": "8.6.14", "@storybook/manager-api": "8.6.14", "@storybook/preview-api": "8.6.14", - "@storybook/react": "10.0.8", - "@storybook/react-vite": "10.0.8", + "@storybook/react": "10.1.0", + "@storybook/react-vite": "10.1.0", "@storybook/test": "8.6.14", "@storybook/theming": "8.6.14", "@storybook/types": "8.6.14", - "@storybook/vue3": "10.0.8", - "@storybook/vue3-vite": "10.0.8", + "@storybook/vue3": "10.1.0", + "@storybook/vue3-vite": "10.1.0", "@tabler/icons-webfont": "3.35.0", "@testing-library/vue": "8.1.0", "@types/canvas-confetti": "1.9.0", @@ -118,35 +118,35 @@ "@types/throttle-debounce": "5.0.2", "@types/tinycolor2": "1.4.6", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", - "@vitest/coverage-v8": "4.0.13", - "@vue/compiler-core": "3.5.24", - "@vue/runtime-core": "3.5.24", + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", + "@vitest/coverage-v8": "4.0.14", + "@vue/compiler-core": "3.5.25", + "@vue/runtime-core": "3.5.25", "acorn": "8.15.0", "cross-env": "10.1.0", "cypress": "15.7.0", "eslint-plugin-import": "2.32.0", - "eslint-plugin-vue": "10.6.0", + "eslint-plugin-vue": "10.6.2", "fast-glob": "3.3.3", - "happy-dom": "20.0.10", + "happy-dom": "20.0.11", "intersection-observer": "0.12.2", "micromatch": "4.0.8", "minimatch": "10.1.1", - "msw": "2.12.2", + "msw": "2.12.3", "msw-storybook-addon": "2.0.6", "nodemon": "3.1.11", - "prettier": "3.6.2", + "prettier": "3.7.1", "react": "19.2.0", "react-dom": "19.2.0", "seedrandom": "3.0.5", "start-server-and-test": "2.1.3", - "storybook": "10.0.8", + "storybook": "10.1.0", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "tsx": "4.20.6", "vite-plugin-glsl": "1.5.4", "vite-plugin-turbosnap": "1.0.3", - "vitest": "4.0.13", + "vitest": "4.0.14", "vitest-fetch-mock": "0.4.5", "vue-component-type-helpers": "3.1.5", "vue-eslint-parser": "10.2.0", diff --git a/packages/icons-subsetter/package.json b/packages/icons-subsetter/package.json index 9ca6ee35cb..2c6eac150b 100644 --- a/packages/icons-subsetter/package.json +++ b/packages/icons-subsetter/package.json @@ -13,8 +13,8 @@ "devDependencies": { "@types/node": "24.10.1", "@types/wawoff2": "1.0.2", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0" + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0" }, "dependencies": { "@tabler/icons-webfont": "3.35.0", diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json index 5d3f386c96..8dd68aec44 100644 --- a/packages/misskey-bubble-game/package.json +++ b/packages/misskey-bubble-game/package.json @@ -27,8 +27,8 @@ "@types/matter-js": "0.20.2", "@types/node": "24.10.1", "@types/seedrandom": "3.0.8", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", "esbuild": "0.27.0", "execa": "9.6.0", "glob": "11.1.0", diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json index 1e733ecbf4..30eace87fe 100644 --- a/packages/misskey-reversi/package.json +++ b/packages/misskey-reversi/package.json @@ -25,8 +25,8 @@ }, "devDependencies": { "@types/node": "24.10.1", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", "esbuild": "0.27.0", "execa": "9.6.0", "glob": "11.1.0", diff --git a/packages/sw/package.json b/packages/sw/package.json index 0fe10256ce..b6b03adb54 100644 --- a/packages/sw/package.json +++ b/packages/sw/package.json @@ -15,7 +15,7 @@ "misskey-js": "workspace:*" }, "devDependencies": { - "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/parser": "8.48.0", "@typescript/lib-webworker": "npm:@types/serviceworker@0.0.74", "eslint-plugin-import": "2.32.0", "nodemon": "3.1.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61467d7166..27212d6fff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -438,7 +438,7 @@ importers: version: 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) '@sentry/vue': specifier: 10.27.0 - version: 10.27.0(vue@3.5.24(typescript@5.9.3)) + version: 10.27.0(vue@3.5.25(typescript@5.9.3)) '@simplewebauthn/types': specifier: 12.0.0 version: 12.0.0 @@ -705,8 +705,8 @@ importers: specifier: 5.3.0 version: 5.3.0(rollup@4.53.3) '@sentry/vue': - specifier: 10.26.0 - version: 10.26.0(vue@3.5.24(typescript@5.9.3)) + specifier: 10.27.0 + version: 10.27.0(vue@3.5.25(typescript@5.9.3)) '@syuilo/aiscript': specifier: 1.2.0 version: 1.2.0 @@ -718,10 +718,10 @@ importers: version: 16.0.0 '@vitejs/plugin-vue': specifier: 6.0.2 - version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3)) + version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3)) '@vue/compiler-sfc': - specifier: 3.5.24 - version: 3.5.24 + specifier: 3.5.25 + version: 3.5.25 aiscript-vscode: specifier: github:aiscript-dev/aiscript-vscode#v0.1.15 version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/c3cde89e79a41d93540cf8a48cd619c3f2dcb1b7 @@ -810,8 +810,8 @@ importers: specifier: 0.20.0 version: 0.20.0 mediabunny: - specifier: 1.25.1 - version: 1.25.1 + specifier: 1.25.3 + version: 1.25.3 mfm-js: specifier: 0.25.0 version: 0.25.0 @@ -846,8 +846,8 @@ importers: specifier: 1.94.2 version: 1.94.2 shiki: - specifier: 3.15.0 - version: 3.15.0 + specifier: 3.17.0 + version: 3.17.0 strict-event-emitter-types: specifier: 2.0.0 version: 2.0.0 @@ -874,16 +874,16 @@ importers: version: 5.9.3 v-code-diff: specifier: 1.13.1 - version: 1.13.1(vue@3.5.24(typescript@5.9.3)) + version: 1.13.1(vue@3.5.25(typescript@5.9.3)) vite: specifier: 7.2.4 version: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) vue: - specifier: 3.5.24 - version: 3.5.24(typescript@5.9.3) + specifier: 3.5.25 + version: 3.5.25(typescript@5.9.3) vuedraggable: specifier: next - version: 4.1.0(vue@3.5.24(typescript@5.9.3)) + version: 4.1.0(vue@3.5.25(typescript@5.9.3)) wanakana: specifier: 5.3.1 version: 5.3.1 @@ -893,61 +893,61 @@ importers: version: 5.2.5 '@storybook/addon-essentials': specifier: 8.6.14 - version: 8.6.14(@types/react@19.2.2)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(@types/react@19.2.2)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/addon-interactions': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/addon-links': - specifier: 10.0.8 - version: 10.0.8(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + specifier: 10.1.0 + version: 10.1.0(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/addon-mdx-gfm': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/addon-storysource': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/blocks': specifier: 8.6.14 - version: 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/components': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/core-events': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/manager-api': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/preview-api': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/react': - specifier: 10.0.8 - version: 10.0.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3) + specifier: 10.1.0 + version: 10.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(typescript@5.9.3) '@storybook/react-vite': - specifier: 10.0.8 - version: 10.0.8(esbuild@0.27.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + specifier: 10.1.0 + version: 10.1.0(esbuild@0.27.0)(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) '@storybook/test': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/theming': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/types': specifier: 8.6.14 - version: 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + version: 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@storybook/vue3': - specifier: 10.0.8 - version: 10.0.8(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vue@3.5.24(typescript@5.9.3)) + specifier: 10.1.0 + version: 10.1.0(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vue@3.5.25(typescript@5.9.3)) '@storybook/vue3-vite': - specifier: 10.0.8 - version: 10.0.8(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3)) + specifier: 10.1.0 + version: 10.1.0(esbuild@0.27.0)(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3)) '@tabler/icons-webfont': specifier: 3.35.0 version: 3.35.0 '@testing-library/vue': specifier: 8.1.0 - version: 8.1.0(@vue/compiler-sfc@3.5.24)(vue@3.5.24(typescript@5.9.3)) + version: 8.1.0(@vue/compiler-sfc@3.5.25)(vue@3.5.25(typescript@5.9.3)) '@types/canvas-confetti': specifier: 1.9.0 version: 1.9.0 @@ -982,20 +982,20 @@ importers: specifier: 8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@vitest/coverage-v8': - specifier: 4.0.13 - version: 4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + specifier: 4.0.14 + version: 4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) '@vue/compiler-core': - specifier: 3.5.24 - version: 3.5.24 + specifier: 3.5.25 + version: 3.5.25 '@vue/runtime-core': - specifier: 3.5.24 - version: 3.5.24 + specifier: 3.5.25 + version: 3.5.25 acorn: specifier: 8.15.0 version: 8.15.0 @@ -1007,16 +1007,16 @@ importers: version: 15.7.0 eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) + version: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) eslint-plugin-vue: - specifier: 10.6.0 - version: 10.6.0(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) + specifier: 10.6.2 + version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) fast-glob: specifier: 3.3.3 version: 3.3.3 happy-dom: - specifier: 20.0.10 - version: 20.0.10 + specifier: 20.0.11 + version: 20.0.11 intersection-observer: specifier: 0.12.2 version: 0.12.2 @@ -1027,17 +1027,17 @@ importers: specifier: 10.1.1 version: 10.1.1 msw: - specifier: 2.12.2 - version: 2.12.2(@types/node@24.10.1)(typescript@5.9.3) + specifier: 2.12.3 + version: 2.12.3(@types/node@24.10.1)(typescript@5.9.3) msw-storybook-addon: specifier: 2.0.6 - version: 2.0.6(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3)) + version: 2.0.6(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3)) nodemon: specifier: 3.1.11 version: 3.1.11 prettier: - specifier: 3.6.2 - version: 3.6.2 + specifier: 3.7.1 + version: 3.7.1 react: specifier: 19.2.0 version: 19.2.0 @@ -1051,11 +1051,11 @@ importers: specifier: 2.1.3 version: 2.1.3 storybook: - specifier: 10.0.8 - version: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + specifier: 10.1.0 + version: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) storybook-addon-misskey-theme: specifier: github:misskey-dev/storybook-addon-misskey-theme - version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(17b0cdbdd96b793834b84d8d4dddb88b) + version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(e133727417d7e5d8da2127d0903bc90b) tsx: specifier: 4.20.6 version: 4.20.6 @@ -1066,11 +1066,11 @@ importers: specifier: 1.0.3 version: 1.0.3 vitest: - specifier: 4.0.13 - version: 4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) + specifier: 4.0.14 + version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) vitest-fetch-mock: specifier: 0.4.5 - version: 0.4.5(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + version: 0.4.5(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) vue-component-type-helpers: specifier: 3.1.5 version: 3.1.5 @@ -1103,11 +1103,11 @@ importers: specifier: 24.10.1 version: 24.10.1 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) rollup: specifier: 4.53.3 version: 4.53.3 @@ -1134,10 +1134,10 @@ importers: version: 16.0.0 '@vitejs/plugin-vue': specifier: 6.0.2 - version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3)) + version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3)) '@vue/compiler-sfc': - specifier: 3.5.24 - version: 3.5.24 + specifier: 3.5.25 + version: 3.5.25 astring: specifier: 1.9.0 version: 1.9.0 @@ -1175,8 +1175,8 @@ importers: specifier: 1.94.2 version: 1.94.2 shiki: - specifier: 3.15.0 - version: 3.15.0 + specifier: 3.17.0 + version: 3.17.0 tinycolor2: specifier: 1.6.0 version: 1.6.0 @@ -1196,8 +1196,8 @@ importers: specifier: 7.2.4 version: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) vue: - specifier: 3.5.24 - version: 3.5.24(typescript@5.9.3) + specifier: 3.5.25 + version: 3.5.25(typescript@5.9.3) devDependencies: '@misskey-dev/summaly': specifier: 5.2.5 @@ -1207,7 +1207,7 @@ importers: version: 3.35.0 '@testing-library/vue': specifier: 8.1.0 - version: 8.1.0(@vue/compiler-sfc@3.5.24)(vue@3.5.24(typescript@5.9.3)) + version: 8.1.0(@vue/compiler-sfc@3.5.25)(vue@3.5.25(typescript@5.9.3)) '@types/estree': specifier: 1.0.8 version: 1.0.8 @@ -1227,17 +1227,17 @@ importers: specifier: 8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@vitest/coverage-v8': - specifier: 4.0.13 - version: 4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + specifier: 4.0.14 + version: 4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) '@vue/runtime-core': - specifier: 3.5.24 - version: 3.5.24 + specifier: 3.5.25 + version: 3.5.25 acorn: specifier: 8.15.0 version: 8.15.0 @@ -1246,16 +1246,16 @@ importers: version: 10.1.0 eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) + version: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) eslint-plugin-vue: - specifier: 10.6.0 - version: 10.6.0(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) + specifier: 10.6.2 + version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) fast-glob: specifier: 3.3.3 version: 3.3.3 happy-dom: - specifier: 20.0.10 - version: 20.0.10 + specifier: 20.0.11 + version: 20.0.11 intersection-observer: specifier: 0.12.2 version: 0.12.2 @@ -1263,14 +1263,14 @@ importers: specifier: 4.0.8 version: 4.0.8 msw: - specifier: 2.12.2 - version: 2.12.2(@types/node@24.10.1)(typescript@5.9.3) + specifier: 2.12.3 + version: 2.12.3(@types/node@24.10.1)(typescript@5.9.3) nodemon: specifier: 3.1.11 version: 3.1.11 prettier: - specifier: 3.6.2 - version: 3.6.2 + specifier: 3.7.1 + version: 3.7.1 start-server-and-test: specifier: 2.1.3 version: 2.1.3 @@ -1299,24 +1299,24 @@ importers: specifier: workspace:* version: link:../misskey-js vue: - specifier: 3.5.24 - version: 3.5.24(typescript@5.9.3) + specifier: 3.5.25 + version: 3.5.25(typescript@5.9.3) devDependencies: '@types/node': specifier: 24.10.1 version: 24.10.1 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) esbuild: specifier: 0.27.0 version: 0.27.0 eslint-plugin-vue: - specifier: 10.6.0 - version: 10.6.0(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) + specifier: 10.6.2 + version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) nodemon: specifier: 3.1.11 version: 3.1.11 @@ -1395,11 +1395,11 @@ importers: specifier: 1.0.2 version: 1.0.2 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) packages/misskey-bubble-game: dependencies: @@ -1423,11 +1423,11 @@ importers: specifier: 3.0.8 version: 3.0.8 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) esbuild: specifier: 0.27.0 version: 0.27.0 @@ -1470,7 +1470,7 @@ importers: version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) '@vitest/coverage-v8': specifier: 4.0.13 - version: 4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + version: 4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) esbuild: specifier: 0.27.0 version: 0.27.0 @@ -1494,10 +1494,10 @@ importers: version: 5.9.3 vitest: specifier: 4.0.13 - version: 4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) + version: 4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) vitest-websocket-mock: specifier: 0.5.0 - version: 0.5.0(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + version: 0.5.0(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) packages/misskey-js/generator: devDependencies: @@ -1542,11 +1542,11 @@ importers: specifier: 24.10.1 version: 24.10.1 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) esbuild: specifier: 0.27.0 version: 0.27.0 @@ -1579,14 +1579,14 @@ importers: version: link:../misskey-js devDependencies: '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) '@typescript/lib-webworker': specifier: npm:@types/serviceworker@0.0.74 version: '@types/serviceworker@0.0.74' eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) + version: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) nodemon: specifier: 3.1.11 version: 3.1.11 @@ -3781,18 +3781,10 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@sentry-internal/browser-utils@10.26.0': - resolution: {integrity: sha512-rPg1+JZlfp912pZONQAWZzbSaZ9L6R2VrMcCEa+2e2Gqk9um4b+LqF5RQWZsbt5Z0n0azSy/KQ6zAe/zTPXSOg==} - engines: {node: '>=18'} - '@sentry-internal/browser-utils@10.27.0': resolution: {integrity: sha512-17tO6AXP+rmVQtLJ3ROQJF2UlFmvMWp7/8RDT5x9VM0w0tY31z8Twc0gw2KA7tcDxa5AaHDUbf9heOf+R6G6ow==} engines: {node: '>=18'} - '@sentry-internal/feedback@10.26.0': - resolution: {integrity: sha512-0vk9eQP0CXD7Y2WkcCIWHaAqnXOAi18/GupgWLnbB2kuQVYVtStWxtW+OWRe8W/XwSnZ5m6JBTVeokuk/O16DQ==} - engines: {node: '>=18'} - '@sentry-internal/feedback@10.27.0': resolution: {integrity: sha512-UecsIDJcv7VBwycge/MDvgSRxzevDdcItE1i0KSwlPz00rVVxLY9kV28PJ4I2E7r6/cIaP9BkbWegCEcv09NuA==} engines: {node: '>=18'} @@ -3801,34 +3793,18 @@ packages: resolution: {integrity: sha512-oLHVYurqZfADPh5hvmQYS5qx8t0UZzT2u6+/68VXsFruQEOnYJTODKgU3BVLmemRs3WE6kCJjPeFdHVYOQGSzQ==} engines: {node: '>=18'} - '@sentry-internal/replay-canvas@10.26.0': - resolution: {integrity: sha512-vs7d/P+8M1L1JVAhhJx2wo15QDhqAipnEQvuRZ6PV7LUcS1un9/Vx49FMxpIkx6JcKADJVwtXrS1sX2hoNT/kw==} - engines: {node: '>=18'} - '@sentry-internal/replay-canvas@10.27.0': resolution: {integrity: sha512-inhsRYSVBpu3BI1kZphXj6uB59baJpYdyHeIPCiTfdFNBE5tngNH0HS/aedZ1g9zICw290lwvpuyrWJqp4VBng==} engines: {node: '>=18'} - '@sentry-internal/replay@10.26.0': - resolution: {integrity: sha512-FMySQnY2/p0dVtFUBgUO+aMdK2ovqnd7Q/AkvMQUsN/5ulyj6KZx3JX3CqOqRtAr1izoCe4Kh2pi5t//sQmvsg==} - engines: {node: '>=18'} - '@sentry-internal/replay@10.27.0': resolution: {integrity: sha512-tKSzHq1hNzB619Ssrqo25cqdQJ84R3xSSLsUWEnkGO/wcXJvpZy94gwdoS+KmH18BB1iRRRGtnMxZcUkiPSesw==} engines: {node: '>=18'} - '@sentry/browser@10.26.0': - resolution: {integrity: sha512-uvV4hnkt8bh8yP0disJ0fszy8FdnkyGtzyIVKdeQZbNUefwbDhd3H0KJrAHhJ5ocULMH3B+dipdPmw2QXbEflg==} - engines: {node: '>=18'} - '@sentry/browser@10.27.0': resolution: {integrity: sha512-G8q362DdKp9y1b5qkQEmhTFzyWTOVB0ps1rflok0N6bVA75IEmSDX1pqJsNuY3qy14VsVHYVwQBJQsNltQLS0g==} engines: {node: '>=18'} - '@sentry/core@10.26.0': - resolution: {integrity: sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q==} - engines: {node: '>=18'} - '@sentry/core@10.27.0': resolution: {integrity: sha512-Zc68kdH7tWTDtDbV1zWIbo3Jv0fHAU2NsF5aD2qamypKgfSIMSbWVxd22qZyDBkaX8gWIPm/0Sgx6aRXRBXrYQ==} engines: {node: '>=18'} @@ -3864,16 +3840,6 @@ packages: engines: {node: '>=18'} hasBin: true - '@sentry/vue@10.26.0': - resolution: {integrity: sha512-KfgELqzuFc8beeYbx6u3Ed5l8Lj/iG0h8AgQ7YjK3FANsuwwFRioycwnoEMIJbEuKC9V3iRSHXk2W5Dgt1WWqw==} - engines: {node: '>=18'} - peerDependencies: - pinia: 2.x || 3.x - vue: 2.x || 3.x - peerDependenciesMeta: - pinia: - optional: true - '@sentry/vue@10.27.0': resolution: {integrity: sha512-vQVxnw59jRe5WsdB9ad/WpMPQ93QXE6Y0JEy01xIRcDlQ1pXp5wuxLkKGuTfvjdQzVUGIBLr0CgIqRAmPRymVg==} engines: {node: '>=18'} @@ -3884,23 +3850,23 @@ packages: pinia: optional: true - '@shikijs/core@3.15.0': - resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} + '@shikijs/core@3.17.0': + resolution: {integrity: sha512-/HjeOnbc62C+n33QFNFrAhUlIADKwfuoS50Ht0pxujxP4QjZAlFp5Q+OkDo531SCTzivx5T18khwyBdKoPdkuw==} - '@shikijs/engine-javascript@3.15.0': - resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} + '@shikijs/engine-javascript@3.17.0': + resolution: {integrity: sha512-WwF99xdP8KfuDrIbT4wxyypfhoIxMeeOCp1AiuvzzZ6JT5B3vIuoclL8xOuuydA6LBeeNXUF/XV5zlwwex1jlA==} - '@shikijs/engine-oniguruma@3.15.0': - resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} + '@shikijs/engine-oniguruma@3.17.0': + resolution: {integrity: sha512-flSbHZAiOZDNTrEbULY8DLWavu/TyVu/E7RChpLB4WvKX4iHMfj80C6Hi3TjIWaQtHOW0KC6kzMcuB5TO1hZ8Q==} - '@shikijs/langs@3.15.0': - resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} + '@shikijs/langs@3.17.0': + resolution: {integrity: sha512-icmur2n5Ojb+HAiQu6NEcIIJ8oWDFGGEpiqSCe43539Sabpx7Y829WR3QuUW2zjTM4l6V8Sazgb3rrHO2orEAw==} - '@shikijs/themes@3.15.0': - resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} + '@shikijs/themes@3.17.0': + resolution: {integrity: sha512-/xEizMHLBmMHwtx4JuOkRf3zwhWD2bmG5BRr0IPjpcWpaq4C3mYEuTk/USAEglN0qPrTwEHwKVpSu/y2jhferA==} - '@shikijs/types@3.15.0': - resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} + '@shikijs/types@3.17.0': + resolution: {integrity: sha512-wjLVfutYWVUnxAjsWEob98xgyaGv0dTEnMZDruU5mRjVN7szcGOfgO+997W2yR6odp+1PtSBNeSITRRTfUzK/g==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -4218,11 +4184,11 @@ packages: peerDependencies: storybook: ^8.6.14 - '@storybook/addon-links@10.0.8': - resolution: {integrity: sha512-LnakruogdN5ND0cF0SOKyhzbEeIGDe1njkufX2aR9LOXQ0mMj5S2P86TdP87dR5R9bJjYYPPg/F7sjsAiI1Lqg==} + '@storybook/addon-links@10.1.0': + resolution: {integrity: sha512-05ssgNYu81v0wYtm2TmltBV0jQxyYJ4tYBo5GaSuqfaiU4JTOfW5Xfjm6+QG1TOc6EkB6h/MMhK3f3+/e97Gyw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.8 + storybook: ^10.1.0 peerDependenciesMeta: react: optional: true @@ -4269,10 +4235,10 @@ packages: react-dom: optional: true - '@storybook/builder-vite@10.0.8': - resolution: {integrity: sha512-kaf/pUENzXxYgQMHGGPNiIk1ieb+SOMuSeLKx8wAUOlQOrzhtSH+ItACW/l43t+O6YZ8jYHoNBMF1kdQ1+Y5+w==} + '@storybook/builder-vite@10.1.0': + resolution: {integrity: sha512-5vVg8kZozI4Lg2voHdimm34jlEf6MrP9QzXS795dVA/KIR9BCVUzVw+yQBT9jRDWnp6Q4XbzqfILih/TVeh7iA==} peerDependencies: - storybook: ^10.0.8 + storybook: ^10.1.0 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 '@storybook/components@8.6.14': @@ -4285,12 +4251,12 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/csf-plugin@10.0.8': - resolution: {integrity: sha512-OtLUWHIm3SDGtclQn6Mdd/YsWizLBgdEBRAdekGtwI/TvICfT7gpWYIycP53v2t9ufu2MIXjsxtV2maZKs8sZg==} + '@storybook/csf-plugin@10.1.0': + resolution: {integrity: sha512-oApFTBUlHusihoejKmlunprNA2BDpEBmBBx+PcCMzTpUbEiZNI95ZeGrlBuuEepF5dIpAIPAQQD09FibmkQlBQ==} peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.0.8 + storybook: ^10.1.0 vite: '*' webpack: '*' peerDependenciesMeta: @@ -4318,6 +4284,12 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + '@storybook/icons@2.0.1': + resolution: {integrity: sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@storybook/instrumenter@8.6.14': resolution: {integrity: sha512-iG4MlWCcz1L7Yu8AwgsnfVAmMbvyRSk700Mfy2g4c8y5O+Cv1ejshE1LBBsCwHgkuqU0H4R0qu4g23+6UnUemQ==} peerDependencies: @@ -4333,12 +4305,12 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/react-dom-shim@10.0.8': - resolution: {integrity: sha512-ojuH22MB9Sz6rWbhTmC5IErZr0ZADbZijtPteUdydezY7scORT00UtbNoBcG0V6iVjdChgDtSKw2KHUUfchKqg==} + '@storybook/react-dom-shim@10.1.0': + resolution: {integrity: sha512-Zb86jWk3ch33lkCmsgqqqsv5q0ePk1wg2wAurM0BMQUAKTLPebdBvwC8esBsti8fp2ZGv0eNbJDGg3qzWYr/Uw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.8 + storybook: ^10.1.0 '@storybook/react-dom-shim@8.6.14': resolution: {integrity: sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==} @@ -4347,20 +4319,20 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta storybook: ^8.6.14 - '@storybook/react-vite@10.0.8': - resolution: {integrity: sha512-HS2X4qlitrZr3/sN2+ollxAaNE813IasZRE8lOez1Ey1ISGBtYIb9rmJs82MK35+yDM0pHdiDjkFMD4SkNYh2g==} + '@storybook/react-vite@10.1.0': + resolution: {integrity: sha512-gFLTU92QQ69saFzQGeIRysQ1G2o3DSWWuG07JRj03493H9USKhvzHo88utKZ2BQP/H93UgcEwy6Ms5psIS3AUA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.8 + storybook: ^10.1.0 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - '@storybook/react@10.0.8': - resolution: {integrity: sha512-PkuPb8sAqmjjkowSzm3rutiSuETvZI2F8SnjbHE6FRqZWWK4iFoaUrQbrg5kpPAtX//xIrqkdFwlbmQ3skhiPA==} + '@storybook/react@10.1.0': + resolution: {integrity: sha512-6Uc3SmUhUlAcNjl8PevnLplZC7HtcE2tz6NEPJWYt3KAb7D11bDZB7BD7jGOU9edE+vRXsTHUUPmaxJpWQ+5nQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.8 + storybook: ^10.1.0 typescript: '>= 4.9.x' peerDependenciesMeta: typescript: @@ -4386,16 +4358,16 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/vue3-vite@10.0.8': - resolution: {integrity: sha512-Bdum0SssJAbvwKfbKvTMEkpc9zapMG/GODxzqWO7XuycOZWrR0FPvj13y1gBhv0y66jBHMbtsLQ76uTyNFslIA==} + '@storybook/vue3-vite@10.1.0': + resolution: {integrity: sha512-RqJNOc+VnEXbFVenF+73tpNtyUTC6AYMR6ugOShL9i4HEhd+YnPFlWSE7Rf7WOhQvjGH3o3JHnIxYbElG8mp6w==} peerDependencies: - storybook: ^10.0.8 + storybook: ^10.1.0 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - '@storybook/vue3@10.0.8': - resolution: {integrity: sha512-h7ztNeAemf3yXQIetkbKAv8l5JkuXC65TmpAYTZYZpWUof/uuAnMF4rXQlRnS6Nd2PRfA9mZGGlGxNDCm3StlA==} + '@storybook/vue3@10.1.0': + resolution: {integrity: sha512-XlPW+AOPbPcIUks1Qx3icUr/hTiLPyLsfA9OgJEQKH2n3A3lUwJ2PYArl//qBbN9p40jR9HBREmPzLUkvt2vuQ==} peerDependencies: - storybook: ^10.0.8 + storybook: ^10.1.0 vue: ^3.0.0 '@stylistic/eslint-plugin@5.5.0': @@ -4966,6 +4938,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.48.0': + resolution: {integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.48.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.47.0': resolution: {integrity: sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4973,22 +4953,45 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.48.0': + resolution: {integrity: sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.47.0': resolution: {integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.48.0': + resolution: {integrity: sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.47.0': resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.48.0': + resolution: {integrity: sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.47.0': resolution: {integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.48.0': + resolution: {integrity: sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.47.0': resolution: {integrity: sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4996,16 +4999,33 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.48.0': + resolution: {integrity: sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/types@8.47.0': resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.48.0': + resolution: {integrity: sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.47.0': resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.48.0': + resolution: {integrity: sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.47.0': resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5013,10 +5033,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.48.0': + resolution: {integrity: sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.47.0': resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.48.0': + resolution: {integrity: sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -5036,6 +5067,15 @@ packages: '@vitest/browser': optional: true + '@vitest/coverage-v8@4.0.14': + resolution: {integrity: sha512-EYHLqN/BY6b47qHH7gtMxAg++saoGmsjWmAq9MlXxAz4M0NcHh9iOyKhBZyU4yxZqOd8Xnqp80/5saeitz4Cng==} + peerDependencies: + '@vitest/browser': 4.0.14 + vitest: 4.0.14 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} @@ -5045,6 +5085,9 @@ packages: '@vitest/expect@4.0.13': resolution: {integrity: sha512-zYtcnNIBm6yS7Gpr7nFTmq8ncowlMdOJkWLqYvhr/zweY6tFbDkDi8BPPOeHxEtK1rSI69H7Fd4+1sqvEGli6w==} + '@vitest/expect@4.0.14': + resolution: {integrity: sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==} + '@vitest/mocker@3.2.4': resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: @@ -5067,6 +5110,17 @@ packages: vite: optional: true + '@vitest/mocker@4.0.14': + resolution: {integrity: sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} @@ -5079,12 +5133,21 @@ packages: '@vitest/pretty-format@4.0.13': resolution: {integrity: sha512-ooqfze8URWbI2ozOeLDMh8YZxWDpGXoeY3VOgcDnsUxN0jPyPWSUvjPQWqDGCBks+opWlN1E4oP1UYl3C/2EQA==} + '@vitest/pretty-format@4.0.14': + resolution: {integrity: sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==} + '@vitest/runner@4.0.13': resolution: {integrity: sha512-9IKlAru58wcVaWy7hz6qWPb2QzJTKt+IOVKjAx5vb5rzEFPTL6H4/R9BMvjZ2ppkxKgTrFONEJFtzvnyEpiT+A==} + '@vitest/runner@4.0.14': + resolution: {integrity: sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==} + '@vitest/snapshot@4.0.13': resolution: {integrity: sha512-hb7Usvyika1huG6G6l191qu1urNPsq1iFc2hmdzQY3F5/rTgqQnwwplyf8zoYHkpt7H6rw5UfIw6i/3qf9oSxQ==} + '@vitest/snapshot@4.0.14': + resolution: {integrity: sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==} + '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} @@ -5094,6 +5157,9 @@ packages: '@vitest/spy@4.0.13': resolution: {integrity: sha512-hSu+m4se0lDV5yVIcNWqjuncrmBgwaXa2utFLIrBkQCQkt+pSwyZTPFQAZiiF/63j8jYa8uAeUZ3RSfcdWaYWw==} + '@vitest/spy@4.0.14': + resolution: {integrity: sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==} + '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -5106,6 +5172,9 @@ packages: '@vitest/utils@4.0.13': resolution: {integrity: sha512-ydozWyQ4LZuu8rLp47xFUWis5VOKMdHjXCWhs1LuJsTNKww+pTHQNK4e0assIB9K80TxFyskENL6vCu3j34EYA==} + '@vitest/utils@4.0.14': + resolution: {integrity: sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==} + '@volar/language-core@2.4.15': resolution: {integrity: sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==} @@ -5127,14 +5196,20 @@ packages: '@vue/compiler-core@3.5.24': resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} + '@vue/compiler-core@3.5.25': + resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} + '@vue/compiler-dom@3.5.24': resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} - '@vue/compiler-sfc@3.5.24': - resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==} + '@vue/compiler-dom@3.5.25': + resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} - '@vue/compiler-ssr@3.5.24': - resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==} + '@vue/compiler-sfc@3.5.25': + resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==} + + '@vue/compiler-ssr@3.5.25': + resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -5155,23 +5230,26 @@ packages: typescript: optional: true - '@vue/reactivity@3.5.24': - resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==} + '@vue/reactivity@3.5.25': + resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==} - '@vue/runtime-core@3.5.24': - resolution: {integrity: sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==} + '@vue/runtime-core@3.5.25': + resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==} - '@vue/runtime-dom@3.5.24': - resolution: {integrity: sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==} + '@vue/runtime-dom@3.5.25': + resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==} - '@vue/server-renderer@3.5.24': - resolution: {integrity: sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==} + '@vue/server-renderer@3.5.25': + resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==} peerDependencies: - vue: 3.5.24 + vue: 3.5.25 '@vue/shared@3.5.24': resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} + '@vue/shared@3.5.25': + resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} + '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} @@ -6649,8 +6727,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-vue@10.6.0: - resolution: {integrity: sha512-TsoFluWxOpsJlE/l2jJygLQLWBPJ3Qdkesv7tBIunICbTcG0dS1/NBw/Ol4tJw5kHWlAVds4lUmC29/vlPUcEQ==} + eslint-plugin-vue@10.6.2: + resolution: {integrity: sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -7199,8 +7277,8 @@ packages: resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} engines: {node: '>=0.8.0'} - happy-dom@20.0.10: - resolution: {integrity: sha512-6umCCHcjQrhP5oXhrHQQvLB0bwb1UzHAHdsXy+FjtKoYjUhmNZsQL8NivwM1vDvNEChJabVrUYxUnp/ZdYmy2g==} + happy-dom@20.0.11: + resolution: {integrity: sha512-QsCdAUHAmiDeKeaNojb1OHOPF7NjcWPBR7obdu3NwH2a/oyQaLg5d0aaCy/9My6CdPChYF07dvz5chaXBGaD4g==} engines: {node: '>=20.0.0'} hard-rejection@2.1.0: @@ -8237,8 +8315,8 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - mediabunny@1.25.1: - resolution: {integrity: sha512-0Rrd47PMCVJbTPA7IJaXPCupV5/RZ/icgr+a0qExRJAr0n5vB4fsGSo+fdHIehG0CrddXtVRvNZwFtJz709yfA==} + mediabunny@1.25.3: + resolution: {integrity: sha512-+LDXv/kybsElRQCmMlrdbKmPNvegeIyouGeOUzW5DJ8+M56H4G6wyEL2AJ1A45UcOB+U62qJMV7tuFO9S7yA7g==} meilisearch@0.54.0: resolution: {integrity: sha512-b1bwJAEfj8C6hgSN88+/LvW3pe3nWC+thBS2seAbPZGakf/vzsLqppgZquiomzCr2GhU7U7H289625qhYe3rbw==} @@ -8524,8 +8602,8 @@ packages: peerDependencies: msw: ^2.0.0 - msw@2.12.2: - resolution: {integrity: sha512-Fsr8AR5Yu6C0thoWa1Z8qGBFQLDvLsWlAn/v3CNLiUizoRqBYArK3Ex3thXpMWRr1Li5/MKLOEZ5mLygUmWi1A==} + msw@2.12.3: + resolution: {integrity: sha512-/5rpGC0eK8LlFqsHaBmL19/PVKxu/CCt8pO1vzp9X6SDLsRDh/Ccudkf3Ur5lyaKxJz9ndAx+LaThdv0ySqB6A==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -8765,6 +8843,9 @@ packages: resolution: {integrity: sha512-QOUH5Xrsced9fKXaQTjWoDGKeS/Or7E2jB0FN63N4mkAO4qJdB7WR7e6qWAOHM5nk25FJ8TGjhP7DH4l6vFVLg==} engines: {node: '>=16'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + on-exit-leak-free@2.1.2: resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} engines: {node: '>=14.0.0'} @@ -8787,8 +8868,8 @@ packages: oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-to-es@4.3.3: - resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} @@ -9268,8 +9349,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + prettier@3.7.1: + resolution: {integrity: sha512-RWKXE4qB3u5Z6yz7omJkjWwmTfLdcbv44jUVHC5NpfXwFGzvpQM798FGv/6WNK879tc+Cn0AAyherCl1KjbyZQ==} engines: {node: '>=14'} hasBin: true @@ -9847,8 +9928,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@3.15.0: - resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} + shiki@3.17.0: + resolution: {integrity: sha512-lUZfWsyW7czITYTdo/Tb6ZM4VfyXlzmKYBQBjTz+pBzPPkP08RgIt00Ls1Z50Cl3SfwJsue6WbJeF3UgqLVI9Q==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -10126,8 +10207,8 @@ packages: react-dom: optional: true - storybook@10.0.8: - resolution: {integrity: sha512-vQMufKKA9TxgoEDHJv3esrqUkjszuuRiDkThiHxENFPdQawHhm2Dei+iwNRwH5W671zTDy9iRT9P1KDjcU5Iyw==} + storybook@10.1.0: + resolution: {integrity: sha512-RCTybwtyQaKRoU1Z8rWGv5h6ZN3+HelSM0WMMWKBsKgXZkpQ00vro1kd/tWILawxNiU2YS9Zo+4On5hx2Rm+8w==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -10309,6 +10390,10 @@ packages: os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -10564,6 +10649,10 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-fest@5.2.0: + resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==} + engines: {node: '>=20'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -10765,6 +10854,11 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + utf-8-validate@6.0.5: resolution: {integrity: sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA==} engines: {node: '>=6.14.2'} @@ -10930,6 +11024,40 @@ packages: jsdom: optional: true + vitest@4.0.14: + resolution: {integrity: sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.14 + '@vitest/browser-preview': 4.0.14 + '@vitest/browser-webdriverio': 4.0.14 + '@vitest/ui': 4.0.14 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} @@ -10998,8 +11126,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.24: - resolution: {integrity: sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==} + vue@3.5.25: + resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -13868,18 +13996,10 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@sentry-internal/browser-utils@10.26.0': - dependencies: - '@sentry/core': 10.26.0 - '@sentry-internal/browser-utils@10.27.0': dependencies: '@sentry/core': 10.27.0 - '@sentry-internal/feedback@10.26.0': - dependencies: - '@sentry/core': 10.26.0 - '@sentry-internal/feedback@10.27.0': dependencies: '@sentry/core': 10.27.0 @@ -13889,34 +14009,16 @@ snapshots: detect-libc: 2.1.2 node-abi: 3.85.0 - '@sentry-internal/replay-canvas@10.26.0': - dependencies: - '@sentry-internal/replay': 10.26.0 - '@sentry/core': 10.26.0 - '@sentry-internal/replay-canvas@10.27.0': dependencies: '@sentry-internal/replay': 10.27.0 '@sentry/core': 10.27.0 - '@sentry-internal/replay@10.26.0': - dependencies: - '@sentry-internal/browser-utils': 10.26.0 - '@sentry/core': 10.26.0 - '@sentry-internal/replay@10.27.0': dependencies: '@sentry-internal/browser-utils': 10.27.0 '@sentry/core': 10.27.0 - '@sentry/browser@10.26.0': - dependencies: - '@sentry-internal/browser-utils': 10.26.0 - '@sentry-internal/feedback': 10.26.0 - '@sentry-internal/replay': 10.26.0 - '@sentry-internal/replay-canvas': 10.26.0 - '@sentry/core': 10.26.0 - '@sentry/browser@10.27.0': dependencies: '@sentry-internal/browser-utils': 10.27.0 @@ -13925,8 +14027,6 @@ snapshots: '@sentry-internal/replay-canvas': 10.27.0 '@sentry/core': 10.27.0 - '@sentry/core@10.26.0': {} - '@sentry/core@10.27.0': {} '@sentry/node-core@10.27.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)': @@ -14002,45 +14102,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@sentry/vue@10.26.0(vue@3.5.24(typescript@5.9.3))': - dependencies: - '@sentry/browser': 10.26.0 - '@sentry/core': 10.26.0 - vue: 3.5.24(typescript@5.9.3) - - '@sentry/vue@10.27.0(vue@3.5.24(typescript@5.9.3))': + '@sentry/vue@10.27.0(vue@3.5.25(typescript@5.9.3))': dependencies: '@sentry/browser': 10.27.0 '@sentry/core': 10.27.0 - vue: 3.5.24(typescript@5.9.3) + vue: 3.5.25(typescript@5.9.3) - '@shikijs/core@3.15.0': + '@shikijs/core@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.15.0': + '@shikijs/engine-javascript@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.3 + oniguruma-to-es: 4.3.4 - '@shikijs/engine-oniguruma@3.15.0': + '@shikijs/engine-oniguruma@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.15.0': + '@shikijs/langs@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 - '@shikijs/themes@3.15.0': + '@shikijs/themes@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 - '@shikijs/types@3.15.0': + '@shikijs/types@3.17.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -14447,155 +14541,157 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@storybook/addon-actions@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-actions@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-backgrounds@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-controls@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-docs@8.6.14(@types/react@19.2.2)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-docs@8.6.14(@types/react@19.2.2)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.2.0) - '@storybook/blocks': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/csf-plugin': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/react-dom-shim': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + '@storybook/blocks': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/csf-plugin': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/react-dom-shim': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.14(@types/react@19.2.2)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-essentials@8.6.14(@types/react@19.2.2)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - '@storybook/addon-actions': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/addon-backgrounds': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/addon-controls': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/addon-docs': 8.6.14(@types/react@19.2.2)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/addon-highlight': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/addon-measure': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/addon-outline': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/addon-toolbars': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/addon-viewport': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + '@storybook/addon-actions': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/addon-backgrounds': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/addon-controls': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/addon-docs': 8.6.14(@types/react@19.2.2)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/addon-highlight': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/addon-measure': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/addon-outline': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/addon-toolbars': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/addon-viewport': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-highlight@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-highlight@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/addon-interactions@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-interactions@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/test': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + '@storybook/instrumenter': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/test': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) polished: 4.3.1 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-links@10.0.8(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-links@10.1.0(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) optionalDependencies: react: 19.2.0 - '@storybook/addon-mdx-gfm@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-mdx-gfm@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: remark-gfm: 4.0.1 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - '@storybook/addon-measure@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-measure@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-outline@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-storysource@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-storysource@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - '@storybook/source-loader': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + '@storybook/source-loader': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) estraverse: 5.3.0 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) tiny-invariant: 1.3.3 - '@storybook/addon-toolbars@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-toolbars@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/addon-viewport@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/addon-viewport@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: memoizerific: 1.11.3 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/blocks@8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/blocks@8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/icons': 1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 optionalDependencies: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - '@storybook/builder-vite@10.0.8(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': + '@storybook/builder-vite@10.1.0(esbuild@0.27.0)(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': dependencies: - '@storybook/csf-plugin': 10.0.8(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + '@storybook/csf-plugin': 10.1.0(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + '@vitest/mocker': 3.2.4(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) transitivePeerDependencies: - esbuild + - msw - rollup - webpack - '@storybook/components@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/components@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/core-events@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/core-events@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/csf-plugin@10.0.8(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': + '@storybook/csf-plugin@10.1.0(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) unplugin: 2.3.10 optionalDependencies: esbuild: 0.27.0 rollup: 4.53.3 vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) - '@storybook/csf-plugin@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/csf-plugin@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) unplugin: 1.16.1 '@storybook/global@5.0.0': {} @@ -14605,112 +14701,122 @@ snapshots: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - '@storybook/instrumenter@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/icons@2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@storybook/instrumenter@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.9 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/manager-api@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/manager-api@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/preview-api@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/preview-api@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/react-dom-shim@10.0.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/react-dom-shim@10.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/react-dom-shim@8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/react-dom-shim@8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/react-vite@10.0.8(esbuild@0.27.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': + '@storybook/react-vite@10.1.0(esbuild@0.27.0)(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.3)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) '@rollup/pluginutils': 5.3.0(rollup@4.53.3) - '@storybook/builder-vite': 10.0.8(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) - '@storybook/react': 10.0.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3) + '@storybook/builder-vite': 10.1.0(esbuild@0.27.0)(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + '@storybook/react': 10.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(typescript@5.9.3) empathic: 2.0.0 magic-string: 0.30.21 react: 19.2.0 react-docgen: 8.0.2 react-dom: 19.2.0(react@19.2.0) resolve: 1.22.11 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) tsconfig-paths: 4.2.0 vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) transitivePeerDependencies: - esbuild + - msw - rollup - supports-color - typescript - webpack - '@storybook/react@10.0.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3)': + '@storybook/react@10.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(typescript@5.9.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.0.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + '@storybook/react-dom-shim': 10.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) react: 19.2.0 + react-docgen: 8.0.2 react-dom: 19.2.0(react@19.2.0) - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) optionalDependencies: typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@storybook/source-loader@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/source-loader@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: es-toolkit: 1.42.0 estraverse: 5.3.0 - prettier: 3.6.2 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + prettier: 3.7.1 + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/test@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/test@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + '@storybook/instrumenter': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/theming@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/theming@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/types@8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))': + '@storybook/types@8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))': dependencies: - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) - '@storybook/vue3-vite@10.0.8(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3))': + '@storybook/vue3-vite@10.1.0(esbuild@0.27.0)(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3))': dependencies: - '@storybook/builder-vite': 10.0.8(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) - '@storybook/vue3': 10.0.8(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vue@3.5.24(typescript@5.9.3)) + '@storybook/builder-vite': 10.1.0(esbuild@0.27.0)(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + '@storybook/vue3': 10.1.0(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vue@3.5.25(typescript@5.9.3)) magic-string: 0.30.21 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) typescript: 5.9.3 vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) vue-component-meta: 2.2.12(typescript@5.9.3) - vue-docgen-api: 4.79.2(vue@3.5.24(typescript@5.9.3)) + vue-docgen-api: 4.79.2(vue@3.5.25(typescript@5.9.3)) transitivePeerDependencies: - esbuild + - msw - rollup - vue - webpack - '@storybook/vue3@10.0.8(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)))(vue@3.5.24(typescript@5.9.3))': + '@storybook/vue3@10.1.0(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5))(vue@3.5.25(typescript@5.9.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + storybook: 10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5) type-fest: 2.19.0 - vue: 3.5.24(typescript@5.9.3) + vue: 3.5.25(typescript@5.9.3) vue-component-type-helpers: 3.1.5 '@stylistic/eslint-plugin@5.5.0(eslint@9.39.1)': @@ -14963,14 +15069,14 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 - '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.24)(vue@3.5.24(typescript@5.9.3))': + '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.25)(vue@3.5.25(typescript@5.9.3))': dependencies: '@babel/runtime': 7.28.4 '@testing-library/dom': 9.3.4 '@vue/test-utils': 2.4.6 - vue: 3.5.24(typescript@5.9.3) + vue: 3.5.25(typescript@5.9.3) optionalDependencies: - '@vue/compiler-sfc': 3.5.24 + '@vue/compiler-sfc': 3.5.25 '@tokenizer/inflate@0.2.7': dependencies: @@ -15367,6 +15473,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.0 + eslint: 9.39.1 + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.47.0 @@ -15379,6 +15502,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.0 + debug: 4.4.3(supports-color@10.2.2) + eslint: 9.39.1 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.47.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3) @@ -15388,15 +15523,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.48.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) + '@typescript-eslint/types': 8.48.0 + debug: 4.4.3(supports-color@10.2.2) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.47.0': dependencies: '@typescript-eslint/types': 8.47.0 '@typescript-eslint/visitor-keys': 8.47.0 + '@typescript-eslint/scope-manager@8.48.0': + dependencies: + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/visitor-keys': 8.48.0 + '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.48.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.47.0 @@ -15409,8 +15562,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.48.0(eslint@9.39.1)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.0(eslint@9.39.1)(typescript@5.9.3) + debug: 4.4.3(supports-color@10.2.2) + eslint: 9.39.1 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@8.47.0': {} + '@typescript-eslint/types@8.48.0': {} + '@typescript-eslint/typescript-estree@8.47.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.47.0(typescript@5.9.3) @@ -15427,6 +15594,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.48.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.48.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/visitor-keys': 8.48.0 + debug: 4.4.3(supports-color@10.2.2) + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.47.0(eslint@9.39.1)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) @@ -15438,20 +15620,36 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.48.0(eslint@9.39.1)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) + '@typescript-eslint/scope-manager': 8.48.0 + '@typescript-eslint/types': 8.48.0 + '@typescript-eslint/typescript-estree': 8.48.0(typescript@5.9.3) + eslint: 9.39.1 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.47.0': dependencies: '@typescript-eslint/types': 8.47.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.48.0': + dependencies: + '@typescript-eslint/types': 8.48.0 + eslint-visitor-keys: 4.2.1 + '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.50 vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) - vue: 3.5.24(typescript@5.9.3) + vue: 3.5.25(typescript@5.9.3) - '@vitest/coverage-v8@4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': + '@vitest/coverage-v8@4.0.13(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.13 @@ -15464,7 +15662,24 @@ snapshots: magicast: 0.5.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) + vitest: 4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@4.0.14(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@vitest/utils': 4.0.14 + ast-v8-to-istanbul: 0.3.8 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + magicast: 0.5.1 + obug: 2.1.1 + std-env: 3.10.0 + tinyrainbow: 3.0.3 + vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) transitivePeerDependencies: - supports-color @@ -15492,22 +15707,40 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': + '@vitest/expect@4.0.14': + dependencies: + '@standard-schema/spec': 1.0.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.14 + '@vitest/utils': 4.0.14 + chai: 6.2.1 + tinyrainbow: 3.0.3 + + '@vitest/mocker@3.2.4(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.12.2(@types/node@24.10.1)(typescript@5.9.3) + msw: 2.12.3(@types/node@24.10.1)(typescript@5.9.3) vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) - '@vitest/mocker@4.0.13(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': + '@vitest/mocker@4.0.13(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': dependencies: '@vitest/spy': 4.0.13 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.12.2(@types/node@24.10.1)(typescript@5.9.3) + msw: 2.12.3(@types/node@24.10.1)(typescript@5.9.3) + vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) + + '@vitest/mocker@4.0.14(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))': + dependencies: + '@vitest/spy': 4.0.14 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + msw: 2.12.3(@types/node@24.10.1)(typescript@5.9.3) vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) '@vitest/pretty-format@2.0.5': @@ -15526,17 +15759,32 @@ snapshots: dependencies: tinyrainbow: 3.0.3 + '@vitest/pretty-format@4.0.14': + dependencies: + tinyrainbow: 3.0.3 + '@vitest/runner@4.0.13': dependencies: '@vitest/utils': 4.0.13 pathe: 2.0.3 + '@vitest/runner@4.0.14': + dependencies: + '@vitest/utils': 4.0.14 + pathe: 2.0.3 + '@vitest/snapshot@4.0.13': dependencies: '@vitest/pretty-format': 4.0.13 magic-string: 0.30.21 pathe: 2.0.3 + '@vitest/snapshot@4.0.14': + dependencies: + '@vitest/pretty-format': 4.0.14 + magic-string: 0.30.21 + pathe: 2.0.3 + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 @@ -15547,6 +15795,8 @@ snapshots: '@vitest/spy@4.0.13': {} + '@vitest/spy@4.0.14': {} + '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -15571,6 +15821,11 @@ snapshots: '@vitest/pretty-format': 4.0.13 tinyrainbow: 3.0.3 + '@vitest/utils@4.0.14': + dependencies: + '@vitest/pretty-format': 4.0.14 + tinyrainbow: 3.0.3 + '@volar/language-core@2.4.15': dependencies: '@volar/source-map': 2.4.15 @@ -15603,27 +15858,40 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 + '@vue/compiler-core@3.5.25': + dependencies: + '@babel/parser': 7.28.5 + '@vue/shared': 3.5.25 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + '@vue/compiler-dom@3.5.24': dependencies: '@vue/compiler-core': 3.5.24 '@vue/shared': 3.5.24 - '@vue/compiler-sfc@3.5.24': + '@vue/compiler-dom@3.5.25': + dependencies: + '@vue/compiler-core': 3.5.25 + '@vue/shared': 3.5.25 + + '@vue/compiler-sfc@3.5.25': dependencies: '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.24 - '@vue/compiler-dom': 3.5.24 - '@vue/compiler-ssr': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/compiler-core': 3.5.25 + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.24': + '@vue/compiler-ssr@3.5.25': dependencies: - '@vue/compiler-dom': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/compiler-dom': 3.5.25 + '@vue/shared': 3.5.25 '@vue/compiler-vue2@2.7.16': dependencies: @@ -15655,30 +15923,32 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@vue/reactivity@3.5.24': + '@vue/reactivity@3.5.25': dependencies: - '@vue/shared': 3.5.24 + '@vue/shared': 3.5.25 - '@vue/runtime-core@3.5.24': + '@vue/runtime-core@3.5.25': dependencies: - '@vue/reactivity': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/reactivity': 3.5.25 + '@vue/shared': 3.5.25 - '@vue/runtime-dom@3.5.24': + '@vue/runtime-dom@3.5.25': dependencies: - '@vue/reactivity': 3.5.24 - '@vue/runtime-core': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/reactivity': 3.5.25 + '@vue/runtime-core': 3.5.25 + '@vue/shared': 3.5.25 csstype: 3.2.3 - '@vue/server-renderer@3.5.24(vue@3.5.24(typescript@5.9.3))': + '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.24 - '@vue/shared': 3.5.24 - vue: 3.5.24(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 + vue: 3.5.25(typescript@5.9.3) '@vue/shared@3.5.24': {} + '@vue/shared@3.5.25': {} + '@vue/test-utils@2.4.6': dependencies: js-beautify: 1.15.4 @@ -17445,6 +17715,16 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1): + dependencies: + debug: 3.2.7(supports-color@8.1.1) + optionalDependencies: + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3) + eslint: 9.39.1 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1): dependencies: '@rtsao/scc': 1.1.0 @@ -17474,7 +17754,36 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-vue@10.6.0(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7(supports-color@8.1.1) + doctrine: 2.1.0 + eslint: 9.39.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-vue@10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) eslint: 9.39.1 @@ -17486,7 +17795,7 @@ snapshots: xml-name-validator: 4.0.0 optionalDependencies: '@stylistic/eslint-plugin': 5.5.0(eslint@9.39.1) - '@typescript-eslint/parser': 8.47.0(eslint@9.39.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.0(eslint@9.39.1)(typescript@5.9.3) eslint-rule-docs@1.1.235: {} @@ -18232,7 +18541,7 @@ snapshots: hammerjs@2.0.8: {} - happy-dom@20.0.10: + happy-dom@20.0.11: dependencies: '@types/node': 20.19.25 '@types/whatwg-mimetype': 3.0.2 @@ -19538,7 +19847,7 @@ snapshots: media-typer@1.1.0: {} - mediabunny@1.25.1: + mediabunny@1.25.3: dependencies: '@types/dom-mediacapture-transform': 0.1.11 '@types/dom-webcodecs': 0.1.13 @@ -19914,12 +20223,12 @@ snapshots: optionalDependencies: msgpackr-extract: 3.0.3 - msw-storybook-addon@2.0.6(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3)): + msw-storybook-addon@2.0.6(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3)): dependencies: is-node-process: 1.2.0 - msw: 2.12.2(@types/node@24.10.1)(typescript@5.9.3) + msw: 2.12.3(@types/node@24.10.1)(typescript@5.9.3) - msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3): + msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3): dependencies: '@inquirer/confirm': 5.1.21(@types/node@24.10.1) '@mswjs/interceptors': 0.40.0 @@ -19936,7 +20245,7 @@ snapshots: statuses: 2.0.2 strict-event-emitter: 0.5.1 tough-cookie: 6.0.0 - type-fest: 4.41.0 + type-fest: 5.2.0 until-async: 3.0.2 yargs: 17.7.2 optionalDependencies: @@ -20188,6 +20497,8 @@ snapshots: oblivious-set@2.0.0: {} + obug@2.1.1: {} + on-exit-leak-free@2.1.2: {} on-finished@2.4.1: @@ -20208,7 +20519,7 @@ snapshots: oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.3: + oniguruma-to-es@4.3.4: dependencies: oniguruma-parser: 0.12.1 regex: 6.0.1 @@ -20650,7 +20961,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.6.2: {} + prettier@3.7.1: {} pretty-bytes@5.6.0: {} @@ -21383,14 +21694,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@3.15.0: + shiki@3.17.0: dependencies: - '@shikijs/core': 3.15.0 - '@shikijs/engine-javascript': 3.15.0 - '@shikijs/engine-oniguruma': 3.15.0 - '@shikijs/langs': 3.15.0 - '@shikijs/themes': 3.15.0 - '@shikijs/types': 3.15.0 + '@shikijs/core': 3.17.0 + '@shikijs/engine-javascript': 3.17.0 + '@shikijs/engine-oniguruma': 3.17.0 + '@shikijs/langs': 3.17.0 + '@shikijs/themes': 3.17.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -21648,42 +21959,40 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(17b0cdbdd96b793834b84d8d4dddb88b): + storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(e133727417d7e5d8da2127d0903bc90b): dependencies: - '@storybook/blocks': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/components': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/core-events': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/manager-api': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/preview-api': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/theming': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) - '@storybook/types': 8.6.14(storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))) + '@storybook/blocks': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/components': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/core-events': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/manager-api': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/preview-api': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/theming': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) + '@storybook/types': 8.6.14(storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)) optionalDependencies: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - storybook@10.0.8(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)): + storybook@10.1.0(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(utf-8-validate@6.0.5): dependencies: '@storybook/global': 5.0.0 - '@storybook/icons': 1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@storybook/icons': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) '@vitest/spy': 3.2.4 - esbuild: 0.25.11 + esbuild: 0.27.0 recast: 0.23.11 semver: 7.7.3 + use-sync-external-store: 1.6.0(react@19.2.0) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - prettier: 3.6.2 + prettier: 3.7.1 transitivePeerDependencies: - '@testing-library/dom' - bufferutil - - msw - react - react-dom - utf-8-validate - - vite stream-browserify@3.0.0: dependencies: @@ -21882,6 +22191,8 @@ snapshots: systeminformation@5.27.7: {} + tagged-tag@1.0.0: {} + tar-stream@3.1.7: dependencies: b4a: 1.7.3 @@ -22123,6 +22434,10 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.2.0: + dependencies: + tagged-tag: 1.0.0 + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -22306,6 +22621,10 @@ snapshots: dependencies: punycode: 2.3.1 + use-sync-external-store@1.6.0(react@19.2.0): + dependencies: + react: 19.2.0 + utf-8-validate@6.0.5: dependencies: node-gyp-build: 4.8.4 @@ -22323,13 +22642,13 @@ snapshots: uuid@9.0.1: {} - v-code-diff@1.13.1(vue@3.5.24(typescript@5.9.3)): + v-code-diff@1.13.1(vue@3.5.25(typescript@5.9.3)): dependencies: diff: 5.2.0 diff-match-patch: 1.0.5 highlight.js: 11.11.1 - vue: 3.5.24(typescript@5.9.3) - vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.25(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3)) v8-to-istanbul@9.3.0: dependencies: @@ -22386,20 +22705,20 @@ snapshots: terser: 5.44.1 tsx: 4.20.6 - vitest-fetch-mock@0.4.5(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)): + vitest-fetch-mock@0.4.5(vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)): dependencies: - vitest: 4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) + vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) - vitest-websocket-mock@0.5.0(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)): + vitest-websocket-mock@0.5.0(vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)): dependencies: '@vitest/utils': 3.2.4 mock-socket: 9.3.1 - vitest: 4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) + vitest: 4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) - vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6): + vitest@4.0.13(@opentelemetry/api@1.9.0)(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6): dependencies: '@vitest/expect': 4.0.13 - '@vitest/mocker': 4.0.13(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + '@vitest/mocker': 4.0.13(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) '@vitest/pretty-format': 4.0.13 '@vitest/runner': 4.0.13 '@vitest/snapshot': 4.0.13 @@ -22422,7 +22741,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@types/debug': 4.1.12 '@types/node': 24.10.1 - happy-dom: 20.0.10 + happy-dom: 20.0.11 jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti @@ -22438,6 +22757,46 @@ snapshots: - tsx - yaml + vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@24.10.1)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6): + dependencies: + '@vitest/expect': 4.0.14 + '@vitest/mocker': 4.0.14(msw@2.12.3(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) + '@vitest/pretty-format': 4.0.14 + '@vitest/runner': 4.0.14 + '@vitest/snapshot': 4.0.14 + '@vitest/spy': 4.0.14 + '@vitest/utils': 4.0.14 + es-module-lexer: 1.7.0 + expect-type: 1.2.2 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + '@types/node': 24.10.1 + happy-dom: 20.0.11 + jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + void-elements@3.1.0: {} vscode-jsonrpc@8.2.0: {} @@ -22470,16 +22829,16 @@ snapshots: vue-component-type-helpers@3.1.5: {} - vue-demi@0.14.10(vue@3.5.24(typescript@5.9.3)): + vue-demi@0.14.10(vue@3.5.25(typescript@5.9.3)): dependencies: - vue: 3.5.24(typescript@5.9.3) + vue: 3.5.25(typescript@5.9.3) - vue-docgen-api@4.79.2(vue@3.5.24(typescript@5.9.3)): + vue-docgen-api@4.79.2(vue@3.5.25(typescript@5.9.3)): dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 '@vue/compiler-dom': 3.5.24 - '@vue/compiler-sfc': 3.5.24 + '@vue/compiler-sfc': 3.5.25 ast-types: 0.16.1 esm-resolve: 1.0.11 hash-sum: 2.0.0 @@ -22487,8 +22846,8 @@ snapshots: pug: 3.0.3 recast: 0.23.11 ts-map: 1.0.3 - vue: 3.5.24(typescript@5.9.3) - vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.25(typescript@5.9.3) + vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.25(typescript@5.9.3)) vue-eslint-parser@10.2.0(eslint@9.39.1): dependencies: @@ -22502,9 +22861,9 @@ snapshots: transitivePeerDependencies: - supports-color - vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.24(typescript@5.9.3)): + vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.25(typescript@5.9.3)): dependencies: - vue: 3.5.24(typescript@5.9.3) + vue: 3.5.25(typescript@5.9.3) vue-tsc@3.1.5(typescript@5.9.3): dependencies: @@ -22512,20 +22871,20 @@ snapshots: '@vue/language-core': 3.1.5(typescript@5.9.3) typescript: 5.9.3 - vue@3.5.24(typescript@5.9.3): + vue@3.5.25(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.24 - '@vue/compiler-sfc': 3.5.24 - '@vue/runtime-dom': 3.5.24 - '@vue/server-renderer': 3.5.24(vue@3.5.24(typescript@5.9.3)) - '@vue/shared': 3.5.24 + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-sfc': 3.5.25 + '@vue/runtime-dom': 3.5.25 + '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@5.9.3)) + '@vue/shared': 3.5.25 optionalDependencies: typescript: 5.9.3 - vuedraggable@4.1.0(vue@3.5.24(typescript@5.9.3)): + vuedraggable@4.1.0(vue@3.5.25(typescript@5.9.3)): dependencies: sortablejs: 1.14.0 - vue: 3.5.24(typescript@5.9.3) + vue: 3.5.25(typescript@5.9.3) w3c-xmlserializer@5.0.0: dependencies: From 65dd917bfb9965e7e83f648235888fa4882bf123 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 23:55:00 +0900 Subject: [PATCH 20/63] fix(deps): update [backend] update dependencies [ci skip] (#16941) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/backend/package.json | 18 +- pnpm-lock.yaml | 529 +++++++++++++++++++++++++++------- 2 files changed, 439 insertions(+), 108 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 5f5595b326..40aa2f82a2 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -71,8 +71,8 @@ "utf-8-validate": "6.0.5" }, "dependencies": { - "@aws-sdk/client-s3": "3.937.0", - "@aws-sdk/lib-storage": "3.937.0", + "@aws-sdk/client-s3": "3.940.0", + "@aws-sdk/lib-storage": "3.940.0", "@discordapp/twemoji": "16.0.1", "@fastify/accepts": "5.0.3", "@fastify/cookie": "11.0.2", @@ -84,7 +84,7 @@ "@kitajs/html": "4.2.11", "@misskey-dev/sharp-read-bmp": "1.2.0", "@misskey-dev/summaly": "5.2.5", - "@napi-rs/canvas": "0.1.82", + "@napi-rs/canvas": "0.1.83", "@nestjs/common": "11.1.9", "@nestjs/core": "11.1.9", "@nestjs/testing": "11.1.9", @@ -105,7 +105,7 @@ "bcryptjs": "3.0.3", "blurhash": "2.0.5", "body-parser": "2.2.1", - "bullmq": "5.64.1", + "bullmq": "5.65.0", "cacheable-lookup": "7.0.0", "cbor": "10.0.11", "chalk": "5.6.2", @@ -121,13 +121,13 @@ "file-type": "21.1.1", "fluent-ffmpeg": "2.1.3", "form-data": "4.0.5", - "got": "14.6.4", + "got": "14.6.5", "hpagent": "1.2.0", "http-link-header": "1.1.3", "i18n": "workspace:*", "ioredis": "5.8.2", "ip-cidr": "4.0.2", - "ipaddr.js": "2.2.0", + "ipaddr.js": "2.3.0", "is-svg": "6.1.0", "json5": "2.2.3", "jsonld": "9.0.0", @@ -151,7 +151,7 @@ "os-utils": "0.0.14", "otpauth": "9.4.1", "pg": "8.16.3", - "pkce-challenge": "5.0.0", + "pkce-challenge": "5.0.1", "probe-image-size": "7.2.3", "promise-limit": "2.7.0", "qrcode": "1.5.4", @@ -222,8 +222,8 @@ "@types/vary": "1.1.3", "@types/web-push": "3.6.4", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", "aws-sdk-client-mock": "4.1.0", "cross-env": "10.1.0", "eslint-plugin-import": "2.32.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27212d6fff..f14ab01be5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,11 +94,11 @@ importers: packages/backend: dependencies: '@aws-sdk/client-s3': - specifier: 3.937.0 - version: 3.937.0 + specifier: 3.940.0 + version: 3.940.0 '@aws-sdk/lib-storage': - specifier: 3.937.0 - version: 3.937.0(@aws-sdk/client-s3@3.937.0) + specifier: 3.940.0 + version: 3.940.0(@aws-sdk/client-s3@3.940.0) '@discordapp/twemoji': specifier: 16.0.1 version: 16.0.1 @@ -133,8 +133,8 @@ importers: specifier: 5.2.5 version: 5.2.5 '@napi-rs/canvas': - specifier: 0.1.82 - version: 0.1.82 + specifier: 0.1.83 + version: 0.1.83 '@nestjs/common': specifier: 11.1.9 version: 11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2) @@ -196,8 +196,8 @@ importers: specifier: 2.2.1 version: 2.2.1 bullmq: - specifier: 5.64.1 - version: 5.64.1 + specifier: 5.65.0 + version: 5.65.0 cacheable-lookup: specifier: 7.0.0 version: 7.0.0 @@ -244,8 +244,8 @@ importers: specifier: 4.0.5 version: 4.0.5 got: - specifier: 14.6.4 - version: 14.6.4 + specifier: 14.6.5 + version: 14.6.5 hpagent: specifier: 1.2.0 version: 1.2.0 @@ -262,8 +262,8 @@ importers: specifier: 4.0.2 version: 4.0.2 ipaddr.js: - specifier: 2.2.0 - version: 2.2.0 + specifier: 2.3.0 + version: 2.3.0 is-svg: specifier: 6.1.0 version: 6.1.0 @@ -334,8 +334,8 @@ importers: specifier: 8.16.3 version: 8.16.3 pkce-challenge: - specifier: 5.0.0 - version: 5.0.0 + specifier: 5.0.1 + version: 5.0.1 probe-image-size: specifier: 7.2.3 version: 7.2.3 @@ -542,11 +542,11 @@ importers: specifier: 8.18.1 version: 8.18.1 '@typescript-eslint/eslint-plugin': - specifier: 8.47.0 - version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.47.0 - version: 8.47.0(eslint@9.39.1)(typescript@5.9.3) + specifier: 8.48.0 + version: 8.48.0(eslint@9.39.1)(typescript@5.9.3) aws-sdk-client-mock: specifier: 4.1.0 version: 4.1.0 @@ -555,7 +555,7 @@ importers: version: 10.1.0 eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) + version: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1) execa: specifier: 9.6.0 version: 9.6.0 @@ -1670,8 +1670,8 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.937.0': - resolution: {integrity: sha512-ioeNe6HSc7PxjsUQY7foSHmgesxM5KwAeUtPhIHgKx99nrM+7xYCfW4FMvHypUzz7ZOvqlCdH7CEAZ8ParBvVg==} + '@aws-sdk/client-s3@3.940.0': + resolution: {integrity: sha512-Wi4qnBT6shRRMXuuTgjMFTU5mu2KFWisgcigEMPptjPGUtJvBVi4PTGgS64qsLoUk/obqDAyOBOfEtRZ2ddC2w==} engines: {node: '>=18.0.0'} '@aws-sdk/client-sesv2@3.938.0': @@ -1682,47 +1682,87 @@ packages: resolution: {integrity: sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.940.0': + resolution: {integrity: sha512-SdqJGWVhmIURvCSgkDditHRO+ozubwZk9aCX9MK8qxyOndhobCndW1ozl3hX9psvMAo9Q4bppjuqy/GHWpjB+A==} + engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.936.0': resolution: {integrity: sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==} engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.940.0': + resolution: {integrity: sha512-KsGD2FLaX5ngJao1mHxodIVU9VYd1E8810fcYiGwO1PFHDzf5BEkp6D9IdMeQwT8Q6JLYtiiT1Y/o3UCScnGoA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.936.0': resolution: {integrity: sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.940.0': + resolution: {integrity: sha512-/G3l5/wbZYP2XEQiOoIkRJmlv15f1P3MSd1a0gz27lHEMrOJOGq66rF1Ca4OJLzapWt3Fy9BPrZAepoAX11kMw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.936.0': resolution: {integrity: sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.940.0': + resolution: {integrity: sha512-dOrc03DHElNBD6N9Okt4U0zhrG4Wix5QUBSZPr5VN8SvmjD9dkrrxOkkJaMCl/bzrW7kbQEp7LuBdbxArMmOZQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.936.0': resolution: {integrity: sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.940.0': + resolution: {integrity: sha512-gn7PJQEzb/cnInNFTOaDoCN/hOKqMejNmLof1W5VW95Qk0TPO52lH8R4RmJPnRrwFMswOWswTOpR1roKNLIrcw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-login@3.936.0': resolution: {integrity: sha512-8DVrdRqPyUU66gfV7VZNToh56ZuO5D6agWrkLQE/xbLJOm2RbeRgh6buz7CqV8ipRd6m+zCl9mM4F3osQLZn8Q==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-login@3.940.0': + resolution: {integrity: sha512-fOKC3VZkwa9T2l2VFKWRtfHQPQuISqqNl35ZhcXjWKVwRwl/o7THPMkqI4XwgT2noGa7LLYVbWMwnsgSsBqglg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.936.0': resolution: {integrity: sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.940.0': + resolution: {integrity: sha512-M8NFAvgvO6xZjiti5kztFiAYmSmSlG3eUfr4ZHSfXYZUA/KUdZU/D6xJyaLnU8cYRWBludb6K9XPKKVwKfqm4g==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.936.0': resolution: {integrity: sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.940.0': + resolution: {integrity: sha512-pILBzt5/TYCqRsJb7vZlxmRIe0/T+FZPeml417EK75060ajDGnVJjHcuVdLVIeKoTKm9gmJc9l45gon6PbHyUQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.936.0': resolution: {integrity: sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.940.0': + resolution: {integrity: sha512-q6JMHIkBlDCOMnA3RAzf8cGfup+8ukhhb50fNpghMs1SNBGhanmaMbZSgLigBRsPQW7fOk2l8jnzdVLS+BB9Uw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.936.0': resolution: {integrity: sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==} engines: {node: '>=18.0.0'} - '@aws-sdk/lib-storage@3.937.0': - resolution: {integrity: sha512-G+AxZX14MaVUT93BGeG17yBC+rR5yOOvE0QLpSViSARjPLI7el1zEEpOzC18OKIchFoM81VfC0xavfNMIp/bfw==} + '@aws-sdk/credential-provider-web-identity@3.940.0': + resolution: {integrity: sha512-9QLTIkDJHHaYL0nyymO41H8g3ui1yz6Y3GmAN1gYQa6plXisuFBnGAbmKVj7zNvjWaOKdF0dV3dd3AFKEDoJ/w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/lib-storage@3.940.0': + resolution: {integrity: sha512-4pHgz9tuFJNSy/qoTbW5FqXPjoR4B18jB656UsE+TP5GWd7EPx7m4F0EUwIsD3OF5+KPiiyICi8zkxOs7erfQw==} engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.937.0 + '@aws-sdk/client-s3': ^3.940.0 '@aws-sdk/middleware-bucket-endpoint@3.936.0': resolution: {integrity: sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==} @@ -1732,8 +1772,8 @@ packages: resolution: {integrity: sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.936.0': - resolution: {integrity: sha512-l3GG6CrSQtMCM6fWY7foV3JQv0WJWT+3G6PSP3Ceb/KEE/5Lz5PrYFXTBf+bVoYL1b0bGjGajcgAXpstBmtHtQ==} + '@aws-sdk/middleware-flexible-checksums@3.940.0': + resolution: {integrity: sha512-WdsxDAVj5qaa5ApAP+JbpCOMHFGSmzjs2Y2OBSbWPeR9Ew7t/Okj+kUub94QJPsgzhvU1/cqNejhsw5VxeFKSQ==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-host-header@3.936.0': @@ -1756,6 +1796,10 @@ packages: resolution: {integrity: sha512-UQs/pVq4cOygsnKON0pOdSKIWkfgY0dzq4h+fR+xHi/Ng3XzxPJhWeAE6tDsKrcyQc1X8UdSbS70XkfGYr5hng==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-sdk-s3@3.940.0': + resolution: {integrity: sha512-JYkLjgS1wLoKHJ40G63+afM1ehmsPsjcmrHirKh8+kSCx4ip7+nL1e/twV4Zicxr8RJi9Y0Ahq5mDvneilDDKQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-ssec@3.936.0': resolution: {integrity: sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==} engines: {node: '>=18.0.0'} @@ -1764,10 +1808,18 @@ packages: resolution: {integrity: sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-user-agent@3.940.0': + resolution: {integrity: sha512-nJbLrUj6fY+l2W2rIB9P4Qvpiy0tnTdg/dmixRxrU1z3e8wBdspJlyE+AZN4fuVbeL6rrRrO/zxQC1bB3cw5IA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.936.0': resolution: {integrity: sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==} engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.940.0': + resolution: {integrity: sha512-x0mdv6DkjXqXEcQj3URbCltEzW6hoy/1uIL+i8gExP6YKrnhiZ7SzuB4gPls2UOpK5UqLiqXjhRLfBb1C9i4Dw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.936.0': resolution: {integrity: sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==} engines: {node: '>=18.0.0'} @@ -1776,10 +1828,18 @@ packages: resolution: {integrity: sha512-8qS0GFUqkmwO7JZ0P8tdluBmt1UTfYUah8qJXGzNh9n1Pcb0AIeT117cCSiCUtwk+gDbJvd4hhRIhJCNr5wgjg==} engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4-multi-region@3.940.0': + resolution: {integrity: sha512-ugHZEoktD/bG6mdgmhzLDjMP2VrYRAUPRPF1DpCyiZexkH7DCU7XrSJyXMvkcf0DHV+URk0q2sLf/oqn1D2uYw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.936.0': resolution: {integrity: sha512-vvw8+VXk0I+IsoxZw0mX9TMJawUJvEsg3EF7zcCSetwhNPAU8Xmlhv7E/sN/FgSmm7b7DsqKoW6rVtQiCs1PWQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.940.0': + resolution: {integrity: sha512-k5qbRe/ZFjW9oWEdzLIa2twRVIEx7p/9rutofyrRysrtEnYh3HAWCngAnwbgKMoiwa806UzcTRx0TjyEpnKcCg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.936.0': resolution: {integrity: sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==} engines: {node: '>=18.0.0'} @@ -1808,6 +1868,15 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.940.0': + resolution: {integrity: sha512-dlD/F+L/jN26I8Zg5x0oDGJiA+/WEQmnSE27fi5ydvYnpfQLwThtQo9SsNS47XSR/SOULaaoC9qx929rZuo74A==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/xml-builder@3.930.0': resolution: {integrity: sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==} engines: {node: '>=18.0.0'} @@ -2967,73 +3036,73 @@ packages: resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==} engines: {node: '>=18'} - '@napi-rs/canvas-android-arm64@0.1.82': - resolution: {integrity: sha512-bvZhN0iI54ouaQOrgJV96H2q7J3ZoufnHf4E1fUaERwW29Rz4rgicohnAg4venwBJZYjGl5Yl3CGmlAl1LZowQ==} + '@napi-rs/canvas-android-arm64@0.1.83': + resolution: {integrity: sha512-TbKM2fh9zXjqFIU8bgMfzG7rkrIYdLKMafgPhFoPwKrpWk1glGbWP7LEu8Y/WrMDqTGFdRqUmuX89yQEzZbkiw==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@napi-rs/canvas-darwin-arm64@0.1.82': - resolution: {integrity: sha512-InuBHKCyuFqhNwNr4gpqazo5Xp6ltKflqOLiROn4hqAS8u21xAHyYCJRgHwd+a5NKmutFTaRWeUIT/vxWbU/iw==} + '@napi-rs/canvas-darwin-arm64@0.1.83': + resolution: {integrity: sha512-gp8IDVUloPUmkepHly4xRUOfUJSFNvA4jR7ZRF5nk3YcGzegSFGeICiT4PnYyPgSKEhYAFe1Y2XNy0Mp6Tu8mQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@napi-rs/canvas-darwin-x64@0.1.82': - resolution: {integrity: sha512-aQGV5Ynn96onSXcuvYb2y7TRXD/t4CL2EGmnGqvLyeJX1JLSNisKQlWN/1bPDDXymZYSdUqbXehj5qzBlOx+RQ==} + '@napi-rs/canvas-darwin-x64@0.1.83': + resolution: {integrity: sha512-r4ZJxiP9OgUbdGZhPDEXD3hQ0aIPcVaywtcTXvamYxTU/SWKAbKVhFNTtpRe1J30oQ25gWyxTkUKSBgUkNzdnw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.82': - resolution: {integrity: sha512-YIUpmHWeHGGRhWitT1KJkgj/JPXPfc9ox8oUoyaGPxolLGPp5AxJkq8wIg8CdFGtutget968dtwmx71m8o3h5g==} + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.83': + resolution: {integrity: sha512-Uc6aSB05qH1r+9GUDxIE6F5ZF7L0nTFyyzq8ublWUZhw8fEGK8iy931ff1ByGFT04+xHJad1kBcL4R1ZEV8z7Q==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@napi-rs/canvas-linux-arm64-gnu@0.1.82': - resolution: {integrity: sha512-AwLzwLBgmvk7kWeUgItOUor/QyG31xqtD26w1tLpf4yE0hiXTGp23yc669aawjB6FzgIkjh1NKaNS52B7/qEBQ==} + '@napi-rs/canvas-linux-arm64-gnu@0.1.83': + resolution: {integrity: sha512-eEeaJA7V5KOFq7W0GtoRVbd3ak8UZpK+XLkCgUiFGtlunNw+ZZW9Cr/92MXflGe7o3SqqMUg+f975LPxO/vsOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@napi-rs/canvas-linux-arm64-musl@0.1.82': - resolution: {integrity: sha512-moZWuqepAwWBffdF4JDadt8TgBD02iMhG6I1FHZf8xO20AsIp9rB+p0B8Zma2h2vAF/YMjeFCDmW5un6+zZz9g==} + '@napi-rs/canvas-linux-arm64-musl@0.1.83': + resolution: {integrity: sha512-cAvonp5XpbatVGegF9lMQNchs3z5RH6EtamRVnQvtoRtwbzOMcdzwuLBqDBQxQF79MFbuZNkWj3YRJjZCjHVzw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@napi-rs/canvas-linux-riscv64-gnu@0.1.82': - resolution: {integrity: sha512-w9++2df2kG9eC9LWYIHIlMLuhIrKGQYfUxs97CwgxYjITeFakIRazI9LYWgVzEc98QZ9x9GQvlicFsrROV59MQ==} + '@napi-rs/canvas-linux-riscv64-gnu@0.1.83': + resolution: {integrity: sha512-WFUPQ9qZy31vmLxIJ3MfmHw+R2g/mLCgk8zmh7maJW8snV3vLPA7pZfIS65Dc61EVDp1vaBskwQ2RqPPzwkaew==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] libc: [glibc] - '@napi-rs/canvas-linux-x64-gnu@0.1.82': - resolution: {integrity: sha512-lZulOPwrRi6hEg/17CaqdwWEUfOlIJuhXxincx1aVzsVOCmyHf+xFq4i6liJl1P+x2v6Iz2Z/H5zHvXJCC7Bwg==} + '@napi-rs/canvas-linux-x64-gnu@0.1.83': + resolution: {integrity: sha512-X9YwIjsuy50WwOyYeNhEHjKHO8rrfH9M4U8vNqLuGmqsZdKua/GrUhdQGdjq7lTgdY3g4+Ta5jF8MzAa7UAs/g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@napi-rs/canvas-linux-x64-musl@0.1.82': - resolution: {integrity: sha512-Be9Wf5RTv1w6GXlTph55K3PH3vsAh1Ax4T1FQY1UYM0QfD0yrwGdnJ8/fhqw7dEgMjd59zIbjJQC8C3msbGn5g==} + '@napi-rs/canvas-linux-x64-musl@0.1.83': + resolution: {integrity: sha512-Vv2pLWQS8EnlSM1bstJ7vVhKA+mL4+my4sKUIn/bgIxB5O90dqiDhQjUDLP+5xn9ZMestRWDt3tdQEkGAmzq/A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@napi-rs/canvas-win32-x64-msvc@0.1.82': - resolution: {integrity: sha512-LN/i8VrvxTDmEEK1c10z2cdOTkWT76LlTGtyZe5Kr1sqoSomKeExAjbilnu1+oee5lZUgS5yfZ2LNlVhCeARuw==} + '@napi-rs/canvas-win32-x64-msvc@0.1.83': + resolution: {integrity: sha512-K1TtjbScfRNYhq8dengLLufXGbtEtWdUXPV505uLFPovyGHzDUGXLFP/zUJzj6xWXwgUjHNLgEPIt7mye0zr6Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@napi-rs/canvas@0.1.82': - resolution: {integrity: sha512-FGjyUBoF0sl1EenSiE4UV2WYu76q6F9GSYedq5EiOCOyGYoQ/Owulcv6rd7v/tWOpljDDtefXXIaOCJrVKem4w==} + '@napi-rs/canvas@0.1.83': + resolution: {integrity: sha512-f9GVB9VNc9vn/nroc9epXRNkVpvNPZh69+qzLJIm9DfruxFqX0/jsXG46OGWAJgkO4mN0HvFHjRROMXKVmPszg==} engines: {node: '>= 10'} '@napi-rs/nice-android-arm-eabi@1.1.1': @@ -5766,8 +5835,8 @@ packages: resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} - bullmq@5.64.1: - resolution: {integrity: sha512-Tg4ORit8bQ1xLwcQrEfcDpG50pS30Onuz1ZA4rPLbL9QEsOaBbvFQMSEvXSgMnvRZRqDggJoSBGz9tck+1PixQ==} + bullmq@5.65.0: + resolution: {integrity: sha512-fyOcyf2ad4zrNmE18vdF/ie7DrW0TwhLt5e0DkqDxbRpDNiUdYqgp2QZJW2ntnUN08T2mDMC4deUUhF2UOAmeQ==} buraha@0.0.1: resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==} @@ -7259,8 +7328,8 @@ packages: resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} engines: {node: '>=16'} - got@14.6.4: - resolution: {integrity: sha512-DjsLab39NUMf5iYlK9asVCkHMhaA2hEhrlmf+qXRhjEivuuBHWYbjmty9DA3OORUwZgENTB+6vSmY2ZW8gFHVw==} + got@14.6.5: + resolution: {integrity: sha512-Su87c0NNeg97de1sO02gy9I8EmE7DCJ1gzcFLcgGpYeq2PnLg4xz73MWrp6HjqbSsjb6Glf4UBDW6JNyZA6uSg==} engines: {node: '>=20'} graceful-fs@4.2.11: @@ -7560,8 +7629,8 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} engines: {node: '>= 10'} irregular-plurals@3.5.0: @@ -9119,8 +9188,8 @@ packages: piscina@4.9.2: resolution: {integrity: sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==} - pkce-challenge@5.0.0: - resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + pkce-challenge@5.0.1: + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} pkg-dir@4.2.0: @@ -11519,29 +11588,29 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.937.0': + '@aws-sdk/client-s3@3.940.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.936.0 - '@aws-sdk/credential-provider-node': 3.936.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/credential-provider-node': 3.940.0 '@aws-sdk/middleware-bucket-endpoint': 3.936.0 '@aws-sdk/middleware-expect-continue': 3.936.0 - '@aws-sdk/middleware-flexible-checksums': 3.936.0 + '@aws-sdk/middleware-flexible-checksums': 3.940.0 '@aws-sdk/middleware-host-header': 3.936.0 '@aws-sdk/middleware-location-constraint': 3.936.0 '@aws-sdk/middleware-logger': 3.936.0 '@aws-sdk/middleware-recursion-detection': 3.936.0 - '@aws-sdk/middleware-sdk-s3': 3.936.0 + '@aws-sdk/middleware-sdk-s3': 3.940.0 '@aws-sdk/middleware-ssec': 3.936.0 - '@aws-sdk/middleware-user-agent': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.940.0 '@aws-sdk/region-config-resolver': 3.936.0 - '@aws-sdk/signature-v4-multi-region': 3.936.0 + '@aws-sdk/signature-v4-multi-region': 3.940.0 '@aws-sdk/types': 3.936.0 '@aws-sdk/util-endpoints': 3.936.0 '@aws-sdk/util-user-agent-browser': 3.936.0 - '@aws-sdk/util-user-agent-node': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.940.0 '@smithy/config-resolver': 4.4.3 '@smithy/core': 3.18.5 '@smithy/eventstream-serde-browser': 4.2.5 @@ -11667,6 +11736,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.940.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.940.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.940.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.5 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.12 + '@smithy/middleware-retry': 4.4.12 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.11 + '@smithy/util-defaults-mode-node': 4.2.14 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/core@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -11683,6 +11795,22 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@aws-sdk/core@3.940.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@aws-sdk/xml-builder': 3.930.0 + '@smithy/core': 3.18.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.936.0': dependencies: '@aws-sdk/core': 3.936.0 @@ -11691,6 +11819,14 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.936.0': dependencies: '@aws-sdk/core': 3.936.0 @@ -11704,6 +11840,19 @@ snapshots: '@smithy/util-stream': 4.5.6 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.936.0': dependencies: '@aws-sdk/core': 3.936.0 @@ -11723,6 +11872,25 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-ini@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/credential-provider-env': 3.940.0 + '@aws-sdk/credential-provider-http': 3.940.0 + '@aws-sdk/credential-provider-login': 3.940.0 + '@aws-sdk/credential-provider-process': 3.940.0 + '@aws-sdk/credential-provider-sso': 3.940.0 + '@aws-sdk/credential-provider-web-identity': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-login@3.936.0': dependencies: '@aws-sdk/core': 3.936.0 @@ -11736,6 +11904,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-login@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-node@3.936.0': dependencies: '@aws-sdk/credential-provider-env': 3.936.0 @@ -11753,6 +11934,23 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.940.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.940.0 + '@aws-sdk/credential-provider-http': 3.940.0 + '@aws-sdk/credential-provider-ini': 3.940.0 + '@aws-sdk/credential-provider-process': 3.940.0 + '@aws-sdk/credential-provider-sso': 3.940.0 + '@aws-sdk/credential-provider-web-identity': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-process@3.936.0': dependencies: '@aws-sdk/core': 3.936.0 @@ -11762,6 +11960,15 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.936.0': dependencies: '@aws-sdk/client-sso': 3.936.0 @@ -11775,6 +11982,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-sso@3.940.0': + dependencies: + '@aws-sdk/client-sso': 3.940.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/token-providers': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.936.0': dependencies: '@aws-sdk/core': 3.936.0 @@ -11787,9 +12007,21 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/lib-storage@3.937.0(@aws-sdk/client-s3@3.937.0)': + '@aws-sdk/credential-provider-web-identity@3.940.0': dependencies: - '@aws-sdk/client-s3': 3.937.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/lib-storage@3.940.0(@aws-sdk/client-s3@3.940.0)': + dependencies: + '@aws-sdk/client-s3': 3.940.0 '@smithy/abort-controller': 4.2.5 '@smithy/middleware-endpoint': 4.3.12 '@smithy/smithy-client': 4.9.8 @@ -11815,12 +12047,12 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.936.0': + '@aws-sdk/middleware-flexible-checksums@3.940.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.936.0 + '@aws-sdk/core': 3.940.0 '@aws-sdk/types': 3.936.0 '@smithy/is-array-buffer': 4.2.0 '@smithy/node-config-provider': 4.3.5 @@ -11875,6 +12107,23 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@aws-sdk/middleware-sdk-s3@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-arn-parser': 3.893.0 + '@smithy/core': 3.18.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/middleware-ssec@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -11891,6 +12140,16 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@smithy/core': 3.18.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + '@aws-sdk/nested-clients@3.936.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -11934,6 +12193,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/nested-clients@3.940.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.940.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.940.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.940.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.5 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.12 + '@smithy/middleware-retry': 4.4.12 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.8 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.11 + '@smithy/util-defaults-mode-node': 4.2.14 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/region-config-resolver@3.936.0': dependencies: '@aws-sdk/types': 3.936.0 @@ -11951,6 +12253,15 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.940.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.936.0': dependencies: '@aws-sdk/core': 3.936.0 @@ -11963,6 +12274,18 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.940.0': + dependencies: + '@aws-sdk/core': 3.940.0 + '@aws-sdk/nested-clients': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/types@3.936.0': dependencies: '@smithy/types': 4.9.0 @@ -11999,6 +12322,14 @@ snapshots: '@smithy/types': 4.9.0 tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.940.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.940.0 + '@aws-sdk/types': 3.936.0 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + tslib: 2.8.1 + '@aws-sdk/xml-builder@3.930.0': dependencies: '@smithy/types': 4.9.0 @@ -12626,7 +12957,7 @@ snapshots: '@fastify/proxy-addr@5.1.0': dependencies: '@fastify/forwarded': 3.0.1 - ipaddr.js: 2.2.0 + ipaddr.js: 2.3.0 '@fastify/reply-from@12.4.0': dependencies: @@ -13172,7 +13503,7 @@ snapshots: dependencies: cheerio: 1.1.2 escape-regexp: 0.0.1 - got: 14.6.4 + got: 14.6.5 html-entities: 2.6.0 iconv-lite: 0.7.0 jschardet: 3.1.4 @@ -13205,48 +13536,48 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@napi-rs/canvas-android-arm64@0.1.82': + '@napi-rs/canvas-android-arm64@0.1.83': optional: true - '@napi-rs/canvas-darwin-arm64@0.1.82': + '@napi-rs/canvas-darwin-arm64@0.1.83': optional: true - '@napi-rs/canvas-darwin-x64@0.1.82': + '@napi-rs/canvas-darwin-x64@0.1.83': optional: true - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.82': + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.83': optional: true - '@napi-rs/canvas-linux-arm64-gnu@0.1.82': + '@napi-rs/canvas-linux-arm64-gnu@0.1.83': optional: true - '@napi-rs/canvas-linux-arm64-musl@0.1.82': + '@napi-rs/canvas-linux-arm64-musl@0.1.83': optional: true - '@napi-rs/canvas-linux-riscv64-gnu@0.1.82': + '@napi-rs/canvas-linux-riscv64-gnu@0.1.83': optional: true - '@napi-rs/canvas-linux-x64-gnu@0.1.82': + '@napi-rs/canvas-linux-x64-gnu@0.1.83': optional: true - '@napi-rs/canvas-linux-x64-musl@0.1.82': + '@napi-rs/canvas-linux-x64-musl@0.1.83': optional: true - '@napi-rs/canvas-win32-x64-msvc@0.1.82': + '@napi-rs/canvas-win32-x64-msvc@0.1.83': optional: true - '@napi-rs/canvas@0.1.82': + '@napi-rs/canvas@0.1.83': optionalDependencies: - '@napi-rs/canvas-android-arm64': 0.1.82 - '@napi-rs/canvas-darwin-arm64': 0.1.82 - '@napi-rs/canvas-darwin-x64': 0.1.82 - '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.82 - '@napi-rs/canvas-linux-arm64-gnu': 0.1.82 - '@napi-rs/canvas-linux-arm64-musl': 0.1.82 - '@napi-rs/canvas-linux-riscv64-gnu': 0.1.82 - '@napi-rs/canvas-linux-x64-gnu': 0.1.82 - '@napi-rs/canvas-linux-x64-musl': 0.1.82 - '@napi-rs/canvas-win32-x64-msvc': 0.1.82 + '@napi-rs/canvas-android-arm64': 0.1.83 + '@napi-rs/canvas-darwin-arm64': 0.1.83 + '@napi-rs/canvas-darwin-x64': 0.1.83 + '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.83 + '@napi-rs/canvas-linux-arm64-gnu': 0.1.83 + '@napi-rs/canvas-linux-arm64-musl': 0.1.83 + '@napi-rs/canvas-linux-riscv64-gnu': 0.1.83 + '@napi-rs/canvas-linux-x64-gnu': 0.1.83 + '@napi-rs/canvas-linux-x64-musl': 0.1.83 + '@napi-rs/canvas-win32-x64-msvc': 0.1.83 '@napi-rs/nice-android-arm-eabi@1.1.1': optional: true @@ -14822,7 +15153,7 @@ snapshots: '@stylistic/eslint-plugin@5.5.0(eslint@9.39.1)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1) - '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/types': 8.48.0 eslint: 9.39.1 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -15516,8 +15847,8 @@ snapshots: '@typescript-eslint/project-service@8.47.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3) - '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/tsconfig-utils': 8.48.0(typescript@5.9.3) + '@typescript-eslint/types': 8.48.0 debug: 4.4.3(supports-color@10.2.2) typescript: 5.9.3 transitivePeerDependencies: @@ -16599,7 +16930,7 @@ snapshots: node-gyp-build: 4.8.4 optional: true - bullmq@5.64.1: + bullmq@5.65.0: dependencies: cron-parser: 4.9.0 ioredis: 5.8.2 @@ -18518,7 +18849,7 @@ snapshots: p-cancelable: 3.0.0 responselike: 3.0.0 - got@14.6.4: + got@14.6.5: dependencies: '@sindresorhus/is': 7.1.1 byte-counter: 0.1.0 @@ -18830,7 +19161,7 @@ snapshots: ipaddr.js@1.9.1: {} - ipaddr.js@2.2.0: {} + ipaddr.js@2.3.0: {} irregular-plurals@3.5.0: {} @@ -20761,7 +21092,7 @@ snapshots: optionalDependencies: '@napi-rs/nice': 1.1.1 - pkce-challenge@5.0.0: {} + pkce-challenge@5.0.1: {} pkg-dir@4.2.0: dependencies: @@ -20985,7 +21316,7 @@ snapshots: dependencies: '@chainsafe/is-ip': 2.1.0 ip-regex: 5.0.0 - ipaddr.js: 2.2.0 + ipaddr.js: 2.3.0 netmask: 2.0.2 probe-image-size@7.2.3: From 2a996287e32e42abd7a51659f98fa19c9047de37 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 6 Dec 2025 16:44:23 +0900 Subject: [PATCH 21/63] update pnpm to 10.24.0 --- package.json | 4 ++-- pnpm-lock.yaml | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 446c344879..af2c480869 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "git", "url": "https://github.com/misskey-dev/misskey.git" }, - "packageManager": "pnpm@10.23.0", + "packageManager": "pnpm@10.24.0", "workspaces": [ "packages/misskey-js", "packages/i18n", @@ -81,7 +81,7 @@ "eslint": "9.39.1", "globals": "16.5.0", "ncp": "2.0.0", - "pnpm": "10.23.0", + "pnpm": "10.24.0", "start-server-and-test": "2.1.3" }, "optionalDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f14ab01be5..c9fa1c4a01 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,8 +81,8 @@ importers: specifier: 2.0.0 version: 2.0.0 pnpm: - specifier: 10.23.0 - version: 10.23.0 + specifier: 10.24.0 + version: 10.24.0 start-server-and-test: specifier: 2.1.3 version: 2.1.3 @@ -9212,8 +9212,8 @@ packages: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} - pnpm@10.23.0: - resolution: {integrity: sha512-IcTlaYACrel+Tv6Li0qJqN48haN5GflX56DzDzj7xbvdBZgP/ikXmy+25uaRJC4JjZRdFgF3LK0P71+2QR4qSw==} + pnpm@10.24.0: + resolution: {integrity: sha512-Af+K5xtEGZA7ZcYPstydNM+LtuBtA73hEu8496NNaQTEJLpmvqXNzxKJAjC/OflYBHMUDtnJRv7zKLblI4o0Wg==} engines: {node: '>=18.12'} hasBin: true @@ -21110,7 +21110,7 @@ snapshots: pngjs@5.0.0: {} - pnpm@10.23.0: {} + pnpm@10.24.0: {} polished@4.3.1: dependencies: From a1f0ca4b8fab52758d76f50fa6d5171667f2a03f Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 6 Dec 2025 17:39:17 +0900 Subject: [PATCH 22/63] use node 22.15.0 by default #16944 --- .devcontainer/devcontainer.json | 2 +- .node-version | 2 +- Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index e800743469..514abdfb20 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,7 +5,7 @@ "workspaceFolder": "/workspace", "features": { "ghcr.io/devcontainers/features/node:1": { - "version": "24.10.0" + "version": "22.15.0" }, "ghcr.io/devcontainers-extra/features/pnpm:2": { "version": "10.10.0" diff --git a/.node-version b/.node-version index 21651351e2..b8ffd70759 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -24.10.0 +22.15.0 diff --git a/Dockerfile b/Dockerfile index a071970927..02739d9ca2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax = docker/dockerfile:1.4 -ARG NODE_VERSION=24.10.0-bookworm +ARG NODE_VERSION=22.15.0-bookworm # build assets & compile TypeScript From 2d0dae236fd828e4c071fa1fce4dc559d78f6e91 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 6 Dec 2025 08:41:10 +0000 Subject: [PATCH 23/63] Bump version to 2025.12.0-beta.0 --- package.json | 2 +- packages/misskey-js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index af2c480869..ae8de47188 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.12.0-alpha.2", + "version": "2025.12.0-beta.0", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index eab037f08d..7d957172dc 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.12.0-alpha.2", + "version": "2025.12.0-beta.0", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From dc77d59f8712d3fe0b73cd4af2035133839cd57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8A=E3=81=95=E3=82=80=E3=81=AE=E3=81=B2=E3=81=A8?= <46447427+samunohito@users.noreply.github.com> Date: Sat, 6 Dec 2025 18:25:20 +0900 Subject: [PATCH 24/63] Merge commit from fork --- .../src/core/entities/NoteEntityService.ts | 15 +- .../src/misc/should-hide-note-by-time.ts | 29 ++++ .../processors/ExportClipsProcessorService.ts | 64 +++++---- .../ExportFavoritesProcessorService.ts | 34 +++-- .../unit/misc/should-hide-note-by-time.ts | 131 ++++++++++++++++++ 5 files changed, 221 insertions(+), 52 deletions(-) create mode 100644 packages/backend/src/misc/should-hide-note-by-time.ts create mode 100644 packages/backend/test/unit/misc/should-hide-note-by-time.ts diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts index 6871ba2c72..e7847ba74e 100644 --- a/packages/backend/src/core/entities/NoteEntityService.ts +++ b/packages/backend/src/core/entities/NoteEntityService.ts @@ -15,6 +15,7 @@ import type { UsersRepository, NotesRepository, FollowingsRepository, PollsRepos import { bindThis } from '@/decorators.js'; import { DebounceLoader } from '@/misc/loader.js'; import { IdService } from '@/core/IdService.js'; +import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js'; import { ReactionsBufferingService } from '@/core/ReactionsBufferingService.js'; import type { OnModuleInit } from '@nestjs/common'; import type { CustomEmojiService } from '../CustomEmojiService.js'; @@ -116,12 +117,7 @@ export class NoteEntityService implements OnModuleInit { private treatVisibility(packedNote: Packed<'Note'>): Packed<'Note'>['visibility'] { if (packedNote.visibility === 'public' || packedNote.visibility === 'home') { const followersOnlyBefore = packedNote.user.makeNotesFollowersOnlyBefore; - if ((followersOnlyBefore != null) - && ( - (followersOnlyBefore <= 0 && (Date.now() - new Date(packedNote.createdAt).getTime() > 0 - (followersOnlyBefore * 1000))) - || (followersOnlyBefore > 0 && (new Date(packedNote.createdAt).getTime() < followersOnlyBefore * 1000)) - ) - ) { + if (shouldHideNoteByTime(followersOnlyBefore, packedNote.createdAt)) { packedNote.visibility = 'followers'; } } @@ -141,12 +137,7 @@ export class NoteEntityService implements OnModuleInit { if (!hide) { const hiddenBefore = packedNote.user.makeNotesHiddenBefore; - if ((hiddenBefore != null) - && ( - (hiddenBefore <= 0 && (Date.now() - new Date(packedNote.createdAt).getTime() > 0 - (hiddenBefore * 1000))) - || (hiddenBefore > 0 && (new Date(packedNote.createdAt).getTime() < hiddenBefore * 1000)) - ) - ) { + if (shouldHideNoteByTime(hiddenBefore, packedNote.createdAt)) { hide = true; } } diff --git a/packages/backend/src/misc/should-hide-note-by-time.ts b/packages/backend/src/misc/should-hide-note-by-time.ts new file mode 100644 index 0000000000..1430434094 --- /dev/null +++ b/packages/backend/src/misc/should-hide-note-by-time.ts @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +/** + * ノートが指定された時間条件に基づいて非表示対象かどうかを判定する + * @param hiddenBefore 非表示条件(負の値: 作成からの経過秒数、正の値: UNIXタイムスタンプ秒、null: 判定しない) + * @param createdAt ノートの作成日時(ISO 8601形式の文字列 または Date オブジェクト) + * @returns 非表示にすべき場合は true + */ +export function shouldHideNoteByTime(hiddenBefore: number | null | undefined, createdAt: string | Date): boolean { + if (hiddenBefore == null) { + return false; + } + + const createdAtTime = typeof createdAt === 'string' ? new Date(createdAt).getTime() : createdAt.getTime(); + + if (hiddenBefore <= 0) { + // 負の値: 作成からの経過時間(秒)で判定 + const elapsedSeconds = (Date.now() - createdAtTime) / 1000; + const hideAfterSeconds = Math.abs(hiddenBefore); + return elapsedSeconds > hideAfterSeconds; + } else { + // 正の値: 絶対的なタイムスタンプ(秒)で判定 + const createdAtSeconds = createdAtTime / 1000; + return createdAtSeconds < hiddenBefore; + } +} diff --git a/packages/backend/src/queue/processors/ExportClipsProcessorService.ts b/packages/backend/src/queue/processors/ExportClipsProcessorService.ts index 486dc4c01f..be7d4e9e21 100644 --- a/packages/backend/src/queue/processors/ExportClipsProcessorService.ts +++ b/packages/backend/src/queue/processors/ExportClipsProcessorService.ts @@ -5,21 +5,20 @@ import * as fs from 'node:fs'; import { Writable } from 'node:stream'; -import { Inject, Injectable, StreamableFile } from '@nestjs/common'; -import { MoreThan } from 'typeorm'; +import { Inject, Injectable } from '@nestjs/common'; import { format as dateFormat } from 'date-fns'; import { DI } from '@/di-symbols.js'; -import type { ClipNotesRepository, ClipsRepository, MiClip, MiClipNote, MiUser, NotesRepository, PollsRepository, UsersRepository } from '@/models/_.js'; +import type { ClipNotesRepository, ClipsRepository, MiClip, MiClipNote, MiUser, PollsRepository, UsersRepository } from '@/models/_.js'; import type Logger from '@/logger.js'; import { DriveService } from '@/core/DriveService.js'; import { createTemp } from '@/misc/create-temp.js'; import type { MiPoll } from '@/models/Poll.js'; import type { MiNote } from '@/models/Note.js'; import { bindThis } from '@/decorators.js'; -import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js'; -import { Packed } from '@/misc/json-schema.js'; import { IdService } from '@/core/IdService.js'; import { NotificationService } from '@/core/NotificationService.js'; +import { QueryService } from '@/core/QueryService.js'; +import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js'; import { QueueLoggerService } from '../QueueLoggerService.js'; import type * as Bull from 'bullmq'; import type { DbJobDataWithUser } from '../types.js'; @@ -43,6 +42,7 @@ export class ExportClipsProcessorService { private driveService: DriveService, private queueLoggerService: QueueLoggerService, + private queryService: QueryService, private idService: IdService, private notificationService: NotificationService, ) { @@ -100,16 +100,16 @@ export class ExportClipsProcessorService { }); while (true) { - const clips = await this.clipsRepository.find({ - where: { - userId: user.id, - ...(cursor ? { id: MoreThan(cursor) } : {}), - }, - take: 100, - order: { - id: 1, - }, - }); + const query = this.clipsRepository.createQueryBuilder('clip') + .where('clip.userId = :userId', { userId: user.id }) + .orderBy('clip.id', 'ASC') + .take(100); + + if (cursor) { + query.andWhere('clip.id > :cursor', { cursor }); + } + + const clips = await query.getMany(); if (clips.length === 0) { job.updateProgress(100); @@ -124,7 +124,7 @@ export class ExportClipsProcessorService { const isFirst = exportedClipsCount === 0; await writer.write(isFirst ? content : ',\n' + content); - await this.processClipNotes(writer, clip.id); + await this.processClipNotes(writer, clip.id, user.id); await writer.write(']}'); exportedClipsCount++; @@ -134,22 +134,25 @@ export class ExportClipsProcessorService { } } - async processClipNotes(writer: WritableStreamDefaultWriter, clipId: string): Promise { + async processClipNotes(writer: WritableStreamDefaultWriter, clipId: string, userId: string): Promise { let exportedClipNotesCount = 0; let cursor: MiClipNote['id'] | null = null; while (true) { - const clipNotes = await this.clipNotesRepository.find({ - where: { - clipId, - ...(cursor ? { id: MoreThan(cursor) } : {}), - }, - take: 100, - order: { - id: 1, - }, - relations: ['note', 'note.user'], - }) as (MiClipNote & { note: MiNote & { user: MiUser } })[]; + const query = this.clipNotesRepository.createQueryBuilder('clipNote') + .leftJoinAndSelect('clipNote.note', 'note') + .leftJoinAndSelect('note.user', 'user') + .where('clipNote.clipId = :clipId', { clipId }) + .orderBy('clipNote.id', 'ASC') + .take(100); + + if (cursor) { + query.andWhere('clipNote.id > :cursor', { cursor }); + } + + this.queryService.generateVisibilityQuery(query, { id: userId }); + + const clipNotes = await query.getMany() as (MiClipNote & { note: MiNote & { user: MiUser } })[]; if (clipNotes.length === 0) { break; @@ -158,6 +161,11 @@ export class ExportClipsProcessorService { cursor = clipNotes.at(-1)?.id ?? null; for (const clipNote of clipNotes) { + const noteCreatedAt = this.idService.parse(clipNote.note.id).date; + if (shouldHideNoteByTime(clipNote.note.user.makeNotesHiddenBefore, noteCreatedAt)) { + continue; + } + let poll: MiPoll | undefined; if (clipNote.note.hasPoll) { poll = await this.pollsRepository.findOneByOrFail({ noteId: clipNote.note.id }); diff --git a/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts b/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts index 7918c8ccb5..87a8ded307 100644 --- a/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts +++ b/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts @@ -5,7 +5,6 @@ import * as fs from 'node:fs'; import { Inject, Injectable } from '@nestjs/common'; -import { MoreThan } from 'typeorm'; import { format as dateFormat } from 'date-fns'; import { DI } from '@/di-symbols.js'; import type { MiNoteFavorite, NoteFavoritesRepository, PollsRepository, MiUser, UsersRepository } from '@/models/_.js'; @@ -17,6 +16,8 @@ import type { MiNote } from '@/models/Note.js'; import { bindThis } from '@/decorators.js'; import { IdService } from '@/core/IdService.js'; import { NotificationService } from '@/core/NotificationService.js'; +import { QueryService } from '@/core/QueryService.js'; +import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js'; import { QueueLoggerService } from '../QueueLoggerService.js'; import type * as Bull from 'bullmq'; import type { DbJobDataWithUser } from '../types.js'; @@ -37,6 +38,7 @@ export class ExportFavoritesProcessorService { private driveService: DriveService, private queueLoggerService: QueueLoggerService, + private queryService: QueryService, private idService: IdService, private notificationService: NotificationService, ) { @@ -83,17 +85,20 @@ export class ExportFavoritesProcessorService { }); while (true) { - const favorites = await this.noteFavoritesRepository.find({ - where: { - userId: user.id, - ...(cursor ? { id: MoreThan(cursor) } : {}), - }, - take: 100, - order: { - id: 1, - }, - relations: ['note', 'note.user'], - }) as (MiNoteFavorite & { note: MiNote & { user: MiUser } })[]; + const query = this.noteFavoritesRepository.createQueryBuilder('favorite') + .leftJoinAndSelect('favorite.note', 'note') + .leftJoinAndSelect('note.user', 'user') + .where('favorite.userId = :userId', { userId: user.id }) + .orderBy('favorite.id', 'ASC') + .take(100); + + if (cursor) { + query.andWhere('favorite.id > :cursor', { cursor }); + } + + this.queryService.generateVisibilityQuery(query, { id: user.id }); + + const favorites = await query.getMany() as (MiNoteFavorite & { note: MiNote & { user: MiUser } })[]; if (favorites.length === 0) { job.updateProgress(100); @@ -103,6 +108,11 @@ export class ExportFavoritesProcessorService { cursor = favorites.at(-1)?.id ?? null; for (const favorite of favorites) { + const noteCreatedAt = this.idService.parse(favorite.note.id).date; + if (shouldHideNoteByTime(favorite.note.user.makeNotesHiddenBefore, noteCreatedAt)) { + continue; + } + let poll: MiPoll | undefined; if (favorite.note.hasPoll) { poll = await this.pollsRepository.findOneByOrFail({ noteId: favorite.note.id }); diff --git a/packages/backend/test/unit/misc/should-hide-note-by-time.ts b/packages/backend/test/unit/misc/should-hide-note-by-time.ts new file mode 100644 index 0000000000..29cbd751a3 --- /dev/null +++ b/packages/backend/test/unit/misc/should-hide-note-by-time.ts @@ -0,0 +1,131 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { describe, expect, test, beforeEach, afterEach, jest } from '@jest/globals'; +import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js'; + +describe('misc:should-hide-note-by-time', () => { + let now: number; + + beforeEach(() => { + now = Date.now(); + jest.useFakeTimers(); + jest.setSystemTime(now); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + describe('hiddenBefore が null または undefined の場合', () => { + test('hiddenBefore が null のときは false を返す(非表示機能が有効でない)', () => { + const createdAt = new Date(now - 86400000); // 1 day ago + expect(shouldHideNoteByTime(null, createdAt)).toBe(false); + }); + + test('hiddenBefore が undefined のときは false を返す(非表示機能が有効でない)', () => { + const createdAt = new Date(now - 86400000); // 1 day ago + expect(shouldHideNoteByTime(undefined, createdAt)).toBe(false); + }); + }); + + describe('相対時間モード (hiddenBefore <= 0)', () => { + test('閾値内に作成されたノートは false を返す(作成からの経過時間がまだ短い→表示)', () => { + const hiddenBefore = -86400; // 1 day in seconds + const createdAt = new Date(now - 3600000); // 1 hour ago + expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(false); + }); + + test('閾値を超えて作成されたノートは true を返す(指定期間以上経過している→非表示)', () => { + const hiddenBefore = -86400; // 1 day in seconds + const createdAt = new Date(now - 172800000); // 2 days ago + expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); + }); + + test('ちょうど閾値で作成されたノートは true を返す(閾値に達したら非表示)', () => { + const hiddenBefore = -86400; // 1 day in seconds + const createdAt = new Date(now - 86400000); // exactly 1 day ago + expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); + }); + + test('異なる相対時間値で判定できる(1時間設定と3時間設定の異なる結果)', () => { + const createdAt = new Date(now - 7200000); // 2 hours ago + expect(shouldHideNoteByTime(-3600, createdAt)).toBe(true); // 1時間経過→非表示 + expect(shouldHideNoteByTime(-10800, createdAt)).toBe(false); // 3時間未経過→表示 + }); + + test('ISO 8601 形式の文字列の createdAt に対応できる(文字列でも正しく判定)', () => { + const createdAtString = new Date(now - 86400000).toISOString(); + const hiddenBefore = -86400; // 1 day in seconds + expect(shouldHideNoteByTime(hiddenBefore, createdAtString)).toBe(true); + }); + + test('hiddenBefore が 0 の場合に対応できる(0秒以上経過で非表示→ほぼ全て非表示)', () => { + const hiddenBefore = 0; + const createdAt = new Date(now - 1); // 1ms ago + expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); + }); + }); + + describe('絶対時間モード (hiddenBefore > 0)', () => { + test('閾値タイムスタンプより後に作成されたノートは false を返す(指定日時より後→表示)', () => { + const thresholdSeconds = Math.floor(now / 1000); + const createdAt = new Date(now + 3600000); // 1 hour from now + expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(false); + }); + + test('閾値タイムスタンプより前に作成されたノートは true を返す(指定日時より前→非表示)', () => { + const thresholdSeconds = Math.floor(now / 1000); + const createdAt = new Date(now - 3600000); // 1 hour ago + expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true); + }); + + test('ちょうど閾値タイムスタンプで作成されたノートは true を返す(指定日時に達したら非表示)', () => { + const thresholdSeconds = Math.floor(now / 1000); + const createdAt = new Date(now); // exactly now + expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true); + }); + + test('ISO 8601 形式の文字列の createdAt に対応できる(文字列でも正しく判定)', () => { + const thresholdSeconds = Math.floor(now / 1000); + const createdAtString = new Date(now - 3600000).toISOString(); + expect(shouldHideNoteByTime(thresholdSeconds, createdAtString)).toBe(true); + }); + + test('異なる閾値タイムスタンプで判定できる(2021年設定と現在より1時間前設定の異なる結果)', () => { + const thresholdSeconds = Math.floor((now - 86400000) / 1000); // 1 day ago + const createdAtBefore = new Date(now - 172800000); // 2 days ago + const createdAtAfter = new Date(now - 3600000); // 1 hour ago + expect(shouldHideNoteByTime(thresholdSeconds, createdAtBefore)).toBe(true); // 閾値より前→非表示 + expect(shouldHideNoteByTime(thresholdSeconds, createdAtAfter)).toBe(false); // 閾値より後→表示 + }); + }); + + describe('エッジケース', () => { + test('相対時間モードで非常に古いノートに対応できる(非常に古い→閾値超→非表示)', () => { + const hiddenBefore = -1; // hide notes older than 1 second + const createdAt = new Date(now - 1000000); // very old + expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); + }); + + test('相対時間モードで非常に新しいノートに対応できる(非常に新しい→閾値未満→表示)', () => { + const hiddenBefore = -86400; // 1 day + const createdAt = new Date(now - 1); // 1ms ago + expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(false); + }); + + test('大きなタイムスタンプ値に対応できる(未来の日時を指定→現在のノートは全て非表示)', () => { + const thresholdSeconds = Math.floor(now / 1000) + 86400; // 1 day from now + const createdAt = new Date(now); // created now + expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true); + }); + + test('小さな相対時間値に対応できる(1秒設定で2秒前→非表示)', () => { + const hiddenBefore = -1; // 1 second + const createdAt = new Date(now - 2000); // 2 seconds ago + expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); + }); + }); +}); From 8927a9e98a75ad4bd7fe119ca039afce0e43d5b6 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 6 Dec 2025 18:27:57 +0900 Subject: [PATCH 25/63] Update CHANGELOG.md --- CHANGELOG.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a30bf8c441..c3012d0649 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,5 @@ ## 2025.12.0 -### General -- - ### Client - Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正 @@ -10,7 +7,7 @@ - Enhance: メモリ使用量を削減しました - Enhance: ActivityPubアクティビティを送信する際のパフォーマンス向上 - Enhance: 依存関係の更新 - +- Fix: セキュリティに関する修正 ## 2025.11.1 From 61f9c148f08720e2fcf46fc9c71a1f58b354a728 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 6 Dec 2025 18:46:13 +0900 Subject: [PATCH 26/63] =?UTF-8?q?=F0=9F=8E=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/components/MkMediaImage.vue | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue index 99ea606a11..f59d15d9a2 100644 --- a/packages/frontend/src/components/MkMediaImage.vue +++ b/packages/frontend/src/components/MkMediaImage.vue @@ -233,16 +233,18 @@ function showMenu(ev: MouseEvent) { .hide { display: block; position: absolute; - border-radius: 6px; - background-color: var(--MI_THEME-fg); - color: hsl(from var(--MI_THEME-accent) h s calc(l + 10)); + background-color: rgba(0, 0, 0, 0.3); + -webkit-backdrop-filter: var(--MI-blur, blur(15px)); + backdrop-filter: var(--MI-blur, blur(15px)); + border-radius: 0 0 0 9px; + color: #fff; font-size: 12px; opacity: .5; padding: 5px 8px; text-align: center; cursor: pointer; - top: 12px; - right: 12px; + top: 0; + right: 0; } .hiddenTextWrapper { @@ -272,17 +274,17 @@ html[data-color-scheme=light] .visible { .menu { display: block; position: absolute; - border-radius: 999px; background-color: rgba(0, 0, 0, 0.3); -webkit-backdrop-filter: var(--MI-blur, blur(15px)); backdrop-filter: var(--MI-blur, blur(15px)); + border-radius: 9px 0 0 0; color: #fff; font-size: 0.8em; width: 28px; height: 28px; text-align: center; - bottom: 10px; - right: 10px; + bottom: 0; + right: 0; } .imageContainer { From 63d287075588d98259f3fb1c4927695071e65e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat, 6 Dec 2025 19:32:13 +0900 Subject: [PATCH 27/63] fix(backend): fix tests (#16947) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(backend): shouldHideNoteByTimeのロジックの誤りを修正 * fix tests --- .../src/misc/should-hide-note-by-time.ts | 4 +- packages/backend/test/e2e/exports.ts | 31 ++++++++- .../unit/misc/should-hide-note-by-time.ts | 65 ++++++++++--------- 3 files changed, 67 insertions(+), 33 deletions(-) diff --git a/packages/backend/src/misc/should-hide-note-by-time.ts b/packages/backend/src/misc/should-hide-note-by-time.ts index 1430434094..ea1951e66c 100644 --- a/packages/backend/src/misc/should-hide-note-by-time.ts +++ b/packages/backend/src/misc/should-hide-note-by-time.ts @@ -20,10 +20,10 @@ export function shouldHideNoteByTime(hiddenBefore: number | null | undefined, cr // 負の値: 作成からの経過時間(秒)で判定 const elapsedSeconds = (Date.now() - createdAtTime) / 1000; const hideAfterSeconds = Math.abs(hiddenBefore); - return elapsedSeconds > hideAfterSeconds; + return elapsedSeconds >= hideAfterSeconds; } else { // 正の値: 絶対的なタイムスタンプ(秒)で判定 const createdAtSeconds = createdAtTime / 1000; - return createdAtSeconds < hiddenBefore; + return createdAtSeconds <= hiddenBefore; } } diff --git a/packages/backend/test/e2e/exports.ts b/packages/backend/test/e2e/exports.ts index 1a703b3d36..19433f3c88 100644 --- a/packages/backend/test/e2e/exports.ts +++ b/packages/backend/test/e2e/exports.ts @@ -168,7 +168,36 @@ describe('export-clips', () => { assert.strictEqual(exported[1].clipNotes[0].note.text, 'baz2'); }); - test('Clipping other user\'s note', async () => { + test('Clipping other user\'s note (followers only notes are excluded when not following)', async () => { + const res = await api('clips/create', { + name: 'kawaii', + description: 'kawaii', + }, alice); + assert.strictEqual(res.status, 200); + const clip = res.body; + + const note = await post(bob, { + text: 'baz', + visibility: 'followers', + }); + + const res2 = await api('clips/add-note', { + clipId: clip.id, + noteId: note.id, + }, alice); + assert.strictEqual(res2.status, 204); + + const res3 = await api('i/export-clips', {}, alice); + assert.strictEqual(res3.status, 204); + + const exported = await pollFirstDriveFile(); + assert.strictEqual(exported[0].clipNotes.length, 0); + }); + + test('Clipping other user\'s note (followers only notes are included when following)', async () => { + // Alice follows Bob + await api('following/create', { userId: bob.id }, alice); + const res = await api('clips/create', { name: 'kawaii', description: 'kawaii', diff --git a/packages/backend/test/unit/misc/should-hide-note-by-time.ts b/packages/backend/test/unit/misc/should-hide-note-by-time.ts index 29cbd751a3..1c463c82c6 100644 --- a/packages/backend/test/unit/misc/should-hide-note-by-time.ts +++ b/packages/backend/test/unit/misc/should-hide-note-by-time.ts @@ -3,30 +3,35 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { describe, expect, test, beforeEach, afterEach, jest } from '@jest/globals'; +import { describe, expect, test, beforeEach, afterEach } from '@jest/globals'; +import * as lolex from '@sinonjs/fake-timers'; import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js'; describe('misc:should-hide-note-by-time', () => { - let now: number; + let clock: lolex.InstalledClock; + const epoch = Date.UTC(2000, 0, 1, 0, 0, 0); beforeEach(() => { - now = Date.now(); - jest.useFakeTimers(); - jest.setSystemTime(now); + clock = lolex.install({ + // https://github.com/sinonjs/sinon/issues/2620 + toFake: Object.keys(lolex.timers).filter((key) => !['nextTick', 'queueMicrotask'].includes(key)) as lolex.FakeMethod[], + now: new Date(epoch), + shouldClearNativeTimers: true, + }); }); afterEach(() => { - jest.useRealTimers(); + clock.uninstall(); }); describe('hiddenBefore が null または undefined の場合', () => { test('hiddenBefore が null のときは false を返す(非表示機能が有効でない)', () => { - const createdAt = new Date(now - 86400000); // 1 day ago + const createdAt = new Date(epoch - 86400000); // 1 day ago expect(shouldHideNoteByTime(null, createdAt)).toBe(false); }); test('hiddenBefore が undefined のときは false を返す(非表示機能が有効でない)', () => { - const createdAt = new Date(now - 86400000); // 1 day ago + const createdAt = new Date(epoch - 86400000); // 1 day ago expect(shouldHideNoteByTime(undefined, createdAt)).toBe(false); }); }); @@ -34,70 +39,70 @@ describe('misc:should-hide-note-by-time', () => { describe('相対時間モード (hiddenBefore <= 0)', () => { test('閾値内に作成されたノートは false を返す(作成からの経過時間がまだ短い→表示)', () => { const hiddenBefore = -86400; // 1 day in seconds - const createdAt = new Date(now - 3600000); // 1 hour ago + const createdAt = new Date(epoch - 3600000); // 1 hour ago expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(false); }); test('閾値を超えて作成されたノートは true を返す(指定期間以上経過している→非表示)', () => { const hiddenBefore = -86400; // 1 day in seconds - const createdAt = new Date(now - 172800000); // 2 days ago + const createdAt = new Date(epoch - 172800000); // 2 days ago expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); }); test('ちょうど閾値で作成されたノートは true を返す(閾値に達したら非表示)', () => { const hiddenBefore = -86400; // 1 day in seconds - const createdAt = new Date(now - 86400000); // exactly 1 day ago + const createdAt = new Date(epoch - 86400000); // exactly 1 day ago expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); }); test('異なる相対時間値で判定できる(1時間設定と3時間設定の異なる結果)', () => { - const createdAt = new Date(now - 7200000); // 2 hours ago + const createdAt = new Date(epoch - 7200000); // 2 hours ago expect(shouldHideNoteByTime(-3600, createdAt)).toBe(true); // 1時間経過→非表示 expect(shouldHideNoteByTime(-10800, createdAt)).toBe(false); // 3時間未経過→表示 }); test('ISO 8601 形式の文字列の createdAt に対応できる(文字列でも正しく判定)', () => { - const createdAtString = new Date(now - 86400000).toISOString(); + const createdAtString = new Date(epoch - 86400000).toISOString(); const hiddenBefore = -86400; // 1 day in seconds expect(shouldHideNoteByTime(hiddenBefore, createdAtString)).toBe(true); }); test('hiddenBefore が 0 の場合に対応できる(0秒以上経過で非表示→ほぼ全て非表示)', () => { const hiddenBefore = 0; - const createdAt = new Date(now - 1); // 1ms ago + const createdAt = new Date(epoch - 1); // 1ms ago expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); }); }); describe('絶対時間モード (hiddenBefore > 0)', () => { test('閾値タイムスタンプより後に作成されたノートは false を返す(指定日時より後→表示)', () => { - const thresholdSeconds = Math.floor(now / 1000); - const createdAt = new Date(now + 3600000); // 1 hour from now + const thresholdSeconds = Math.floor(epoch / 1000); + const createdAt = new Date(epoch + 3600000); // 1 hour from epoch expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(false); }); test('閾値タイムスタンプより前に作成されたノートは true を返す(指定日時より前→非表示)', () => { - const thresholdSeconds = Math.floor(now / 1000); - const createdAt = new Date(now - 3600000); // 1 hour ago + const thresholdSeconds = Math.floor(epoch / 1000); + const createdAt = new Date(epoch - 3600000); // 1 hour ago expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true); }); test('ちょうど閾値タイムスタンプで作成されたノートは true を返す(指定日時に達したら非表示)', () => { - const thresholdSeconds = Math.floor(now / 1000); - const createdAt = new Date(now); // exactly now + const thresholdSeconds = Math.floor(epoch / 1000); + const createdAt = new Date(epoch); // exactly epoch expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true); }); test('ISO 8601 形式の文字列の createdAt に対応できる(文字列でも正しく判定)', () => { - const thresholdSeconds = Math.floor(now / 1000); - const createdAtString = new Date(now - 3600000).toISOString(); + const thresholdSeconds = Math.floor(epoch / 1000); + const createdAtString = new Date(epoch - 3600000).toISOString(); expect(shouldHideNoteByTime(thresholdSeconds, createdAtString)).toBe(true); }); test('異なる閾値タイムスタンプで判定できる(2021年設定と現在より1時間前設定の異なる結果)', () => { - const thresholdSeconds = Math.floor((now - 86400000) / 1000); // 1 day ago - const createdAtBefore = new Date(now - 172800000); // 2 days ago - const createdAtAfter = new Date(now - 3600000); // 1 hour ago + const thresholdSeconds = Math.floor((epoch - 86400000) / 1000); // 1 day ago + const createdAtBefore = new Date(epoch - 172800000); // 2 days ago + const createdAtAfter = new Date(epoch - 3600000); // 1 hour ago expect(shouldHideNoteByTime(thresholdSeconds, createdAtBefore)).toBe(true); // 閾値より前→非表示 expect(shouldHideNoteByTime(thresholdSeconds, createdAtAfter)).toBe(false); // 閾値より後→表示 }); @@ -106,25 +111,25 @@ describe('misc:should-hide-note-by-time', () => { describe('エッジケース', () => { test('相対時間モードで非常に古いノートに対応できる(非常に古い→閾値超→非表示)', () => { const hiddenBefore = -1; // hide notes older than 1 second - const createdAt = new Date(now - 1000000); // very old + const createdAt = new Date(epoch - 1000000); // very old expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); }); test('相対時間モードで非常に新しいノートに対応できる(非常に新しい→閾値未満→表示)', () => { const hiddenBefore = -86400; // 1 day - const createdAt = new Date(now - 1); // 1ms ago + const createdAt = new Date(epoch - 1); // 1ms ago expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(false); }); test('大きなタイムスタンプ値に対応できる(未来の日時を指定→現在のノートは全て非表示)', () => { - const thresholdSeconds = Math.floor(now / 1000) + 86400; // 1 day from now - const createdAt = new Date(now); // created now + const thresholdSeconds = Math.floor(epoch / 1000) + 86400; // 1 day from epoch + const createdAt = new Date(epoch); // created epoch expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true); }); test('小さな相対時間値に対応できる(1秒設定で2秒前→非表示)', () => { const hiddenBefore = -1; // 1 second - const createdAt = new Date(now - 2000); // 2 seconds ago + const createdAt = new Date(epoch - 2000); // 2 seconds ago expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true); }); }); From b67bfe076386a567f1460dbccaea5443a87684d9 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 6 Dec 2025 21:03:06 +0900 Subject: [PATCH 28/63] Update CHANGELOG.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3012d0649..383af2bf02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## 2025.12.0 +### Note +- configの`trustProxy`のデフォルト値を`false`に変更しました。アップデート前に現在のconfigをご確認の上、必要に応じて値を変更してください。 + ### Client - Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正 From 3273ca751284d39ff507fe72305fce763111eff9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 6 Dec 2025 12:22:55 +0000 Subject: [PATCH 29/63] Release: 2025.12.0 --- package.json | 2 +- packages/misskey-js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ae8de47188..40542046eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.12.0-beta.0", + "version": "2025.12.0", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 7d957172dc..1c0e6ceee6 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.12.0-beta.0", + "version": "2025.12.0", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From da3b3af984971555d407bfe5c3947f183a9087a7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 6 Dec 2025 12:23:00 +0000 Subject: [PATCH 30/63] [skip ci] Update CHANGELOG.md (prepend template) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 383af2bf02..1caffeceef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## Unreleased + +### General +- + +### Client +- + +### Server +- + + ## 2025.12.0 ### Note From 73cc30f50f653af0484f33fb1bfca68f2281968d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:17:13 +0900 Subject: [PATCH 31/63] =?UTF-8?q?fix(frontend):=20=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=89=E6=99=82=E3=81=AE=E8=A8=80=E8=AA=9E=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E7=B5=90=E6=9E=9C=E3=81=8C=E4=BF=9D=E5=AD=98=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=20(#16956)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(frontend): ロード時の言語判定結果が保存されない問題を修正 * Update Changelog --- CHANGELOG.md | 2 +- packages/frontend-embed/public/loader/boot.js | 2 ++ packages/frontend/public/loader/boot.js | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1caffeceef..8d2db60739 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 ### Server - diff --git a/packages/frontend-embed/public/loader/boot.js b/packages/frontend-embed/public/loader/boot.js index ba6366b3db..9b3d27873b 100644 --- a/packages/frontend-embed/public/loader/boot.js +++ b/packages/frontend-embed/public/loader/boot.js @@ -70,6 +70,8 @@ importAppScript(); }); } + + localStorage.setItem('lang', lang); //#endregion async function addStyle(styleText) { diff --git a/packages/frontend/public/loader/boot.js b/packages/frontend/public/loader/boot.js index ab4b158287..8aafb282aa 100644 --- a/packages/frontend/public/loader/boot.js +++ b/packages/frontend/public/loader/boot.js @@ -42,6 +42,8 @@ console.error('invalid lang value detected!!!', typeof lang, lang); lang = 'en-US'; } + + localStorage.setItem('lang', lang); //#endregion //#region Script From 3afe7c5348515fcfe2f17eee35180e9dd89881f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:20:07 +0900 Subject: [PATCH 32/63] Update CHANGELOG.md [ci skip] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d2db60739..95b9aa6c58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 +- Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 ### Server - From 988f5ab69fe2f31952269fed158f4aa285e46475 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:44:37 +0900 Subject: [PATCH 33/63] =?UTF-8?q?fix(backend):=20=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=96=E3=82=AD=E3=83=A5=E3=83=BC=E3=81=A7Sentry=E3=81=8C?= =?UTF-8?q?=E6=9C=89=E5=8A=B9=E3=81=AB=E3=81=AA=E3=82=89=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- packages/backend/src/queue/QueueProcessorService.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95b9aa6c58..cf2e910d41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ - Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 ### Server -- +- Fix: ジョブキューでSentryが有効にならない問題を修正 ## 2025.12.0 diff --git a/packages/backend/src/queue/QueueProcessorService.ts b/packages/backend/src/queue/QueueProcessorService.ts index 306fdb41f6..2b3b3fc0ad 100644 --- a/packages/backend/src/queue/QueueProcessorService.ts +++ b/packages/backend/src/queue/QueueProcessorService.ts @@ -157,7 +157,7 @@ export class QueueProcessorService implements OnApplicationShutdown { } let Sentry: typeof import('@sentry/node') | undefined; - if (Sentry != null) { + if (this.config.sentryForBackend) { import('@sentry/node').then((mod) => { Sentry = mod; }); From 2cffd9f0fbceac21817918abf50dbb2b17df0f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=BE=E3=81=A3=E3=81=A1=E3=82=83=E3=81=A6=E3=81=83?= =?UTF-8?q?=E3=83=BC=E3=80=82?= <56515516+mattyatea@users.noreply.github.com> Date: Wed, 10 Dec 2025 17:26:30 +0900 Subject: [PATCH 34/63] =?UTF-8?q?fix(sw):=20=E3=82=AA=E3=83=95=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E6=99=82=E3=81=AEfetch=20timeout=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=82=92=E5=AE=9F=E8=A3=85=20=20(#16952)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(sw): implement fetch timeout handling for navigation and offline content * fix(sw): increase fetch timeout * fix(sw): improve fetch timeout handling for i18n content * fix(sw): 結局、fetchを通るかCacheがhitするはずなので、i18nのところはいらない * fix(sw): 400番台のエラーを無条件でオフラインページにしていたのを修正 * 間違えた * i18nもtimeoutが必要 * import sortingを修正 * import sortingを修正 * Fix: Frontend のsharedにはアクセスできないじゃん... * SPDX * Update CHANGELOG.md * Update packages/sw/src/scripts/lang.ts Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> * Update packages/sw/src/sw.ts Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> * Update CHANGELOG.md Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> --- CHANGELOG.md | 1 + packages/sw/src/const.ts | 6 +++ packages/sw/src/scripts/lang.ts | 19 +++++++-- packages/sw/src/sw.ts | 71 ++++++++++++++++++++++----------- 4 files changed, 70 insertions(+), 27 deletions(-) create mode 100644 packages/sw/src/const.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index cf2e910d41..7c33deaa2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - ### Client +- Fix: 特定の条件下でMisskeyが起動せず空白のページが表示されることがある問題を軽減 - Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 ### Server diff --git a/packages/sw/src/const.ts b/packages/sw/src/const.ts new file mode 100644 index 0000000000..9dd9bad30f --- /dev/null +++ b/packages/sw/src/const.ts @@ -0,0 +1,6 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +export const FETCH_TIMEOUT_MS = 10000; diff --git a/packages/sw/src/scripts/lang.ts b/packages/sw/src/scripts/lang.ts index 40b6aa4e7b..63ac4ce399 100644 --- a/packages/sw/src/scripts/lang.ts +++ b/packages/sw/src/scripts/lang.ts @@ -8,6 +8,7 @@ */ import { get, set } from 'idb-keyval'; import { I18n } from '@@/js/i18n.js'; +import { FETCH_TIMEOUT_MS } from '@/const.js'; import type { Locale } from 'i18n'; class SwLang { @@ -37,11 +38,21 @@ class SwLang { // _DEV_がtrueの場合は常に最新化 if (!localeRes || _DEV_) { - localeRes = await fetch(localeUrl); - const clone = localeRes.clone(); - if (!clone.clone().ok) throw new Error('locale fetching error'); + const controller = new AbortController(); + const timeout = globalThis.setTimeout(() => { + controller.abort('locale-fetch-timeout'); + }, FETCH_TIMEOUT_MS); - caches.open(this.cacheName).then(cache => cache.put(localeUrl, clone)); + try { + localeRes = await fetch(localeUrl, { signal: controller.signal }); + + const clone = localeRes.clone(); + if (!clone.clone().ok) throw new Error('locale fetching error'); + + caches.open(this.cacheName).then(cache => cache.put(localeUrl, clone)); + } finally { + globalThis.clearTimeout(timeout); + } } return new I18n(await localeRes.json()); diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts index 5cece73401..21017f8241 100644 --- a/packages/sw/src/sw.ts +++ b/packages/sw/src/sw.ts @@ -5,6 +5,7 @@ import { get } from 'idb-keyval'; import * as Misskey from 'misskey-js'; +import { FETCH_TIMEOUT_MS } from '@/const.js'; import type { PushNotificationDataMap } from '@/types.js'; import type { I18n } from '@@/js/i18n.js'; import type { Locale } from 'i18n'; @@ -12,6 +13,52 @@ import { createEmptyNotification, createNotification } from '@/scripts/create-no import { swLang } from '@/scripts/lang.js'; import * as swos from '@/scripts/operations.js'; +async function respondToNavigation(request: Request): Promise { + const controller = new AbortController(); + const timeout = globalThis.setTimeout(() => { + controller.abort('navigation-timeout'); + }, FETCH_TIMEOUT_MS); + + try { + const response = await fetch(request, { signal: controller.signal }); + + if (response?.status && response.status < 500) return response; + if (response?.type === 'opaqueredirect') return response; + } catch (error) { + if (_DEV_) { + console.warn('navigation fetch failed; showing offline page', error); + } + } finally { + globalThis.clearTimeout(timeout); + } + + // Only show offline page when network request actually fails + const html = await offlineContentHTML(); + return new Response(html, { + status: 200, + headers: { + 'content-type': 'text/html', + }, + }); +} + +async function offlineContentHTML() { + let i18n: Partial>; + try { + i18n = await (swLang.i18n ?? await swLang.fetchLocale()) as Partial>; + } catch { + i18n = {}; + } + + const messages = { + title: i18n.ts?._offlineScreen.title ?? 'Offline - Could not connect to server', + header: i18n.ts?._offlineScreen.header ?? 'Could not connect to server', + reload: i18n.ts?.reload ?? 'Reload', + }; + + return `${messages.title}
${messages.header}
v${_VERSION_}
`; +} + globalThis.addEventListener('install', () => { // ev.waitUntil(globalThis.skipWaiting()); }); @@ -28,17 +75,6 @@ globalThis.addEventListener('activate', ev => { ); }); -async function offlineContentHTML() { - const i18n = await (swLang.i18n ?? swLang.fetchLocale()) as Partial>; - const messages = { - title: i18n.ts?._offlineScreen.title ?? 'Offline - Could not connect to server', - header: i18n.ts?._offlineScreen.header ?? 'Could not connect to server', - reload: i18n.ts?.reload ?? 'Reload', - }; - - return `${messages.title}
${messages.header}
v${_VERSION_}
`; -} - globalThis.addEventListener('fetch', ev => { let isHTMLRequest = false; if (ev.request.headers.get('sec-fetch-dest') === 'document') { @@ -50,18 +86,7 @@ globalThis.addEventListener('fetch', ev => { } if (!isHTMLRequest) return; - ev.respondWith( - fetch(ev.request) - .catch(async () => { - const html = await offlineContentHTML(); - return new Response(html, { - status: 200, - headers: { - 'content-type': 'text/html', - }, - }); - }), - ); + ev.respondWith(respondToNavigation(ev.request)); }); globalThis.addEventListener('push', ev => { From 8e6fffee68cfa36f66c0e10f84f159d1ade72e70 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 11 Dec 2025 23:08:26 +0900 Subject: [PATCH 35/63] enhance: use native glob (#16965) * enhance: use native glob * remove tiny-glob * remove fast-glob * refactor * fix: use async glob if possible --------- Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> --- package.json | 2 - packages/frontend-embed/package.json | 1 - packages/frontend-shared/build.js | 3 +- packages/frontend/.storybook/generate.tsx | 66 +++++++++---------- .../lib/vite-plugin-create-search-index.ts | 3 +- packages/frontend/package.json | 1 - packages/i18n/build.ts | 3 +- packages/i18n/package.json | 1 - packages/icons-subsetter/package.json | 1 - packages/icons-subsetter/src/generator.ts | 9 ++- packages/misskey-bubble-game/build.js | 3 +- packages/misskey-bubble-game/package.json | 1 - packages/misskey-js/build.js | 3 +- packages/misskey-js/package.json | 1 - packages/misskey-reversi/build.js | 3 +- packages/misskey-reversi/package.json | 1 - pnpm-lock.yaml | 55 ---------------- scripts/tarball.mjs | 5 +- 18 files changed, 44 insertions(+), 118 deletions(-) diff --git a/package.json b/package.json index 40542046eb..d7067f705e 100644 --- a/package.json +++ b/package.json @@ -60,8 +60,6 @@ "cssnano": "7.1.2", "esbuild": "0.27.0", "execa": "9.6.0", - "fast-glob": "3.3.3", - "glob": "13.0.0", "ignore-walk": "8.0.0", "js-yaml": "4.1.1", "postcss": "8.5.6", diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index 6122f2cab6..cdf13120c0 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -56,7 +56,6 @@ "cross-env": "10.1.0", "eslint-plugin-import": "2.32.0", "eslint-plugin-vue": "10.6.2", - "fast-glob": "3.3.3", "happy-dom": "20.0.11", "intersection-observer": "0.12.2", "micromatch": "4.0.8", diff --git a/packages/frontend-shared/build.js b/packages/frontend-shared/build.js index 9941114757..07e98ad182 100644 --- a/packages/frontend-shared/build.js +++ b/packages/frontend-shared/build.js @@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; -import { globSync } from 'glob'; import { execa } from 'execa'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); -const entryPoints = globSync('./js/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./js/**/**.{ts,tsx}'); /** @type {import('esbuild').BuildOptions} */ const options = { diff --git a/packages/frontend/.storybook/generate.tsx b/packages/frontend/.storybook/generate.tsx index 89d4214141..6005049dde 100644 --- a/packages/frontend/.storybook/generate.tsx +++ b/packages/frontend/.storybook/generate.tsx @@ -3,12 +3,11 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { existsSync, readFileSync } from 'node:fs'; +import { existsSync, readFileSync, globSync } from 'node:fs'; import { writeFile } from 'node:fs/promises'; import { basename, dirname } from 'node:path/posix'; import { GENERATOR, type State, generate } from 'astring'; import type * as estree from 'estree'; -import glob from 'fast-glob'; import { format } from 'prettier'; interface SatisfiesExpression extends estree.BaseExpression { @@ -439,38 +438,37 @@ function toStories(component: string): Promise { // glob('src/{components,pages,ui,widgets}/**/*.vue') (async () => { - const globs = await Promise.all([ - glob('src/components/global/Mk*.vue'), - glob('src/components/global/RouterView.vue'), - glob('src/components/MkAbuseReportWindow.vue'), - glob('src/components/MkAccountMoved.vue'), - glob('src/components/MkAchievements.vue'), - glob('src/components/MkAnalogClock.vue'), - glob('src/components/MkAnimBg.vue'), - glob('src/components/MkAnnouncementDialog.vue'), - glob('src/components/MkAntennaEditor.vue'), - glob('src/components/MkAntennaEditorDialog.vue'), - glob('src/components/MkAsUi.vue'), - glob('src/components/MkAutocomplete.vue'), - glob('src/components/MkAvatars.vue'), - glob('src/components/Mk[B-E]*.vue'), - glob('src/components/MkFlashPreview.vue'), - glob('src/components/MkGalleryPostPreview.vue'), - glob('src/components/MkSignupServerRules.vue'), - glob('src/components/MkUserSetupDialog.vue'), - glob('src/components/MkUserSetupDialog.*.vue'), - glob('src/components/MkImgPreviewDialog.vue'), - glob('src/components/MkInstanceCardMini.vue'), - glob('src/components/MkInviteCode.vue'), - glob('src/components/MkTagItem.vue'), - glob('src/components/MkRoleSelectDialog.vue'), - glob('src/components/grid/MkGrid.vue'), - glob('src/pages/admin/custom-emojis-manager2.vue'), - glob('src/pages/admin/overview.ap-requests.vue'), - glob('src/pages/user/home.vue'), - glob('src/pages/search.vue'), - ]); - const components = globs.flat(); + const components = [ + globSync('src/components/global/Mk*.vue'), + globSync('src/components/global/RouterView.vue'), + globSync('src/components/MkAbuseReportWindow.vue'), + globSync('src/components/MkAccountMoved.vue'), + globSync('src/components/MkAchievements.vue'), + globSync('src/components/MkAnalogClock.vue'), + globSync('src/components/MkAnimBg.vue'), + globSync('src/components/MkAnnouncementDialog.vue'), + globSync('src/components/MkAntennaEditor.vue'), + globSync('src/components/MkAntennaEditorDialog.vue'), + globSync('src/components/MkAsUi.vue'), + globSync('src/components/MkAutocomplete.vue'), + globSync('src/components/MkAvatars.vue'), + globSync('src/components/Mk[B-E]*.vue'), + globSync('src/components/MkFlashPreview.vue'), + globSync('src/components/MkGalleryPostPreview.vue'), + globSync('src/components/MkSignupServerRules.vue'), + globSync('src/components/MkUserSetupDialog.vue'), + globSync('src/components/MkUserSetupDialog.*.vue'), + globSync('src/components/MkImgPreviewDialog.vue'), + globSync('src/components/MkInstanceCardMini.vue'), + globSync('src/components/MkInviteCode.vue'), + globSync('src/components/MkTagItem.vue'), + globSync('src/components/MkRoleSelectDialog.vue'), + globSync('src/components/grid/MkGrid.vue'), + globSync('src/pages/admin/custom-emojis-manager2.vue'), + globSync('src/pages/admin/overview.ap-requests.vue'), + globSync('src/pages/user/home.vue'), + globSync('src/pages/search.vue'), + ].flat(); await Promise.all(components.map(async (component) => { const stories = component.replace(/\.vue$/, '.stories.ts'); await writeFile(stories, await toStories(component)); diff --git a/packages/frontend/lib/vite-plugin-create-search-index.ts b/packages/frontend/lib/vite-plugin-create-search-index.ts index f17b43b0e3..cfbba0823c 100644 --- a/packages/frontend/lib/vite-plugin-create-search-index.ts +++ b/packages/frontend/lib/vite-plugin-create-search-index.ts @@ -16,7 +16,6 @@ import { type PluginOption } from 'vite'; import fs from 'node:fs'; -import { glob } from 'glob'; import JSON5 from 'json5'; import MagicString, { SourceMap } from 'magic-string'; import path from 'node:path' @@ -724,7 +723,7 @@ export function pluginCreateSearchIndexVirtualModule(options: Options, asigner: async load(id) { if (id == '\0' + allSearchIndexFile) { - const files = await Promise.all(options.targetFilePaths.map(async (filePathPattern) => await glob(filePathPattern))).then(paths => paths.flat()); + const files = options.targetFilePaths.map((filePathPattern) => fs.globSync(filePathPattern)).flat(); let generatedFile = ''; let arrayElements = ''; for (let file of files) { diff --git a/packages/frontend/package.json b/packages/frontend/package.json index c9d49201c4..785dbbcfab 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -128,7 +128,6 @@ "cypress": "15.7.0", "eslint-plugin-import": "2.32.0", "eslint-plugin-vue": "10.6.2", - "fast-glob": "3.3.3", "happy-dom": "20.0.11", "intersection-observer": "0.12.2", "micromatch": "4.0.8", diff --git a/packages/i18n/build.ts b/packages/i18n/build.ts index a6bbf7dc63..21bf2996b4 100644 --- a/packages/i18n/build.ts +++ b/packages/i18n/build.ts @@ -10,7 +10,6 @@ import { watch as chokidarWatch } from 'chokidar'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; import { execa } from 'execa'; -import { globSync } from 'glob'; import { generateLocaleInterface } from './scripts/generateLocaleInterface.js'; import type { BuildOptions, BuildResult, Plugin, PluginBuild } from 'esbuild'; @@ -22,7 +21,7 @@ const _rootPackage = JSON.parse(fs.readFileSync(resolve(_rootPackageDir, 'packag const _frontendLocalesDir = resolve(_dirname, '../../built/_frontend_dist_/locales'); const _localesDir = resolve(_rootPackageDir, 'locales'); -const entryPoints = globSync('./src/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./src/**/**.{ts,tsx}'); const options: BuildOptions = { entryPoints, diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 6ba41632e8..0354c26d15 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -35,7 +35,6 @@ "chokidar": "4.0.3", "esbuild": "0.27.0", "execa": "9.6.0", - "glob": "11.1.0", "nodemon": "3.1.11", "tsx": "4.20.6", "typescript": "5.9.3" diff --git a/packages/icons-subsetter/package.json b/packages/icons-subsetter/package.json index 2c6eac150b..597520ff36 100644 --- a/packages/icons-subsetter/package.json +++ b/packages/icons-subsetter/package.json @@ -19,7 +19,6 @@ "dependencies": { "@tabler/icons-webfont": "3.35.0", "harfbuzzjs": "0.4.13", - "tiny-glob": "0.2.9", "tsx": "4.20.6", "typescript": "5.9.3", "wawoff2": "2.0.1" diff --git a/packages/icons-subsetter/src/generator.ts b/packages/icons-subsetter/src/generator.ts index 1a9e3d8fd2..811972baae 100644 --- a/packages/icons-subsetter/src/generator.ts +++ b/packages/icons-subsetter/src/generator.ts @@ -3,9 +3,8 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { promises as fsp, existsSync } from 'fs'; -import path from 'path'; -import glob from 'tiny-glob'; +import { promises as fsp, existsSync } from 'node:fs'; +import path from 'node:path'; import { generateSubsettedFont } from './subsetter.js'; const filesToScan = { @@ -47,8 +46,8 @@ async function main() { const iconsToPack = new Set(); const cwd = path.resolve(process.cwd(), '../../'); - const files = await glob(dir, { cwd }); - for (const file of files) { + const files = fsp.glob(dir, { cwd }); + for await (const file of files) { //console.log(`Scanning ${file}`); const content = await fsp.readFile(path.resolve(cwd, file), 'utf-8'); const classRegex = /ti-[a-z0-9-]+/g; diff --git a/packages/misskey-bubble-game/build.js b/packages/misskey-bubble-game/build.js index 5d534cc6fd..1a6f87a8e8 100644 --- a/packages/misskey-bubble-game/build.js +++ b/packages/misskey-bubble-game/build.js @@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; -import { globSync } from 'glob'; import { execa } from 'execa'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); -const entryPoints = globSync('./src/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./src/**/**.{ts,tsx}'); /** @type {import('esbuild').BuildOptions} */ const options = { diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json index 8dd68aec44..978d77e0e4 100644 --- a/packages/misskey-bubble-game/package.json +++ b/packages/misskey-bubble-game/package.json @@ -31,7 +31,6 @@ "@typescript-eslint/parser": "8.48.0", "esbuild": "0.27.0", "execa": "9.6.0", - "glob": "11.1.0", "nodemon": "3.1.11", "typescript": "5.9.3" }, diff --git a/packages/misskey-js/build.js b/packages/misskey-js/build.js index b794592815..68535556d3 100644 --- a/packages/misskey-js/build.js +++ b/packages/misskey-js/build.js @@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; -import { globSync } from 'glob'; import { execa } from 'execa'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); -const entryPoints = globSync('./src/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./src/**/**.{ts,tsx}'); /** @type {import('esbuild').BuildOptions} */ const options = { diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index 1c0e6ceee6..c549eaf0e4 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -44,7 +44,6 @@ "@vitest/coverage-v8": "4.0.13", "esbuild": "0.27.0", "execa": "9.6.0", - "glob": "13.0.0", "ncp": "2.0.0", "nodemon": "3.1.11", "tsd": "0.33.0", diff --git a/packages/misskey-reversi/build.js b/packages/misskey-reversi/build.js index 5d534cc6fd..1a6f87a8e8 100644 --- a/packages/misskey-reversi/build.js +++ b/packages/misskey-reversi/build.js @@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as esbuild from 'esbuild'; import { build } from 'esbuild'; -import { globSync } from 'glob'; import { execa } from 'execa'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); -const entryPoints = globSync('./src/**/**.{ts,tsx}'); +const entryPoints = fs.globSync('./src/**/**.{ts,tsx}'); /** @type {import('esbuild').BuildOptions} */ const options = { diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json index 30eace87fe..85c829204e 100644 --- a/packages/misskey-reversi/package.json +++ b/packages/misskey-reversi/package.json @@ -29,7 +29,6 @@ "@typescript-eslint/parser": "8.48.0", "esbuild": "0.27.0", "execa": "9.6.0", - "glob": "11.1.0", "nodemon": "3.1.11", "typescript": "5.9.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9fa1c4a01..56a73fb5fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,12 +22,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - fast-glob: - specifier: 3.3.3 - version: 3.3.3 - glob: - specifier: 13.0.0 - version: 13.0.0 ignore-walk: specifier: 8.0.0 version: 8.0.0 @@ -1011,9 +1005,6 @@ importers: eslint-plugin-vue: specifier: 10.6.2 version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) - fast-glob: - specifier: 3.3.3 - version: 3.3.3 happy-dom: specifier: 20.0.11 version: 20.0.11 @@ -1250,9 +1241,6 @@ importers: eslint-plugin-vue: specifier: 10.6.2 version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) - fast-glob: - specifier: 3.3.3 - version: 3.3.3 happy-dom: specifier: 20.0.11 version: 20.0.11 @@ -1354,9 +1342,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - glob: - specifier: 11.1.0 - version: 11.1.0 nodemon: specifier: 3.1.11 version: 3.1.11 @@ -1375,9 +1360,6 @@ importers: harfbuzzjs: specifier: 0.4.13 version: 0.4.13 - tiny-glob: - specifier: 0.2.9 - version: 0.2.9 tsx: specifier: 4.20.6 version: 4.20.6 @@ -1434,9 +1416,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - glob: - specifier: 11.1.0 - version: 11.1.0 nodemon: specifier: 3.1.11 version: 3.1.11 @@ -1477,9 +1456,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - glob: - specifier: 13.0.0 - version: 13.0.0 ncp: specifier: 2.0.0 version: 2.0.0 @@ -1553,9 +1529,6 @@ importers: execa: specifier: 9.6.0 version: 9.6.0 - glob: - specifier: 11.1.0 - version: 11.1.0 nodemon: specifier: 3.1.11 version: 3.1.11 @@ -7283,10 +7256,6 @@ packages: engines: {node: 20 || >=22} hasBin: true - glob@13.0.0: - resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} - engines: {node: 20 || >=22} - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -7307,16 +7276,10 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - google-protobuf@3.21.4: resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} @@ -10509,9 +10472,6 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -18789,12 +18749,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.1 - glob@13.0.0: - dependencies: - minimatch: 10.1.1 - minipass: 7.1.2 - path-scurry: 2.0.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -18817,8 +18771,6 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globalyzer@0.1.0: {} - globby@11.1.0: dependencies: array-union: 2.1.0 @@ -18828,8 +18780,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globrex@0.1.2: {} - google-protobuf@3.21.4: optional: true @@ -22588,11 +22538,6 @@ snapshots: through@2.3.8: {} - tiny-glob@0.2.9: - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - tiny-invariant@1.3.3: {} tinybench@2.9.0: {} diff --git a/scripts/tarball.mjs b/scripts/tarball.mjs index fddbe3b04a..d1fe4de4f5 100644 --- a/scripts/tarball.mjs +++ b/scripts/tarball.mjs @@ -3,11 +3,10 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { createWriteStream } from 'node:fs'; +import { createWriteStream, promises as fsp } from 'node:fs'; import { mkdir } from 'node:fs/promises'; import { resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; -import glob from 'fast-glob'; import walk from 'ignore-walk'; import { Pack } from 'tar/pack'; import meta from '../package.json' with { type: "json" }; @@ -25,7 +24,7 @@ export default async function build() { const pack = new Pack({ cwd, gzip: true }); const patterns = await walk({ path: cwd, ignoreFiles: ['.gitignore'] }); - for await (const entry of glob.stream(patterns, { cwd, ignore, dot: true })) { + for await (const entry of fsp.glob(patterns, { cwd, ignore, dot: true })) { pack.add(entry); } From 1096ce8e4afc3eb6c4a59e170029f4c33120ec34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 11 Dec 2025 23:10:23 +0900 Subject: [PATCH 36/63] =?UTF-8?q?fix(frontend):=20=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=9F=E3=83=8E=E3=83=BC=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=83=AA=E3=83=8E=E3=83=BC=E3=83=88=E3=81=8C=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=8F=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3=20(#16970)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(frontend): 削除されたノートのリノートが正しく表示されない問題を修正 * Update Changelog * :art: * fix --- CHANGELOG.md | 1 + packages/frontend/src/components/MkNote.vue | 15 ++++++++++++++- .../frontend/src/components/MkNoteDetailed.vue | 15 ++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c33deaa2e..ea3b9651ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Client - Fix: 特定の条件下でMisskeyが起動せず空白のページが表示されることがある問題を軽減 - Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 +- Fix: 削除されたノートのリノートが正しく動作されない問題を修正 ### Server - Fix: ジョブキューでSentryが有効にならない問題を修正 diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 1b0f25a1a2..e09c5220ad 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -38,7 +38,10 @@ SPDX-License-Identifier: AGPL-3.0-only -
+
+ {{ i18n.ts.deletedNote }} +
+
@@ -1144,4 +1147,14 @@ function emitUpdReaction(emoji: string, delta: number) { opacity: .8; font-size: 95%; } + +.deleted { + text-align: center; + padding: 32px; + margin: 6px 32px 28px; + --color: light-dark(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.15)); + background-size: auto auto; + background-image: repeating-linear-gradient(135deg, transparent, transparent 10px, var(--color) 4px, var(--color) 14px); + border-radius: 8px; +} diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index 48fd9908bd..bc30360821 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -43,7 +43,10 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
+ {{ i18n.ts.deletedNote }} +
+
@@ -944,4 +947,14 @@ function loadConversation() { text-align: center; opacity: 0.7; } + +.deleted { + text-align: center; + padding: 32px; + margin: 6px 32px 32px; + --color: light-dark(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.15)); + background-size: auto auto; + background-image: repeating-linear-gradient(135deg, transparent, transparent 10px, var(--color) 4px, var(--color) 14px); + border-radius: 8px; +} From d605680524bdee6a5e12f0a7810f691dba95f626 Mon Sep 17 00:00:00 2001 From: FINEARCHS <133759614+FineArchs@users.noreply.github.com> Date: Thu, 11 Dec 2025 23:15:57 +0900 Subject: [PATCH 37/63] =?UTF-8?q?fix(frontend):=20=E3=82=AA=E3=83=BC?= =?UTF-8?q?=E3=83=8A=E3=83=BC=E4=B8=8D=E5=9C=A8=E3=81=AE=E3=83=81=E3=83=A3?= =?UTF-8?q?=E3=83=B3=E3=83=8D=E3=83=AB=E3=82=92=E3=83=9F=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E3=81=AE=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#16906)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * オーナー不在のチャンネルをミュートできないのを修正 * update changelog --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --- CHANGELOG.md | 1 + packages/frontend/src/pages/channel.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea3b9651ce..8f223f6ac1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Fix: 特定の条件下でMisskeyが起動せず空白のページが表示されることがある問題を軽減 - Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正 - Fix: 削除されたノートのリノートが正しく動作されない問題を修正 +- Fix: チャンネルオーナーが削除済みの時にチャンネルのヘッダーメニューが表示されない不具合を修正 ### Server - Fix: ジョブキューでSentryが有効にならない問題を修正 diff --git a/packages/frontend/src/pages/channel.vue b/packages/frontend/src/pages/channel.vue index aed64ff3cb..0879aa72be 100644 --- a/packages/frontend/src/pages/channel.vue +++ b/packages/frontend/src/pages/channel.vue @@ -257,7 +257,7 @@ async function search() { } const headerActions = computed(() => { - if (channel.value && channel.value.userId) { + if (channel.value) { const headerItems: PageHeaderItem[] = []; headerItems.push({ From d74aded35fc8bf1c59dc2450076eb8cfbdf900eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:45:45 +0900 Subject: [PATCH 38/63] fix: remove unused dependencies (#16969) * fix(frontend): remove unused dependencies * fix(backend): remove unused dependencies --- packages/backend/package.json | 9 +- packages/frontend-embed/package.json | 6 +- packages/frontend/package.json | 14 +- packages/frontend/src/components/index.ts | 2 +- pnpm-lock.yaml | 151 ++++------------------ 5 files changed, 30 insertions(+), 152 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 40aa2f82a2..f49acff701 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -75,7 +75,6 @@ "@aws-sdk/lib-storage": "3.940.0", "@discordapp/twemoji": "16.0.1", "@fastify/accepts": "5.0.3", - "@fastify/cookie": "11.0.2", "@fastify/cors": "11.1.0", "@fastify/express": "4.0.2", "@fastify/http-proxy": "11.3.0", @@ -107,7 +106,6 @@ "body-parser": "2.2.1", "bullmq": "5.65.0", "cacheable-lookup": "7.0.0", - "cbor": "10.0.11", "chalk": "5.6.2", "chalk-template": "1.1.2", "chokidar": "4.0.3", @@ -131,7 +129,6 @@ "is-svg": "6.1.0", "json5": "2.2.3", "jsonld": "9.0.0", - "jsrsasign": "11.1.0", "juice": "11.0.3", "meilisearch": "0.54.0", "mfm-js": "0.25.0", @@ -145,7 +142,6 @@ "node-html-parser": "7.0.1", "nodemailer": "7.0.11", "nsfwjs": "4.2.0", - "oauth": "0.10.2", "oauth2orize": "1.12.0", "oauth2orize-pkce": "0.1.2", "os-utils": "0.0.14", @@ -174,7 +170,6 @@ "tinycolor2": "1.6.0", "tmp": "0.2.5", "tsc-alias": "1.8.16", - "tsconfig-paths": "4.2.0", "typeorm": "0.3.27", "typescript": "5.9.3", "ulid": "3.0.1", @@ -199,12 +194,10 @@ "@types/http-link-header": "1.0.7", "@types/jest": "29.5.14", "@types/jsonld": "1.5.15", - "@types/jsrsasign": "10.5.15", "@types/mime-types": "3.0.1", "@types/ms": "2.1.0", "@types/node": "24.10.1", "@types/nodemailer": "7.0.4", - "@types/oauth": "0.9.6", "@types/oauth2orize": "1.11.5", "@types/oauth2orize-pkce": "0.1.2", "@types/pg": "8.15.6", @@ -225,13 +218,13 @@ "@typescript-eslint/eslint-plugin": "8.48.0", "@typescript-eslint/parser": "8.48.0", "aws-sdk-client-mock": "4.1.0", + "cbor": "10.0.11", "cross-env": "10.1.0", "eslint-plugin-import": "2.32.0", "execa": "9.6.0", "fkill": "10.0.1", "jest": "29.7.0", "jest-mock": "29.7.0", - "jest-util": "29.7.0", "js-yaml": "4.1.1", "nodemon": "3.1.11", "pid-port": "2.0.0", diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index cdf13120c0..e82cdc1f27 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -17,8 +17,6 @@ "@rollup/pluginutils": "5.3.0", "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "6.0.2", - "@vue/compiler-sfc": "3.5.25", - "astring": "1.9.0", "buraha": "0.0.1", "estree-walker": "3.0.3", "frontend-shared": "workspace:*", @@ -31,9 +29,6 @@ "sass": "1.94.2", "shiki": "3.17.0", "tinycolor2": "1.6.0", - "tsc-alias": "1.8.16", - "tsconfig-paths": "4.2.0", - "typescript": "5.9.3", "uuid": "13.0.0", "vite": "7.2.4", "vue": "3.5.25" @@ -64,6 +59,7 @@ "prettier": "3.7.1", "start-server-and-test": "2.1.3", "tsx": "4.20.6", + "typescript": "5.9.3", "vite-plugin-turbosnap": "1.0.3", "vue-component-type-helpers": "3.1.5", "vue-eslint-parser": "10.2.0", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 785dbbcfab..68dc5bd656 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -30,10 +30,8 @@ "@syuilo/aiscript-0-19-0": "npm:@syuilo/aiscript@^0.19.0", "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "6.0.2", - "@vue/compiler-sfc": "3.5.25", "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15", "analytics": "0.8.19", - "astring": "1.9.0", "broadcast-channel": "7.2.0", "buraha": "0.0.1", "canvas-confetti": "1.9.4", @@ -46,7 +44,6 @@ "compare-versions": "6.1.1", "cropperjs": "2.1.0", "date-fns": "4.1.0", - "estree-walker": "3.0.3", "eventemitter3": "5.0.1", "execa": "9.6.0", "exifreader": "4.32.0", @@ -57,7 +54,6 @@ "ios-haptics": "0.1.4", "is-file-animated": "1.0.2", "json5": "2.2.3", - "magic-string": "0.30.21", "matter-js": "0.20.0", "mediabunny": "1.25.3", "mfm-js": "0.25.0", @@ -72,14 +68,10 @@ "sanitize-html": "2.17.0", "sass": "1.94.2", "shiki": "3.17.0", - "strict-event-emitter-types": "2.0.0", "textarea-caret": "3.1.0", "three": "0.181.2", "throttle-debounce": "5.0.2", "tinycolor2": "1.6.0", - "tsc-alias": "1.8.16", - "tsconfig-paths": "4.2.0", - "typescript": "5.9.3", "v-code-diff": "1.13.1", "vite": "7.2.4", "vue": "3.5.25", @@ -117,19 +109,20 @@ "@types/seedrandom": "3.0.8", "@types/throttle-debounce": "5.0.2", "@types/tinycolor2": "1.4.6", - "@types/ws": "8.18.1", "@typescript-eslint/eslint-plugin": "8.48.0", "@typescript-eslint/parser": "8.48.0", "@vitest/coverage-v8": "4.0.14", "@vue/compiler-core": "3.5.25", - "@vue/runtime-core": "3.5.25", "acorn": "8.15.0", + "astring": "1.9.0", "cross-env": "10.1.0", "cypress": "15.7.0", "eslint-plugin-import": "2.32.0", "eslint-plugin-vue": "10.6.2", + "estree-walker": "3.0.3", "happy-dom": "20.0.11", "intersection-observer": "0.12.2", + "magic-string": "0.30.21", "micromatch": "4.0.8", "minimatch": "10.1.1", "msw": "2.12.3", @@ -143,6 +136,7 @@ "storybook": "10.1.0", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "tsx": "4.20.6", + "typescript": "5.9.3", "vite-plugin-glsl": "1.5.4", "vite-plugin-turbosnap": "1.0.3", "vitest": "4.0.14", diff --git a/packages/frontend/src/components/index.ts b/packages/frontend/src/components/index.ts index eadf88ebd9..32c9d4bc62 100644 --- a/packages/frontend/src/components/index.ts +++ b/packages/frontend/src/components/index.ts @@ -77,7 +77,7 @@ export const components = { SearchIcon: SearchIcon, }; -declare module '@vue/runtime-core' { +declare module 'vue' { export interface GlobalComponents { I18n: typeof I18n; RouterView: typeof RouterView; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56a73fb5fa..f85427d764 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,9 +99,6 @@ importers: '@fastify/accepts': specifier: 5.0.3 version: 5.0.3 - '@fastify/cookie': - specifier: 11.0.2 - version: 11.0.2 '@fastify/cors': specifier: 11.1.0 version: 11.1.0 @@ -195,9 +192,6 @@ importers: cacheable-lookup: specifier: 7.0.0 version: 7.0.0 - cbor: - specifier: 10.0.11 - version: 10.0.11 chalk: specifier: 5.6.2 version: 5.6.2 @@ -267,9 +261,6 @@ importers: jsonld: specifier: 9.0.0 version: 9.0.0 - jsrsasign: - specifier: 11.1.0 - version: 11.1.0 juice: specifier: 11.0.3 version: 11.0.3 @@ -309,9 +300,6 @@ importers: nsfwjs: specifier: 4.2.0 version: 4.2.0(@tensorflow/tfjs@4.22.0(encoding@0.1.13)(seedrandom@3.0.5))(buffer@6.0.3) - oauth: - specifier: 0.10.2 - version: 0.10.2 oauth2orize: specifier: 1.12.0 version: 1.12.0 @@ -396,9 +384,6 @@ importers: tsc-alias: specifier: 1.8.16 version: 1.8.16 - tsconfig-paths: - specifier: 4.2.0 - version: 4.2.0 typeorm: specifier: 0.3.27 version: 0.3.27(ioredis@5.8.2)(pg@8.16.3)(reflect-metadata@0.2.2) @@ -466,9 +451,6 @@ importers: '@types/jsonld': specifier: 1.5.15 version: 1.5.15 - '@types/jsrsasign': - specifier: 10.5.15 - version: 10.5.15 '@types/mime-types': specifier: 3.0.1 version: 3.0.1 @@ -481,9 +463,6 @@ importers: '@types/nodemailer': specifier: 7.0.4 version: 7.0.4 - '@types/oauth': - specifier: 0.9.6 - version: 0.9.6 '@types/oauth2orize': specifier: 1.11.5 version: 1.11.5 @@ -544,6 +523,9 @@ importers: aws-sdk-client-mock: specifier: 4.1.0 version: 4.1.0 + cbor: + specifier: 10.0.11 + version: 10.0.11 cross-env: specifier: 10.1.0 version: 10.1.0 @@ -562,9 +544,6 @@ importers: jest-mock: specifier: 29.7.0 version: 29.7.0 - jest-util: - specifier: 29.7.0 - version: 29.7.0 js-yaml: specifier: 4.1.1 version: 4.1.1 @@ -713,18 +692,12 @@ importers: '@vitejs/plugin-vue': specifier: 6.0.2 version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3)) - '@vue/compiler-sfc': - specifier: 3.5.25 - version: 3.5.25 aiscript-vscode: specifier: github:aiscript-dev/aiscript-vscode#v0.1.15 version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/c3cde89e79a41d93540cf8a48cd619c3f2dcb1b7 analytics: specifier: 0.8.19 version: 0.8.19(@types/dlv@1.1.5) - astring: - specifier: 1.9.0 - version: 1.9.0 broadcast-channel: specifier: 7.2.0 version: 7.2.0 @@ -761,9 +734,6 @@ importers: date-fns: specifier: 4.1.0 version: 4.1.0 - estree-walker: - specifier: 3.0.3 - version: 3.0.3 eventemitter3: specifier: 5.0.1 version: 5.0.1 @@ -797,9 +767,6 @@ importers: json5: specifier: 2.2.3 version: 2.2.3 - magic-string: - specifier: 0.30.21 - version: 0.30.21 matter-js: specifier: 0.20.0 version: 0.20.0 @@ -842,9 +809,6 @@ importers: shiki: specifier: 3.17.0 version: 3.17.0 - strict-event-emitter-types: - specifier: 2.0.0 - version: 2.0.0 textarea-caret: specifier: 3.1.0 version: 3.1.0 @@ -857,15 +821,6 @@ importers: tinycolor2: specifier: 1.6.0 version: 1.6.0 - tsc-alias: - specifier: 1.8.16 - version: 1.8.16 - tsconfig-paths: - specifier: 4.2.0 - version: 4.2.0 - typescript: - specifier: 5.9.3 - version: 5.9.3 v-code-diff: specifier: 1.13.1 version: 1.13.1(vue@3.5.25(typescript@5.9.3)) @@ -972,9 +927,6 @@ importers: '@types/tinycolor2': specifier: 1.4.6 version: 1.4.6 - '@types/ws': - specifier: 8.18.1 - version: 8.18.1 '@typescript-eslint/eslint-plugin': specifier: 8.48.0 version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) @@ -987,12 +939,12 @@ importers: '@vue/compiler-core': specifier: 3.5.25 version: 3.5.25 - '@vue/runtime-core': - specifier: 3.5.25 - version: 3.5.25 acorn: specifier: 8.15.0 version: 8.15.0 + astring: + specifier: 1.9.0 + version: 1.9.0 cross-env: specifier: 10.1.0 version: 10.1.0 @@ -1005,12 +957,18 @@ importers: eslint-plugin-vue: specifier: 10.6.2 version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)) + estree-walker: + specifier: 3.0.3 + version: 3.0.3 happy-dom: specifier: 20.0.11 version: 20.0.11 intersection-observer: specifier: 0.12.2 version: 0.12.2 + magic-string: + specifier: 0.30.21 + version: 0.30.21 micromatch: specifier: 4.0.8 version: 4.0.8 @@ -1050,6 +1008,9 @@ importers: tsx: specifier: 4.20.6 version: 4.20.6 + typescript: + specifier: 5.9.3 + version: 5.9.3 vite-plugin-glsl: specifier: 1.5.4 version: 1.5.4(@rollup/pluginutils@5.3.0(rollup@4.53.3))(esbuild@0.27.0)(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6)) @@ -1126,12 +1087,6 @@ importers: '@vitejs/plugin-vue': specifier: 6.0.2 version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(sass@1.94.2)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.25(typescript@5.9.3)) - '@vue/compiler-sfc': - specifier: 3.5.25 - version: 3.5.25 - astring: - specifier: 1.9.0 - version: 1.9.0 buraha: specifier: 0.0.1 version: 0.0.1 @@ -1171,15 +1126,6 @@ importers: tinycolor2: specifier: 1.6.0 version: 1.6.0 - tsc-alias: - specifier: 1.8.16 - version: 1.8.16 - tsconfig-paths: - specifier: 4.2.0 - version: 4.2.0 - typescript: - specifier: 5.9.3 - version: 5.9.3 uuid: specifier: 13.0.0 version: 13.0.0 @@ -1265,6 +1211,9 @@ importers: tsx: specifier: 4.20.6 version: 4.20.6 + typescript: + specifier: 5.9.3 + version: 5.9.3 vite-plugin-turbosnap: specifier: 1.0.3 version: 1.0.3 @@ -2500,9 +2449,6 @@ packages: '@fastify/busboy@3.2.0': resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} - '@fastify/cookie@11.0.2': - resolution: {integrity: sha512-GWdwdGlgJxyvNv+QcKiGNevSspMQXncjMZ1J8IvuDQk0jvkzgWWZFNC2En3s+nHndZBGV8IbLwOI/sxCZw/mzA==} - '@fastify/cors@11.1.0': resolution: {integrity: sha512-sUw8ed8wP2SouWZTIbA7V2OQtMNpLj2W6qJOYhNdcmINTu6gsxVYXjQiM9mdi8UUDlcoDDJ/W2syPo1WB2QjYA==} @@ -4774,9 +4720,6 @@ packages: '@types/jsonld@1.5.15': resolution: {integrity: sha512-PlAFPZjL+AuGYmwlqwKEL0IMP8M8RexH0NIPGfCVWSQ041H2rR/8OlyZSD7KsCVoN8vCfWdtWDBxX8yBVP+xow==} - '@types/jsrsasign@10.5.15': - resolution: {integrity: sha512-3stUTaSRtN09PPzVWR6aySD9gNnuymz+WviNHoTb85dKu+BjaV4uBbWWGykBBJkfwPtcNZVfTn2lbX00U+yhpQ==} - '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} @@ -4831,9 +4774,6 @@ packages: '@types/oauth2orize@1.11.5': resolution: {integrity: sha512-C6hrRoh9hCnqis39OpeUZSwgw+TIzcV0CsxwJMGfQjTx4I1r+CLmuEPzoDJr5NRTfc7OMwHNLkQwrGFLKrJjMQ==} - '@types/oauth@0.9.6': - resolution: {integrity: sha512-H9TRCVKBNOhZZmyHLqFt9drPM9l+ShWiqqJijU1B8P3DX3ub84NjxDuy+Hjrz+fEca5Kwip3qPMKNyiLgNJtIA==} - '@types/offscreencanvas@2019.3.0': resolution: {integrity: sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==} @@ -5235,15 +5175,9 @@ packages: '@volar/typescript@2.4.23': resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==} - '@vue/compiler-core@3.5.24': - resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} - '@vue/compiler-core@3.5.25': resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} - '@vue/compiler-dom@3.5.24': - resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} - '@vue/compiler-dom@3.5.25': resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} @@ -5286,9 +5220,6 @@ packages: peerDependencies: vue: 3.5.25 - '@vue/shared@3.5.24': - resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} - '@vue/shared@3.5.25': resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} @@ -8096,9 +8027,6 @@ packages: resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} engines: {'0': node >=0.6.0} - jsrsasign@11.1.0: - resolution: {integrity: sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==} - jstransformer@1.0.0: resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} @@ -8836,9 +8764,6 @@ packages: resolution: {integrity: sha512-j4XtFDQUBsvUHPjUmvmNDUDMYed2MphMIJBhyxVVe8hGCjkuYnjIsW+D9qk8c5ciXRdnk6x6tEbiO6PLeOZdCQ==} engines: {node: '>= 0.4.0'} - oauth@0.10.2: - resolution: {integrity: sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -12865,11 +12790,6 @@ snapshots: '@fastify/busboy@3.2.0': {} - '@fastify/cookie@11.0.2': - dependencies: - cookie: 1.0.2 - fastify-plugin: 5.1.0 - '@fastify/cors@11.1.0': dependencies: fastify-plugin: 5.1.0 @@ -15542,8 +15462,6 @@ snapshots: '@types/jsonld@1.5.15': {} - '@types/jsrsasign@10.5.15': {} - '@types/long@4.0.2': {} '@types/matter-js@0.20.2': {} @@ -15603,10 +15521,6 @@ snapshots: '@types/express': 5.0.4 '@types/node': 24.10.1 - '@types/oauth@0.9.6': - dependencies: - '@types/node': 24.10.1 - '@types/offscreencanvas@2019.3.0': {} '@types/offscreencanvas@2019.7.3': {} @@ -16141,14 +16055,6 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue/compiler-core@3.5.24': - dependencies: - '@babel/parser': 7.28.5 - '@vue/shared': 3.5.24 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - '@vue/compiler-core@3.5.25': dependencies: '@babel/parser': 7.28.5 @@ -16157,11 +16063,6 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.24': - dependencies: - '@vue/compiler-core': 3.5.24 - '@vue/shared': 3.5.24 - '@vue/compiler-dom@3.5.25': dependencies: '@vue/compiler-core': 3.5.25 @@ -16192,9 +16093,9 @@ snapshots: '@vue/language-core@2.2.12(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.15 - '@vue/compiler-dom': 3.5.24 + '@vue/compiler-dom': 3.5.25 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.24 + '@vue/shared': 3.5.25 alien-signals: 1.0.13 minimatch: 9.0.5 muggle-string: 0.4.1 @@ -16205,8 +16106,8 @@ snapshots: '@vue/language-core@3.1.5(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.23 - '@vue/compiler-dom': 3.5.24 - '@vue/shared': 3.5.24 + '@vue/compiler-dom': 3.5.25 + '@vue/shared': 3.5.25 alien-signals: 3.1.0 muggle-string: 0.4.1 path-browserify: 1.0.1 @@ -16236,8 +16137,6 @@ snapshots: '@vue/shared': 3.5.25 vue: 3.5.25(typescript@5.9.3) - '@vue/shared@3.5.24': {} - '@vue/shared@3.5.25': {} '@vue/test-utils@2.4.6': @@ -19810,8 +19709,6 @@ snapshots: json-schema: 0.4.0 verror: 1.10.0 - jsrsasign@11.1.0: {} - jstransformer@1.0.0: dependencies: is-promise: 2.2.2 @@ -20734,8 +20631,6 @@ snapshots: transitivePeerDependencies: - supports-color - oauth@0.10.2: {} - object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -23113,7 +23008,7 @@ snapshots: dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 - '@vue/compiler-dom': 3.5.24 + '@vue/compiler-dom': 3.5.25 '@vue/compiler-sfc': 3.5.25 ast-types: 0.16.1 esm-resolve: 1.0.11 From 78435dc8d4a2c76798431a1383cee97f9e28ec0f Mon Sep 17 00:00:00 2001 From: anatawa12 Date: Fri, 12 Dec 2025 12:53:59 +0900 Subject: [PATCH 39/63] =?UTF-8?q?Fix:=20deck=E3=81=AE=E3=82=BF=E3=82=A4?= =?UTF-8?q?=E3=83=A0=E3=83=A9=E3=82=A4=E3=83=B3=E3=82=BB=E3=83=AC=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=81=AE=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88?= =?UTF-8?q?=E3=81=AE=E5=80=A4=E3=81=8C=E7=8F=BE=E5=9C=A8=E3=81=AE=E3=82=BF?= =?UTF-8?q?=E3=82=A4=E3=83=A0=E3=83=A9=E3=82=A4=E3=83=B3=E3=81=A7=E3=81=AF?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=20(#16008)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: os.selectの型定義の上で default が文字列である問題を修正 * fix: deckのタイムライン選択画面で今指定されているタイムラインがデフォルトで選択されない問題 * fix lint * fix: type error --- packages/frontend/src/ui/deck/antenna-column.vue | 2 +- packages/frontend/src/ui/deck/channel-column.vue | 2 +- packages/frontend/src/ui/deck/list-column.vue | 2 +- packages/frontend/src/ui/deck/role-timeline-column.vue | 2 +- packages/frontend/src/ui/deck/tl-column.vue | 1 + 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/ui/deck/antenna-column.vue b/packages/frontend/src/ui/deck/antenna-column.vue index 0423a22ce1..1668af79ee 100644 --- a/packages/frontend/src/ui/deck/antenna-column.vue +++ b/packages/frontend/src/ui/deck/antenna-column.vue @@ -63,7 +63,7 @@ async function setAntenna() { })), } : undefined), ], - default: props.column.antennaId, + default: antennas.find(x => x.id === props.column.antennaId)?.id, }); if (canceled || antennaIdOrOperation == null) return; diff --git a/packages/frontend/src/ui/deck/channel-column.vue b/packages/frontend/src/ui/deck/channel-column.vue index 35ca9f5cc6..dd14e7019e 100644 --- a/packages/frontend/src/ui/deck/channel-column.vue +++ b/packages/frontend/src/ui/deck/channel-column.vue @@ -63,7 +63,7 @@ async function setChannel() { items: channels.map(x => ({ value: x.id, label: x.name, })), - default: props.column.channelId, + default: channels.find(x => x.id === props.column.channelId)?.id, }); if (canceled || chosenChannelId == null) return; const chosenChannel = channels.find(x => x.id === chosenChannelId)!; diff --git a/packages/frontend/src/ui/deck/list-column.vue b/packages/frontend/src/ui/deck/list-column.vue index 7fb0aba1e1..6fc4680396 100644 --- a/packages/frontend/src/ui/deck/list-column.vue +++ b/packages/frontend/src/ui/deck/list-column.vue @@ -70,7 +70,7 @@ async function setList() { })), } : undefined), ], - default: props.column.listId, + default: lists.find(x => x.id === props.column.listId)?.id, }); if (canceled || listIdOrOperation == null) return; diff --git a/packages/frontend/src/ui/deck/role-timeline-column.vue b/packages/frontend/src/ui/deck/role-timeline-column.vue index beb679169c..1f6e8c73d5 100644 --- a/packages/frontend/src/ui/deck/role-timeline-column.vue +++ b/packages/frontend/src/ui/deck/role-timeline-column.vue @@ -54,7 +54,7 @@ async function setRole() { items: roles.map(x => ({ value: x.id, label: x.name, })), - default: props.column.roleId, + default: roles.find(x => x.id === props.column.roleId)?.id, }); if (canceled || roleId == null) return; const role = roles.find(x => x.id === roleId)!; diff --git a/packages/frontend/src/ui/deck/tl-column.vue b/packages/frontend/src/ui/deck/tl-column.vue index afaa08e6d0..0e59913c4c 100644 --- a/packages/frontend/src/ui/deck/tl-column.vue +++ b/packages/frontend/src/ui/deck/tl-column.vue @@ -104,6 +104,7 @@ async function setType() { }, { value: 'global', label: i18n.ts._timelines.global, }], + default: props.column.tl, }); if (canceled) { if (props.column.tl == null) { From bc1f83664f42105f4cf36730812c657fa84a9272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=BE=E3=81=A3=E3=81=A1=E3=82=83=E3=81=A6=E3=81=83?= =?UTF-8?q?=E3=83=BC=E3=80=82?= <56515516+mattyatea@users.noreply.github.com> Date: Fri, 12 Dec 2025 17:08:15 +0900 Subject: [PATCH 40/63] =?UTF-8?q?fix(sw):=20Service=20Worker=20Auto=20Prel?= =?UTF-8?q?oad=E3=82=92=E3=82=AA=E3=83=97=E3=83=88=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=20(#1697?= =?UTF-8?q?1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Service Worker Auto Preloadをオプトアウトするように * TypeErrorを修正 * コメントを追記 --- packages/sw/src/sw.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts index 21017f8241..2bccbb0542 100644 --- a/packages/sw/src/sw.ts +++ b/packages/sw/src/sw.ts @@ -59,8 +59,21 @@ async function offlineContentHTML() { return `${messages.title}
${messages.header}
v${_VERSION_}
`; } -globalThis.addEventListener('install', () => { - // ev.waitUntil(globalThis.skipWaiting()); +globalThis.addEventListener('install', (ev) => { + // 次の問題が発生するため、ServiceWorkerAutoPreload をオプトアウトする必要がある + // https://issues.chromium.org/issues/466790291 + if ('addRoutes' in ev) { + // doc: https://developer.mozilla.org/en-US/docs/Web/API/InstallEvent/addRoutes + // @ts-expect-error 実験的なAPIなので型定義がない + ev.addRoutes({ + condition: { + // doc: https://developer.mozilla.org/ja/docs/Web/API/URLPattern + // @ts-expect-error 実験的なAPIなので型定義がない + urlPattern: new URLPattern({}), + }, + source: 'fetch-event', + }); + } }); globalThis.addEventListener('activate', ev => { From 5fb4caa14b0335ea6650405c1efe9a61b2c7cdaa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 12 Dec 2025 08:09:12 +0000 Subject: [PATCH 41/63] Bump version to 2025.12.1-alpha.0 --- CHANGELOG.md | 2 +- package.json | 2 +- packages/misskey-js/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f223f6ac1..d0dd9b3fea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## Unreleased +## 2025.12.1 ### General - diff --git a/package.json b/package.json index d7067f705e..ed4d3e960f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.12.0", + "version": "2025.12.1-alpha.0", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index c549eaf0e4..cfe114f511 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.12.0", + "version": "2025.12.1-alpha.0", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 6fa4eb8c4f9b25283553353d7015ab6080e927da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:16:15 +0900 Subject: [PATCH 42/63] =?UTF-8?q?fix(frontend):=20=E7=84=A1=E9=99=90?= =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=82=8B=E7=AE=87=E6=89=80=E3=81=AE=E8=AA=BF=E6=95=B4=20(#1697?= =?UTF-8?q?9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/MkNoteDetailed.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index bc30360821..25a55d2d90 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -190,7 +190,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- +