From cb73368c830a7865fcb82ef7e21e82f5918ef6c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=82=8F=E3=82=8F=E3=82=8F=E3=81=A8=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E3=82=85?= <17376330+u1-liquid@users.noreply.github.com> Date: Sat, 28 Dec 2024 11:39:27 +0900 Subject: [PATCH 1/6] update deps (MisskeyIO#857) --- packages/backend/package.json | 35 +- packages/frontend/package.json | 4 +- packages/misskey-js/package.json | 2 +- pnpm-lock.yaml | 627 +++++++++++++++---------------- 4 files changed, 332 insertions(+), 336 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index c4e43f5832b0..c0bde0be9288 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -33,19 +33,19 @@ "generate-api-json": "pnpm build && node ./scripts/generate_api_json.js" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.10.1", - "@swc/core-darwin-x64": "1.10.1", - "@swc/core-linux-arm-gnueabihf": "1.10.1", - "@swc/core-linux-arm64-gnu": "1.10.1", - "@swc/core-linux-arm64-musl": "1.10.1", - "@swc/core-linux-x64-gnu": "1.10.1", - "@swc/core-linux-x64-musl": "1.10.1", - "@swc/core-win32-arm64-msvc": "1.10.1", - "@swc/core-win32-ia32-msvc": "1.10.1", - "@swc/core-win32-x64-msvc": "1.10.1", + "@swc/core-darwin-arm64": "1.10.3", + "@swc/core-darwin-x64": "1.10.3", + "@swc/core-linux-arm-gnueabihf": "1.10.3", + "@swc/core-linux-arm64-gnu": "1.10.3", + "@swc/core-linux-arm64-musl": "1.10.3", + "@swc/core-linux-x64-gnu": "1.10.3", + "@swc/core-linux-x64-musl": "1.10.3", + "@swc/core-win32-arm64-msvc": "1.10.3", + "@swc/core-win32-ia32-msvc": "1.10.3", + "@swc/core-win32-x64-msvc": "1.10.3", "@tensorflow/tfjs": "4.22.0", "@tensorflow/tfjs-node": "4.22.0", - "bufferutil": "4.0.8", + "bufferutil": "4.0.9", "slacc-android-arm-eabi": "0.0.10", "slacc-android-arm64": "0.0.10", "slacc-darwin-arm64": "0.0.10", @@ -65,9 +65,9 @@ "@authenio/samlify-node-xmllint": "2.0.0", "@aws-sdk/client-s3": "3.717.0", "@aws-sdk/lib-storage": "3.717.0", - "@bull-board/api": "6.5.3", - "@bull-board/fastify": "6.5.3", - "@bull-board/ui": "6.5.3", + "@bull-board/api": "6.5.4", + "@bull-board/fastify": "6.5.4", + "@bull-board/ui": "6.5.4", "@discordapp/twemoji": "15.1.0", "@elastic/elasticsearch": "8.17.0", "@fastify/accepts": "5.0.2", @@ -90,7 +90,7 @@ "@sinonjs/fake-timers": "11.3.1", "@smithy/node-http-handler": "3.3.3", "@swc/cli": "0.5.2", - "@swc/core": "1.10.1", + "@swc/core": "1.10.3", "@twemoji/parser": "15.1.1", "accepts": "1.3.8", "ajv": "8.17.1", @@ -99,7 +99,7 @@ "bcryptjs": "2.4.3", "blurhash": "2.0.5", "body-parser": "1.20.3", - "bullmq": "5.34.4", + "bullmq": "5.34.5", "cacheable-lookup": "7.0.0", "cbor": "10.0.3", "chalk": "5.4.1", @@ -118,7 +118,6 @@ "fluent-ffmpeg": "2.1.3", "form-data": "4.0.1", "got": "14.4.5", - "happy-dom": "15.11.7", "hpagent": "1.2.0", "htmlescape": "1.1.1", "http-link-header": "1.1.3", @@ -175,7 +174,7 @@ "slacc": "0.0.10", "strict-event-emitter-types": "2.0.0", "stringz": "2.1.0", - "systeminformation": "5.23.21", + "systeminformation": "5.23.23", "tinycolor2": "1.6.0", "tmp": "0.2.3", "tsc-alias": "1.8.10", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 2842184f273f..6f54dfa1c656 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -73,7 +73,7 @@ "typescript": "5.7.2", "uuid": "11.0.3", "v-code-diff": "1.13.1", - "vite": "6.0.5", + "vite": "6.0.6", "vue": "3.5.13", "vue-gtag": "2.0.1", "vuedraggable": "next", @@ -123,7 +123,7 @@ "eslint-plugin-import": "2.31.0", "eslint-plugin-vue": "9.32.0", "fast-glob": "3.3.2", - "happy-dom": "15.11.7", + "happy-dom": "16.0.1", "intersection-observer": "0.12.2", "micromatch": "4.0.8", "msw": "2.7.0", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index af9a385f349a..a5c769bbf9c4 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -59,7 +59,7 @@ ], "dependencies": { "@swc/cli": "0.5.2", - "@swc/core": "1.10.1", + "@swc/core": "1.10.3", "eventemitter3": "5.0.1", "reconnecting-websocket": "4.4.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f5fde0ab7b8d..7644a0b23a85 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -82,14 +82,14 @@ importers: specifier: 3.717.0 version: 3.717.0(@aws-sdk/client-s3@3.717.0) '@bull-board/api': - specifier: 6.5.3 - version: 6.5.3(@bull-board/ui@6.5.3) + specifier: 6.5.4 + version: 6.5.4(@bull-board/ui@6.5.4) '@bull-board/fastify': - specifier: 6.5.3 - version: 6.5.3 + specifier: 6.5.4 + version: 6.5.4 '@bull-board/ui': - specifier: 6.5.3 - version: 6.5.3 + specifier: 6.5.4 + version: 6.5.4 '@discordapp/twemoji': specifier: 15.1.0 version: 15.1.0 @@ -113,7 +113,7 @@ importers: version: 8.0.1 '@fastify/http-proxy': specifier: 11.0.0 - version: 11.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.5) + version: 11.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) '@fastify/multipart': specifier: 9.0.1 version: 9.0.1 @@ -155,10 +155,10 @@ importers: version: 3.3.3 '@swc/cli': specifier: 0.5.2 - version: 0.5.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(chokidar@4.0.3) + version: 0.5.2(@swc/core@1.10.3(@swc/helpers@0.5.15))(chokidar@4.0.3) '@swc/core': - specifier: 1.10.1 - version: 1.10.1(@swc/helpers@0.5.15) + specifier: 1.10.3 + version: 1.10.3(@swc/helpers@0.5.15) '@twemoji/parser': specifier: 15.1.1 version: 15.1.1 @@ -184,8 +184,8 @@ importers: specifier: 1.20.3 version: 1.20.3 bullmq: - specifier: 5.34.4 - version: 5.34.4 + specifier: 5.34.5 + version: 5.34.5 cacheable-lookup: specifier: 7.0.0 version: 7.0.0 @@ -240,9 +240,6 @@ importers: got: specifier: 14.4.5 version: 14.4.5 - happy-dom: - specifier: 15.11.7 - version: 15.11.7 hpagent: specifier: 1.2.0 version: 1.2.0 @@ -272,7 +269,7 @@ importers: version: 4.1.0 jsdom: specifier: 25.0.1 - version: 25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5) + version: 25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) json5: specifier: 2.2.3 version: 2.2.3 @@ -412,8 +409,8 @@ importers: specifier: 2.1.0 version: 2.1.0 systeminformation: - specifier: 5.23.21 - version: 5.23.21 + specifier: 5.23.23 + version: 5.23.23 tinycolor2: specifier: 1.6.0 version: 1.6.0 @@ -443,7 +440,7 @@ importers: version: 3.6.7 ws: specifier: 8.18.0 - version: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.5) + version: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) xev: specifier: 3.0.2 version: 3.0.2 @@ -452,35 +449,35 @@ importers: version: 15.1.1 optionalDependencies: '@swc/core-darwin-arm64': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-darwin-x64': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-linux-arm-gnueabihf': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-linux-arm64-gnu': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-linux-arm64-musl': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-linux-x64-gnu': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-linux-x64-musl': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-win32-arm64-msvc': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-win32-ia32-msvc': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@swc/core-win32-x64-msvc': - specifier: 1.10.1 - version: 1.10.1 + specifier: 1.10.3 + version: 1.10.3 '@tensorflow/tfjs': specifier: 4.22.0 version: 4.22.0(encoding@0.1.13)(seedrandom@3.0.5) @@ -488,8 +485,8 @@ importers: specifier: 4.22.0 version: 4.22.0(encoding@0.1.13)(seedrandom@3.0.5) bufferutil: - specifier: 4.0.8 - version: 4.0.8 + specifier: 4.0.9 + version: 4.0.9 slacc-android-arm-eabi: specifier: 0.0.10 version: 0.0.10 @@ -544,7 +541,7 @@ importers: version: 10.4.15(@nestjs/common@10.4.15(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.15) '@swc/jest': specifier: 0.2.37 - version: 0.2.37(@swc/core@1.10.1(@swc/helpers@0.5.15)) + version: 0.2.37(@swc/core@1.10.3(@swc/helpers@0.5.15)) '@types/accepts': specifier: 1.3.7 version: 1.3.7 @@ -739,7 +736,7 @@ importers: version: 15.1.1 '@vitejs/plugin-vue': specifier: 5.2.1 - version: 5.2.1(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.2)) + version: 5.2.1(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.2)) '@vue/compiler-sfc': specifier: 3.5.13 version: 3.5.13 @@ -870,8 +867,8 @@ importers: specifier: 1.13.1 version: 1.13.1(vue@3.5.13(typescript@5.7.2)) vite: - specifier: 6.0.5 - version: 6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) + specifier: 6.0.6 + version: 6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) vue: specifier: 3.5.13 version: 3.5.13(typescript@5.7.2) @@ -893,58 +890,58 @@ importers: version: https://codeload.github.com/MisskeyIO/summaly/tar.gz/62a0730625ba2ea5530d8ef1642afa8880e4528d '@storybook/addon-actions': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-essentials': specifier: 8.4.7 - version: 8.4.7(@types/react@19.0.2)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(@types/react@19.0.2)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-interactions': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-links': specifier: 8.4.7 - version: 8.4.7(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-mdx-gfm': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/addon-storysource': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/blocks': specifier: 8.4.7 - version: 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/components': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/core-events': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/manager-api': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/preview-api': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/react': specifier: 8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2) '@storybook/react-vite': specifier: 8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.29.1)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2)(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.29.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2)(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)) '@storybook/test': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/theming': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/types': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/vue3': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.2)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.2)) '@storybook/vue3-vite': specifier: 8.4.7 - version: 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.2)) + version: 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.2)) '@testing-library/vue': specifier: 8.1.0 version: 8.1.0(@vue/compiler-sfc@3.5.13)(vue@3.5.13(typescript@5.7.2)) @@ -989,7 +986,7 @@ importers: version: 7.10.0(eslint@8.57.1)(typescript@5.7.2) '@vitest/coverage-v8': specifier: 2.1.8 - version: 2.1.8(vitest@2.1.8(@types/node@22.10.2)(happy-dom@15.11.7)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0)) + version: 2.1.8(vitest@2.1.8(@types/node@22.10.2)(happy-dom@16.0.1)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0)) '@vue/runtime-core': specifier: 3.5.13 version: 3.5.13 @@ -1015,8 +1012,8 @@ importers: specifier: 3.3.2 version: 3.3.2 happy-dom: - specifier: 15.11.7 - version: 15.11.7 + specifier: 16.0.1 + version: 16.0.1 intersection-observer: specifier: 0.12.2 version: 0.12.2 @@ -1046,19 +1043,19 @@ importers: version: 2.0.9 storybook: specifier: 8.4.7 - version: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + version: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(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(@storybook/blocks@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/components@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/core-events@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/manager-api@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/preview-api@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/theming@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/types@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/components@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/core-events@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/manager-api@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/preview-api@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/theming@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/types@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite-plugin-turbosnap: specifier: 1.0.3 version: 1.0.3 vitest: specifier: 2.1.8 - version: 2.1.8(@types/node@22.10.2)(happy-dom@15.11.7)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0) + version: 2.1.8(@types/node@22.10.2)(happy-dom@16.0.1)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0) vitest-fetch-mock: specifier: 0.3.0 - version: 0.3.0(encoding@0.1.13)(vitest@2.1.8(@types/node@22.10.2)(happy-dom@15.11.7)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0)) + version: 0.3.0(encoding@0.1.13)(vitest@2.1.8(@types/node@22.10.2)(happy-dom@16.0.1)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0)) vue-component-type-helpers: specifier: 2.2.0 version: 2.2.0 @@ -1119,10 +1116,10 @@ importers: dependencies: '@swc/cli': specifier: 0.5.2 - version: 0.5.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(chokidar@4.0.3) + version: 0.5.2(@swc/core@1.10.3(@swc/helpers@0.5.15))(chokidar@4.0.3) '@swc/core': - specifier: 1.10.1 - version: 1.10.1(@swc/helpers@0.5.15) + specifier: 1.10.3 + version: 1.10.3(@swc/helpers@0.5.15) eventemitter3: specifier: 5.0.1 version: 5.0.1 @@ -1138,7 +1135,7 @@ importers: version: 1.0.0(@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.2))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.10.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1))(eslint@8.57.1) '@swc/jest': specifier: 0.2.37 - version: 0.2.37(@swc/core@1.10.1(@swc/helpers@0.5.15)) + version: 0.2.37(@swc/core@1.10.3(@swc/helpers@0.5.15)) '@types/jest': specifier: 29.5.14 version: 29.5.14 @@ -1647,16 +1644,16 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@bull-board/api@6.5.3': - resolution: {integrity: sha512-k58OlCheALXaoN+5l8U0VfLo9jQvl2nSR3/6vUmFQV8wcNBPfRtQRxUBh9/SbTDmFvtvmzvMkc+J3yWGMCDrAw==} + '@bull-board/api@6.5.4': + resolution: {integrity: sha512-5EFs4lSzfTf/TUMOKaADjSVyJAnP9/jJw0TAW2NBD+LzxjJCSpqN8y3vxoQo1vnKCf/iiLS6wwSRNDObNDz1XA==} peerDependencies: - '@bull-board/ui': 6.5.3 + '@bull-board/ui': 6.5.4 - '@bull-board/fastify@6.5.3': - resolution: {integrity: sha512-ee8gu2AdfpeGBQBgjPvhw98O89SlI2Nunv6qJ5rTscTcDH9ajMv9E1t+5bgV/FzOGiAWgtgilq2nIU/XpXCqkw==} + '@bull-board/fastify@6.5.4': + resolution: {integrity: sha512-rBwh2F1/CsSRIfQIt8BMMVy14f4NUvjCMq2bR2NPehR29ejHfEDEU5xw9e6kAB8cXXgWM3SvjwYGHk1opZCfpA==} - '@bull-board/ui@6.5.3': - resolution: {integrity: sha512-h2A7HX6Mb1+/sMTYueK5zBgOCPiPyu9ENHUapPiPdrl58xm+J9vHA/TYxzv9vgJ9DckWczXg1JP11P9SmC1oxQ==} + '@bull-board/ui@6.5.4': + resolution: {integrity: sha512-5K39CaJk+p5fyckXI0jAc9lVJZAJ+tkj8wlyv8X3qszO6jKg/rYE20HaNgUOIBpQK9yQQDwgaxpip767svjnVQ==} '@bundled-es-modules/cookie@2.0.1': resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} @@ -3379,68 +3376,68 @@ packages: chokidar: optional: true - '@swc/core-darwin-arm64@1.10.1': - resolution: {integrity: sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==} + '@swc/core-darwin-arm64@1.10.3': + resolution: {integrity: sha512-LFFCxAUKBy69AUE+01rgazQcafIXrYs6tBa9SyKPR51ft6Tp66dAVrWg9MTykaWskuXEe80LPUvUw1ga3bOH3A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.1': - resolution: {integrity: sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==} + '@swc/core-darwin-x64@1.10.3': + resolution: {integrity: sha512-yZNv1+yPg0GvYdThsMI8WpaPRAPuw2gQDMdgijLFfRcRlr2l1sTWsDHqGd7QMTx+acYM3uB537gyd31WjUAwlQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.1': - resolution: {integrity: sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==} + '@swc/core-linux-arm-gnueabihf@1.10.3': + resolution: {integrity: sha512-Qa6hu5ASoKV4rcYUBGG3y3z+9UT042KAG4A7ivqqYQFcMfkB4NbZb5So2YWOpUc0/5YlSVkgL22h3Mbj5EXy7A==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.1': - resolution: {integrity: sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==} + '@swc/core-linux-arm64-gnu@1.10.3': + resolution: {integrity: sha512-BGnoZrmo0nlkXrOxVHk5U3j9u4BuquFviC+LvMe+HrDc5YLVe1gSXMUSBKhIz9MY9uFgxXW977TnB1XjLSKe5Q==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.1': - resolution: {integrity: sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==} + '@swc/core-linux-arm64-musl@1.10.3': + resolution: {integrity: sha512-L07/4zKnIY2S/00bE+Yn3oEHkyGjWmGGE8Ta4luVCL+00s04EIwMoE1Hc8E8xFB5zLew5ViKFc5kNb5YZ/tRFQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.1': - resolution: {integrity: sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==} + '@swc/core-linux-x64-gnu@1.10.3': + resolution: {integrity: sha512-cvTCekY4u0fBIDNfhv/2UxcOXqH4XJE2iNxKuQejS5KIapFJwrZ+fRQ2lha3+yopI/d2p96BlBEWTAcBzeTntw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.1': - resolution: {integrity: sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==} + '@swc/core-linux-x64-musl@1.10.3': + resolution: {integrity: sha512-h9kUOTrSSpY9JNc41a+NMAwK62USk/pvNE9Fi/Pfoklmlf9j9j8gRCitqvHpmZcEF4PPIsoMdiGetDipTwvWlw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.1': - resolution: {integrity: sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==} + '@swc/core-win32-arm64-msvc@1.10.3': + resolution: {integrity: sha512-iHOmLYkZYn3r1Ff4rfyczdrYGt/wVIWyY0t8swsO9o1TE+zmucGFZuYZzgj3ng8Kp4sojJrydAGz8TINQZDBzQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.1': - resolution: {integrity: sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==} + '@swc/core-win32-ia32-msvc@1.10.3': + resolution: {integrity: sha512-4SqLSE4Ozh8SxuVuHIZhkSyJQru5+WbQMRs5ggLRqeUy3vkUPHOAFAY3oMwDJUN6BwbAr8+664TmdrMwaWh8Ng==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.1': - resolution: {integrity: sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==} + '@swc/core-win32-x64-msvc@1.10.3': + resolution: {integrity: sha512-jTyf/IbNq7NVyqqDIEDzgjALjWu1IMfXKLXXAJArreklIMzkfHU1sV32ZJLOBmRKPyslCoalxIAU+hTx4reUTQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.1': - resolution: {integrity: sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==} + '@swc/core@1.10.3': + resolution: {integrity: sha512-2yjqCcsBx6SNBQZIYNlwxED9aYXW/7QBZyr8LYAxTx5bzmoNhKiClYbsNLe1NJ6ccf5uSbcInw12PjXLduNEdQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -4192,8 +4189,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - alien-signals@0.4.10: - resolution: {integrity: sha512-7S60rz/mMjz0Djq1VI9rd4bGqKNgxTUGE6k7kwrRO6tF95qt1S3ohz1qaQisvUsfbGh7yXnm6DPRrOhOl1ho1A==} + alien-signals@0.4.11: + resolution: {integrity: sha512-79GUbcQM5K2zb+HyUMODTgJdVjZWwybDNQRduqP9ks7XZvJylm9uWesOjVcu6/veWsa+XNGVE4xVQ8+RGu8HaA==} ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -4530,12 +4527,12 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + bufferutil@4.0.9: + resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} engines: {node: '>=6.14.2'} - bullmq@5.34.4: - resolution: {integrity: sha512-FPTN5eqsYO5/Blm6vh/bVJ0eADrVLjTBDjMkPCqZN3xx/5GqHov9NwxM6A6M3m6n2Vg+gNAoN98t7bTij5/UEA==} + bullmq@5.34.5: + resolution: {integrity: sha512-MHho9EOhLCTY3ZF+dd0wHv0VlY2FtpBcopMRsvj0kPra4TAwBFh2pik/s4WbX56cIfCE+VzfHIHy4xvqp3g1+Q==} buraha@0.0.1: resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==} @@ -5322,8 +5319,8 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} @@ -5936,8 +5933,8 @@ packages: resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} engines: {node: '>=0.8.0'} - happy-dom@15.11.7: - resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==} + happy-dom@16.0.1: + resolution: {integrity: sha512-cqbqvutE6XAIMe4nM93TkbW5SDFtLkU/6nsQfJBJ2KSlaT+My2kmnYsCFXrvEzvmP7s1xGJ6Xt4D9LNJIJHMbA==} engines: {node: '>=18.0.0'} hard-rejection@2.1.0: @@ -6000,8 +5997,8 @@ packages: highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - highlight.js@11.11.0: - resolution: {integrity: sha512-6ErL7JlGu2CNFHyRQEuDogOyGPNiqcuWdt4iSSFUPyferNTGlNTPFqeV36Y/XwA4V/TJ8l0sxp6FTnxud/mf8g==} + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} engines: {node: '>=12.0.0'} hosted-git-info@2.8.9: @@ -8345,14 +8342,14 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-recursion@5.0.0: - resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==} + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@5.0.2: - resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} regexp.prototype.flags@1.5.3: resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} @@ -9015,8 +9012,8 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - systeminformation@5.23.21: - resolution: {integrity: sha512-7cXg7L3Hkdy7L0iOdsFDoclDQpE/dMTi5UDgdYpihBsqy+3yhr/bIlfJedy7+LM65Xugk5MIxJ0OMtS5ZncjkA==} + systeminformation@5.23.23: + resolution: {integrity: sha512-QhEWrMFZnzWjFZ7J65gikIXTrB8U6b7VTQ8pLaF/GUgJaJoUoSuucqalIVj91D/grhRUtXplL6qYwTn1A4FfhQ==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true @@ -9105,11 +9102,11 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.69: - resolution: {integrity: sha512-nygxy9n2PBUFQUtAXAc122gGo+04/j5qr5TGQFZTHafTKYvmARVXt2cA5rgero2/dnXUfkdPtiJoKmrd3T+wdA==} + tldts-core@6.1.70: + resolution: {integrity: sha512-RNnIXDB1FD4T9cpQRErEqw6ZpjLlGdMOitdV+0xtbsnwr4YFka1zpc7D4KD+aAn8oSG5JyFrdasZTE04qDE9Yg==} - tldts@6.1.69: - resolution: {integrity: sha512-Oh/CqRQ1NXNY7cy9NkTPUauOWiTro0jEYZTioGbOmcQh6EC45oribyIMJp0OJO3677r13tO6SKdWoGZUx2BDFw==} + tldts@6.1.70: + resolution: {integrity: sha512-/W1YVgYVJd9ZDjey5NXadNh0mJXkiUMUue9Zebd0vpdo1sU+H4zFFTaJ1RKD4N6KFoHfcXy6l+Vu7bh+bdWCzA==} hasBin: true tmp@0.2.3: @@ -9252,8 +9249,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.30.2: - resolution: {integrity: sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==} + type-fest@4.31.0: + resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==} engines: {node: '>=16'} type-is@1.6.18: @@ -9555,8 +9552,8 @@ packages: terser: optional: true - vite@6.0.5: - resolution: {integrity: sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==} + vite@6.0.6: + resolution: {integrity: sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -10708,22 +10705,22 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@bull-board/api@6.5.3(@bull-board/ui@6.5.3)': + '@bull-board/api@6.5.4(@bull-board/ui@6.5.4)': dependencies: - '@bull-board/ui': 6.5.3 + '@bull-board/ui': 6.5.4 redis-info: 3.1.0 - '@bull-board/fastify@6.5.3': + '@bull-board/fastify@6.5.4': dependencies: - '@bull-board/api': 6.5.3(@bull-board/ui@6.5.3) - '@bull-board/ui': 6.5.3 + '@bull-board/api': 6.5.4(@bull-board/ui@6.5.4) + '@bull-board/ui': 6.5.4 '@fastify/static': 8.0.3 '@fastify/view': 10.0.1 ejs: 3.1.10 - '@bull-board/ui@6.5.3': + '@bull-board/ui@6.5.4': dependencies: - '@bull-board/api': 6.5.3(@bull-board/ui@6.5.3) + '@bull-board/api': 6.5.4(@bull-board/ui@6.5.4) '@bundled-es-modules/cookie@2.0.1': dependencies: @@ -11024,12 +11021,12 @@ snapshots: fast-querystring: 1.1.2 fastify-plugin: 5.0.1 - '@fastify/http-proxy@11.0.0(bufferutil@4.0.8)(utf-8-validate@6.0.5)': + '@fastify/http-proxy@11.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: '@fastify/reply-from': 12.0.0 fast-querystring: 1.1.2 fastify-plugin: 5.0.1 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.5) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -11406,11 +11403,11 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))': dependencies: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.7.2) - vite: 6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) optionalDependencies: typescript: 5.7.2 @@ -12441,154 +12438,154 @@ snapshots: '@sqltools/formatter@1.2.5': {} - '@storybook/addon-actions@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-actions@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(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: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-backgrounds@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-controls@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-docs@8.4.7(@types/react@19.0.2)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-docs@8.4.7(@types/react@19.0.2)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@mdx-js/react': 3.1.0(@types/react@19.0.2)(react@18.3.1) - '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.4.7(@types/react@19.0.2)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': - dependencies: - '@storybook/addon-actions': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-controls': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-docs': 8.4.7(@types/react@19.0.2)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-measure': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-outline': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-toolbars': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/addon-viewport': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + '@storybook/addon-essentials@8.4.7(@types/react@19.0.2)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': + dependencies: + '@storybook/addon-actions': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-controls': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-docs': 8.4.7(@types/react@19.0.2)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-measure': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-outline': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-toolbars': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/addon-viewport': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-highlight@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-highlight@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/addon-interactions@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-interactions@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/test': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/instrumenter': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/test': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) polished: 4.3.1 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-links@8.4.7(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-links@8.4.7(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/csf': 0.1.13 '@storybook/global': 5.0.0 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 optionalDependencies: react: 19.0.0 - '@storybook/addon-mdx-gfm@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-mdx-gfm@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: remark-gfm: 4.0.0 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - '@storybook/addon-measure@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-measure@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-outline@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - '@storybook/addon-storysource@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-storysource@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - '@storybook/source-loader': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/source-loader': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) estraverse: 5.3.0 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) tiny-invariant: 1.3.3 - '@storybook/addon-toolbars@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-toolbars@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/addon-viewport@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/addon-viewport@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: memoizerific: 1.11.3 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/blocks@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/blocks@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/csf': 0.1.13 '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/blocks@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/blocks@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/csf': 0.1.13 '@storybook/icons': 1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 optionalDependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@storybook/builder-vite@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))': + '@storybook/builder-vite@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))': dependencies: - '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) browser-assert: 1.2.1 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - vite: 6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) - '@storybook/components@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/components@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/core-events@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/core-events@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/core@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)': + '@storybook/core@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)': dependencies: '@storybook/csf': 0.1.13 better-opn: 3.0.2 @@ -12600,7 +12597,7 @@ snapshots: recast: 0.23.9 semver: 7.6.3 util: 0.12.5 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.5) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: prettier: 3.4.2 transitivePeerDependencies: @@ -12608,9 +12605,9 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/csf-plugin@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) unplugin: 1.16.0 '@storybook/csf@0.1.13': @@ -12629,127 +12626,127 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@storybook/instrumenter@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/instrumenter@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.8 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/manager-api@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/manager-api@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/preview-api@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/preview-api@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/react-dom-shim@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/react-dom-shim@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/react-dom-shim@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/react-dom-shim@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.29.1)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2)(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))': + '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(rollup@4.29.1)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2)(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)) '@rollup/pluginutils': 5.1.4(rollup@4.29.1) - '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)) - '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)) + '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2) find-up: 5.0.0 magic-string: 0.30.17 react: 19.0.0 react-docgen: 7.1.0 react-dom: 19.0.0(react@19.0.0) resolve: 1.22.10 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) tsconfig-paths: 4.2.0 - vite: 6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) transitivePeerDependencies: - '@storybook/test' - rollup - supports-color - typescript - '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2)': + '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(typescript@5.7.2)': dependencies: - '@storybook/components': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/components': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/preview-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/react-dom-shim': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/theming': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/manager-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/preview-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/react-dom-shim': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/theming': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) optionalDependencies: - '@storybook/test': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/test': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) typescript: 5.7.2 - '@storybook/source-loader@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/source-loader@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/csf': 0.1.13 es-toolkit: 1.30.1 estraverse: 5.3.0 prettier: 3.4.2 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/test@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: '@storybook/csf': 0.1.13 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/instrumenter': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(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: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/theming@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/theming@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/types@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))': + '@storybook/types@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))': dependencies: - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) - '@storybook/vue3-vite@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.2))': + '@storybook/vue3-vite@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.2))': dependencies: - '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)) - '@storybook/vue3': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.2)) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2)) + '@storybook/vue3': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.2)) find-package-json: 1.2.0 magic-string: 0.30.17 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) typescript: 5.7.2 - vite: 6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) vue-component-meta: 2.2.0(typescript@5.7.2) vue-docgen-api: 4.79.2(vue@3.5.13(typescript@5.7.2)) transitivePeerDependencies: - vue - '@storybook/vue3@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.2))': + '@storybook/vue3@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.7.2))': dependencies: - '@storybook/components': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/components': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/preview-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/theming': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/manager-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/preview-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/theming': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) '@vue/compiler-core': 3.5.13 - storybook: 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + storybook: 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 type-fest: 2.19.0 vue: 3.5.13(typescript@5.7.2) vue-component-type-helpers: 2.2.0 - '@swc/cli@0.5.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(chokidar@4.0.3)': + '@swc/cli@0.5.2(@swc/core@1.10.3(@swc/helpers@0.5.15))(chokidar@4.0.3)': dependencies: - '@swc/core': 1.10.1(@swc/helpers@0.5.15) + '@swc/core': 1.10.3(@swc/helpers@0.5.15) '@swc/counter': 0.1.3 '@xhmikosr/bin-wrapper': 13.0.5 commander: 8.3.0 @@ -12762,51 +12759,51 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@swc/core-darwin-arm64@1.10.1': + '@swc/core-darwin-arm64@1.10.3': optional: true - '@swc/core-darwin-x64@1.10.1': + '@swc/core-darwin-x64@1.10.3': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.1': + '@swc/core-linux-arm-gnueabihf@1.10.3': optional: true - '@swc/core-linux-arm64-gnu@1.10.1': + '@swc/core-linux-arm64-gnu@1.10.3': optional: true - '@swc/core-linux-arm64-musl@1.10.1': + '@swc/core-linux-arm64-musl@1.10.3': optional: true - '@swc/core-linux-x64-gnu@1.10.1': + '@swc/core-linux-x64-gnu@1.10.3': optional: true - '@swc/core-linux-x64-musl@1.10.1': + '@swc/core-linux-x64-musl@1.10.3': optional: true - '@swc/core-win32-arm64-msvc@1.10.1': + '@swc/core-win32-arm64-msvc@1.10.3': optional: true - '@swc/core-win32-ia32-msvc@1.10.1': + '@swc/core-win32-ia32-msvc@1.10.3': optional: true - '@swc/core-win32-x64-msvc@1.10.1': + '@swc/core-win32-x64-msvc@1.10.3': optional: true - '@swc/core@1.10.1(@swc/helpers@0.5.15)': + '@swc/core@1.10.3(@swc/helpers@0.5.15)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.1 - '@swc/core-darwin-x64': 1.10.1 - '@swc/core-linux-arm-gnueabihf': 1.10.1 - '@swc/core-linux-arm64-gnu': 1.10.1 - '@swc/core-linux-arm64-musl': 1.10.1 - '@swc/core-linux-x64-gnu': 1.10.1 - '@swc/core-linux-x64-musl': 1.10.1 - '@swc/core-win32-arm64-msvc': 1.10.1 - '@swc/core-win32-ia32-msvc': 1.10.1 - '@swc/core-win32-x64-msvc': 1.10.1 + '@swc/core-darwin-arm64': 1.10.3 + '@swc/core-darwin-x64': 1.10.3 + '@swc/core-linux-arm-gnueabihf': 1.10.3 + '@swc/core-linux-arm64-gnu': 1.10.3 + '@swc/core-linux-arm64-musl': 1.10.3 + '@swc/core-linux-x64-gnu': 1.10.3 + '@swc/core-linux-x64-musl': 1.10.3 + '@swc/core-win32-arm64-msvc': 1.10.3 + '@swc/core-win32-ia32-msvc': 1.10.3 + '@swc/core-win32-x64-msvc': 1.10.3 '@swc/helpers': 0.5.15 '@swc/counter@0.1.3': {} @@ -12815,10 +12812,10 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/jest@0.2.37(@swc/core@1.10.1(@swc/helpers@0.5.15))': + '@swc/jest@0.2.37(@swc/core@1.10.3(@swc/helpers@0.5.15))': dependencies: '@jest/create-cache-key-function': 29.7.0 - '@swc/core': 1.10.1(@swc/helpers@0.5.15) + '@swc/core': 1.10.3(@swc/helpers@0.5.15) '@swc/counter': 0.1.3 jsonc-parser: 3.3.1 @@ -13390,12 +13387,12 @@ snapshots: '@ungap/structured-clone@1.2.1': {} - '@vitejs/plugin-vue@5.2.1(vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.2))': + '@vitejs/plugin-vue@5.2.1(vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2))(vue@3.5.13(typescript@5.7.2))': dependencies: - vite: 6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) + vite: 6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2) vue: 3.5.13(typescript@5.7.2) - '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.2)(happy-dom@15.11.7)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0))': + '@vitest/coverage-v8@2.1.8(vitest@2.1.8(@types/node@22.10.2)(happy-dom@16.0.1)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -13409,7 +13406,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.2)(happy-dom@15.11.7)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0) + vitest: 2.1.8(@types/node@22.10.2)(happy-dom@16.0.1)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0) transitivePeerDependencies: - supports-color @@ -13529,7 +13526,7 @@ snapshots: '@vue/compiler-dom': 3.5.13 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.13 - alien-signals: 0.4.10 + alien-signals: 0.4.11 minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 @@ -13739,7 +13736,7 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alien-signals@0.4.10: {} + alien-signals@0.4.11: {} ansi-colors@4.1.3: {} @@ -14140,12 +14137,12 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bufferutil@4.0.8: + bufferutil@4.0.9: dependencies: node-gyp-build: 4.8.4 optional: true - bullmq@5.34.4: + bullmq@5.34.5: dependencies: cron-parser: 4.9.0 ioredis: 5.4.2 @@ -15063,7 +15060,7 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.1.0 - es-module-lexer@1.5.4: {} + es-module-lexer@1.6.0: {} es-object-atoms@1.0.0: dependencies: @@ -15893,7 +15890,7 @@ snapshots: lowercase-keys: 3.0.0 p-cancelable: 4.0.1 responselike: 3.0.0 - type-fest: 4.30.2 + type-fest: 4.31.0 graceful-fs@4.2.11: {} @@ -15905,9 +15902,8 @@ snapshots: hammerjs@2.0.8: {} - happy-dom@15.11.7: + happy-dom@16.0.1: dependencies: - entities: 4.5.0 webidl-conversions: 7.0.0 whatwg-mimetype: 3.0.0 @@ -15968,7 +15964,7 @@ snapshots: highlight.js@10.7.3: {} - highlight.js@11.11.0: {} + highlight.js@11.11.1: {} hosted-git-info@2.8.9: {} @@ -16767,7 +16763,7 @@ snapshots: jsdoc-type-pratt-parser@4.1.0: {} - jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5): + jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: cssstyle: 4.1.0 data-urls: 5.0.0 @@ -16788,7 +16784,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.1.0 - ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.5) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -17578,7 +17574,7 @@ snapshots: path-to-regexp: 6.3.0 picocolors: 1.1.1 strict-event-emitter: 0.5.1 - type-fest: 4.30.2 + type-fest: 4.31.0 yargs: 17.7.2 optionalDependencies: typescript: 5.7.2 @@ -17856,8 +17852,8 @@ snapshots: oniguruma-to-es@0.8.1: dependencies: emoji-regex-xs: 1.0.0 - regex: 5.0.2 - regex-recursion: 5.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 open@8.4.2: dependencies: @@ -18693,13 +18689,14 @@ snapshots: regenerator-runtime@0.14.1: {} - regex-recursion@5.0.0: + regex-recursion@5.1.1: dependencies: + regex: 5.1.1 regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@5.0.2: + regex@5.1.1: dependencies: regex-utilities: 2.3.0 @@ -19278,22 +19275,22 @@ 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(@storybook/blocks@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/components@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/core-events@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/manager-api@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/preview-api@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/theming@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/types@8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/components@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/core-events@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/manager-api@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/preview-api@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/theming@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(@storybook/types@8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@storybook/blocks': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/components': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/core-events': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/manager-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/preview-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/theming': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) - '@storybook/types': 8.4.7(storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/blocks': 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/components': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/core-events': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/manager-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/preview-api': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/theming': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) + '@storybook/types': 8.4.7(storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5)) optionalDependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - storybook@8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5): + storybook@8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5): dependencies: - '@storybook/core': 8.4.7(bufferutil@4.0.8)(prettier@3.4.2)(utf-8-validate@6.0.5) + '@storybook/core': 8.4.7(bufferutil@4.0.9)(prettier@3.4.2)(utf-8-validate@6.0.5) optionalDependencies: prettier: 3.4.2 transitivePeerDependencies: @@ -19468,7 +19465,7 @@ snapshots: symbol-tree@3.2.4: {} - systeminformation@5.23.21: {} + systeminformation@5.23.23: {} table-layout@4.1.1: dependencies: @@ -19555,11 +19552,11 @@ snapshots: tinyspy@3.0.2: {} - tldts-core@6.1.69: {} + tldts-core@6.1.70: {} - tldts@6.1.69: + tldts@6.1.70: dependencies: - tldts-core: 6.1.69 + tldts-core: 6.1.70 tmp@0.2.3: {} @@ -19586,7 +19583,7 @@ snapshots: tough-cookie@5.0.0: dependencies: - tldts: 6.1.69 + tldts: 6.1.70 tr46@0.0.3: {} @@ -19679,7 +19676,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.30.2: {} + type-fest@4.31.0: {} type-is@1.6.18: dependencies: @@ -19883,7 +19880,7 @@ snapshots: dependencies: diff: 5.2.0 diff-match-patch: 1.0.5 - highlight.js: 11.11.0 + highlight.js: 11.11.1 vue: 3.5.13(typescript@5.7.2) vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) @@ -19920,7 +19917,7 @@ snapshots: dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) - es-module-lexer: 1.5.4 + es-module-lexer: 1.6.0 pathe: 1.1.2 vite: 5.4.11(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0) transitivePeerDependencies: @@ -19947,7 +19944,7 @@ snapshots: sass: 1.83.0 terser: 5.37.0 - vite@6.0.5(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2): + vite@6.0.6(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)(tsx@4.19.2): dependencies: esbuild: 0.24.2 postcss: 8.4.49 @@ -19959,14 +19956,14 @@ snapshots: terser: 5.37.0 tsx: 4.19.2 - vitest-fetch-mock@0.3.0(encoding@0.1.13)(vitest@2.1.8(@types/node@22.10.2)(happy-dom@15.11.7)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0)): + vitest-fetch-mock@0.3.0(encoding@0.1.13)(vitest@2.1.8(@types/node@22.10.2)(happy-dom@16.0.1)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0)): dependencies: cross-fetch: 4.1.0(encoding@0.1.13) - vitest: 2.1.8(@types/node@22.10.2)(happy-dom@15.11.7)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0) + vitest: 2.1.8(@types/node@22.10.2)(happy-dom@16.0.1)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0) transitivePeerDependencies: - encoding - vitest@2.1.8(@types/node@22.10.2)(happy-dom@15.11.7)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0): + vitest@2.1.8(@types/node@22.10.2)(happy-dom@16.0.1)(jsdom@25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(sass@1.83.0)(terser@5.37.0): dependencies: '@vitest/expect': 2.1.8 '@vitest/mocker': 2.1.8(msw@2.7.0(@types/node@22.10.2)(typescript@5.7.2))(vite@5.4.11(@types/node@22.10.2)(sass@1.83.0)(terser@5.37.0)) @@ -19990,8 +19987,8 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.2 - happy-dom: 15.11.7 - jsdom: 25.0.1(bufferutil@4.0.8)(utf-8-validate@6.0.5) + happy-dom: 16.0.1 + jsdom: 25.0.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - less - lightningcss @@ -20257,9 +20254,9 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.5): + ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): optionalDependencies: - bufferutil: 4.0.8 + bufferutil: 4.0.9 utf-8-validate: 6.0.5 xev@3.0.2: {} From ff195d4f8d230ab95bba647ec4346b6e23238f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=82=8F=E3=82=8F=E3=82=8F=E3=81=A8=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E3=82=85?= <17376330+u1-liquid@users.noreply.github.com> Date: Sat, 28 Dec 2024 11:39:48 +0900 Subject: [PATCH 2/6] cleanup(backend): refactor UtilityService (MisskeyIO#858) --- .../backend/src/core/CustomEmojiService.ts | 4 +- packages/backend/src/core/EmailService.ts | 4 +- .../src/core/FederatedInstanceService.ts | 2 +- .../backend/src/core/NoteCreateService.ts | 2 +- packages/backend/src/core/ReactionService.ts | 2 +- .../src/core/RemoteUserResolveService.ts | 6 +-- packages/backend/src/core/SignupService.ts | 2 +- .../backend/src/core/UserFollowingService.ts | 2 +- packages/backend/src/core/UtilityService.ts | 50 ++++++------------- .../core/activitypub/ApDbResolverService.ts | 5 +- .../src/core/activitypub/ApInboxService.ts | 8 +-- .../src/core/activitypub/ApRequestService.ts | 2 +- .../src/core/activitypub/ApResolverService.ts | 8 +-- .../core/activitypub/models/ApNoteService.ts | 25 +++++----- .../activitypub/models/ApPersonService.ts | 49 +++++++++--------- .../backend/src/core/chart/charts/instance.ts | 12 ++--- .../core/entities/DriveFileEntityService.ts | 2 +- .../core/entities/InstanceEntityService.ts | 6 +-- .../processors/DeliverProcessorService.ts | 4 +- .../ImportBlockingProcessorService.ts | 2 +- .../ImportFollowingProcessorService.ts | 2 +- .../ImportMutingProcessorService.ts | 2 +- .../ImportUserListsProcessorService.ts | 2 +- .../queue/processors/InboxProcessorService.ts | 13 +++-- .../api/endpoints/admin/emoji/list-remote.ts | 2 +- .../refresh-remote-instance-metadata.ts | 2 +- .../admin/federation/update-instance.ts | 2 +- .../src/server/api/endpoints/ap/show.ts | 4 +- .../api/endpoints/federation/show-instance.ts | 2 +- .../server/api/endpoints/users/followers.ts | 2 +- .../server/api/endpoints/users/following.ts | 2 +- 31 files changed, 106 insertions(+), 126 deletions(-) diff --git a/packages/backend/src/core/CustomEmojiService.ts b/packages/backend/src/core/CustomEmojiService.ts index 27b85b10b98f..29e543ee3df6 100644 --- a/packages/backend/src/core/CustomEmojiService.ts +++ b/packages/backend/src/core/CustomEmojiService.ts @@ -311,7 +311,7 @@ export class CustomEmojiService implements OnApplicationShutdown { : this.utilityService.isSelfHost(src) ? null // 自ホスト指定 : (src || noteUserHost); // 指定されたホスト || ノートなどの所有者のホスト (こっちがリアクションにマッチすることはない) - host = this.utilityService.toPunyNullable(host); + host = host ? this.utilityService.normalizeHost(host) : null; return host; } @@ -324,7 +324,7 @@ export class CustomEmojiService implements OnApplicationShutdown { const name = match[1]; // ホスト正規化 - const host = this.utilityService.toPunyNullable(this.normalizeHost(match[2], noteUserHost)); + const host = this.normalizeHost(match[2], noteUserHost); return { name, host }; } diff --git a/packages/backend/src/core/EmailService.ts b/packages/backend/src/core/EmailService.ts index 832c2d55ef1f..37c9c736eaf4 100644 --- a/packages/backend/src/core/EmailService.ts +++ b/packages/backend/src/core/EmailService.ts @@ -236,7 +236,7 @@ export class EmailService { } const emailDomain: string = emailAddress.split('@')[1]; - const isBanned = this.utilityService.isBlockedHost(meta.bannedEmailDomains, emailDomain); + const isBanned = this.utilityService.isItemListedIn(emailDomain, meta.bannedEmailDomains); if (isBanned) { return { @@ -304,7 +304,7 @@ export class EmailService { reason: 'mx', }; } - if (json.mx_host?.some(host => this.utilityService.isBlockedHost(meta.bannedEmailDomains, host))) { + if (json.mx_host?.some(host => this.utilityService.isItemListedIn(host, meta.bannedEmailDomains))) { return { valid: false, reason: 'mx', diff --git a/packages/backend/src/core/FederatedInstanceService.ts b/packages/backend/src/core/FederatedInstanceService.ts index 66db2067d9f8..5b267ebc2548 100644 --- a/packages/backend/src/core/FederatedInstanceService.ts +++ b/packages/backend/src/core/FederatedInstanceService.ts @@ -47,7 +47,7 @@ export class FederatedInstanceService implements OnApplicationShutdown { @bindThis public async fetch(host: string): Promise { - host = this.utilityService.toPuny(host); + host = this.utilityService.normalizeHost(host); const cached = await this.federatedInstanceCache.get(host); if (cached) return cached; diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts index 20c7f3e2b75a..ea8b9432f522 100644 --- a/packages/backend/src/core/NoteCreateService.ts +++ b/packages/backend/src/core/NoteCreateService.ts @@ -285,7 +285,7 @@ export class NoteCreateService implements OnApplicationShutdown { throw new IdentifiableError('689ee33f-f97c-479a-ac49-1b9f8140af99', 'Notes including prohibited words are not allowed.'); } - const inSilencedInstance = this.utilityService.isSilencedHost(meta.silencedHosts, user.host); + const inSilencedInstance = this.utilityService.isItemListedIn(user.host, meta.silencedHosts); if (data.visibility === 'public' && inSilencedInstance && user.host !== null) { data.visibility = 'home'; diff --git a/packages/backend/src/core/ReactionService.ts b/packages/backend/src/core/ReactionService.ts index 59e8fa8f62c2..2e5ca049bffd 100644 --- a/packages/backend/src/core/ReactionService.ts +++ b/packages/backend/src/core/ReactionService.ts @@ -129,7 +129,7 @@ export class ReactionService { } else if (_reaction) { const custom = reaction.match(isCustomEmojiRegexp); if (custom) { - const reacterHost = this.utilityService.toPunyNullable(user.host); + const reacterHost = user.host ? this.utilityService.normalizeHost(user.host) : null; const name = custom[1]; const emoji = reacterHost == null diff --git a/packages/backend/src/core/RemoteUserResolveService.ts b/packages/backend/src/core/RemoteUserResolveService.ts index c7f5effd2e8f..d9d97458ffc9 100644 --- a/packages/backend/src/core/RemoteUserResolveService.ts +++ b/packages/backend/src/core/RemoteUserResolveService.ts @@ -54,9 +54,7 @@ export class RemoteUserResolveService { }) as MiLocalUser; } - host = this.utilityService.toPuny(host); - - if (host === this.utilityService.toPuny(this.config.host)) { + if (this.utilityService.isSelfHost(host)) { this.logger.info(`return local user: ${usernameLower}`); return await this.usersRepository.findOneBy({ usernameLower, host: IsNull() }).then(u => { if (u == null) { @@ -67,6 +65,8 @@ export class RemoteUserResolveService { }) as MiLocalUser; } + host = this.utilityService.normalizeHost(host); + const user = await this.usersRepository.findOneBy({ usernameLower, host }) as MiRemoteUser | null; const acctLower = `${usernameLower}@${host}`; diff --git a/packages/backend/src/core/SignupService.ts b/packages/backend/src/core/SignupService.ts index 76c1dc322b8a..514b0d2b2eb5 100644 --- a/packages/backend/src/core/SignupService.ts +++ b/packages/backend/src/core/SignupService.ts @@ -141,7 +141,7 @@ export class SignupService { id: this.idService.gen(), username: username, usernameLower: username.toLowerCase(), - host: this.utilityService.toPunyNullable(host), + host: host ? this.utilityService.normalizeHost(host) : null, token: secret, isRoot: isTheFirstUser, })); diff --git a/packages/backend/src/core/UserFollowingService.ts b/packages/backend/src/core/UserFollowingService.ts index 753eb3592eab..5a32484581f5 100644 --- a/packages/backend/src/core/UserFollowingService.ts +++ b/packages/backend/src/core/UserFollowingService.ts @@ -173,7 +173,7 @@ export class UserFollowingService implements OnModuleInit { followee.isLocked || (followeeProfile.carefulBot && follower.isBot) || (this.userEntityService.isLocalUser(follower) && this.userEntityService.isRemoteUser(followee) && process.env.FORCE_FOLLOW_REMOTE_USER_FOR_TESTING !== 'true') || - (this.userEntityService.isLocalUser(followee) && this.userEntityService.isRemoteUser(follower) && this.utilityService.isSilencedHost((await this.metaService.fetch()).silencedHosts, follower.host)) + (this.userEntityService.isLocalUser(followee) && this.userEntityService.isRemoteUser(follower) && this.utilityService.isItemListedIn(follower.host, (await this.metaService.fetch()).silencedHosts)) ) { let autoAccept = false; diff --git a/packages/backend/src/core/UtilityService.ts b/packages/backend/src/core/UtilityService.ts index 7d3a74cf578d..2b35e86f4eb8 100644 --- a/packages/backend/src/core/UtilityService.ts +++ b/packages/backend/src/core/UtilityService.ts @@ -5,8 +5,8 @@ import { URL } from 'node:url'; import punycode from 'punycode.js'; -import { Inject, Injectable } from '@nestjs/common'; import RE2 from 're2'; +import { Inject, Injectable } from '@nestjs/common'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; import { bindThis } from '@/decorators.js'; @@ -21,36 +21,26 @@ export class UtilityService { @bindThis public getFullApAccount(username: string, host: string | null): string { - return host ? `${username}@${this.toPuny(host)}` : `${username}@${this.toPuny(this.config.host)}`; + return host ? `${username}@${this.normalizeHost(host)}` : `${username}@${this.normalizeHost(this.config.host)}`; } @bindThis public isSelfHost(host: string | null): boolean { if (host == null) return true; - return this.toPuny(this.config.host) === this.toPuny(host); + return this.normalizeHost(this.config.host) === this.normalizeHost(host); } @bindThis public isUriLocal(uri: string): boolean { - return this.punyHost(uri) === this.toPuny(this.config.host); - } - - @bindThis - public isBlockedHost(blockedHosts: string[], host: string | null): boolean { - if (host == null) return false; - return blockedHosts.some(x => `.${host.toLowerCase()}`.endsWith(`.${x}`)); - } - - @bindThis - public isSilencedHost(silencedHosts: string[] | undefined, host: string | null): boolean { - if (!silencedHosts || host == null) return false; - return silencedHosts.some(x => `.${host.toLowerCase()}`.endsWith(`.${x}`)); + return this.normalizeHost(this.config.hostname) === this.extractHost(uri); } @bindThis - public isSensitiveMediaHost(sensitiveMediaHosts: string[] | undefined, host: string | null): boolean { - if (!sensitiveMediaHosts || host == null) return false; - return sensitiveMediaHosts.some(x => `.${host.toLowerCase()}`.endsWith(`.${x}`)); + public isItemListedIn(item: string | null, list: string[] | undefined): boolean { + if (!list || !item) return false; + list = list.map(x => '.' + this.normalizeHost(x).split(':')[0]); + item = '.' + this.normalizeHost(item).split(':')[0]; + return list.some(x => item.endsWith(x)); } @bindThis @@ -93,26 +83,14 @@ export class UtilityService { } @bindThis - public extractDbHost(uri: string): string { - const url = new URL(uri); - return this.toPuny(url.host); - } - - @bindThis - public toPuny(host: string): string { - return punycode.toASCII(host.toLowerCase()); - } - - @bindThis - public toPunyNullable(host: string | null | undefined): string | null { - if (host == null) return null; + public normalizeHost(host: string): string { return punycode.toASCII(host.toLowerCase()); } @bindThis - public punyHost(url: string): string { - const urlObj = new URL(url); - const host = `${this.toPuny(urlObj.hostname)}${urlObj.port.length > 0 ? ':' + urlObj.port : ''}`; - return host; + public extractHost(uri: string): string { + // ASCII String で返されるので punycode 化はいらない + // ref: https://url.spec.whatwg.org/#host-serializing + return new URL(uri).host; } } diff --git a/packages/backend/src/core/activitypub/ApDbResolverService.ts b/packages/backend/src/core/activitypub/ApDbResolverService.ts index 5c16744a7750..427dc5f816d0 100644 --- a/packages/backend/src/core/activitypub/ApDbResolverService.ts +++ b/packages/backend/src/core/activitypub/ApDbResolverService.ts @@ -64,8 +64,9 @@ export class ApDbResolverService implements OnApplicationShutdown { public parseUri(value: string | IObject): UriParseResult { const separator = '/'; - const uri = new URL(getApId(value)); - if (this.utilityService.toPuny(uri.host) !== this.utilityService.toPuny(this.config.host)) { + const apId = getApId(value); + const uri = new URL(apId); + if (!this.utilityService.isUriLocal(apId)) { return { local: false, uri: uri.href }; } diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts index 4d0342752989..9542eabe572e 100644 --- a/packages/backend/src/core/activitypub/ApInboxService.ts +++ b/packages/backend/src/core/activitypub/ApInboxService.ts @@ -100,12 +100,12 @@ export class ApInboxService { const items = toArray(isCollection(activity) ? activity.items : activity.orderedItems); if (items.length >= resolver.getRecursionLimit()) { - throw new Error(`skipping activity: collection would surpass recursion limit: ${this.utilityService.extractDbHost(actor.uri)}`); + throw new Error(`skipping activity: collection would surpass recursion limit: ${this.utilityService.extractHost(actor.uri)}`); } for (const item of items) { const act = await resolver.resolve(item); - if (act.id == null || this.utilityService.extractDbHost(act.id) !== this.utilityService.extractDbHost(actor.uri)) { + if (act.id == null || this.utilityService.extractHost(act.id) !== this.utilityService.extractHost(actor.uri)) { this.logger.warn('skipping activity: activity id is null or mismatching'); continue; } @@ -310,7 +310,7 @@ export class ApInboxService { // アナウンス先をブロックしてたら中断 const meta = await this.metaService.fetch(); - if (this.utilityService.isBlockedHost(meta.blockedHosts, this.utilityService.extractDbHost(uri))) return 'skip: blocked host'; + if (this.utilityService.isItemListedIn(this.utilityService.extractHost(uri), meta.blockedHosts)) return 'skip: blocked host'; const unlock = await this.appLockService.getApLock(uri); @@ -432,7 +432,7 @@ export class ApInboxService { } if (typeof note.id === 'string') { - if (this.utilityService.extractDbHost(actor.uri) !== this.utilityService.extractDbHost(note.id)) { + if (this.utilityService.extractHost(actor.uri) !== this.utilityService.extractHost(note.id)) { return 'skip: host in actor.uri !== note.id'; } } else { diff --git a/packages/backend/src/core/activitypub/ApRequestService.ts b/packages/backend/src/core/activitypub/ApRequestService.ts index f59fabba3c7d..4e4d7e8d523e 100644 --- a/packages/backend/src/core/activitypub/ApRequestService.ts +++ b/packages/backend/src/core/activitypub/ApRequestService.ts @@ -220,7 +220,7 @@ export class ApRequestService { const alternate = fragment.querySelector('head > link[rel="alternate"][type="application/activity+json"]'); if (alternate) { const href = alternate.getAttribute('href'); - if (href && this.utilityService.punyHost(url) === this.utilityService.punyHost(href)) { + if (href && this.utilityService.extractHost(url) === this.utilityService.extractHost(href)) { return await this.signedGet(href, user, false); } } diff --git a/packages/backend/src/core/activitypub/ApResolverService.ts b/packages/backend/src/core/activitypub/ApResolverService.ts index 000f9d59f26e..2e00d98d14b5 100644 --- a/packages/backend/src/core/activitypub/ApResolverService.ts +++ b/packages/backend/src/core/activitypub/ApResolverService.ts @@ -89,18 +89,18 @@ export class Resolver { } if (this.history.size > this.recursionLimit) { - throw new Error(`hit recursion limit: ${this.utilityService.extractDbHost(value)}`); + throw new Error(`hit recursion limit: ${this.utilityService.extractHost(value)}`); } this.history.add(value); - const host = this.utilityService.extractDbHost(value); + const host = this.utilityService.extractHost(value); if (this.utilityService.isSelfHost(host)) { return await this.resolveLocal(value); } const meta = await this.metaService.fetch(); - if (this.utilityService.isBlockedHost(meta.blockedHosts, host)) { + if (this.utilityService.isItemListedIn(host, meta.blockedHosts)) { throw new Error('Instance is blocked'); } @@ -128,7 +128,7 @@ export class Resolver { throw new Error('invalid AP object: missing id'); } - if (this.utilityService.punyHost(object.id) !== this.utilityService.punyHost(value)) { + if (this.utilityService.extractHost(object.id) !== this.utilityService.extractHost(value)) { throw new Error(`invalid AP object ${value}: id ${object.id} has different host`); } diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts index 3ce588e18c03..8bba1994e694 100644 --- a/packages/backend/src/core/activitypub/models/ApNoteService.ts +++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts @@ -81,20 +81,21 @@ export class ApNoteService { @bindThis public validateNote(object: IObject, uri: string, actor?: MiRemoteUser): Error | null { - const expectHost = this.utilityService.extractDbHost(uri); + const expectedHost = this.utilityService.extractHost(uri); const apType = getApType(object); if (apType == null || !validPost.includes(apType)) { return new IdentifiableError('d450b8a9-48e4-4dab-ae36-f4db763fda7c', `invalid Note: invalid object type ${apType ?? 'undefined'}`); } - if (object.id && this.utilityService.extractDbHost(object.id) !== expectHost) { - return new IdentifiableError('d450b8a9-48e4-4dab-ae36-f4db763fda7c', `invalid Note: id has different host. expected: ${expectHost}, actual: ${this.utilityService.extractDbHost(object.id)}`); + let actualHost = object.id && this.utilityService.extractHost(object.id); + if (actualHost && expectedHost !== actualHost) { + return new IdentifiableError('d450b8a9-48e4-4dab-ae36-f4db763fda7c', `invalid Note: id has different host. expected: ${expectedHost}, actual: ${actualHost}`); } - const actualHost = object.attributedTo && this.utilityService.extractDbHost(getOneApId(object.attributedTo)); - if (object.attributedTo && actualHost !== expectHost) { - return new IdentifiableError('d450b8a9-48e4-4dab-ae36-f4db763fda7c', `invalid Note: attributedTo has different host. expected: ${expectHost}, actual: ${actualHost}`); + actualHost = object.attributedTo && this.utilityService.extractHost(getOneApId(object.attributedTo)); + if (actualHost && expectedHost !== actualHost) { + return new IdentifiableError('d450b8a9-48e4-4dab-ae36-f4db763fda7c', `invalid Note: attributedTo has different host. expected: ${expectedHost}, actual: ${actualHost}`); } if (object.published && !this.idService.isSafeT(new Date(object.published).valueOf())) { @@ -165,8 +166,8 @@ export class ApNoteService { throw new Error('unexpected schema of note url: ' + url); } - if (this.utilityService.punyHost(url) !== this.utilityService.punyHost(note.id)) { - throw new Error(`note url & uri host mismatch: note url: ${url}, note uri: ${note.id}`); + if (this.utilityService.extractHost(note.id) !== this.utilityService.extractHost(url)) { + throw new Error(`note id and url have different host: ${note.id} - ${url}`); } } @@ -234,7 +235,7 @@ export class ApNoteService { } } - const isSensitiveMediaHost = this.utilityService.isSensitiveMediaHost(meta.sensitiveMediaHosts, this.utilityService.extractDbHost(note.id ?? entryUri)); + const isSensitiveMediaHost = this.utilityService.isItemListedIn(this.utilityService.extractHost(note.id ?? entryUri), meta.sensitiveMediaHosts); // 添付ファイル const files: MiDriveFile[] = []; @@ -349,7 +350,7 @@ export class ApNoteService { this.logger.info('The note is already inserted while creating itself, reading again'); const duplicate = await this.fetchNote(value); if (!duplicate) { - throw new Error('The note creation failed with duplication error even when there is no duplication'); + throw new Error(`The note creation failed with duplication error even when there is no duplication: ${entryUri}`); } return duplicate; } @@ -367,7 +368,7 @@ export class ApNoteService { // ブロックしていたら中断 const meta = await this.metaService.fetch(); - if (this.utilityService.isBlockedHost(meta.blockedHosts, this.utilityService.extractDbHost(uri))) { + if (this.utilityService.isItemListedIn(this.utilityService.extractHost(uri), meta.blockedHosts)) { throw new StatusError('blocked host', 451); } @@ -396,7 +397,7 @@ export class ApNoteService { @bindThis public async extractEmojis(tags: IObject | IObject[], host: string): Promise { // eslint-disable-next-line no-param-reassign - host = this.utilityService.toPuny(host); + host = this.utilityService.normalizeHost(host); const eomjiTags = toArray(tags).filter(isEmoji); diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts index 88c2dc5d2b5e..cbebdfebd2dc 100644 --- a/packages/backend/src/core/activitypub/models/ApPersonService.ts +++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts @@ -137,7 +137,7 @@ export class ApPersonService implements OnModuleInit { */ @bindThis private validateActor(x: IObject, uri: string): IActor { - const expectHost = this.utilityService.punyHost(uri); + const expectedHost = this.utilityService.extractHost(uri); if (!isActor(x)) { throw new Error(`invalid Actor type '${x.type}'`); @@ -151,15 +151,18 @@ export class ApPersonService implements OnModuleInit { throw new Error('invalid Actor: wrong inbox'); } - if (this.utilityService.punyHost(x.inbox) !== expectHost) { - throw new Error('invalid Actor: inbox has different host'); + let actualHost = this.utilityService.extractHost(x.inbox); + if (expectedHost !== actualHost) { + throw new Error(`invalid Actor: inbox has different host. expected: ${expectedHost}, actual: ${actualHost}`); } const sharedInboxObject = x.sharedInbox ?? (x.endpoints ? x.endpoints.sharedInbox : undefined); if (sharedInboxObject != null) { const sharedInbox = getApId(sharedInboxObject); - if (!(typeof sharedInbox === 'string' && sharedInbox.length > 0 && this.utilityService.punyHost(sharedInbox) === expectHost)) { - throw new Error('invalid Actor: wrong shared inbox'); + if (!sharedInbox) throw new Error('invalid Actor: wrong shared inbox'); + actualHost = this.utilityService.extractHost(sharedInbox); + if (expectedHost !== actualHost) { + throw new Error(`invalid Actor: shared inbox has different host. expected: ${expectedHost}, actual: ${actualHost}`); } } @@ -167,12 +170,10 @@ export class ApPersonService implements OnModuleInit { const xCollection = (x as IActor)[collection]; if (xCollection != null) { const collectionUri = getApId(xCollection); - if (typeof collectionUri === 'string' && collectionUri.length > 0) { - if (this.utilityService.punyHost(collectionUri) !== expectHost) { - throw new Error(`invalid Actor: ${collection} has different host`); - } - } else if (collectionUri != null) { - throw new Error(`invalid Actor: wrong ${collection}`); + if (!collectionUri) throw new Error(`invalid Actor: wrong ${collection}`); + actualHost = this.utilityService.extractHost(collectionUri); + if (expectedHost !== actualHost) { + throw new Error(`invalid Actor: ${collection} has different host. expected: ${expectedHost}, actual: ${actualHost}`); } } } @@ -200,9 +201,9 @@ export class ApPersonService implements OnModuleInit { x.summary = truncate(x.summary, summaryLength); } - const idHost = this.utilityService.punyHost(x.id); - if (idHost !== expectHost) { - throw new Error('invalid Actor: id has different host'); + actualHost = this.utilityService.extractHost(x.id); + if (expectedHost !== actualHost) { + throw new Error(`invalid Actor: id has different host. expected: ${expectedHost}, actual: ${actualHost}`); } if (x.publicKey) { @@ -210,9 +211,9 @@ export class ApPersonService implements OnModuleInit { throw new Error('invalid Actor: publicKey.id is not a string'); } - const publicKeyIdHost = this.utilityService.punyHost(x.publicKey.id); - if (publicKeyIdHost !== expectHost) { - throw new Error('invalid Actor: publicKey.id has different host'); + actualHost = this.utilityService.extractHost(x.publicKey.id); + if (expectedHost !== actualHost) { + throw new Error(`invalid Actor: publicKey.id has different host. expected: ${expectedHost}, actual: ${actualHost}`); } } @@ -258,7 +259,7 @@ export class ApPersonService implements OnModuleInit { if (Array.isArray(img)) { img = img.find(item => item && item.url) ?? null; } - + // if we have an explicitly missing image, return an // explicitly-null set of values if ((img == null) || (typeof img === 'object' && img.url == null)) { @@ -296,8 +297,7 @@ export class ApPersonService implements OnModuleInit { public async createPerson(uri: string, resolver?: Resolver): Promise { if (typeof uri !== 'string') throw new Error('uri is not string'); - const host = this.utilityService.punyHost(uri); - if (host === this.utilityService.toPuny(this.config.host)) { + if (this.utilityService.isUriLocal(uri)) { throw new StatusError('cannot resolve local user', 400, 'cannot resolve local user'); } @@ -345,13 +345,14 @@ export class ApPersonService implements OnModuleInit { throw new Error('unexpected schema of person url: ' + url); } - if (this.utilityService.punyHost(url) !== this.utilityService.punyHost(person.id)) { - throw new Error(`person url <> uri host mismatch: ${url} <> ${person.id}`); + if (this.utilityService.extractHost(person.id) !== this.utilityService.extractHost(url)) { + throw new Error(`person id and url have different host: ${person.id} - ${url}`); } } // Create user let user: MiRemoteUser | null = null; + const host = this.utilityService.extractHost(uri); //#region カスタム絵文字取得 const emojis = await this.apNoteService.extractEmojis(person.tag ?? [], host) @@ -542,8 +543,8 @@ export class ApPersonService implements OnModuleInit { throw new Error('unexpected schema of person url: ' + url); } - if (this.utilityService.punyHost(url) !== this.utilityService.punyHost(person.id)) { - throw new Error(`person url <> uri host mismatch: ${url} <> ${person.id}`); + if (this.utilityService.extractHost(person.id) !== this.utilityService.extractHost(url)) { + throw new Error(`person id and url have different host: ${person.id} - ${url}`); } } diff --git a/packages/backend/src/core/chart/charts/instance.ts b/packages/backend/src/core/chart/charts/instance.ts index 97f3bc6f2bd1..037c4dd08281 100644 --- a/packages/backend/src/core/chart/charts/instance.ts +++ b/packages/backend/src/core/chart/charts/instance.ts @@ -77,7 +77,7 @@ export default class InstanceChart extends Chart { // eslint-disa public async requestReceived(host: string): Promise { await this.commit({ 'requests.received': 1, - }, this.utilityService.toPuny(host)); + }, this.utilityService.normalizeHost(host)); } @bindThis @@ -85,7 +85,7 @@ export default class InstanceChart extends Chart { // eslint-disa await this.commit({ 'requests.succeeded': isSucceeded ? 1 : 0, 'requests.failed': isSucceeded ? 0 : 1, - }, this.utilityService.toPuny(host)); + }, this.utilityService.normalizeHost(host)); } @bindThis @@ -93,7 +93,7 @@ export default class InstanceChart extends Chart { // eslint-disa await this.commit({ 'users.total': 1, 'users.inc': 1, - }, this.utilityService.toPuny(host)); + }, this.utilityService.normalizeHost(host)); } @bindThis @@ -106,7 +106,7 @@ export default class InstanceChart extends Chart { // eslint-disa 'notes.diffs.renote': note.renoteId != null ? (isAdditional ? 1 : -1) : 0, 'notes.diffs.reply': note.replyId != null ? (isAdditional ? 1 : -1) : 0, 'notes.diffs.withFile': note.fileIds.length > 0 ? (isAdditional ? 1 : -1) : 0, - }, this.utilityService.toPuny(host)); + }, this.utilityService.normalizeHost(host)); } @bindThis @@ -115,7 +115,7 @@ export default class InstanceChart extends Chart { // eslint-disa 'following.total': isAdditional ? 1 : -1, 'following.inc': isAdditional ? 1 : 0, 'following.dec': isAdditional ? 0 : 1, - }, this.utilityService.toPuny(host)); + }, this.utilityService.normalizeHost(host)); } @bindThis @@ -124,7 +124,7 @@ export default class InstanceChart extends Chart { // eslint-disa 'followers.total': isAdditional ? 1 : -1, 'followers.inc': isAdditional ? 1 : 0, 'followers.dec': isAdditional ? 0 : 1, - }, this.utilityService.toPuny(host)); + }, this.utilityService.normalizeHost(host)); } @bindThis diff --git a/packages/backend/src/core/entities/DriveFileEntityService.ts b/packages/backend/src/core/entities/DriveFileEntityService.ts index 75e4dda50594..289f267c4b3a 100644 --- a/packages/backend/src/core/entities/DriveFileEntityService.ts +++ b/packages/backend/src/core/entities/DriveFileEntityService.ts @@ -158,7 +158,7 @@ export class DriveFileEntityService { public async calcDriveUsageOfHost(host: string): Promise { const { sum } = await this.driveFilesRepository .createQueryBuilder('file') - .where('file.userHost = :host', { host: this.utilityService.toPuny(host) }) + .where('file.userHost = :host', { host: this.utilityService.normalizeHost(host) }) .andWhere('file.isLink = FALSE') .select('SUM(file.size)', 'sum') .getRawOne(); diff --git a/packages/backend/src/core/entities/InstanceEntityService.ts b/packages/backend/src/core/entities/InstanceEntityService.ts index c63f3ca5e42f..bbe48c0333e7 100644 --- a/packages/backend/src/core/entities/InstanceEntityService.ts +++ b/packages/backend/src/core/entities/InstanceEntityService.ts @@ -40,7 +40,7 @@ export class InstanceEntityService { followersCount: instance.followersCount, isNotResponding: instance.isNotResponding, isSuspended: instance.isSuspended, - isBlocked: this.utilityService.isBlockedHost(meta.blockedHosts, instance.host), + isBlocked: this.utilityService.isItemListedIn(instance.host, meta.blockedHosts), softwareName: instance.softwareName, softwareVersion: instance.softwareVersion, openRegistrations: instance.openRegistrations, @@ -48,8 +48,8 @@ export class InstanceEntityService { description: instance.description, maintainerName: instance.maintainerName, maintainerEmail: instance.maintainerEmail, - isSilenced: this.utilityService.isSilencedHost(meta.silencedHosts, instance.host), - isSensitiveMedia: this.utilityService.isSensitiveMediaHost(meta.sensitiveMediaHosts, instance.host), + isSilenced: this.utilityService.isItemListedIn(instance.host, meta.silencedHosts), + isSensitiveMedia: this.utilityService.isItemListedIn(instance.host, meta.sensitiveMediaHosts), iconUrl: instance.iconUrl, faviconUrl: instance.faviconUrl, themeColor: instance.themeColor, diff --git a/packages/backend/src/queue/processors/DeliverProcessorService.ts b/packages/backend/src/queue/processors/DeliverProcessorService.ts index 6f0cd718ddbf..378b9e17c86e 100644 --- a/packages/backend/src/queue/processors/DeliverProcessorService.ts +++ b/packages/backend/src/queue/processors/DeliverProcessorService.ts @@ -53,7 +53,7 @@ export class DeliverProcessorService { // ブロックしてたら中断 const meta = await this.metaService.fetch(); - if (this.utilityService.isBlockedHost(meta.blockedHosts, this.utilityService.toPuny(host))) { + if (this.utilityService.isItemListedIn(host, meta.blockedHosts)) { return 'skip (blocked)'; } @@ -67,7 +67,7 @@ export class DeliverProcessorService { }); this.suspendedHostsCache.set(suspendedHosts); } - if (suspendedHosts.map(x => x.host).includes(this.utilityService.toPuny(host))) { + if (suspendedHosts.map(x => x.host).includes(this.utilityService.normalizeHost(host))) { return 'skip (suspended)'; } diff --git a/packages/backend/src/queue/processors/ImportBlockingProcessorService.ts b/packages/backend/src/queue/processors/ImportBlockingProcessorService.ts index b78229c648e3..1a9a2b717156 100644 --- a/packages/backend/src/queue/processors/ImportBlockingProcessorService.ts +++ b/packages/backend/src/queue/processors/ImportBlockingProcessorService.ts @@ -76,7 +76,7 @@ export class ImportBlockingProcessorService { host: IsNull(), usernameLower: username.toLowerCase(), }) : await this.usersRepository.findOneBy({ - host: this.utilityService.toPuny(host), + host: this.utilityService.normalizeHost(host), usernameLower: username.toLowerCase(), }); diff --git a/packages/backend/src/queue/processors/ImportFollowingProcessorService.ts b/packages/backend/src/queue/processors/ImportFollowingProcessorService.ts index 70c9f3a09679..7129bb40d0dc 100644 --- a/packages/backend/src/queue/processors/ImportFollowingProcessorService.ts +++ b/packages/backend/src/queue/processors/ImportFollowingProcessorService.ts @@ -76,7 +76,7 @@ export class ImportFollowingProcessorService { host: IsNull(), usernameLower: username.toLowerCase(), }) : await this.usersRepository.findOneBy({ - host: this.utilityService.toPuny(host), + host: this.utilityService.normalizeHost(host), usernameLower: username.toLowerCase(), }); diff --git a/packages/backend/src/queue/processors/ImportMutingProcessorService.ts b/packages/backend/src/queue/processors/ImportMutingProcessorService.ts index ec9d2b6c4ce5..6088904cbd77 100644 --- a/packages/backend/src/queue/processors/ImportMutingProcessorService.ts +++ b/packages/backend/src/queue/processors/ImportMutingProcessorService.ts @@ -71,7 +71,7 @@ export class ImportMutingProcessorService { host: IsNull(), usernameLower: username.toLowerCase(), }) : await this.usersRepository.findOneBy({ - host: this.utilityService.toPuny(host), + host: this.utilityService.normalizeHost(host), usernameLower: username.toLowerCase(), }); diff --git a/packages/backend/src/queue/processors/ImportUserListsProcessorService.ts b/packages/backend/src/queue/processors/ImportUserListsProcessorService.ts index a5992c28c846..cdd070a1ad1a 100644 --- a/packages/backend/src/queue/processors/ImportUserListsProcessorService.ts +++ b/packages/backend/src/queue/processors/ImportUserListsProcessorService.ts @@ -90,7 +90,7 @@ export class ImportUserListsProcessorService { host: IsNull(), usernameLower: username.toLowerCase(), }) : await this.usersRepository.findOneBy({ - host: this.utilityService.toPuny(host!), + host: this.utilityService.normalizeHost(host!), usernameLower: username.toLowerCase(), }); diff --git a/packages/backend/src/queue/processors/InboxProcessorService.ts b/packages/backend/src/queue/processors/InboxProcessorService.ts index 70f3e30c5c49..beef889fc9dc 100644 --- a/packages/backend/src/queue/processors/InboxProcessorService.ts +++ b/packages/backend/src/queue/processors/InboxProcessorService.ts @@ -3,7 +3,6 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { URL } from 'node:url'; import { Injectable, OnApplicationShutdown } from '@nestjs/common'; import httpSignature from '@peertube/http-signature'; import * as Bull from 'bullmq'; @@ -65,11 +64,11 @@ export class InboxProcessorService implements OnApplicationShutdown { this.logger.debug(JSON.stringify(info, null, 2)); //#endregion - const host = this.utilityService.toPuny(new URL(signature.keyId).hostname); + const host = this.utilityService.extractHost(signature.keyId); // ブロックしてたら中断 const meta = await this.metaService.fetch(); - if (this.utilityService.isBlockedHost(meta.blockedHosts, host)) { + if (this.utilityService.isItemListedIn(host, meta.blockedHosts)) { return `Blocked request: ${host}`; } @@ -164,8 +163,8 @@ export class InboxProcessorService implements OnApplicationShutdown { } // ブロックしてたら中断 - const ldHost = this.utilityService.extractDbHost(authUser.user.uri); - if (this.utilityService.isBlockedHost(meta.blockedHosts, ldHost)) { + const ldHost = this.utilityService.extractHost(authUser.user.uri); + if (this.utilityService.isItemListedIn(ldHost, meta.blockedHosts)) { throw new Bull.UnrecoverableError(`Blocked request: ${ldHost}`); } } else { @@ -175,8 +174,8 @@ export class InboxProcessorService implements OnApplicationShutdown { // activity.idがあればホストが署名者のホストであることを確認する if (typeof activity.id === 'string') { - const signerHost = this.utilityService.extractDbHost(authUser.user.uri!); - const activityIdHost = this.utilityService.extractDbHost(activity.id); + const signerHost = this.utilityService.extractHost(authUser.user.uri!); + const activityIdHost = this.utilityService.extractHost(activity.id); if (signerHost !== activityIdHost) { throw new Bull.UnrecoverableError(`skip: signerHost(${signerHost}) !== activity.id host(${activityIdHost}`); } diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts b/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts index 12bb914bee0c..779cd375cfc6 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts @@ -94,7 +94,7 @@ export default class extends Endpoint { // eslint- if (ps.host == null) { q.andWhere('emoji.host IS NOT NULL'); } else { - q.andWhere('emoji.host = :host', { host: this.utilityService.toPuny(ps.host) }); + q.andWhere('emoji.host = :host', { host: this.utilityService.normalizeHost(ps.host) }); } if (ps.query) { diff --git a/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts b/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts index 556e291025d9..6c4e835fac4e 100644 --- a/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts +++ b/packages/backend/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts @@ -36,7 +36,7 @@ export default class extends Endpoint { // eslint- private fetchInstanceMetadataService: FetchInstanceMetadataService, ) { super(meta, paramDef, async (ps, me) => { - const instance = await this.instancesRepository.findOneBy({ host: this.utilityService.toPuny(ps.host) }); + const instance = await this.instancesRepository.findOneBy({ host: this.utilityService.normalizeHost(ps.host) }); if (instance == null) { throw new Error('instance not found'); diff --git a/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts b/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts index 0bcdc2a4b81e..e2f1ff6efe1c 100644 --- a/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts +++ b/packages/backend/src/server/api/endpoints/admin/federation/update-instance.ts @@ -40,7 +40,7 @@ export default class extends Endpoint { // eslint- private moderationLogService: ModerationLogService, ) { super(meta, paramDef, async (ps, me) => { - const instance = await this.instancesRepository.findOneBy({ host: this.utilityService.toPuny(ps.host) }); + const instance = await this.instancesRepository.findOneBy({ host: this.utilityService.normalizeHost(ps.host) }); if (instance == null) { throw new Error('instance not found'); diff --git a/packages/backend/src/server/api/endpoints/ap/show.ts b/packages/backend/src/server/api/endpoints/ap/show.ts index cc7e24515688..889c2193335c 100644 --- a/packages/backend/src/server/api/endpoints/ap/show.ts +++ b/packages/backend/src/server/api/endpoints/ap/show.ts @@ -114,7 +114,7 @@ export default class extends Endpoint { // eslint- private async fetchAny(uri: string, me: MiLocalUser | null | undefined): Promise | null> { // ブロックしてたら中断 const fetchedMeta = await this.metaService.fetch(); - if (this.utilityService.isBlockedHost(fetchedMeta.blockedHosts, this.utilityService.extractDbHost(uri))) return null; + if (this.utilityService.isItemListedIn(this.utilityService.extractHost(uri), fetchedMeta.blockedHosts)) return null; let local = await this.mergePack(me, ...await Promise.all([ this.apDbResolverService.getUserFromApId(uri), @@ -122,7 +122,7 @@ export default class extends Endpoint { // eslint- ])); if (local != null) return local; - const host = this.utilityService.extractDbHost(uri); + const host = this.utilityService.extractHost(uri); // local object, not found in db? fail if (this.utilityService.isSelfHost(host)) return null; diff --git a/packages/backend/src/server/api/endpoints/federation/show-instance.ts b/packages/backend/src/server/api/endpoints/federation/show-instance.ts index 2972861a4bae..3133ce7e49de 100644 --- a/packages/backend/src/server/api/endpoints/federation/show-instance.ts +++ b/packages/backend/src/server/api/endpoints/federation/show-instance.ts @@ -41,7 +41,7 @@ export default class extends Endpoint { // eslint- ) { super(meta, paramDef, async (ps, me) => { const instance = await this.instancesRepository - .findOneBy({ host: this.utilityService.toPuny(ps.host) }); + .findOneBy({ host: this.utilityService.normalizeHost(ps.host) }); return instance ? await this.instanceEntityService.pack(instance, me) : null; }); diff --git a/packages/backend/src/server/api/endpoints/users/followers.ts b/packages/backend/src/server/api/endpoints/users/followers.ts index a8b4319a61c1..397487b678df 100644 --- a/packages/backend/src/server/api/endpoints/users/followers.ts +++ b/packages/backend/src/server/api/endpoints/users/followers.ts @@ -87,7 +87,7 @@ export default class extends Endpoint { // eslint- super(meta, paramDef, async (ps, me) => { const user = await this.usersRepository.findOneBy(ps.userId != null ? { id: ps.userId } - : { usernameLower: ps.username!.toLowerCase(), host: this.utilityService.toPunyNullable(ps.host) ?? IsNull() }); + : { usernameLower: ps.username!.toLowerCase(), host: ps.host ? this.utilityService.normalizeHost(ps.host) : IsNull() }); if (user == null) { throw new ApiError(meta.errors.noSuchUser); diff --git a/packages/backend/src/server/api/endpoints/users/following.ts b/packages/backend/src/server/api/endpoints/users/following.ts index ee2e17a0e6a6..1fd94c4bdcca 100644 --- a/packages/backend/src/server/api/endpoints/users/following.ts +++ b/packages/backend/src/server/api/endpoints/users/following.ts @@ -99,7 +99,7 @@ export default class extends Endpoint { // eslint- super(meta, paramDef, async (ps, me) => { const user = await this.usersRepository.findOneBy(ps.userId != null ? { id: ps.userId } - : { usernameLower: ps.username!.toLowerCase(), host: this.utilityService.toPunyNullable(ps.host) ?? IsNull() }); + : { usernameLower: ps.username!.toLowerCase(), host: ps.host ? this.utilityService.normalizeHost(ps.host) : IsNull() }); if (user == null) { throw new ApiError(meta.errors.noSuchUser); From 7bcc254fd432d13d654bc299a10ab75c51908bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=82=8F=E3=82=8F=E3=82=8F=E3=81=A8=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E3=82=85?= <17376330+u1-liquid@users.noreply.github.com> Date: Sat, 28 Dec 2024 14:56:37 +0900 Subject: [PATCH 3/6] =?UTF-8?q?fix(frontend):=20=E6=94=AF=E6=8F=B4?= =?UTF-8?q?=E3=83=A1=E3=83=8B=E3=83=A5=E3=83=BC=E3=81=8C=E3=83=87=E3=83=83?= =?UTF-8?q?=E3=82=ADUI=E3=81=A7=E6=AD=A3=E5=B8=B8=E3=81=AB=E5=8B=95?= =?UTF-8?q?=E4=BD=9C=E3=81=97=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(MisskeyIO#861)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + kawaiiモードのメニュー追加 MSKY-1 --- .../src/components/MkVisitorDashboard.vue | 3 ++- packages/frontend/src/navbar.ts | 15 ++++++++++++++- packages/frontend/src/pages/about-misskey.vue | 6 ++++-- packages/frontend/src/pages/about.vue | 5 +++-- packages/frontend/src/ui/_common_/navbar.vue | 3 ++- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/packages/frontend/src/components/MkVisitorDashboard.vue b/packages/frontend/src/components/MkVisitorDashboard.vue index 6a19f8abc487..1bf53fc809f9 100644 --- a/packages/frontend/src/components/MkVisitorDashboard.vue +++ b/packages/frontend/src/components/MkVisitorDashboard.vue @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only