diff --git a/.config/example.yml b/.config/example.yml
index 489cceec34..1c07c4bc16 100644
--- a/.config/example.yml
+++ b/.config/example.yml
@@ -112,8 +112,17 @@ port: 3000
# Any format supported by Fastify is accepted.
# Default: trust all proxies (i.e. trustProxy: true)
# See: https://fastify.dev/docs/latest/reference/server/#trustproxy
+# To improve security, we recommend that you configure your settings appropriately.
+# Incorrect configuration can cause issues such as difficulty signing in,
+# so please configure your settings carefully.
#
-# trustProxy: 1
+#trustProxy:
+# - '10.0.0.0/8'
+# - '172.16.0.0/12'
+# - '192.168.0.0/16'
+# - '127.0.0.1/32'
+# - '::1/128'
+# - 'fc00::/7'
# ┌──────────────────────────┐
#───┘ PostgreSQL configuration └────────────────────────────────
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index e800743469..514abdfb20 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -5,7 +5,7 @@
"workspaceFolder": "/workspace",
"features": {
"ghcr.io/devcontainers/features/node:1": {
- "version": "24.10.0"
+ "version": "22.15.0"
},
"ghcr.io/devcontainers-extra/features/pnpm:2": {
"version": "10.10.0"
diff --git a/.github/workflows/api-misskey-js.yml b/.github/workflows/api-misskey-js.yml
index 6f40a67568..49ca3058f3 100644
--- a/.github/workflows/api-misskey-js.yml
+++ b/.github/workflows/api-misskey-js.yml
@@ -16,13 +16,13 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Setup Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
diff --git a/.github/workflows/changelog-check.yml b/.github/workflows/changelog-check.yml
index f4abedd960..d17999a271 100644
--- a/.github/workflows/changelog-check.yml
+++ b/.github/workflows/changelog-check.yml
@@ -12,9 +12,9 @@ jobs:
steps:
- name: Checkout head
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
- name: Setup Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
diff --git a/.github/workflows/check-misskey-js-autogen.yml b/.github/workflows/check-misskey-js-autogen.yml
index 05034ea0f4..8a81e85521 100644
--- a/.github/workflows/check-misskey-js-autogen.yml
+++ b/.github/workflows/check-misskey-js-autogen.yml
@@ -18,7 +18,7 @@ jobs:
if: ${{ github.event.pull_request.mergeable == null || github.event.pull_request.mergeable == true }}
steps:
- name: checkout
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
with:
submodules: true
persist-credentials: false
@@ -29,7 +29,7 @@ jobs:
- name: setup node
id: setup-node
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: pnpm
@@ -53,7 +53,7 @@ jobs:
# packages/misskey-js/generator/built/autogen
- name: Upload Generated
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: generated-misskey-js
path: packages/misskey-js/generator/built/autogen
@@ -66,14 +66,14 @@ jobs:
if: ${{ github.event.pull_request.mergeable == null || github.event.pull_request.mergeable == true }}
steps:
- name: checkout
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
with:
submodules: true
persist-credentials: false
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Upload From Merged
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: actual-misskey-js
path: packages/misskey-js/src/autogen
@@ -86,13 +86,13 @@ jobs:
pull-requests: write
steps:
- name: download generated-misskey-js
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: generated-misskey-js
path: misskey-js-generated
- name: download actual-misskey-js
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: actual-misskey-js
path: misskey-js-actual
@@ -113,9 +113,9 @@ jobs:
- name: send message
if: steps.check-changes.outputs.changes == 'true'
- uses: thollander/actions-comment-pull-request@v2
+ uses: thollander/actions-comment-pull-request@v3
with:
- comment_tag: check-misskey-js-autogen
+ comment-tag: check-misskey-js-autogen
message: |-
Thank you for sending us a great Pull Request! 👍
Please regenerate misskey-js type definitions! 🙏
@@ -127,9 +127,9 @@ jobs:
- name: send message
if: steps.check-changes.outputs.changes == 'false'
- uses: thollander/actions-comment-pull-request@v2
+ uses: thollander/actions-comment-pull-request@v3
with:
- comment_tag: check-misskey-js-autogen
+ comment-tag: check-misskey-js-autogen
mode: delete
message: "Thank you!"
create_if_not_exists: false
diff --git a/.github/workflows/check-misskey-js-version.yml b/.github/workflows/check-misskey-js-version.yml
index 0e336a1551..ad07d47b65 100644
--- a/.github/workflows/check-misskey-js-version.yml
+++ b/.github/workflows/check-misskey-js-version.yml
@@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
- name: Check version
run: |
if [ "$(jq -r '.version' package.json)" != "$(jq -r '.version' packages/misskey-js/package.json)" ]; then
diff --git a/.github/workflows/check-spdx-license-id.yml b/.github/workflows/check-spdx-license-id.yml
index d0b1be4991..fe71473ea3 100644
--- a/.github/workflows/check-spdx-license-id.yml
+++ b/.github/workflows/check-spdx-license-id.yml
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
- name: Check
run: |
counter=0
diff --git a/.github/workflows/check_copyright_year.yml b/.github/workflows/check_copyright_year.yml
index d891a538c6..40016d39c5 100644
--- a/.github/workflows/check_copyright_year.yml
+++ b/.github/workflows/check_copyright_year.yml
@@ -10,7 +10,7 @@ jobs:
check_copyright_year:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
- run: |
if [ "$(grep Copyright COPYING | sed -e 's/.*2014-\([0-9]*\) .*/\1/g')" -ne "$(date +%Y)" ]; then
echo "Please change copyright year!"
diff --git a/.github/workflows/deploy-test-environment.yml b/.github/workflows/deploy-test-environment.yml
index d838bc35e5..32c7c6b6ea 100644
--- a/.github/workflows/deploy-test-environment.yml
+++ b/.github/workflows/deploy-test-environment.yml
@@ -28,7 +28,7 @@ jobs:
wait_time: ${{ steps.get-wait-time.outputs.wait_time }}
steps:
- name: Checkout
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
- name: Check allowed users
id: check-allowed-users
diff --git a/.github/workflows/docker-develop.yml b/.github/workflows/docker-develop.yml
index e24ef00d78..8a97959907 100644
--- a/.github/workflows/docker-develop.yml
+++ b/.github/workflows/docker-develop.yml
@@ -27,7 +27,7 @@ jobs:
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Check out the repo
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
@@ -53,7 +53,7 @@ jobs:
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
@@ -66,7 +66,7 @@ jobs:
- build
steps:
- name: Download digests
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
path: /tmp/digests
pattern: digests-*
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 991fb85d85..37f6aca588 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -32,7 +32,7 @@ jobs:
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Check out the repo
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
@@ -64,7 +64,7 @@ jobs:
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
@@ -77,7 +77,7 @@ jobs:
- build
steps:
- name: Download digests
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
path: /tmp/digests
pattern: digests-*
diff --git a/.github/workflows/dockle.yml b/.github/workflows/dockle.yml
index 1c0fe70116..45b8d23dda 100644
--- a/.github/workflows/dockle.yml
+++ b/.github/workflows/dockle.yml
@@ -16,7 +16,7 @@ jobs:
DOCKLE_VERSION: 0.4.15
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
- name: Download and install dockle v${{ env.DOCKLE_VERSION }}
run: |
diff --git a/.github/workflows/get-api-diff.yml b/.github/workflows/get-api-diff.yml
index 90f7486413..f8a0c4aaa4 100644
--- a/.github/workflows/get-api-diff.yml
+++ b/.github/workflows/get-api-diff.yml
@@ -25,14 +25,14 @@ jobs:
ref: refs/pull/${{ github.event.number }}/merge
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
ref: ${{ matrix.ref }}
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
@@ -48,7 +48,7 @@ jobs:
- name: Copy API.json
run: cp packages/backend/built/api.json ${{ matrix.api-json-name }}
- name: Upload Artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: api-artifact-${{ matrix.api-json-name }}
path: ${{ matrix.api-json-name }}
@@ -61,7 +61,7 @@ jobs:
PR_NUMBER: ${{ github.event.number }}
run: |
echo "$PR_NUMBER" > ./pr_number
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@v6
with:
name: api-artifact-pr-number
path: pr_number
diff --git a/.github/workflows/get-backend-memory.yml b/.github/workflows/get-backend-memory.yml
new file mode 100644
index 0000000000..99f89631bb
--- /dev/null
+++ b/.github/workflows/get-backend-memory.yml
@@ -0,0 +1,87 @@
+# this name is used in report-backend-memory.yml so be careful when change name
+name: Get backend memory usage
+
+on:
+ pull_request:
+ branches:
+ - master
+ - develop
+ paths:
+ - packages/backend/**
+ - packages/misskey-js/**
+ - .github/workflows/get-backend-memory.yml
+
+jobs:
+ get-memory-usage:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+
+ strategy:
+ matrix:
+ memory-json-name: [memory-base.json, memory-head.json]
+ include:
+ - memory-json-name: memory-base.json
+ ref: ${{ github.base_ref }}
+ - memory-json-name: memory-head.json
+ ref: refs/pull/${{ github.event.number }}/merge
+
+ services:
+ postgres:
+ image: postgres:18
+ ports:
+ - 54312:5432
+ env:
+ POSTGRES_DB: test-misskey
+ POSTGRES_HOST_AUTH_METHOD: trust
+ redis:
+ image: redis:7
+ ports:
+ - 56312:6379
+
+ steps:
+ - uses: actions/checkout@v6.0.1
+ with:
+ ref: ${{ matrix.ref }}
+ submodules: true
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4.2.0
+ - name: Use Node.js
+ uses: actions/setup-node@v6.1.0
+ with:
+ node-version-file: '.node-version'
+ cache: 'pnpm'
+ - run: pnpm i --frozen-lockfile
+ - name: Check pnpm-lock.yaml
+ run: git diff --exit-code pnpm-lock.yaml
+ - name: Copy Configure
+ run: cp .github/misskey/test.yml .config/default.yml
+ - name: Compile Configure
+ run: pnpm compile-config
+ - name: Build
+ run: pnpm build
+ - name: Run migrations
+ run: pnpm --filter backend migrate
+ - name: Measure memory usage
+ run: |
+ # Start the server and measure memory usage
+ node packages/backend/scripts/measure-memory.mjs > ${{ matrix.memory-json-name }}
+ - name: Upload Artifact
+ uses: actions/upload-artifact@v6
+ with:
+ name: memory-artifact-${{ matrix.memory-json-name }}
+ path: ${{ matrix.memory-json-name }}
+
+ save-pr-number:
+ runs-on: ubuntu-latest
+ permissions: {}
+ steps:
+ - name: Save PR number
+ env:
+ PR_NUMBER: ${{ github.event.number }}
+ run: |
+ echo "$PR_NUMBER" > ./pr_number
+ - uses: actions/upload-artifact@v6
+ with:
+ name: memory-artifact-pr-number
+ path: pr_number
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 88e2aceaed..5787572dd5 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -11,6 +11,6 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: actions/labeler@v5
+ - uses: actions/labeler@v6
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index d80c56f032..91cbe52c38 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -36,13 +36,13 @@ jobs:
pnpm_install:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
fetch-depth: 0
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- - uses: actions/setup-node@v4.4.0
+ - uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
@@ -69,13 +69,13 @@ jobs:
eslint-cache-version: v1
eslint-cache-path: ${{ github.workspace }}/node_modules/.cache/eslint-${{ matrix.workspace }}
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
fetch-depth: 0
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- - uses: actions/setup-node@v4.4.0
+ - uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
@@ -100,21 +100,16 @@ jobs:
- sw
- misskey-js
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
fetch-depth: 0
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- - uses: actions/setup-node@v4.4.0
+ - uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
- run: pnpm i --frozen-lockfile
- - run: pnpm --filter misskey-js run build
- if: ${{ matrix.workspace == 'backend' || matrix.workspace == 'frontend' || matrix.workspace == 'sw' }}
- - run: pnpm --filter misskey-reversi run build
- if: ${{ matrix.workspace == 'backend' || matrix.workspace == 'frontend' }}
- - run: pnpm --filter misskey-bubble-game run build
- if: ${{ matrix.workspace == 'frontend' }}
+ - run: pnpm --filter "${{ matrix.workspace }}^..." run build
- run: pnpm --filter ${{ matrix.workspace }} run typecheck
diff --git a/.github/workflows/locale.yml b/.github/workflows/locale.yml
index e63d83997b..15cc9153f6 100644
--- a/.github/workflows/locale.yml
+++ b/.github/workflows/locale.yml
@@ -3,10 +3,12 @@ name: Lint
on:
push:
paths:
+ - packages/i18n/**
- locales/**
- .github/workflows/locale.yml
pull_request:
paths:
+ - packages/i18n/**
- locales/**
- .github/workflows/locale.yml
jobs:
@@ -14,15 +16,18 @@ jobs:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- - uses: actions/checkout@v4.3.0
- with:
- fetch-depth: 0
- submodules: true
- - name: Setup pnpm
- uses: pnpm/action-setup@v4.2.0
- - uses: actions/setup-node@v4.4.0
- with:
- node-version-file: '.node-version'
- cache: 'pnpm'
- - run: pnpm i --frozen-lockfile
- - run: cd locales && node verify.js
+ - uses: actions/checkout@v6.0.1
+ with:
+ fetch-depth: 0
+ submodules: true
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4.2.0
+ - uses: actions/setup-node@v6.1.0
+ with:
+ node-version-file: ".node-version"
+ cache: "pnpm"
+ - run: pnpm i --frozen-lockfile
+ - run: pnpm --filter i18n build
+ - name: Verify Locales
+ working-directory: ./packages/i18n
+ run: pnpm run verify
diff --git a/.github/workflows/on-release-created.yml b/.github/workflows/on-release-created.yml
index ed5b60acf8..c9a47385a0 100644
--- a/.github/workflows/on-release-created.yml
+++ b/.github/workflows/on-release-created.yml
@@ -16,13 +16,13 @@ jobs:
id-token: write
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
diff --git a/.github/workflows/release-edit-with-push.yml b/.github/workflows/release-edit-with-push.yml
index 57657a4ba7..bc16dbcef2 100644
--- a/.github/workflows/release-edit-with-push.yml
+++ b/.github/workflows/release-edit-with-push.yml
@@ -19,7 +19,7 @@ jobs:
edit:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# headが$GITHUB_REF_NAME, baseが$STABLE_BRANCHかつopenのPRを1つ取得
- name: Get PR
run: |
diff --git a/.github/workflows/release-with-dispatch.yml b/.github/workflows/release-with-dispatch.yml
index d750001b71..f318200584 100644
--- a/.github/workflows/release-with-dispatch.yml
+++ b/.github/workflows/release-with-dispatch.yml
@@ -36,7 +36,7 @@ jobs:
outputs:
pr_number: ${{ steps.get_pr.outputs.pr_number }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# headが$GITHUB_REF_NAME, baseが$STABLE_BRANCHかつopenのPRを1つ取得
- name: Get PRs
run: |
diff --git a/.github/workflows/report-api-diff.yml b/.github/workflows/report-api-diff.yml
index f24cd7d30e..59b92d022e 100644
--- a/.github/workflows/report-api-diff.yml
+++ b/.github/workflows/report-api-diff.yml
@@ -16,7 +16,7 @@ jobs:
# api-artifact
steps:
- name: Download artifact
- uses: actions/github-script@v7.1.0
+ uses: actions/github-script@v8.0.0
with:
script: |
const fs = require('fs');
@@ -60,7 +60,7 @@ jobs:
- name: Echo full diff
run: cat ./api-full.json.diff
- name: Upload full diff to Artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: api-artifact
path: |
@@ -73,9 +73,9 @@ jobs:
HEADER="このPRによるapi.jsonの差分"
FOOTER="[Get diff files from Workflow Page](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})"
DIFF_BYTES="$(stat ./api.json.diff -c '%s' | tr -d '\n')"
-
+
echo "$HEADER" > ./output.md
-
+
if (( "$DIFF_BYTES" <= 1 )); then
echo '差分はありません。' >> ./output.md
else
@@ -87,18 +87,18 @@ jobs:
echo '```' >> ./output.md
echo '' >> .output.md
fi
-
+
echo "$FOOTER" >> ./output.md
- - uses: thollander/actions-comment-pull-request@v2
+ - uses: thollander/actions-comment-pull-request@v3
with:
- pr_number: ${{ steps.load-pr-num.outputs.pr-number }}
- comment_tag: show_diff
- filePath: ./output.md
+ pr-number: ${{ steps.load-pr-num.outputs.pr-number }}
+ comment-tag: show_diff
+ file-path: ./output.md
- name: Tell error to PR
- uses: thollander/actions-comment-pull-request@v2
+ uses: thollander/actions-comment-pull-request@v3
if: failure() && steps.load-pr-num.outputs.pr-number
with:
- pr_number: ${{ steps.load-pr-num.outputs.pr-number }}
- comment_tag: show_diff_error
+ pr-number: ${{ steps.load-pr-num.outputs.pr-number }}
+ comment-tag: show_diff_error
message: |
api.jsonの差分作成中にエラーが発生しました。詳細は[Workflowのログ](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})を確認してください。
diff --git a/.github/workflows/report-backend-memory.yml b/.github/workflows/report-backend-memory.yml
new file mode 100644
index 0000000000..c339ca49b4
--- /dev/null
+++ b/.github/workflows/report-backend-memory.yml
@@ -0,0 +1,122 @@
+name: Report backend memory
+
+on:
+ workflow_run:
+ types: [completed]
+ workflows:
+ - Get backend memory usage # get-backend-memory.yml
+
+jobs:
+ compare-memory:
+ runs-on: ubuntu-latest
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ permissions:
+ pull-requests: write
+
+ steps:
+ - name: Download artifact
+ uses: actions/github-script@v8.0.0
+ with:
+ script: |
+ const fs = require('fs');
+ let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ run_id: context.payload.workflow_run.id,
+ });
+ let matchArtifacts = allArtifacts.data.artifacts.filter((artifact) => {
+ return artifact.name.startsWith("memory-artifact-") || artifact.name == "memory-artifact"
+ });
+ await Promise.all(matchArtifacts.map(async (artifact) => {
+ let download = await github.rest.actions.downloadArtifact({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ artifact_id: artifact.id,
+ archive_format: 'zip',
+ });
+ await fs.promises.writeFile(`${process.env.GITHUB_WORKSPACE}/${artifact.name}.zip`, Buffer.from(download.data));
+ }));
+ - name: Extract all artifacts
+ run: |
+ find . -mindepth 1 -maxdepth 1 -type f -name '*.zip' -exec unzip {} -d artifacts ';'
+ ls -la artifacts/
+ - name: Load PR Number
+ id: load-pr-num
+ run: echo "pr-number=$(cat artifacts/pr_number)" >> "$GITHUB_OUTPUT"
+
+ - name: Output base
+ run: cat ./artifacts/memory-base.json
+ - name: Output head
+ run: cat ./artifacts/memory-head.json
+ - name: Compare memory usage
+ id: compare
+ run: |
+ BASE_MEMORY=$(cat ./artifacts/memory-base.json)
+ HEAD_MEMORY=$(cat ./artifacts/memory-head.json)
+
+ BASE_RSS=$(echo "$BASE_MEMORY" | jq -r '.memory.rss // 0')
+ HEAD_RSS=$(echo "$HEAD_MEMORY" | jq -r '.memory.rss // 0')
+
+ # Calculate difference
+ if [ "$BASE_RSS" -gt 0 ] && [ "$HEAD_RSS" -gt 0 ]; then
+ DIFF=$((HEAD_RSS - BASE_RSS))
+ DIFF_PERCENT=$(echo "scale=2; ($DIFF * 100) / $BASE_RSS" | bc)
+
+ # Convert to MB for readability
+ BASE_MB=$(echo "scale=2; $BASE_RSS / 1048576" | bc)
+ HEAD_MB=$(echo "scale=2; $HEAD_RSS / 1048576" | bc)
+ DIFF_MB=$(echo "scale=2; $DIFF / 1048576" | bc)
+
+ echo "base_mb=$BASE_MB" >> "$GITHUB_OUTPUT"
+ echo "head_mb=$HEAD_MB" >> "$GITHUB_OUTPUT"
+ echo "diff_mb=$DIFF_MB" >> "$GITHUB_OUTPUT"
+ echo "diff_percent=$DIFF_PERCENT" >> "$GITHUB_OUTPUT"
+ echo "has_data=true" >> "$GITHUB_OUTPUT"
+
+ # Determine if this is a significant change (more than 5% increase)
+ if [ "$(echo "$DIFF_PERCENT > 5" | bc)" -eq 1 ]; then
+ echo "significant_increase=true" >> "$GITHUB_OUTPUT"
+ else
+ echo "significant_increase=false" >> "$GITHUB_OUTPUT"
+ fi
+ else
+ echo "has_data=false" >> "$GITHUB_OUTPUT"
+ fi
+ - id: build-comment
+ name: Build memory comment
+ run: |
+ HEADER="## Backend Memory Usage Comparison"
+ FOOTER="[See workflow logs for details](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})"
+
+ echo "$HEADER" > ./output.md
+ echo >> ./output.md
+
+ if [ "${{ steps.compare.outputs.has_data }}" == "true" ]; then
+ echo "| Metric | base | head | Diff |" >> ./output.md
+ echo "|--------|------|------|------|" >> ./output.md
+ echo "| RSS | ${{ steps.compare.outputs.base_mb }} MB | ${{ steps.compare.outputs.head_mb }} MB | ${{ steps.compare.outputs.diff_mb }} MB (${{ steps.compare.outputs.diff_percent }}%) |" >> ./output.md
+ echo >> ./output.md
+
+ if [ "${{ steps.compare.outputs.significant_increase }}" == "true" ]; then
+ echo "⚠️ **Warning**: Memory usage has increased by more than 5%. Please verify this is not an unintended change." >> ./output.md
+ echo >> ./output.md
+ fi
+ else
+ echo "Could not retrieve memory usage data." >> ./output.md
+ echo >> ./output.md
+ fi
+
+ echo "$FOOTER" >> ./output.md
+ - uses: thollander/actions-comment-pull-request@v3
+ with:
+ pr-number: ${{ steps.load-pr-num.outputs.pr-number }}
+ comment-tag: show_memory_diff
+ file-path: ./output.md
+ - name: Tell error to PR
+ uses: thollander/actions-comment-pull-request@v3
+ if: failure() && steps.load-pr-num.outputs.pr-number
+ with:
+ pr-number: ${{ steps.load-pr-num.outputs.pr-number }}
+ comment-tag: show_memory_diff_error
+ message: |
+ An error occurred while comparing backend memory usage. See [workflow logs](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details.
diff --git a/.github/workflows/request-release-review.yml b/.github/workflows/request-release-review.yml
index 0b4af4117a..9b6768149b 100644
--- a/.github/workflows/request-release-review.yml
+++ b/.github/workflows/request-release-review.yml
@@ -14,7 +14,7 @@ jobs:
pull-requests: write
steps:
- name: Reply
- uses: actions/github-script@v6
+ uses: actions/github-script@v8
with:
script: |
const body = `To dev team (@misskey-dev/dev):
diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml
index b9aef7a76c..c28b1f6e93 100644
--- a/.github/workflows/storybook.yml
+++ b/.github/workflows/storybook.yml
@@ -22,12 +22,12 @@ jobs:
NODE_OPTIONS: "--max_old_space_size=7168"
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
if: github.event_name != 'pull_request_target'
with:
fetch-depth: 0
submodules: true
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
if: github.event_name == 'pull_request_target'
with:
fetch-depth: 0
@@ -39,7 +39,7 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
@@ -90,7 +90,7 @@ jobs:
env:
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
- name: Notify that Chromatic detects changes
- uses: actions/github-script@v7.1.0
+ uses: actions/github-script@v8.0.0
if: github.event_name != 'pull_request_target' && steps.chromatic_push.outputs.success == 'false'
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -102,7 +102,7 @@ jobs:
body: 'Chromatic detects changes. Please [review the changes on Chromatic](https://www.chromatic.com/builds?appId=6428f7d7b962f0b79f97d6e4).'
})
- name: Upload Artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: storybook
path: packages/frontend/storybook-static
diff --git a/.github/workflows/test-backend.yml b/.github/workflows/test-backend.yml
index a65b244ba1..562ec76b85 100644
--- a/.github/workflows/test-backend.yml
+++ b/.github/workflows/test-backend.yml
@@ -50,7 +50,7 @@ jobs:
- 56312:6379
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
submodules: true
- name: Setup pnpm
@@ -86,7 +86,7 @@ jobs:
fi
done
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: ${{ matrix.node-version-file }}
cache: 'pnpm'
@@ -129,13 +129,13 @@ jobs:
- 56312:6379
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: ${{ matrix.node-version-file }}
cache: 'pnpm'
@@ -173,7 +173,7 @@ jobs:
POSTGRES_HOST_AUTH_METHOD: trust
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
submodules: true
- name: Setup pnpm
@@ -182,7 +182,7 @@ jobs:
id: current-date
run: echo "today=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: ${{ matrix.node-version-file }}
cache: 'pnpm'
diff --git a/.github/workflows/test-federation.yml b/.github/workflows/test-federation.yml
index 88cd3649f9..7f8fe547e1 100644
--- a/.github/workflows/test-federation.yml
+++ b/.github/workflows/test-federation.yml
@@ -32,7 +32,7 @@ jobs:
- .node-version
- .github/min.node-version
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
submodules: true
- name: Setup pnpm
@@ -68,7 +68,7 @@ jobs:
fi
done
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: ${{ matrix.node-version-file }}
cache: 'pnpm'
diff --git a/.github/workflows/test-frontend.yml b/.github/workflows/test-frontend.yml
index 3ccfb7e3e0..52723e894c 100644
--- a/.github/workflows/test-frontend.yml
+++ b/.github/workflows/test-frontend.yml
@@ -28,13 +28,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
@@ -76,7 +76,7 @@ jobs:
- 56312:6379
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
submodules: true
# https://github.com/cypress-io/cypress-docker-images/issues/150
@@ -88,7 +88,7 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
@@ -113,12 +113,12 @@ jobs:
wait-on: 'http://localhost:61812'
headed: true
browser: ${{ matrix.browser }}
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@v6
if: failure()
with:
name: ${{ matrix.browser }}-cypress-screenshots
path: cypress/screenshots
- - uses: actions/upload-artifact@v4
+ - uses: actions/upload-artifact@v6
if: always()
with:
name: ${{ matrix.browser }}-cypress-videos
diff --git a/.github/workflows/test-misskey-js.yml b/.github/workflows/test-misskey-js.yml
index 5825e8a8a3..428cbce3b8 100644
--- a/.github/workflows/test-misskey-js.yml
+++ b/.github/workflows/test-misskey-js.yml
@@ -22,13 +22,13 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v4.3.0
+ uses: actions/checkout@v6.0.1
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Setup Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
diff --git a/.github/workflows/test-production.yml b/.github/workflows/test-production.yml
index 0a3902ad5c..9c0ea4d738 100644
--- a/.github/workflows/test-production.yml
+++ b/.github/workflows/test-production.yml
@@ -16,13 +16,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
diff --git a/.github/workflows/validate-api-json.yml b/.github/workflows/validate-api-json.yml
index 82c522c65c..8ffc60fc6e 100644
--- a/.github/workflows/validate-api-json.yml
+++ b/.github/workflows/validate-api-json.yml
@@ -17,13 +17,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4.3.0
+ - uses: actions/checkout@v6.0.1
with:
submodules: true
- name: Setup pnpm
uses: pnpm/action-setup@v4.2.0
- name: Use Node.js
- uses: actions/setup-node@v4.4.0
+ uses: actions/setup-node@v6.1.0
with:
node-version-file: '.node-version'
cache: 'pnpm'
diff --git a/.node-version b/.node-version
index 21651351e2..b8ffd70759 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-24.10.0
+22.15.0
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 5f36a32af4..2d11d24db2 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -3,6 +3,7 @@
"**/node_modules": true
},
"typescript.tsdk": "node_modules/typescript/lib",
+ "typescript.enablePromptUseWorkspaceTsdk": true,
"files.associations": {
"*.test.ts": "typescript"
},
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eeb6e81019..5800477c42 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,15 +1,47 @@
-## Unreleased
+## 2025.12.2
+
+### Note
+v2025.12.0で行われた「configの`trustProxy`のデフォルト値を`false`に変更」について、正しく環境に応じた設定を行わないとサインインが困難になるといった状態を緩和するために、以前のデフォルト値に戻す暫定対応を行いました。
+
+**セキュリティを向上させるためには適切な設定を行うことを推奨しますが、間違った設定値を入れると上述のような不具合の原因となりますので、慎重に行ってください。**
### General
--
+- 依存関係の更新
### Client
--
+- Enhance: デッキのUI説明を追加
+- Fix: バージョン表記のないPlayが正しく動作しない問題を修正
+ バージョン表記のないものは v0.x 系として実行されます。v1.x 系で動作させたい場合は必ずバージョン表記を含めてください。
+
+
+## 2025.12.1
+
+### Client
+- Fix: 特定の条件下でMisskeyが起動せず空白のページが表示されることがある問題を軽減
+- Fix: 初回読み込み時などに、言語設定で不整合が発生することがある問題を修正
+- Fix: 削除されたノートのリノートが正しく動作されない問題を修正
+- Fix: チャンネルオーナーが削除済みの時にチャンネルのヘッダーメニューが表示されない不具合を修正
+- Fix: ドライブで登録日以外でソートする場合は月でグループ化して表示しないように
+- Fix: `null` を返す note_view_intrruptor プラグインが動作しない問題を修正
### Server
--
+- Fix: ジョブキューでSentryが有効にならない問題を修正
+## 2025.12.0
+
+### Note
+- configの`trustProxy`のデフォルト値を`false`に変更しました。アップデート前に現在のconfigをご確認の上、必要に応じて値を変更してください。
+
+### Client
+- Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正
+
+### Server
+- Enhance: メモリ使用量を削減しました
+- Enhance: ActivityPubアクティビティを送信する際のパフォーマンス向上
+- Enhance: 依存関係の更新
+- Fix: セキュリティに関する修正
+
## 2025.11.1
### Client
diff --git a/Dockerfile b/Dockerfile
index 20e24d1dc2..02739d9ca2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.4
-ARG NODE_VERSION=24.10.0-bookworm
+ARG NODE_VERSION=22.15.0-bookworm
# build assets & compile TypeScript
@@ -24,6 +24,7 @@ COPY --link ["packages/frontend-shared/package.json", "./packages/frontend-share
COPY --link ["packages/frontend/package.json", "./packages/frontend/"]
COPY --link ["packages/frontend-embed/package.json", "./packages/frontend-embed/"]
COPY --link ["packages/frontend-builder/package.json", "./packages/frontend-builder/"]
+COPY --link ["packages/i18n/package.json", "./packages/i18n/"]
COPY --link ["packages/icons-subsetter/package.json", "./packages/icons-subsetter/"]
COPY --link ["packages/sw/package.json", "./packages/sw/"]
COPY --link ["packages/misskey-js/package.json", "./packages/misskey-js/"]
@@ -101,6 +102,7 @@ COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-js/
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-reversi/built ./packages/misskey-reversi/built
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-bubble-game/built ./packages/misskey-bubble-game/built
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/backend/built ./packages/backend/built
+COPY --chown=misskey:misskey --from=native-builder /misskey/packages/i18n/built ./packages/i18n/built
COPY --chown=misskey:misskey --from=native-builder /misskey/fluent-emojis /misskey/fluent-emojis
COPY --chown=misskey:misskey . ./
diff --git a/README.md b/README.md
index 92e8fef639..a73102d713 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,8 @@
+[](https://deepwiki.com/misskey-dev/misskey)
+
## Thanks
diff --git a/compose.local-db.yml b/compose.local-db.yml
index 4703b16fc5..2b69cabf5a 100644
--- a/compose.local-db.yml
+++ b/compose.local-db.yml
@@ -21,7 +21,7 @@ services:
env_file:
- .config/docker.env
volumes:
- - ./db:/var/lib/postgresql/data
+ - ./db:/var/lib/postgresql
healthcheck:
test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
interval: 5s
diff --git a/compose_example.yml b/compose_example.yml
index 70de5bba7b..efc7d6624d 100644
--- a/compose_example.yml
+++ b/compose_example.yml
@@ -43,7 +43,7 @@ services:
env_file:
- .config/docker.env
volumes:
- - ./db:/var/lib/postgresql/data
+ - ./db:/var/lib/postgresql
healthcheck:
test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
interval: 5s
diff --git a/locales/de-DE.yml b/locales/de-DE.yml
index ba7ca27e66..33e19f1cc1 100644
--- a/locales/de-DE.yml
+++ b/locales/de-DE.yml
@@ -83,6 +83,7 @@ files: "Dateien"
download: "Herunterladen"
driveFileDeleteConfirm: "Möchtest du die Datei „{name}“ wirklich löschen? Einige Inhalte, die diese Datei verwenden, werden auch verschwinden."
unfollowConfirm: "Möchtest du {name} wirklich nicht mehr folgen?"
+rejectFollowRequestConfirm: "Möchtest du die Follow-Anfrage von {name} ablehnen?"
exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch nehmen. Sobald der Export abgeschlossen ist, wird er deiner Drive hinzugefügt."
importRequested: "Du hast einen Import angefragt. Dies kann etwas Zeit in Anspruch nehmen."
lists: "Listen"
@@ -1018,6 +1019,7 @@ pushNotificationAlreadySubscribed: "Push-Benachrichtigungen sind bereits aktivie
pushNotificationNotSupported: "Entweder dein Browser oder deine Instanz unterstützt Push-Benachrichtigungen nicht"
sendPushNotificationReadMessage: "Push-Benachrichtigungen löschen, sobald sie gelesen wurden"
sendPushNotificationReadMessageCaption: "Dies kann gegebenenfalls den Batterieverbrauch deines Gerätes erhöhen."
+pleaseAllowPushNotification: "Bitte erlauben Sie Benachrichtigungen in Ihrem Browser."
windowMaximize: "Maximieren"
windowMinimize: "Minimieren"
windowRestore: "Wiederherstellen"
@@ -1054,6 +1056,7 @@ permissionDeniedError: "Aktion verweigert"
permissionDeniedErrorDescription: "Dieses Benutzerkonto besitzt nicht die Berechtigung, um diese Aktion auszuführen."
preset: "Vorlage"
selectFromPresets: "Aus Vorlagen wählen"
+custom: "Benutzerdefiniert"
achievements: "Errungenschaften"
gotInvalidResponseError: "Ungültige Antwort des Servers"
gotInvalidResponseErrorDescription: "Eventuell ist der Server momentan nicht erreichbar oder untergeht Wartungsarbeiten. Bitte versuche es später noch einmal."
@@ -1243,6 +1246,7 @@ releaseToRefresh: "Zum Aktualisieren loslassen"
refreshing: "Wird aktualisiert..."
pullDownToRefresh: "Zum Aktualisieren ziehen"
useGroupedNotifications: "Benachrichtigungen gruppieren"
+emailVerificationFailedError: "Es gab ein Problem bei der Überprüfung Ihrer E-Mail-Adresse. Der Link ist möglicherweise abgelaufen."
cwNotationRequired: "Ist \"Inhaltswarnung verwenden\" aktiviert, muss eine Beschreibung gegeben werden."
doReaction: "Reagieren"
code: "Code"
@@ -1370,7 +1374,12 @@ defaultImageCompressionLevel: "Standard-Bildkomprimierungsstufe"
defaultImageCompressionLevel_description: "Ein niedrigerer Wert erhält die Bildqualität, erhöht aber die Dateigröße.
Höhere Werte reduzieren die Dateigröße, verringern aber die Bildqualität."
inMinutes: "Minute(n)"
inDays: "Tag(en)"
+safeModeEnabled: "Der abgesicherte Modus ist aktiviert."
+schedule: "Planen"
+scheduled: "Geplant"
widgets: "Widgets"
+deviceInfo: "Geräteinformation"
+youAreAdmin: "Sie sind ein Administrator"
presets: "Vorlage"
_imageEditing:
_vars:
diff --git a/locales/en-US.yml b/locales/en-US.yml
index fc979ef2b0..22e9d6eeb9 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -83,6 +83,8 @@ files: "Files"
download: "Download"
driveFileDeleteConfirm: "Are you sure you want to delete \"{name}\"? All notes with this file attached will also be deleted."
unfollowConfirm: "Are you sure you want to unfollow {name}?"
+cancelFollowRequestConfirm: "Are you sure that you want to cancel your follow request to {name}?"
+rejectFollowRequestConfirm: "Are you sure that you want to reject the follow request from {name}?"
exportRequested: "You've requested an export. This may take a while. It will be added to your Drive once completed."
importRequested: "You've requested an import. This may take a while."
lists: "Lists"
diff --git a/locales/es-ES.yml b/locales/es-ES.yml
index 147c60b0be..dddfa4d57b 100644
--- a/locales/es-ES.yml
+++ b/locales/es-ES.yml
@@ -128,7 +128,7 @@ pinnedNote: "Nota fijada"
pinned: "Fijar al perfil"
you: "Tú"
clickToShow: "Haz clic para verlo"
-sensitive: "Marcado como sensible"
+sensitive: "Marcado como sensible (NSFW)"
add: "Agregar"
reaction: "Reacción"
reactions: "Reacciones"
@@ -143,7 +143,7 @@ rememberNoteVisibility: "Recordar visibilidad"
attachCancel: "Quitar adjunto"
deleteFile: "Eliminar archivo"
markAsSensitive: "Marcar como sensible"
-unmarkAsSensitive: "Desmarcar como sensible"
+unmarkAsSensitive: "No marcar como sensible"
enterFileName: "Introduce el nombre del archivo"
mute: "Silenciar"
unmute: "Dejar de silenciar"
@@ -319,10 +319,10 @@ remoteUserCaution: "Para el usuario remoto, la información está incompleta"
activity: "Actividad"
images: "Imágenes"
image: "Imágenes"
-birthday: "Fecha de nacimiento"
+birthday: "Cumpleaños"
yearsOld: "{age} años"
registeredDate: "Fecha de registro"
-location: "Lugar"
+location: "Ubicación"
theme: "Tema"
themeForLightMode: "Tema para usar en Modo Linterna"
themeForDarkMode: "Tema para usar en Modo Oscuro"
@@ -353,7 +353,7 @@ emptyFolder: "La carpeta está vacía"
dropHereToUpload: "Arrastra los archivos aquí para subirlos."
unableToDelete: "No se puede borrar"
inputNewFileName: "Ingrese un nuevo nombre de archivo"
-inputNewDescription: "Ingrese nueva descripción"
+inputNewDescription: "Introducir un nuevo texto alternativo"
inputNewFolderName: "Ingrese un nuevo nombre de la carpeta"
circularReferenceFolder: "La carpeta de destino es una sub-carpeta de la carpeta que quieres mover."
hasChildFilesOrFolders: "No se puede borrar esta carpeta. No está vacía."
@@ -579,7 +579,7 @@ objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir "
s3ForcePathStyleDesc: "Si s3ForcePathStyle esta habilitado el nombre del bucket debe ser especificado como parte de la URL en lugar del nombre de host en la URL. Puede ser necesario activar esta opción cuando se utilice, por ejemplo, Minio en un servidor propio."
serverLogs: "Registros del servidor"
deleteAll: "Eliminar todos"
-showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo"
+showFixedPostForm: "Visualizar la ventana de publicación en la parte superior de la línea de tiempo."
showFixedPostFormInChannel: "Mostrar el formulario de publicación por encima de la cronología (Canales)"
withRepliesByDefaultForNewlyFollowed: "Incluir por defecto respuestas de usuarios recién seguidos en la línea de tiempo"
newNoteRecived: "Tienes una nota nueva"
@@ -706,7 +706,7 @@ userSaysSomethingAbout: "{name} dijo algo sobre {word}"
makeActive: "Activar"
display: "Apariencia"
copy: "Copiar"
-copiedToClipboard: "Texto copiado al portapapeles"
+copiedToClipboard: "Copiado al portapapeles"
metrics: "Métricas"
overview: "Resumen"
logs: "Registros"
@@ -715,7 +715,7 @@ database: "Base de datos"
channel: "Canal"
create: "Crear"
notificationSetting: "Ajustes de Notificaciones"
-notificationSettingDesc: "Por favor elija el tipo de notificación a mostrar"
+notificationSettingDesc: "Por favor elige el tipo de notificación a mostrar"
useGlobalSetting: "Usar ajustes globales"
useGlobalSettingDesc: "Al activarse, se usará la configuración de notificaciones de la cuenta, al desactivarse se pueden hacer configuraciones particulares."
other: "Otro"
@@ -747,7 +747,7 @@ system: "Sistema"
switchUi: "Cambiar interfaz de usuario"
desktop: "Escritorio"
clip: "Clip"
-createNew: "Crear"
+createNew: "Crear Nuevo"
optional: "Opcional"
createNewClip: "Crear clip nuevo"
unclip: "Quitar clip"
@@ -844,7 +844,7 @@ jumpToSpecifiedDate: "Saltar a una fecha específica"
showingPastTimeline: "Mostrar líneas de tiempo antiguas"
clear: "Limpiar"
markAllAsRead: "Marcar todo como leído"
-goBack: "Deseleccionar"
+goBack: "Anterior"
unlikeConfirm: "¿Quitar como favorito?"
fullView: "Vista completa"
quitFullView: "quitar vista completa"
@@ -1203,8 +1203,8 @@ iHaveReadXCarefullyAndAgree: "He leído el texto {x} y estoy de acuerdo"
dialog: "Diálogo"
icon: "Avatar"
forYou: "Para ti"
-currentAnnouncements: "Anuncios actuales"
-pastAnnouncements: "Anuncios anteriores"
+currentAnnouncements: "Avisos actuales"
+pastAnnouncements: "Avisos anteriores"
youHaveUnreadAnnouncements: "Hay anuncios sin leer"
useSecurityKey: "Por favor, sigue las instrucciones de tu dispositivo o navegador para usar tu clave de seguridad o tu clave de paso."
replies: "Responder"
@@ -1252,7 +1252,7 @@ detachAll: "Quitar todo"
angle: "Ángulo"
flip: "Echar de un capirotazo"
showAvatarDecorations: "Mostrar decoraciones de avatar"
-releaseToRefresh: "Soltar para recargar"
+releaseToRefresh: "Suelta para recargar"
refreshing: "Recargando..."
pullDownToRefresh: "Tira hacia abajo para recargar"
useGroupedNotifications: "Mostrar notificaciones agrupadas"
@@ -1412,8 +1412,8 @@ _imageEditing:
filename: "Nombre de archivo"
filename_without_ext: "Nombre del archivo sin la extensión"
year: "Año de rodaje"
- month: "Mes de rodaje"
- day: "Día de rodaje"
+ month: "Mes de la fotografía"
+ day: "Día de la fotografía"
hour: "Hora"
minute: "Minuto"
second: "Segundo"
@@ -1427,9 +1427,9 @@ _imageEditing:
gps_lat: "Latitud"
gps_long: "Longitud"
_imageFrameEditor:
- title: "Edición de Fotograma"
+ title: "Edición de Fotos"
tip: "Decora tus imágenes con marcos y etiquetas que contengan metadatos."
- header: "Cabezal"
+ header: "Título"
footer: "Pie de página"
borderThickness: "Ancho del borde"
labelThickness: "Ancho de la etiqueta"
@@ -1456,8 +1456,8 @@ _compression:
medium: "Tamaño mediano"
small: "Tamaño pequeño"
_order:
- newest: "Los más recientes primero"
- oldest: "Los más antiguos primero"
+ newest: "Más reciente primero"
+ oldest: "Más antiguos primero"
_chat:
messages: "Mensajes"
noMessagesYet: "Aún no hay mensajes"
@@ -1511,7 +1511,7 @@ _emojiPalette:
palettes: "Paleta\n"
enableSyncBetweenDevicesForPalettes: "Activar la sincronización de paletas entre dispositivos"
paletteForMain: "Paleta principal"
- paletteForReaction: "Paleta de reacción"
+ paletteForReaction: "Paleta utilizada para las reacciones"
_settings:
driveBanner: "Puedes gestionar y configurar la unidad, comprobar su uso y configurar los ajustes de carga de archivos."
pluginBanner: "Puedes ampliar las funciones del cliente con plugins. Puedes instalar plugins, configurarlos y gestionarlos individualmente."
@@ -1523,7 +1523,7 @@ _settings:
accountData: "Datos de la cuenta"
accountDataBanner: "Exportación e importación para gestionar los datos de la cuenta."
muteAndBlockBanner: "Puedes configurar y gestionar ajustes para ocultar contenidos y restringir acciones a usuarios específicos."
- accessibilityBanner: "Puedes personalizar los visuales y el comportamiento del cliente, y configurar los ajustes para optimizar el uso."
+ accessibilityBanner: "Puedes personalizar el aspecto y el comportamiento del cliente y configurar los ajustes para optimizar su uso."
privacyBanner: "Puedes configurar opciones relacionadas con la privacidad de la cuenta, como la visibilidad del contenido, la posibilidad de descubrir la cuenta y la aprobación de seguimiento."
securityBanner: "Puedes configurar opciones relacionadas con la seguridad de la cuenta, como la contraseña, los métodos de inicio de sesión, las aplicaciones de autenticación y Passkeys."
preferencesBanner: "Puedes configurar el comportamiento general del cliente según tus preferencias."
@@ -1540,7 +1540,7 @@ _settings:
ifOff: "Si está desactivado"
enableSyncThemesBetweenDevices: "Sincronizar los temas instalados entre dispositivos."
enablePullToRefresh: "Tirar para actualizar"
- enablePullToRefresh_description: "Si utiliza un ratón, arrastre mientras pulsa la rueda de desplazamiento."
+ enablePullToRefresh_description: "Si utilizas un ratón, arrastra mientras pulsas la rueda de desplazamiento."
realtimeMode_description: "Establece una conexión con el servidor y actualiza el contenido en tiempo real. Esto puede aumentar el tráfico y el consumo de memoria."
contentsUpdateFrequency: "Frecuencia de adquisición del contenido."
contentsUpdateFrequency_description: "Cuanto mayor sea el valor, más se actualiza el contenido, pero disminuye el rendimiento y aumenta el tráfico y el consumo de memoria."
@@ -1685,7 +1685,7 @@ _initialTutorial:
followers: "Visible solo para seguidores. Sólo tus seguidores podrán ver la nota, y no podrá ser renotada por otras personas."
direct: "Visible sólo para usuarios específicos, y el destinatario será notificado. Puede usarse como alternativa a la mensajería directa."
doNotSendConfidencialOnDirect1: "¡Ten cuidado cuando vayas a enviar información sensible!"
- doNotSendConfidencialOnDirect2: "Los administradores del servidor pueden leer lo que escribes. Ten cuidado cuando envíes información sensible en notas directas en servidores no confiables."
+ doNotSendConfidencialOnDirect2: "Los administradores del servidor, también llamado instancia, pueden leer lo que escribes. Ten cuidado cuando envíes información sensible en notas directas en servidores o instancias no confiables."
localOnly: "Publicando con esta opción seleccionada, la nota no se federará hacia otros servidores. Los usuarios de otros servidores no podrán ver estas notas directamente, sin importar los ajustes seleccionados más arriba."
_cw:
title: "Alerta de contenido (CW)"
@@ -2156,7 +2156,7 @@ _accountDelete:
started: "El proceso de eliminación ha comenzado."
inProgress: "La eliminación está en proceso."
_ad:
- back: "Deseleccionar"
+ back: "Anterior"
reduceFrequencyOfThisAd: "Mostrar menos este anuncio."
hide: "No mostrar"
timezoneinfo: "El día de la semana está determidado por la zona horaria del servidor."
@@ -2299,7 +2299,7 @@ _theme:
indicator: "Indicador"
panel: "Panel"
shadow: "Sombra"
- header: "Cabezal"
+ header: "Título"
navBg: "Fondo de la barra lateral"
navFg: "Texto de la barra lateral"
navActive: "Texto de la barra lateral (activo)"
@@ -2610,10 +2610,10 @@ _profile:
name: "Nombre"
username: "Nombre de usuario"
description: "Descripción"
- youCanIncludeHashtags: "Puedes añadir hashtags"
+ youCanIncludeHashtags: "También puedes incluir hashtags en tu biografía"
metadata: "información adicional"
metadataEdit: "Editar información adicional"
- metadataDescription: "Muestra la información adicional en el perfil"
+ metadataDescription: "Usando esto puedes mostrar campos de información adicionales en tu perfil."
metadataLabel: "Etiqueta"
metadataContent: "Contenido"
changeAvatar: "Cambiar avatar"
@@ -2771,7 +2771,7 @@ _notification:
follow: "Siguiendo"
mention: "Menciones"
reply: "Respuestas"
- renote: "Renotar"
+ renote: "Renotas"
quote: "Citar"
reaction: "Reacción"
pollEnded: "La encuesta terminó"
diff --git a/locales/generateDTS.js b/locales/generateDTS.js
deleted file mode 100644
index ab0613cc82..0000000000
--- a/locales/generateDTS.js
+++ /dev/null
@@ -1,232 +0,0 @@
-import * as fs from 'node:fs';
-import { fileURLToPath } from 'node:url';
-import { dirname } from 'node:path';
-import * as yaml from 'js-yaml';
-import ts from 'typescript';
-
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = dirname(__filename);
-const parameterRegExp = /\{(\w+)\}/g;
-
-function createMemberType(item) {
- if (typeof item !== 'string') {
- return ts.factory.createTypeLiteralNode(createMembers(item));
- }
- const parameters = Array.from(
- item.matchAll(parameterRegExp),
- ([, parameter]) => parameter,
- );
- return parameters.length
- ? ts.factory.createTypeReferenceNode(
- ts.factory.createIdentifier('ParameterizedString'),
- [
- ts.factory.createUnionTypeNode(
- parameters.map((parameter) =>
- ts.factory.createStringLiteral(parameter),
- ),
- ),
- ],
- )
- : ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
-}
-
-function createMembers(record) {
- return Object.entries(record).map(([k, v]) => {
- const node = ts.factory.createPropertySignature(
- undefined,
- ts.factory.createStringLiteral(k),
- undefined,
- createMemberType(v),
- );
- if (typeof v === 'string') {
- ts.addSyntheticLeadingComment(
- node,
- ts.SyntaxKind.MultiLineCommentTrivia,
- `*
- * ${v.replace(/\n/g, '\n * ')}
- `,
- true,
- );
- }
- return node;
- });
-}
-
-export default function generateDTS() {
- const locale = yaml.load(fs.readFileSync(`${__dirname}/ja-JP.yml`, 'utf-8'));
- const members = createMembers(locale);
- const elements = [
- ts.factory.createVariableStatement(
- [ts.factory.createToken(ts.SyntaxKind.DeclareKeyword)],
- ts.factory.createVariableDeclarationList(
- [
- ts.factory.createVariableDeclaration(
- ts.factory.createIdentifier('kParameters'),
- undefined,
- ts.factory.createTypeOperatorNode(
- ts.SyntaxKind.UniqueKeyword,
- ts.factory.createKeywordTypeNode(ts.SyntaxKind.SymbolKeyword),
- ),
- undefined,
- ),
- ],
- ts.NodeFlags.Const,
- ),
- ),
- ts.factory.createTypeAliasDeclaration(
- [ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
- ts.factory.createIdentifier('ParameterizedString'),
- [
- ts.factory.createTypeParameterDeclaration(
- undefined,
- ts.factory.createIdentifier('T'),
- ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
- ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
- ),
- ],
- ts.factory.createIntersectionTypeNode([
- ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
- ts.factory.createTypeLiteralNode([
- ts.factory.createPropertySignature(
- undefined,
- ts.factory.createComputedPropertyName(
- ts.factory.createIdentifier('kParameters'),
- ),
- undefined,
- ts.factory.createTypeReferenceNode(
- ts.factory.createIdentifier('T'),
- undefined,
- ),
- ),
- ])
- ]),
- ),
- ts.factory.createInterfaceDeclaration(
- [ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
- ts.factory.createIdentifier('ILocale'),
- undefined,
- undefined,
- [
- ts.factory.createIndexSignature(
- undefined,
- [
- ts.factory.createParameterDeclaration(
- undefined,
- undefined,
- ts.factory.createIdentifier('_'),
- undefined,
- ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
- undefined,
- ),
- ],
- ts.factory.createUnionTypeNode([
- ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
- ts.factory.createTypeReferenceNode(
- ts.factory.createIdentifier('ParameterizedString'),
- ),
- ts.factory.createTypeReferenceNode(
- ts.factory.createIdentifier('ILocale'),
- undefined,
- ),
- ]),
- ),
- ],
- ),
- ts.factory.createInterfaceDeclaration(
- [ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
- ts.factory.createIdentifier('Locale'),
- undefined,
- [
- ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [
- ts.factory.createExpressionWithTypeArguments(
- ts.factory.createIdentifier('ILocale'),
- undefined,
- ),
- ]),
- ],
- members,
- ),
- ts.factory.createVariableStatement(
- [ts.factory.createToken(ts.SyntaxKind.DeclareKeyword)],
- ts.factory.createVariableDeclarationList(
- [
- ts.factory.createVariableDeclaration(
- ts.factory.createIdentifier('locales'),
- undefined,
- ts.factory.createTypeLiteralNode([
- ts.factory.createIndexSignature(
- undefined,
- [
- ts.factory.createParameterDeclaration(
- undefined,
- undefined,
- ts.factory.createIdentifier('lang'),
- undefined,
- ts.factory.createKeywordTypeNode(
- ts.SyntaxKind.StringKeyword,
- ),
- undefined,
- ),
- ],
- ts.factory.createTypeReferenceNode(
- ts.factory.createIdentifier('Locale'),
- undefined,
- ),
- ),
- ]),
- undefined,
- ),
- ],
- ts.NodeFlags.Const,
- ),
- ),
- ts.factory.createFunctionDeclaration(
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
- undefined,
- ts.factory.createIdentifier('build'),
- undefined,
- [],
- ts.factory.createTypeReferenceNode(
- ts.factory.createIdentifier('Locale'),
- undefined,
- ),
- undefined,
- ),
- ts.factory.createExportDefault(ts.factory.createIdentifier('locales')),
- ];
- ts.addSyntheticLeadingComment(
- elements[0],
- ts.SyntaxKind.MultiLineCommentTrivia,
- ' eslint-disable ',
- true,
- );
- ts.addSyntheticLeadingComment(
- elements[0],
- ts.SyntaxKind.SingleLineCommentTrivia,
- ' This file is generated by locales/generateDTS.js',
- true,
- );
- ts.addSyntheticLeadingComment(
- elements[0],
- ts.SyntaxKind.SingleLineCommentTrivia,
- ' Do not edit this file directly.',
- true,
- );
- const printed = ts
- .createPrinter({
- newLine: ts.NewLineKind.LineFeed,
- })
- .printList(
- ts.ListFormat.MultiLine,
- ts.factory.createNodeArray(elements),
- ts.createSourceFile(
- 'index.d.ts',
- '',
- ts.ScriptTarget.ESNext,
- true,
- ts.ScriptKind.TS,
- ),
- );
-
- fs.writeFileSync(`${__dirname}/index.d.ts`, printed, 'utf-8');
-}
diff --git a/locales/index.js b/locales/index.js
deleted file mode 100644
index 6d9cf4796b..0000000000
--- a/locales/index.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Languages Loader
- */
-
-import * as fs from 'node:fs';
-import * as yaml from 'js-yaml';
-
-const merge = (...args) => args.reduce((a, c) => ({
- ...a,
- ...c,
- ...Object.entries(a)
- .filter(([k]) => c && typeof c[k] === 'object')
- .reduce((a, [k, v]) => (a[k] = merge(v, c[k]), a), {})
-}), {});
-
-const languages = [
- 'ar-SA',
- 'ca-ES',
- 'cs-CZ',
- 'da-DK',
- 'de-DE',
- 'en-US',
- 'es-ES',
- 'fr-FR',
- 'id-ID',
- 'it-IT',
- 'ja-JP',
- 'ja-KS',
- 'kab-KAB',
- 'kn-IN',
- 'ko-KR',
- 'nl-NL',
- 'no-NO',
- 'pl-PL',
- 'pt-PT',
- 'ru-RU',
- 'sk-SK',
- 'th-TH',
- 'tr-TR',
- 'ug-CN',
- 'uk-UA',
- 'vi-VN',
- 'zh-CN',
- 'zh-TW',
-];
-
-const primaries = {
- 'en': 'US',
- 'ja': 'JP',
- 'zh': 'CN',
-};
-
-// 何故か文字列にバックスペース文字が混入することがあり、YAMLが壊れるので取り除く
-const clean = (text) => text.replace(new RegExp(String.fromCodePoint(0x08), 'g'), '');
-
-export function build() {
- // vitestの挙動を調整するため、一度ローカル変数化する必要がある
- // https://github.com/vitest-dev/vitest/issues/3988#issuecomment-1686599577
- // https://github.com/misskey-dev/misskey/pull/14057#issuecomment-2192833785
- const metaUrl = import.meta.url;
- const locales = languages.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(new URL(`${c}.yml`, metaUrl), 'utf-8'))) || {}, a), {});
-
- // 空文字列が入ることがあり、フォールバックが動作しなくなるのでプロパティごと消す
- const removeEmpty = (obj) => {
- for (const [k, v] of Object.entries(obj)) {
- if (v === '') {
- delete obj[k];
- } else if (typeof v === 'object') {
- removeEmpty(v);
- }
- }
- return obj;
- };
- removeEmpty(locales);
-
- return Object.entries(locales)
- .reduce((a, [k, v]) => (a[k] = (() => {
- const [lang] = k.split('-');
- switch (k) {
- case 'ja-JP': return v;
- case 'ja-KS':
- case 'en-US': return merge(locales['ja-JP'], v);
- default: return merge(
- locales['ja-JP'],
- locales['en-US'],
- locales[`${lang}-${primaries[lang]}`] ?? {},
- v
- );
- }
- })(), a), {});
-}
-
-export default build();
diff --git a/locales/it-IT.yml b/locales/it-IT.yml
index e3cffed3a1..3b918e9c9f 100644
--- a/locales/it-IT.yml
+++ b/locales/it-IT.yml
@@ -83,6 +83,8 @@ files: "Allegati"
download: "Scarica"
driveFileDeleteConfirm: "Vuoi davvero eliminare il file \"{name}\", e le Note a cui è stato allegato?"
unfollowConfirm: "Vuoi davvero togliere il Following a {name}?"
+cancelFollowRequestConfirm: "Vuoi annullare la tua richiesta di follow inviata a {name}?"
+rejectFollowRequestConfirm: "Vuoi rifiutare la richiesta di follow ricevuta da {name}?"
exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando sarà compiuta, il file verrà aggiunto direttamente al Drive."
importRequested: "Hai richiesto un'importazione. Potrebbe richiedere un po' di tempo."
lists: "Liste"
@@ -2350,13 +2352,13 @@ _ago:
yearsAgo: "{n} anni fa"
invalid: "Niente da visualizzare"
_timeIn:
- seconds: "Dopo {n} secondi"
- minutes: "Dopo {n} minuti"
- hours: "Dopo {n} ore"
- days: "Dopo {n} giorni"
- weeks: "Dopo {n} settimane"
- months: "Dopo {n} mesi"
- years: "Dopo {n} anni"
+ seconds: "Tra {n} secondi"
+ minutes: "Tra {n} minuti"
+ hours: "Tra {n} ore"
+ days: "Tra {n} giorni"
+ weeks: "Tra {n} settimane"
+ months: "Tra {n} mesi"
+ years: "Tra {n} anni"
_time:
second: "s"
minute: "min"
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 8e4a52b68d..643095bc52 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -2890,6 +2890,15 @@ _deck:
usedAsMinWidthWhenFlexible: "「幅を自動調整」が有効の場合、これが幅の最小値となります"
flexible: "幅を自動調整"
enableSyncBetweenDevicesForProfiles: "プロファイル情報のデバイス間同期を有効にする"
+ showHowToUse: "UIの説明を見る"
+
+ _howToUse:
+ addColumn_title: "カラム追加"
+ addColumn_description: "カラムの種類を選んで追加できます。"
+ settings_title: "UI設定"
+ settings_description: "デッキUIの詳細設定を行えます。"
+ switchProfile_title: "プロファイル切り替え"
+ switchProfile_description: "UIのレイアウトをプロファイルとして保存し、いつでも切り替えられるようにできます。"
_columns:
main: "メイン"
diff --git a/locales/package.json b/locales/package.json
deleted file mode 100644
index bedb411a91..0000000000
--- a/locales/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "type": "module"
-}
diff --git a/locales/verify.js b/locales/verify.js
deleted file mode 100644
index a8e9875d6e..0000000000
--- a/locales/verify.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import locales from './index.js';
-
-let valid = true;
-
-function writeError(type, lang, tree, data) {
- process.stderr.write(JSON.stringify({ type, lang, tree, data }));
- process.stderr.write('\n');
- valid = false;
-}
-
-function verify(expected, actual, lang, trace) {
- for (let key in expected) {
- if (!Object.prototype.hasOwnProperty.call(actual, key)) {
- continue;
- }
- if (typeof expected[key] === 'object') {
- if (typeof actual[key] !== 'object') {
- writeError('mismatched_type', lang, trace ? `${trace}.${key}` : key, { expected: 'object', actual: typeof actual[key] });
- continue;
- }
- verify(expected[key], actual[key], lang, trace ? `${trace}.${key}` : key);
- } else if (typeof expected[key] === 'string') {
- switch (typeof actual[key]) {
- case 'object':
- writeError('mismatched_type', lang, trace ? `${trace}.${key}` : key, { expected: 'string', actual: 'object' });
- break;
- case 'undefined':
- continue;
- case 'string':
- const expectedParameters = new Set(expected[key].match(/\{[^}]+\}/g)?.map((s) => s.slice(1, -1)));
- const actualParameters = new Set(actual[key].match(/\{[^}]+\}/g)?.map((s) => s.slice(1, -1)));
- for (let parameter of expectedParameters) {
- if (!actualParameters.has(parameter)) {
- writeError('missing_parameter', lang, trace ? `${trace}.${key}` : key, { parameter });
- }
- }
- }
- }
- }
-}
-
-const { ['ja-JP']: original, ...verifiees } = locales;
-
-for (let lang in verifiees) {
- if (!Object.prototype.hasOwnProperty.call(locales, lang)) {
- continue;
- }
- verify(original, verifiees[lang], lang);
-}
-
-if (!valid) {
- process.exit(1);
-}
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index fcad02f241..caae928605 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -53,7 +53,7 @@ copyRemoteLink: "复制远程链接"
copyLinkRenote: "复制转帖链接"
delete: "删除"
deleteAndEdit: "删除并编辑"
-deleteAndEditConfirm: "要删除此帖并再次编辑吗?对此帖的所有回应、转发和回复也将被删除。"
+deleteAndEditConfirm: "要删除此帖并再次编辑吗?此帖下所有的回应、转发和回复也将被删除。"
addToList: "添加至列表"
addToAntenna: "添加到天线"
sendMessage: "发送消息"
@@ -136,7 +136,7 @@ emojiPicker: "表情符号选择器"
pinnedEmojisForReactionSettingDescription: "可以设置发表回应时置顶显示的表情符号"
pinnedEmojisSettingDescription: "可以设置输入表情符号时置顶显示的表情符号"
emojiPickerDisplay: "选择器显示设置"
-overwriteFromPinnedEmojisForReaction: "从「置顶(回应)」设置覆盖"
+overwriteFromPinnedEmojisForReaction: "使用「置顶(回应)」设置覆盖"
overwriteFromPinnedEmojis: "从全局设置覆盖"
reactionSettingDescription2: "拖动重新排序,单击删除,点击 + 添加。"
rememberNoteVisibility: "保存上次设置的可见性"
@@ -153,8 +153,8 @@ block: "拉黑"
unblock: "取消拉黑"
suspend: "冻结"
unsuspend: "解除冻结"
-blockConfirm: "确定要拉黑吗?"
-unblockConfirm: "确定要取消拉黑吗?"
+blockConfirm: "确定要屏蔽吗?"
+unblockConfirm: "确定要取消屏蔽吗?"
suspendConfirm: "要冻结吗?"
unsuspendConfirm: "要解除冻结吗?"
selectList: "选择列表"
@@ -174,7 +174,7 @@ emojiUrl: "emoji 地址"
addEmoji: "添加表情符号"
settingGuide: "推荐配置"
cacheRemoteFiles: "缓存远程文件"
-cacheRemoteFilesDescription: "启用此设定时,将在此服务器上缓存远程文件。虽然可以加快图片显示的速度,但是相对的会消耗大量的服务器存储空间。用户角色内的网盘容量决定了这个远程用户能在服务器上保留多少缓存。当超出了这个限制时,旧的文件将从缓存中被删除,成为链接。当禁用此设定时,则是从一开始就将远程文件保留为链接。此时推荐将 default.yml 的 proxyRemoteFiles 设置为 true 以优化缩略图生成及保护用户隐私。"
+cacheRemoteFilesDescription: "启用此设定时,将在此服务器上缓存远程文件。虽然可以加快图片显示的速度,但是相对的会消耗大量的服务器存储空间。用户角色内的网盘容量决定了这个远程用户能在服务器上保留多少缓存。当超出了这个限制时,旧的文件将从缓存中被删除,成为链接。当禁用此设定时,则是从一开始就将远程文件保留为链接。此时推荐将 的 proxyRemoteFiles 设置为 true 以优化缩略图生成及保护用户隐私。"
youCanCleanRemoteFilesCache: "可以使用文件管理的🗑️按钮来删除所有的缓存。"
cacheRemoteSensitiveFiles: "缓存远程敏感媒体文件"
cacheRemoteSensitiveFilesDescription: "如果禁用这项设定,远程服务器的敏感媒体将不会被缓存,而是直接链接。"
@@ -184,7 +184,7 @@ flagAsCat: "喵!!!!!!!!!!!!"
flagAsCatDescription: "喵喵喵??"
flagShowTimelineReplies: "在时间线上显示帖子的回复"
flagShowTimelineRepliesDescription: "启用时,时间线除了显示用户的帖子外,还会显示其他用户对帖子的回复。"
-autoAcceptFollowed: "自动允许来自我关注的用户对我的关注请求"
+autoAcceptFollowed: "自动允许回关请求"
addAccount: "添加账户"
reloadAccountsList: "更新账户列表"
loginFailed: "登录失败"
@@ -247,8 +247,8 @@ mediaSilencedInstancesDescription: "设置要隐藏媒体文件的服务器,
federationAllowedHosts: "允许联合的服务器"
federationAllowedHostsDescription: "设定允许联合的服务器,以换行分隔。"
muteAndBlock: "屏蔽/拉黑"
-mutedUsers: "已屏蔽用户"
-blockedUsers: "已拉黑的用户"
+mutedUsers: "已静音的用户"
+blockedUsers: "已屏蔽的用户"
noUsers: "无用户"
editProfile: "编辑资料"
noteDeleteConfirm: "确定要删除该帖子吗?"
@@ -877,7 +877,7 @@ noInquiryUrlWarning: "尚未设置联络地址。"
noBotProtectionWarning: "尚未设置 Bot 防御。"
configure: "设置"
postToGallery: "创建新图集"
-postToHashtag: "投稿到这个标签"
+postToHashtag: "发布至该话题"
gallery: "图集"
recentPosts: "最新发布"
popularPosts: "热门投稿"
@@ -1344,7 +1344,7 @@ skip: "跳过"
restore: "恢复"
syncBetweenDevices: "设备间同步"
preferenceSyncConflictTitle: "服务器上已存在设定值"
-preferenceSyncConflictText: "服务器上已有此设置的设定值。要覆盖哪个设定值?"
+preferenceSyncConflictText: "即将保存设定值到服务器,但检测到服务器上已有此设置的设定值。要使用哪个设定值?"
preferenceSyncConflictChoiceMerge: "合并"
preferenceSyncConflictChoiceServer: "服务器上的设定值"
preferenceSyncConflictChoiceDevice: "设备上的设定值"
@@ -3146,7 +3146,7 @@ _selfXssPrevention:
description3: "详情请看这里。{link}"
_followRequest:
recieved: "收到的请求"
- sent: "已发送的请求"
+ sent: "发送的请求"
_remoteLookupErrors:
_federationNotAllowed:
title: "无法与此服务器通信"
@@ -3270,7 +3270,7 @@ _watermarkEditor:
driveFileTypeWarn: "不支持此文件"
driveFileTypeWarnDescription: "请选择图像文件"
title: "编辑水印"
- cover: "覆盖全体"
+ cover: "覆盖所有"
repeat: "平铺"
preserveBoundingRect: "调整为旋转时不超出范围"
opacity: "不透明度"
diff --git a/package.json b/package.json
index bcbd1315f9..42377ca622 100644
--- a/package.json
+++ b/package.json
@@ -1,33 +1,36 @@
{
"name": "misskey",
- "version": "2025.11.1",
+ "version": "2025.12.2-beta.2",
"codename": "nasubi",
"repository": {
"type": "git",
"url": "https://github.com/misskey-dev/misskey.git"
},
- "packageManager": "pnpm@10.22.0",
+ "packageManager": "pnpm@10.25.0",
"workspaces": [
- "packages/frontend-shared",
- "packages/frontend",
- "packages/frontend-embed",
- "packages/icons-subsetter",
- "packages/backend",
- "packages/sw",
"packages/misskey-js",
+ "packages/i18n",
"packages/misskey-reversi",
- "packages/misskey-bubble-game"
+ "packages/misskey-bubble-game",
+ "packages/icons-subsetter",
+ "packages/frontend-shared",
+ "packages/frontend-builder",
+ "packages/sw",
+ "packages/backend",
+ "packages/frontend",
+ "packages/frontend-embed"
],
"private": true,
"scripts": {
+ "compile-config": "cd packages/backend && pnpm compile-config",
"build-pre": "node ./scripts/build-pre.js",
"build-assets": "node ./scripts/build-assets.mjs",
"build": "pnpm build-pre && pnpm -r build && pnpm build-assets",
"build-storybook": "pnpm --filter frontend build-storybook",
"build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json --no-build && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api",
- "start": "pnpm check:connect && cd packages/backend && node ./built/boot/entry.js",
- "start:inspect": "cd packages/backend && node --inspect ./built/boot/entry.js",
- "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && cross-env NODE_ENV=test node ./built/boot/entry.js",
+ "start": "pnpm check:connect && cd packages/backend && pnpm compile-config && node ./built/boot/entry.js",
+ "start:inspect": "cd packages/backend && pnpm compile-config && node --inspect ./built/boot/entry.js",
+ "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./built/boot/entry.js",
"cli": "cd packages/backend && pnpm cli",
"init": "pnpm migrate",
"migrate": "cd packages/backend && pnpm migrate",
@@ -50,15 +53,13 @@
"cleanall": "pnpm clean-all"
},
"resolutions": {
- "chokidar": "4.0.3",
+ "chokidar": "5.0.0",
"lodash": "4.17.21"
},
"dependencies": {
"cssnano": "7.1.2",
- "esbuild": "0.27.0",
- "execa": "9.6.0",
- "fast-glob": "3.3.3",
- "glob": "13.0.0",
+ "esbuild": "0.27.1",
+ "execa": "9.6.1",
"ignore-walk": "8.0.0",
"js-yaml": "4.1.1",
"postcss": "8.5.6",
@@ -70,16 +71,16 @@
"@eslint/js": "9.39.1",
"@misskey-dev/eslint-plugin": "2.2.0",
"@types/js-yaml": "4.0.9",
- "@types/node": "24.10.1",
- "@typescript-eslint/eslint-plugin": "8.47.0",
- "@typescript-eslint/parser": "8.47.0",
+ "@types/node": "24.10.2",
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0",
"cross-env": "10.1.0",
- "cypress": "15.6.0",
+ "cypress": "15.7.1",
"eslint": "9.39.1",
"globals": "16.5.0",
"ncp": "2.0.0",
- "pnpm": "10.22.0",
- "start-server-and-test": "2.1.2"
+ "pnpm": "10.25.0",
+ "start-server-and-test": "2.1.3"
},
"optionalDependencies": {
"@tensorflow/tfjs-core": "4.22.0"
diff --git a/packages/backend/.swcrc b/packages/backend/.swcrc
index f4bf7a4d2a..7e1767a67a 100644
--- a/packages/backend/.swcrc
+++ b/packages/backend/.swcrc
@@ -3,12 +3,17 @@
"jsc": {
"parser": {
"syntax": "typescript",
+ "jsx": true,
"dynamicImport": true,
"decorators": true
},
"transform": {
"legacyDecorator": true,
- "decoratorMetadata": true
+ "decoratorMetadata": true,
+ "react": {
+ "runtime": "automatic",
+ "importSource": "@kitajs/html"
+ }
},
"experimental": {
"keepImportAssertions": true
diff --git a/packages/backend/src/server/web/bios.css b/packages/backend/assets/misc/bios.css
similarity index 100%
rename from packages/backend/src/server/web/bios.css
rename to packages/backend/assets/misc/bios.css
diff --git a/packages/backend/src/server/web/bios.js b/packages/backend/assets/misc/bios.js
similarity index 100%
rename from packages/backend/src/server/web/bios.js
rename to packages/backend/assets/misc/bios.js
diff --git a/packages/backend/src/server/web/cli.css b/packages/backend/assets/misc/cli.css
similarity index 100%
rename from packages/backend/src/server/web/cli.css
rename to packages/backend/assets/misc/cli.css
diff --git a/packages/backend/src/server/web/cli.js b/packages/backend/assets/misc/cli.js
similarity index 100%
rename from packages/backend/src/server/web/cli.js
rename to packages/backend/assets/misc/cli.js
diff --git a/packages/backend/src/server/web/error.css b/packages/backend/assets/misc/error.css
similarity index 100%
rename from packages/backend/src/server/web/error.css
rename to packages/backend/assets/misc/error.css
diff --git a/packages/backend/src/server/web/error.js b/packages/backend/assets/misc/error.js
similarity index 100%
rename from packages/backend/src/server/web/error.js
rename to packages/backend/assets/misc/error.js
diff --git a/packages/backend/assets/misc/flush.js b/packages/backend/assets/misc/flush.js
new file mode 100644
index 0000000000..991b8ea808
--- /dev/null
+++ b/packages/backend/assets/misc/flush.js
@@ -0,0 +1,46 @@
+(async () => {
+ const msg = document.getElementById('msg');
+ const successText = `\nSuccess Flush! Back to Misskey\n成功しました。Misskeyを開き直してください。`;
+
+ if (!document.cookie) {
+ message('Your site data is fully cleared by your browser.');
+ message(successText);
+ } else {
+ message('Your browser does not support Clear-Site-Data header. Start opportunistic flushing.');
+ try {
+ localStorage.clear();
+ message('localStorage cleared.');
+
+ const idbPromises = ['MisskeyClient', 'keyval-store'].map((name, i, arr) => new Promise((res, rej) => {
+ const delidb = indexedDB.deleteDatabase(name);
+ delidb.onsuccess = () => res(message(`indexedDB "${name}" cleared. (${i + 1}/${arr.length})`));
+ delidb.onerror = e => rej(e)
+ }));
+
+ await Promise.all(idbPromises);
+
+ if (navigator.serviceWorker.controller) {
+ navigator.serviceWorker.controller.postMessage('clear');
+ await navigator.serviceWorker.getRegistrations()
+ .then(registrations => {
+ return Promise.all(registrations.map(registration => registration.unregister()));
+ })
+ .catch(e => { throw new Error(e) });
+ }
+
+ message(successText);
+ } catch (e) {
+ message(`\n${e}\n\nFlush Failed. Please retry.\n失敗しました。もう一度試してみてください。`);
+ message(`\nIf you retry more than 3 times, try manually clearing the browser cache or contact to instance admin.\n3回以上試しても失敗する場合、ブラウザのキャッシュを手動で消去し、それでもだめならインスタンス管理者に連絡してみてください。\n`)
+
+ console.error(e);
+ setTimeout(() => {
+ location = '/';
+ }, 10000)
+ }
+ }
+
+ function message(text) {
+ msg.insertAdjacentHTML('beforeend', `
[${(new Date()).toString()}] ${text.replace(/\n/g,'
')}
)
- case 'pre': {
- if (node.childNodes.length === 1 && node.childNodes[0].nodeName === 'code') {
+ case 'PRE': {
+ if (node.childNodes.length === 1 && (node.childNodes[0] instanceof htmlParser.HTMLElement) && node.childNodes[0].tagName === 'CODE') {
text += '\n```\n';
text += getText(node.childNodes[0]);
text += '\n```\n';
+ } else if (node.childNodes.length === 1 && (node.childNodes[0] instanceof htmlParser.TextNode) && node.childNodes[0].textContent.startsWith('') && node.childNodes[0].textContent.endsWith('')) {
+ text += '\n```\n';
+ text += node.childNodes[0].textContent.slice(6, -7);
+ text += '\n```\n';
} else {
- appendChildren(node.childNodes);
+ analyzeChildren(node.childNodes);
}
break;
}
// inline code ()
- case 'code': {
+ case 'CODE': {
text += '`';
- appendChildren(node.childNodes);
+ analyzeChildren(node.childNodes);
text += '`';
break;
}
- case 'blockquote': {
+ case 'BLOCKQUOTE': {
const t = getText(node);
if (t) {
text += '\n> ';
@@ -235,33 +236,33 @@ export class MfmService {
break;
}
- case 'p':
- case 'h2':
- case 'h3':
- case 'h4':
- case 'h5':
- case 'h6': {
+ case 'P':
+ case 'H2':
+ case 'H3':
+ case 'H4':
+ case 'H5':
+ case 'H6': {
text += '\n\n';
- appendChildren(node.childNodes);
+ analyzeChildren(node.childNodes);
break;
}
// other block elements
- case 'div':
- case 'header':
- case 'footer':
- case 'article':
- case 'li':
- case 'dt':
- case 'dd': {
+ case 'DIV':
+ case 'HEADER':
+ case 'FOOTER':
+ case 'ARTICLE':
+ case 'LI':
+ case 'DT':
+ case 'DD': {
text += '\n';
- appendChildren(node.childNodes);
+ analyzeChildren(node.childNodes);
break;
}
default: // includes inline elements
{
- appendChildren(node.childNodes);
+ analyzeChildren(node.childNodes);
break;
}
}
@@ -269,52 +270,35 @@ export class MfmService {
}
@bindThis
- public toHtml(nodes: mfm.MfmNode[] | null, mentionedRemoteUsers: IMentionedRemoteUsers = [], additionalAppenders: Appender[] = []) {
+ public toHtml(nodes: mfm.MfmNode[] | null, mentionedRemoteUsers: IMentionedRemoteUsers = [], extraHtml: string | null = null) {
if (nodes == null) {
return null;
}
- const { happyDOM, window } = new Window();
-
- const doc = window.document;
-
- const body = doc.createElement('p');
-
- function appendChildren(children: mfm.MfmNode[], targetElement: any): void {
- if (children) {
- for (const child of children.map(x => (handlers as any)[x.type](x))) targetElement.appendChild(child);
- }
+ function toHtml(children?: mfm.MfmNode[]): string {
+ if (children == null) return '';
+ return children.map(x => handlers[x.type](x)).join('');
}
function fnDefault(node: mfm.MfmFn) {
- const el = doc.createElement('i');
- appendChildren(node.children, el);
- return el;
+ return `${toHtml(node.children)}`;
}
- const handlers: { [K in mfm.MfmNode['type']]: (node: mfm.NodeType) => any } = {
+ const handlers = {
bold: (node) => {
- const el = doc.createElement('b');
- appendChildren(node.children, el);
- return el;
+ return `${toHtml(node.children)}`;
},
small: (node) => {
- const el = doc.createElement('small');
- appendChildren(node.children, el);
- return el;
+ return `${toHtml(node.children)}`;
},
strike: (node) => {
- const el = doc.createElement('del');
- appendChildren(node.children, el);
- return el;
+ return `${toHtml(node.children)}`;
},
italic: (node) => {
- const el = doc.createElement('i');
- appendChildren(node.children, el);
- return el;
+ return `${toHtml(node.children)}`;
},
fn: (node) => {
@@ -323,10 +307,7 @@ export class MfmService {
const text = node.children[0].type === 'text' ? node.children[0].props.text : '';
try {
const date = new Date(parseInt(text, 10) * 1000);
- const el = doc.createElement('time');
- el.setAttribute('datetime', date.toISOString());
- el.textContent = date.toISOString();
- return el;
+ return ``;
} catch (err) {
return fnDefault(node);
}
@@ -336,21 +317,9 @@ export class MfmService {
if (node.children.length === 1) {
const child = node.children[0];
const text = child.type === 'text' ? child.props.text : '';
- const rubyEl = doc.createElement('ruby');
- const rtEl = doc.createElement('rt');
- // ruby未対応のHTMLサニタイザーを通したときにルビが「劉備(りゅうび)」となるようにする
- const rpStartEl = doc.createElement('rp');
- rpStartEl.appendChild(doc.createTextNode('('));
- const rpEndEl = doc.createElement('rp');
- rpEndEl.appendChild(doc.createTextNode(')'));
-
- rubyEl.appendChild(doc.createTextNode(text.split(' ')[0]));
- rtEl.appendChild(doc.createTextNode(text.split(' ')[1]));
- rubyEl.appendChild(rpStartEl);
- rubyEl.appendChild(rtEl);
- rubyEl.appendChild(rpEndEl);
- return rubyEl;
+ // ruby未対応のHTMLサニタイザーを通したときにルビが「対象テキスト(ルビテキスト)」にフォールバックするようにする
+ return `${escapeHtml(text.split(' ')[0])}`;
} else {
const rt = node.children.at(-1);
@@ -359,21 +328,9 @@ export class MfmService {
}
const text = rt.type === 'text' ? rt.props.text : '';
- const rubyEl = doc.createElement('ruby');
- const rtEl = doc.createElement('rt');
- // ruby未対応のHTMLサニタイザーを通したときにルビが「劉備(りゅうび)」となるようにする
- const rpStartEl = doc.createElement('rp');
- rpStartEl.appendChild(doc.createTextNode('('));
- const rpEndEl = doc.createElement('rp');
- rpEndEl.appendChild(doc.createTextNode(')'));
-
- appendChildren(node.children.slice(0, node.children.length - 1), rubyEl);
- rtEl.appendChild(doc.createTextNode(text.trim()));
- rubyEl.appendChild(rpStartEl);
- rubyEl.appendChild(rtEl);
- rubyEl.appendChild(rpEndEl);
- return rubyEl;
+ // ruby未対応のHTMLサニタイザーを通したときにルビが「対象テキスト(ルビテキスト)」にフォールバックするようにする
+ return `${toHtml(node.children.slice(0, node.children.length - 1))}`;
}
}
@@ -384,125 +341,98 @@ export class MfmService {
},
blockCode: (node) => {
- const pre = doc.createElement('pre');
- const inner = doc.createElement('code');
- inner.textContent = node.props.code;
- pre.appendChild(inner);
- return pre;
+ return `${escapeHtml(node.props.code)}
`;
},
center: (node) => {
- const el = doc.createElement('div');
- appendChildren(node.children, el);
- return el;
+ return `${toHtml(node.children)}`;
},
emojiCode: (node) => {
- return doc.createTextNode(`\u200B:${node.props.name}:\u200B`);
+ return `\u200B:${escapeHtml(node.props.name)}:\u200B`;
},
unicodeEmoji: (node) => {
- return doc.createTextNode(node.props.emoji);
+ return node.props.emoji;
},
hashtag: (node) => {
- const a = doc.createElement('a');
- a.setAttribute('href', `${this.config.url}/tags/${node.props.hashtag}`);
- a.textContent = `#${node.props.hashtag}`;
- a.setAttribute('rel', 'tag');
- return a;
+ return `#${escapeHtml(node.props.hashtag)}`;
},
inlineCode: (node) => {
- const el = doc.createElement('code');
- el.textContent = node.props.code;
- return el;
+ return `${escapeHtml(node.props.code)}`;
},
mathInline: (node) => {
- const el = doc.createElement('code');
- el.textContent = node.props.formula;
- return el;
+ return `${escapeHtml(node.props.formula)}`;
},
mathBlock: (node) => {
- const el = doc.createElement('code');
- el.textContent = node.props.formula;
- return el;
+ return `${escapeHtml(node.props.formula)}
`;
},
link: (node) => {
- const a = doc.createElement('a');
- a.setAttribute('href', node.props.url);
- appendChildren(node.children, a);
- return a;
+ try {
+ const url = new URL(node.props.url);
+ return `${toHtml(node.children)}`;
+ } catch (err) {
+ return `[${toHtml(node.children)}](${escapeHtml(node.props.url)})`;
+ }
},
mention: (node) => {
- const a = doc.createElement('a');
const { username, host, acct } = node.props;
const remoteUserInfo = mentionedRemoteUsers.find(remoteUser => remoteUser.username.toLowerCase() === username.toLowerCase() && remoteUser.host?.toLowerCase() === host?.toLowerCase());
- a.setAttribute('href', remoteUserInfo
+ const href = remoteUserInfo
? (remoteUserInfo.url ? remoteUserInfo.url : remoteUserInfo.uri)
- : `${this.config.url}/${acct.endsWith(`@${this.config.url}`) ? acct.substring(0, acct.length - this.config.url.length - 1) : acct}`);
- a.className = 'u-url mention';
- a.textContent = acct;
- return a;
+ : `${this.config.url}/${acct.endsWith(`@${this.config.url}`) ? acct.substring(0, acct.length - this.config.url.length - 1) : acct}`;
+ try {
+ const url = new URL(href);
+ return `${escapeHtml(acct)}`;
+ } catch (err) {
+ return escapeHtml(acct);
+ }
},
quote: (node) => {
- const el = doc.createElement('blockquote');
- appendChildren(node.children, el);
- return el;
+ return `${toHtml(node.children)}
`;
},
text: (node) => {
if (!node.props.text.match(/[\r\n]/)) {
- return doc.createTextNode(node.props.text);
+ return escapeHtml(node.props.text);
}
- const el = doc.createElement('span');
- const nodes = node.props.text.split(/\r\n|\r|\n/).map(x => doc.createTextNode(x));
+ let html = '';
- for (const x of intersperse('br', nodes)) {
- el.appendChild(x === 'br' ? doc.createElement('br') : x);
+ const lines = node.props.text.split(/\r\n|\r|\n/).map(x => escapeHtml(x));
+
+ for (const x of intersperse('br', lines)) {
+ html += x === 'br' ? '
' : x;
}
- return el;
+ return html;
},
url: (node) => {
- const a = doc.createElement('a');
- a.setAttribute('href', node.props.url);
- a.textContent = node.props.url;
- return a;
+ try {
+ const url = new URL(node.props.url);
+ return `${escapeHtml(node.props.url)}`;
+ } catch (err) {
+ return escapeHtml(node.props.url);
+ }
},
search: (node) => {
- const a = doc.createElement('a');
- a.setAttribute('href', `https://www.google.com/search?q=${node.props.query}`);
- a.textContent = node.props.content;
- return a;
+ return `${escapeHtml(node.props.content)}`;
},
plain: (node) => {
- const el = doc.createElement('span');
- appendChildren(node.children, el);
- return el;
+ return `${toHtml(node.children)}`;
},
- };
+ } satisfies { [K in mfm.MfmNode['type']]: (node: mfm.NodeType) => string } as { [K in mfm.MfmNode['type']]: (node: mfm.MfmNode) => string };
- appendChildren(nodes, body);
-
- for (const additionalAppender of additionalAppenders) {
- additionalAppender(doc, body);
- }
-
- // Remove the unnecessary namespace
- const serialized = new XMLSerializer().serializeToString(body).replace(/^\s*/, '
');
-
- happyDOM.close().catch(err => {});
-
- return serialized;
+ return `${toHtml(nodes)}${extraHtml ?? ''}`;
}
}
diff --git a/packages/backend/src/core/NotificationService.ts b/packages/backend/src/core/NotificationService.ts
index eeade4569b..310ffec7ce 100644
--- a/packages/backend/src/core/NotificationService.ts
+++ b/packages/backend/src/core/NotificationService.ts
@@ -202,7 +202,7 @@ export class NotificationService implements OnApplicationShutdown {
}
// TODO
- //const locales = await import('../../../../locales/index.js');
+ //const locales = await import('i18n');
// TODO: locale ファイルをクライアント用とサーバー用で分けたい
@@ -271,7 +271,7 @@ export class NotificationService implements OnApplicationShutdown {
let untilTime = untilId ? this.toXListId(untilId) : null;
let notifications: MiNotification[];
- for (;;) {
+ for (; ;) {
let notificationsRes: [id: string, fields: string[]][];
// sinceidのみの場合は古い順、そうでない場合は新しい順。 QueryService.makePaginationQueryも参照
diff --git a/packages/backend/src/core/WebAuthnService.ts b/packages/backend/src/core/WebAuthnService.ts
index 372e1e2ab7..31c8d67c60 100644
--- a/packages/backend/src/core/WebAuthnService.ts
+++ b/packages/backend/src/core/WebAuthnService.ts
@@ -66,7 +66,6 @@ export class WebAuthnService {
userID: isoUint8Array.fromUTF8String(userId),
userName: userName,
userDisplayName: userDisplayName,
- attestationType: 'indirect',
excludeCredentials: keys.map(key => (<{ id: string; transports?: AuthenticatorTransportFuture[]; }>{
id: key.id,
transports: key.transports ?? undefined,
diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts
index e88f60b806..81637580e3 100644
--- a/packages/backend/src/core/activitypub/ApInboxService.ts
+++ b/packages/backend/src/core/activitypub/ApInboxService.ts
@@ -5,6 +5,7 @@
import { Inject, Injectable } from '@nestjs/common';
import { In } from 'typeorm';
+import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import type { Config } from '@/config.js';
import { UserFollowingService } from '@/core/UserFollowingService.js';
@@ -14,8 +15,8 @@ import { NotePiningService } from '@/core/NotePiningService.js';
import { UserBlockingService } from '@/core/UserBlockingService.js';
import { NoteDeleteService } from '@/core/NoteDeleteService.js';
import { NoteCreateService } from '@/core/NoteCreateService.js';
+import { acquireApObjectLock } from '@/misc/distributed-lock.js';
import { concat, toArray, toSingle, unique } from '@/misc/prelude/array.js';
-import { AppLockService } from '@/core/AppLockService.js';
import type Logger from '@/logger.js';
import { IdService } from '@/core/IdService.js';
import { StatusError } from '@/misc/status-error.js';
@@ -48,8 +49,8 @@ export class ApInboxService {
@Inject(DI.config)
private config: Config,
- @Inject(DI.meta)
- private meta: MiMeta,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
@@ -76,7 +77,6 @@ export class ApInboxService {
private userBlockingService: UserBlockingService,
private noteCreateService: NoteCreateService,
private noteDeleteService: NoteDeleteService,
- private appLockService: AppLockService,
private apResolverService: ApResolverService,
private apDbResolverService: ApDbResolverService,
private apLoggerService: ApLoggerService,
@@ -311,7 +311,7 @@ export class ApInboxService {
// アナウンス先が許可されているかチェック
if (!this.utilityService.isFederationAllowedUri(uri)) return;
- const unlock = await this.appLockService.getApLock(uri);
+ const unlock = await acquireApObjectLock(this.redisClient, uri);
try {
// 既に同じURIを持つものが登録されていないかチェック
@@ -438,7 +438,7 @@ export class ApInboxService {
}
}
- const unlock = await this.appLockService.getApLock(uri);
+ const unlock = await acquireApObjectLock(this.redisClient, uri);
try {
const exist = await this.apNoteService.fetchNote(note);
@@ -522,7 +522,7 @@ export class ApInboxService {
private async deleteNote(actor: MiRemoteUser, uri: string): Promise {
this.logger.info(`Deleting the Note: ${uri}`);
- const unlock = await this.appLockService.getApLock(uri);
+ const unlock = await acquireApObjectLock(this.redisClient, uri);
try {
const note = await this.apDbResolverService.getNoteFromApId(uri);
diff --git a/packages/backend/src/core/activitypub/ApMfmService.ts b/packages/backend/src/core/activitypub/ApMfmService.ts
index f4c07e472c..a928ed5ccf 100644
--- a/packages/backend/src/core/activitypub/ApMfmService.ts
+++ b/packages/backend/src/core/activitypub/ApMfmService.ts
@@ -5,7 +5,7 @@
import { Injectable } from '@nestjs/common';
import * as mfm from 'mfm-js';
-import { MfmService, Appender } from '@/core/MfmService.js';
+import { MfmService } from '@/core/MfmService.js';
import type { MiNote } from '@/models/Note.js';
import { bindThis } from '@/decorators.js';
import { extractApHashtagObjects } from './models/tag.js';
@@ -25,17 +25,17 @@ export class ApMfmService {
}
@bindThis
- public getNoteHtml(note: Pick, additionalAppender: Appender[] = []) {
+ public getNoteHtml(note: Pick, extraHtml: string | null = null) {
let noMisskeyContent = false;
const srcMfm = (note.text ?? '');
const parsed = mfm.parse(srcMfm);
- if (!additionalAppender.length && parsed.every(n => ['text', 'unicodeEmoji', 'emojiCode', 'mention', 'hashtag', 'url'].includes(n.type))) {
+ if (extraHtml == null && parsed.every(n => ['text', 'unicodeEmoji', 'emojiCode', 'mention', 'hashtag', 'url'].includes(n.type))) {
noMisskeyContent = true;
}
- const content = this.mfmService.toHtml(parsed, JSON.parse(note.mentionedRemoteUsers), additionalAppender);
+ const content = this.mfmService.toHtml(parsed, JSON.parse(note.mentionedRemoteUsers), extraHtml);
return {
content,
diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts
index 55521d6e3a..4570977c5d 100644
--- a/packages/backend/src/core/activitypub/ApRendererService.ts
+++ b/packages/backend/src/core/activitypub/ApRendererService.ts
@@ -19,7 +19,7 @@ import type { MiEmoji } from '@/models/Emoji.js';
import type { MiPoll } from '@/models/Poll.js';
import type { MiPollVote } from '@/models/PollVote.js';
import { UserKeypairService } from '@/core/UserKeypairService.js';
-import { MfmService, type Appender } from '@/core/MfmService.js';
+import { MfmService } from '@/core/MfmService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
import type { MiUserKeypair } from '@/models/UserKeypair.js';
@@ -28,6 +28,7 @@ import { bindThis } from '@/decorators.js';
import { CustomEmojiService } from '@/core/CustomEmojiService.js';
import { IdService } from '@/core/IdService.js';
import { UtilityService } from '@/core/UtilityService.js';
+import { escapeHtml } from '@/misc/escape-html.js';
import { JsonLdService } from './JsonLdService.js';
import { ApMfmService } from './ApMfmService.js';
import { CONTEXT } from './misc/contexts.js';
@@ -384,7 +385,7 @@ export class ApRendererService {
inReplyTo = null;
}
- let quote;
+ let quote: string | undefined;
if (note.renoteId) {
const renote = await this.notesRepository.findOneBy({ id: note.renoteId });
@@ -430,29 +431,18 @@ export class ApRendererService {
poll = await this.pollsRepository.findOneBy({ noteId: note.id });
}
- const apAppend: Appender[] = [];
+ let extraHtml: string | null = null;
- if (quote) {
+ if (quote != null) {
// Append quote link as `
RE: ...`
- // the claas name `quote-inline` is used in non-misskey clients for styling quote notes.
+ // the class name `quote-inline` is used in non-misskey clients for styling quote notes.
// For compatibility, the span part should be kept as possible.
- apAppend.push((doc, body) => {
- body.appendChild(doc.createElement('br'));
- body.appendChild(doc.createElement('br'));
- const span = doc.createElement('span');
- span.className = 'quote-inline';
- span.appendChild(doc.createTextNode('RE: '));
- const link = doc.createElement('a');
- link.setAttribute('href', quote);
- link.textContent = quote;
- span.appendChild(link);
- body.appendChild(span);
- });
+ extraHtml = `
RE: ${escapeHtml(quote)}`;
}
const summary = note.cw === '' ? String.fromCharCode(0x200B) : note.cw;
- const { content, noMisskeyContent } = this.apMfmService.getNoteHtml(note, apAppend);
+ const { content, noMisskeyContent } = this.apMfmService.getNoteHtml(note, extraHtml);
const emojis = await this.getEmojis(note.emojis);
const apemojis = emojis.filter(emoji => !emoji.localOnly).map(emoji => this.renderEmoji(emoji));
diff --git a/packages/backend/src/core/activitypub/ApRequestService.ts b/packages/backend/src/core/activitypub/ApRequestService.ts
index 61d328ccac..49298a1d22 100644
--- a/packages/backend/src/core/activitypub/ApRequestService.ts
+++ b/packages/backend/src/core/activitypub/ApRequestService.ts
@@ -6,7 +6,7 @@
import * as crypto from 'node:crypto';
import { URL } from 'node:url';
import { Inject, Injectable } from '@nestjs/common';
-import { Window } from 'happy-dom';
+import * as htmlParser from 'node-html-parser';
import { DI } from '@/di-symbols.js';
import type { Config } from '@/config.js';
import type { MiUser } from '@/models/User.js';
@@ -215,29 +215,9 @@ export class ApRequestService {
_followAlternate === true
) {
const html = await res.text();
- const { window, happyDOM } = new Window({
- settings: {
- disableJavaScriptEvaluation: true,
- disableJavaScriptFileLoading: true,
- disableCSSFileLoading: true,
- disableComputedStyleRendering: true,
- handleDisabledFileLoadingAsSuccess: true,
- navigation: {
- disableMainFrameNavigation: true,
- disableChildFrameNavigation: true,
- disableChildPageNavigation: true,
- disableFallbackToSetURL: true,
- },
- timer: {
- maxTimeout: 0,
- maxIntervalTime: 0,
- maxIntervalIterations: 0,
- },
- },
- });
- const document = window.document;
+
try {
- document.documentElement.innerHTML = html;
+ const document = htmlParser.parse(html);
const alternate = document.querySelector('head > link[rel="alternate"][type="application/activity+json"]');
if (alternate) {
@@ -248,8 +228,6 @@ export class ApRequestService {
}
} catch (e) {
// something went wrong parsing the HTML, ignore the whole thing
- } finally {
- happyDOM.close().catch(err => {});
}
}
//#endregion
diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts
index 8abacd293f..214d32f67f 100644
--- a/packages/backend/src/core/activitypub/models/ApNoteService.ts
+++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts
@@ -5,14 +5,15 @@
import { forwardRef, Inject, Injectable } from '@nestjs/common';
import { In } from 'typeorm';
+import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import type { PollsRepository, EmojisRepository, MiMeta } from '@/models/_.js';
import type { Config } from '@/config.js';
import type { MiRemoteUser } from '@/models/User.js';
import type { MiNote } from '@/models/Note.js';
+import { acquireApObjectLock } from '@/misc/distributed-lock.js';
import { toArray, toSingle, unique } from '@/misc/prelude/array.js';
import type { MiEmoji } from '@/models/Emoji.js';
-import { AppLockService } from '@/core/AppLockService.js';
import type { MiDriveFile } from '@/models/DriveFile.js';
import { NoteCreateService } from '@/core/NoteCreateService.js';
import type Logger from '@/logger.js';
@@ -48,6 +49,9 @@ export class ApNoteService {
@Inject(DI.meta)
private meta: MiMeta,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
@Inject(DI.pollsRepository)
private pollsRepository: PollsRepository,
@@ -67,7 +71,6 @@ export class ApNoteService {
private apMentionService: ApMentionService,
private apImageService: ApImageService,
private apQuestionService: ApQuestionService,
- private appLockService: AppLockService,
private pollService: PollService,
private noteCreateService: NoteCreateService,
private apDbResolverService: ApDbResolverService,
@@ -354,7 +357,7 @@ export class ApNoteService {
throw new StatusError('blocked host', 451);
}
- const unlock = await this.appLockService.getApLock(uri);
+ const unlock = await acquireApObjectLock(this.redisClient, uri);
try {
//#region このサーバーに既に登録されていたらそれを返す
diff --git a/packages/backend/src/core/chart/charts/active-users.ts b/packages/backend/src/core/chart/charts/active-users.ts
index 05905f3782..7b9840af87 100644
--- a/packages/backend/src/core/chart/charts/active-users.ts
+++ b/packages/backend/src/core/chart/charts/active-users.ts
@@ -5,11 +5,12 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
-import { AppLockService } from '@/core/AppLockService.js';
+import * as Redis from 'ioredis';
import type { MiUser } from '@/models/User.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import { IdService } from '@/core/IdService.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/active-users.js';
@@ -28,11 +29,13 @@ export default class ActiveUsersChart extends Chart { // eslint-d
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
private chartLoggerService: ChartLoggerService,
private idService: IdService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/ap-request.ts b/packages/backend/src/core/chart/charts/ap-request.ts
index 04e771a95b..ed790de7b5 100644
--- a/packages/backend/src/core/chart/charts/ap-request.ts
+++ b/packages/backend/src/core/chart/charts/ap-request.ts
@@ -5,9 +5,10 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
-import { AppLockService } from '@/core/AppLockService.js';
+import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/ap-request.js';
@@ -22,10 +23,12 @@ export default class ApRequestChart extends Chart { // eslint-dis
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/drive.ts b/packages/backend/src/core/chart/charts/drive.ts
index 613e074a9f..782873809a 100644
--- a/packages/backend/src/core/chart/charts/drive.ts
+++ b/packages/backend/src/core/chart/charts/drive.ts
@@ -5,10 +5,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { MiDriveFile } from '@/models/DriveFile.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/drive.js';
@@ -23,10 +24,12 @@ export default class DriveChart extends Chart { // eslint-disable
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/federation.ts b/packages/backend/src/core/chart/charts/federation.ts
index c9b43cc66d..b7a7f640b8 100644
--- a/packages/backend/src/core/chart/charts/federation.ts
+++ b/packages/backend/src/core/chart/charts/federation.ts
@@ -5,10 +5,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { FollowingsRepository, InstancesRepository, MiMeta } from '@/models/_.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/federation.js';
@@ -26,16 +27,18 @@ export default class FederationChart extends Chart { // eslint-di
@Inject(DI.meta)
private meta: MiMeta,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
@Inject(DI.followingsRepository)
private followingsRepository: FollowingsRepository,
@Inject(DI.instancesRepository)
private instancesRepository: InstancesRepository,
- private appLockService: AppLockService,
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/instance.ts b/packages/backend/src/core/chart/charts/instance.ts
index 97f3bc6f2b..b1657e0a0b 100644
--- a/packages/backend/src/core/chart/charts/instance.ts
+++ b/packages/backend/src/core/chart/charts/instance.ts
@@ -5,13 +5,14 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { DriveFilesRepository, FollowingsRepository, UsersRepository, NotesRepository } from '@/models/_.js';
import type { MiDriveFile } from '@/models/DriveFile.js';
import type { MiNote } from '@/models/Note.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { UtilityService } from '@/core/UtilityService.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/instance.js';
@@ -26,6 +27,9 @@ export default class InstanceChart extends Chart { // eslint-disa
@Inject(DI.db)
private db: DataSource,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
@@ -39,10 +43,9 @@ export default class InstanceChart extends Chart { // eslint-disa
private followingsRepository: FollowingsRepository,
private utilityService: UtilityService,
- private appLockService: AppLockService,
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/notes.ts b/packages/backend/src/core/chart/charts/notes.ts
index f763b5fffa..aa64e2329a 100644
--- a/packages/backend/src/core/chart/charts/notes.ts
+++ b/packages/backend/src/core/chart/charts/notes.ts
@@ -5,11 +5,12 @@
import { Injectable, Inject } from '@nestjs/common';
import { Not, IsNull, DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { NotesRepository } from '@/models/_.js';
import type { MiNote } from '@/models/Note.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/notes.js';
@@ -24,13 +25,15 @@ export default class NotesChart extends Chart { // eslint-disable
@Inject(DI.db)
private db: DataSource,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
@Inject(DI.notesRepository)
private notesRepository: NotesRepository,
- private appLockService: AppLockService,
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-drive.ts b/packages/backend/src/core/chart/charts/per-user-drive.ts
index 404964d8b7..f7e92aecea 100644
--- a/packages/backend/src/core/chart/charts/per-user-drive.ts
+++ b/packages/backend/src/core/chart/charts/per-user-drive.ts
@@ -5,12 +5,13 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { DriveFilesRepository } from '@/models/_.js';
import type { MiDriveFile } from '@/models/DriveFile.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-drive.js';
@@ -25,14 +26,16 @@ export default class PerUserDriveChart extends Chart { // eslint-
@Inject(DI.db)
private db: DataSource,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
@Inject(DI.driveFilesRepository)
private driveFilesRepository: DriveFilesRepository,
- private appLockService: AppLockService,
private driveFileEntityService: DriveFileEntityService,
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-following.ts b/packages/backend/src/core/chart/charts/per-user-following.ts
index 588ac638de..ea431a5131 100644
--- a/packages/backend/src/core/chart/charts/per-user-following.ts
+++ b/packages/backend/src/core/chart/charts/per-user-following.ts
@@ -5,12 +5,13 @@
import { Injectable, Inject } from '@nestjs/common';
import { Not, IsNull, DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { MiUser } from '@/models/User.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import type { FollowingsRepository } from '@/models/_.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-following.js';
@@ -25,14 +26,16 @@ export default class PerUserFollowingChart extends Chart { // esl
@Inject(DI.db)
private db: DataSource,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
@Inject(DI.followingsRepository)
private followingsRepository: FollowingsRepository,
- private appLockService: AppLockService,
private userEntityService: UserEntityService,
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-notes.ts b/packages/backend/src/core/chart/charts/per-user-notes.ts
index e4900772bb..824d60042d 100644
--- a/packages/backend/src/core/chart/charts/per-user-notes.ts
+++ b/packages/backend/src/core/chart/charts/per-user-notes.ts
@@ -5,12 +5,13 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { MiUser } from '@/models/User.js';
import type { MiNote } from '@/models/Note.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import type { NotesRepository } from '@/models/_.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-notes.js';
@@ -25,13 +26,15 @@ export default class PerUserNotesChart extends Chart { // eslint-
@Inject(DI.db)
private db: DataSource,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
@Inject(DI.notesRepository)
private notesRepository: NotesRepository,
- private appLockService: AppLockService,
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-pv.ts b/packages/backend/src/core/chart/charts/per-user-pv.ts
index 31708fefa8..b3e1b2cea1 100644
--- a/packages/backend/src/core/chart/charts/per-user-pv.ts
+++ b/packages/backend/src/core/chart/charts/per-user-pv.ts
@@ -5,10 +5,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { MiUser } from '@/models/User.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-pv.js';
@@ -23,10 +24,12 @@ export default class PerUserPvChart extends Chart { // eslint-dis
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/per-user-reactions.ts b/packages/backend/src/core/chart/charts/per-user-reactions.ts
index c29c4d2870..7bc1d9e7fa 100644
--- a/packages/backend/src/core/chart/charts/per-user-reactions.ts
+++ b/packages/backend/src/core/chart/charts/per-user-reactions.ts
@@ -5,12 +5,13 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { MiUser } from '@/models/User.js';
import type { MiNote } from '@/models/Note.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/per-user-reactions.js';
@@ -25,11 +26,13 @@ export default class PerUserReactionsChart extends Chart { // esl
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
private userEntityService: UserEntityService,
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema, true);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema, true);
}
protected async tickMajor(group: string): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/test-grouped.ts b/packages/backend/src/core/chart/charts/test-grouped.ts
index 7a2844f4ed..8dd1a5d996 100644
--- a/packages/backend/src/core/chart/charts/test-grouped.ts
+++ b/packages/backend/src/core/chart/charts/test-grouped.ts
@@ -5,10 +5,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
-import { AppLockService } from '@/core/AppLockService.js';
+import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import Logger from '@/logger.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { name, schema } from './entities/test-grouped.js';
import type { KVs } from '../core.js';
@@ -24,10 +25,12 @@ export default class TestGroupedChart extends Chart { // eslint-d
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
logger: Logger,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), logger, name, schema, true);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), logger, name, schema, true);
}
protected async tickMajor(group: string): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/test-intersection.ts b/packages/backend/src/core/chart/charts/test-intersection.ts
index b8d0556c9f..23b8649cce 100644
--- a/packages/backend/src/core/chart/charts/test-intersection.ts
+++ b/packages/backend/src/core/chart/charts/test-intersection.ts
@@ -5,10 +5,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
-import { AppLockService } from '@/core/AppLockService.js';
+import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import Logger from '@/logger.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { name, schema } from './entities/test-intersection.js';
import type { KVs } from '../core.js';
@@ -22,10 +23,12 @@ export default class TestIntersectionChart extends Chart { // esl
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
logger: Logger,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/test-unique.ts b/packages/backend/src/core/chart/charts/test-unique.ts
index f94e008059..b84dd419ba 100644
--- a/packages/backend/src/core/chart/charts/test-unique.ts
+++ b/packages/backend/src/core/chart/charts/test-unique.ts
@@ -5,10 +5,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
-import { AppLockService } from '@/core/AppLockService.js';
+import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import Logger from '@/logger.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { name, schema } from './entities/test-unique.js';
import type { KVs } from '../core.js';
@@ -22,10 +23,12 @@ export default class TestUniqueChart extends Chart { // eslint-di
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
logger: Logger,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/test.ts b/packages/backend/src/core/chart/charts/test.ts
index a90dc8f99b..0e95ce9239 100644
--- a/packages/backend/src/core/chart/charts/test.ts
+++ b/packages/backend/src/core/chart/charts/test.ts
@@ -5,10 +5,11 @@
import { Injectable, Inject } from '@nestjs/common';
import { DataSource } from 'typeorm';
-import { AppLockService } from '@/core/AppLockService.js';
+import * as Redis from 'ioredis';
import { DI } from '@/di-symbols.js';
import Logger from '@/logger.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { name, schema } from './entities/test.js';
import type { KVs } from '../core.js';
@@ -24,10 +25,12 @@ export default class TestChart extends Chart { // eslint-disable-
@Inject(DI.db)
private db: DataSource,
- private appLockService: AppLockService,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
logger: Logger,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/chart/charts/users.ts b/packages/backend/src/core/chart/charts/users.ts
index d148fc629b..4471c1df23 100644
--- a/packages/backend/src/core/chart/charts/users.ts
+++ b/packages/backend/src/core/chart/charts/users.ts
@@ -5,12 +5,13 @@
import { Injectable, Inject } from '@nestjs/common';
import { Not, IsNull, DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import type { MiUser } from '@/models/User.js';
-import { AppLockService } from '@/core/AppLockService.js';
import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import type { UsersRepository } from '@/models/_.js';
import { bindThis } from '@/decorators.js';
+import { acquireChartInsertLock } from '@/misc/distributed-lock.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/users.js';
@@ -25,14 +26,16 @@ export default class UsersChart extends Chart { // eslint-disable
@Inject(DI.db)
private db: DataSource,
+ @Inject(DI.redis)
+ private redisClient: Redis.Redis,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
- private appLockService: AppLockService,
private userEntityService: UserEntityService,
private chartLoggerService: ChartLoggerService,
) {
- super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
+ super(db, (k) => acquireChartInsertLock(redisClient, k), chartLoggerService.logger, name, schema);
}
protected async tickMajor(): Promise>> {
diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts
index 6871ba2c72..e7847ba74e 100644
--- a/packages/backend/src/core/entities/NoteEntityService.ts
+++ b/packages/backend/src/core/entities/NoteEntityService.ts
@@ -15,6 +15,7 @@ import type { UsersRepository, NotesRepository, FollowingsRepository, PollsRepos
import { bindThis } from '@/decorators.js';
import { DebounceLoader } from '@/misc/loader.js';
import { IdService } from '@/core/IdService.js';
+import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js';
import { ReactionsBufferingService } from '@/core/ReactionsBufferingService.js';
import type { OnModuleInit } from '@nestjs/common';
import type { CustomEmojiService } from '../CustomEmojiService.js';
@@ -116,12 +117,7 @@ export class NoteEntityService implements OnModuleInit {
private treatVisibility(packedNote: Packed<'Note'>): Packed<'Note'>['visibility'] {
if (packedNote.visibility === 'public' || packedNote.visibility === 'home') {
const followersOnlyBefore = packedNote.user.makeNotesFollowersOnlyBefore;
- if ((followersOnlyBefore != null)
- && (
- (followersOnlyBefore <= 0 && (Date.now() - new Date(packedNote.createdAt).getTime() > 0 - (followersOnlyBefore * 1000)))
- || (followersOnlyBefore > 0 && (new Date(packedNote.createdAt).getTime() < followersOnlyBefore * 1000))
- )
- ) {
+ if (shouldHideNoteByTime(followersOnlyBefore, packedNote.createdAt)) {
packedNote.visibility = 'followers';
}
}
@@ -141,12 +137,7 @@ export class NoteEntityService implements OnModuleInit {
if (!hide) {
const hiddenBefore = packedNote.user.makeNotesHiddenBefore;
- if ((hiddenBefore != null)
- && (
- (hiddenBefore <= 0 && (Date.now() - new Date(packedNote.createdAt).getTime() > 0 - (hiddenBefore * 1000)))
- || (hiddenBefore > 0 && (new Date(packedNote.createdAt).getTime() < hiddenBefore * 1000))
- )
- ) {
+ if (shouldHideNoteByTime(hiddenBefore, packedNote.createdAt)) {
hide = true;
}
}
diff --git a/packages/backend/src/misc/distributed-lock.ts b/packages/backend/src/misc/distributed-lock.ts
new file mode 100644
index 0000000000..93bd741f62
--- /dev/null
+++ b/packages/backend/src/misc/distributed-lock.ts
@@ -0,0 +1,49 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import * as Redis from 'ioredis';
+
+export async function acquireDistributedLock(
+ redis: Redis.Redis,
+ name: string,
+ timeout: number,
+ maxRetries: number,
+ retryInterval: number,
+): Promise<() => Promise> {
+ const lockKey = `lock:${name}`;
+ const identifier = Math.random().toString(36).slice(2);
+
+ let retries = 0;
+ while (retries < maxRetries) {
+ const result = await redis.set(lockKey, identifier, 'PX', timeout, 'NX');
+ if (result === 'OK') {
+ return async () => {
+ const currentIdentifier = await redis.get(lockKey);
+ if (currentIdentifier === identifier) {
+ await redis.del(lockKey);
+ }
+ };
+ }
+
+ await new Promise(resolve => setTimeout(resolve, retryInterval));
+ retries++;
+ }
+
+ throw new Error(`Failed to acquire lock ${name}`);
+}
+
+export function acquireApObjectLock(
+ redis: Redis.Redis,
+ uri: string,
+): Promise<() => Promise> {
+ return acquireDistributedLock(redis, `ap-object:${uri}`, 30 * 1000, 50, 100);
+}
+
+export function acquireChartInsertLock(
+ redis: Redis.Redis,
+ name: string,
+): Promise<() => Promise> {
+ return acquireDistributedLock(redis, `chart-insert:${name}`, 30 * 1000, 50, 500);
+}
diff --git a/packages/backend/src/misc/escape-html.ts b/packages/backend/src/misc/escape-html.ts
new file mode 100644
index 0000000000..819aeeed52
--- /dev/null
+++ b/packages/backend/src/misc/escape-html.ts
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export function escapeHtml(text: string): string {
+ return text
+ .replace(/&/g, '&')
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+ .replace(/'/g, ''');
+}
diff --git a/packages/backend/src/misc/json-stringify-html-safe.ts b/packages/backend/src/misc/json-stringify-html-safe.ts
new file mode 100644
index 0000000000..aac12d57db
--- /dev/null
+++ b/packages/backend/src/misc/json-stringify-html-safe.ts
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+const ESCAPE_LOOKUP = {
+ '&': '\\u0026',
+ '>': '\\u003e',
+ '<': '\\u003c',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+} as Record;
+
+const ESCAPE_REGEX = /[&><\u2028\u2029]/g;
+
+export function htmlSafeJsonStringify(obj: any): string {
+ return JSON.stringify(obj).replace(ESCAPE_REGEX, x => ESCAPE_LOOKUP[x]);
+}
diff --git a/packages/backend/src/misc/should-hide-note-by-time.ts b/packages/backend/src/misc/should-hide-note-by-time.ts
new file mode 100644
index 0000000000..ea1951e66c
--- /dev/null
+++ b/packages/backend/src/misc/should-hide-note-by-time.ts
@@ -0,0 +1,29 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+/**
+ * ノートが指定された時間条件に基づいて非表示対象かどうかを判定する
+ * @param hiddenBefore 非表示条件(負の値: 作成からの経過秒数、正の値: UNIXタイムスタンプ秒、null: 判定しない)
+ * @param createdAt ノートの作成日時(ISO 8601形式の文字列 または Date オブジェクト)
+ * @returns 非表示にすべき場合は true
+ */
+export function shouldHideNoteByTime(hiddenBefore: number | null | undefined, createdAt: string | Date): boolean {
+ if (hiddenBefore == null) {
+ return false;
+ }
+
+ const createdAtTime = typeof createdAt === 'string' ? new Date(createdAt).getTime() : createdAt.getTime();
+
+ if (hiddenBefore <= 0) {
+ // 負の値: 作成からの経過時間(秒)で判定
+ const elapsedSeconds = (Date.now() - createdAtTime) / 1000;
+ const hideAfterSeconds = Math.abs(hiddenBefore);
+ return elapsedSeconds >= hideAfterSeconds;
+ } else {
+ // 正の値: 絶対的なタイムスタンプ(秒)で判定
+ const createdAtSeconds = createdAtTime / 1000;
+ return createdAtSeconds <= hiddenBefore;
+ }
+}
diff --git a/packages/backend/src/queue/QueueProcessorService.ts b/packages/backend/src/queue/QueueProcessorService.ts
index 642d3fc8ad..2b3b3fc0ad 100644
--- a/packages/backend/src/queue/QueueProcessorService.ts
+++ b/packages/backend/src/queue/QueueProcessorService.ts
@@ -5,7 +5,6 @@
import { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common';
import * as Bull from 'bullmq';
-import * as Sentry from '@sentry/node';
import type { Config } from '@/config.js';
import { DI } from '@/di-symbols.js';
import type Logger from '@/logger.js';
@@ -157,6 +156,13 @@ export class QueueProcessorService implements OnApplicationShutdown {
};
}
+ let Sentry: typeof import('@sentry/node') | undefined;
+ if (this.config.sentryForBackend) {
+ import('@sentry/node').then((mod) => {
+ Sentry = mod;
+ });
+ }
+
//#region system
{
const processer = (job: Bull.Job) => {
@@ -175,7 +181,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
};
this.systemQueueWorker = new Bull.Worker(QUEUE.SYSTEM, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: System: ' + job.name }, () => processer(job));
} else {
return processer(job);
@@ -192,7 +198,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
.on('completed', (job, result) => logger.debug(`completed(${result}) id=${job.id}`))
.on('failed', (job, err: Error) => {
logger.error(`failed(${err.name}: ${err.message}) id=${job?.id ?? '?'}`, { job: renderJob(job), e: renderError(err) });
- if (config.sentryForBackend) {
+ if (Sentry != null) {
Sentry.captureMessage(`Queue: System: ${job?.name ?? '?'}: ${err.name}: ${err.message}`, {
level: 'error',
extra: { job, err },
@@ -232,7 +238,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
};
this.dbQueueWorker = new Bull.Worker(QUEUE.DB, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: DB: ' + job.name }, () => processer(job));
} else {
return processer(job);
@@ -249,7 +255,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
.on('completed', (job, result) => logger.debug(`completed(${result}) id=${job.id}`))
.on('failed', (job, err) => {
logger.error(`failed(${err.name}: ${err.message}) id=${job?.id ?? '?'}`, { job: renderJob(job), e: renderError(err) });
- if (config.sentryForBackend) {
+ if (Sentry != null) {
Sentry.captureMessage(`Queue: DB: ${job?.name ?? '?'}: ${err.name}: ${err.message}`, {
level: 'error',
extra: { job, err },
@@ -264,7 +270,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
//#region deliver
{
this.deliverQueueWorker = new Bull.Worker(QUEUE.DELIVER, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: Deliver' }, () => this.deliverProcessorService.process(job));
} else {
return this.deliverProcessorService.process(job);
@@ -289,7 +295,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
.on('completed', (job, result) => logger.debug(`completed(${result}) ${getJobInfo(job, true)} to=${job.data.to}`))
.on('failed', (job, err) => {
logger.error(`failed(${err.name}: ${err.message}) ${getJobInfo(job)} to=${job ? job.data.to : '-'}`);
- if (config.sentryForBackend) {
+ if (Sentry != null) {
Sentry.captureMessage(`Queue: Deliver: ${err.name}: ${err.message}`, {
level: 'error',
extra: { job, err },
@@ -304,7 +310,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
//#region inbox
{
this.inboxQueueWorker = new Bull.Worker(QUEUE.INBOX, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: Inbox' }, () => this.inboxProcessorService.process(job));
} else {
return this.inboxProcessorService.process(job);
@@ -329,7 +335,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
.on('completed', (job, result) => logger.debug(`completed(${result}) ${getJobInfo(job, true)}`))
.on('failed', (job, err) => {
logger.error(`failed(${err.name}: ${err.message}) ${getJobInfo(job)} activity=${job ? (job.data.activity ? job.data.activity.id : 'none') : '-'}`, { job: renderJob(job), e: renderError(err) });
- if (config.sentryForBackend) {
+ if (Sentry != null) {
Sentry.captureMessage(`Queue: Inbox: ${err.name}: ${err.message}`, {
level: 'error',
extra: { job, err },
@@ -344,7 +350,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
//#region user-webhook deliver
{
this.userWebhookDeliverQueueWorker = new Bull.Worker(QUEUE.USER_WEBHOOK_DELIVER, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: UserWebhookDeliver' }, () => this.userWebhookDeliverProcessorService.process(job));
} else {
return this.userWebhookDeliverProcessorService.process(job);
@@ -369,7 +375,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
.on('completed', (job, result) => logger.debug(`completed(${result}) ${getJobInfo(job, true)} to=${job.data.to}`))
.on('failed', (job, err) => {
logger.error(`failed(${err.name}: ${err.message}) ${getJobInfo(job)} to=${job ? job.data.to : '-'}`);
- if (config.sentryForBackend) {
+ if (Sentry != null) {
Sentry.captureMessage(`Queue: UserWebhookDeliver: ${err.name}: ${err.message}`, {
level: 'error',
extra: { job, err },
@@ -384,7 +390,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
//#region system-webhook deliver
{
this.systemWebhookDeliverQueueWorker = new Bull.Worker(QUEUE.SYSTEM_WEBHOOK_DELIVER, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: SystemWebhookDeliver' }, () => this.systemWebhookDeliverProcessorService.process(job));
} else {
return this.systemWebhookDeliverProcessorService.process(job);
@@ -409,7 +415,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
.on('completed', (job, result) => logger.debug(`completed(${result}) ${getJobInfo(job, true)} to=${job.data.to}`))
.on('failed', (job, err) => {
logger.error(`failed(${err.name}: ${err.message}) ${getJobInfo(job)} to=${job ? job.data.to : '-'}`);
- if (config.sentryForBackend) {
+ if (Sentry != null) {
Sentry.captureMessage(`Queue: SystemWebhookDeliver: ${err.name}: ${err.message}`, {
level: 'error',
extra: { job, err },
@@ -434,7 +440,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
};
this.relationshipQueueWorker = new Bull.Worker(QUEUE.RELATIONSHIP, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: Relationship: ' + job.name }, () => processer(job));
} else {
return processer(job);
@@ -456,7 +462,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
.on('completed', (job, result) => logger.debug(`completed(${result}) id=${job.id}`))
.on('failed', (job, err) => {
logger.error(`failed(${err.name}: ${err.message}) id=${job?.id ?? '?'}`, { job: renderJob(job), e: renderError(err) });
- if (config.sentryForBackend) {
+ if (Sentry != null) {
Sentry.captureMessage(`Queue: Relationship: ${job?.name ?? '?'}: ${err.name}: ${err.message}`, {
level: 'error',
extra: { job, err },
@@ -479,7 +485,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
};
this.objectStorageQueueWorker = new Bull.Worker(QUEUE.OBJECT_STORAGE, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: ObjectStorage: ' + job.name }, () => processer(job));
} else {
return processer(job);
@@ -497,7 +503,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
.on('completed', (job, result) => logger.debug(`completed(${result}) id=${job.id}`))
.on('failed', (job, err) => {
logger.error(`failed(${err.name}: ${err.message}) id=${job?.id ?? '?'}`, { job: renderJob(job), e: renderError(err) });
- if (config.sentryForBackend) {
+ if (Sentry != null) {
Sentry.captureMessage(`Queue: ObjectStorage: ${job?.name ?? '?'}: ${err.name}: ${err.message}`, {
level: 'error',
extra: { job, err },
@@ -512,7 +518,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
//#region ended poll notification
{
this.endedPollNotificationQueueWorker = new Bull.Worker(QUEUE.ENDED_POLL_NOTIFICATION, (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: EndedPollNotification' }, () => this.endedPollNotificationProcessorService.process(job));
} else {
return this.endedPollNotificationProcessorService.process(job);
@@ -527,7 +533,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
//#region post scheduled note
{
this.postScheduledNoteQueueWorker = new Bull.Worker(QUEUE.POST_SCHEDULED_NOTE, async (job) => {
- if (this.config.sentryForBackend) {
+ if (Sentry != null) {
return Sentry.startSpan({ name: 'Queue: PostScheduledNote' }, () => this.postScheduledNoteProcessorService.process(job));
} else {
return this.postScheduledNoteProcessorService.process(job);
diff --git a/packages/backend/src/queue/processors/ExportClipsProcessorService.ts b/packages/backend/src/queue/processors/ExportClipsProcessorService.ts
index 486dc4c01f..be7d4e9e21 100644
--- a/packages/backend/src/queue/processors/ExportClipsProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportClipsProcessorService.ts
@@ -5,21 +5,20 @@
import * as fs from 'node:fs';
import { Writable } from 'node:stream';
-import { Inject, Injectable, StreamableFile } from '@nestjs/common';
-import { MoreThan } from 'typeorm';
+import { Inject, Injectable } from '@nestjs/common';
import { format as dateFormat } from 'date-fns';
import { DI } from '@/di-symbols.js';
-import type { ClipNotesRepository, ClipsRepository, MiClip, MiClipNote, MiUser, NotesRepository, PollsRepository, UsersRepository } from '@/models/_.js';
+import type { ClipNotesRepository, ClipsRepository, MiClip, MiClipNote, MiUser, PollsRepository, UsersRepository } from '@/models/_.js';
import type Logger from '@/logger.js';
import { DriveService } from '@/core/DriveService.js';
import { createTemp } from '@/misc/create-temp.js';
import type { MiPoll } from '@/models/Poll.js';
import type { MiNote } from '@/models/Note.js';
import { bindThis } from '@/decorators.js';
-import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
-import { Packed } from '@/misc/json-schema.js';
import { IdService } from '@/core/IdService.js';
import { NotificationService } from '@/core/NotificationService.js';
+import { QueryService } from '@/core/QueryService.js';
+import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbJobDataWithUser } from '../types.js';
@@ -43,6 +42,7 @@ export class ExportClipsProcessorService {
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
+ private queryService: QueryService,
private idService: IdService,
private notificationService: NotificationService,
) {
@@ -100,16 +100,16 @@ export class ExportClipsProcessorService {
});
while (true) {
- const clips = await this.clipsRepository.find({
- where: {
- userId: user.id,
- ...(cursor ? { id: MoreThan(cursor) } : {}),
- },
- take: 100,
- order: {
- id: 1,
- },
- });
+ const query = this.clipsRepository.createQueryBuilder('clip')
+ .where('clip.userId = :userId', { userId: user.id })
+ .orderBy('clip.id', 'ASC')
+ .take(100);
+
+ if (cursor) {
+ query.andWhere('clip.id > :cursor', { cursor });
+ }
+
+ const clips = await query.getMany();
if (clips.length === 0) {
job.updateProgress(100);
@@ -124,7 +124,7 @@ export class ExportClipsProcessorService {
const isFirst = exportedClipsCount === 0;
await writer.write(isFirst ? content : ',\n' + content);
- await this.processClipNotes(writer, clip.id);
+ await this.processClipNotes(writer, clip.id, user.id);
await writer.write(']}');
exportedClipsCount++;
@@ -134,22 +134,25 @@ export class ExportClipsProcessorService {
}
}
- async processClipNotes(writer: WritableStreamDefaultWriter, clipId: string): Promise {
+ async processClipNotes(writer: WritableStreamDefaultWriter, clipId: string, userId: string): Promise {
let exportedClipNotesCount = 0;
let cursor: MiClipNote['id'] | null = null;
while (true) {
- const clipNotes = await this.clipNotesRepository.find({
- where: {
- clipId,
- ...(cursor ? { id: MoreThan(cursor) } : {}),
- },
- take: 100,
- order: {
- id: 1,
- },
- relations: ['note', 'note.user'],
- }) as (MiClipNote & { note: MiNote & { user: MiUser } })[];
+ const query = this.clipNotesRepository.createQueryBuilder('clipNote')
+ .leftJoinAndSelect('clipNote.note', 'note')
+ .leftJoinAndSelect('note.user', 'user')
+ .where('clipNote.clipId = :clipId', { clipId })
+ .orderBy('clipNote.id', 'ASC')
+ .take(100);
+
+ if (cursor) {
+ query.andWhere('clipNote.id > :cursor', { cursor });
+ }
+
+ this.queryService.generateVisibilityQuery(query, { id: userId });
+
+ const clipNotes = await query.getMany() as (MiClipNote & { note: MiNote & { user: MiUser } })[];
if (clipNotes.length === 0) {
break;
@@ -158,6 +161,11 @@ export class ExportClipsProcessorService {
cursor = clipNotes.at(-1)?.id ?? null;
for (const clipNote of clipNotes) {
+ const noteCreatedAt = this.idService.parse(clipNote.note.id).date;
+ if (shouldHideNoteByTime(clipNote.note.user.makeNotesHiddenBefore, noteCreatedAt)) {
+ continue;
+ }
+
let poll: MiPoll | undefined;
if (clipNote.note.hasPoll) {
poll = await this.pollsRepository.findOneByOrFail({ noteId: clipNote.note.id });
diff --git a/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts b/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
index 7918c8ccb5..87a8ded307 100644
--- a/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
@@ -5,7 +5,6 @@
import * as fs from 'node:fs';
import { Inject, Injectable } from '@nestjs/common';
-import { MoreThan } from 'typeorm';
import { format as dateFormat } from 'date-fns';
import { DI } from '@/di-symbols.js';
import type { MiNoteFavorite, NoteFavoritesRepository, PollsRepository, MiUser, UsersRepository } from '@/models/_.js';
@@ -17,6 +16,8 @@ import type { MiNote } from '@/models/Note.js';
import { bindThis } from '@/decorators.js';
import { IdService } from '@/core/IdService.js';
import { NotificationService } from '@/core/NotificationService.js';
+import { QueryService } from '@/core/QueryService.js';
+import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbJobDataWithUser } from '../types.js';
@@ -37,6 +38,7 @@ export class ExportFavoritesProcessorService {
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
+ private queryService: QueryService,
private idService: IdService,
private notificationService: NotificationService,
) {
@@ -83,17 +85,20 @@ export class ExportFavoritesProcessorService {
});
while (true) {
- const favorites = await this.noteFavoritesRepository.find({
- where: {
- userId: user.id,
- ...(cursor ? { id: MoreThan(cursor) } : {}),
- },
- take: 100,
- order: {
- id: 1,
- },
- relations: ['note', 'note.user'],
- }) as (MiNoteFavorite & { note: MiNote & { user: MiUser } })[];
+ const query = this.noteFavoritesRepository.createQueryBuilder('favorite')
+ .leftJoinAndSelect('favorite.note', 'note')
+ .leftJoinAndSelect('note.user', 'user')
+ .where('favorite.userId = :userId', { userId: user.id })
+ .orderBy('favorite.id', 'ASC')
+ .take(100);
+
+ if (cursor) {
+ query.andWhere('favorite.id > :cursor', { cursor });
+ }
+
+ this.queryService.generateVisibilityQuery(query, { id: user.id });
+
+ const favorites = await query.getMany() as (MiNoteFavorite & { note: MiNote & { user: MiUser } })[];
if (favorites.length === 0) {
job.updateProgress(100);
@@ -103,6 +108,11 @@ export class ExportFavoritesProcessorService {
cursor = favorites.at(-1)?.id ?? null;
for (const favorite of favorites) {
+ const noteCreatedAt = this.idService.parse(favorite.note.id).date;
+ if (shouldHideNoteByTime(favorite.note.user.makeNotesHiddenBefore, noteCreatedAt)) {
+ continue;
+ }
+
let poll: MiPoll | undefined;
if (favorite.note.hasPoll) {
poll = await this.pollsRepository.findOneByOrFail({ noteId: favorite.note.id });
diff --git a/packages/backend/src/server/ServerModule.ts b/packages/backend/src/server/ServerModule.ts
index 0223650329..111421472d 100644
--- a/packages/backend/src/server/ServerModule.ts
+++ b/packages/backend/src/server/ServerModule.ts
@@ -25,6 +25,7 @@ import { SignupApiService } from './api/SignupApiService.js';
import { StreamingApiServerService } from './api/StreamingApiServerService.js';
import { OpenApiServerService } from './api/openapi/OpenApiServerService.js';
import { ClientServerService } from './web/ClientServerService.js';
+import { HtmlTemplateService } from './web/HtmlTemplateService.js';
import { FeedService } from './web/FeedService.js';
import { UrlPreviewService } from './web/UrlPreviewService.js';
import { ClientLoggerService } from './web/ClientLoggerService.js';
@@ -58,6 +59,7 @@ import { SigninWithPasskeyApiService } from './api/SigninWithPasskeyApiService.j
providers: [
ClientServerService,
ClientLoggerService,
+ HtmlTemplateService,
FeedService,
HealthServerService,
UrlPreviewService,
diff --git a/packages/backend/src/server/api/ApiCallService.ts b/packages/backend/src/server/api/ApiCallService.ts
index 7a4af407a3..261e147040 100644
--- a/packages/backend/src/server/api/ApiCallService.ts
+++ b/packages/backend/src/server/api/ApiCallService.ts
@@ -7,7 +7,6 @@ import { randomUUID } from 'node:crypto';
import * as fs from 'node:fs';
import * as stream from 'node:stream/promises';
import { Inject, Injectable } from '@nestjs/common';
-import * as Sentry from '@sentry/node';
import { DI } from '@/di-symbols.js';
import { getIpHash } from '@/misc/get-ip-hash.js';
import type { MiLocalUser, MiUser } from '@/models/User.js';
@@ -37,6 +36,7 @@ export class ApiCallService implements OnApplicationShutdown {
private logger: Logger;
private userIpHistories: Map>;
private userIpHistoriesClearIntervalId: NodeJS.Timeout;
+ private Sentry: typeof import('@sentry/node') | null = null;
constructor(
@Inject(DI.meta)
@@ -59,6 +59,12 @@ export class ApiCallService implements OnApplicationShutdown {
this.userIpHistoriesClearIntervalId = setInterval(() => {
this.userIpHistories.clear();
}, 1000 * 60 * 60);
+
+ if (this.config.sentryForBackend) {
+ import('@sentry/node').then((Sentry) => {
+ this.Sentry = Sentry;
+ });
+ }
}
#sendApiError(reply: FastifyReply, err: ApiError): void {
@@ -120,8 +126,8 @@ export class ApiCallService implements OnApplicationShutdown {
},
});
- if (this.config.sentryForBackend) {
- Sentry.captureMessage(`Internal error occurred in ${ep.name}: ${err.message}`, {
+ if (this.Sentry != null) {
+ this.Sentry.captureMessage(`Internal error occurred in ${ep.name}: ${err.message}`, {
level: 'error',
user: {
id: userId,
@@ -307,12 +313,16 @@ export class ApiCallService implements OnApplicationShutdown {
}
if (ep.meta.limit) {
- // koa will automatically load the `X-Forwarded-For` header if `proxy: true` is configured in the app.
- let limitActor: string;
+ let limitActor: string | null;
if (user) {
limitActor = user.id;
} else {
- limitActor = getIpHash(request.ip);
+ if (request.ip === '::1' || request.ip === '127.0.0.1') {
+ console.warn('request ip is localhost, maybe caused by misconfiguration of trustProxy or reverse proxy');
+ limitActor = null;
+ } else {
+ limitActor = getIpHash(request.ip);
+ }
}
const limit = Object.assign({}, ep.meta.limit);
@@ -324,7 +334,7 @@ export class ApiCallService implements OnApplicationShutdown {
// TODO: 毎リクエスト計算するのもあれだしキャッシュしたい
const factor = user ? (await this.roleService.getUserPolicies(user.id)).rateLimitFactor : 1;
- if (factor > 0) {
+ if (limitActor != null && factor > 0) {
// Rate limit
const rateLimit = await this.rateLimiterService.limit(limit as IEndpointMeta['limit'] & { key: NonNullable }, limitActor, factor);
if (rateLimit != null) {
@@ -432,8 +442,8 @@ export class ApiCallService implements OnApplicationShutdown {
}
// API invoking
- if (this.config.sentryForBackend) {
- return await Sentry.startSpan({
+ if (this.Sentry != null) {
+ return await this.Sentry.startSpan({
name: 'API: ' + ep.name,
}, () => ep.exec(data, user, token, file, request.ip, request.headers)
.catch((err: Error) => this.#onExecError(ep, data, err, user?.id)));
diff --git a/packages/backend/src/server/api/SigninApiService.ts b/packages/backend/src/server/api/SigninApiService.ts
index 3e889372d8..14726f8411 100644
--- a/packages/backend/src/server/api/SigninApiService.ts
+++ b/packages/backend/src/server/api/SigninApiService.ts
@@ -89,17 +89,21 @@ export class SigninApiService {
return { error };
}
+ if (request.ip === '::1' || request.ip === '127.0.0.1') {
+ console.warn('request ip is localhost, maybe caused by misconfiguration of trustProxy or reverse proxy');
+ } else {
// not more than 1 attempt per second and not more than 10 attempts per hour
- const rateLimit = await this.rateLimiterService.limit({ key: 'signin', duration: 60 * 60 * 1000, max: 10, minInterval: 1000 }, getIpHash(request.ip));
- if (rateLimit != null) {
- reply.code(429);
- return {
- error: {
- message: 'Too many failed attempts to sign in. Try again later.',
- code: 'TOO_MANY_AUTHENTICATION_FAILURES',
- id: '22d05606-fbcf-421a-a2db-b32610dcfd1b',
- },
- };
+ const rateLimit = await this.rateLimiterService.limit({ key: 'signin', duration: 60 * 60 * 1000, max: 10, minInterval: 1000 }, getIpHash(request.ip));
+ if (rateLimit != null) {
+ reply.code(429);
+ return {
+ error: {
+ message: 'Too many failed attempts to sign in. Try again later.',
+ code: 'TOO_MANY_AUTHENTICATION_FAILURES',
+ id: '22d05606-fbcf-421a-a2db-b32610dcfd1b',
+ },
+ };
+ }
}
if (typeof username !== 'string') {
diff --git a/packages/backend/src/server/api/SigninWithPasskeyApiService.ts b/packages/backend/src/server/api/SigninWithPasskeyApiService.ts
index 9ba23c54e2..1b89752340 100644
--- a/packages/backend/src/server/api/SigninWithPasskeyApiService.ts
+++ b/packages/backend/src/server/api/SigninWithPasskeyApiService.ts
@@ -84,19 +84,23 @@ export class SigninWithPasskeyApiService {
return error(status ?? 500, failure ?? { id: '4e30e80c-e338-45a0-8c8f-44455efa3b76' });
};
- try {
+ if (request.ip === '::1' || request.ip === '127.0.0.1') {
+ console.warn('request ip is localhost, maybe caused by misconfiguration of trustProxy or reverse proxy');
+ } else {
+ try {
// Not more than 1 API call per 250ms and not more than 100 attempts per 30min
// NOTE: 1 Sign-in require 2 API calls
- await this.rateLimiterService.limit({ key: 'signin-with-passkey', duration: 60 * 30 * 1000, max: 200, minInterval: 250 }, getIpHash(request.ip));
- } catch (err) {
- reply.code(429);
- return {
- error: {
- message: 'Too many failed attempts to sign in. Try again later.',
- code: 'TOO_MANY_AUTHENTICATION_FAILURES',
- id: '22d05606-fbcf-421a-a2db-b32610dcfd1b',
- },
- };
+ await this.rateLimiterService.limit({ key: 'signin-with-passkey', duration: 60 * 30 * 1000, max: 200, minInterval: 250 }, getIpHash(request.ip));
+ } catch (err) {
+ reply.code(429);
+ return {
+ error: {
+ message: 'Too many failed attempts to sign in. Try again later.',
+ code: 'TOO_MANY_AUTHENTICATION_FAILURES',
+ id: '22d05606-fbcf-421a-a2db-b32610dcfd1b',
+ },
+ };
+ }
}
// Initiate Passkey Auth challenge with context
diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts
index 113a09cb14..9971a1ea4d 100644
--- a/packages/backend/src/server/api/endpoints/i/update.ts
+++ b/packages/backend/src/server/api/endpoints/i/update.ts
@@ -7,7 +7,7 @@ import RE2 from 're2';
import * as mfm from 'mfm-js';
import { Inject, Injectable } from '@nestjs/common';
import ms from 'ms';
-import { JSDOM } from 'jsdom';
+import * as htmlParser from 'node-html-parser';
import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js';
import { extractHashtags } from '@/misc/extract-hashtags.js';
import * as Acct from '@/misc/acct.js';
@@ -569,16 +569,15 @@ export default class extends Endpoint { // eslint-
try {
const html = await this.httpRequestService.getHtml(url);
- const { window } = new JSDOM(html);
- const doc: Document = window.document;
+ const doc = htmlParser.parse(html);
const myLink = `${this.config.url}/@${user.username}`;
const aEls = Array.from(doc.getElementsByTagName('a'));
const linkEls = Array.from(doc.getElementsByTagName('link'));
- const includesMyLink = aEls.some(a => a.href === myLink);
- const includesRelMeLinks = [...aEls, ...linkEls].some(link => link.rel === 'me' && link.href === myLink);
+ const includesMyLink = aEls.some(a => a.attributes.href === myLink);
+ const includesRelMeLinks = [...aEls, ...linkEls].some(link => link.attributes.rel?.split(/\s+/).includes('me') && link.attributes.href === myLink);
if (includesMyLink || includesRelMeLinks) {
await this.userProfilesRepository.createQueryBuilder('profile').update()
@@ -588,8 +587,6 @@ export default class extends Endpoint { // eslint-
})
.execute();
}
-
- window.close();
} catch (err) {
// なにもしない
}
diff --git a/packages/backend/src/server/oauth/OAuth2ProviderService.ts b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
index cdd7102666..d2391c43ab 100644
--- a/packages/backend/src/server/oauth/OAuth2ProviderService.ts
+++ b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
@@ -6,18 +6,15 @@
import dns from 'node:dns/promises';
import { fileURLToPath } from 'node:url';
import { Inject, Injectable } from '@nestjs/common';
-import { JSDOM } from 'jsdom';
+import * as htmlParser from 'node-html-parser';
import httpLinkHeader from 'http-link-header';
import ipaddr from 'ipaddr.js';
import oauth2orize, { type OAuth2, AuthorizationError, ValidateFunctionArity2, OAuth2Req, MiddlewareRequest } from 'oauth2orize';
import oauth2Pkce from 'oauth2orize-pkce';
import fastifyCors from '@fastify/cors';
-import fastifyView from '@fastify/view';
-import pug from 'pug';
import bodyParser from 'body-parser';
import fastifyExpress from '@fastify/express';
import { verifyChallenge } from 'pkce-challenge';
-import { mf2 } from 'microformats-parser';
import { permissions as kinds } from 'misskey-js';
import { secureRndstr } from '@/misc/secure-rndstr.js';
import { HttpRequestService } from '@/core/HttpRequestService.js';
@@ -32,6 +29,8 @@ import { MemoryKVCache } from '@/misc/cache.js';
import { LoggerService } from '@/core/LoggerService.js';
import Logger from '@/logger.js';
import { StatusError } from '@/misc/status-error.js';
+import { HtmlTemplateService } from '@/server/web/HtmlTemplateService.js';
+import { OAuthPage } from '@/server/web/views/oauth.js';
import type { ServerResponse } from 'node:http';
import type { FastifyInstance } from 'fastify';
@@ -98,6 +97,32 @@ interface ClientInformation {
logo: string | null;
}
+function parseMicroformats(doc: htmlParser.HTMLElement, baseUrl: string, id: string): { name: string | null; logo: string | null; } {
+ let name: string | null = null;
+ let logo: string | null = null;
+
+ const hApp = doc.querySelector('.h-app');
+ if (hApp == null) return { name, logo };
+
+ const nameEl = hApp.querySelector('.p-name');
+ if (nameEl != null) {
+ const href = nameEl.attributes.href || nameEl.attributes.src;
+ if (href != null && new URL(href, baseUrl).toString() === new URL(id).toString()) {
+ name = nameEl.textContent.trim();
+ }
+ }
+
+ const logoEl = hApp.querySelector('.u-logo');
+ if (logoEl != null) {
+ const href = logoEl.attributes.href || logoEl.attributes.src;
+ if (href != null) {
+ logo = new URL(href, baseUrl).toString();
+ }
+ }
+
+ return { name, logo };
+}
+
// https://indieauth.spec.indieweb.org/#client-information-discovery
// "Authorization servers SHOULD support parsing the [h-app] Microformat from the client_id,
// and if there is an [h-app] with a url property matching the client_id URL,
@@ -120,24 +145,19 @@ async function discoverClientInformation(logger: Logger, httpRequestService: Htt
}
const text = await res.text();
- const fragment = JSDOM.fragment(text);
+ const doc = htmlParser.parse(`${text}`);
- redirectUris.push(...[...fragment.querySelectorAll('link[rel=redirect_uri][href]')].map(el => el.href));
+ redirectUris.push(...[...doc.querySelectorAll('link[rel=redirect_uri][href]')].map(el => el.attributes.href));
let name = id;
let logo: string | null = null;
if (text) {
- const microformats = mf2(text, { baseUrl: res.url });
- const correspondingProperties = microformats.items.find(item => item.type?.includes('h-app') && item.properties.url.includes(id));
- if (correspondingProperties) {
- const nameProperty = correspondingProperties.properties.name?.[0];
- if (typeof nameProperty === 'string') {
- name = nameProperty;
- }
- const logoProperty = correspondingProperties.properties.logo?.[0];
- if (typeof logoProperty === 'string') {
- logo = logoProperty;
- }
+ const microformats = parseMicroformats(doc, res.url, id);
+ if (typeof microformats.name === 'string') {
+ name = microformats.name;
+ }
+ if (typeof microformats.logo === 'string') {
+ logo = microformats.logo;
}
}
@@ -253,6 +273,7 @@ export class OAuth2ProviderService {
private usersRepository: UsersRepository,
private cacheService: CacheService,
loggerService: LoggerService,
+ private htmlTemplateService: HtmlTemplateService,
) {
this.#logger = loggerService.getLogger('oauth');
@@ -386,24 +407,16 @@ export class OAuth2ProviderService {
this.#logger.info(`Rendering authorization page for "${oauth2.client.name}"`);
reply.header('Cache-Control', 'no-store');
- return await reply.view('oauth', {
+ return await HtmlTemplateService.replyHtml(reply, OAuthPage({
+ ...await this.htmlTemplateService.getCommonData(),
transactionId: oauth2.transactionID,
clientName: oauth2.client.name,
- clientLogo: oauth2.client.logo,
- scope: oauth2.req.scope.join(' '),
- });
+ clientLogo: oauth2.client.logo ?? undefined,
+ scope: oauth2.req.scope,
+ }));
});
fastify.post('/decision', async () => { });
- fastify.register(fastifyView, {
- root: fileURLToPath(new URL('../web/views', import.meta.url)),
- engine: { pug },
- defaultContext: {
- version: this.config.version,
- config: this.config,
- },
- });
-
await fastify.register(fastifyExpress);
fastify.use('/authorize', this.#server.authorize(((areq, done) => {
(async (): Promise> => {
diff --git a/packages/backend/src/server/web/ClientServerService.ts b/packages/backend/src/server/web/ClientServerService.ts
index f9d904f3cd..bcea935409 100644
--- a/packages/backend/src/server/web/ClientServerService.ts
+++ b/packages/backend/src/server/web/ClientServerService.ts
@@ -9,21 +9,16 @@ import { fileURLToPath } from 'node:url';
import { Inject, Injectable } from '@nestjs/common';
import ms from 'ms';
import sharp from 'sharp';
-import pug from 'pug';
import { In, IsNull } from 'typeorm';
import fastifyStatic from '@fastify/static';
-import fastifyView from '@fastify/view';
import fastifyProxy from '@fastify/http-proxy';
import vary from 'vary';
-import htmlSafeJsonStringify from 'htmlescape';
import type { Config } from '@/config.js';
-import { getNoteSummary } from '@/misc/get-note-summary.js';
import { DI } from '@/di-symbols.js';
import * as Acct from '@/misc/acct.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
import { PageEntityService } from '@/core/entities/PageEntityService.js';
-import { MetaEntityService } from '@/core/entities/MetaEntityService.js';
import { GalleryPostEntityService } from '@/core/entities/GalleryPostEntityService.js';
import { ClipEntityService } from '@/core/entities/ClipEntityService.js';
import { ChannelEntityService } from '@/core/entities/ChannelEntityService.js';
@@ -42,14 +37,33 @@ import type {
} from '@/models/_.js';
import type Logger from '@/logger.js';
import { handleRequestRedirectToOmitSearch } from '@/misc/fastify-hook-handlers.js';
+import { htmlSafeJsonStringify } from '@/misc/json-stringify-html-safe.js';
import { bindThis } from '@/decorators.js';
import { FlashEntityService } from '@/core/entities/FlashEntityService.js';
-import { RoleService } from '@/core/RoleService.js';
import { ReversiGameEntityService } from '@/core/entities/ReversiGameEntityService.js';
import { AnnouncementEntityService } from '@/core/entities/AnnouncementEntityService.js';
import { FeedService } from './FeedService.js';
import { UrlPreviewService } from './UrlPreviewService.js';
import { ClientLoggerService } from './ClientLoggerService.js';
+import { HtmlTemplateService } from './HtmlTemplateService.js';
+
+import { BasePage } from './views/base.js';
+import { UserPage } from './views/user.js';
+import { NotePage } from './views/note.js';
+import { PagePage } from './views/page.js';
+import { ClipPage } from './views/clip.js';
+import { FlashPage } from './views/flash.js';
+import { GalleryPostPage } from './views/gallery-post.js';
+import { ChannelPage } from './views/channel.js';
+import { ReversiGamePage } from './views/reversi-game.js';
+import { AnnouncementPage } from './views/announcement.js';
+import { BaseEmbed } from './views/base-embed.js';
+import { InfoCardPage } from './views/info-card.js';
+import { BiosPage } from './views/bios.js';
+import { CliPage } from './views/cli.js';
+import { FlushPage } from './views/flush.js';
+import { ErrorPage } from './views/error.js';
+
import type { FastifyError, FastifyInstance, FastifyPluginOptions, FastifyReply } from 'fastify';
const _filename = fileURLToPath(import.meta.url);
@@ -108,7 +122,6 @@ export class ClientServerService {
private userEntityService: UserEntityService,
private noteEntityService: NoteEntityService,
private pageEntityService: PageEntityService,
- private metaEntityService: MetaEntityService,
private galleryPostEntityService: GalleryPostEntityService,
private clipEntityService: ClipEntityService,
private channelEntityService: ChannelEntityService,
@@ -116,7 +129,7 @@ export class ClientServerService {
private announcementEntityService: AnnouncementEntityService,
private urlPreviewService: UrlPreviewService,
private feedService: FeedService,
- private roleService: RoleService,
+ private htmlTemplateService: HtmlTemplateService,
private clientLoggerService: ClientLoggerService,
) {
//this.createServer = this.createServer.bind(this);
@@ -182,38 +195,10 @@ export class ClientServerService {
return (manifest);
}
- @bindThis
- private async generateCommonPugData(meta: MiMeta) {
- return {
- instanceName: meta.name ?? 'Misskey',
- icon: meta.iconUrl,
- appleTouchIcon: meta.app512IconUrl,
- themeColor: meta.themeColor,
- serverErrorImageUrl: meta.serverErrorImageUrl ?? 'https://xn--931a.moe/assets/error.jpg',
- infoImageUrl: meta.infoImageUrl ?? 'https://xn--931a.moe/assets/info.jpg',
- notFoundImageUrl: meta.notFoundImageUrl ?? 'https://xn--931a.moe/assets/not-found.jpg',
- instanceUrl: this.config.url,
- metaJson: htmlSafeJsonStringify(await this.metaEntityService.packDetailed(meta)),
- now: Date.now(),
- federationEnabled: this.meta.federation !== 'none',
- };
- }
-
@bindThis
public createServer(fastify: FastifyInstance, options: FastifyPluginOptions, done: (err?: Error) => void) {
const configUrl = new URL(this.config.url);
- fastify.register(fastifyView, {
- root: _dirname + '/views',
- engine: {
- pug: pug,
- },
- defaultContext: {
- version: this.config.version,
- config: this.config,
- },
- });
-
fastify.addHook('onRequest', (request, reply, done) => {
// クリックジャッキング防止のためiFrameの中に入れられないようにする
reply.header('X-Frame-Options', 'DENY');
@@ -414,16 +399,15 @@ export class ClientServerService {
//#endregion
- const renderBase = async (reply: FastifyReply, data: { [key: string]: any } = {}) => {
+ const renderBase = async (reply: FastifyReply, data: Partial[0]> = {}) => {
reply.header('Cache-Control', 'public, max-age=30');
- return await reply.view('base', {
- img: this.meta.bannerUrl,
- url: this.config.url,
+ return await HtmlTemplateService.replyHtml(reply, BasePage({
+ img: this.meta.bannerUrl ?? undefined,
title: this.meta.name ?? 'Misskey',
- desc: this.meta.description,
- ...await this.generateCommonPugData(this.meta),
+ desc: this.meta.description ?? undefined,
+ ...await this.htmlTemplateService.getCommonData(),
...data,
- });
+ }));
};
// URL preview endpoint
@@ -505,11 +489,6 @@ export class ClientServerService {
)
) {
const profile = await this.userProfilesRepository.findOneByOrFail({ userId: user.id });
- const me = profile.fields
- ? profile.fields
- .filter(filed => filed.value != null && filed.value.match(/^https?:/))
- .map(field => field.value)
- : [];
reply.header('Cache-Control', 'public, max-age=15');
if (profile.preventAiLearning) {
@@ -522,15 +501,15 @@ export class ClientServerService {
userProfile: profile,
});
- return await reply.view('user', {
- user, profile, me,
- avatarUrl: _user.avatarUrl,
+ return await HtmlTemplateService.replyHtml(reply, UserPage({
+ user: _user,
+ profile,
sub: request.params.sub,
- ...await this.generateCommonPugData(this.meta),
- clientCtx: htmlSafeJsonStringify({
+ ...await this.htmlTemplateService.getCommonData(),
+ clientCtxJson: htmlSafeJsonStringify({
user: _user,
}),
- });
+ }));
} else {
// リモートユーザーなので
// モデレータがAPI経由で参照可能にするために404にはしない
@@ -581,17 +560,14 @@ export class ClientServerService {
reply.header('X-Robots-Tag', 'noimageai');
reply.header('X-Robots-Tag', 'noai');
}
- return await reply.view('note', {
+ return await HtmlTemplateService.replyHtml(reply, NotePage({
note: _note,
profile,
- avatarUrl: _note.user.avatarUrl,
- // TODO: Let locale changeable by instance setting
- summary: getNoteSummary(_note),
- ...await this.generateCommonPugData(this.meta),
- clientCtx: htmlSafeJsonStringify({
+ ...await this.htmlTemplateService.getCommonData(),
+ clientCtxJson: htmlSafeJsonStringify({
note: _note,
}),
- });
+ }));
} else {
return await renderBase(reply);
}
@@ -624,12 +600,11 @@ export class ClientServerService {
reply.header('X-Robots-Tag', 'noimageai');
reply.header('X-Robots-Tag', 'noai');
}
- return await reply.view('page', {
+ return await HtmlTemplateService.replyHtml(reply, PagePage({
page: _page,
profile,
- avatarUrl: _page.user.avatarUrl,
- ...await this.generateCommonPugData(this.meta),
- });
+ ...await this.htmlTemplateService.getCommonData(),
+ }));
} else {
return await renderBase(reply);
}
@@ -649,12 +624,11 @@ export class ClientServerService {
reply.header('X-Robots-Tag', 'noimageai');
reply.header('X-Robots-Tag', 'noai');
}
- return await reply.view('flash', {
+ return await HtmlTemplateService.replyHtml(reply, FlashPage({
flash: _flash,
profile,
- avatarUrl: _flash.user.avatarUrl,
- ...await this.generateCommonPugData(this.meta),
- });
+ ...await this.htmlTemplateService.getCommonData(),
+ }));
} else {
return await renderBase(reply);
}
@@ -674,15 +648,14 @@ export class ClientServerService {
reply.header('X-Robots-Tag', 'noimageai');
reply.header('X-Robots-Tag', 'noai');
}
- return await reply.view('clip', {
+ return await HtmlTemplateService.replyHtml(reply, ClipPage({
clip: _clip,
profile,
- avatarUrl: _clip.user.avatarUrl,
- ...await this.generateCommonPugData(this.meta),
- clientCtx: htmlSafeJsonStringify({
+ ...await this.htmlTemplateService.getCommonData(),
+ clientCtxJson: htmlSafeJsonStringify({
clip: _clip,
}),
- });
+ }));
} else {
return await renderBase(reply);
}
@@ -700,12 +673,11 @@ export class ClientServerService {
reply.header('X-Robots-Tag', 'noimageai');
reply.header('X-Robots-Tag', 'noai');
}
- return await reply.view('gallery-post', {
- post: _post,
+ return await HtmlTemplateService.replyHtml(reply, GalleryPostPage({
+ galleryPost: _post,
profile,
- avatarUrl: _post.user.avatarUrl,
- ...await this.generateCommonPugData(this.meta),
- });
+ ...await this.htmlTemplateService.getCommonData(),
+ }));
} else {
return await renderBase(reply);
}
@@ -720,10 +692,10 @@ export class ClientServerService {
if (channel) {
const _channel = await this.channelEntityService.pack(channel);
reply.header('Cache-Control', 'public, max-age=15');
- return await reply.view('channel', {
+ return await HtmlTemplateService.replyHtml(reply, ChannelPage({
channel: _channel,
- ...await this.generateCommonPugData(this.meta),
- });
+ ...await this.htmlTemplateService.getCommonData(),
+ }));
} else {
return await renderBase(reply);
}
@@ -738,10 +710,10 @@ export class ClientServerService {
if (game) {
const _game = await this.reversiGameEntityService.packDetail(game);
reply.header('Cache-Control', 'public, max-age=3600');
- return await reply.view('reversi-game', {
- game: _game,
- ...await this.generateCommonPugData(this.meta),
- });
+ return await HtmlTemplateService.replyHtml(reply, ReversiGamePage({
+ reversiGame: _game,
+ ...await this.htmlTemplateService.getCommonData(),
+ }));
} else {
return await renderBase(reply);
}
@@ -757,10 +729,10 @@ export class ClientServerService {
if (announcement) {
const _announcement = await this.announcementEntityService.pack(announcement);
reply.header('Cache-Control', 'public, max-age=3600');
- return await reply.view('announcement', {
+ return await HtmlTemplateService.replyHtml(reply, AnnouncementPage({
announcement: _announcement,
- ...await this.generateCommonPugData(this.meta),
- });
+ ...await this.htmlTemplateService.getCommonData(),
+ }));
} else {
return await renderBase(reply);
}
@@ -793,13 +765,13 @@ export class ClientServerService {
const _user = await this.userEntityService.pack(user);
reply.header('Cache-Control', 'public, max-age=3600');
- return await reply.view('base-embed', {
+ return await HtmlTemplateService.replyHtml(reply, BaseEmbed({
title: this.meta.name ?? 'Misskey',
- ...await this.generateCommonPugData(this.meta),
- embedCtx: htmlSafeJsonStringify({
+ ...await this.htmlTemplateService.getCommonData(),
+ embedCtxJson: htmlSafeJsonStringify({
user: _user,
}),
- });
+ }));
});
fastify.get<{ Params: { note: string; } }>('/embed/notes/:note', async (request, reply) => {
@@ -819,13 +791,13 @@ export class ClientServerService {
const _note = await this.noteEntityService.pack(note, null, { detail: true });
reply.header('Cache-Control', 'public, max-age=3600');
- return await reply.view('base-embed', {
+ return await HtmlTemplateService.replyHtml(reply, BaseEmbed({
title: this.meta.name ?? 'Misskey',
- ...await this.generateCommonPugData(this.meta),
- embedCtx: htmlSafeJsonStringify({
+ ...await this.htmlTemplateService.getCommonData(),
+ embedCtxJson: htmlSafeJsonStringify({
note: _note,
}),
- });
+ }));
});
fastify.get<{ Params: { clip: string; } }>('/embed/clips/:clip', async (request, reply) => {
@@ -840,48 +812,46 @@ export class ClientServerService {
const _clip = await this.clipEntityService.pack(clip);
reply.header('Cache-Control', 'public, max-age=3600');
- return await reply.view('base-embed', {
+ return await HtmlTemplateService.replyHtml(reply, BaseEmbed({
title: this.meta.name ?? 'Misskey',
- ...await this.generateCommonPugData(this.meta),
- embedCtx: htmlSafeJsonStringify({
+ ...await this.htmlTemplateService.getCommonData(),
+ embedCtxJson: htmlSafeJsonStringify({
clip: _clip,
}),
- });
+ }));
});
fastify.get('/embed/*', async (request, reply) => {
reply.removeHeader('X-Frame-Options');
reply.header('Cache-Control', 'public, max-age=3600');
- return await reply.view('base-embed', {
+ return await HtmlTemplateService.replyHtml(reply, BaseEmbed({
title: this.meta.name ?? 'Misskey',
- ...await this.generateCommonPugData(this.meta),
- });
+ ...await this.htmlTemplateService.getCommonData(),
+ }));
});
fastify.get('/_info_card_', async (request, reply) => {
reply.removeHeader('X-Frame-Options');
- return await reply.view('info-card', {
+ return await HtmlTemplateService.replyHtml(reply, InfoCardPage({
version: this.config.version,
- host: this.config.host,
+ config: this.config,
meta: this.meta,
- originalUsersCount: await this.usersRepository.countBy({ host: IsNull() }),
- originalNotesCount: await this.notesRepository.countBy({ userHost: IsNull() }),
- });
+ }));
});
//#endregion
fastify.get('/bios', async (request, reply) => {
- return await reply.view('bios', {
+ return await HtmlTemplateService.replyHtml(reply, BiosPage({
version: this.config.version,
- });
+ }));
});
fastify.get('/cli', async (request, reply) => {
- return await reply.view('cli', {
+ return await HtmlTemplateService.replyHtml(reply, CliPage({
version: this.config.version,
- });
+ }));
});
const override = (source: string, target: string, depth = 0) =>
@@ -904,7 +874,7 @@ export class ClientServerService {
reply.header('Clear-Site-Data', '"*"');
}
reply.header('Set-Cookie', 'http-flush-failed=1; Path=/flush; Max-Age=60');
- return await reply.view('flush');
+ return await HtmlTemplateService.replyHtml(reply, FlushPage());
});
// streamingに非WebSocketリクエストが来た場合にbase htmlをキャシュ付きで返すと、Proxy等でそのパスがキャッシュされておかしくなる
@@ -930,10 +900,10 @@ export class ClientServerService {
});
reply.code(500);
reply.header('Cache-Control', 'max-age=10, must-revalidate');
- return await reply.view('error', {
+ return await HtmlTemplateService.replyHtml(reply, ErrorPage({
code: error.code,
id: errId,
- });
+ }));
});
done();
diff --git a/packages/backend/src/server/web/HtmlTemplateService.ts b/packages/backend/src/server/web/HtmlTemplateService.ts
new file mode 100644
index 0000000000..8ff985530d
--- /dev/null
+++ b/packages/backend/src/server/web/HtmlTemplateService.ts
@@ -0,0 +1,105 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { dirname } from 'node:path';
+import { fileURLToPath } from 'node:url';
+import { promises as fsp } from 'node:fs';
+import { languages } from 'i18n/const';
+import { Injectable, Inject } from '@nestjs/common';
+import { DI } from '@/di-symbols.js';
+import { bindThis } from '@/decorators.js';
+import { htmlSafeJsonStringify } from '@/misc/json-stringify-html-safe.js';
+import { MetaEntityService } from '@/core/entities/MetaEntityService.js';
+import type { FastifyReply } from 'fastify';
+import type { Config } from '@/config.js';
+import type { MiMeta } from '@/models/Meta.js';
+import type { CommonData } from './views/_.js';
+
+const _filename = fileURLToPath(import.meta.url);
+const _dirname = dirname(_filename);
+
+const frontendVitePublic = `${_dirname}/../../../../frontend/public/`;
+const frontendEmbedVitePublic = `${_dirname}/../../../../frontend-embed/public/`;
+
+@Injectable()
+export class HtmlTemplateService {
+ private frontendBootloadersFetched = false;
+ public frontendBootloaderJs: string | null = null;
+ public frontendBootloaderCss: string | null = null;
+ public frontendEmbedBootloaderJs: string | null = null;
+ public frontendEmbedBootloaderCss: string | null = null;
+
+ constructor(
+ @Inject(DI.config)
+ private config: Config,
+
+ @Inject(DI.meta)
+ private meta: MiMeta,
+
+ private metaEntityService: MetaEntityService,
+ ) {
+ }
+
+ @bindThis
+ private async prepareFrontendBootloaders() {
+ if (this.frontendBootloadersFetched) return;
+ this.frontendBootloadersFetched = true;
+
+ const [bootJs, bootCss, embedBootJs, embedBootCss] = await Promise.all([
+ fsp.readFile(`${frontendVitePublic}loader/boot.js`, 'utf-8').catch(() => null),
+ fsp.readFile(`${frontendVitePublic}loader/style.css`, 'utf-8').catch(() => null),
+ fsp.readFile(`${frontendEmbedVitePublic}loader/boot.js`, 'utf-8').catch(() => null),
+ fsp.readFile(`${frontendEmbedVitePublic}loader/style.css`, 'utf-8').catch(() => null),
+ ]);
+
+ if (bootJs != null) {
+ this.frontendBootloaderJs = bootJs;
+ }
+
+ if (bootCss != null) {
+ this.frontendBootloaderCss = bootCss;
+ }
+
+ if (embedBootJs != null) {
+ this.frontendEmbedBootloaderJs = embedBootJs;
+ }
+
+ if (embedBootCss != null) {
+ this.frontendEmbedBootloaderCss = embedBootCss;
+ }
+ }
+
+ @bindThis
+ public async getCommonData(): Promise {
+ await this.prepareFrontendBootloaders();
+
+ return {
+ version: this.config.version,
+ config: this.config,
+ langs: [...languages],
+ instanceName: this.meta.name ?? 'Misskey',
+ icon: this.meta.iconUrl,
+ appleTouchIcon: this.meta.app512IconUrl,
+ themeColor: this.meta.themeColor,
+ serverErrorImageUrl: this.meta.serverErrorImageUrl ?? 'https://xn--931a.moe/assets/error.jpg',
+ infoImageUrl: this.meta.infoImageUrl ?? 'https://xn--931a.moe/assets/info.jpg',
+ notFoundImageUrl: this.meta.notFoundImageUrl ?? 'https://xn--931a.moe/assets/not-found.jpg',
+ instanceUrl: this.config.url,
+ metaJson: htmlSafeJsonStringify(await this.metaEntityService.packDetailed(this.meta)),
+ now: Date.now(),
+ federationEnabled: this.meta.federation !== 'none',
+ frontendBootloaderJs: this.frontendBootloaderJs,
+ frontendBootloaderCss: this.frontendBootloaderCss,
+ frontendEmbedBootloaderJs: this.frontendEmbedBootloaderJs,
+ frontendEmbedBootloaderCss: this.frontendEmbedBootloaderCss,
+ };
+ }
+
+ public static async replyHtml(reply: FastifyReply, html: string | Promise) {
+ reply.header('Content-Type', 'text/html; charset=utf-8');
+ const _html = await html;
+ return reply.send(_html);
+ }
+}
diff --git a/packages/backend/src/server/web/UrlPreviewService.ts b/packages/backend/src/server/web/UrlPreviewService.ts
index b9a4015031..bd1dbb430c 100644
--- a/packages/backend/src/server/web/UrlPreviewService.ts
+++ b/packages/backend/src/server/web/UrlPreviewService.ts
@@ -4,8 +4,7 @@
*/
import { Inject, Injectable } from '@nestjs/common';
-import { summaly } from '@misskey-dev/summaly';
-import { SummalyResult } from '@misskey-dev/summaly/built/summary.js';
+import type { SummalyResult } from '@misskey-dev/summaly/built/summary.js';
import { DI } from '@/di-symbols.js';
import type { Config } from '@/config.js';
import { HttpRequestService } from '@/core/HttpRequestService.js';
@@ -113,7 +112,7 @@ export class UrlPreviewService {
}
}
- private fetchSummary(url: string, meta: MiMeta, lang?: string): Promise {
+ private async fetchSummary(url: string, meta: MiMeta, lang?: string): Promise {
const agent = this.config.proxy
? {
http: this.httpRequestService.httpAgent,
@@ -121,6 +120,8 @@ export class UrlPreviewService {
}
: undefined;
+ const { summaly } = await import('@misskey-dev/summaly');
+
return summaly(url, {
followRedirects: this.meta.urlPreviewAllowRedirect,
lang: lang ?? 'ja-JP',
diff --git a/packages/backend/src/server/web/views/_.ts b/packages/backend/src/server/web/views/_.ts
new file mode 100644
index 0000000000..ac7418f362
--- /dev/null
+++ b/packages/backend/src/server/web/views/_.ts
@@ -0,0 +1,49 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Config } from '@/config.js';
+
+export const comment = ``;
+
+export const defaultDescription = '✨🌎✨ A interplanetary communication platform ✨🚀✨';
+
+export type MinimumCommonData = {
+ version: string;
+ config: Config;
+};
+
+export type CommonData = MinimumCommonData & {
+ langs: string[];
+ instanceName: string;
+ icon: string | null;
+ appleTouchIcon: string | null;
+ themeColor: string | null;
+ serverErrorImageUrl: string;
+ infoImageUrl: string;
+ notFoundImageUrl: string;
+ instanceUrl: string;
+ now: number;
+ federationEnabled: boolean;
+ frontendBootloaderJs: string | null;
+ frontendBootloaderCss: string | null;
+ frontendEmbedBootloaderJs: string | null;
+ frontendEmbedBootloaderCss: string | null;
+ metaJson?: string;
+ clientCtxJson?: string;
+};
+
+export type CommonPropsMinimum> = MinimumCommonData & T;
+
+export type CommonProps> = CommonData & T;
diff --git a/packages/backend/src/server/web/views/_splash.tsx b/packages/backend/src/server/web/views/_splash.tsx
new file mode 100644
index 0000000000..ea79b8d61d
--- /dev/null
+++ b/packages/backend/src/server/web/views/_splash.tsx
@@ -0,0 +1,26 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export function Splash(props: {
+ icon?: string | null;
+}) {
+ return (
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/announcement.pug b/packages/backend/src/server/web/views/announcement.pug
deleted file mode 100644
index 7a4052e8a4..0000000000
--- a/packages/backend/src/server/web/views/announcement.pug
+++ /dev/null
@@ -1,21 +0,0 @@
-extends ./base
-
-block vars
- - const title = announcement.title;
- - const description = announcement.text.length > 100 ? announcement.text.slice(0, 100) + '…' : announcement.text;
- - const url = `${config.url}/announcements/${announcement.id}`;
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content=description)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= description)
- meta(property='og:url' content= url)
- if announcement.imageUrl
- meta(property='og:image' content=announcement.imageUrl)
- meta(property='twitter:card' content='summary_large_image')
diff --git a/packages/backend/src/server/web/views/announcement.tsx b/packages/backend/src/server/web/views/announcement.tsx
new file mode 100644
index 0000000000..bc1c808177
--- /dev/null
+++ b/packages/backend/src/server/web/views/announcement.tsx
@@ -0,0 +1,41 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function AnnouncementPage(props: CommonProps<{
+ announcement: Packed<'Announcement'>;
+}>) {
+ const description = props.announcement.text.length > 100 ? props.announcement.text.slice(0, 100) + '…' : props.announcement.text;
+
+ function ogBlock() {
+ return (
+ <>
+
+
+
+
+ {props.announcement.imageUrl ? (
+ <>
+
+
+ >
+ ) : null}
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/base-embed.pug b/packages/backend/src/server/web/views/base-embed.pug
deleted file mode 100644
index 29de86b8b6..0000000000
--- a/packages/backend/src/server/web/views/base-embed.pug
+++ /dev/null
@@ -1,71 +0,0 @@
-block vars
-
-block loadClientEntry
- - const entry = config.frontendEmbedEntry;
-
-doctype html
-
-html(class='embed')
-
- head
- meta(charset='utf-8')
- meta(name='application-name' content='Misskey')
- meta(name='referrer' content='origin')
- meta(name='theme-color' content= themeColor || '#86b300')
- meta(name='theme-color-orig' content= themeColor || '#86b300')
- meta(property='og:site_name' content= instanceName || 'Misskey')
- meta(property='instance_url' content= instanceUrl)
- meta(name='viewport' content='width=device-width, initial-scale=1')
- meta(name='format-detection' content='telephone=no,date=no,address=no,email=no,url=no')
- link(rel='icon' href= icon || '/favicon.ico')
- link(rel='apple-touch-icon' href= appleTouchIcon || '/apple-touch-icon.png')
-
- if !config.frontendEmbedManifestExists
- script(type="module" src="/embed_vite/@vite/client")
-
- if Array.isArray(entry.css)
- each href in entry.css
- link(rel='stylesheet' href=`/embed_vite/${href}`)
-
- title
- block title
- = title || 'Misskey'
-
- block meta
- meta(name='robots' content='noindex')
-
- style
- include ../style.embed.css
-
- script.
- var VERSION = "#{version}";
- var CLIENT_ENTRY = !{JSON.stringify(entry.file)};
-
- script(type='application/json' id='misskey_meta' data-generated-at=now)
- != metaJson
-
- script(type='application/json' id='misskey_embedCtx' data-generated-at=now)
- != embedCtx
-
- script
- include ../boot.embed.js
-
- body
- noscript: p
- | JavaScriptを有効にしてください
- br
- | Please turn on your JavaScript
- div#splash
- img#splashIcon(src= icon || '/static-assets/splash.png')
- div#splashSpinner
-
-
- block content
diff --git a/packages/backend/src/server/web/views/base-embed.tsx b/packages/backend/src/server/web/views/base-embed.tsx
new file mode 100644
index 0000000000..011b66592e
--- /dev/null
+++ b/packages/backend/src/server/web/views/base-embed.tsx
@@ -0,0 +1,88 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { comment } from '@/server/web/views/_.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Splash } from '@/server/web/views/_splash.js';
+import type { PropsWithChildren, Children } from '@kitajs/html';
+
+export function BaseEmbed(props: PropsWithChildren>) {
+ const now = Date.now();
+
+ // 変数名をsafeで始めることでエラーをスキップ
+ const safeMetaJson = props.metaJson;
+ const safeEmbedCtxJson = props.embedCtxJson;
+
+ return (
+ <>
+ {''}
+ {comment}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {!props.config.frontendEmbedManifestExists ? : null}
+
+ {props.config.frontendEmbedEntry.css != null ? props.config.frontendEmbedEntry.css.map((href) => (
+
+ )) : null}
+
+ {props.titleSlot ?? {props.title || 'Misskey'} }
+
+ {props.metaSlot}
+
+
+
+ {props.frontendEmbedBootloaderCss != null ? : }
+
+
+
+ {safeMetaJson != null ? : null}
+ {safeEmbedCtxJson != null ? : null}
+
+ {props.frontendEmbedBootloaderJs != null ? : }
+
+
+
+
+ {props.children}
+
+
+ >
+ );
+}
+
diff --git a/packages/backend/src/server/web/views/base.pug b/packages/backend/src/server/web/views/base.pug
deleted file mode 100644
index 46b365a9c7..0000000000
--- a/packages/backend/src/server/web/views/base.pug
+++ /dev/null
@@ -1,100 +0,0 @@
-block vars
-
-block loadClientEntry
- - const entry = config.frontendEntry;
- - const baseUrl = config.url;
-
-doctype html
-
-//
- -
- _____ _ _
- | |_|___ ___| |_ ___ _ _
- | | | | |_ -|_ -| '_| -_| | |
- |_|_|_|_|___|___|_,_|___|_ |
- |___|
- Thank you for using Misskey!
- If you are reading this message... how about joining the development?
- https://github.com/misskey-dev/misskey
-
-
-html
-
- head
- meta(charset='utf-8')
- meta(name='application-name' content='Misskey')
- meta(name='referrer' content='origin')
- meta(name='theme-color' content= themeColor || '#86b300')
- meta(name='theme-color-orig' content= themeColor || '#86b300')
- meta(property='og:site_name' content= instanceName || 'Misskey')
- meta(property='instance_url' content= instanceUrl)
- meta(name='viewport' content='width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover')
- meta(name='format-detection' content='telephone=no,date=no,address=no,email=no,url=no')
- link(rel='icon' href= icon || '/favicon.ico')
- link(rel='apple-touch-icon' href= appleTouchIcon || '/apple-touch-icon.png')
- link(rel='manifest' href='/manifest.json')
- link(rel='search' type='application/opensearchdescription+xml' title=(title || "Misskey") href=`${baseUrl}/opensearch.xml`)
- link(rel='prefetch' href=serverErrorImageUrl)
- link(rel='prefetch' href=infoImageUrl)
- link(rel='prefetch' href=notFoundImageUrl)
-
- if !config.frontendManifestExists
- script(type="module" src="/vite/@vite/client")
-
- if Array.isArray(entry.css)
- each href in entry.css
- link(rel='stylesheet' href=`/vite/${href}`)
-
- title
- block title
- = title || 'Misskey'
-
- if noindex
- meta(name='robots' content='noindex')
-
- block desc
- meta(name='description' content= desc || '✨🌎✨ A interplanetary communication platform ✨🚀✨')
-
- block meta
-
- block og
- meta(property='og:title' content= title || 'Misskey')
- meta(property='og:description' content= desc || '✨🌎✨ A interplanetary communication platform ✨🚀✨')
- meta(property='og:image' content= img)
- meta(property='twitter:card' content='summary')
-
- style
- include ../style.css
-
- script.
- var VERSION = "#{version}";
- var CLIENT_ENTRY = !{JSON.stringify(entry.file)};
-
- script(type='application/json' id='misskey_meta' data-generated-at=now)
- != metaJson
-
- script(type='application/json' id='misskey_clientCtx' data-generated-at=now)
- != clientCtx
-
- script
- include ../boot.js
-
- body
- noscript: p
- | JavaScriptを有効にしてください
- br
- | Please turn on your JavaScript
- div#splash
- img#splashIcon(src= icon || '/static-assets/splash.png')
- div#splashSpinner
-
-
- block content
diff --git a/packages/backend/src/server/web/views/base.tsx b/packages/backend/src/server/web/views/base.tsx
new file mode 100644
index 0000000000..6fa3395fb8
--- /dev/null
+++ b/packages/backend/src/server/web/views/base.tsx
@@ -0,0 +1,108 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { comment, defaultDescription } from '@/server/web/views/_.js';
+import { Splash } from '@/server/web/views/_splash.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import type { PropsWithChildren, Children } from '@kitajs/html';
+
+export function Layout(props: PropsWithChildren>) {
+ const now = Date.now();
+
+ // 変数名をsafeで始めることでエラーをスキップ
+ const safeMetaJson = props.metaJson;
+ const safeClientCtxJson = props.clientCtxJson;
+
+ return (
+ <>
+ {''}
+ {comment}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {props.serverErrorImageUrl != null ? : null}
+ {props.infoImageUrl != null ? : null}
+ {props.notFoundImageUrl != null ? : null}
+
+ {!props.config.frontendManifestExists ? : null}
+
+ {props.config.frontendEntry.css != null ? props.config.frontendEntry.css.map((href) => (
+
+ )) : null}
+
+ {props.titleSlot ?? {props.title || 'Misskey'} }
+
+ {props.noindex ? : null}
+
+ {props.descSlot ?? (props.desc != null ? : null)}
+
+ {props.metaSlot}
+
+ {props.ogSlot ?? (
+ <>
+
+
+ {props.img != null ? : null}
+
+ >
+ )}
+
+ {props.frontendBootloaderCss != null ? : }
+
+
+
+ {safeMetaJson != null ? : null}
+ {safeClientCtxJson != null ? : null}
+
+ {props.frontendBootloaderJs != null ? : }
+
+
+
+
+ {props.children}
+
+
+ >
+ );
+}
+
+export { Layout as BasePage };
+
diff --git a/packages/backend/src/server/web/views/bios.pug b/packages/backend/src/server/web/views/bios.pug
deleted file mode 100644
index 39a151a29b..0000000000
--- a/packages/backend/src/server/web/views/bios.pug
+++ /dev/null
@@ -1,20 +0,0 @@
-doctype html
-
-html
-
- head
- meta(charset='utf-8')
- meta(name='application-name' content='Misskey')
- title Misskey Repair Tool
- style
- include ../bios.css
- script
- include ../bios.js
-
- body
- header
- h1 Misskey Repair Tool #{version}
- main
- div.tabs
- button#ls edit local storage
- div#content
diff --git a/packages/backend/src/server/web/views/bios.tsx b/packages/backend/src/server/web/views/bios.tsx
new file mode 100644
index 0000000000..9010de8d75
--- /dev/null
+++ b/packages/backend/src/server/web/views/bios.tsx
@@ -0,0 +1,35 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export function BiosPage(props: {
+ version: string;
+}) {
+ return (
+ <>
+ {''}
+
+
+
+
+ Misskey Repair Tool
+
+
+
+
+
+ Misskey Repair Tool {props.version}
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/packages/backend/src/server/web/views/channel.pug b/packages/backend/src/server/web/views/channel.pug
deleted file mode 100644
index c514025e0b..0000000000
--- a/packages/backend/src/server/web/views/channel.pug
+++ /dev/null
@@ -1,19 +0,0 @@
-extends ./base
-
-block vars
- - const title = channel.name;
- - const url = `${config.url}/channels/${channel.id}`;
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content= channel.description)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= channel.description)
- meta(property='og:url' content= url)
- meta(property='og:image' content= channel.bannerUrl)
- meta(property='twitter:card' content='summary')
diff --git a/packages/backend/src/server/web/views/channel.tsx b/packages/backend/src/server/web/views/channel.tsx
new file mode 100644
index 0000000000..7d8123ea85
--- /dev/null
+++ b/packages/backend/src/server/web/views/channel.tsx
@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function ChannelPage(props: CommonProps<{
+ channel: Packed<'Channel'>;
+}>) {
+
+ function ogBlock() {
+ return (
+ <>
+
+
+ {props.channel.description != null ? : null}
+
+ {props.channel.bannerUrl ? (
+ <>
+
+
+ >
+ ) : null}
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/cli.pug b/packages/backend/src/server/web/views/cli.pug
deleted file mode 100644
index d2cf7c4335..0000000000
--- a/packages/backend/src/server/web/views/cli.pug
+++ /dev/null
@@ -1,21 +0,0 @@
-doctype html
-
-html
-
- head
- meta(charset='utf-8')
- meta(name='application-name' content='Misskey')
- title Misskey Cli
- style
- include ../cli.css
- script
- include ../cli.js
-
- body
- header
- h1 Misskey Cli #{version}
- main
- div#form
- textarea#text
- button#submit submit
- div#tl
diff --git a/packages/backend/src/server/web/views/cli.tsx b/packages/backend/src/server/web/views/cli.tsx
new file mode 100644
index 0000000000..009d982b35
--- /dev/null
+++ b/packages/backend/src/server/web/views/cli.tsx
@@ -0,0 +1,37 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export function CliPage(props: {
+ version: string;
+}) {
+ return (
+ <>
+ {''}
+
+
+
+
+ Misskey CLI Tool
+
+
+
+
+
+
+ Misskey CLI {props.version}
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/packages/backend/src/server/web/views/clip.pug b/packages/backend/src/server/web/views/clip.pug
deleted file mode 100644
index 5a0018803a..0000000000
--- a/packages/backend/src/server/web/views/clip.pug
+++ /dev/null
@@ -1,35 +0,0 @@
-extends ./base
-
-block vars
- - const user = clip.user;
- - const title = clip.name;
- - const url = `${config.url}/clips/${clip.id}`;
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content= clip.description)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= clip.description)
- meta(property='og:url' content= url)
- meta(property='og:image' content= avatarUrl)
- meta(property='twitter:card' content='summary')
-
-block meta
- if profile.noCrawle
- meta(name='robots' content='noindex')
- if profile.preventAiLearning
- meta(name='robots' content='noimageai')
- meta(name='robots' content='noai')
-
- meta(name='misskey:user-username' content=user.username)
- meta(name='misskey:user-id' content=user.id)
- meta(name='misskey:clip-id' content=clip.id)
-
- // todo
- if user.twitter
- meta(name='twitter:creator' content=`@${user.twitter.screenName}`)
diff --git a/packages/backend/src/server/web/views/clip.tsx b/packages/backend/src/server/web/views/clip.tsx
new file mode 100644
index 0000000000..c3cc505e35
--- /dev/null
+++ b/packages/backend/src/server/web/views/clip.tsx
@@ -0,0 +1,59 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { MiUserProfile } from '@/models/UserProfile.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function ClipPage(props: CommonProps<{
+ clip: Packed<'Clip'>;
+ profile: MiUserProfile;
+}>) {
+ function ogBlock() {
+ return (
+ <>
+
+
+ {props.clip.description != null ? : null}
+
+ {props.clip.user.avatarUrl ? (
+ <>
+
+
+ >
+ ) : null}
+ >
+ );
+ }
+
+ function metaBlock() {
+ return (
+ <>
+ {props.profile.noCrawle ? : null}
+ {props.profile.preventAiLearning ? (
+ <>
+
+
+ >
+ ) : null}
+
+
+
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/error.pug b/packages/backend/src/server/web/views/error.pug
deleted file mode 100644
index 6a78d1878c..0000000000
--- a/packages/backend/src/server/web/views/error.pug
+++ /dev/null
@@ -1,71 +0,0 @@
-doctype html
-
-//
- -
- _____ _ _
- | |_|___ ___| |_ ___ _ _
- | | | | |_ -|_ -| '_| -_| | |
- |_|_|_|_|___|___|_,_|___|_ |
- |___|
- Thank you for using Misskey!
- If you are reading this message... how about joining the development?
- https://github.com/misskey-dev/misskey
-
-
-html
-
- head
- meta(charset='utf-8')
- meta(name='viewport' content='width=device-width, initial-scale=1')
- meta(name='application-name' content='Misskey')
- meta(name='referrer' content='origin')
-
- title
- block title
- = 'An error has occurred... | Misskey'
-
- style
- include ../error.css
-
- script
- include ../error.js
-
-body
- svg.icon-warning(xmlns="http://www.w3.org/2000/svg", viewBox="0 0 24 24", stroke-width="2", stroke="currentColor", fill="none", stroke-linecap="round", stroke-linejoin="round")
- path(stroke="none", d="M0 0h24v24H0z", fill="none")
- path(d="M12 9v2m0 4v.01")
- path(d="M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75")
-
- h1(data-i18n="title") Failed to initialize Misskey
-
- button.button-big(onclick="location.reload();")
- span.button-label-big(data-i18n-reload) Reload
-
- p(data-i18n="serverError") If reloading after a period of time does not resolve the problem, contact the server administrator with the following ERROR ID.
-
- div#errors
- code.
- ERROR CODE: #{code}
- ERROR ID: #{id}
-
- p
- b(data-i18n="solution") The following actions may solve the problem.
-
- p(data-i18n="solution1") Update your os and browser
- p(data-i18n="solution2") Disable an adblocker
- p(data-i18n="solution3") Clear your browser cache
- p(data-i18n="solution4") (Tor Browser) Set dom.webaudio.enabled to true
-
- details(style="color: #86b300;")
- summary(data-i18n="otherOption") Other options
- a(href="/flush")
- button.button-small
- span.button-label-small(data-i18n="otherOption1") Clear preferences and cache
- br
- a(href="/cli")
- button.button-small
- span.button-label-small(data-i18n="otherOption2") Start the simple client
- br
- a(href="/bios")
- button.button-small
- span.button-label-small(data-i18n="otherOption3") Start the repair tool
diff --git a/packages/backend/src/server/web/views/error.tsx b/packages/backend/src/server/web/views/error.tsx
new file mode 100644
index 0000000000..9d0e60aa30
--- /dev/null
+++ b/packages/backend/src/server/web/views/error.tsx
@@ -0,0 +1,89 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { comment } from '@/server/web/views/_.js';
+import type { CommonPropsMinimum } from '@/server/web/views/_.js';
+
+export function ErrorPage(props: {
+ title?: string;
+ code: string;
+ id: string;
+}) {
+ return (
+ <>
+ {''}
+ {comment}
+
+
+
+
+
+
+ {props.title ?? 'An error has occurred... | Misskey'}
+
+
+
+
+
+ Failed to initialize Misskey
+
+
+
+
+ If reloading after a period of time does not resolve the problem, contact the server administrator with the following ERROR ID.
+
+
+
+
+ ERROR CODE: {props.code}
+ ERROR ID: {props.id}
+
+
+
+ The following actions may solve the problem.
+
+ Update your os and browser
+ Disable an adblocker
+ Clear your browser cache
+ (Tor Browser) Set dom.webaudio.enabled to true
+
+
+
+
+ >
+ );
+}
diff --git a/packages/backend/src/server/web/views/flash.pug b/packages/backend/src/server/web/views/flash.pug
deleted file mode 100644
index 1549aa7906..0000000000
--- a/packages/backend/src/server/web/views/flash.pug
+++ /dev/null
@@ -1,35 +0,0 @@
-extends ./base
-
-block vars
- - const user = flash.user;
- - const title = flash.title;
- - const url = `${config.url}/play/${flash.id}`;
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content= flash.summary)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= flash.summary)
- meta(property='og:url' content= url)
- meta(property='og:image' content= avatarUrl)
- meta(property='twitter:card' content='summary')
-
-block meta
- if profile.noCrawle
- meta(name='robots' content='noindex')
- if profile.preventAiLearning
- meta(name='robots' content='noimageai')
- meta(name='robots' content='noai')
-
- meta(name='misskey:user-username' content=user.username)
- meta(name='misskey:user-id' content=user.id)
- meta(name='misskey:flash-id' content=flash.id)
-
- // todo
- if user.twitter
- meta(name='twitter:creator' content=`@${user.twitter.screenName}`)
diff --git a/packages/backend/src/server/web/views/flash.tsx b/packages/backend/src/server/web/views/flash.tsx
new file mode 100644
index 0000000000..25a6b2c0ae
--- /dev/null
+++ b/packages/backend/src/server/web/views/flash.tsx
@@ -0,0 +1,59 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { MiUserProfile } from '@/models/UserProfile.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function FlashPage(props: CommonProps<{
+ flash: Packed<'Flash'>;
+ profile: MiUserProfile;
+}>) {
+ function ogBlock() {
+ return (
+ <>
+
+
+
+
+ {props.flash.user.avatarUrl ? (
+ <>
+
+
+ >
+ ) : null}
+ >
+ );
+ }
+
+ function metaBlock() {
+ return (
+ <>
+ {props.profile.noCrawle ? : null}
+ {props.profile.preventAiLearning ? (
+ <>
+
+
+ >
+ ) : null}
+
+
+
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/flush.pug b/packages/backend/src/server/web/views/flush.pug
deleted file mode 100644
index 7884495d08..0000000000
--- a/packages/backend/src/server/web/views/flush.pug
+++ /dev/null
@@ -1,51 +0,0 @@
-doctype html
-
-html
- #msg
- script.
- const msg = document.getElementById('msg');
- const successText = `\nSuccess Flush! Back to Misskey\n成功しました。Misskeyを開き直してください。`;
-
- if (!document.cookie) {
- message('Your site data is fully cleared by your browser.');
- message(successText);
- } else {
- message('Your browser does not support Clear-Site-Data header. Start opportunistic flushing.');
- (async function() {
- try {
- localStorage.clear();
- message('localStorage cleared.');
-
- const idbPromises = ['MisskeyClient', 'keyval-store'].map((name, i, arr) => new Promise((res, rej) => {
- const delidb = indexedDB.deleteDatabase(name);
- delidb.onsuccess = () => res(message(`indexedDB "${name}" cleared. (${i + 1}/${arr.length})`));
- delidb.onerror = e => rej(e)
- }));
-
- await Promise.all(idbPromises);
-
- if (navigator.serviceWorker.controller) {
- navigator.serviceWorker.controller.postMessage('clear');
- await navigator.serviceWorker.getRegistrations()
- .then(registrations => {
- return Promise.all(registrations.map(registration => registration.unregister()));
- })
- .catch(e => { throw new Error(e) });
- }
-
- message(successText);
- } catch (e) {
- message(`\n${e}\n\nFlush Failed. Please retry.\n失敗しました。もう一度試してみてください。`);
- message(`\nIf you retry more than 3 times, try manually clearing the browser cache or contact to instance admin.\n3回以上試しても失敗する場合、ブラウザのキャッシュを手動で消去し、それでもだめならインスタンス管理者に連絡してみてください。\n`)
-
- console.error(e);
- setTimeout(() => {
- location = '/';
- }, 10000)
- }
- })();
- }
-
- function message(text) {
- msg.insertAdjacentHTML('beforeend', `[${(new Date()).toString()}] ${text.replace(/\n/g,'
')}
`)
- }
diff --git a/packages/backend/src/server/web/views/flush.tsx b/packages/backend/src/server/web/views/flush.tsx
new file mode 100644
index 0000000000..f3fdc8fcb0
--- /dev/null
+++ b/packages/backend/src/server/web/views/flush.tsx
@@ -0,0 +1,23 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export function FlushPage(props?: {}) {
+ return (
+ <>
+ {''}
+
+
+
+
+ Clear preferences and cache
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/packages/backend/src/server/web/views/gallery-post.pug b/packages/backend/src/server/web/views/gallery-post.pug
deleted file mode 100644
index 9ae25d9ac8..0000000000
--- a/packages/backend/src/server/web/views/gallery-post.pug
+++ /dev/null
@@ -1,41 +0,0 @@
-extends ./base
-
-block vars
- - const user = post.user;
- - const title = post.title;
- - const url = `${config.url}/gallery/${post.id}`;
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content= post.description)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= post.description)
- meta(property='og:url' content= url)
- if post.isSensitive
- meta(property='og:image' content= avatarUrl)
- meta(property='twitter:card' content='summary')
- else
- meta(property='og:image' content= post.files[0].thumbnailUrl)
- meta(property='twitter:card' content='summary_large_image')
-
-block meta
- if user.host || profile.noCrawle
- meta(name='robots' content='noindex')
- if profile.preventAiLearning
- meta(name='robots' content='noimageai')
- meta(name='robots' content='noai')
-
- meta(name='misskey:user-username' content=user.username)
- meta(name='misskey:user-id' content=user.id)
-
- // todo
- if user.twitter
- meta(name='twitter:creator' content=`@${user.twitter.screenName}`)
-
- if !user.host
- link(rel='alternate' href=url type='application/activity+json')
diff --git a/packages/backend/src/server/web/views/gallery-post.tsx b/packages/backend/src/server/web/views/gallery-post.tsx
new file mode 100644
index 0000000000..2bec2de930
--- /dev/null
+++ b/packages/backend/src/server/web/views/gallery-post.tsx
@@ -0,0 +1,65 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { MiUserProfile } from '@/models/UserProfile.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function GalleryPostPage(props: CommonProps<{
+ galleryPost: Packed<'GalleryPost'>;
+ profile: MiUserProfile;
+}>) {
+ function ogBlock() {
+ return (
+ <>
+
+
+ {props.galleryPost.description != null ? : null}
+
+ {props.galleryPost.isSensitive && props.galleryPost.user.avatarUrl ? (
+ <>
+
+
+ >
+ ) : null}
+ {!props.galleryPost.isSensitive && props.galleryPost.files != null ? (
+ <>
+
+
+ >
+ ) : null}
+ >
+ );
+ }
+
+ function metaBlock() {
+ return (
+ <>
+ {props.profile.noCrawle ? : null}
+ {props.profile.preventAiLearning ? (
+ <>
+
+
+ >
+ ) : null}
+
+
+
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/info-card.pug b/packages/backend/src/server/web/views/info-card.pug
deleted file mode 100644
index 2a4954ec8b..0000000000
--- a/packages/backend/src/server/web/views/info-card.pug
+++ /dev/null
@@ -1,50 +0,0 @@
-doctype html
-
-html
-
- head
- meta(charset='utf-8')
- meta(name='application-name' content='Misskey')
- title= meta.name || host
- style.
- html, body {
- margin: 0;
- padding: 0;
- min-height: 100vh;
- background: #fff;
- }
-
- #a {
- display: block;
- }
-
- #banner {
- background-size: cover;
- background-position: center center;
- }
-
- #title {
- display: inline-block;
- margin: 24px;
- padding: 0.5em 0.8em;
- color: #fff;
- background: rgba(0, 0, 0, 0.5);
- font-weight: bold;
- font-size: 1.3em;
- }
-
- #content {
- overflow: auto;
- color: #353c3e;
- }
-
- #description {
- margin: 24px;
- }
-
- body
- a#a(href=`https://${host}` target="_blank")
- header#banner(style=`background-image: url(${meta.bannerUrl})`)
- div#title= meta.name || host
- div#content
- div#description!= meta.description
diff --git a/packages/backend/src/server/web/views/info-card.tsx b/packages/backend/src/server/web/views/info-card.tsx
new file mode 100644
index 0000000000..27be4c69e8
--- /dev/null
+++ b/packages/backend/src/server/web/views/info-card.tsx
@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { comment, CommonPropsMinimum } from '@/server/web/views/_.js';
+import type { MiMeta } from '@/models/Meta.js';
+
+export function InfoCardPage(props: CommonPropsMinimum<{
+ meta: MiMeta;
+}>) {
+ // 変数名をsafeで始めることでエラーをスキップ
+ const safeDescription = props.meta.description;
+
+ return (
+ <>
+ {''}
+ {comment}
+
+
+
+
+
+ {props.meta.name ?? props.config.url}
+
+
+
+
+
+ {props.meta.name ?? props.config.url}
+
+
+
+ {safeDescription}
+
+
+
+ >
+ );
+}
diff --git a/packages/backend/src/server/web/views/note.pug b/packages/backend/src/server/web/views/note.pug
deleted file mode 100644
index ea1993aed0..0000000000
--- a/packages/backend/src/server/web/views/note.pug
+++ /dev/null
@@ -1,62 +0,0 @@
-extends ./base
-
-block vars
- - const user = note.user;
- - const title = user.name ? `${user.name} (@${user.username}${user.host ? `@${user.host}` : ''})` : `@${user.username}${user.host ? `@${user.host}` : ''}`;
- - const url = `${config.url}/notes/${note.id}`;
- - const isRenote = note.renote && note.text == null && note.fileIds.length == 0 && note.poll == null;
- - const images = (note.files || []).filter(file => file.type.startsWith('image/') && !file.isSensitive)
- - const videos = (note.files || []).filter(file => file.type.startsWith('video/') && !file.isSensitive)
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content= summary)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= summary)
- meta(property='og:url' content= url)
- if videos.length
- each video in videos
- meta(property='og:video:url' content= video.url)
- meta(property='og:video:secure_url' content= video.url)
- meta(property='og:video:type' content= video.type)
- // FIXME: add width and height
- // FIXME: add embed player for Twitter
- if images.length
- meta(property='twitter:card' content='summary_large_image')
- each image in images
- meta(property='og:image' content= image.url)
- else
- meta(property='twitter:card' content='summary')
- meta(property='og:image' content= avatarUrl)
-
-
-block meta
- if user.host || isRenote || profile.noCrawle
- meta(name='robots' content='noindex')
- if profile.preventAiLearning
- meta(name='robots' content='noimageai')
- meta(name='robots' content='noai')
-
- meta(name='misskey:user-username' content=user.username)
- meta(name='misskey:user-id' content=user.id)
- meta(name='misskey:note-id' content=note.id)
-
- // todo
- if user.twitter
- meta(name='twitter:creator' content=`@${user.twitter.screenName}`)
-
- if note.prev
- link(rel='prev' href=`${config.url}/notes/${note.prev}`)
- if note.next
- link(rel='next' href=`${config.url}/notes/${note.next}`)
-
- if federationEnabled
- if !user.host
- link(rel='alternate' href=url type='application/activity+json')
- if note.uri
- link(rel='alternate' href=note.uri type='application/activity+json')
diff --git a/packages/backend/src/server/web/views/note.tsx b/packages/backend/src/server/web/views/note.tsx
new file mode 100644
index 0000000000..803c3d2537
--- /dev/null
+++ b/packages/backend/src/server/web/views/note.tsx
@@ -0,0 +1,94 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { MiUserProfile } from '@/models/UserProfile.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+import { isRenotePacked } from '@/misc/is-renote.js';
+import { getNoteSummary } from '@/misc/get-note-summary.js';
+
+export function NotePage(props: CommonProps<{
+ note: Packed<'Note'>;
+ profile: MiUserProfile;
+}>) {
+ const title = props.note.user.name ? `${props.note.user.name} (@${props.note.user.username}${props.note.user.host ? `@${props.note.user.host}` : ''})` : `@${props.note.user.username}${props.note.user.host ? `@${props.note.user.host}` : ''}`
+ const isRenote = isRenotePacked(props.note);
+ const images = (props.note.files ?? []).filter(f => f.type.startsWith('image/'));
+ const videos = (props.note.files ?? []).filter(f => f.type.startsWith('video/'));
+ const summary = getNoteSummary(props.note);
+
+ function ogBlock() {
+ return (
+ <>
+
+
+
+
+ {videos.map(video => (
+ <>
+
+
+
+ {video.thumbnailUrl ? : null}
+ {video.properties.width != null ? : null}
+ {video.properties.height != null ? : null}
+ >
+ ))}
+ {images.length > 0 ? (
+ <>
+
+ {images.map(image => (
+ <>
+
+ {image.properties.width != null ? : null}
+ {image.properties.height != null ? : null}
+ >
+ ))}
+ >
+ ) : (
+ <>
+
+
+ >
+ )}
+ >
+ );
+ }
+
+ function metaBlock() {
+ return (
+ <>
+ {props.note.user.host != null || isRenote || props.profile.noCrawle ? : null}
+ {props.profile.preventAiLearning ? (
+ <>
+
+
+ >
+ ) : null}
+
+
+
+
+ {props.federationEnabled ? (
+ <>
+ {props.note.user.host == null ? : null}
+ {props.note.uri != null ? : null}
+ >
+ ) : null}
+ >
+ );
+ }
+
+ return (
+
+ )
+}
diff --git a/packages/backend/src/server/web/views/oauth.pug b/packages/backend/src/server/web/views/oauth.pug
deleted file mode 100644
index 4195ccc3a3..0000000000
--- a/packages/backend/src/server/web/views/oauth.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ./base
-
-block meta
- //- Should be removed by the page when it loads, so that it won't needlessly
- //- stay when user navigates away via the navigation bar
- //- XXX: Remove navigation bar in auth page?
- meta(name='misskey:oauth:transaction-id' content=transactionId)
- meta(name='misskey:oauth:client-name' content=clientName)
- if clientLogo
- meta(name='misskey:oauth:client-logo' content=clientLogo)
- meta(name='misskey:oauth:scope' content=scope)
diff --git a/packages/backend/src/server/web/views/oauth.tsx b/packages/backend/src/server/web/views/oauth.tsx
new file mode 100644
index 0000000000..d12b0d15fd
--- /dev/null
+++ b/packages/backend/src/server/web/views/oauth.tsx
@@ -0,0 +1,37 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function OAuthPage(props: CommonProps<{
+ transactionId: string;
+ clientName: string;
+ clientLogo?: string;
+ scope: string[];
+}>) {
+
+ //- Should be removed by the page when it loads, so that it won't needlessly
+ //- stay when user navigates away via the navigation bar
+ //- XXX: Remove navigation bar in auth page?
+ function metaBlock() {
+ return (
+ <>
+
+
+ {props.clientLogo ? : null}
+
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/page.pug b/packages/backend/src/server/web/views/page.pug
deleted file mode 100644
index 03c50eca8a..0000000000
--- a/packages/backend/src/server/web/views/page.pug
+++ /dev/null
@@ -1,35 +0,0 @@
-extends ./base
-
-block vars
- - const user = page.user;
- - const title = page.title;
- - const url = `${config.url}/@${user.username}/pages/${page.name}`;
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content= page.summary)
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content= page.summary)
- meta(property='og:url' content= url)
- meta(property='og:image' content= page.eyeCatchingImage ? page.eyeCatchingImage.thumbnailUrl : avatarUrl)
- meta(property='twitter:card' content= page.eyeCatchingImage ? 'summary_large_image' : 'summary')
-
-block meta
- if profile.noCrawle
- meta(name='robots' content='noindex')
- if profile.preventAiLearning
- meta(name='robots' content='noimageai')
- meta(name='robots' content='noai')
-
- meta(name='misskey:user-username' content=user.username)
- meta(name='misskey:user-id' content=user.id)
- meta(name='misskey:page-id' content=page.id)
-
- // todo
- if user.twitter
- meta(name='twitter:creator' content=`@${user.twitter.screenName}`)
diff --git a/packages/backend/src/server/web/views/page.tsx b/packages/backend/src/server/web/views/page.tsx
new file mode 100644
index 0000000000..d0484612df
--- /dev/null
+++ b/packages/backend/src/server/web/views/page.tsx
@@ -0,0 +1,64 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { MiUserProfile } from '@/models/UserProfile.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function PagePage(props: CommonProps<{
+ page: Packed<'Page'>;
+ profile: MiUserProfile;
+}>) {
+ function ogBlock() {
+ return (
+ <>
+
+
+ {props.page.summary != null ? : null}
+
+ {props.page.eyeCatchingImage != null ? (
+ <>
+
+
+ >
+ ) : props.page.user.avatarUrl ? (
+ <>
+
+
+ >
+ ) : null}
+ >
+ );
+ }
+
+ function metaBlock() {
+ return (
+ <>
+ {props.profile.noCrawle ? : null}
+ {props.profile.preventAiLearning ? (
+ <>
+
+
+ >
+ ) : null}
+
+
+
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/reversi-game.pug b/packages/backend/src/server/web/views/reversi-game.pug
deleted file mode 100644
index 0b5ffb2bb0..0000000000
--- a/packages/backend/src/server/web/views/reversi-game.pug
+++ /dev/null
@@ -1,20 +0,0 @@
-extends ./base
-
-block vars
- - const user1 = game.user1;
- - const user2 = game.user2;
- - const title = `${user1.username} vs ${user2.username}`;
- - const url = `${config.url}/reversi/g/${game.id}`;
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content='⚫⚪Misskey Reversi⚪⚫')
-
-block og
- meta(property='og:type' content='article')
- meta(property='og:title' content= title)
- meta(property='og:description' content='⚫⚪Misskey Reversi⚪⚫')
- meta(property='og:url' content= url)
- meta(property='twitter:card' content='summary')
diff --git a/packages/backend/src/server/web/views/reversi-game.tsx b/packages/backend/src/server/web/views/reversi-game.tsx
new file mode 100644
index 0000000000..22609311fd
--- /dev/null
+++ b/packages/backend/src/server/web/views/reversi-game.tsx
@@ -0,0 +1,37 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function ReversiGamePage(props: CommonProps<{
+ reversiGame: Packed<'ReversiGameDetailed'>;
+}>) {
+ const title = `${props.reversiGame.user1.username} vs ${props.reversiGame.user2.username}`;
+ const description = `⚫⚪Misskey Reversi⚪⚫`;
+
+ function ogBlock() {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/src/server/web/views/user.pug b/packages/backend/src/server/web/views/user.pug
deleted file mode 100644
index b9f740f5b6..0000000000
--- a/packages/backend/src/server/web/views/user.pug
+++ /dev/null
@@ -1,44 +0,0 @@
-extends ./base
-
-block vars
- - const title = user.name ? `${user.name} (@${user.username}${user.host ? `@${user.host}` : ''})` : `@${user.username}${user.host ? `@${user.host}` : ''}`;
- - const url = `${config.url}/@${(user.host ? `${user.username}@${user.host}` : user.username)}`;
-
-block title
- = `${title} | ${instanceName}`
-
-block desc
- meta(name='description' content= profile.description)
-
-block og
- meta(property='og:type' content='blog')
- meta(property='og:title' content= title)
- meta(property='og:description' content= profile.description)
- meta(property='og:url' content= url)
- meta(property='og:image' content= avatarUrl)
- meta(property='twitter:card' content='summary')
-
-block meta
- if user.host || profile.noCrawle
- meta(name='robots' content='noindex')
- if profile.preventAiLearning
- meta(name='robots' content='noimageai')
- meta(name='robots' content='noai')
-
- meta(name='misskey:user-username' content=user.username)
- meta(name='misskey:user-id' content=user.id)
-
- if profile.twitter
- meta(name='twitter:creator' content=`@${profile.twitter.screenName}`)
-
- if !sub
- if federationEnabled
- if !user.host
- link(rel='alternate' href=`${config.url}/users/${user.id}` type='application/activity+json')
- if user.uri
- link(rel='alternate' href=user.uri type='application/activity+json')
- if profile.url
- link(rel='alternate' href=profile.url type='text/html')
-
- each m in me
- link(rel='me' href=`${m}`)
diff --git a/packages/backend/src/server/web/views/user.tsx b/packages/backend/src/server/web/views/user.tsx
new file mode 100644
index 0000000000..76c2633ab9
--- /dev/null
+++ b/packages/backend/src/server/web/views/user.tsx
@@ -0,0 +1,74 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import type { Packed } from '@/misc/json-schema.js';
+import type { MiUserProfile } from '@/models/UserProfile.js';
+import type { CommonProps } from '@/server/web/views/_.js';
+import { Layout } from '@/server/web/views/base.js';
+
+export function UserPage(props: CommonProps<{
+ user: Packed<'UserDetailed'>;
+ profile: MiUserProfile;
+ sub?: string;
+}>) {
+ const title = props.user.name ? `${props.user.name} (@${props.user.username}${props.user.host ? `@${props.user.host}` : ''})` : `@${props.user.username}${props.user.host ? `@${props.user.host}` : ''}`;
+ const me = props.profile.fields
+ ? props.profile.fields
+ .filter(field => field.value != null && field.value.match(/^https?:/))
+ .map(field => field.value)
+ : [];
+
+ function ogBlock() {
+ return (
+ <>
+
+
+ {props.user.description != null ? : null}
+
+
+
+ >
+ );
+ }
+
+ function metaBlock() {
+ return (
+ <>
+ {props.user.host != null || props.profile.noCrawle ? : null}
+ {props.profile.preventAiLearning ? (
+ <>
+
+
+ >
+ ) : null}
+
+
+
+ {props.sub == null && props.federationEnabled ? (
+ <>
+ {props.user.host == null ? : null}
+ {props.user.uri != null ? : null}
+ {props.profile.url != null ? : null}
+ >
+ ) : null}
+
+ {me.map((url) => (
+
+ ))}
+ >
+ );
+ }
+
+ return (
+
+
+ );
+}
diff --git a/packages/backend/test-federation/.config/dummy.yml b/packages/backend/test-federation/.config/dummy.yml
new file mode 100644
index 0000000000..841cab9783
--- /dev/null
+++ b/packages/backend/test-federation/.config/dummy.yml
@@ -0,0 +1,2 @@
+url: https://example.com/
+port: 3000
diff --git a/packages/backend/test-federation/.config/example.config.json b/packages/backend/test-federation/.config/example.config.json
new file mode 100644
index 0000000000..2035d1a200
--- /dev/null
+++ b/packages/backend/test-federation/.config/example.config.json
@@ -0,0 +1,29 @@
+{
+ "url": "https://${HOST}/",
+ "port": 3000,
+ "db": {
+ "host": "db.${HOST}",
+ "port": 5432,
+ "db": "misskey",
+ "user": "postgres",
+ "pass": "postgres"
+ },
+ "dbReplications": false,
+ "trustProxy": true,
+ "redis": {
+ "host": "redis.test",
+ "port": 6379
+ },
+ "id": "aidx",
+ "proxyBypassHosts": [
+ "api.deepl.com",
+ "api-free.deepl.com",
+ "www.recaptcha.net",
+ "hcaptcha.com",
+ "challenges.cloudflare.com"
+ ],
+ "allowedPrivateNetworks": [
+ "127.0.0.1/32",
+ "172.20.0.0/16"
+ ]
+}
diff --git a/packages/backend/test-federation/.config/example.default.yml b/packages/backend/test-federation/.config/example.default.yml
deleted file mode 100644
index fd20613885..0000000000
--- a/packages/backend/test-federation/.config/example.default.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-url: https://${HOST}/
-port: 3000
-db:
- host: db.${HOST}
- port: 5432
- db: misskey
- user: postgres
- pass: postgres
-dbReplications: false
-redis:
- host: redis.test
- port: 6379
-id: 'aidx'
-proxyBypassHosts:
- - api.deepl.com
- - api-free.deepl.com
- - www.recaptcha.net
- - hcaptcha.com
- - challenges.cloudflare.com
-allowedPrivateNetworks:
- - 127.0.0.1/32
- - 172.20.0.0/16
diff --git a/packages/backend/test-federation/compose.a.yml b/packages/backend/test-federation/compose.a.yml
index 6a305b404c..ec9a2cf2af 100644
--- a/packages/backend/test-federation/compose.a.yml
+++ b/packages/backend/test-federation/compose.a.yml
@@ -37,8 +37,8 @@ services:
- internal_network_a
volumes:
- type: bind
- source: ./.config/a.test.default.yml
- target: /misskey/.config/default.yml
+ source: ./.config/a.test.config.json
+ target: /misskey/built/._config_.json
read_only: true
db.a.test:
@@ -50,7 +50,7 @@ services:
volumes:
- type: bind
source: ./volumes/db.a
- target: /var/lib/postgresql/data
+ target: /var/lib/postgresql
bind:
create_host_path: true
diff --git a/packages/backend/test-federation/compose.b.yml b/packages/backend/test-federation/compose.b.yml
index 1158b53bae..9221934406 100644
--- a/packages/backend/test-federation/compose.b.yml
+++ b/packages/backend/test-federation/compose.b.yml
@@ -37,8 +37,8 @@ services:
- internal_network_b
volumes:
- type: bind
- source: ./.config/b.test.default.yml
- target: /misskey/.config/default.yml
+ source: ./.config/b.test.config.json
+ target: /misskey/built/._config_.json
read_only: true
db.b.test:
@@ -50,7 +50,7 @@ services:
volumes:
- type: bind
source: ./volumes/db.b
- target: /var/lib/postgresql/data
+ target: /var/lib/postgresql
bind:
create_host_path: true
diff --git a/packages/backend/test-federation/compose.tpl.yml b/packages/backend/test-federation/compose.tpl.yml
index 92b986736d..1404345e2a 100644
--- a/packages/backend/test-federation/compose.tpl.yml
+++ b/packages/backend/test-federation/compose.tpl.yml
@@ -21,6 +21,10 @@ services:
- type: bind
source: ../../../built
target: /misskey/built
+ read_only: false
+ - type: bind
+ source: ./.config/dummy.yml
+ target: /misskey/.config/default.yml
read_only: true
- type: bind
source: ../assets
@@ -42,6 +46,10 @@ services:
source: ../package.json
target: /misskey/packages/backend/package.json
read_only: true
+ - type: bind
+ source: ../scripts/compile_config.js
+ target: /misskey/packages/backend/scripts/compile_config.js
+ read_only: true
- type: bind
source: ../../misskey-js/built
target: /misskey/packages/misskey-js/built
@@ -50,6 +58,14 @@ services:
source: ../../misskey-js/package.json
target: /misskey/packages/misskey-js/package.json
read_only: true
+ - type: bind
+ source: ../../i18n/built
+ target: /misskey/packages/i18n/built
+ read_only: true
+ - type: bind
+ source: ../../i18n/package.json
+ target: /misskey/packages/i18n/package.json
+ read_only: true
- type: bind
source: ../../misskey-reversi/built
target: /misskey/packages/misskey-reversi/built
diff --git a/packages/backend/test-federation/compose.yml b/packages/backend/test-federation/compose.yml
index 330cc33854..25475a89ab 100644
--- a/packages/backend/test-federation/compose.yml
+++ b/packages/backend/test-federation/compose.yml
@@ -54,6 +54,10 @@ services:
source: ../jest.js
target: /misskey/packages/backend/jest.js
read_only: true
+ - type: bind
+ source: ../scripts/compile_config.js
+ target: /misskey/packages/backend/scripts/compile_config.js
+ read_only: true
- type: bind
source: ../../misskey-js/built
target: /misskey/packages/misskey-js/built
@@ -62,6 +66,14 @@ services:
source: ../../misskey-js/package.json
target: /misskey/packages/misskey-js/package.json
read_only: true
+ - type: bind
+ source: ../../i18n/built
+ target: /misskey/packages/i18n/built
+ read_only: true
+ - type: bind
+ source: ../../i18n/package.json
+ target: /misskey/packages/i18n/package.json
+ read_only: true
- type: bind
source: ../../../package.json
target: /misskey/package.json
diff --git a/packages/backend/test-federation/setup.sh b/packages/backend/test-federation/setup.sh
index 1bc3a2a87c..15aa2eee7f 100644
--- a/packages/backend/test-federation/setup.sh
+++ b/packages/backend/test-federation/setup.sh
@@ -28,7 +28,7 @@ function generate {
-days 500
if [ ! -f .config/docker.env ]; then cp .config/example.docker.env .config/docker.env; fi
if [ ! -f .config/$1.conf ]; then sed "s/\${HOST}/$1/g" .config/example.conf > .config/$1.conf; fi
- if [ ! -f .config/$1.default.yml ]; then sed "s/\${HOST}/$1/g" .config/example.default.yml > .config/$1.default.yml; fi
+ if [ ! -f .config/$1.default.yml ]; then sed "s/\${HOST}/$1/g" .config/example.config.json > .config/$1.config.json; fi
}
generate a.test
diff --git a/packages/backend/test-federation/tsconfig.json b/packages/backend/test-federation/tsconfig.json
index 3a1cb3b9f3..8e74a62e81 100644
--- a/packages/backend/test-federation/tsconfig.json
+++ b/packages/backend/test-federation/tsconfig.json
@@ -13,12 +13,12 @@
/* Language and Environment */
"target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
- // "jsx": "preserve", /* Specify what JSX code is generated. */
+ "jsx": "react-jsx", /* Specify what JSX code is generated. */
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
- // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
+ "jsxImportSource": "@kitajs/html", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
diff --git a/packages/backend/test-server/tsconfig.json b/packages/backend/test-server/tsconfig.json
index 10313699c2..7ed7c10ed7 100644
--- a/packages/backend/test-server/tsconfig.json
+++ b/packages/backend/test-server/tsconfig.json
@@ -23,6 +23,8 @@
"emitDecoratorMetadata": true,
"resolveJsonModule": true,
"isolatedModules": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "@kitajs/html",
"rootDir": "../src",
"baseUrl": "./",
"paths": {
diff --git a/packages/backend/test/e2e/exports.ts b/packages/backend/test/e2e/exports.ts
index 4bcecc9716..19433f3c88 100644
--- a/packages/backend/test/e2e/exports.ts
+++ b/packages/backend/test/e2e/exports.ts
@@ -16,7 +16,7 @@ describe('export-clips', () => {
let bob: misskey.entities.SignupResponse;
// XXX: Any better way to get the result?
- async function pollFirstDriveFile() {
+ async function pollFirstDriveFile(): Promise {
while (true) {
const files = (await api('drive/files', {}, alice)).body;
if (!files.length) {
@@ -168,7 +168,36 @@ describe('export-clips', () => {
assert.strictEqual(exported[1].clipNotes[0].note.text, 'baz2');
});
- test('Clipping other user\'s note', async () => {
+ test('Clipping other user\'s note (followers only notes are excluded when not following)', async () => {
+ const res = await api('clips/create', {
+ name: 'kawaii',
+ description: 'kawaii',
+ }, alice);
+ assert.strictEqual(res.status, 200);
+ const clip = res.body;
+
+ const note = await post(bob, {
+ text: 'baz',
+ visibility: 'followers',
+ });
+
+ const res2 = await api('clips/add-note', {
+ clipId: clip.id,
+ noteId: note.id,
+ }, alice);
+ assert.strictEqual(res2.status, 204);
+
+ const res3 = await api('i/export-clips', {}, alice);
+ assert.strictEqual(res3.status, 204);
+
+ const exported = await pollFirstDriveFile();
+ assert.strictEqual(exported[0].clipNotes.length, 0);
+ });
+
+ test('Clipping other user\'s note (followers only notes are included when following)', async () => {
+ // Alice follows Bob
+ await api('following/create', { userId: bob.id }, alice);
+
const res = await api('clips/create', {
name: 'kawaii',
description: 'kawaii',
diff --git a/packages/backend/test/e2e/fetch-resource.ts b/packages/backend/test/e2e/fetch-resource.ts
index bef98893c6..f00843de10 100644
--- a/packages/backend/test/e2e/fetch-resource.ts
+++ b/packages/backend/test/e2e/fetch-resource.ts
@@ -73,7 +73,7 @@ describe('Webリソース', () => {
};
const metaTag = (res: SimpleGetResponse, key: string, superkey = 'name'): string => {
- return res.body.window.document.querySelector('meta[' + superkey + '="' + key + '"]')?.content;
+ return res.body.querySelector('meta[' + superkey + '="' + key + '"]')?.attributes.content;
};
beforeAll(async () => {
diff --git a/packages/backend/test/e2e/oauth.ts b/packages/backend/test/e2e/oauth.ts
index f639f90ea6..96a6311a5a 100644
--- a/packages/backend/test/e2e/oauth.ts
+++ b/packages/backend/test/e2e/oauth.ts
@@ -19,7 +19,7 @@ import {
ResourceOwnerPassword,
} from 'simple-oauth2';
import pkceChallenge from 'pkce-challenge';
-import { JSDOM } from 'jsdom';
+import * as htmlParser from 'node-html-parser';
import Fastify, { type FastifyInstance, type FastifyReply } from 'fastify';
import { api, port, sendEnvUpdateRequest, signup } from '../utils.js';
import type * as misskey from 'misskey-js';
@@ -73,11 +73,11 @@ const clientConfig: ModuleOptions<'client_id'> = {
};
function getMeta(html: string): { transactionId: string | undefined, clientName: string | undefined, clientLogo: string | undefined } {
- const fragment = JSDOM.fragment(html);
+ const doc = htmlParser.parse(`${html}`);
return {
- transactionId: fragment.querySelector('meta[name="misskey:oauth:transaction-id"]')?.content,
- clientName: fragment.querySelector('meta[name="misskey:oauth:client-name"]')?.content,
- clientLogo: fragment.querySelector('meta[name="misskey:oauth:client-logo"]')?.content,
+ transactionId: doc.querySelector('meta[name="misskey:oauth:transaction-id"]')?.attributes.content,
+ clientName: doc.querySelector('meta[name="misskey:oauth:client-name"]')?.attributes.content,
+ clientLogo: doc.querySelector('meta[name="misskey:oauth:client-logo"]')?.attributes.content,
};
}
@@ -148,7 +148,7 @@ function assertIndirectError(response: Response, error: string): void {
async function assertDirectError(response: Response, status: number, error: string): Promise {
assert.strictEqual(response.status, status);
- const data = await response.json();
+ const data = await response.json() as any;
assert.strictEqual(data.error, error);
}
@@ -704,7 +704,7 @@ describe('OAuth', () => {
const response = await fetch(new URL('.well-known/oauth-authorization-server', host));
assert.strictEqual(response.status, 200);
- const body = await response.json();
+ const body = await response.json() as any;
assert.strictEqual(body.issuer, 'http://misskey.local');
assert.ok(body.scopes_supported.includes('write:notes'));
});
diff --git a/packages/backend/test/jest.setup.ts b/packages/backend/test/jest.setup.ts
index 7c6dd6a55f..9185f58acb 100644
--- a/packages/backend/test/jest.setup.ts
+++ b/packages/backend/test/jest.setup.ts
@@ -9,3 +9,4 @@ beforeAll(async () => {
await initTestDb(false);
await sendEnvResetRequest();
});
+
diff --git a/packages/backend/test/tsconfig.json b/packages/backend/test/tsconfig.json
index 2b562acda8..c6754c4802 100644
--- a/packages/backend/test/tsconfig.json
+++ b/packages/backend/test/tsconfig.json
@@ -23,6 +23,8 @@
"emitDecoratorMetadata": true,
"resolveJsonModule": true,
"isolatedModules": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "@kitajs/html",
"baseUrl": "./",
"paths": {
"@/*": ["../src/*"]
diff --git a/packages/backend/test/unit/AnnouncementService.ts b/packages/backend/test/unit/AnnouncementService.ts
index 0b24f109f8..b3f7f426fe 100644
--- a/packages/backend/test/unit/AnnouncementService.ts
+++ b/packages/backend/test/unit/AnnouncementService.ts
@@ -26,7 +26,7 @@ import { GlobalEventService } from '@/core/GlobalEventService.js';
import { ModerationLogService } from '@/core/ModerationLogService.js';
import { secureRndstr } from '@/misc/secure-rndstr.js';
import type { TestingModule } from '@nestjs/testing';
-import type { MockFunctionMetadata } from 'jest-mock';
+import type { MockMetadata } from 'jest-mock';
const moduleMocker = new ModuleMocker(global);
@@ -84,7 +84,7 @@ describe('AnnouncementService', () => {
log: jest.fn(),
};
} else if (typeof token === 'function') {
- const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata;
+ const mockMetadata = moduleMocker.getMetadata(token) as MockMetadata;
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
return new Mock();
}
diff --git a/packages/backend/test/unit/ApMfmService.ts b/packages/backend/test/unit/ApMfmService.ts
index e81a321c9b..93efa5d7d3 100644
--- a/packages/backend/test/unit/ApMfmService.ts
+++ b/packages/backend/test/unit/ApMfmService.ts
@@ -9,7 +9,6 @@ import { Test } from '@nestjs/testing';
import { CoreModule } from '@/core/CoreModule.js';
import { ApMfmService } from '@/core/activitypub/ApMfmService.js';
import { GlobalModule } from '@/GlobalModule.js';
-import { MiNote } from '@/models/Note.js';
describe('ApMfmService', () => {
let apMfmService: ApMfmService;
@@ -31,7 +30,7 @@ describe('ApMfmService', () => {
const { content, noMisskeyContent } = apMfmService.getNoteHtml(note);
assert.equal(noMisskeyContent, true, 'noMisskeyContent');
- assert.equal(content, 'テキスト #タグ @mention 🍊 :emoji: https://example.com
', 'content');
+ assert.equal(content, 'テキスト #タグ @mention 🍊 :emoji: https://example.com', 'content');
});
test('Provide _misskey_content for MFM', () => {
@@ -43,7 +42,7 @@ describe('ApMfmService', () => {
const { content, noMisskeyContent } = apMfmService.getNoteHtml(note);
assert.equal(noMisskeyContent, false, 'noMisskeyContent');
- assert.equal(content, 'foo
', 'content');
+ assert.equal(content, 'foo', 'content');
});
});
});
diff --git a/packages/backend/test/unit/CaptchaService.ts b/packages/backend/test/unit/CaptchaService.ts
index 51b70b05a1..24bb81118e 100644
--- a/packages/backend/test/unit/CaptchaService.ts
+++ b/packages/backend/test/unit/CaptchaService.ts
@@ -446,7 +446,7 @@ describe('CaptchaService', () => {
if (!res.success) {
expect(res.error.code).toBe(code);
}
- expect(metaService.update).not.toBeCalled();
+ expect(metaService.update).not.toHaveBeenCalled();
}
describe('invalidParameters', () => {
diff --git a/packages/backend/test/unit/DriveService.ts b/packages/backend/test/unit/DriveService.ts
index 964c65ccaa..48b108fbba 100644
--- a/packages/backend/test/unit/DriveService.ts
+++ b/packages/backend/test/unit/DriveService.ts
@@ -53,7 +53,7 @@ describe('DriveService', () => {
s3Mock.on(DeleteObjectCommand)
.rejects(new InvalidObjectState({ $metadata: {}, message: '' }));
- await expect(driveService.deleteObjectStorageFile('unexpected')).rejects.toThrowError(Error);
+ await expect(driveService.deleteObjectStorageFile('unexpected')).rejects.toThrow(Error);
});
test('delete a file with no valid key', async () => {
diff --git a/packages/backend/test/unit/FileInfoService.ts b/packages/backend/test/unit/FileInfoService.ts
index 29bd03a201..28a2a971f4 100644
--- a/packages/backend/test/unit/FileInfoService.ts
+++ b/packages/backend/test/unit/FileInfoService.ts
@@ -17,7 +17,7 @@ import { FileInfo, FileInfoService } from '@/core/FileInfoService.js';
import { AiService } from '@/core/AiService.js';
import { LoggerService } from '@/core/LoggerService.js';
import type { TestingModule } from '@nestjs/testing';
-import type { MockFunctionMetadata } from 'jest-mock';
+import type { MockMetadata } from 'jest-mock';
const _filename = fileURLToPath(import.meta.url);
const _dirname = dirname(_filename);
@@ -34,7 +34,7 @@ describe('FileInfoService', () => {
delete fi.sensitive;
delete fi.blurhash;
delete fi.porn;
-
+
return fi;
}
@@ -54,7 +54,7 @@ describe('FileInfoService', () => {
// return { };
//}
if (typeof token === 'function') {
- const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata;
+ const mockMetadata = moduleMocker.getMetadata(token) as MockMetadata;
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
return new Mock();
}
diff --git a/packages/backend/test/unit/MfmService.ts b/packages/backend/test/unit/MfmService.ts
index 7350da3cae..2f5f3745de 100644
--- a/packages/backend/test/unit/MfmService.ts
+++ b/packages/backend/test/unit/MfmService.ts
@@ -24,25 +24,25 @@ describe('MfmService', () => {
describe('toHtml', () => {
test('br', () => {
const input = 'foo\nbar\nbaz';
- const output = 'foo
bar
baz
';
+ const output = 'foo
bar
baz';
assert.equal(mfmService.toHtml(mfm.parse(input)), output);
});
test('br alt', () => {
const input = 'foo\r\nbar\rbaz';
- const output = 'foo
bar
baz
';
+ const output = 'foo
bar
baz';
assert.equal(mfmService.toHtml(mfm.parse(input)), output);
});
test('Do not generate unnecessary span', () => {
const input = 'foo $[tada bar]';
- const output = 'foo bar
';
+ const output = 'foo bar';
assert.equal(mfmService.toHtml(mfm.parse(input)), output);
});
test('escape', () => {
const input = '```\nHello, world!
\n```';
- const output = '<p>Hello, world!</p>
';
+ const output = '<p>Hello, world!</p>
';
assert.equal(mfmService.toHtml(mfm.parse(input)), output);
});
});
@@ -118,7 +118,7 @@ describe('MfmService', () => {
assert.deepStrictEqual(mfmService.fromHtml('a Misskey b c
'), 'a Misskey(ミス キー) b c');
assert.deepStrictEqual(
mfmService.fromHtml('a MisskeyMisskeyMisskey b
'),
- 'a Misskey(ミスキー)Misskey(ミス キー)Misskey(ミスキー) b'
+ 'a Misskey(ミスキー)Misskey(ミス キー)Misskey(ミスキー) b',
);
});
diff --git a/packages/backend/test/unit/RelayService.ts b/packages/backend/test/unit/RelayService.ts
index 074430dd31..bee580d0c7 100644
--- a/packages/backend/test/unit/RelayService.ts
+++ b/packages/backend/test/unit/RelayService.ts
@@ -9,7 +9,7 @@ import { jest } from '@jest/globals';
import { Test } from '@nestjs/testing';
import { ModuleMocker } from 'jest-mock';
import type { TestingModule } from '@nestjs/testing';
-import type { MockFunctionMetadata } from 'jest-mock';
+import type { MockMetadata } from 'jest-mock';
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { IdService } from '@/core/IdService.js';
@@ -45,7 +45,7 @@ describe('RelayService', () => {
return { deliver: jest.fn() };
}
if (typeof token === 'function') {
- const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata;
+ const mockMetadata = moduleMocker.getMetadata(token) as MockMetadata;
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
return new Mock();
}
diff --git a/packages/backend/test/unit/RoleService.ts b/packages/backend/test/unit/RoleService.ts
index 71090c8be6..9b17b1fbb9 100644
--- a/packages/backend/test/unit/RoleService.ts
+++ b/packages/backend/test/unit/RoleService.ts
@@ -11,7 +11,7 @@ import { ModuleMocker } from 'jest-mock';
import { Test } from '@nestjs/testing';
import * as lolex from '@sinonjs/fake-timers';
import type { TestingModule } from '@nestjs/testing';
-import type { MockFunctionMetadata } from 'jest-mock';
+import type { MockMetadata } from 'jest-mock';
import { GlobalModule } from '@/GlobalModule.js';
import { RoleService } from '@/core/RoleService.js';
import {
@@ -104,6 +104,8 @@ describe('RoleService', () => {
beforeEach(async () => {
clock = lolex.install({
+ // https://github.com/sinonjs/sinon/issues/2620
+ toFake: Object.keys(lolex.timers).filter((key) => !['nextTick', 'queueMicrotask'].includes(key)) as lolex.FakeMethod[],
now: new Date(),
shouldClearNativeTimers: true,
});
@@ -135,7 +137,7 @@ describe('RoleService', () => {
return { fetch: jest.fn() };
}
if (typeof token === 'function') {
- const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata;
+ const mockMetadata = moduleMocker.getMetadata(token) as MockMetadata;
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
return new Mock();
}
diff --git a/packages/backend/test/unit/S3Service.ts b/packages/backend/test/unit/S3Service.ts
index 151f3b826a..6e7e5a8b59 100644
--- a/packages/backend/test/unit/S3Service.ts
+++ b/packages/backend/test/unit/S3Service.ts
@@ -72,7 +72,7 @@ describe('S3Service', () => {
Bucket: 'fake',
Key: 'fake',
Body: 'x',
- })).rejects.toThrowError(Error);
+ })).rejects.toThrow(Error);
});
test('upload a large file error', async () => {
@@ -82,7 +82,7 @@ describe('S3Service', () => {
Bucket: 'fake',
Key: 'fake',
Body: 'x'.repeat(8 * 1024 * 1024 + 1), // デフォルトpartSizeにしている 8 * 1024 * 1024 を越えるサイズ
- })).rejects.toThrowError(Error);
+ })).rejects.toThrow(Error);
});
});
});
diff --git a/packages/backend/test/unit/SigninWithPasskeyApiService.ts b/packages/backend/test/unit/SigninWithPasskeyApiService.ts
index 0687ed8437..8ef46024ac 100644
--- a/packages/backend/test/unit/SigninWithPasskeyApiService.ts
+++ b/packages/backend/test/unit/SigninWithPasskeyApiService.ts
@@ -9,7 +9,7 @@ import { Test, TestingModule } from '@nestjs/testing';
import { FastifyReply, FastifyRequest } from 'fastify';
import { AuthenticationResponseJSON } from '@simplewebauthn/types';
import { HttpHeader } from 'fastify/types/utils.js';
-import { MockFunctionMetadata, ModuleMocker } from 'jest-mock';
+import { MockMetadata, ModuleMocker } from 'jest-mock';
import { MiUser } from '@/models/User.js';
import { MiUserProfile, UserProfilesRepository, UsersRepository } from '@/models/_.js';
import { IdService } from '@/core/IdService.js';
@@ -95,7 +95,7 @@ describe('SigninWithPasskeyApiService', () => {
],
}).useMocker((token) => {
if (typeof token === 'function') {
- const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata;
+ const mockMetadata = moduleMocker.getMetadata(token) as MockMetadata;
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
return new Mock();
}
diff --git a/packages/backend/test/unit/chart.ts b/packages/backend/test/unit/chart.ts
index 9dedd3a79d..364a2c2fbd 100644
--- a/packages/backend/test/unit/chart.ts
+++ b/packages/backend/test/unit/chart.ts
@@ -9,6 +9,7 @@ import * as assert from 'assert';
import { jest } from '@jest/globals';
import * as lolex from '@sinonjs/fake-timers';
import { DataSource } from 'typeorm';
+import * as Redis from 'ioredis';
import TestChart from '@/core/chart/charts/test.js';
import TestGroupedChart from '@/core/chart/charts/test-grouped.js';
import TestUniqueChart from '@/core/chart/charts/test-unique.js';
@@ -18,16 +19,16 @@ import { entity as TestGroupedChartEntity } from '@/core/chart/charts/entities/t
import { entity as TestUniqueChartEntity } from '@/core/chart/charts/entities/test-unique.js';
import { entity as TestIntersectionChartEntity } from '@/core/chart/charts/entities/test-intersection.js';
import { loadConfig } from '@/config.js';
-import type { AppLockService } from '@/core/AppLockService.js';
import Logger from '@/logger.js';
describe('Chart', () => {
const config = loadConfig();
- const appLockService = {
- getChartInsertLock: () => () => Promise.resolve(() => {}),
- } as unknown as jest.Mocked;
let db: DataSource | undefined;
+ let redisClient = {
+ set: () => Promise.resolve('OK'),
+ get: () => Promise.resolve(null),
+ } as unknown as jest.Mocked;
let testChart: TestChart;
let testGroupedChart: TestGroupedChart;
@@ -64,12 +65,14 @@ describe('Chart', () => {
await db.initialize();
const logger = new Logger('chart'); // TODO: モックにする
- testChart = new TestChart(db, appLockService, logger);
- testGroupedChart = new TestGroupedChart(db, appLockService, logger);
- testUniqueChart = new TestUniqueChart(db, appLockService, logger);
- testIntersectionChart = new TestIntersectionChart(db, appLockService, logger);
+ testChart = new TestChart(db, redisClient, logger);
+ testGroupedChart = new TestGroupedChart(db, redisClient, logger);
+ testUniqueChart = new TestUniqueChart(db, redisClient, logger);
+ testIntersectionChart = new TestIntersectionChart(db, redisClient, logger);
clock = lolex.install({
+ // https://github.com/sinonjs/sinon/issues/2620
+ toFake: Object.keys(lolex.timers).filter((key) => !['nextTick', 'queueMicrotask'].includes(key)) as lolex.FakeMethod[],
now: new Date(Date.UTC(2000, 0, 1, 0, 0, 0)),
shouldClearNativeTimers: true,
});
diff --git a/packages/backend/test/unit/misc/should-hide-note-by-time.ts b/packages/backend/test/unit/misc/should-hide-note-by-time.ts
new file mode 100644
index 0000000000..1c463c82c6
--- /dev/null
+++ b/packages/backend/test/unit/misc/should-hide-note-by-time.ts
@@ -0,0 +1,136 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { describe, expect, test, beforeEach, afterEach } from '@jest/globals';
+import * as lolex from '@sinonjs/fake-timers';
+import { shouldHideNoteByTime } from '@/misc/should-hide-note-by-time.js';
+
+describe('misc:should-hide-note-by-time', () => {
+ let clock: lolex.InstalledClock;
+ const epoch = Date.UTC(2000, 0, 1, 0, 0, 0);
+
+ beforeEach(() => {
+ clock = lolex.install({
+ // https://github.com/sinonjs/sinon/issues/2620
+ toFake: Object.keys(lolex.timers).filter((key) => !['nextTick', 'queueMicrotask'].includes(key)) as lolex.FakeMethod[],
+ now: new Date(epoch),
+ shouldClearNativeTimers: true,
+ });
+ });
+
+ afterEach(() => {
+ clock.uninstall();
+ });
+
+ describe('hiddenBefore が null または undefined の場合', () => {
+ test('hiddenBefore が null のときは false を返す(非表示機能が有効でない)', () => {
+ const createdAt = new Date(epoch - 86400000); // 1 day ago
+ expect(shouldHideNoteByTime(null, createdAt)).toBe(false);
+ });
+
+ test('hiddenBefore が undefined のときは false を返す(非表示機能が有効でない)', () => {
+ const createdAt = new Date(epoch - 86400000); // 1 day ago
+ expect(shouldHideNoteByTime(undefined, createdAt)).toBe(false);
+ });
+ });
+
+ describe('相対時間モード (hiddenBefore <= 0)', () => {
+ test('閾値内に作成されたノートは false を返す(作成からの経過時間がまだ短い→表示)', () => {
+ const hiddenBefore = -86400; // 1 day in seconds
+ const createdAt = new Date(epoch - 3600000); // 1 hour ago
+ expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(false);
+ });
+
+ test('閾値を超えて作成されたノートは true を返す(指定期間以上経過している→非表示)', () => {
+ const hiddenBefore = -86400; // 1 day in seconds
+ const createdAt = new Date(epoch - 172800000); // 2 days ago
+ expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true);
+ });
+
+ test('ちょうど閾値で作成されたノートは true を返す(閾値に達したら非表示)', () => {
+ const hiddenBefore = -86400; // 1 day in seconds
+ const createdAt = new Date(epoch - 86400000); // exactly 1 day ago
+ expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true);
+ });
+
+ test('異なる相対時間値で判定できる(1時間設定と3時間設定の異なる結果)', () => {
+ const createdAt = new Date(epoch - 7200000); // 2 hours ago
+ expect(shouldHideNoteByTime(-3600, createdAt)).toBe(true); // 1時間経過→非表示
+ expect(shouldHideNoteByTime(-10800, createdAt)).toBe(false); // 3時間未経過→表示
+ });
+
+ test('ISO 8601 形式の文字列の createdAt に対応できる(文字列でも正しく判定)', () => {
+ const createdAtString = new Date(epoch - 86400000).toISOString();
+ const hiddenBefore = -86400; // 1 day in seconds
+ expect(shouldHideNoteByTime(hiddenBefore, createdAtString)).toBe(true);
+ });
+
+ test('hiddenBefore が 0 の場合に対応できる(0秒以上経過で非表示→ほぼ全て非表示)', () => {
+ const hiddenBefore = 0;
+ const createdAt = new Date(epoch - 1); // 1ms ago
+ expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true);
+ });
+ });
+
+ describe('絶対時間モード (hiddenBefore > 0)', () => {
+ test('閾値タイムスタンプより後に作成されたノートは false を返す(指定日時より後→表示)', () => {
+ const thresholdSeconds = Math.floor(epoch / 1000);
+ const createdAt = new Date(epoch + 3600000); // 1 hour from epoch
+ expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(false);
+ });
+
+ test('閾値タイムスタンプより前に作成されたノートは true を返す(指定日時より前→非表示)', () => {
+ const thresholdSeconds = Math.floor(epoch / 1000);
+ const createdAt = new Date(epoch - 3600000); // 1 hour ago
+ expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true);
+ });
+
+ test('ちょうど閾値タイムスタンプで作成されたノートは true を返す(指定日時に達したら非表示)', () => {
+ const thresholdSeconds = Math.floor(epoch / 1000);
+ const createdAt = new Date(epoch); // exactly epoch
+ expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true);
+ });
+
+ test('ISO 8601 形式の文字列の createdAt に対応できる(文字列でも正しく判定)', () => {
+ const thresholdSeconds = Math.floor(epoch / 1000);
+ const createdAtString = new Date(epoch - 3600000).toISOString();
+ expect(shouldHideNoteByTime(thresholdSeconds, createdAtString)).toBe(true);
+ });
+
+ test('異なる閾値タイムスタンプで判定できる(2021年設定と現在より1時間前設定の異なる結果)', () => {
+ const thresholdSeconds = Math.floor((epoch - 86400000) / 1000); // 1 day ago
+ const createdAtBefore = new Date(epoch - 172800000); // 2 days ago
+ const createdAtAfter = new Date(epoch - 3600000); // 1 hour ago
+ expect(shouldHideNoteByTime(thresholdSeconds, createdAtBefore)).toBe(true); // 閾値より前→非表示
+ expect(shouldHideNoteByTime(thresholdSeconds, createdAtAfter)).toBe(false); // 閾値より後→表示
+ });
+ });
+
+ describe('エッジケース', () => {
+ test('相対時間モードで非常に古いノートに対応できる(非常に古い→閾値超→非表示)', () => {
+ const hiddenBefore = -1; // hide notes older than 1 second
+ const createdAt = new Date(epoch - 1000000); // very old
+ expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true);
+ });
+
+ test('相対時間モードで非常に新しいノートに対応できる(非常に新しい→閾値未満→表示)', () => {
+ const hiddenBefore = -86400; // 1 day
+ const createdAt = new Date(epoch - 1); // 1ms ago
+ expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(false);
+ });
+
+ test('大きなタイムスタンプ値に対応できる(未来の日時を指定→現在のノートは全て非表示)', () => {
+ const thresholdSeconds = Math.floor(epoch / 1000) + 86400; // 1 day from epoch
+ const createdAt = new Date(epoch); // created epoch
+ expect(shouldHideNoteByTime(thresholdSeconds, createdAt)).toBe(true);
+ });
+
+ test('小さな相対時間値に対応できる(1秒設定で2秒前→非表示)', () => {
+ const hiddenBefore = -1; // 1 second
+ const createdAt = new Date(epoch - 2000); // 2 seconds ago
+ expect(shouldHideNoteByTime(hiddenBefore, createdAt)).toBe(true);
+ });
+ });
+});
diff --git a/packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts b/packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts
index 211846eef2..01a36c9fef 100644
--- a/packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts
+++ b/packages/backend/test/unit/queue/processors/CheckModeratorsActivityProcessorService.ts
@@ -141,6 +141,8 @@ describe('CheckModeratorsActivityProcessorService', () => {
beforeEach(async () => {
clock = lolex.install({
+ // https://github.com/sinonjs/sinon/issues/2620
+ toFake: Object.keys(lolex.timers).filter((key) => !['nextTick', 'queueMicrotask'].includes(key)) as lolex.FakeMethod[],
now: new Date(baseDate),
shouldClearNativeTimers: true,
});
diff --git a/packages/backend/test/utils.ts b/packages/backend/test/utils.ts
index daae7b9643..ecca28b5af 100644
--- a/packages/backend/test/utils.ts
+++ b/packages/backend/test/utils.ts
@@ -10,8 +10,8 @@ import { randomUUID } from 'node:crypto';
import { inspect } from 'node:util';
import WebSocket, { ClientOptions } from 'ws';
import fetch, { File, RequestInit, type Headers } from 'node-fetch';
+import * as htmlParser from 'node-html-parser';
import { DataSource } from 'typeorm';
-import { JSDOM } from 'jsdom';
import { type Response } from 'node-fetch';
import Fastify from 'fastify';
import { entities } from '../src/postgres.js';
@@ -468,7 +468,7 @@ export function makeStreamCatcher(
export type SimpleGetResponse = {
status: number,
- body: any | JSDOM | null,
+ body: any | null,
type: string | null,
location: string | null
};
@@ -499,7 +499,7 @@ export const simpleGet = async (path: string, accept = '*/*', cookie: any = unde
const body =
jsonTypes.includes(res.headers.get('content-type') ?? '') ? await res.json() :
- htmlTypes.includes(res.headers.get('content-type') ?? '') ? new JSDOM(await res.text()) :
+ htmlTypes.includes(res.headers.get('content-type') ?? '') ? htmlParser.parse(await res.text()) :
await bodyExtractor(res);
return {
diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json
index 2b15a5cc7a..25584e475d 100644
--- a/packages/backend/tsconfig.json
+++ b/packages/backend/tsconfig.json
@@ -23,12 +23,17 @@
"emitDecoratorMetadata": true,
"resolveJsonModule": true,
"isolatedModules": true,
+ "jsx": "react-jsx",
+ "jsxImportSource": "@kitajs/html",
"rootDir": "./src",
"baseUrl": "./",
"paths": {
"@/*": ["./src/*"]
},
"outDir": "./built",
+ "plugins": [
+ {"name": "@kitajs/ts-html-plugin"}
+ ],
"types": [
"node"
],
@@ -43,7 +48,8 @@
},
"compileOnSave": false,
"include": [
- "./src/**/*.ts"
+ "./src/**/*.ts",
+ "./src/**/*.tsx"
],
"exclude": [
"./src/**/*.test.ts"
diff --git a/packages/frontend-builder/locale-inliner.ts b/packages/frontend-builder/locale-inliner.ts
index 9bef465eeb..191d7250a6 100644
--- a/packages/frontend-builder/locale-inliner.ts
+++ b/packages/frontend-builder/locale-inliner.ts
@@ -10,7 +10,7 @@ import { collectModifications } from './locale-inliner/collect-modifications.js'
import { applyWithLocale } from './locale-inliner/apply-with-locale.js';
import { blankLogger } from './logger.js';
import type { Logger } from './logger.js';
-import type { Locale } from '../../locales/index.js';
+import type { Locale } from 'i18n';
import type { Manifest as ViteManifest } from 'vite';
export class LocaleInliner {
diff --git a/packages/frontend-builder/locale-inliner/apply-with-locale.ts b/packages/frontend-builder/locale-inliner/apply-with-locale.ts
index 5e601cdf12..78851d3029 100644
--- a/packages/frontend-builder/locale-inliner/apply-with-locale.ts
+++ b/packages/frontend-builder/locale-inliner/apply-with-locale.ts
@@ -5,7 +5,7 @@
import MagicString from 'magic-string';
import { assertNever } from '../utils.js';
-import type { Locale, ILocale } from '../../../locales/index.js';
+import type { ILocale, Locale } from 'i18n';
import type { TextModification } from '../locale-inliner.js';
import type { Logger } from '../logger.js';
diff --git a/packages/frontend-builder/package.json b/packages/frontend-builder/package.json
index ef5c8e0367..c1d9e316e6 100644
--- a/packages/frontend-builder/package.json
+++ b/packages/frontend-builder/package.json
@@ -11,15 +11,16 @@
},
"devDependencies": {
"@types/estree": "1.0.8",
- "@types/node": "24.10.1",
- "@typescript-eslint/eslint-plugin": "8.47.0",
- "@typescript-eslint/parser": "8.47.0",
+ "@types/node": "24.10.2",
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0",
"rollup": "4.53.3",
"typescript": "5.9.3"
},
"dependencies": {
+ "i18n": "workspace:*",
"estree-walker": "3.0.3",
"magic-string": "0.30.21",
- "vite": "7.2.2"
+ "vite": "7.2.7"
}
}
diff --git a/packages/frontend-embed/build.ts b/packages/frontend-embed/build.ts
index 737233a4d0..4e1f588802 100644
--- a/packages/frontend-embed/build.ts
+++ b/packages/frontend-embed/build.ts
@@ -2,7 +2,7 @@ import * as fs from 'fs/promises';
import url from 'node:url';
import path from 'node:path';
import { execa } from 'execa';
-import locales from '../../locales/index.js';
+import locales from 'i18n';
import { LocaleInliner } from '../frontend-builder/locale-inliner.js'
import { createLogger } from '../frontend-builder/logger';
diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json
index 7bfd32686c..808559f44a 100644
--- a/packages/frontend-embed/package.json
+++ b/packages/frontend-embed/package.json
@@ -11,13 +11,12 @@
},
"dependencies": {
"@discordapp/twemoji": "16.0.1",
+ "i18n": "workspace:*",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "6.0.3",
"@rollup/pluginutils": "5.3.0",
"@twemoji/parser": "16.0.0",
"@vitejs/plugin-vue": "6.0.2",
- "@vue/compiler-sfc": "3.5.24",
- "astring": "1.9.0",
"buraha": "0.0.1",
"estree-walker": "3.0.3",
"frontend-shared": "workspace:*",
@@ -27,15 +26,12 @@
"misskey-js": "workspace:*",
"punycode.js": "2.3.1",
"rollup": "4.53.3",
- "sass": "1.94.1",
- "shiki": "3.15.0",
+ "sass": "1.95.1",
+ "shiki": "3.19.0",
"tinycolor2": "1.6.0",
- "tsc-alias": "1.8.16",
- "tsconfig-paths": "4.2.0",
- "typescript": "5.9.3",
"uuid": "13.0.0",
- "vite": "7.2.2",
- "vue": "3.5.24"
+ "vite": "7.2.7",
+ "vue": "3.5.25"
},
"devDependencies": {
"@misskey-dev/summaly": "5.2.5",
@@ -43,30 +39,30 @@
"@testing-library/vue": "8.1.0",
"@types/estree": "1.0.8",
"@types/micromatch": "4.0.10",
- "@types/node": "24.10.1",
+ "@types/node": "24.10.2",
"@types/punycode.js": "npm:@types/punycode@2.1.4",
"@types/tinycolor2": "1.4.6",
"@types/ws": "8.18.1",
- "@typescript-eslint/eslint-plugin": "8.47.0",
- "@typescript-eslint/parser": "8.47.0",
- "@vitest/coverage-v8": "3.2.4",
- "@vue/runtime-core": "3.5.24",
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0",
+ "@vitest/coverage-v8": "4.0.15",
+ "@vue/runtime-core": "3.5.25",
"acorn": "8.15.0",
"cross-env": "10.1.0",
"eslint-plugin-import": "2.32.0",
- "eslint-plugin-vue": "10.5.1",
- "fast-glob": "3.3.3",
- "happy-dom": "20.0.10",
+ "eslint-plugin-vue": "10.6.2",
+ "happy-dom": "20.0.11",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
- "msw": "2.12.2",
+ "msw": "2.12.4",
"nodemon": "3.1.11",
- "prettier": "3.6.2",
- "start-server-and-test": "2.1.2",
- "tsx": "4.20.6",
+ "prettier": "3.7.4",
+ "start-server-and-test": "2.1.3",
+ "tsx": "4.21.0",
+ "typescript": "5.9.3",
"vite-plugin-turbosnap": "1.0.3",
- "vue-component-type-helpers": "3.1.4",
+ "vue-component-type-helpers": "3.1.8",
"vue-eslint-parser": "10.2.0",
- "vue-tsc": "3.1.4"
+ "vue-tsc": "3.1.8"
}
}
diff --git a/packages/backend/src/server/web/boot.embed.js b/packages/frontend-embed/public/loader/boot.js
similarity index 99%
rename from packages/backend/src/server/web/boot.embed.js
rename to packages/frontend-embed/public/loader/boot.js
index ba6366b3db..9b3d27873b 100644
--- a/packages/backend/src/server/web/boot.embed.js
+++ b/packages/frontend-embed/public/loader/boot.js
@@ -70,6 +70,8 @@
importAppScript();
});
}
+
+ localStorage.setItem('lang', lang);
//#endregion
async function addStyle(styleText) {
diff --git a/packages/backend/src/server/web/style.embed.css b/packages/frontend-embed/public/loader/style.css
similarity index 100%
rename from packages/backend/src/server/web/style.embed.css
rename to packages/frontend-embed/public/loader/style.css
diff --git a/packages/frontend-embed/src/components/I18n.vue b/packages/frontend-embed/src/components/I18n.vue
index b621110ec9..9866e50958 100644
--- a/packages/frontend-embed/src/components/I18n.vue
+++ b/packages/frontend-embed/src/components/I18n.vue
@@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only
diff --git a/packages/frontend/src/ui/deck/antenna-column.vue b/packages/frontend/src/ui/deck/antenna-column.vue
index 0423a22ce1..1668af79ee 100644
--- a/packages/frontend/src/ui/deck/antenna-column.vue
+++ b/packages/frontend/src/ui/deck/antenna-column.vue
@@ -63,7 +63,7 @@ async function setAntenna() {
})),
} : undefined),
],
- default: props.column.antennaId,
+ default: antennas.find(x => x.id === props.column.antennaId)?.id,
});
if (canceled || antennaIdOrOperation == null) return;
diff --git a/packages/frontend/src/ui/deck/channel-column.vue b/packages/frontend/src/ui/deck/channel-column.vue
index 35ca9f5cc6..dd14e7019e 100644
--- a/packages/frontend/src/ui/deck/channel-column.vue
+++ b/packages/frontend/src/ui/deck/channel-column.vue
@@ -63,7 +63,7 @@ async function setChannel() {
items: channels.map(x => ({
value: x.id, label: x.name,
})),
- default: props.column.channelId,
+ default: channels.find(x => x.id === props.column.channelId)?.id,
});
if (canceled || chosenChannelId == null) return;
const chosenChannel = channels.find(x => x.id === chosenChannelId)!;
diff --git a/packages/frontend/src/ui/deck/list-column.vue b/packages/frontend/src/ui/deck/list-column.vue
index 7fb0aba1e1..6fc4680396 100644
--- a/packages/frontend/src/ui/deck/list-column.vue
+++ b/packages/frontend/src/ui/deck/list-column.vue
@@ -70,7 +70,7 @@ async function setList() {
})),
} : undefined),
],
- default: props.column.listId,
+ default: lists.find(x => x.id === props.column.listId)?.id,
});
if (canceled || listIdOrOperation == null) return;
diff --git a/packages/frontend/src/ui/deck/role-timeline-column.vue b/packages/frontend/src/ui/deck/role-timeline-column.vue
index beb679169c..1f6e8c73d5 100644
--- a/packages/frontend/src/ui/deck/role-timeline-column.vue
+++ b/packages/frontend/src/ui/deck/role-timeline-column.vue
@@ -54,7 +54,7 @@ async function setRole() {
items: roles.map(x => ({
value: x.id, label: x.name,
})),
- default: props.column.roleId,
+ default: roles.find(x => x.id === props.column.roleId)?.id,
});
if (canceled || roleId == null) return;
const role = roles.find(x => x.id === roleId)!;
diff --git a/packages/frontend/src/ui/deck/tl-column.vue b/packages/frontend/src/ui/deck/tl-column.vue
index afaa08e6d0..0e59913c4c 100644
--- a/packages/frontend/src/ui/deck/tl-column.vue
+++ b/packages/frontend/src/ui/deck/tl-column.vue
@@ -104,6 +104,7 @@ async function setType() {
}, {
value: 'global', label: i18n.ts._timelines.global,
}],
+ default: props.column.tl,
});
if (canceled) {
if (props.column.tl == null) {
diff --git a/packages/frontend/test/aiscript/api.test.ts b/packages/frontend/test/aiscript/api.test.ts
index 34f880286c..292ec7ca77 100644
--- a/packages/frontend/test/aiscript/api.test.ts
+++ b/packages/frontend/test/aiscript/api.test.ts
@@ -8,7 +8,6 @@ import { aiScriptReadline, createAiScriptEnv } from '@/aiscript/api.js';
import { errors, Interpreter, Parser, values } from '@syuilo/aiscript';
import {
afterAll,
- afterEach,
beforeAll,
beforeEach,
describe,
@@ -80,8 +79,9 @@ describe('AiScript common API', () => {
});
describe('readline', () => {
- afterEach(() => {
+ beforeEach(() => {
vi.restoreAllMocks();
+ vi.clearAllMocks();
});
test.sequential('ok', async () => {
@@ -176,8 +176,9 @@ describe('AiScript common API', () => {
});
describe('dialog', () => {
- afterEach(() => {
+ beforeEach(() => {
vi.restoreAllMocks();
+ vi.clearAllMocks();
});
test.sequential('ok', async () => {
@@ -215,8 +216,9 @@ describe('AiScript common API', () => {
});
describe('confirm', () => {
- afterEach(() => {
+ beforeEach(() => {
vi.restoreAllMocks();
+ vi.clearAllMocks();
});
test.sequential('ok', async () => {
@@ -272,8 +274,9 @@ describe('AiScript common API', () => {
});
describe('api', () => {
- afterEach(() => {
+ beforeEach(() => {
vi.restoreAllMocks();
+ vi.clearAllMocks();
});
test.sequential('successful', async () => {
@@ -347,7 +350,7 @@ describe('AiScript common API', () => {
miLocalStorage.removeItem('aiscript:widget:key');
});
- afterEach(() => {
+ beforeEach(() => {
miLocalStorage.removeItem('aiscript:widget:key');
});
diff --git a/packages/frontend/test/i18n.test.ts b/packages/frontend/test/i18n.test.ts
index a51dfc6c4e..14b89f898d 100644
--- a/packages/frontend/test/i18n.test.ts
+++ b/packages/frontend/test/i18n.test.ts
@@ -5,7 +5,7 @@
import { describe, expect, it } from 'vitest';
import { I18n } from '../../frontend-shared/js/i18n.js'; // @@で参照できなかったので
-import type { ParameterizedString } from '../../../locales/index.js';
+import type { ParameterizedString } from 'i18n';
// TODO: このテストはfrontend-sharedに移動する
diff --git a/packages/frontend/test/init.ts b/packages/frontend/test/init.ts
index e38338cf95..28848f6c2f 100644
--- a/packages/frontend/test/init.ts
+++ b/packages/frontend/test/init.ts
@@ -7,13 +7,13 @@ import { vi } from 'vitest';
import createFetchMock from 'vitest-fetch-mock';
import type { Ref } from 'vue';
import { ref } from 'vue';
+// Set i18n
+import locales from 'i18n';
+import { updateI18n } from '@/i18n.js';
const fetchMocker = createFetchMock(vi);
fetchMocker.enableMocks();
-// Set i18n
-import locales from '../../../locales/index.js';
-import { updateI18n } from '@/i18n.js';
updateI18n(locales['en-US']);
// XXX: misskey-js panics if WebSocket is not defined
diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts
index 6f320e99c9..c9c20b23ea 100644
--- a/packages/frontend/vite.config.ts
+++ b/packages/frontend/vite.config.ts
@@ -2,18 +2,18 @@ import path from 'path';
import pluginReplace from '@rollup/plugin-replace';
import pluginVue from '@vitejs/plugin-vue';
import pluginGlsl from 'vite-plugin-glsl';
-import { defineConfig } from 'vite';
import type { UserConfig } from 'vite';
+import { defineConfig } from 'vite';
import * as yaml from 'js-yaml';
import { promises as fsp } from 'fs';
-import locales from '../../locales/index.js';
+import locales from 'i18n';
import meta from '../../package.json';
import packageInfo from './package.json' with { type: 'json' };
import pluginUnwindCssModuleClassName from './lib/rollup-plugin-unwind-css-module-class-name.js';
import pluginJson5 from './vite.json5.js';
-import pluginCreateSearchIndex from './lib/vite-plugin-create-search-index.js';
import type { Options as SearchIndexOptions } from './lib/vite-plugin-create-search-index.js';
+import pluginCreateSearchIndex from './lib/vite-plugin-create-search-index.js';
import pluginWatchLocales from './lib/vite-plugin-watch-locales.js';
import { pluginRemoveUnrefI18n } from '../frontend-builder/rollup-plugin-remove-unref-i18n.js';
diff --git a/packages/i18n/README.md b/packages/i18n/README.md
new file mode 100644
index 0000000000..1013b84ea6
--- /dev/null
+++ b/packages/i18n/README.md
@@ -0,0 +1,5 @@
+# Misskey i18n
+
+Misskey の言語ファイル本体 (ja-JP.yml など) はリポジトリ直下の `/locales` に置かれており、そこから Crowdin 連携やビルド資産が生成されます。
+
+このパッケージは Misskey モノレポ内で、これらの言語ファイルを共通で扱うためのヘルパー群や型情報をまとめる位置づけです。バックエンド / フロントエンド / Service Worker など各パッケージが同じ翻訳データと型定義を利用できるようにすることを目的としており、npm での外部配布は想定していません。
diff --git a/packages/i18n/build.ts b/packages/i18n/build.ts
new file mode 100644
index 0000000000..21bf2996b4
--- /dev/null
+++ b/packages/i18n/build.ts
@@ -0,0 +1,162 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import fs from 'node:fs';
+import { fileURLToPath } from 'node:url';
+import { dirname, resolve } from 'node:path';
+import { watch as chokidarWatch } from 'chokidar';
+import * as esbuild from 'esbuild';
+import { build } from 'esbuild';
+import { execa } from 'execa';
+import { generateLocaleInterface } from './scripts/generateLocaleInterface.js';
+import type { BuildOptions, BuildResult, Plugin, PluginBuild } from 'esbuild';
+
+const _filename = fileURLToPath(import.meta.url);
+const _dirname = dirname(_filename);
+const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8'));
+const _rootPackageDir = resolve(_dirname, '../../');
+const _rootPackage = JSON.parse(fs.readFileSync(resolve(_rootPackageDir, 'package.json'), 'utf-8'));
+const _frontendLocalesDir = resolve(_dirname, '../../built/_frontend_dist_/locales');
+const _localesDir = resolve(_rootPackageDir, 'locales');
+
+const entryPoints = fs.globSync('./src/**/**.{ts,tsx}');
+
+const options: BuildOptions = {
+ entryPoints,
+ minify: process.env.NODE_ENV === 'production',
+ sourceRoot: 'src',
+ outdir: './built',
+ target: 'es2022',
+ platform: 'node',
+ format: 'esm',
+ sourcemap: 'linked',
+};
+
+// コマンドライン引数を取得
+const args = process.argv.slice(2).map(arg => arg.toLowerCase());
+
+// built配下をすべて削除する
+if (!args.includes('--no-clean')) {
+ fs.rmSync('./built', { recursive: true, force: true });
+}
+
+if (args.includes('--watch')) {
+ await watchSrc();
+} else {
+ await buildSrc();
+}
+
+function copyLocales(): void {
+ const srcDir = _localesDir;
+ const destDir = resolve(_dirname, 'built/locales');
+
+ fs.mkdirSync(destDir, { recursive: true });
+
+ const files = fs.readdirSync(srcDir).filter(f => f.endsWith('.yml'));
+ for (const file of files) {
+ fs.copyFileSync(resolve(srcDir, file), resolve(destDir, file));
+ }
+ console.log(`[${_package.name}] locales copied (${files.length} files).`);
+}
+
+/**
+ * フロントエンド用の locale JSON を書き出す
+ * Service Worker が HTTP 経由で取得するために必要
+ */
+async function writeFrontendLocalesJson(): Promise {
+ // 動的 import でビルド済みモジュールから読み込み(循環参照回避)
+ const { writeFrontendLocalesJson: write } = await import('./built/index.js');
+ await write(_frontendLocalesDir, _rootPackage.version);
+ console.log(`[${_package.name}] frontend locales JSON written to ${_frontendLocalesDir}`);
+}
+
+async function buildSrc(): Promise {
+ console.log(`[${_package.name}] start building...`);
+
+ await generateLocaleInterface(_localesDir);
+
+ await build(options)
+ .then(() => {
+ console.log(`[${_package.name}] build succeeded.`);
+ })
+ .catch((err) => {
+ process.stderr.write(err.stderr);
+ process.exit(1);
+ });
+
+ copyLocales();
+ await writeFrontendLocalesJson();
+
+ if (process.env.NODE_ENV === 'production') {
+ console.log(`[${_package.name}] skip building d.ts because NODE_ENV is production.`);
+ } else {
+ await buildDts();
+ }
+
+ console.log(`[${_package.name}] finish building.`);
+}
+
+function buildDts(): Promise {
+ return execa(
+ 'tsc',
+ [
+ '--project', 'tsconfig.json',
+ '--rootDir', 'src',
+ '--outDir', 'built',
+ '--declaration', 'true',
+ '--emitDeclarationOnly', 'true',
+ ],
+ {
+ stdout: process.stdout,
+ stderr: process.stderr,
+ },
+ );
+}
+
+async function watchSrc(): Promise {
+ const localesWatcher = chokidarWatch(_localesDir, {
+ ignoreInitial: true,
+ });
+ localesWatcher.on('all', async (event, path) => {
+ if (!path.endsWith('.yml')) return;
+ console.log(`[${_package.name}] locales changed: ${event} ${path}`);
+ copyLocales();
+ await writeFrontendLocalesJson();
+ await generateLocaleInterface(_localesDir);
+ });
+
+ const plugins: Plugin[] = [{
+ name: 'gen-dts',
+ setup(build: PluginBuild) {
+ build.onStart(() => {
+ console.log(`[${_package.name}] detect changed...`);
+ });
+ build.onEnd(async (result: BuildResult) => {
+ if (result.errors.length > 0) {
+ console.error(`[${_package.name}] watch build failed:`, result);
+ return;
+ }
+ await buildDts();
+ });
+ },
+ }];
+
+ console.log(`[${_package.name}] start watching...`);
+
+ const context = await esbuild.context({ ...options, plugins });
+ await context.watch();
+
+ await new Promise((resolve, reject) => {
+ process.on('SIGHUP', resolve);
+ process.on('SIGINT', resolve);
+ process.on('SIGTERM', resolve);
+ process.on('uncaughtException', reject);
+ process.on('exit', resolve);
+ }).finally(async () => {
+ await context.dispose();
+ await localesWatcher.close();
+ console.log(`[${_package.name}] finish watching.`);
+ });
+}
diff --git a/packages/i18n/eslint.config.js b/packages/i18n/eslint.config.js
new file mode 100644
index 0000000000..f18bc4a4be
--- /dev/null
+++ b/packages/i18n/eslint.config.js
@@ -0,0 +1,35 @@
+import tsParser from '@typescript-eslint/parser';
+import sharedConfig from '../shared/eslint.config.js';
+
+// eslint-disable-next-line import/no-default-export
+export default [
+ ...sharedConfig,
+ {
+ ignores: [
+ '**/node_modules',
+ 'built',
+ 'coverage',
+ 'vitest.config.ts',
+ 'test',
+ 'test-d',
+ 'generator',
+ ],
+ },
+ {
+ files: ['**/*.ts', '**/*.tsx'],
+ languageOptions: {
+ parserOptions: {
+ parser: tsParser,
+ project: ['./tsconfig.eslint.json'],
+ sourceType: 'module',
+ tsconfigRootDir: import.meta.dirname,
+ },
+ },
+ },
+ {
+ files: ['src/autogen/**/*.ts', 'src/autogen/**/*.tsx'],
+ rules: {
+ '@stylistic/indent': 'off',
+ },
+ },
+];
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
new file mode 100644
index 0000000000..ac6c386995
--- /dev/null
+++ b/packages/i18n/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "i18n",
+ "type": "module",
+ "private": true,
+ "main": "./built/index.js",
+ "types": "./built/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./built/index.d.ts",
+ "import": "./built/index.js"
+ },
+ "./const": {
+ "types": "./built/const.d.ts",
+ "import": "./built/const.js"
+ }
+ },
+ "scripts": {
+ "generate": "tsx scripts/generateLocaleInterface.ts",
+ "verify": "tsx scripts/verify.ts",
+ "build": "tsx ./build.ts",
+ "watch": "nodemon -w package.json -e json --exec \"tsx ./build.ts --watch\"",
+ "tsd": "tsd",
+ "typecheck": "tsc --noEmit",
+ "lint": "pnpm typecheck && pnpm eslint",
+ "lint:fix": "pnpm eslint --fix"
+ },
+ "files": [
+ "built"
+ ],
+ "devDependencies": {
+ "@types/js-yaml": "4.0.9",
+ "@types/node": "24.10.2",
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0",
+ "chokidar": "5.0.0",
+ "esbuild": "0.27.1",
+ "execa": "9.6.1",
+ "nodemon": "3.1.11",
+ "tsx": "4.21.0",
+ "typescript": "5.9.3"
+ },
+ "dependencies": {
+ "js-yaml": "4.1.1"
+ }
+}
diff --git a/packages/i18n/scripts/generateLocaleInterface.ts b/packages/i18n/scripts/generateLocaleInterface.ts
new file mode 100644
index 0000000000..1c0f5c6a79
--- /dev/null
+++ b/packages/i18n/scripts/generateLocaleInterface.ts
@@ -0,0 +1,153 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import * as fs from 'node:fs';
+import { fileURLToPath } from 'node:url';
+import { dirname, resolve } from 'node:path';
+import * as yaml from 'js-yaml';
+import ts from 'typescript';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
+const parameterRegExp = /\{(\w+)\}/g;
+
+interface LocaleRecord {
+ [key: string]: string | LocaleRecord;
+}
+
+function createMemberType(item: string | LocaleRecord): ts.TypeNode {
+ if (typeof item !== 'string') {
+ return ts.factory.createTypeLiteralNode(createMembers(item));
+ }
+ const parameters = Array.from(
+ item.matchAll(parameterRegExp),
+ ([, parameter]) => parameter,
+ );
+ return parameters.length
+ ? ts.factory.createTypeReferenceNode(
+ ts.factory.createIdentifier('ParameterizedString'),
+ [
+ ts.factory.createUnionTypeNode(
+ parameters.map((parameter) =>
+ ts.factory.createLiteralTypeNode(ts.factory.createStringLiteral(parameter)),
+ ),
+ ),
+ ],
+ )
+ : ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
+}
+
+function createMembers(record: LocaleRecord): ts.TypeElement[] {
+ return Object.entries(record).map(([k, v]) => {
+ const node = ts.factory.createPropertySignature(
+ undefined,
+ ts.factory.createStringLiteral(k),
+ undefined,
+ createMemberType(v),
+ );
+ if (typeof v === 'string') {
+ ts.addSyntheticLeadingComment(
+ node,
+ ts.SyntaxKind.MultiLineCommentTrivia,
+ `*
+ * ${v.replace(/\n/g, '\n * ')}
+ `,
+ true,
+ );
+ }
+ return node;
+ });
+}
+
+export async function generateLocaleInterface(localesDir: string): Promise {
+ const locale = yaml.load(fs.readFileSync(`${localesDir}/ja-JP.yml`, 'utf-8').toString()) as LocaleRecord;
+ const members = createMembers(locale);
+
+ const elements: ts.Statement[] = [
+ ts.factory.createImportDeclaration(
+ undefined,
+ ts.factory.createImportClause(
+ false,
+ undefined,
+ ts.factory.createNamedImports([
+ ts.factory.createImportSpecifier(
+ true,
+ undefined,
+ ts.factory.createIdentifier('ILocale'),
+ ),
+ ts.factory.createImportSpecifier(
+ true,
+ undefined,
+ ts.factory.createIdentifier('ParameterizedString'),
+ ),
+ ]),
+ ),
+ ts.factory.createStringLiteral('../types.js'),
+ undefined,
+ ),
+ ts.factory.createInterfaceDeclaration(
+ [ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
+ ts.factory.createIdentifier('Locale'),
+ undefined,
+ [
+ ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [
+ ts.factory.createExpressionWithTypeArguments(
+ ts.factory.createIdentifier('ILocale'),
+ undefined,
+ ),
+ ]),
+ ],
+ members,
+ ),
+ ];
+
+ ts.addSyntheticLeadingComment(
+ elements[0],
+ ts.SyntaxKind.MultiLineCommentTrivia,
+ ' eslint-disable ',
+ true,
+ );
+ ts.addSyntheticLeadingComment(
+ elements[0],
+ ts.SyntaxKind.SingleLineCommentTrivia,
+ ' This file is generated by scripts/generateLocaleInterface.ts',
+ true,
+ );
+ ts.addSyntheticLeadingComment(
+ elements[0],
+ ts.SyntaxKind.SingleLineCommentTrivia,
+ ' Do not edit this file directly.',
+ true,
+ );
+
+ const printed = ts
+ .createPrinter({
+ newLine: ts.NewLineKind.LineFeed,
+ })
+ .printList(
+ ts.ListFormat.MultiLine,
+ ts.factory.createNodeArray(elements),
+ ts.createSourceFile(
+ 'locale.ts',
+ '',
+ ts.ScriptTarget.ESNext,
+ true,
+ ts.ScriptKind.TS,
+ ),
+ );
+
+ const autogenDir = `${__dirname}/../src/autogen`;
+ fs.mkdirSync(autogenDir, { recursive: true });
+
+ // 一瞬ファイルが存在しなくなって途切れる→不安定になるらしいので、リネームで対処
+ fs.writeFileSync(`${autogenDir}/_locale.ts`, printed, 'utf-8');
+ fs.renameSync(`${autogenDir}/_locale.ts`, `${autogenDir}/locale.ts`);
+}
+
+// スクリプトとして直接実行された場合
+const isMain = import.meta.url === `file://${process.argv[1]}`;
+if (isMain) {
+ await generateLocaleInterface(resolve(__dirname, '../../../locales'));
+}
diff --git a/packages/i18n/scripts/verify.ts b/packages/i18n/scripts/verify.ts
new file mode 100644
index 0000000000..877966e49f
--- /dev/null
+++ b/packages/i18n/scripts/verify.ts
@@ -0,0 +1,70 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+let valid = true;
+
+interface LocaleRecord {
+ [key: string]: string | LocaleRecord;
+}
+
+interface ErrorData {
+ expected?: string;
+ actual?: string;
+ parameter?: string;
+}
+
+function writeError(type: string, lang: string, tree: string, data: ErrorData): void {
+ process.stderr.write(JSON.stringify({ type, lang, tree, data }));
+ process.stderr.write('\n');
+ valid = false;
+}
+
+function verify(expected: LocaleRecord, actual: LocaleRecord, lang: string, trace?: string): void {
+ for (const key in expected) {
+ if (!Object.prototype.hasOwnProperty.call(actual, key)) {
+ continue;
+ }
+ if (typeof expected[key] === 'object') {
+ if (typeof actual[key] !== 'object') {
+ writeError('mismatched_type', lang, trace ? `${trace}.${key}` : key, { expected: 'object', actual: typeof actual[key] });
+ continue;
+ }
+ verify(expected[key] as LocaleRecord, actual[key] as LocaleRecord, lang, trace ? `${trace}.${key}` : key);
+ } else if (typeof expected[key] === 'string') {
+ switch (typeof actual[key]) {
+ case 'object':
+ writeError('mismatched_type', lang, trace ? `${trace}.${key}` : key, { expected: 'string', actual: 'object' });
+ break;
+ case 'undefined':
+ continue;
+ case 'string': {
+ const expectedParameters = new Set((expected[key] as string).match(/\{[^}]+\}/g)?.map((s) => s.slice(1, -1)));
+ const actualParameters = new Set((actual[key] as string).match(/\{[^}]+\}/g)?.map((s) => s.slice(1, -1)));
+ for (const parameter of expectedParameters) {
+ if (!actualParameters.has(parameter)) {
+ writeError('missing_parameter', lang, trace ? `${trace}.${key}` : key, { parameter });
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+// index.tsはtsのまま動かすことを想定していない(ビルド成果物を外部に公開する).
+// よってビルド後のものを検証する
+const locales = await import('../built/index.js');
+const { 'ja-JP': original, ...verifiees } = locales as unknown as Record;
+
+for (const lang in verifiees) {
+ if (!Object.prototype.hasOwnProperty.call(locales, lang)) {
+ continue;
+ }
+ verify(original, verifiees[lang], lang);
+}
+
+if (!valid) {
+ process.exit(1);
+}
diff --git a/locales/index.d.ts b/packages/i18n/src/autogen/locale.ts
similarity index 99%
rename from locales/index.d.ts
rename to packages/i18n/src/autogen/locale.ts
index 7f0efd22e8..55833b0cfc 100644
--- a/locales/index.d.ts
+++ b/packages/i18n/src/autogen/locale.ts
@@ -1,13 +1,7 @@
/* eslint-disable */
-// This file is generated by locales/generateDTS.js
+// This file is generated by scripts/generateLocaleInterface.ts
// Do not edit this file directly.
-declare const kParameters: unique symbol;
-export type ParameterizedString = string & {
- [kParameters]: T;
-};
-export interface ILocale {
- [_: string]: string | ParameterizedString | ILocale;
-}
+import { type ILocale, type ParameterizedString } from "../types.js";
export interface Locale extends ILocale {
/**
* 日本語
@@ -10942,6 +10936,36 @@ export interface Locale extends ILocale {
* プロファイル情報のデバイス間同期を有効にする
*/
"enableSyncBetweenDevicesForProfiles": string;
+ /**
+ * UIの説明を見る
+ */
+ "showHowToUse": string;
+ "_howToUse": {
+ /**
+ * カラム追加
+ */
+ "addColumn_title": string;
+ /**
+ * カラムの種類を選んで追加できます。
+ */
+ "addColumn_description": string;
+ /**
+ * UI設定
+ */
+ "settings_title": string;
+ /**
+ * デッキUIの詳細設定を行えます。
+ */
+ "settings_description": string;
+ /**
+ * プロファイル切り替え
+ */
+ "switchProfile_title": string;
+ /**
+ * UIのレイアウトをプロファイルとして保存し、いつでも切り替えられるようにできます。
+ */
+ "switchProfile_description": string;
+ };
"_columns": {
/**
* メイン
@@ -13089,8 +13113,3 @@ export interface Locale extends ILocale {
"mfm": string;
};
}
-declare const locales: {
- [lang: string]: Locale;
-};
-export function build(): Locale;
-export default locales;
diff --git a/packages/i18n/src/const.ts b/packages/i18n/src/const.ts
new file mode 100644
index 0000000000..bb690e7542
--- /dev/null
+++ b/packages/i18n/src/const.ts
@@ -0,0 +1,41 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export const languages = [
+ 'ar-SA',
+ 'ca-ES',
+ 'cs-CZ',
+ 'da-DK',
+ 'de-DE',
+ 'en-US',
+ 'es-ES',
+ 'fr-FR',
+ 'id-ID',
+ 'it-IT',
+ 'ja-JP',
+ 'ja-KS',
+ 'kab-KAB',
+ 'kn-IN',
+ 'ko-KR',
+ 'nl-NL',
+ 'no-NO',
+ 'pl-PL',
+ 'pt-PT',
+ 'ru-RU',
+ 'sk-SK',
+ 'th-TH',
+ 'tr-TR',
+ 'ug-CN',
+ 'uk-UA',
+ 'vi-VN',
+ 'zh-CN',
+ 'zh-TW',
+] as const;
+
+export const primaries = {
+ 'en': 'US',
+ 'ja': 'JP',
+ 'zh': 'CN',
+} as const satisfies Record;
diff --git a/packages/i18n/src/index.ts b/packages/i18n/src/index.ts
new file mode 100644
index 0000000000..21d215159f
--- /dev/null
+++ b/packages/i18n/src/index.ts
@@ -0,0 +1,130 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+/**
+ * Languages Loader
+ */
+
+import * as fs from 'node:fs';
+import * as yaml from 'js-yaml';
+import { languages, primaries } from './const.js';
+import type { Locale } from './autogen/locale.js';
+import type { ILocale, ParameterizedString } from './types.js';
+
+type Language = typeof languages[number];
+
+type PrimaryLang = keyof typeof primaries;
+
+type Locales = Record;
+
+/**
+ * オブジェクトを再帰的にマージする
+ */
+function merge(...args: (T | ILocale | undefined)[]): T {
+ return args.reduce((a, c) => ({
+ ...a,
+ ...c,
+ ...Object.entries(a)
+ .filter(([k]) => c && typeof c[k] === 'object')
+ .reduce>((acc, [k, v]) => {
+ acc[k] = merge(v as ILocale, (c as ILocale)[k] as ILocale);
+ return acc;
+ }, {}),
+ }), {} as ILocale) as T;
+}
+
+/**
+ * 何故か文字列にバックスペース文字が混入することがあり、YAMLが壊れるので取り除く
+ */
+function clean (text: string) {
+ return text.replace(new RegExp(String.fromCodePoint(0x08), 'g'), '');
+}
+
+/**
+ * 空文字列が入ることがあり、フォールバックが動作しなくなるのでプロパティごと消す
+ */
+function removeEmpty(obj: T): T {
+ for (const [k, v] of Object.entries(obj)) {
+ if (v === '') {
+ delete obj[k];
+ } else if (typeof v === 'object') {
+ removeEmpty(v as ILocale);
+ }
+ }
+ return obj;
+}
+
+function build(): Record {
+ // vitestの挙動を調整するため、一度ローカル変数化する必要がある
+ // https://github.com/vitest-dev/vitest/issues/3988#issuecomment-1686599577
+ // https://github.com/misskey-dev/misskey/pull/14057#issuecomment-2192833785
+ const metaUrl = import.meta.url;
+ const locales = languages.reduce((a, lang) => {
+ a[lang] = (yaml.load(clean(fs.readFileSync(new URL(`./locales/${lang}.yml`, metaUrl), 'utf-8'))) ?? {}) as ILocale;
+ return a;
+ }, {} as Locales);
+
+ removeEmpty(locales);
+
+ return Object.entries(locales).reduce>((a, [k, v]) => {
+ const lang = k.split('-')[0];
+ const key = k as Language;
+
+ switch (key) {
+ case 'ja-JP':
+ a[key] = v as Locale;
+ break;
+ case 'ja-KS':
+ case 'en-US':
+ a[key] = merge(locales['ja-JP'] as Locale, v);
+ break;
+ default: {
+ const primaryLang = lang as PrimaryLang;
+ const primaryKey = (lang in primaries ? `${lang}-${primaries[primaryLang]}` : undefined) as Language | undefined;
+ a[key] = merge(
+ locales['ja-JP'] as Locale,
+ locales['en-US'],
+ primaryKey ? locales[primaryKey] : {},
+ v,
+ );
+ break;
+ }
+ }
+
+ return a;
+ }, {} as Record);
+}
+
+const locales = build() as {
+ [lang: string]: Locale;
+};
+
+/**
+ * フロントエンド用の locale JSON を書き出す
+ * Service Worker が HTTP 経由で取得するために必要
+ * @param destDir 出力先ディレクトリ(例: built/_frontend_dist_/locales)
+ * @param version バージョン文字列(ファイル名とJSON内に埋め込まれる)
+ */
+async function writeFrontendLocalesJson(destDir: string, version: string): Promise {
+ const { mkdir, writeFile } = await import('node:fs/promises');
+ const { resolve } = await import('node:path');
+
+ await mkdir(destDir, { recursive: true });
+
+ const builtLocales = build();
+ const v = { '_version_': version };
+
+ for (const [lang, locale] of Object.entries(builtLocales)) {
+ await writeFile(
+ resolve(destDir, `${lang}.${version}.json`),
+ JSON.stringify({ ...locale, ...v }),
+ 'utf-8',
+ );
+ }
+}
+
+export { locales, languages, build, writeFrontendLocalesJson };
+export type { Language, Locale, ILocale, ParameterizedString };
+export default locales;
diff --git a/packages/i18n/src/types.ts b/packages/i18n/src/types.ts
new file mode 100644
index 0000000000..cf9568e792
--- /dev/null
+++ b/packages/i18n/src/types.ts
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+declare const kParameters: unique symbol;
+
+export type ParameterizedString = string & {
+ [kParameters]: T;
+};
+
+export interface ILocale {
+ [_: string]: string | ParameterizedString | ILocale;
+}
diff --git a/packages/i18n/tsconfig.eslint.json b/packages/i18n/tsconfig.eslint.json
new file mode 100644
index 0000000000..5aea206cd1
--- /dev/null
+++ b/packages/i18n/tsconfig.eslint.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig.json",
+ "include": [
+ "src/**/*.ts",
+ "scripts/**/*.ts",
+ "build.ts"
+ ]
+}
\ No newline at end of file
diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json
new file mode 100644
index 0000000000..31cd39b8ba
--- /dev/null
+++ b/packages/i18n/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "NodeNext",
+ "moduleResolution": "NodeNext",
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "strict": true,
+ "skipLibCheck": true
+ },
+ "include": [
+ "src/**/*.ts"
+ ]
+}
\ No newline at end of file
diff --git a/packages/icons-subsetter/package.json b/packages/icons-subsetter/package.json
index 9ca6ee35cb..8d52555288 100644
--- a/packages/icons-subsetter/package.json
+++ b/packages/icons-subsetter/package.json
@@ -11,16 +11,15 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"devDependencies": {
- "@types/node": "24.10.1",
+ "@types/node": "24.10.2",
"@types/wawoff2": "1.0.2",
- "@typescript-eslint/eslint-plugin": "8.47.0",
- "@typescript-eslint/parser": "8.47.0"
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0"
},
"dependencies": {
"@tabler/icons-webfont": "3.35.0",
"harfbuzzjs": "0.4.13",
- "tiny-glob": "0.2.9",
- "tsx": "4.20.6",
+ "tsx": "4.21.0",
"typescript": "5.9.3",
"wawoff2": "2.0.1"
},
diff --git a/packages/icons-subsetter/src/generator.ts b/packages/icons-subsetter/src/generator.ts
index 1a9e3d8fd2..811972baae 100644
--- a/packages/icons-subsetter/src/generator.ts
+++ b/packages/icons-subsetter/src/generator.ts
@@ -3,9 +3,8 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import { promises as fsp, existsSync } from 'fs';
-import path from 'path';
-import glob from 'tiny-glob';
+import { promises as fsp, existsSync } from 'node:fs';
+import path from 'node:path';
import { generateSubsettedFont } from './subsetter.js';
const filesToScan = {
@@ -47,8 +46,8 @@ async function main() {
const iconsToPack = new Set();
const cwd = path.resolve(process.cwd(), '../../');
- const files = await glob(dir, { cwd });
- for (const file of files) {
+ const files = fsp.glob(dir, { cwd });
+ for await (const file of files) {
//console.log(`Scanning ${file}`);
const content = await fsp.readFile(path.resolve(cwd, file), 'utf-8');
const classRegex = /ti-[a-z0-9-]+/g;
diff --git a/packages/misskey-bubble-game/build.js b/packages/misskey-bubble-game/build.js
index 5d534cc6fd..1a6f87a8e8 100644
--- a/packages/misskey-bubble-game/build.js
+++ b/packages/misskey-bubble-game/build.js
@@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url';
import { dirname } from 'node:path';
import * as esbuild from 'esbuild';
import { build } from 'esbuild';
-import { globSync } from 'glob';
import { execa } from 'execa';
const _filename = fileURLToPath(import.meta.url);
const _dirname = dirname(_filename);
const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8'));
-const entryPoints = globSync('./src/**/**.{ts,tsx}');
+const entryPoints = fs.globSync('./src/**/**.{ts,tsx}');
/** @type {import('esbuild').BuildOptions} */
const options = {
diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json
index 5d3f386c96..3844740bf2 100644
--- a/packages/misskey-bubble-game/package.json
+++ b/packages/misskey-bubble-game/package.json
@@ -25,13 +25,12 @@
},
"devDependencies": {
"@types/matter-js": "0.20.2",
- "@types/node": "24.10.1",
+ "@types/node": "24.10.2",
"@types/seedrandom": "3.0.8",
- "@typescript-eslint/eslint-plugin": "8.47.0",
- "@typescript-eslint/parser": "8.47.0",
- "esbuild": "0.27.0",
- "execa": "9.6.0",
- "glob": "11.1.0",
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0",
+ "esbuild": "0.27.1",
+ "execa": "9.6.1",
"nodemon": "3.1.11",
"typescript": "5.9.3"
},
diff --git a/packages/misskey-js/build.js b/packages/misskey-js/build.js
index b794592815..68535556d3 100644
--- a/packages/misskey-js/build.js
+++ b/packages/misskey-js/build.js
@@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url';
import { dirname } from 'node:path';
import * as esbuild from 'esbuild';
import { build } from 'esbuild';
-import { globSync } from 'glob';
import { execa } from 'execa';
const _filename = fileURLToPath(import.meta.url);
const _dirname = dirname(_filename);
const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8'));
-const entryPoints = globSync('./src/**/**.{ts,tsx}');
+const entryPoints = fs.globSync('./src/**/**.{ts,tsx}');
/** @type {import('esbuild').BuildOptions} */
const options = {
diff --git a/packages/misskey-js/generator/package.json b/packages/misskey-js/generator/package.json
index 7c4a12552d..e9721911cc 100644
--- a/packages/misskey-js/generator/package.json
+++ b/packages/misskey-js/generator/package.json
@@ -8,13 +8,13 @@
},
"devDependencies": {
"@readme/openapi-parser": "5.2.1",
- "@types/node": "24.10.1",
- "@typescript-eslint/eslint-plugin": "8.47.0",
- "@typescript-eslint/parser": "8.47.0",
+ "@types/node": "24.10.2",
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0",
"openapi-types": "12.1.3",
"openapi-typescript": "7.10.1",
"ts-case-convert": "2.1.0",
- "tsx": "4.20.6",
+ "tsx": "4.21.0",
"typescript": "5.9.3",
"eslint": "9.39.1"
},
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index a961f2a25c..cd3cfd11e5 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
- "version": "2025.11.1",
+ "version": "2025.12.2-beta.2",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/index.js",
@@ -37,19 +37,18 @@
"directory": "packages/misskey-js"
},
"devDependencies": {
- "@microsoft/api-extractor": "7.55.0",
- "@types/node": "24.10.1",
- "@typescript-eslint/eslint-plugin": "8.47.0",
- "@typescript-eslint/parser": "8.47.0",
- "@vitest/coverage-v8": "4.0.10",
- "esbuild": "0.27.0",
- "execa": "9.6.0",
- "glob": "13.0.0",
+ "@microsoft/api-extractor": "7.55.2",
+ "@types/node": "24.10.2",
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0",
+ "@vitest/coverage-v8": "4.0.15",
+ "esbuild": "0.27.1",
+ "execa": "9.6.1",
"ncp": "2.0.0",
"nodemon": "3.1.11",
"tsd": "0.33.0",
"typescript": "5.9.3",
- "vitest": "4.0.10",
+ "vitest": "4.0.15",
"vitest-websocket-mock": "0.5.0"
},
"files": [
diff --git a/packages/misskey-reversi/build.js b/packages/misskey-reversi/build.js
index 5d534cc6fd..1a6f87a8e8 100644
--- a/packages/misskey-reversi/build.js
+++ b/packages/misskey-reversi/build.js
@@ -3,14 +3,13 @@ import { fileURLToPath } from 'node:url';
import { dirname } from 'node:path';
import * as esbuild from 'esbuild';
import { build } from 'esbuild';
-import { globSync } from 'glob';
import { execa } from 'execa';
const _filename = fileURLToPath(import.meta.url);
const _dirname = dirname(_filename);
const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8'));
-const entryPoints = globSync('./src/**/**.{ts,tsx}');
+const entryPoints = fs.globSync('./src/**/**.{ts,tsx}');
/** @type {import('esbuild').BuildOptions} */
const options = {
diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json
index 1e733ecbf4..e22ccd1e02 100644
--- a/packages/misskey-reversi/package.json
+++ b/packages/misskey-reversi/package.json
@@ -24,12 +24,11 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"devDependencies": {
- "@types/node": "24.10.1",
- "@typescript-eslint/eslint-plugin": "8.47.0",
- "@typescript-eslint/parser": "8.47.0",
- "esbuild": "0.27.0",
- "execa": "9.6.0",
- "glob": "11.1.0",
+ "@types/node": "24.10.2",
+ "@typescript-eslint/eslint-plugin": "8.49.0",
+ "@typescript-eslint/parser": "8.49.0",
+ "esbuild": "0.27.1",
+ "execa": "9.6.1",
"nodemon": "3.1.11",
"typescript": "5.9.3"
},
diff --git a/packages/sw/build.js b/packages/sw/build.js
index a9c2e428c0..d5ca028da5 100644
--- a/packages/sw/build.js
+++ b/packages/sw/build.js
@@ -7,8 +7,9 @@
import { fileURLToPath } from 'node:url';
import * as esbuild from 'esbuild';
-import locales from '../../locales/index.js';
+import locales from 'i18n';
import meta from '../../package.json' with { type: 'json' };
+
const watch = process.argv[2]?.includes('watch');
const __dirname = fileURLToPath(new URL('.', import.meta.url));
diff --git a/packages/sw/package.json b/packages/sw/package.json
index 51d78511c2..1911524b8f 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -9,12 +9,13 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"dependencies": {
- "esbuild": "0.27.0",
+ "i18n": "workspace:*",
+ "esbuild": "0.27.1",
"idb-keyval": "6.2.2",
"misskey-js": "workspace:*"
},
"devDependencies": {
- "@typescript-eslint/parser": "8.47.0",
+ "@typescript-eslint/parser": "8.49.0",
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.74",
"eslint-plugin-import": "2.32.0",
"nodemon": "3.1.11",
diff --git a/packages/sw/src/const.ts b/packages/sw/src/const.ts
new file mode 100644
index 0000000000..9dd9bad30f
--- /dev/null
+++ b/packages/sw/src/const.ts
@@ -0,0 +1,6 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export const FETCH_TIMEOUT_MS = 10000;
diff --git a/packages/sw/src/scripts/lang.ts b/packages/sw/src/scripts/lang.ts
index 3000160e41..63ac4ce399 100644
--- a/packages/sw/src/scripts/lang.ts
+++ b/packages/sw/src/scripts/lang.ts
@@ -8,7 +8,8 @@
*/
import { get, set } from 'idb-keyval';
import { I18n } from '@@/js/i18n.js';
-import type { Locale } from '../../../../locales/index.js';
+import { FETCH_TIMEOUT_MS } from '@/const.js';
+import type { Locale } from 'i18n';
class SwLang {
public cacheName = `mk-cache-${_VERSION_}`;
@@ -37,11 +38,21 @@ class SwLang {
// _DEV_がtrueの場合は常に最新化
if (!localeRes || _DEV_) {
- localeRes = await fetch(localeUrl);
- const clone = localeRes.clone();
- if (!clone.clone().ok) throw new Error('locale fetching error');
+ const controller = new AbortController();
+ const timeout = globalThis.setTimeout(() => {
+ controller.abort('locale-fetch-timeout');
+ }, FETCH_TIMEOUT_MS);
- caches.open(this.cacheName).then(cache => cache.put(localeUrl, clone));
+ try {
+ localeRes = await fetch(localeUrl, { signal: controller.signal });
+
+ const clone = localeRes.clone();
+ if (!clone.clone().ok) throw new Error('locale fetching error');
+
+ caches.open(this.cacheName).then(cache => cache.put(localeUrl, clone));
+ } finally {
+ globalThis.clearTimeout(timeout);
+ }
}
return new I18n(await localeRes.json());
diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts
index 298af4b4b6..2bccbb0542 100644
--- a/packages/sw/src/sw.ts
+++ b/packages/sw/src/sw.ts
@@ -5,15 +5,75 @@
import { get } from 'idb-keyval';
import * as Misskey from 'misskey-js';
+import { FETCH_TIMEOUT_MS } from '@/const.js';
import type { PushNotificationDataMap } from '@/types.js';
import type { I18n } from '@@/js/i18n.js';
-import type { Locale } from '../../../locales/index.js';
+import type { Locale } from 'i18n';
import { createEmptyNotification, createNotification } from '@/scripts/create-notification.js';
import { swLang } from '@/scripts/lang.js';
import * as swos from '@/scripts/operations.js';
-globalThis.addEventListener('install', () => {
- // ev.waitUntil(globalThis.skipWaiting());
+async function respondToNavigation(request: Request): Promise {
+ const controller = new AbortController();
+ const timeout = globalThis.setTimeout(() => {
+ controller.abort('navigation-timeout');
+ }, FETCH_TIMEOUT_MS);
+
+ try {
+ const response = await fetch(request, { signal: controller.signal });
+
+ if (response?.status && response.status < 500) return response;
+ if (response?.type === 'opaqueredirect') return response;
+ } catch (error) {
+ if (_DEV_) {
+ console.warn('navigation fetch failed; showing offline page', error);
+ }
+ } finally {
+ globalThis.clearTimeout(timeout);
+ }
+
+ // Only show offline page when network request actually fails
+ const html = await offlineContentHTML();
+ return new Response(html, {
+ status: 200,
+ headers: {
+ 'content-type': 'text/html',
+ },
+ });
+}
+
+async function offlineContentHTML() {
+ let i18n: Partial>;
+ try {
+ i18n = await (swLang.i18n ?? await swLang.fetchLocale()) as Partial>;
+ } catch {
+ i18n = {};
+ }
+
+ const messages = {
+ title: i18n.ts?._offlineScreen.title ?? 'Offline - Could not connect to server',
+ header: i18n.ts?._offlineScreen.header ?? 'Could not connect to server',
+ reload: i18n.ts?.reload ?? 'Reload',
+ };
+
+ return `${messages.title} v${_VERSION_}`;
+}
+
+globalThis.addEventListener('install', (ev) => {
+ // 次の問題が発生するため、ServiceWorkerAutoPreload をオプトアウトする必要がある
+ // https://issues.chromium.org/issues/466790291
+ if ('addRoutes' in ev) {
+ // doc: https://developer.mozilla.org/en-US/docs/Web/API/InstallEvent/addRoutes
+ // @ts-expect-error 実験的なAPIなので型定義がない
+ ev.addRoutes({
+ condition: {
+ // doc: https://developer.mozilla.org/ja/docs/Web/API/URLPattern
+ // @ts-expect-error 実験的なAPIなので型定義がない
+ urlPattern: new URLPattern({}),
+ },
+ source: 'fetch-event',
+ });
+ }
});
globalThis.addEventListener('activate', ev => {
@@ -28,17 +88,6 @@ globalThis.addEventListener('activate', ev => {
);
});
-async function offlineContentHTML() {
- const i18n = await (swLang.i18n ?? swLang.fetchLocale()) as Partial>;
- const messages = {
- title: i18n.ts?._offlineScreen.title ?? 'Offline - Could not connect to server',
- header: i18n.ts?._offlineScreen.header ?? 'Could not connect to server',
- reload: i18n.ts?.reload ?? 'Reload',
- };
-
- return `${messages.title} v${_VERSION_}`;
-}
-
globalThis.addEventListener('fetch', ev => {
let isHTMLRequest = false;
if (ev.request.headers.get('sec-fetch-dest') === 'document') {
@@ -50,18 +99,7 @@ globalThis.addEventListener('fetch', ev => {
}
if (!isHTMLRequest) return;
- ev.respondWith(
- fetch(ev.request)
- .catch(async () => {
- const html = await offlineContentHTML();
- return new Response(html, {
- status: 200,
- headers: {
- 'content-type': 'text/html',
- },
- });
- }),
- );
+ ev.respondWith(respondToNavigation(ev.request));
});
globalThis.addEventListener('push', ev => {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 61aaec6947..2b58b2e106 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,7 +5,7 @@ settings:
excludeLinksFromLockfile: false
overrides:
- chokidar: 4.0.3
+ chokidar: 5.0.0
lodash: 4.17.21
'@aiscript-dev/aiscript-languageserver': '-'
@@ -17,17 +17,11 @@ importers:
specifier: 7.1.2
version: 7.1.2(postcss@8.5.6)
esbuild:
- specifier: 0.27.0
- version: 0.27.0
+ specifier: 0.27.1
+ version: 0.27.1
execa:
- specifier: 9.6.0
- version: 9.6.0
- fast-glob:
- specifier: 3.3.3
- version: 3.3.3
- glob:
- specifier: 13.0.0
- version: 13.0.0
+ specifier: 9.6.1
+ version: 9.6.1
ignore-walk:
specifier: 8.0.0
version: 8.0.0
@@ -52,25 +46,25 @@ importers:
version: 9.39.1
'@misskey-dev/eslint-plugin':
specifier: 2.2.0
- version: 2.2.0(@eslint/compat@1.4.0(eslint@9.39.1))(@eslint/js@9.39.1)(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1))(eslint@9.39.1)(globals@16.5.0)
+ version: 2.2.0(@eslint/compat@1.4.0(eslint@9.39.1))(@eslint/js@9.39.1)(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3))(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1))(eslint@9.39.1)(globals@16.5.0)
'@types/js-yaml':
specifier: 4.0.9
version: 4.0.9
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
cross-env:
specifier: 10.1.0
version: 10.1.0
cypress:
- specifier: 15.6.0
- version: 15.6.0
+ specifier: 15.7.1
+ version: 15.7.1
eslint:
specifier: 9.39.1
version: 9.39.1
@@ -81,11 +75,11 @@ importers:
specifier: 2.0.0
version: 2.0.0
pnpm:
- specifier: 10.22.0
- version: 10.22.0
+ specifier: 10.25.0
+ version: 10.25.0
start-server-and-test:
- specifier: 2.1.2
- version: 2.1.2
+ specifier: 2.1.3
+ version: 2.1.3
optionalDependencies:
'@tensorflow/tfjs-core':
specifier: 4.22.0
@@ -94,38 +88,35 @@ importers:
packages/backend:
dependencies:
'@aws-sdk/client-s3':
- specifier: 3.936.0
- version: 3.936.0
+ specifier: 3.948.0
+ version: 3.948.0
'@aws-sdk/lib-storage':
- specifier: 3.936.0
- version: 3.936.0(@aws-sdk/client-s3@3.936.0)
+ specifier: 3.948.0
+ version: 3.948.0(@aws-sdk/client-s3@3.948.0)
'@discordapp/twemoji':
specifier: 16.0.1
version: 16.0.1
'@fastify/accepts':
- specifier: 5.0.3
- version: 5.0.3
- '@fastify/cookie':
- specifier: 11.0.2
- version: 11.0.2
+ specifier: 5.0.4
+ version: 5.0.4
'@fastify/cors':
- specifier: 10.1.0
- version: 10.1.0
+ specifier: 11.2.0
+ version: 11.2.0
'@fastify/express':
specifier: 4.0.2
version: 4.0.2
'@fastify/http-proxy':
- specifier: 10.0.2
- version: 10.0.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)
+ specifier: 11.4.1
+ version: 11.4.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@fastify/multipart':
specifier: 9.3.0
version: 9.3.0
'@fastify/static':
specifier: 8.3.0
version: 8.3.0
- '@fastify/view':
- specifier: 10.0.2
- version: 10.0.2
+ '@kitajs/html':
+ specifier: 4.2.11
+ version: 4.2.11
'@misskey-dev/sharp-read-bmp':
specifier: 1.2.0
version: 1.2.0
@@ -133,41 +124,41 @@ importers:
specifier: 5.2.5
version: 5.2.5
'@napi-rs/canvas':
- specifier: 0.1.82
- version: 0.1.82
+ specifier: 0.1.84
+ version: 0.1.84
'@nestjs/common':
specifier: 11.1.9
version: 11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core':
specifier: 11.1.9
- version: 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.20)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ version: 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/testing':
specifier: 11.1.9
- version: 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-express@10.4.20)
+ version: 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-express@11.1.9)
'@peertube/http-signature':
specifier: 1.7.0
version: 1.7.0
'@sentry/node':
- specifier: 10.26.0
- version: 10.26.0
+ specifier: 10.29.0
+ version: 10.29.0
'@sentry/profiling-node':
- specifier: 10.26.0
- version: 10.26.0
+ specifier: 10.29.0
+ version: 10.29.0
'@simplewebauthn/server':
- specifier: 12.0.0
- version: 12.0.0(encoding@0.1.13)
+ specifier: 13.2.2
+ version: 13.2.2
'@sinonjs/fake-timers':
- specifier: 11.3.1
- version: 11.3.1
+ specifier: 15.0.0
+ version: 15.0.0
'@smithy/node-http-handler':
- specifier: 2.5.0
- version: 2.5.0
+ specifier: 4.4.5
+ version: 4.4.5
'@swc/cli':
specifier: 0.7.9
- version: 0.7.9(@swc/core@1.15.2)(chokidar@4.0.3)
+ version: 0.7.9(@swc/core@1.15.3)(chokidar@5.0.0)
'@swc/core':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@twemoji/parser':
specifier: 16.0.0
version: 16.0.0
@@ -187,23 +178,20 @@ importers:
specifier: 0.5.0
version: 0.5.0
bcryptjs:
- specifier: 2.4.3
- version: 2.4.3
+ specifier: 3.0.3
+ version: 3.0.3
blurhash:
specifier: 2.0.5
version: 2.0.5
body-parser:
- specifier: 1.20.3
- version: 1.20.3
+ specifier: 2.2.1
+ version: 2.2.1
bullmq:
- specifier: 5.63.2
- version: 5.63.2
+ specifier: 5.65.1
+ version: 5.65.1
cacheable-lookup:
specifier: 7.0.0
version: 7.0.0
- cbor:
- specifier: 9.0.2
- version: 9.0.2
chalk:
specifier: 5.6.2
version: 5.6.2
@@ -211,17 +199,17 @@ importers:
specifier: 1.1.2
version: 1.1.2
chokidar:
- specifier: 4.0.3
- version: 4.0.3
+ specifier: 5.0.0
+ version: 5.0.0
color-convert:
- specifier: 2.0.1
- version: 2.0.1
+ specifier: 3.1.3
+ version: 3.1.3
content-disposition:
- specifier: 0.5.4
- version: 0.5.4
+ specifier: 1.0.1
+ version: 1.0.1
date-fns:
- specifier: 2.30.0
- version: 2.30.0
+ specifier: 4.1.0
+ version: 4.1.0
deep-email-validator:
specifier: 0.1.21
version: 0.1.21
@@ -232,8 +220,8 @@ importers:
specifier: 5.0.0
version: 5.0.0
feed:
- specifier: 4.2.2
- version: 4.2.2
+ specifier: 5.1.0
+ version: 5.1.0
file-type:
specifier: 21.1.1
version: 21.1.1
@@ -244,20 +232,17 @@ importers:
specifier: 4.0.5
version: 4.0.5
got:
- specifier: 14.6.4
- version: 14.6.4
- happy-dom:
- specifier: 20.0.10
- version: 20.0.10
+ specifier: 14.6.5
+ version: 14.6.5
hpagent:
specifier: 1.2.0
version: 1.2.0
- htmlescape:
- specifier: 1.1.1
- version: 1.1.1
http-link-header:
specifier: 1.1.3
version: 1.1.3
+ i18n:
+ specifier: workspace:*
+ version: link:../i18n
ioredis:
specifier: 5.8.2
version: 5.8.2
@@ -265,26 +250,17 @@ importers:
specifier: 4.0.2
version: 4.0.2
ipaddr.js:
- specifier: 2.2.0
- version: 2.2.0
+ specifier: 2.3.0
+ version: 2.3.0
is-svg:
- specifier: 5.1.0
- version: 5.1.0
- js-yaml:
- specifier: 4.1.1
- version: 4.1.1
- jsdom:
- specifier: 26.1.0
- version: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
+ specifier: 6.1.0
+ version: 6.1.0
json5:
specifier: 2.2.3
version: 2.2.3
jsonld:
- specifier: 8.3.3
- version: 8.3.3(web-streams-polyfill@3.3.3)
- jsrsasign:
- specifier: 11.1.0
- version: 11.1.0
+ specifier: 9.0.0
+ version: 9.0.0
juice:
specifier: 11.0.3
version: 11.0.3
@@ -294,12 +270,9 @@ importers:
mfm-js:
specifier: 0.25.0
version: 0.25.0
- microformats-parser:
- specifier: 2.0.4
- version: 2.0.4
mime-types:
- specifier: 2.1.35
- version: 2.1.35
+ specifier: 3.0.2
+ version: 3.0.2
misskey-js:
specifier: workspace:*
version: link:../misskey-js
@@ -318,15 +291,15 @@ importers:
node-fetch:
specifier: 3.3.2
version: 3.3.2
+ node-html-parser:
+ specifier: 7.0.1
+ version: 7.0.1
nodemailer:
- specifier: 7.0.10
- version: 7.0.10
+ specifier: 7.0.11
+ version: 7.0.11
nsfwjs:
specifier: 4.2.0
version: 4.2.0(@tensorflow/tfjs@4.22.0(encoding@0.1.13)(seedrandom@3.0.5))(buffer@6.0.3)
- oauth:
- specifier: 0.10.2
- version: 0.10.2
oauth2orize:
specifier: 1.12.0
version: 1.12.0
@@ -339,24 +312,18 @@ importers:
otpauth:
specifier: 9.4.1
version: 9.4.1
- parse5:
- specifier: 7.3.0
- version: 7.3.0
pg:
specifier: 8.16.3
version: 8.16.3
pkce-challenge:
- specifier: 4.1.0
- version: 4.1.0
+ specifier: 5.0.1
+ version: 5.0.1
probe-image-size:
specifier: 7.2.3
version: 7.2.3
promise-limit:
specifier: 2.7.0
version: 2.7.0
- pug:
- specifier: 3.0.3
- version: 3.0.3
qrcode:
specifier: 1.5.4
version: 1.5.4
@@ -372,9 +339,6 @@ importers:
redis-info:
specifier: 3.1.0
version: 3.1.0
- redis-lock:
- specifier: 0.1.4
- version: 0.1.4
reflect-metadata:
specifier: 0.2.2
version: 0.2.2
@@ -391,8 +355,8 @@ importers:
specifier: 2.17.0
version: 2.17.0
secure-json-parse:
- specifier: 3.0.2
- version: 3.0.2
+ specifier: 4.1.0
+ version: 4.1.0
semver:
specifier: 7.7.3
version: 7.7.3
@@ -409,8 +373,8 @@ importers:
specifier: 2.1.0
version: 2.1.0
systeminformation:
- specifier: 5.27.11
- version: 5.27.11
+ specifier: 5.27.14
+ version: 5.27.14
tinycolor2:
specifier: 1.6.0
version: 1.6.0
@@ -420,18 +384,15 @@ importers:
tsc-alias:
specifier: 1.8.16
version: 1.8.16
- tsconfig-paths:
- specifier: 4.2.0
- version: 4.2.0
typeorm:
- specifier: 0.3.27
- version: 0.3.27(ioredis@5.8.2)(pg@8.16.3)(reflect-metadata@0.2.2)
+ specifier: 0.3.28
+ version: 0.3.28(ioredis@5.8.2)(pg@8.16.3)
typescript:
specifier: 5.9.3
version: 5.9.3
ulid:
- specifier: 2.4.0
- version: 2.4.0
+ specifier: 3.0.2
+ version: 3.0.2
vary:
specifier: 1.1.2
version: 1.1.2
@@ -448,27 +409,27 @@ importers:
'@jest/globals':
specifier: 29.7.0
version: 29.7.0
+ '@kitajs/ts-html-plugin':
+ specifier: 4.1.3
+ version: 4.1.3(@kitajs/html@4.2.11)(typescript@5.9.3)
'@nestjs/platform-express':
- specifier: 10.4.20
- version: 10.4.20(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)
+ specifier: 11.1.9
+ version: 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)
'@sentry/vue':
- specifier: 10.26.0
- version: 10.26.0(vue@3.5.24(typescript@5.9.3))
+ specifier: 10.29.0
+ version: 10.29.0(vue@3.5.25(typescript@5.9.3))
'@simplewebauthn/types':
specifier: 12.0.0
version: 12.0.0
'@swc/jest':
specifier: 0.2.39
- version: 0.2.39(@swc/core@1.15.2)
+ version: 0.2.39(@swc/core@1.15.3)
'@types/accepts':
specifier: 1.3.7
version: 1.3.7
'@types/archiver':
- specifier: 6.0.4
- version: 6.0.4
- '@types/bcryptjs':
- specifier: 2.4.6
- version: 2.4.6
+ specifier: 7.0.0
+ version: 7.0.0
'@types/body-parser':
specifier: 1.19.6
version: 1.19.6
@@ -481,42 +442,27 @@ importers:
'@types/fluent-ffmpeg':
specifier: 2.1.28
version: 2.1.28
- '@types/htmlescape':
- specifier: 1.1.3
- version: 1.1.3
'@types/http-link-header':
specifier: 1.0.7
version: 1.0.7
'@types/jest':
specifier: 29.5.14
version: 29.5.14
- '@types/js-yaml':
- specifier: 4.0.9
- version: 4.0.9
- '@types/jsdom':
- specifier: 21.1.7
- version: 21.1.7
'@types/jsonld':
specifier: 1.5.15
version: 1.5.15
- '@types/jsrsasign':
- specifier: 10.5.15
- version: 10.5.15
'@types/mime-types':
- specifier: 2.1.4
- version: 2.1.4
+ specifier: 3.0.1
+ version: 3.0.1
'@types/ms':
- specifier: 0.7.34
- version: 0.7.34
+ specifier: 2.1.0
+ version: 2.1.0
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@types/nodemailer':
- specifier: 6.4.21
- version: 6.4.21
- '@types/oauth':
- specifier: 0.9.6
- version: 0.9.6
+ specifier: 7.0.4
+ version: 7.0.4
'@types/oauth2orize':
specifier: 1.11.5
version: 1.11.5
@@ -526,9 +472,6 @@ importers:
'@types/pg':
specifier: 8.15.6
version: 8.15.6
- '@types/pug':
- specifier: 2.0.10
- version: 2.0.10
'@types/qrcode':
specifier: 1.5.6
version: 1.5.6
@@ -548,11 +491,11 @@ importers:
specifier: 7.7.1
version: 7.7.1
'@types/simple-oauth2':
- specifier: 5.0.7
- version: 5.0.7
+ specifier: 5.0.8
+ version: 5.0.8
'@types/sinonjs__fake-timers':
- specifier: 8.1.5
- version: 8.1.5
+ specifier: 15.0.1
+ version: 15.0.1
'@types/supertest':
specifier: 6.0.3
version: 6.0.3
@@ -572,81 +515,90 @@ importers:
specifier: 8.18.1
version: 8.18.1
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
aws-sdk-client-mock:
specifier: 4.1.0
version: 4.1.0
+ cbor:
+ specifier: 10.0.11
+ version: 10.0.11
cross-env:
- specifier: 7.0.3
- version: 7.0.3
+ specifier: 10.1.0
+ version: 10.1.0
eslint-plugin-import:
specifier: 2.32.0
- version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
+ version: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
execa:
- specifier: 8.0.1
- version: 8.0.1
+ specifier: 9.6.1
+ version: 9.6.1
fkill:
- specifier: 9.0.0
- version: 9.0.0
+ specifier: 10.0.1
+ version: 10.0.1
jest:
specifier: 29.7.0
- version: 29.7.0(@types/node@24.10.1)
+ version: 29.7.0(@types/node@24.10.2)
jest-mock:
specifier: 29.7.0
version: 29.7.0
+ js-yaml:
+ specifier: 4.1.1
+ version: 4.1.1
nodemon:
specifier: 3.1.11
version: 3.1.11
pid-port:
- specifier: 1.0.2
- version: 1.0.2
+ specifier: 2.0.0
+ version: 2.0.0
simple-oauth2:
specifier: 5.1.0
version: 5.1.0
supertest:
specifier: 7.1.4
version: 7.1.4
+ vite:
+ specifier: 7.2.7
+ version: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
optionalDependencies:
'@swc/core-android-arm64':
specifier: 1.3.11
version: 1.3.11
'@swc/core-darwin-arm64':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-darwin-x64':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-freebsd-x64':
specifier: 1.3.11
version: 1.3.11
'@swc/core-linux-arm-gnueabihf':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-linux-arm64-gnu':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-linux-arm64-musl':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-linux-x64-gnu':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-linux-x64-musl':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-win32-arm64-msvc':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-win32-ia32-msvc':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@swc/core-win32-x64-msvc':
- specifier: 1.15.2
- version: 1.15.2
+ specifier: 1.15.3
+ version: 1.15.3
'@tensorflow/tfjs':
specifier: 4.22.0
version: 4.22.0(encoding@0.1.13)(seedrandom@3.0.5)
@@ -711,8 +663,8 @@ importers:
specifier: 2.1.1
version: 2.1.1
'@mcaptcha/vanilla-glue':
- specifier: 0.1.0-alpha-3
- version: 0.1.0-alpha-3
+ specifier: 0.1.0-rc2
+ version: 0.1.0-rc2(bufferutil@4.0.9)(utf-8-validate@6.0.5)
'@misskey-dev/browser-image-resizer':
specifier: 2024.1.0
version: 2024.1.0
@@ -726,8 +678,8 @@ importers:
specifier: 5.3.0
version: 5.3.0(rollup@4.53.3)
'@sentry/vue':
- specifier: 10.26.0
- version: 10.26.0(vue@3.5.24(typescript@5.9.3))
+ specifier: 10.29.0
+ version: 10.29.0(vue@3.5.25(typescript@5.9.3))
'@syuilo/aiscript':
specifier: 1.2.0
version: 1.2.0
@@ -739,19 +691,13 @@ importers:
version: 16.0.0
'@vitejs/plugin-vue':
specifier: 6.0.2
- version: 6.0.2(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3))
- '@vue/compiler-sfc':
- specifier: 3.5.24
- version: 3.5.24
+ version: 6.0.2(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))(vue@3.5.25(typescript@5.9.3))
aiscript-vscode:
- specifier: github:aiscript-dev/aiscript-vscode#v0.1.15
- version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/c3cde89e79a41d93540cf8a48cd619c3f2dcb1b7
+ specifier: github:aiscript-dev/aiscript-vscode#v0.1.16
+ version: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/1dc7f60cda78d030dadfc518a33c472202b2ef67
analytics:
specifier: 0.8.19
version: 0.8.19(@types/dlv@1.1.5)
- astring:
- specifier: 1.9.0
- version: 1.9.0
broadcast-channel:
specifier: 7.2.0
version: 7.2.0
@@ -788,21 +734,21 @@ importers:
date-fns:
specifier: 4.1.0
version: 4.1.0
- estree-walker:
- specifier: 3.0.3
- version: 3.0.3
eventemitter3:
specifier: 5.0.1
version: 5.0.1
execa:
- specifier: 9.6.0
- version: 9.6.0
+ specifier: 9.6.1
+ version: 9.6.1
exifreader:
- specifier: 4.32.0
- version: 4.32.0
+ specifier: 4.33.1
+ version: 4.33.1
frontend-shared:
specifier: workspace:*
version: link:../frontend-shared
+ i18n:
+ specifier: workspace:*
+ version: link:../i18n
icons-subsetter:
specifier: workspace:*
version: link:../icons-subsetter
@@ -821,15 +767,12 @@ importers:
json5:
specifier: 2.2.3
version: 2.2.3
- magic-string:
- specifier: 0.30.21
- version: 0.30.21
matter-js:
specifier: 0.20.0
version: 0.20.0
mediabunny:
- specifier: 1.25.0
- version: 1.25.0
+ specifier: 1.25.8
+ version: 1.25.8
mfm-js:
specifier: 0.25.0
version: 0.25.0
@@ -861,14 +804,11 @@ importers:
specifier: 2.17.0
version: 2.17.0
sass:
- specifier: 1.94.1
- version: 1.94.1
+ specifier: 1.95.1
+ version: 1.95.1
shiki:
- specifier: 3.15.0
- version: 3.15.0
- strict-event-emitter-types:
- specifier: 2.0.0
- version: 2.0.0
+ specifier: 3.19.0
+ version: 3.19.0
textarea-caret:
specifier: 3.1.0
version: 3.1.0
@@ -881,27 +821,18 @@ importers:
tinycolor2:
specifier: 1.6.0
version: 1.6.0
- tsc-alias:
- specifier: 1.8.16
- version: 1.8.16
- tsconfig-paths:
- specifier: 4.2.0
- version: 4.2.0
- typescript:
- specifier: 5.9.3
- version: 5.9.3
v-code-diff:
specifier: 1.13.1
- version: 1.13.1(vue@3.5.24(typescript@5.9.3))
+ version: 1.13.1(vue@3.5.25(typescript@5.9.3))
vite:
- specifier: 7.2.2
- version: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ specifier: 7.2.7
+ version: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
vue:
- specifier: 3.5.24
- version: 3.5.24(typescript@5.9.3)
+ specifier: 3.5.25
+ version: 3.5.25(typescript@5.9.3)
vuedraggable:
specifier: next
- version: 4.1.0(vue@3.5.24(typescript@5.9.3))
+ version: 4.1.0(vue@3.5.25(typescript@5.9.3))
wanakana:
specifier: 5.3.1
version: 5.3.1
@@ -911,61 +842,61 @@ importers:
version: 5.2.5
'@storybook/addon-essentials':
specifier: 8.6.14
- version: 8.6.14(@types/react@19.2.2)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(@types/react@19.2.2)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/addon-interactions':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/addon-links':
- specifier: 9.1.16
- version: 9.1.16(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ specifier: 10.1.5
+ version: 10.1.5(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/addon-mdx-gfm':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/addon-storysource':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/blocks':
specifier: 8.6.14
- version: 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/components':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/core-events':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/manager-api':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/preview-api':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/react':
- specifier: 9.1.16
- version: 9.1.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3)
+ specifier: 10.1.5
+ version: 10.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(typescript@5.9.3)
'@storybook/react-vite':
- specifier: 9.1.16
- version: 9.1.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ specifier: 10.1.5
+ version: 10.1.5(esbuild@0.27.1)(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(typescript@5.9.3)(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
'@storybook/test':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/theming':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/types':
specifier: 8.6.14
- version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ version: 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
'@storybook/vue3':
- specifier: 9.1.16
- version: 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(vue@3.5.24(typescript@5.9.3))
+ specifier: 10.1.5
+ version: 10.1.5(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vue@3.5.25(typescript@5.9.3))
'@storybook/vue3-vite':
- specifier: 9.1.16
- version: 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3))
+ specifier: 10.1.5
+ version: 10.1.5(esbuild@0.27.1)(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))(vue@3.5.25(typescript@5.9.3))
'@tabler/icons-webfont':
specifier: 3.35.0
version: 3.35.0
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.24)(vue@3.5.24(typescript@5.9.3))
+ version: 8.1.0(@vue/compiler-sfc@3.5.25)(vue@3.5.25(typescript@5.9.3))
'@types/canvas-confetti':
specifier: 1.9.0
version: 1.9.0
@@ -979,8 +910,8 @@ importers:
specifier: 4.0.10
version: 4.0.10
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@types/punycode.js':
specifier: npm:@types/punycode@2.1.4
version: '@types/punycode@2.1.4'
@@ -996,48 +927,48 @@ importers:
'@types/tinycolor2':
specifier: 1.4.6
version: 1.4.6
- '@types/ws':
- specifier: 8.18.1
- version: 8.18.1
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
'@vitest/coverage-v8':
- specifier: 3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ specifier: 4.0.15
+ version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
'@vue/compiler-core':
- specifier: 3.5.24
- version: 3.5.24
- '@vue/runtime-core':
- specifier: 3.5.24
- version: 3.5.24
+ specifier: 3.5.25
+ version: 3.5.25
acorn:
specifier: 8.15.0
version: 8.15.0
+ astring:
+ specifier: 1.9.0
+ version: 1.9.0
cross-env:
specifier: 10.1.0
version: 10.1.0
cypress:
- specifier: 15.6.0
- version: 15.6.0
+ specifier: 15.7.1
+ version: 15.7.1
eslint-plugin-import:
specifier: 2.32.0
- version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
+ version: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
eslint-plugin-vue:
- specifier: 10.5.1
- version: 10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1))
- fast-glob:
- specifier: 3.3.3
- version: 3.3.3
+ specifier: 10.6.2
+ version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1))
+ estree-walker:
+ specifier: 3.0.3
+ version: 3.0.3
happy-dom:
- specifier: 20.0.10
- version: 20.0.10
+ specifier: 20.0.11
+ version: 20.0.11
intersection-observer:
specifier: 0.12.2
version: 0.12.2
+ magic-string:
+ specifier: 0.30.21
+ version: 0.30.21
micromatch:
specifier: 4.0.8
version: 4.0.8
@@ -1045,84 +976,90 @@ importers:
specifier: 10.1.1
version: 10.1.1
msw:
- specifier: 2.12.2
- version: 2.12.2(@types/node@24.10.1)(typescript@5.9.3)
+ specifier: 2.12.4
+ version: 2.12.4(@types/node@24.10.2)(typescript@5.9.3)
msw-storybook-addon:
specifier: 2.0.6
- version: 2.0.6(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))
+ version: 2.0.6(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))
nodemon:
specifier: 3.1.11
version: 3.1.11
prettier:
- specifier: 3.6.2
- version: 3.6.2
+ specifier: 3.7.4
+ version: 3.7.4
react:
- specifier: 19.2.0
- version: 19.2.0
+ specifier: 19.2.1
+ version: 19.2.1
react-dom:
- specifier: 19.2.0
- version: 19.2.0(react@19.2.0)
+ specifier: 19.2.1
+ version: 19.2.1(react@19.2.1)
seedrandom:
specifier: 3.0.5
version: 3.0.5
start-server-and-test:
- specifier: 2.1.2
- version: 2.1.2
+ specifier: 2.1.3
+ version: 2.1.3
storybook:
- specifier: 9.1.16
- version: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ specifier: 10.1.5
+ version: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(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(199cee10961aa3cfbc20370674a11145)
+ version: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(62d43c4a6ba7695d11b4f3f5e39354d0)
tsx:
- specifier: 4.20.6
- version: 4.20.6
+ specifier: 4.21.0
+ version: 4.21.0
+ typescript:
+ specifier: 5.9.3
+ version: 5.9.3
vite-plugin-glsl:
- specifier: 1.5.4
- version: 1.5.4(@rollup/pluginutils@5.3.0(rollup@4.53.3))(esbuild@0.25.11)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ specifier: 1.5.5
+ version: 1.5.5(@rollup/pluginutils@5.3.0(rollup@4.53.3))(esbuild@0.27.1)(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
vite-plugin-turbosnap:
specifier: 1.0.3
version: 1.0.3
vitest:
- specifier: 3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ specifier: 4.0.15
+ version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
vitest-fetch-mock:
specifier: 0.4.5
- version: 0.4.5(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ version: 0.4.5(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
vue-component-type-helpers:
- specifier: 3.1.4
- version: 3.1.4
+ specifier: 3.1.8
+ version: 3.1.8
vue-eslint-parser:
specifier: 10.2.0
version: 10.2.0(eslint@9.39.1)
vue-tsc:
- specifier: 3.1.4
- version: 3.1.4(typescript@5.9.3)
+ specifier: 3.1.8
+ version: 3.1.8(typescript@5.9.3)
packages/frontend-builder:
dependencies:
estree-walker:
specifier: 3.0.3
version: 3.0.3
+ i18n:
+ specifier: workspace:*
+ version: link:../i18n
magic-string:
specifier: 0.30.21
version: 0.30.21
vite:
- specifier: 7.2.2
- version: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ specifier: 7.2.7
+ version: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
devDependencies:
'@types/estree':
specifier: 1.0.8
version: 1.0.8
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
rollup:
specifier: 4.53.3
version: 4.53.3
@@ -1149,13 +1086,7 @@ importers:
version: 16.0.0
'@vitejs/plugin-vue':
specifier: 6.0.2
- version: 6.0.2(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3))
- '@vue/compiler-sfc':
- specifier: 3.5.24
- version: 3.5.24
- astring:
- specifier: 1.9.0
- version: 1.9.0
+ version: 6.0.2(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))(vue@3.5.25(typescript@5.9.3))
buraha:
specifier: 0.0.1
version: 0.0.1
@@ -1165,6 +1096,9 @@ importers:
frontend-shared:
specifier: workspace:*
version: link:../frontend-shared
+ i18n:
+ specifier: workspace:*
+ version: link:../i18n
icons-subsetter:
specifier: workspace:*
version: link:../icons-subsetter
@@ -1184,32 +1118,23 @@ importers:
specifier: 4.53.3
version: 4.53.3
sass:
- specifier: 1.94.1
- version: 1.94.1
+ specifier: 1.95.1
+ version: 1.95.1
shiki:
- specifier: 3.15.0
- version: 3.15.0
+ specifier: 3.19.0
+ version: 3.19.0
tinycolor2:
specifier: 1.6.0
version: 1.6.0
- tsc-alias:
- specifier: 1.8.16
- version: 1.8.16
- tsconfig-paths:
- specifier: 4.2.0
- version: 4.2.0
- typescript:
- specifier: 5.9.3
- version: 5.9.3
uuid:
specifier: 13.0.0
version: 13.0.0
vite:
- specifier: 7.2.2
- version: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ specifier: 7.2.7
+ version: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
vue:
- specifier: 3.5.24
- version: 3.5.24(typescript@5.9.3)
+ specifier: 3.5.25
+ version: 3.5.25(typescript@5.9.3)
devDependencies:
'@misskey-dev/summaly':
specifier: 5.2.5
@@ -1219,7 +1144,7 @@ importers:
version: 3.35.0
'@testing-library/vue':
specifier: 8.1.0
- version: 8.1.0(@vue/compiler-sfc@3.5.24)(vue@3.5.24(typescript@5.9.3))
+ version: 8.1.0(@vue/compiler-sfc@3.5.25)(vue@3.5.25(typescript@5.9.3))
'@types/estree':
specifier: 1.0.8
version: 1.0.8
@@ -1227,8 +1152,8 @@ importers:
specifier: 4.0.10
version: 4.0.10
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@types/punycode.js':
specifier: npm:@types/punycode@2.1.4
version: '@types/punycode@2.1.4'
@@ -1239,17 +1164,17 @@ importers:
specifier: 8.18.1
version: 8.18.1
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
'@vitest/coverage-v8':
- specifier: 3.2.4
- version: 3.2.4(vitest@4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ specifier: 4.0.15
+ version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
'@vue/runtime-core':
- specifier: 3.5.24
- version: 3.5.24
+ specifier: 3.5.25
+ version: 3.5.25
acorn:
specifier: 8.15.0
version: 8.15.0
@@ -1258,16 +1183,13 @@ importers:
version: 10.1.0
eslint-plugin-import:
specifier: 2.32.0
- version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
+ version: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
eslint-plugin-vue:
- specifier: 10.5.1
- version: 10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1))
- fast-glob:
- specifier: 3.3.3
- version: 3.3.3
+ specifier: 10.6.2
+ version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1))
happy-dom:
- specifier: 20.0.10
- version: 20.0.10
+ specifier: 20.0.11
+ version: 20.0.11
intersection-observer:
specifier: 0.12.2
version: 0.12.2
@@ -1275,57 +1197,63 @@ importers:
specifier: 4.0.8
version: 4.0.8
msw:
- specifier: 2.12.2
- version: 2.12.2(@types/node@24.10.1)(typescript@5.9.3)
+ specifier: 2.12.4
+ version: 2.12.4(@types/node@24.10.2)(typescript@5.9.3)
nodemon:
specifier: 3.1.11
version: 3.1.11
prettier:
- specifier: 3.6.2
- version: 3.6.2
+ specifier: 3.7.4
+ version: 3.7.4
start-server-and-test:
- specifier: 2.1.2
- version: 2.1.2
+ specifier: 2.1.3
+ version: 2.1.3
tsx:
- specifier: 4.20.6
- version: 4.20.6
+ specifier: 4.21.0
+ version: 4.21.0
+ typescript:
+ specifier: 5.9.3
+ version: 5.9.3
vite-plugin-turbosnap:
specifier: 1.0.3
version: 1.0.3
vue-component-type-helpers:
- specifier: 3.1.4
- version: 3.1.4
+ specifier: 3.1.8
+ version: 3.1.8
vue-eslint-parser:
specifier: 10.2.0
version: 10.2.0(eslint@9.39.1)
vue-tsc:
- specifier: 3.1.4
- version: 3.1.4(typescript@5.9.3)
+ specifier: 3.1.8
+ version: 3.1.8(typescript@5.9.3)
packages/frontend-shared:
dependencies:
+ i18n:
+ specifier: workspace:*
+ version: link:../i18n
misskey-js:
specifier: workspace:*
version: link:../misskey-js
vue:
- specifier: 3.5.24
- version: 3.5.24(typescript@5.9.3)
+ specifier: 3.5.25
+ version: 3.5.25(typescript@5.9.3)
devDependencies:
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
esbuild:
- specifier: 0.27.0
- version: 0.27.0
+ specifier: 0.27.1
+ version: 0.27.1
eslint-plugin-vue:
- specifier: 10.5.1
- version: 10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1))
+ specifier: 10.6.2
+ version: 10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1))
nodemon:
specifier: 3.1.11
version: 3.1.11
@@ -1336,6 +1264,43 @@ importers:
specifier: 10.2.0
version: 10.2.0(eslint@9.39.1)
+ packages/i18n:
+ dependencies:
+ js-yaml:
+ specifier: 4.1.1
+ version: 4.1.1
+ devDependencies:
+ '@types/js-yaml':
+ specifier: 4.0.9
+ version: 4.0.9
+ '@types/node':
+ specifier: 24.10.2
+ version: 24.10.2
+ '@typescript-eslint/eslint-plugin':
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/parser':
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
+ chokidar:
+ specifier: 5.0.0
+ version: 5.0.0
+ esbuild:
+ specifier: 0.27.1
+ version: 0.27.1
+ execa:
+ specifier: 9.6.1
+ version: 9.6.1
+ nodemon:
+ specifier: 3.1.11
+ version: 3.1.11
+ tsx:
+ specifier: 4.21.0
+ version: 4.21.0
+ typescript:
+ specifier: 5.9.3
+ version: 5.9.3
+
packages/icons-subsetter:
dependencies:
'@tabler/icons-webfont':
@@ -1344,12 +1309,9 @@ importers:
harfbuzzjs:
specifier: 0.4.13
version: 0.4.13
- tiny-glob:
- specifier: 0.2.9
- version: 0.2.9
tsx:
- specifier: 4.20.6
- version: 4.20.6
+ specifier: 4.21.0
+ version: 4.21.0
typescript:
specifier: 5.9.3
version: 5.9.3
@@ -1358,17 +1320,17 @@ importers:
version: 2.0.1
devDependencies:
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@types/wawoff2':
specifier: 1.0.2
version: 1.0.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
packages/misskey-bubble-game:
dependencies:
@@ -1386,26 +1348,23 @@ importers:
specifier: 0.20.2
version: 0.20.2
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@types/seedrandom':
specifier: 3.0.8
version: 3.0.8
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
esbuild:
- specifier: 0.27.0
- version: 0.27.0
+ specifier: 0.27.1
+ version: 0.27.1
execa:
- specifier: 9.6.0
- version: 9.6.0
- glob:
- specifier: 11.1.0
- version: 11.1.0
+ specifier: 9.6.1
+ version: 9.6.1
nodemon:
specifier: 3.1.11
version: 3.1.11
@@ -1426,29 +1385,26 @@ importers:
version: 4.4.0
devDependencies:
'@microsoft/api-extractor':
- specifier: 7.55.0
- version: 7.55.0(@types/node@24.10.1)
+ specifier: 7.55.2
+ version: 7.55.2(@types/node@24.10.2)
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
'@vitest/coverage-v8':
- specifier: 4.0.10
- version: 4.0.10(vitest@4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ specifier: 4.0.15
+ version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
esbuild:
- specifier: 0.27.0
- version: 0.27.0
+ specifier: 0.27.1
+ version: 0.27.1
execa:
- specifier: 9.6.0
- version: 9.6.0
- glob:
- specifier: 13.0.0
- version: 13.0.0
+ specifier: 9.6.1
+ version: 9.6.1
ncp:
specifier: 2.0.0
version: 2.0.0
@@ -1462,11 +1418,11 @@ importers:
specifier: 5.9.3
version: 5.9.3
vitest:
- specifier: 4.0.10
- version: 4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ specifier: 4.0.15
+ version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
vitest-websocket-mock:
specifier: 0.5.0
- version: 0.5.0(vitest@4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ version: 0.5.0(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
packages/misskey-js/generator:
devDependencies:
@@ -1474,14 +1430,14 @@ importers:
specifier: 5.2.1
version: 5.2.1(openapi-types@12.1.3)
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
eslint:
specifier: 9.39.1
version: 9.39.1
@@ -1495,8 +1451,8 @@ importers:
specifier: 2.1.0
version: 2.1.0
tsx:
- specifier: 4.20.6
- version: 4.20.6
+ specifier: 4.21.0
+ version: 4.21.0
typescript:
specifier: 5.9.3
version: 5.9.3
@@ -1508,23 +1464,20 @@ importers:
version: 1.2.2
devDependencies:
'@types/node':
- specifier: 24.10.1
- version: 24.10.1
+ specifier: 24.10.2
+ version: 24.10.2
'@typescript-eslint/eslint-plugin':
- specifier: 8.47.0
- version: 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
esbuild:
- specifier: 0.27.0
- version: 0.27.0
+ specifier: 0.27.1
+ version: 0.27.1
execa:
- specifier: 9.6.0
- version: 9.6.0
- glob:
- specifier: 11.1.0
- version: 11.1.0
+ specifier: 9.6.1
+ version: 9.6.1
nodemon:
specifier: 3.1.11
version: 3.1.11
@@ -1535,8 +1488,11 @@ importers:
packages/sw:
dependencies:
esbuild:
- specifier: 0.27.0
- version: 0.27.0
+ specifier: 0.27.1
+ version: 0.27.1
+ i18n:
+ specifier: workspace:*
+ version: link:../i18n
idb-keyval:
specifier: 6.2.2
version: 6.2.2
@@ -1545,14 +1501,14 @@ importers:
version: link:../misskey-js
devDependencies:
'@typescript-eslint/parser':
- specifier: 8.47.0
- version: 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ specifier: 8.49.0
+ version: 8.49.0(eslint@9.39.1)(typescript@5.9.3)
'@typescript/lib-webworker':
specifier: npm:@types/serviceworker@0.0.74
version: '@types/serviceworker@0.0.74'
eslint-plugin-import:
specifier: 2.32.0
- version: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
+ version: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
nodemon:
specifier: 3.1.11
version: 3.1.11
@@ -1568,10 +1524,6 @@ packages:
'@adobe/css-tools@4.4.4':
resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==}
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
'@analytics/cookie-utils@0.2.14':
resolution: {integrity: sha512-x51x2cLqvP5Fb1ydgNvTCX+SVv0ALK/yTNwp/53++yk4kLhxb850krWtQ4aASN0612oXrIGotwfmdJIttnLiPQ==}
@@ -1608,11 +1560,8 @@ packages:
'@apm-js-collab/tracing-hooks@0.3.1':
resolution: {integrity: sha512-Vu1CbmPURlN5fTboVuKMoJjbO5qcq9fA5YXpskx3dXe/zTBvjODFoerw+69rVBlRLrJpwPqSDqEuJDEKIrTldw==}
- '@asamuzakjp/css-color@3.2.0':
- resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==}
-
- '@asamuzakjp/css-color@4.1.0':
- resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==}
+ '@asamuzakjp/css-color@4.0.5':
+ resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==}
'@asamuzakjp/dom-selector@6.7.4':
resolution: {integrity: sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==}
@@ -1643,59 +1592,99 @@ packages:
'@aws-crypto/util@5.2.0':
resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==}
- '@aws-sdk/client-s3@3.936.0':
- resolution: {integrity: sha512-dnzZAkJDa9tdCxhqdnh37hdizJkernoFn0rufWahziOEmf0Yv9+mLeqR4qDmsAGUMuD1jFCmPR97FaCoh10mZg==}
+ '@aws-sdk/client-s3@3.948.0':
+ resolution: {integrity: sha512-uvEjds8aYA9SzhBS8RKDtsDUhNV9VhqKiHTcmvhM7gJO92q0WTn8/QeFTdNyLc6RxpiDyz+uBxS7PcdNiZzqfA==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/client-ses@3.936.0':
- resolution: {integrity: sha512-2toHYwRkcYGasPHYGwOwaIAa2Api/uFhmL3px0Tyt4bne2ilqhSwq+6a/0UVMd8JYwWaLMJolTbWKFt2jUlmGg==}
+ '@aws-sdk/client-sesv2@3.938.0':
+ resolution: {integrity: sha512-GW07FQuZkW5ASm0WP+CWLetcortqup9l3+p1OlvuUN3rLBIzlWRqYd5Nf2GTS72sPbaNowE3dYJXCtwu1IlLuQ==}
engines: {node: '>=18.0.0'}
'@aws-sdk/client-sso@3.936.0':
resolution: {integrity: sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/client-sso@3.948.0':
+ resolution: {integrity: sha512-iWjchXy8bIAVBUsKnbfKYXRwhLgRg3EqCQ5FTr3JbR+QR75rZm4ZOYXlvHGztVTmtAZ+PQVA1Y4zO7v7N87C0A==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/core@3.936.0':
resolution: {integrity: sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/core@3.947.0':
+ resolution: {integrity: sha512-Khq4zHhuAkvCFuFbgcy3GrZTzfSX7ZIjIcW1zRDxXRLZKRtuhnZdonqTUfaWi5K42/4OmxkYNpsO7X7trQOeHw==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/credential-provider-env@3.936.0':
resolution: {integrity: sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/credential-provider-env@3.947.0':
+ resolution: {integrity: sha512-VR2V6dRELmzwAsCpK4GqxUi6UW5WNhAXS9F9AzWi5jvijwJo3nH92YNJUP4quMpgFZxJHEWyXLWgPjh9u0zYOA==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/credential-provider-http@3.936.0':
resolution: {integrity: sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/credential-provider-http@3.947.0':
+ resolution: {integrity: sha512-inF09lh9SlHj63Vmr5d+LmwPXZc2IbK8lAruhOr3KLsZAIHEgHgGPXWDC2ukTEMzg0pkexQ6FOhXXad6klK4RA==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/credential-provider-ini@3.936.0':
resolution: {integrity: sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/credential-provider-ini@3.948.0':
+ resolution: {integrity: sha512-Cl//Qh88e8HBL7yYkJNpF5eq76IO6rq8GsatKcfVBm7RFVxCqYEPSSBtkHdbtNwQdRQqAMXc6E/lEB/CZUDxnA==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/credential-provider-login@3.936.0':
resolution: {integrity: sha512-8DVrdRqPyUU66gfV7VZNToh56ZuO5D6agWrkLQE/xbLJOm2RbeRgh6buz7CqV8ipRd6m+zCl9mM4F3osQLZn8Q==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/credential-provider-login@3.948.0':
+ resolution: {integrity: sha512-gcKO2b6eeTuZGp3Vvgr/9OxajMrD3W+FZ2FCyJox363ZgMoYJsyNid1vuZrEuAGkx0jvveLXfwiVS0UXyPkgtw==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/credential-provider-node@3.936.0':
resolution: {integrity: sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/credential-provider-node@3.948.0':
+ resolution: {integrity: sha512-ep5vRLnrRdcsP17Ef31sNN4g8Nqk/4JBydcUJuFRbGuyQtrZZrVT81UeH2xhz6d0BK6ejafDB9+ZpBjXuWT5/Q==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/credential-provider-process@3.936.0':
resolution: {integrity: sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/credential-provider-process@3.947.0':
+ resolution: {integrity: sha512-WpanFbHe08SP1hAJNeDdBDVz9SGgMu/gc0XJ9u3uNpW99nKZjDpvPRAdW7WLA4K6essMjxWkguIGNOpij6Do2Q==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/credential-provider-sso@3.936.0':
resolution: {integrity: sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/credential-provider-sso@3.948.0':
+ resolution: {integrity: sha512-gqLhX1L+zb/ZDnnYbILQqJ46j735StfWV5PbDjxRzBKS7GzsiYoaf6MyHseEopmWrez5zl5l6aWzig7UpzSeQQ==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/credential-provider-web-identity@3.936.0':
resolution: {integrity: sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/lib-storage@3.936.0':
- resolution: {integrity: sha512-56X4b/w8omhowteTHu5+lQy/c6s3N+EFmdcJisanUZtorr6l4NFrqCXGBTwo8dIEwzJ7gdDRoyMFH0iTBeerPQ==}
+ '@aws-sdk/credential-provider-web-identity@3.948.0':
+ resolution: {integrity: sha512-MvYQlXVoJyfF3/SmnNzOVEtANRAiJIObEUYYyjTqKZTmcRIVVky0tPuG26XnB8LmTYgtESwJIZJj/Eyyc9WURQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@aws-sdk/lib-storage@3.948.0':
+ resolution: {integrity: sha512-dY7wISfWgEqSHGps0DkQiDjHhCqR7bc0mMrBHZ810/j12uzhTakAcb9FlF7mFWkX6zEvz2kjxF4r91lBwNqt5w==}
engines: {node: '>=18.0.0'}
peerDependencies:
- '@aws-sdk/client-s3': ^3.936.0
+ '@aws-sdk/client-s3': ^3.948.0
'@aws-sdk/middleware-bucket-endpoint@3.936.0':
resolution: {integrity: sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==}
@@ -1705,8 +1694,8 @@ packages:
resolution: {integrity: sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==}
engines: {node: '>=18.0.0'}
- '@aws-sdk/middleware-flexible-checksums@3.936.0':
- resolution: {integrity: sha512-l3GG6CrSQtMCM6fWY7foV3JQv0WJWT+3G6PSP3Ceb/KEE/5Lz5PrYFXTBf+bVoYL1b0bGjGajcgAXpstBmtHtQ==}
+ '@aws-sdk/middleware-flexible-checksums@3.947.0':
+ resolution: {integrity: sha512-kXXxS2raNESNO+zR0L4YInVjhcGGNI2Mx0AE1ThRhDkAt2se3a+rGf9equ9YvOqA1m8Jl/GSI8cXYvSxXmS9Ag==}
engines: {node: '>=18.0.0'}
'@aws-sdk/middleware-host-header@3.936.0':
@@ -1725,10 +1714,18 @@ packages:
resolution: {integrity: sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/middleware-recursion-detection@3.948.0':
+ resolution: {integrity: sha512-Qa8Zj+EAqA0VlAVvxpRnpBpIWJI9KUwaioY1vkeNVwXPlNaz9y9zCKVM9iU9OZ5HXpoUg6TnhATAHXHAE8+QsQ==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/middleware-sdk-s3@3.936.0':
resolution: {integrity: sha512-UQs/pVq4cOygsnKON0pOdSKIWkfgY0dzq4h+fR+xHi/Ng3XzxPJhWeAE6tDsKrcyQc1X8UdSbS70XkfGYr5hng==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/middleware-sdk-s3@3.947.0':
+ resolution: {integrity: sha512-DS2tm5YBKhPW2PthrRBDr6eufChbwXe0NjtTZcYDfUCXf0OR+W6cIqyKguwHMJ+IyYdey30AfVw9/Lb5KB8U8A==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/middleware-ssec@3.936.0':
resolution: {integrity: sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==}
engines: {node: '>=18.0.0'}
@@ -1737,10 +1734,18 @@ packages:
resolution: {integrity: sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/middleware-user-agent@3.947.0':
+ resolution: {integrity: sha512-7rpKV8YNgCP2R4F9RjWZFcD2R+SO/0R4VHIbY9iZJdH2MzzJ8ZG7h8dZ2m8QkQd1fjx4wrFJGGPJUTYXPV3baA==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/nested-clients@3.936.0':
resolution: {integrity: sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/nested-clients@3.948.0':
+ resolution: {integrity: sha512-zcbJfBsB6h254o3NuoEkf0+UY1GpE9ioiQdENWv7odo69s8iaGBEQ4BDpsIMqcuiiUXw1uKIVNxCB1gUGYz8lw==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/region-config-resolver@3.936.0':
resolution: {integrity: sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==}
engines: {node: '>=18.0.0'}
@@ -1749,10 +1754,18 @@ packages:
resolution: {integrity: sha512-8qS0GFUqkmwO7JZ0P8tdluBmt1UTfYUah8qJXGzNh9n1Pcb0AIeT117cCSiCUtwk+gDbJvd4hhRIhJCNr5wgjg==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/signature-v4-multi-region@3.947.0':
+ resolution: {integrity: sha512-UaYmzoxf9q3mabIA2hc4T6x5YSFUG2BpNjAZ207EA1bnQMiK+d6vZvb83t7dIWL/U1de1sGV19c1C81Jf14rrA==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/token-providers@3.936.0':
resolution: {integrity: sha512-vvw8+VXk0I+IsoxZw0mX9TMJawUJvEsg3EF7zcCSetwhNPAU8Xmlhv7E/sN/FgSmm7b7DsqKoW6rVtQiCs1PWQ==}
engines: {node: '>=18.0.0'}
+ '@aws-sdk/token-providers@3.948.0':
+ resolution: {integrity: sha512-V487/kM4Teq5dcr1t5K6eoUKuqlGr9FRWL3MIMukMERJXHZvio6kox60FZ/YtciRHRI75u14YUqm2Dzddcu3+A==}
+ engines: {node: '>=18.0.0'}
+
'@aws-sdk/types@3.936.0':
resolution: {integrity: sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==}
engines: {node: '>=18.0.0'}
@@ -1781,12 +1794,21 @@ packages:
aws-crt:
optional: true
+ '@aws-sdk/util-user-agent-node@3.947.0':
+ resolution: {integrity: sha512-+vhHoDrdbb+zerV4noQk1DHaUMNzWFWPpPYjVTwW2186k5BEJIecAMChYkghRrBVJ3KPWP1+JnZwOd72F3d4rQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+
'@aws-sdk/xml-builder@3.930.0':
resolution: {integrity: sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==}
engines: {node: '>=18.0.0'}
- '@aws/lambda-invoke-store@0.2.0':
- resolution: {integrity: sha512-D1jAmAZQYMoPiacfgNf7AWhg3DFN3Wq/vQv3WINt9znwjzHp2x+WzdJFxxj7xZL7V1U79As6G8f7PorMYWBKsQ==}
+ '@aws/lambda-invoke-store@0.2.2':
+ resolution: {integrity: sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==}
engines: {node: '>=18.0.0'}
'@babel/code-frame@7.27.1':
@@ -2043,9 +2065,9 @@ packages:
'@cypress/xvfb@1.2.4':
resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==}
- '@digitalbazaar/http-client@3.4.1':
- resolution: {integrity: sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==}
- engines: {node: '>=14.0'}
+ '@digitalbazaar/http-client@4.2.0':
+ resolution: {integrity: sha512-OGju/GYp0V72qlZ/Pd4jGEwqBwT/Za/tw+Z3AC7lgMheGqsbhTZrtc5iLz9z59G/Q53QyE2fnjHV8N9wjBpiWA==}
+ engines: {node: '>=18.0'}
'@discordapp/twemoji@16.0.1':
resolution: {integrity: sha512-figLiBWzjS5cyrAjLaGjM8AAaowO3qvK8rg5bA2dElB4qsaPMvBVlFDMO2d3x+nC1igt7kgWH4dvNmvvUHUF8w==}
@@ -2062,8 +2084,8 @@ packages:
cpu: [ppc64]
os: [aix]
- '@esbuild/aix-ppc64@0.27.0':
- resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==}
+ '@esbuild/aix-ppc64@0.27.1':
+ resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
@@ -2074,8 +2096,8 @@ packages:
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.27.0':
- resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==}
+ '@esbuild/android-arm64@0.27.1':
+ resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
@@ -2086,8 +2108,8 @@ packages:
cpu: [arm]
os: [android]
- '@esbuild/android-arm@0.27.0':
- resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==}
+ '@esbuild/android-arm@0.27.1':
+ resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
@@ -2098,8 +2120,8 @@ packages:
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.27.0':
- resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==}
+ '@esbuild/android-x64@0.27.1':
+ resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
@@ -2110,8 +2132,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-arm64@0.27.0':
- resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==}
+ '@esbuild/darwin-arm64@0.27.1':
+ resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
@@ -2122,8 +2144,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@esbuild/darwin-x64@0.27.0':
- resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==}
+ '@esbuild/darwin-x64@0.27.1':
+ resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
@@ -2134,8 +2156,8 @@ packages:
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.27.0':
- resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==}
+ '@esbuild/freebsd-arm64@0.27.1':
+ resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
@@ -2146,8 +2168,8 @@ packages:
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.27.0':
- resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==}
+ '@esbuild/freebsd-x64@0.27.1':
+ resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
@@ -2158,8 +2180,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.27.0':
- resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==}
+ '@esbuild/linux-arm64@0.27.1':
+ resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
@@ -2170,8 +2192,8 @@ packages:
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.27.0':
- resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==}
+ '@esbuild/linux-arm@0.27.1':
+ resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
@@ -2182,8 +2204,8 @@ packages:
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.27.0':
- resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==}
+ '@esbuild/linux-ia32@0.27.1':
+ resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
@@ -2194,8 +2216,8 @@ packages:
cpu: [loong64]
os: [linux]
- '@esbuild/linux-loong64@0.27.0':
- resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==}
+ '@esbuild/linux-loong64@0.27.1':
+ resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
@@ -2206,8 +2228,8 @@ packages:
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-mips64el@0.27.0':
- resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==}
+ '@esbuild/linux-mips64el@0.27.1':
+ resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
@@ -2218,8 +2240,8 @@ packages:
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.27.0':
- resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==}
+ '@esbuild/linux-ppc64@0.27.1':
+ resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
@@ -2230,8 +2252,8 @@ packages:
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-riscv64@0.27.0':
- resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==}
+ '@esbuild/linux-riscv64@0.27.1':
+ resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
@@ -2242,8 +2264,8 @@ packages:
cpu: [s390x]
os: [linux]
- '@esbuild/linux-s390x@0.27.0':
- resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==}
+ '@esbuild/linux-s390x@0.27.1':
+ resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
@@ -2254,8 +2276,8 @@ packages:
cpu: [x64]
os: [linux]
- '@esbuild/linux-x64@0.27.0':
- resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==}
+ '@esbuild/linux-x64@0.27.1':
+ resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
@@ -2266,8 +2288,8 @@ packages:
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-arm64@0.27.0':
- resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==}
+ '@esbuild/netbsd-arm64@0.27.1':
+ resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
@@ -2278,8 +2300,8 @@ packages:
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.27.0':
- resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==}
+ '@esbuild/netbsd-x64@0.27.1':
+ resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
@@ -2290,8 +2312,8 @@ packages:
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-arm64@0.27.0':
- resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==}
+ '@esbuild/openbsd-arm64@0.27.1':
+ resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
@@ -2302,8 +2324,8 @@ packages:
cpu: [x64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.27.0':
- resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==}
+ '@esbuild/openbsd-x64@0.27.1':
+ resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
@@ -2314,8 +2336,8 @@ packages:
cpu: [arm64]
os: [openharmony]
- '@esbuild/openharmony-arm64@0.27.0':
- resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==}
+ '@esbuild/openharmony-arm64@0.27.1':
+ resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
@@ -2326,8 +2348,8 @@ packages:
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.27.0':
- resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==}
+ '@esbuild/sunos-x64@0.27.1':
+ resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
@@ -2338,8 +2360,8 @@ packages:
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.27.0':
- resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==}
+ '@esbuild/win32-arm64@0.27.1':
+ resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
@@ -2350,8 +2372,8 @@ packages:
cpu: [ia32]
os: [win32]
- '@esbuild/win32-ia32@0.27.0':
- resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==}
+ '@esbuild/win32-ia32@0.27.1':
+ resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
@@ -2362,8 +2384,8 @@ packages:
cpu: [x64]
os: [win32]
- '@esbuild/win32-x64@0.27.0':
- resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==}
+ '@esbuild/win32-x64@0.27.1':
+ resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -2422,24 +2444,17 @@ packages:
'@fastify/accept-negotiator@2.0.1':
resolution: {integrity: sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==}
- '@fastify/accepts@5.0.3':
- resolution: {integrity: sha512-JQE0PVW7V5aIvWNQvBvlz3K92Q4OnDcC8ERcJnFd9a11/IVi/eV6SCutOUh9K2CAeQUMkJJyRog3Gltn7uAF6g==}
+ '@fastify/accepts@5.0.4':
+ resolution: {integrity: sha512-XKtvD77ZLQ/4G5r1WhPua5+rTctt16DF4XUMBQuP8KM/Ic431GhfqjJoYvwS4aDaUhoRTiU9DGFaMZ3TRM6ctg==}
'@fastify/ajv-compiler@4.0.5':
resolution: {integrity: sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==}
- '@fastify/busboy@2.1.1':
- resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
- engines: {node: '>=14'}
-
'@fastify/busboy@3.2.0':
resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==}
- '@fastify/cookie@11.0.2':
- resolution: {integrity: sha512-GWdwdGlgJxyvNv+QcKiGNevSspMQXncjMZ1J8IvuDQk0jvkzgWWZFNC2En3s+nHndZBGV8IbLwOI/sxCZw/mzA==}
-
- '@fastify/cors@10.1.0':
- resolution: {integrity: sha512-MZyBCBJtII60CU9Xme/iE4aEy8G7QpzGR8zkdXZkDFt7ElEMachbE61tfhAG/bvSaULlqlf0huMT12T7iqEmdQ==}
+ '@fastify/cors@11.2.0':
+ resolution: {integrity: sha512-LbLHBuSAdGdSFZYTLVA3+Ch2t+sA6nq3Ejc6XLAKiQ6ViS2qFnvicpj0htsx03FyYeLs04HfRNBsz/a8SvbcUw==}
'@fastify/deepmerge@3.1.0':
resolution: {integrity: sha512-lCVONBQINyNhM6LLezB6+2afusgEYR4G8xenMsfe+AT+iZ7Ca6upM5Ha8UkZuYSnuMw3GWl/BiPXnLMi/gSxuQ==}
@@ -2456,8 +2471,8 @@ packages:
'@fastify/forwarded@3.0.1':
resolution: {integrity: sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==}
- '@fastify/http-proxy@10.0.2':
- resolution: {integrity: sha512-3IlTjOu9xtX5UPd/ZxY3ebYb6caINuBlr7iyVxYmh3zZLV0K5ted8yfU9UCNXVNs33RwbXD2RhDucc3z5BNgEA==}
+ '@fastify/http-proxy@11.4.1':
+ resolution: {integrity: sha512-sMYEIB0c7qCYutpZyS12c8xnVgmEMSUUVU2XjcNq2JzHf6Hta1BWcpnG5FXxR3WEm48uZNCi0MxnIYtwjwd21Q==}
'@fastify/merge-json-schemas@0.2.1':
resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==}
@@ -2468,8 +2483,8 @@ packages:
'@fastify/proxy-addr@5.1.0':
resolution: {integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==}
- '@fastify/reply-from@11.0.2':
- resolution: {integrity: sha512-VcHhe01PsHuVX2eVrkoskCs+pwNPgVfOOpwQJnSo3AwIKtISm0VCFB7bycQjHfxAuPYgkrI6ZvYoovdHx4sVMA==}
+ '@fastify/reply-from@12.5.0':
+ resolution: {integrity: sha512-m7mTGjgtnpnZBk4I8r6eFJY8WB4kyvXJo2nAf5PBm5f3mj3P7G6H2D7mhmF25os/n6EGMWVyw/bpTUehvy0i8g==}
'@fastify/send@4.1.0':
resolution: {integrity: sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==}
@@ -2477,8 +2492,8 @@ packages:
'@fastify/static@8.3.0':
resolution: {integrity: sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==}
- '@fastify/view@10.0.2':
- resolution: {integrity: sha512-tGjXFyDUMj5a+E8BBrQ2wpsVnpOfMq3cqy4WD8pnjWPE/HGNItBASUPoPUcX/QjPhxfuZZTYv2XdCmKXdcMZPw==}
+ '@file-type/xml@0.4.4':
+ resolution: {integrity: sha512-NhCyXoHlVZ8TqM476hyzwGJ24+D5IPSaZhmrPj7qXnEVb3q6jrFzA3mM9TBpknKSI9EuQeGTKRg2DXGUwvBBoQ==}
'@github/webauthn-json@2.1.1':
resolution: {integrity: sha512-XrftRn4z75SnaJOmZQbt7Mk+IIjqVHw+glDGOxuHwXkZBZh/MBoRS7MHjSZMDaLhT4RjN2VqiEU7EOYleuJWSQ==}
@@ -2835,6 +2850,17 @@ packages:
'@keyv/serialize@1.1.1':
resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
+ '@kitajs/html@4.2.11':
+ resolution: {integrity: sha512-gOe+zzCZKN2fPT1FUK32mHsr21ILcAOUUux/yDqQthInW8egN8RuxVp+zP3KhwWETVACkurBiKV9RWuNw+ceiw==}
+ engines: {node: '>=12'}
+
+ '@kitajs/ts-html-plugin@4.1.3':
+ resolution: {integrity: sha512-NlYrID5yMxfRKiO1eiiSC4MWveKe0ffoCJOZm4idNOqwimmLXr0g1NmvCcquOU2XLRrgzynxZqw6rhwR5CY5Nw==}
+ hasBin: true
+ peerDependencies:
+ '@kitajs/html': ^4.2.10
+ typescript: ^5.6.2
+
'@kurkle/color@0.3.4':
resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==}
@@ -2853,11 +2879,11 @@ packages:
resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==}
hasBin: true
- '@mcaptcha/core-glue@0.1.0-alpha-5':
- resolution: {integrity: sha512-16qWm5O5X0Y9LXULULaAks8Vf9FNlUUBcR5KDt49aWhFhG5++JzxNmCwQM9EJSHNU7y0U+FdyAWcGmjfKlkRLA==}
+ '@mcaptcha/core-glue@0.1.0-rc1':
+ resolution: {integrity: sha512-P4SgUioJDR38QpnP9sPY72NyaYex8MXD6RbzrfKra+ngamT26XjqVZEHBiZU2RT7u0SsWhuko4N1ntNOghsgpg==}
- '@mcaptcha/vanilla-glue@0.1.0-alpha-3':
- resolution: {integrity: sha512-GT6TJBgmViGXcXiT5VOr+h/6iOnThSlZuCoOWncubyTZU9R3cgU5vWPkF7G6Ob6ee2CBe3yqBxxk24CFVGTVXw==}
+ '@mcaptcha/vanilla-glue@0.1.0-rc2':
+ resolution: {integrity: sha512-LDjn9lrKioJ3zwaQOfql7PXsnxCAHg7b1rPw7G0OxpvVE7xLB/a40SHfIIiocce2VS9TPI4MbcKm5pcuy8fU5g==}
'@mdx-js/react@3.1.1':
resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==}
@@ -2865,11 +2891,11 @@ packages:
'@types/react': '>=16'
react: '>=16'
- '@microsoft/api-extractor-model@7.32.0':
- resolution: {integrity: sha512-QIVJSreb8fGGJy1Qx0yzGVXxvHJN1WXgkFNHFheVv1iBJNqgvp+xeT3ienJmRwXmPPc5Es/cxBrXtKZJR3i7iw==}
+ '@microsoft/api-extractor-model@7.32.2':
+ resolution: {integrity: sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==}
- '@microsoft/api-extractor@7.55.0':
- resolution: {integrity: sha512-TYc5OtAK/9E3HGgd2bIfSjQDYIwPc0dysf9rPiwXZGsq916I6W2oww9bhm1OxPOeg6rMfOX3PoroGd7oCryYog==}
+ '@microsoft/api-extractor@7.55.2':
+ resolution: {integrity: sha512-1jlWO4qmgqYoVUcyh+oXYRztZde/pAi7cSVzBz/rc+S7CoVzDasy8QE13dx6sLG4VRo8SfkkLbFORR6tBw4uGQ==}
hasBin: true
'@microsoft/tsdoc-config@0.18.0':
@@ -2933,73 +2959,73 @@ packages:
resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==}
engines: {node: '>=18'}
- '@napi-rs/canvas-android-arm64@0.1.82':
- resolution: {integrity: sha512-bvZhN0iI54ouaQOrgJV96H2q7J3ZoufnHf4E1fUaERwW29Rz4rgicohnAg4venwBJZYjGl5Yl3CGmlAl1LZowQ==}
+ '@napi-rs/canvas-android-arm64@0.1.84':
+ resolution: {integrity: sha512-pdvuqvj3qtwVryqgpAGornJLV6Ezpk39V6wT4JCnRVGy8I3Tk1au8qOalFGrx/r0Ig87hWslysPpHBxVpBMIww==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
- '@napi-rs/canvas-darwin-arm64@0.1.82':
- resolution: {integrity: sha512-InuBHKCyuFqhNwNr4gpqazo5Xp6ltKflqOLiROn4hqAS8u21xAHyYCJRgHwd+a5NKmutFTaRWeUIT/vxWbU/iw==}
+ '@napi-rs/canvas-darwin-arm64@0.1.84':
+ resolution: {integrity: sha512-A8IND3Hnv0R6abc6qCcCaOCujTLMmGxtucMTZ5vbQUrEN/scxi378MyTLtyWg+MRr6bwQJ6v/orqMS9datIcww==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@napi-rs/canvas-darwin-x64@0.1.82':
- resolution: {integrity: sha512-aQGV5Ynn96onSXcuvYb2y7TRXD/t4CL2EGmnGqvLyeJX1JLSNisKQlWN/1bPDDXymZYSdUqbXehj5qzBlOx+RQ==}
+ '@napi-rs/canvas-darwin-x64@0.1.84':
+ resolution: {integrity: sha512-AUW45lJhYWwnA74LaNeqhvqYKK/2hNnBBBl03KRdqeCD4tKneUSrxUqIv8d22CBweOvrAASyKN3W87WO2zEr/A==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@napi-rs/canvas-linux-arm-gnueabihf@0.1.82':
- resolution: {integrity: sha512-YIUpmHWeHGGRhWitT1KJkgj/JPXPfc9ox8oUoyaGPxolLGPp5AxJkq8wIg8CdFGtutget968dtwmx71m8o3h5g==}
+ '@napi-rs/canvas-linux-arm-gnueabihf@0.1.84':
+ resolution: {integrity: sha512-8zs5ZqOrdgs4FioTxSBrkl/wHZB56bJNBqaIsfPL4ZkEQCinOkrFF7xIcXiHiKp93J3wUtbIzeVrhTIaWwqk+A==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
- '@napi-rs/canvas-linux-arm64-gnu@0.1.82':
- resolution: {integrity: sha512-AwLzwLBgmvk7kWeUgItOUor/QyG31xqtD26w1tLpf4yE0hiXTGp23yc669aawjB6FzgIkjh1NKaNS52B7/qEBQ==}
+ '@napi-rs/canvas-linux-arm64-gnu@0.1.84':
+ resolution: {integrity: sha512-i204vtowOglJUpbAFWU5mqsJgH0lVpNk/Ml4mQtB4Lndd86oF+Otr6Mr5KQnZHqYGhlSIKiU2SYnUbhO28zGQA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@napi-rs/canvas-linux-arm64-musl@0.1.82':
- resolution: {integrity: sha512-moZWuqepAwWBffdF4JDadt8TgBD02iMhG6I1FHZf8xO20AsIp9rB+p0B8Zma2h2vAF/YMjeFCDmW5un6+zZz9g==}
+ '@napi-rs/canvas-linux-arm64-musl@0.1.84':
+ resolution: {integrity: sha512-VyZq0EEw+OILnWk7G3ZgLLPaz1ERaPP++jLjeyLMbFOF+Tr4zHzWKiKDsEV/cT7btLPZbVoR3VX+T9/QubnURQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@napi-rs/canvas-linux-riscv64-gnu@0.1.82':
- resolution: {integrity: sha512-w9++2df2kG9eC9LWYIHIlMLuhIrKGQYfUxs97CwgxYjITeFakIRazI9LYWgVzEc98QZ9x9GQvlicFsrROV59MQ==}
+ '@napi-rs/canvas-linux-riscv64-gnu@0.1.84':
+ resolution: {integrity: sha512-PSMTh8DiThvLRsbtc/a065I/ceZk17EXAATv9uNvHgkgo7wdEfTh2C3aveNkBMGByVO3tvnvD5v/YFtZL07cIg==}
engines: {node: '>= 10'}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@napi-rs/canvas-linux-x64-gnu@0.1.82':
- resolution: {integrity: sha512-lZulOPwrRi6hEg/17CaqdwWEUfOlIJuhXxincx1aVzsVOCmyHf+xFq4i6liJl1P+x2v6Iz2Z/H5zHvXJCC7Bwg==}
+ '@napi-rs/canvas-linux-x64-gnu@0.1.84':
+ resolution: {integrity: sha512-N1GY3noO1oqgEo3rYQIwY44kfM11vA0lDbN0orTOHfCSUZTUyiYCY0nZ197QMahZBm1aR/vYgsWpV74MMMDuNA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@napi-rs/canvas-linux-x64-musl@0.1.82':
- resolution: {integrity: sha512-Be9Wf5RTv1w6GXlTph55K3PH3vsAh1Ax4T1FQY1UYM0QfD0yrwGdnJ8/fhqw7dEgMjd59zIbjJQC8C3msbGn5g==}
+ '@napi-rs/canvas-linux-x64-musl@0.1.84':
+ resolution: {integrity: sha512-vUZmua6ADqTWyHyei81aXIt9wp0yjeNwTH0KdhdeoBb6azHmFR8uKTukZMXfLCC3bnsW0t4lW7K78KNMknmtjg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@napi-rs/canvas-win32-x64-msvc@0.1.82':
- resolution: {integrity: sha512-LN/i8VrvxTDmEEK1c10z2cdOTkWT76LlTGtyZe5Kr1sqoSomKeExAjbilnu1+oee5lZUgS5yfZ2LNlVhCeARuw==}
+ '@napi-rs/canvas-win32-x64-msvc@0.1.84':
+ resolution: {integrity: sha512-YSs8ncurc1xzegUMNnQUTYrdrAuaXdPMOa+iYYyAxydOtg0ppV386hyYMsy00Yip1NlTgLCseRG4sHSnjQx6og==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
- '@napi-rs/canvas@0.1.82':
- resolution: {integrity: sha512-FGjyUBoF0sl1EenSiE4UV2WYu76q6F9GSYedq5EiOCOyGYoQ/Owulcv6rd7v/tWOpljDDtefXXIaOCJrVKem4w==}
+ '@napi-rs/canvas@0.1.84':
+ resolution: {integrity: sha512-88FTNFs4uuiFKP0tUrPsEXhpe9dg7za9ILZJE08pGdUveMIDeana1zwfVkqRHJDPJFAmGY3dXmJ99dzsy57YnA==}
engines: {node: '>= 10'}
'@napi-rs/nice-android-arm-eabi@1.1.1':
@@ -3146,11 +3172,11 @@ packages:
'@nestjs/websockets':
optional: true
- '@nestjs/platform-express@10.4.20':
- resolution: {integrity: sha512-rh97mX3rimyf4xLMLHuTOBKe6UD8LOJ14VlJ1F/PTd6C6ZK9Ak6EHuJvdaGcSFQhd3ZMBh3I6CuujKGW9pNdIg==}
+ '@nestjs/platform-express@11.1.9':
+ resolution: {integrity: sha512-GVd3+0lO0mJq2m1kl9hDDnVrX3Nd4oH3oDfklz0pZEVEVS0KVSp63ufHq2Lu9cyPdSBuelJr9iPm2QQ1yX+Kmw==}
peerDependencies:
- '@nestjs/common': ^10.0.0
- '@nestjs/core': ^10.0.0
+ '@nestjs/common': ^11.0.0
+ '@nestjs/core': ^11.0.0
'@nestjs/testing@11.1.9':
resolution: {integrity: sha512-UFxerBDdb0RUNxQNj25pvkvNE7/vxKhXYWBt3QuwBFnYISzRIzhVlyIqLfoV5YI3zV0m0Nn4QAn1KM0zzwfEng==}
@@ -3206,14 +3232,10 @@ packages:
'@open-draft/until@2.1.0':
resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==}
- '@opentelemetry/api-logs@0.204.0':
- resolution: {integrity: sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw==}
+ '@opentelemetry/api-logs@0.208.0':
+ resolution: {integrity: sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==}
engines: {node: '>=8.0.0'}
- '@opentelemetry/api-logs@0.57.2':
- resolution: {integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==}
- engines: {node: '>=14'}
-
'@opentelemetry/api@1.9.0':
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
@@ -3224,162 +3246,150 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/core@2.1.0':
- resolution: {integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.10.0'
-
'@opentelemetry/core@2.2.0':
resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/instrumentation-amqplib@0.51.0':
- resolution: {integrity: sha512-XGmjYwjVRktD4agFnWBWQXo9SiYHKBxR6Ag3MLXwtLE4R99N3a08kGKM5SC1qOFKIELcQDGFEFT9ydXMH00Luw==}
+ '@opentelemetry/instrumentation-amqplib@0.55.0':
+ resolution: {integrity: sha512-5ULoU8p+tWcQw5PDYZn8rySptGSLZHNX/7srqo2TioPnAAcvTy6sQFQXsNPrAnyRRtYGMetXVyZUy5OaX1+IfA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-connect@0.48.0':
- resolution: {integrity: sha512-OMjc3SFL4pC16PeK+tDhwP7MRvDPalYCGSvGqUhX5rASkI2H0RuxZHOWElYeXkV0WP+70Gw6JHWac/2Zqwmhdw==}
+ '@opentelemetry/instrumentation-connect@0.52.0':
+ resolution: {integrity: sha512-GXPxfNB5szMbV3I9b7kNWSmQBoBzw7MT0ui6iU/p+NIzVx3a06Ri2cdQO7tG9EKb4aKSLmfX9Cw5cKxXqX6Ohg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-dataloader@0.22.0':
- resolution: {integrity: sha512-bXnTcwtngQsI1CvodFkTemrrRSQjAjZxqHVc+CJZTDnidT0T6wt3jkKhnsjU/Kkkc0lacr6VdRpCu2CUWa0OKw==}
+ '@opentelemetry/instrumentation-dataloader@0.26.0':
+ resolution: {integrity: sha512-P2BgnFfTOarZ5OKPmYfbXfDFjQ4P9WkQ1Jji7yH5/WwB6Wm/knynAoA1rxbjWcDlYupFkyT0M1j6XLzDzy0aCA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-express@0.53.0':
- resolution: {integrity: sha512-r/PBafQmFYRjuxLYEHJ3ze1iBnP2GDA1nXOSS6E02KnYNZAVjj6WcDA1MSthtdAUUK0XnotHvvWM8/qz7DMO5A==}
+ '@opentelemetry/instrumentation-express@0.57.0':
+ resolution: {integrity: sha512-HAdx/o58+8tSR5iW+ru4PHnEejyKrAy9fYFhlEI81o10nYxrGahnMAHWiSjhDC7UQSY3I4gjcPgSKQz4rm/asg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-fs@0.24.0':
- resolution: {integrity: sha512-HjIxJ6CBRD770KNVaTdMXIv29Sjz4C1kPCCK5x1Ujpc6SNnLGPqUVyJYZ3LUhhnHAqdbrl83ogVWjCgeT4Q0yw==}
+ '@opentelemetry/instrumentation-fs@0.28.0':
+ resolution: {integrity: sha512-FFvg8fq53RRXVBRHZViP+EMxMR03tqzEGpuq55lHNbVPyFklSVfQBN50syPhK5UYYwaStx0eyCtHtbRreusc5g==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-generic-pool@0.48.0':
- resolution: {integrity: sha512-TLv/On8pufynNR+pUbpkyvuESVASZZKMlqCm4bBImTpXKTpqXaJJ3o/MUDeMlM91rpen+PEv2SeyOKcHCSlgag==}
+ '@opentelemetry/instrumentation-generic-pool@0.52.0':
+ resolution: {integrity: sha512-ISkNcv5CM2IwvsMVL31Tl61/p2Zm2I2NAsYq5SSBgOsOndT0TjnptjufYVScCnD5ZLD1tpl4T3GEYULLYOdIdQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-graphql@0.52.0':
- resolution: {integrity: sha512-3fEJ8jOOMwopvldY16KuzHbRhPk8wSsOTSF0v2psmOCGewh6ad+ZbkTx/xyUK9rUdUMWAxRVU0tFpj4Wx1vkPA==}
+ '@opentelemetry/instrumentation-graphql@0.56.0':
+ resolution: {integrity: sha512-IPvNk8AFoVzTAM0Z399t34VDmGDgwT6rIqCUug8P9oAGerl2/PEIYMPOl/rerPGu+q8gSWdmbFSjgg7PDVRd3Q==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-hapi@0.51.0':
- resolution: {integrity: sha512-qyf27DaFNL1Qhbo/da+04MSCw982B02FhuOS5/UF+PMhM61CcOiu7fPuXj8TvbqyReQuJFljXE6UirlvoT/62g==}
+ '@opentelemetry/instrumentation-hapi@0.55.0':
+ resolution: {integrity: sha512-prqAkRf9e4eEpy4G3UcR32prKE8NLNlA90TdEU1UsghOTg0jUvs40Jz8LQWFEs5NbLbXHYGzB4CYVkCI8eWEVQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-http@0.204.0':
- resolution: {integrity: sha512-1afJYyGRA4OmHTv0FfNTrTAzoEjPQUYgd+8ih/lX0LlZBnGio/O80vxA0lN3knsJPS7FiDrsDrWq25K7oAzbkw==}
+ '@opentelemetry/instrumentation-http@0.208.0':
+ resolution: {integrity: sha512-rhmK46DRWEbQQB77RxmVXGyjs6783crXCnFjYQj+4tDH/Kpv9Rbg3h2kaNyp5Vz2emF1f9HOQQvZoHzwMWOFZQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-ioredis@0.52.0':
- resolution: {integrity: sha512-rUvlyZwI90HRQPYicxpDGhT8setMrlHKokCtBtZgYxQWRF5RBbG4q0pGtbZvd7kyseuHbFpA3I/5z7M8b/5ywg==}
+ '@opentelemetry/instrumentation-ioredis@0.56.0':
+ resolution: {integrity: sha512-XSWeqsd3rKSsT3WBz/JKJDcZD4QYElZEa0xVdX8f9dh4h4QgXhKRLorVsVkK3uXFbC2sZKAS2Ds+YolGwD83Dg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-kafkajs@0.14.0':
- resolution: {integrity: sha512-kbB5yXS47dTIdO/lfbbXlzhvHFturbux4EpP0+6H78Lk0Bn4QXiZQW7rmZY1xBCY16mNcCb8Yt0mhz85hTnSVA==}
+ '@opentelemetry/instrumentation-kafkajs@0.18.0':
+ resolution: {integrity: sha512-KCL/1HnZN5zkUMgPyOxfGjLjbXjpd4odDToy+7c+UsthIzVLFf99LnfIBE8YSSrYE4+uS7OwJMhvhg3tWjqMBg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-knex@0.49.0':
- resolution: {integrity: sha512-NKsRRT27fbIYL4Ix+BjjP8h4YveyKc+2gD6DMZbr5R5rUeDqfC8+DTfIt3c3ex3BIc5Vvek4rqHnN7q34ZetLQ==}
+ '@opentelemetry/instrumentation-knex@0.53.0':
+ resolution: {integrity: sha512-xngn5cH2mVXFmiT1XfQ1aHqq1m4xb5wvU6j9lSgLlihJ1bXzsO543cpDwjrZm2nMrlpddBf55w8+bfS4qDh60g==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-koa@0.52.0':
- resolution: {integrity: sha512-JJSBYLDx/mNSy8Ibi/uQixu2rH0bZODJa8/cz04hEhRaiZQoeJ5UrOhO/mS87IdgVsHrnBOsZ6vDu09znupyuA==}
+ '@opentelemetry/instrumentation-koa@0.57.0':
+ resolution: {integrity: sha512-3JS8PU/D5E3q295mwloU2v7c7/m+DyCqdu62BIzWt+3u9utjxC9QS7v6WmUNuoDN3RM+Q+D1Gpj13ERo+m7CGg==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.9.0
+
+ '@opentelemetry/instrumentation-lru-memoizer@0.53.0':
+ resolution: {integrity: sha512-LDwWz5cPkWWr0HBIuZUjslyvijljTwmwiItpMTHujaULZCxcYE9eU44Qf/pbVC8TulT0IhZi+RoGvHKXvNhysw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-lru-memoizer@0.49.0':
- resolution: {integrity: sha512-ctXu+O/1HSadAxtjoEg2w307Z5iPyLOMM8IRNwjaKrIpNAthYGSOanChbk1kqY6zU5CrpkPHGdAT6jk8dXiMqw==}
+ '@opentelemetry/instrumentation-mongodb@0.61.0':
+ resolution: {integrity: sha512-OV3i2DSoY5M/pmLk+68xr5RvkHU8DRB3DKMzYJdwDdcxeLs62tLbkmRyqJZsYf3Ht7j11rq35pHOWLuLzXL7pQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mongodb@0.57.0':
- resolution: {integrity: sha512-KD6Rg0KSHWDkik+qjIOWoksi1xqSpix8TSPfquIK1DTmd9OTFb5PHmMkzJe16TAPVEuElUW8gvgP59cacFcrMQ==}
+ '@opentelemetry/instrumentation-mongoose@0.55.0':
+ resolution: {integrity: sha512-5afj0HfF6aM6Nlqgu6/PPHFk8QBfIe3+zF9FGpX76jWPS0/dujoEYn82/XcLSaW5LPUDW8sni+YeK0vTBNri+w==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mongoose@0.51.0':
- resolution: {integrity: sha512-gwWaAlhhV2By7XcbyU3DOLMvzsgeaymwP/jktDC+/uPkCmgB61zurwqOQdeiRq9KAf22Y2dtE5ZLXxytJRbEVA==}
+ '@opentelemetry/instrumentation-mysql2@0.55.0':
+ resolution: {integrity: sha512-0cs8whQG55aIi20gnK8B7cco6OK6N+enNhW0p5284MvqJ5EPi+I1YlWsWXgzv/V2HFirEejkvKiI4Iw21OqDWg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mysql2@0.51.0':
- resolution: {integrity: sha512-zT2Wg22Xn43RyfU3NOUmnFtb5zlDI0fKcijCj9AcK9zuLZ4ModgtLXOyBJSSfO+hsOCZSC1v/Fxwj+nZJFdzLQ==}
+ '@opentelemetry/instrumentation-mysql@0.54.0':
+ resolution: {integrity: sha512-bqC1YhnwAeWmRzy1/Xf9cDqxNG2d/JDkaxnqF5N6iJKN1eVWI+vg7NfDkf52/Nggp3tl1jcC++ptC61BD6738A==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mysql@0.50.0':
- resolution: {integrity: sha512-duKAvMRI3vq6u9JwzIipY9zHfikN20bX05sL7GjDeLKr2qV0LQ4ADtKST7KStdGcQ+MTN5wghWbbVdLgNcB3rA==}
+ '@opentelemetry/instrumentation-pg@0.61.0':
+ resolution: {integrity: sha512-UeV7KeTnRSM7ECHa3YscoklhUtTQPs6V6qYpG283AB7xpnPGCUCUfECFT9jFg6/iZOQTt3FHkB1wGTJCNZEvPw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-pg@0.57.0':
- resolution: {integrity: sha512-dWLGE+r5lBgm2A8SaaSYDE3OKJ/kwwy5WLyGyzor8PLhUL9VnJRiY6qhp4njwhnljiLtzeffRtG2Mf/YyWLeTw==}
+ '@opentelemetry/instrumentation-redis@0.57.0':
+ resolution: {integrity: sha512-bCxTHQFXzrU3eU1LZnOZQ3s5LURxQPDlU3/upBzlWY77qOI1GZuGofazj3jtzjctMJeBEJhNwIFEgRPBX1kp/Q==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-redis@0.53.0':
- resolution: {integrity: sha512-WUHV8fr+8yo5RmzyU7D5BIE1zwiaNQcTyZPwtxlfr7px6NYYx7IIpSihJK7WA60npWynfxxK1T67RAVF0Gdfjg==}
+ '@opentelemetry/instrumentation-tedious@0.27.0':
+ resolution: {integrity: sha512-jRtyUJNZppPBjPae4ZjIQ2eqJbcRaRfJkr0lQLHFmOU/no5A6e9s1OHLd5XZyZoBJ/ymngZitanyRRA5cniseA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-tedious@0.23.0':
- resolution: {integrity: sha512-3TMTk/9VtlRonVTaU4tCzbg4YqW+Iq/l5VnN2e5whP6JgEg/PKfrGbqQ+CxQWNLfLaQYIUgEZqAn5gk/inh1uQ==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': ^1.3.0
-
- '@opentelemetry/instrumentation-undici@0.15.0':
- resolution: {integrity: sha512-sNFGA/iCDlVkNjzTzPRcudmI11vT/WAfAguRdZY9IspCw02N4WSC72zTuQhSMheh2a1gdeM9my1imnKRvEEvEg==}
+ '@opentelemetry/instrumentation-undici@0.19.0':
+ resolution: {integrity: sha512-Pst/RhR61A2OoZQZkn6OLpdVpXp6qn3Y92wXa6umfJe9rV640r4bc6SWvw4pPN6DiQqPu2c8gnSSZPDtC6JlpQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.7.0
- '@opentelemetry/instrumentation@0.204.0':
- resolution: {integrity: sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==}
+ '@opentelemetry/instrumentation@0.208.0':
+ resolution: {integrity: sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation@0.57.2':
- resolution: {integrity: sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==}
- engines: {node: '>=14'}
- peerDependencies:
- '@opentelemetry/api': ^1.3.0
-
'@opentelemetry/redis-common@0.38.2':
resolution: {integrity: sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==}
engines: {node: ^18.19.0 || >=20.6.0}
@@ -3500,18 +3510,40 @@ packages:
'@peculiar/asn1-android@2.6.0':
resolution: {integrity: sha512-cBRCKtYPF7vJGN76/yG8VbxRcHLPF3HnkoHhKOZeHpoVtbMYfY9ROKtH3DtYUY9m8uI1Mh47PRhHf2hSK3xcSQ==}
+ '@peculiar/asn1-cms@2.6.0':
+ resolution: {integrity: sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==}
+
+ '@peculiar/asn1-csr@2.6.0':
+ resolution: {integrity: sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==}
+
'@peculiar/asn1-ecc@2.6.0':
resolution: {integrity: sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==}
+ '@peculiar/asn1-pfx@2.6.0':
+ resolution: {integrity: sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==}
+
+ '@peculiar/asn1-pkcs8@2.6.0':
+ resolution: {integrity: sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==}
+
+ '@peculiar/asn1-pkcs9@2.6.0':
+ resolution: {integrity: sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==}
+
'@peculiar/asn1-rsa@2.6.0':
resolution: {integrity: sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==}
'@peculiar/asn1-schema@2.6.0':
resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==}
+ '@peculiar/asn1-x509-attr@2.6.0':
+ resolution: {integrity: sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==}
+
'@peculiar/asn1-x509@2.6.0':
resolution: {integrity: sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==}
+ '@peculiar/x509@1.14.2':
+ resolution: {integrity: sha512-r2w1Hg6pODDs0zfAKHkSS5HLkOLSeburtcgwvlLLWWCixw+MmW3U6kD5ddyvc2Y2YdbGuVwCF2S2ASoU1cFAag==}
+ engines: {node: '>=22.0.0'}
+
'@peertube/http-signature@1.7.0':
resolution: {integrity: sha512-aGQIwo6/sWtyyqhVK4e1MtxYz4N1X8CNt6SOtCc+Wnczs5S5ONaLHDDR8LYaGn0MgOwvGgXyuZ5sJIfd7iyoUw==}
engines: {node: '>=0.10'}
@@ -3523,8 +3555,8 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@prisma/instrumentation@6.15.0':
- resolution: {integrity: sha512-6TXaH6OmDkMOQvOxwLZ8XS51hU2v4A3vmE2pSijCIiGRJYyNeMcL6nMHQMyYdZRD8wl7LF3Wzc+AMPMV/9Oo7A==}
+ '@prisma/instrumentation@6.19.0':
+ resolution: {integrity: sha512-QcuYy25pkXM8BJ37wVFBO7Zh34nyRV1GOb2n3lPkkbRYfl4hWl3PTcImP41P0KrzVXfa/45p6eVCos27x3exIg==}
peerDependencies:
'@opentelemetry/api': ^1.8
@@ -3708,8 +3740,8 @@ packages:
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
- '@rushstack/node-core-library@5.18.0':
- resolution: {integrity: sha512-XDebtBdw5S3SuZIt+Ra2NieT8kQ3D2Ow1HxhDQ/2soinswnOu9e7S69VSwTOLlQnx5mpWbONu+5JJjDxMAb6Fw==}
+ '@rushstack/node-core-library@5.19.1':
+ resolution: {integrity: sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==}
peerDependencies:
'@types/node': '*'
peerDependenciesMeta:
@@ -3727,81 +3759,81 @@ packages:
'@rushstack/rig-package@0.6.0':
resolution: {integrity: sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==}
- '@rushstack/terminal@0.19.3':
- resolution: {integrity: sha512-0P8G18gK9STyO+CNBvkKPnWGMxESxecTYqOcikHOVIHXa9uAuTK+Fw8TJq2Gng1w7W6wTC9uPX6hGNvrMll2wA==}
+ '@rushstack/terminal@0.19.5':
+ resolution: {integrity: sha512-6k5tpdB88G0K7QrH/3yfKO84HK9ggftfUZ51p7fePyCE7+RLLHkWZbID9OFWbXuna+eeCFE7AkKnRMHMxNbz7Q==}
peerDependencies:
'@types/node': '*'
peerDependenciesMeta:
'@types/node':
optional: true
- '@rushstack/ts-command-line@5.1.3':
- resolution: {integrity: sha512-Kdv0k/BnnxIYFlMVC1IxrIS0oGQd4T4b7vKfx52Y2+wk2WZSDFIvedr7JrhenzSlm3ou5KwtoTGTGd5nbODRug==}
+ '@rushstack/ts-command-line@5.1.5':
+ resolution: {integrity: sha512-YmrFTFUdHXblYSa+Xc9OO9FsL/XFcckZy0ycQ6q7VSBsVs5P0uD9vcges5Q9vctGlVdu27w+Ct6IuJ458V0cTQ==}
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
- '@sentry-internal/browser-utils@10.26.0':
- resolution: {integrity: sha512-rPg1+JZlfp912pZONQAWZzbSaZ9L6R2VrMcCEa+2e2Gqk9um4b+LqF5RQWZsbt5Z0n0azSy/KQ6zAe/zTPXSOg==}
+ '@sentry-internal/browser-utils@10.29.0':
+ resolution: {integrity: sha512-M3kycMY6f3KY9a8jDYac+yG0E3ZgWVWSxlOEC5MhYyX+g7mqxkwrb3LFQyuxSm/m+CCgMTCaPOOaB2twXP6EQg==}
engines: {node: '>=18'}
- '@sentry-internal/feedback@10.26.0':
- resolution: {integrity: sha512-0vk9eQP0CXD7Y2WkcCIWHaAqnXOAi18/GupgWLnbB2kuQVYVtStWxtW+OWRe8W/XwSnZ5m6JBTVeokuk/O16DQ==}
+ '@sentry-internal/feedback@10.29.0':
+ resolution: {integrity: sha512-Y7IRsNeS99cEONu1mZWZc3HvbjNnu59Hgymm0swFFKbdgbCgdT6l85kn2oLsuq4Ew8Dw/pL/Sgpwsl9UgYFpUg==}
engines: {node: '>=18'}
'@sentry-internal/node-cpu-profiler@2.2.0':
resolution: {integrity: sha512-oLHVYurqZfADPh5hvmQYS5qx8t0UZzT2u6+/68VXsFruQEOnYJTODKgU3BVLmemRs3WE6kCJjPeFdHVYOQGSzQ==}
engines: {node: '>=18'}
- '@sentry-internal/replay-canvas@10.26.0':
- resolution: {integrity: sha512-vs7d/P+8M1L1JVAhhJx2wo15QDhqAipnEQvuRZ6PV7LUcS1un9/Vx49FMxpIkx6JcKADJVwtXrS1sX2hoNT/kw==}
+ '@sentry-internal/replay-canvas@10.29.0':
+ resolution: {integrity: sha512-typY4JrpAQQGPuSyd/BD8+nNCbvTV2UVvKzr+iKgI0m1qc4Dz8tHZ4Nfais2Z8eYn/pL1kqVQN5ERTmJoYFdIw==}
engines: {node: '>=18'}
- '@sentry-internal/replay@10.26.0':
- resolution: {integrity: sha512-FMySQnY2/p0dVtFUBgUO+aMdK2ovqnd7Q/AkvMQUsN/5ulyj6KZx3JX3CqOqRtAr1izoCe4Kh2pi5t//sQmvsg==}
+ '@sentry-internal/replay@10.29.0':
+ resolution: {integrity: sha512-45NVw9PwB9TQ8z+xJ6G6Za+wmQ1RTA35heBSzR6U4bknj8LmA04k2iwnobvxCBEQXeLfcJEO1vFgagMoqMZMBw==}
engines: {node: '>=18'}
- '@sentry/browser@10.26.0':
- resolution: {integrity: sha512-uvV4hnkt8bh8yP0disJ0fszy8FdnkyGtzyIVKdeQZbNUefwbDhd3H0KJrAHhJ5ocULMH3B+dipdPmw2QXbEflg==}
+ '@sentry/browser@10.29.0':
+ resolution: {integrity: sha512-XdbyIR6F4qoR9Z1JCWTgunVcTJjS9p2Th+v4wYs4ME+ZdLC4tuKKmRgYg3YdSIWCn1CBfIgdI6wqETSf7H6Njw==}
engines: {node: '>=18'}
- '@sentry/core@10.26.0':
- resolution: {integrity: sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q==}
+ '@sentry/core@10.29.0':
+ resolution: {integrity: sha512-olQ2DU9dA/Bwsz3PtA9KNXRMqBWRQSkPw+MxwWEoU1K1qtiM9L0j6lbEFb5iSY3d7WYD5MB+1d5COugjSBrHtw==}
engines: {node: '>=18'}
- '@sentry/node-core@10.26.0':
- resolution: {integrity: sha512-7OrHVn8XAsq9mMVMlpL18XTKQEVcLOJSo0n2M7QGKfFk/OfVtSFMcUWGqN1qhYtT9aMTr2bjtR5+BI33djnNTQ==}
+ '@sentry/node-core@10.29.0':
+ resolution: {integrity: sha512-f/Y0okHhPPb5HnYNBqCivJ2YuXtSadvcIx16dzU5mHQxZhgGednUCPEX7rsvPcd4HneQz12HKLqxbAmNu+b3FA==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
- '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0
- '@opentelemetry/core': ^1.30.1 || ^2.1.0
+ '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0
'@opentelemetry/instrumentation': '>=0.57.1 <1'
- '@opentelemetry/resources': ^1.30.1 || ^2.1.0
- '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
+ '@opentelemetry/resources': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0
'@opentelemetry/semantic-conventions': ^1.37.0
- '@sentry/node@10.26.0':
- resolution: {integrity: sha512-VUwNoKYhRpnHQSj9lty1TgooO+1wcpS1V0K87HU8sZEas5gx3Ujiouk5ocPjlgbKreoYOApgOnEEIq5W/hfQcQ==}
+ '@sentry/node@10.29.0':
+ resolution: {integrity: sha512-9j8VzV06VCj+H8tlxpfa7BNN4HzH5exv68WOufdMTXzzWLOXnzrdNDoYplm1G2S3LMvWsc1SVI3a8A0yBY7oWg==}
engines: {node: '>=18'}
- '@sentry/opentelemetry@10.26.0':
- resolution: {integrity: sha512-ASJdOwn6NwMH2ZeBrnGJI+l/xkJp1AOiQ5FWkvTqLc/vHX+r3PDMO7c+koecY+LiZxSzZF4IV8sALXfOh6UnwA==}
+ '@sentry/opentelemetry@10.29.0':
+ resolution: {integrity: sha512-5QvtAwS73HlI/+OTF1poAFELzsc0se+PHmMsXGGrOeNBvjCr3ZE8qvke09aeMn7uRImf3Nc9J6i2KtSHJnbKPA==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
- '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0
- '@opentelemetry/core': ^1.30.1 || ^2.1.0
- '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
+ '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0
'@opentelemetry/semantic-conventions': ^1.37.0
- '@sentry/profiling-node@10.26.0':
- resolution: {integrity: sha512-NgfKgrJc39q/khkWZFph1tiZ1uUadtL8VrBTe+7eB/vogPAuEJa+eH/oCS3/M+Pu2fal61MoCw+2qHDH5JDxQQ==}
+ '@sentry/profiling-node@10.29.0':
+ resolution: {integrity: sha512-qt34HNmxIytAKoOYg64CIFoEHRfkxDB3qT2McB5zq1YbzU0b89j3h2roF8A/dsWAlppV0R2DAXBkoEMNgWzHEQ==}
engines: {node: '>=18'}
hasBin: true
- '@sentry/vue@10.26.0':
- resolution: {integrity: sha512-KfgELqzuFc8beeYbx6u3Ed5l8Lj/iG0h8AgQ7YjK3FANsuwwFRioycwnoEMIJbEuKC9V3iRSHXk2W5Dgt1WWqw==}
+ '@sentry/vue@10.29.0':
+ resolution: {integrity: sha512-04Ng/ducvkTohSDhfQvRWrBxwGuQfCggHjTcEoyE3uUrR9ReF5VwyiYo5Kq4ADgZhsao5xqj4JQVg3bc8oTZUA==}
engines: {node: '>=18'}
peerDependencies:
pinia: 2.x || 3.x
@@ -3810,23 +3842,23 @@ packages:
pinia:
optional: true
- '@shikijs/core@3.15.0':
- resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==}
+ '@shikijs/core@3.19.0':
+ resolution: {integrity: sha512-L7SrRibU7ZoYi1/TrZsJOFAnnHyLTE1SwHG1yNWjZIVCqjOEmCSuK2ZO9thnRbJG6TOkPp+Z963JmpCNw5nzvA==}
- '@shikijs/engine-javascript@3.15.0':
- resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==}
+ '@shikijs/engine-javascript@3.19.0':
+ resolution: {integrity: sha512-ZfWJNm2VMhKkQIKT9qXbs76RRcT0SF/CAvEz0+RkpUDAoDaCx0uFdCGzSRiD9gSlhm6AHkjdieOBJMaO2eC1rQ==}
- '@shikijs/engine-oniguruma@3.15.0':
- resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==}
+ '@shikijs/engine-oniguruma@3.19.0':
+ resolution: {integrity: sha512-1hRxtYIJfJSZeM5ivbUXv9hcJP3PWRo5prG/V2sWwiubUKTa+7P62d2qxCW8jiVFX4pgRHhnHNp+qeR7Xl+6kg==}
- '@shikijs/langs@3.15.0':
- resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==}
+ '@shikijs/langs@3.19.0':
+ resolution: {integrity: sha512-dBMFzzg1QiXqCVQ5ONc0z2ebyoi5BKz+MtfByLm0o5/nbUu3Iz8uaTCa5uzGiscQKm7lVShfZHU1+OG3t5hgwg==}
- '@shikijs/themes@3.15.0':
- resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==}
+ '@shikijs/themes@3.19.0':
+ resolution: {integrity: sha512-H36qw+oh91Y0s6OlFfdSuQ0Ld+5CgB/VE6gNPK+Hk4VRbVG/XQgkjnt4KzfnnoO6tZPtKJKHPjwebOCfjd6F8A==}
- '@shikijs/types@3.15.0':
- resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==}
+ '@shikijs/types@3.19.0':
+ resolution: {integrity: sha512-Z2hdeEQlzuntf/BZpFG8a+Fsw9UVXdML7w0o3TgSXV3yNESGon+bs9ITkQb3Ki7zxoXOOu5oJWqZ2uto06V9iQ==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -3840,8 +3872,8 @@ packages:
'@sideway/pinpoint@2.0.0':
resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
- '@simplewebauthn/server@12.0.0':
- resolution: {integrity: sha512-aJdTe9GikOk40U7Q5Mm/Sqkxcq4a2oPZAcLcnyqMyFqrUaOS6vdsZW8/H3Mnsw9umcr88pcgB7kozPPt+5wOBw==}
+ '@simplewebauthn/server@13.2.2':
+ resolution: {integrity: sha512-HcWLW28yTMGXpwE9VLx9J+N2KEUaELadLrkPEEI9tpI5la70xNEVEsu/C+m3u7uoq4FulLqZQhgBCzR9IZhFpA==}
engines: {node: '>=20.0.0'}
'@simplewebauthn/types@12.0.0':
@@ -3875,22 +3907,18 @@ packages:
'@sinonjs/fake-timers@11.2.2':
resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==}
- '@sinonjs/fake-timers@11.3.1':
- resolution: {integrity: sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==}
-
'@sinonjs/fake-timers@13.0.5':
resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==}
+ '@sinonjs/fake-timers@15.0.0':
+ resolution: {integrity: sha512-dlUB2oL+hDIYkIq/OWFBDhQAuU6kDey3eeMiYpVb7UXHhkMq/r1HloKXAbJwJZpYWkFWsydLjMqDpueMUEOjXQ==}
+
'@sinonjs/samsam@8.0.3':
resolution: {integrity: sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==}
'@sinonjs/text-encoding@0.7.3':
resolution: {integrity: sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==}
- '@smithy/abort-controller@2.2.0':
- resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==}
- engines: {node: '>=14.0.0'}
-
'@smithy/abort-controller@4.2.5':
resolution: {integrity: sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==}
engines: {node: '>=18.0.0'}
@@ -3907,8 +3935,8 @@ packages:
resolution: {integrity: sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==}
engines: {node: '>=18.0.0'}
- '@smithy/core@3.18.5':
- resolution: {integrity: sha512-6gnIz3h+PEPQGDj8MnRSjDvKBah042jEoPgjFGJ4iJLBE78L4lY/n98x14XyPF4u3lN179Ub/ZKFY5za9GeLQw==}
+ '@smithy/core@3.18.7':
+ resolution: {integrity: sha512-axG9MvKhMWOhFbvf5y2DuyTxQueO0dkedY9QC3mAfndLosRI/9LJv8WaL0mw7ubNhsO4IuXX9/9dYGPFvHrqlw==}
engines: {node: '>=18.0.0'}
'@smithy/credential-provider-imds@4.2.5':
@@ -3971,12 +3999,12 @@ packages:
resolution: {integrity: sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==}
engines: {node: '>=18.0.0'}
- '@smithy/middleware-endpoint@4.3.12':
- resolution: {integrity: sha512-9pAX/H+VQPzNbouhDhkW723igBMLgrI8OtX+++M7iKJgg/zY/Ig3i1e6seCcx22FWhE6Q/S61BRdi2wXBORT+A==}
+ '@smithy/middleware-endpoint@4.3.14':
+ resolution: {integrity: sha512-v0q4uTKgBM8dsqGjqsabZQyH85nFaTnFcgpWU1uydKFsdyyMzfvOkNum9G7VK+dOP01vUnoZxIeRiJ6uD0kjIg==}
engines: {node: '>=18.0.0'}
- '@smithy/middleware-retry@4.4.12':
- resolution: {integrity: sha512-S4kWNKFowYd0lID7/DBqWHOQxmxlsf0jBaos9chQZUWTVOjSW1Ogyh8/ib5tM+agFDJ/TCxuCTvrnlc+9cIBcQ==}
+ '@smithy/middleware-retry@4.4.14':
+ resolution: {integrity: sha512-Z2DG8Ej7FyWG1UA+7HceINtSLzswUgs2np3sZX0YBBxCt+CXG4QUxv88ZDS3+2/1ldW7LqtSY1UO/6VQ1pND8Q==}
engines: {node: '>=18.0.0'}
'@smithy/middleware-serde@4.2.6':
@@ -3991,10 +4019,6 @@ packages:
resolution: {integrity: sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==}
engines: {node: '>=18.0.0'}
- '@smithy/node-http-handler@2.5.0':
- resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==}
- engines: {node: '>=14.0.0'}
-
'@smithy/node-http-handler@4.4.5':
resolution: {integrity: sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==}
engines: {node: '>=18.0.0'}
@@ -4003,18 +4027,10 @@ packages:
resolution: {integrity: sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==}
engines: {node: '>=18.0.0'}
- '@smithy/protocol-http@3.3.0':
- resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==}
- engines: {node: '>=14.0.0'}
-
'@smithy/protocol-http@5.3.5':
resolution: {integrity: sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==}
engines: {node: '>=18.0.0'}
- '@smithy/querystring-builder@2.2.0':
- resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==}
- engines: {node: '>=14.0.0'}
-
'@smithy/querystring-builder@4.2.5':
resolution: {integrity: sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==}
engines: {node: '>=18.0.0'}
@@ -4035,14 +4051,10 @@ packages:
resolution: {integrity: sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==}
engines: {node: '>=18.0.0'}
- '@smithy/smithy-client@4.9.8':
- resolution: {integrity: sha512-8xgq3LgKDEFoIrLWBho/oYKyWByw9/corz7vuh1upv7ZBm0ZMjGYBhbn6v643WoIqA9UTcx5A5htEp/YatUwMA==}
+ '@smithy/smithy-client@4.9.10':
+ resolution: {integrity: sha512-Jaoz4Jw1QYHc1EFww/E6gVtNjhoDU+gwRKqXP6C3LKYqqH2UQhP8tMP3+t/ePrhaze7fhLE8vS2q6vVxBANFTQ==}
engines: {node: '>=18.0.0'}
- '@smithy/types@2.12.0':
- resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==}
- engines: {node: '>=14.0.0'}
-
'@smithy/types@4.9.0':
resolution: {integrity: sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==}
engines: {node: '>=18.0.0'}
@@ -4075,12 +4087,12 @@ packages:
resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==}
engines: {node: '>=18.0.0'}
- '@smithy/util-defaults-mode-browser@4.3.11':
- resolution: {integrity: sha512-yHv+r6wSQXEXTPVCIQTNmXVWs7ekBTpMVErjqZoWkYN75HIFN5y9+/+sYOejfAuvxWGvgzgxbTHa/oz61YTbKw==}
+ '@smithy/util-defaults-mode-browser@4.3.13':
+ resolution: {integrity: sha512-hlVLdAGrVfyNei+pKIgqDTxfu/ZI2NSyqj4IDxKd5bIsIqwR/dSlkxlPaYxFiIaDVrBy0he8orsFy+Cz119XvA==}
engines: {node: '>=18.0.0'}
- '@smithy/util-defaults-mode-node@4.2.14':
- resolution: {integrity: sha512-ljZN3iRvaJUgulfvobIuG97q1iUuCMrvXAlkZ4msY+ZuVHQHDIqn7FKZCEj+bx8omz6kF5yQXms/xhzjIO5XiA==}
+ '@smithy/util-defaults-mode-node@4.2.16':
+ resolution: {integrity: sha512-F1t22IUiJLHrxW9W1CQ6B9PN+skZ9cqSuzB18Eh06HrJPbjsyZ7ZHecAKw80DQtyGTRcVfeukKaCRYebFwclbg==}
engines: {node: '>=18.0.0'}
'@smithy/util-endpoints@3.2.5':
@@ -4103,10 +4115,6 @@ packages:
resolution: {integrity: sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==}
engines: {node: '>=18.0.0'}
- '@smithy/util-uri-escape@2.2.0':
- resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==}
- engines: {node: '>=14.0.0'}
-
'@smithy/util-uri-escape@4.2.0':
resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==}
engines: {node: '>=18.0.0'}
@@ -4168,11 +4176,11 @@ packages:
peerDependencies:
storybook: ^8.6.14
- '@storybook/addon-links@9.1.16':
- resolution: {integrity: sha512-21SJAEuOX4Fh/5VSeakuiJJeSH2ezXBia0cZMTkKYz6GOtoojeGigo3tuebVlsn9myqnkMZxiufnnRa7Zne8vg==}
+ '@storybook/addon-links@10.1.5':
+ resolution: {integrity: sha512-a1uXpNgIZg6U2v3+431RNFCLvcuNPT2kQjFEKNAVLyNe4Krig/yR3HabGoxKHINLrtBzn/rE9yNeDhMKYfvVnA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^9.1.16
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^10.1.5
peerDependenciesMeta:
react:
optional: true
@@ -4219,10 +4227,10 @@ packages:
react-dom:
optional: true
- '@storybook/builder-vite@9.1.16':
- resolution: {integrity: sha512-CyvYA5w1BKeSVaRavKi+euWxLffshq0v9Rz/5E9MKCitbYtjwkDH6UMIYmcbTs906mEBuYqrbz3nygDP0ppodw==}
+ '@storybook/builder-vite@10.1.5':
+ resolution: {integrity: sha512-5alpNa+TQXK1zp9MeovUK/yIUkZqpIFUScUer6cYgidI96Boovn7OXt5oXQ8CqqpzuEtgCvz44TzCmgZoGv41g==}
peerDependencies:
- storybook: ^9.1.16
+ storybook: ^10.1.5
vite: ^5.0.0 || ^6.0.0 || ^7.0.0
'@storybook/components@8.6.14':
@@ -4235,16 +4243,29 @@ packages:
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+ '@storybook/csf-plugin@10.1.5':
+ resolution: {integrity: sha512-v+D7PVRkNUHznfoQg8yqpLWZIIbPddqHDSi1oBGdegF0Kv/lVsGqTZGRLroApsMu7BLwLhpcMID6ofxlfftWKg==}
+ peerDependencies:
+ esbuild: '*'
+ rollup: '*'
+ storybook: ^10.1.5
+ vite: '*'
+ webpack: '*'
+ peerDependenciesMeta:
+ esbuild:
+ optional: true
+ rollup:
+ optional: true
+ vite:
+ optional: true
+ webpack:
+ optional: true
+
'@storybook/csf-plugin@8.6.14':
resolution: {integrity: sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==}
peerDependencies:
storybook: ^8.6.14
- '@storybook/csf-plugin@9.1.16':
- resolution: {integrity: sha512-GKlNNlmWeFBQxhQY5hZOSnFGbeKq69jal0dYNWoSImTjor28eYRHb9iQkDzRpijLPizBaB9MlxLsLrgFDp7adA==}
- peerDependencies:
- storybook: ^9.1.16
-
'@storybook/global@5.0.0':
resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==}
@@ -4255,6 +4276,12 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
+ '@storybook/icons@2.0.1':
+ resolution: {integrity: sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
'@storybook/instrumenter@8.6.14':
resolution: {integrity: sha512-iG4MlWCcz1L7Yu8AwgsnfVAmMbvyRSk700Mfy2g4c8y5O+Cv1ejshE1LBBsCwHgkuqU0H4R0qu4g23+6UnUemQ==}
peerDependencies:
@@ -4270,6 +4297,13 @@ packages:
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+ '@storybook/react-dom-shim@10.1.5':
+ resolution: {integrity: sha512-CsXcq26wINUgYP8KnfSuS60B10/Ag34YdcnWIEl9hM5UtTQ65WYJ9fVFqpzfnQrkpgRMd7iQjtmUhCe+4umnHg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^10.1.5
+
'@storybook/react-dom-shim@8.6.14':
resolution: {integrity: sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==}
peerDependencies:
@@ -4277,29 +4311,20 @@ packages:
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
storybook: ^8.6.14
- '@storybook/react-dom-shim@9.1.16':
- resolution: {integrity: sha512-MsI4qTxdT6lMXQmo3IXhw3EaCC+vsZboyEZBx4pOJ+K/5cDJ6ZoQ3f0d4yGpVhumDxaxlnNAg954+f8WWXE1rQ==}
+ '@storybook/react-vite@10.1.5':
+ resolution: {integrity: sha512-27RiCVw5QZ/f9fXS8sGaPHuWkbHSoS66ifeakxHgbkbIXjVI4M6pWB7NUj49MwU1YUMOpB0T8KasvyMZzv/UPA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^9.1.16
-
- '@storybook/react-vite@9.1.16':
- resolution: {integrity: sha512-WRKSq0XfQ/Qx66aKisQCfa/1UKwN9HjVbY6xrmsX7kI5zBdITxIcKInq6PWoPv91SJD7+Et956yX+F86R1aEXw==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^9.1.16
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^10.1.5
vite: ^5.0.0 || ^6.0.0 || ^7.0.0
- '@storybook/react@9.1.16':
- resolution: {integrity: sha512-M/SkHJJdtiGpodBJq9+DYmSkEOD+VqlPxKI+FvbHESTNs//1IgqFIjEWetd8quhd9oj/gvo4ICBAPu+UmD6M9w==}
- engines: {node: '>=20.0.0'}
+ '@storybook/react@10.1.5':
+ resolution: {integrity: sha512-M8fR7WVs79fPJHwRZxkz4XzIfzs/bN0heWdZX0D4iRjeIcY4nLM/tyalCcQDrGgrSJbgAAf4xd7KXaZzaZSAqA==}
peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
- storybook: ^9.1.16
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^10.1.5
typescript: '>= 4.9.x'
peerDependenciesMeta:
typescript:
@@ -4325,18 +4350,16 @@ packages:
peerDependencies:
storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
- '@storybook/vue3-vite@9.1.16':
- resolution: {integrity: sha512-ucuqiW4guWXoxRo6DEYmuWWlMixKD1o+NEMwr3viOPO46lM4K7PQHg8HCz8Kg22tCOYCXYdf5KXWexTv7d6ZFQ==}
- engines: {node: '>=20.0.0'}
+ '@storybook/vue3-vite@10.1.5':
+ resolution: {integrity: sha512-ExwJyE4bkkdCUxlGoqGK9VRfJwvAF9iYOurtryMqMHBSr55u2id3fzD/PmjraeedWpElxbm2ZeIzBNnATdsSEQ==}
peerDependencies:
- storybook: ^9.1.16
+ storybook: ^10.1.5
vite: ^5.0.0 || ^6.0.0 || ^7.0.0
- '@storybook/vue3@9.1.16':
- resolution: {integrity: sha512-ScSDbhe5pgs+Q+oi+pHrXAph/MWvok8euW8Vp+j4P7JPf+5iFaCEL2AyXApb0gPa6Txl1mT9NR7J8BlBa7PfbQ==}
- engines: {node: '>=20.0.0'}
+ '@storybook/vue3@10.1.5':
+ resolution: {integrity: sha512-C0QIE4nLoGWHdfKXl6pHyThWc/OPt8DqnlUF8yMMDHCjPGt1q9RQZcYINtVleZ5WhAck4Q2ZvXys372ridf0wA==}
peerDependencies:
- storybook: ^9.1.16
+ storybook: ^10.1.5
vue: ^3.0.0
'@stylistic/eslint-plugin@5.5.0':
@@ -4351,7 +4374,7 @@ packages:
hasBin: true
peerDependencies:
'@swc/core': ^1.2.66
- chokidar: 4.0.3
+ chokidar: 5.0.0
peerDependenciesMeta:
chokidar:
optional: true
@@ -4362,14 +4385,14 @@ packages:
cpu: [arm64]
os: [android]
- '@swc/core-darwin-arm64@1.15.2':
- resolution: {integrity: sha512-Ghyz4RJv4zyXzrUC1B2MLQBbppIB5c4jMZJybX2ebdEQAvryEKp3gq1kBksCNsatKGmEgXul88SETU19sMWcrw==}
+ '@swc/core-darwin-arm64@1.15.3':
+ resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
- '@swc/core-darwin-x64@1.15.2':
- resolution: {integrity: sha512-7n/PGJOcL2QoptzL42L5xFFfXY5rFxLHnuz1foU+4ruUTG8x2IebGhtwVTpaDN8ShEv2UZObBlT1rrXTba15Zw==}
+ '@swc/core-darwin-x64@1.15.3':
+ resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
@@ -4380,60 +4403,60 @@ packages:
cpu: [x64]
os: [freebsd]
- '@swc/core-linux-arm-gnueabihf@1.15.2':
- resolution: {integrity: sha512-ZUQVCfRJ9wimuxkStRSlLwqX4TEDmv6/J+E6FicGkQ6ssLMWoKDy0cAo93HiWt/TWEee5vFhFaSQYzCuBEGO6A==}
+ '@swc/core-linux-arm-gnueabihf@1.15.3':
+ resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
- '@swc/core-linux-arm64-gnu@1.15.2':
- resolution: {integrity: sha512-GZh3pYBmfnpQ+JIg+TqLuz+pM+Mjsk5VOzi8nwKn/m+GvQBsxD5ectRtxuWUxMGNG8h0lMy4SnHRqdK3/iJl7A==}
+ '@swc/core-linux-arm64-gnu@1.15.3':
+ resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@swc/core-linux-arm64-musl@1.15.2':
- resolution: {integrity: sha512-5av6VYZZeneiYIodwzGMlnyVakpuYZryGzFIbgu1XP8wVylZxduEzup4eP8atiMDFmIm+s4wn8GySJmYqeJC0A==}
+ '@swc/core-linux-arm64-musl@1.15.3':
+ resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@swc/core-linux-x64-gnu@1.15.2':
- resolution: {integrity: sha512-1nO/UfdCLuT/uE/7oB3EZgTeZDCIa6nL72cFEpdegnqpJVNDI6Qb8U4g/4lfVPkmHq2lvxQ0L+n+JdgaZLhrRA==}
+ '@swc/core-linux-x64-gnu@1.15.3':
+ resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@swc/core-linux-x64-musl@1.15.2':
- resolution: {integrity: sha512-Ksfrb0Tx310kr+TLiUOvB/I80lyZ3lSOp6cM18zmNRT/92NB4mW8oX2Jo7K4eVEI2JWyaQUAFubDSha2Q+439A==}
+ '@swc/core-linux-x64-musl@1.15.3':
+ resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@swc/core-win32-arm64-msvc@1.15.2':
- resolution: {integrity: sha512-IzUb5RlMUY0r1A9IuJrQ7Tbts1wWb73/zXVXT8VhewbHGoNlBKE0qUhKMED6Tv4wDF+pmbtUJmKXDthytAvLmg==}
+ '@swc/core-win32-arm64-msvc@1.15.3':
+ resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
- '@swc/core-win32-ia32-msvc@1.15.2':
- resolution: {integrity: sha512-kCATEzuY2LP9AlbU2uScjcVhgnCAkRdu62vbce17Ro5kxEHxYWcugkveyBRS3AqZGtwAKYbMAuNloer9LS/hpw==}
+ '@swc/core-win32-ia32-msvc@1.15.3':
+ resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
- '@swc/core-win32-x64-msvc@1.15.2':
- resolution: {integrity: sha512-iJaHeYCF4jTn7OEKSa3KRiuVFIVYts8jYjNmCdyz1u5g8HRyTDISD76r8+ljEOgm36oviRQvcXaw6LFp1m0yyA==}
+ '@swc/core-win32-x64-msvc@1.15.3':
+ resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
- '@swc/core@1.15.2':
- resolution: {integrity: sha512-OQm+yJdXxvSjqGeaWhP6Ia264ogifwAO7Q12uTDVYj/Ks4jBTI4JknlcjDRAXtRhqbWsfbZyK/5RtuIPyptk3w==}
+ '@swc/core@1.15.3':
+ resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==}
engines: {node: '>=10'}
peerDependencies:
'@swc/helpers': '>=0.5.17'
@@ -4565,6 +4588,10 @@ packages:
'@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
+ '@tootallnate/once@2.0.0':
+ resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
+ engines: {node: '>= 10'}
+
'@tsd/typescript@5.9.3':
resolution: {integrity: sha512-JSSdNiS0wgd8GHhBwnMAI18Y8XPhLVN+dNelPfZCXFhy9Lb3NbnFyp9JKxxr54jSUkEJPk3cidvCoHducSaRMQ==}
engines: {node: '>=14.17'}
@@ -4575,8 +4602,8 @@ packages:
'@types/accepts@1.3.7':
resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==}
- '@types/archiver@6.0.4':
- resolution: {integrity: sha512-ULdQpARQ3sz9WH4nb98mJDYA0ft2A8C4f4fovvUcFwINa1cgGjY36JCAYuP5YypRq4mco1lJp1/7jEMS2oR0Hg==}
+ '@types/archiver@7.0.0':
+ resolution: {integrity: sha512-/3vwGwx9n+mCQdYZ2IKGGHEFL30I96UgBlk8EtRDDFQ9uxM1l4O5Ci6r00EMAkiDaTqD9DQ6nVrWRICnBPtzzg==}
'@types/argparse@1.0.38':
resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==}
@@ -4596,9 +4623,6 @@ packages:
'@types/babel__traverse@7.28.0':
resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
- '@types/bcryptjs@2.4.6':
- resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==}
-
'@types/body-parser@1.19.6':
resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==}
@@ -4656,8 +4680,8 @@ packages:
'@types/express-serve-static-core@5.1.0':
resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==}
- '@types/express@5.0.5':
- resolution: {integrity: sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==}
+ '@types/express@5.0.4':
+ resolution: {integrity: sha512-g64dbryHk7loCIrsa0R3shBnEu5p6LPJ09bu9NG58+jz+cRUjFrc3Bz0kNQ7j9bXeCsrRDvNET1G54P/GJkAyA==}
'@types/fluent-ffmpeg@2.1.28':
resolution: {integrity: sha512-5ovxsDwBcPfJ+eYs1I/ZpcYCnkce7pvH9AHSvrZllAp1ZPpTRDZAFjF3TRFbukxSgIYTTNYePbS0rKUmaxVbXw==}
@@ -4671,9 +4695,6 @@ packages:
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
- '@types/htmlescape@1.1.3':
- resolution: {integrity: sha512-tuC81YJXGUe0q8WRtBNW+uyx79rkkzWK651ALIXXYq5/u/IxjX4iHneGF2uUqzsNp+F+9J2mFZOv9jiLTtIq0w==}
-
'@types/http-cache-semantics@4.0.4':
resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
@@ -4698,8 +4719,8 @@ packages:
'@types/js-yaml@4.0.9':
resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==}
- '@types/jsdom@21.1.7':
- resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==}
+ '@types/jsdom@20.0.1':
+ resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -4710,9 +4731,6 @@ packages:
'@types/jsonld@1.5.15':
resolution: {integrity: sha512-PlAFPZjL+AuGYmwlqwKEL0IMP8M8RexH0NIPGfCVWSQ041H2rR/8OlyZSD7KsCVoN8vCfWdtWDBxX8yBVP+xow==}
- '@types/jsrsasign@10.5.15':
- resolution: {integrity: sha512-3stUTaSRtN09PPzVWR6aySD9gNnuymz+WviNHoTb85dKu+BjaV4uBbWWGykBBJkfwPtcNZVfTn2lbX00U+yhpQ==}
-
'@types/long@4.0.2':
resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==}
@@ -4731,8 +4749,8 @@ packages:
'@types/micromatch@4.0.10':
resolution: {integrity: sha512-5jOhFDElqr4DKTrTEbnW8DZ4Hz5LRUEmyrGpCMrD/NphYv3nUnaF08xmSLx1rGGnyEs/kFnhiw6dCgcDqMr5PQ==}
- '@types/mime-types@2.1.4':
- resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==}
+ '@types/mime-types@3.0.1':
+ resolution: {integrity: sha512-xRMsfuQbnRq1Ef+C+RKaENOxXX87Ygl38W1vDfPHRku02TgQr+Qd8iivLtAMcR0KF5/29xlnFihkTlbqFrGOVQ==}
'@types/mime@1.3.5':
resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==}
@@ -4740,8 +4758,8 @@ packages:
'@types/minimist@1.2.5':
resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
- '@types/ms@0.7.34':
- resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ '@types/ms@2.1.0':
+ resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
'@types/mysql@2.15.27':
resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==}
@@ -4752,11 +4770,11 @@ packages:
'@types/node@20.19.25':
resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==}
- '@types/node@24.10.1':
- resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==}
+ '@types/node@24.10.2':
+ resolution: {integrity: sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==}
- '@types/nodemailer@6.4.21':
- resolution: {integrity: sha512-Eix+sb/Nj28MNnWvO2X1OLrk5vuD4C9SMnb2Vf4itWnxphYeSceqkFX7IdmxTzn+dvmnNz7paMbg4Uc60wSfJg==}
+ '@types/nodemailer@7.0.4':
+ resolution: {integrity: sha512-ee8fxWqOchH+Hv6MDDNNy028kwvVnLplrStm4Zf/3uHWw5zzo8FoYYeffpJtGs2wWysEumMH0ZIdMGMY1eMAow==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -4767,9 +4785,6 @@ packages:
'@types/oauth2orize@1.11.5':
resolution: {integrity: sha512-C6hrRoh9hCnqis39OpeUZSwgw+TIzcV0CsxwJMGfQjTx4I1r+CLmuEPzoDJr5NRTfc7OMwHNLkQwrGFLKrJjMQ==}
- '@types/oauth@0.9.6':
- resolution: {integrity: sha512-H9TRCVKBNOhZZmyHLqFt9drPM9l+ShWiqqJijU1B8P3DX3ub84NjxDuy+Hjrz+fEca5Kwip3qPMKNyiLgNJtIA==}
-
'@types/offscreencanvas@2019.3.0':
resolution: {integrity: sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==}
@@ -4779,15 +4794,9 @@ packages:
'@types/pg-pool@2.0.6':
resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==}
- '@types/pg@8.15.5':
- resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==}
-
'@types/pg@8.15.6':
resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==}
- '@types/pug@2.0.10':
- resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==}
-
'@types/punycode@2.1.4':
resolution: {integrity: sha512-trzh6NzBnq8yw5e35f8xe8VTYjqM3NE7bohBtvDVf/dtUer3zYTLK1Ka3DG3p7bdtoaOHZucma6FfVKlQ134pQ==}
@@ -4845,21 +4854,18 @@ packages:
'@types/serviceworker@0.0.74':
resolution: {integrity: sha512-HNt7NJHrjGtCmI3h1+rsb1g/ZY0iy5KaeenfEV7zAWPSaCs49hEUvgH++V1BHNwlLfB3sbjPh3pSiNixfYjb1w==}
- '@types/shimmer@1.2.0':
- resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
-
- '@types/simple-oauth2@5.0.7':
- resolution: {integrity: sha512-8JbWVJbiTSBQP/7eiyGKyXWAqp3dKQZpaA+pdW16FCi32ujkzRMG8JfjoAzdWt6W8U591ZNdHcPtP2D7ILTKuA==}
+ '@types/simple-oauth2@5.0.8':
+ resolution: {integrity: sha512-TehQqoOGdy3/rmFsCEGgnt1f4JhUCA0joWemGGCTbVYvoZvfBjkRsBFYmz8k0V/sn2XQZHe33L4lWxqMhIO3tQ==}
'@types/sinon@17.0.4':
resolution: {integrity: sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==}
+ '@types/sinonjs__fake-timers@15.0.1':
+ resolution: {integrity: sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==}
+
'@types/sinonjs__fake-timers@8.1.1':
resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==}
- '@types/sinonjs__fake-timers@8.1.5':
- resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==}
-
'@types/sizzle@2.3.10':
resolution: {integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==}
@@ -4914,69 +4920,69 @@ packages:
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
- '@types/yargs@17.0.35':
- resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
+ '@types/yargs@17.0.34':
+ resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==}
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
- '@typescript-eslint/eslint-plugin@8.47.0':
- resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==}
+ '@typescript-eslint/eslint-plugin@8.49.0':
+ resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.47.0
+ '@typescript-eslint/parser': ^8.49.0
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.47.0':
- resolution: {integrity: sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==}
+ '@typescript-eslint/parser@8.49.0':
+ resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/project-service@8.47.0':
- resolution: {integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==}
+ '@typescript-eslint/project-service@8.49.0':
+ resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.47.0':
- resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==}
+ '@typescript-eslint/scope-manager@8.49.0':
+ resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.47.0':
- resolution: {integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==}
+ '@typescript-eslint/tsconfig-utils@8.49.0':
+ resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@8.47.0':
- resolution: {integrity: sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==}
+ '@typescript-eslint/type-utils@8.49.0':
+ resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@8.47.0':
- resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==}
+ '@typescript-eslint/types@8.49.0':
+ resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.47.0':
- resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==}
+ '@typescript-eslint/typescript-estree@8.49.0':
+ resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.47.0':
- resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==}
+ '@typescript-eslint/utils@8.49.0':
+ resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@8.47.0':
- resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==}
+ '@typescript-eslint/visitor-keys@8.49.0':
+ resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.3.0':
@@ -4989,20 +4995,11 @@ packages:
vite: ^5.0.0 || ^6.0.0 || ^7.0.0
vue: ^3.2.25
- '@vitest/coverage-v8@3.2.4':
- resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==}
+ '@vitest/coverage-v8@4.0.15':
+ resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==}
peerDependencies:
- '@vitest/browser': 3.2.4
- vitest: 3.2.4
- peerDependenciesMeta:
- '@vitest/browser':
- optional: true
-
- '@vitest/coverage-v8@4.0.10':
- resolution: {integrity: sha512-g+brmtoKa/sAeIohNJnnWhnHtU6GuqqVOSQ4SxDIPcgZWZyhJs5RmF5LpqXs8Kq64lANP+vnbn5JLzhLj/G56g==}
- peerDependencies:
- '@vitest/browser': 4.0.10
- vitest: 4.0.10
+ '@vitest/browser': 4.0.15
+ vitest: 4.0.15
peerDependenciesMeta:
'@vitest/browser':
optional: true
@@ -5013,8 +5010,8 @@ packages:
'@vitest/expect@3.2.4':
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
- '@vitest/expect@4.0.10':
- resolution: {integrity: sha512-3QkTX/lK39FBNwARCQRSQr0TP9+ywSdxSX+LgbJ2M1WmveXP72anTbnp2yl5fH+dU6SUmBzNMrDHs80G8G2DZg==}
+ '@vitest/expect@4.0.15':
+ resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==}
'@vitest/mocker@3.2.4':
resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==}
@@ -5027,8 +5024,8 @@ packages:
vite:
optional: true
- '@vitest/mocker@4.0.10':
- resolution: {integrity: sha512-e2OfdexYkjkg8Hh3L9NVEfbwGXq5IZbDovkf30qW2tOh7Rh9sVtmSr2ztEXOFbymNxS4qjzLXUQIvATvN4B+lg==}
+ '@vitest/mocker@4.0.15':
+ resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0-0
@@ -5047,20 +5044,14 @@ packages:
'@vitest/pretty-format@3.2.4':
resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
- '@vitest/pretty-format@4.0.10':
- resolution: {integrity: sha512-99EQbpa/zuDnvVjthwz5bH9o8iPefoQZ63WV8+bsRJZNw3qQSvSltfut8yu1Jc9mqOYi7pEbsKxYTi/rjaq6PA==}
+ '@vitest/pretty-format@4.0.15':
+ resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==}
- '@vitest/runner@3.2.4':
- resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
+ '@vitest/runner@4.0.15':
+ resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==}
- '@vitest/runner@4.0.10':
- resolution: {integrity: sha512-EXU2iSkKvNwtlL8L8doCpkyclw0mc/t4t9SeOnfOFPyqLmQwuceMPA4zJBa6jw0MKsZYbw7kAn+gl7HxrlB8UQ==}
-
- '@vitest/snapshot@3.2.4':
- resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
-
- '@vitest/snapshot@4.0.10':
- resolution: {integrity: sha512-2N4X2ZZl7kZw0qeGdQ41H0KND96L3qX1RgwuCfy6oUsF2ISGD/HpSbmms+CkIOsQmg2kulwfhJ4CI0asnZlvkg==}
+ '@vitest/snapshot@4.0.15':
+ resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==}
'@vitest/spy@2.0.5':
resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==}
@@ -5068,8 +5059,8 @@ packages:
'@vitest/spy@3.2.4':
resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
- '@vitest/spy@4.0.10':
- resolution: {integrity: sha512-AsY6sVS8OLb96GV5RoG8B6I35GAbNrC49AO+jNRF9YVGb/g9t+hzNm1H6kD0NDp8tt7VJLs6hb7YMkDXqu03iw==}
+ '@vitest/spy@4.0.15':
+ resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==}
'@vitest/utils@2.0.5':
resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
@@ -5080,38 +5071,38 @@ packages:
'@vitest/utils@3.2.4':
resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
- '@vitest/utils@4.0.10':
- resolution: {integrity: sha512-kOuqWnEwZNtQxMKg3WmPK1vmhZu9WcoX69iwWjVz+jvKTsF1emzsv3eoPcDr6ykA3qP2bsCQE7CwqfNtAVzsmg==}
+ '@vitest/utils@4.0.15':
+ resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==}
'@volar/language-core@2.4.15':
resolution: {integrity: sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==}
- '@volar/language-core@2.4.23':
- resolution: {integrity: sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==}
+ '@volar/language-core@2.4.26':
+ resolution: {integrity: sha512-hH0SMitMxnB43OZpyF1IFPS9bgb2I3bpCh76m2WEK7BE0A0EzpYsRp0CCH2xNKshr7kacU5TQBLYn4zj7CG60A==}
'@volar/source-map@2.4.15':
resolution: {integrity: sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==}
- '@volar/source-map@2.4.23':
- resolution: {integrity: sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==}
+ '@volar/source-map@2.4.26':
+ resolution: {integrity: sha512-JJw0Tt/kSFsIRmgTQF4JSt81AUSI1aEye5Zl65EeZ8H35JHnTvFGmpDOBn5iOxd48fyGE+ZvZBp5FcgAy/1Qhw==}
'@volar/typescript@2.4.15':
resolution: {integrity: sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==}
- '@volar/typescript@2.4.23':
- resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==}
+ '@volar/typescript@2.4.26':
+ resolution: {integrity: sha512-N87ecLD48Sp6zV9zID/5yuS1+5foj0DfuYGdQ6KHj/IbKvyKv1zNX6VCmnKYwtmHadEO6mFc2EKISiu3RDPAvA==}
- '@vue/compiler-core@3.5.24':
- resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==}
+ '@vue/compiler-core@3.5.25':
+ resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==}
- '@vue/compiler-dom@3.5.24':
- resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==}
+ '@vue/compiler-dom@3.5.25':
+ resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==}
- '@vue/compiler-sfc@3.5.24':
- resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==}
+ '@vue/compiler-sfc@3.5.25':
+ resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==}
- '@vue/compiler-ssr@3.5.24':
- resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==}
+ '@vue/compiler-ssr@3.5.25':
+ resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==}
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
@@ -5124,30 +5115,30 @@ packages:
typescript:
optional: true
- '@vue/language-core@3.1.4':
- resolution: {integrity: sha512-n/58wm8SkmoxMWkUNUH/PwoovWe4hmdyPJU2ouldr3EPi1MLoS7iDN46je8CsP95SnVBs2axInzRglPNKvqMcg==}
+ '@vue/language-core@3.1.8':
+ resolution: {integrity: sha512-PfwAW7BLopqaJbneChNL6cUOTL3GL+0l8paYP5shhgY5toBNidWnMXWM+qDwL7MC9+zDtzCF2enT8r6VPu64iw==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@vue/reactivity@3.5.24':
- resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==}
+ '@vue/reactivity@3.5.25':
+ resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==}
- '@vue/runtime-core@3.5.24':
- resolution: {integrity: sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==}
+ '@vue/runtime-core@3.5.25':
+ resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==}
- '@vue/runtime-dom@3.5.24':
- resolution: {integrity: sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==}
+ '@vue/runtime-dom@3.5.25':
+ resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==}
- '@vue/server-renderer@3.5.24':
- resolution: {integrity: sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==}
+ '@vue/server-renderer@3.5.25':
+ resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==}
peerDependencies:
- vue: 3.5.24
+ vue: 3.5.25
- '@vue/shared@3.5.24':
- resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==}
+ '@vue/shared@3.5.25':
+ resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==}
'@vue/test-utils@2.4.6':
resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==}
@@ -5199,6 +5190,10 @@ packages:
resolution: {integrity: sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==}
engines: {node: '>=14.6'}
+ abab@2.0.6:
+ resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
+ deprecated: Use your platform's native atob() and btoa() methods instead
+
abbrev@1.1.1:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
@@ -5221,6 +5216,13 @@ packages:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
+ accepts@2.0.0:
+ resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
+ engines: {node: '>= 0.6'}
+
+ acorn-globals@7.0.1:
+ resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
+
acorn-import-attributes@1.9.5:
resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
peerDependencies:
@@ -5231,6 +5233,10 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ acorn-walk@8.3.4:
+ resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
+ engines: {node: '>=0.4.0'}
+
acorn@7.4.1:
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
engines: {node: '>=0.4.0'}
@@ -5261,13 +5267,9 @@ packages:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
- aggregate-error@5.0.0:
- resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==}
- engines: {node: '>=18'}
-
- aiscript-vscode@https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/c3cde89e79a41d93540cf8a48cd619c3f2dcb1b7:
- resolution: {tarball: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/c3cde89e79a41d93540cf8a48cd619c3f2dcb1b7}
- version: 0.1.15
+ aiscript-vscode@https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/1dc7f60cda78d030dadfc518a33c472202b2ef67:
+ resolution: {tarball: https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/1dc7f60cda78d030dadfc518a33c472202b2ef67}
+ version: 0.1.16
engines: {vscode: ^1.83.0}
ajv-draft-04@1.0.0:
@@ -5340,8 +5342,8 @@ packages:
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
- ansis@3.17.0:
- resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==}
+ ansis@4.2.0:
+ resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==}
engines: {node: '>=14'}
anymatch@3.1.3:
@@ -5559,8 +5561,8 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- bare-events@2.8.2:
- resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==}
+ bare-events@2.8.1:
+ resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==}
peerDependencies:
bare-abort-controller: '*'
peerDependenciesMeta:
@@ -5577,12 +5579,9 @@ packages:
bcrypt-pbkdf@1.0.2:
resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
- bcryptjs@2.4.3:
- resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==}
-
- better-opn@3.0.2:
- resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==}
- engines: {node: '>=12.0.0'}
+ bcryptjs@3.0.3:
+ resolution: {integrity: sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==}
+ hasBin: true
bidi-js@1.0.3:
resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
@@ -5611,6 +5610,10 @@ packages:
resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ body-parser@2.2.1:
+ resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==}
+ engines: {node: '>=18'}
+
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -5664,8 +5667,8 @@ packages:
resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==}
engines: {node: '>=6.14.2'}
- bullmq@5.63.2:
- resolution: {integrity: sha512-c1K5gcAh0a+C9lcRXaA1GePDYtmUywCH1pNXkUlZ8lFlqQnrtKyZpcr5aZJcjyZVx6y7t5259ru+ttJFNUQ5kw==}
+ bullmq@5.65.1:
+ resolution: {integrity: sha512-QgDAzX1G9L5IRy4Orva5CfQTXZT+5K+OfO/kbPrAqN+pmL9LJekCzxijXehlm/u2eXfWPfWvIdJJIqiuz3WJSg==}
buraha@0.0.1:
resolution: {integrity: sha512-G563A0mTbzknm2jDaNxfZuNKIdeArs8T+XQN6t+KbmgnOoevXSXhKDkyf8Md/36Jrx99ikwbCag37VGe3myExQ==}
@@ -5682,10 +5685,6 @@ packages:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
- cac@6.7.14:
- resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
- engines: {node: '>=8'}
-
cacache@19.0.1:
resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==}
engines: {node: ^18.17.0 || >=20.5.0}
@@ -5740,8 +5739,9 @@ packages:
caniuse-lite@1.0.30001755:
resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==}
- canonicalize@1.0.8:
- resolution: {integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==}
+ canonicalize@2.1.0:
+ resolution: {integrity: sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==}
+ hasBin: true
canvas-confetti@1.9.4:
resolution: {integrity: sha512-yxQbJkAVrFXWNbTUjPqjF7G+g6pDotOUHGbkZq2NELZUMDpiJ85rIEazVb8GTaAptNW2miJAXbs1BtioA251Pw==}
@@ -5749,9 +5749,9 @@ packages:
caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
- cbor@9.0.2:
- resolution: {integrity: sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==}
- engines: {node: '>=16'}
+ cbor@10.0.11:
+ resolution: {integrity: sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA==}
+ engines: {node: '>=20'}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -5843,9 +5843,9 @@ packages:
resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==}
engines: {node: '>=20.18.1'}
- chokidar@4.0.3:
- resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
- engines: {node: '>= 14.16.0'}
+ chokidar@5.0.0:
+ resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==}
+ engines: {node: '>= 20.19.0'}
chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
@@ -5882,10 +5882,6 @@ packages:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
- clean-stack@5.3.0:
- resolution: {integrity: sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==}
- engines: {node: '>=14.16'}
-
cli-cursor@3.1.0:
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
engines: {node: '>=8'}
@@ -5912,6 +5908,10 @@ packages:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
+ cliui@9.0.1:
+ resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}
+ engines: {node: '>=20'}
+
cluster-key-slot@1.1.2:
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
engines: {node: '>=0.10.0'}
@@ -5927,9 +5927,17 @@ packages:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
+ color-convert@3.1.3:
+ resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==}
+ engines: {node: '>=14.6'}
+
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ color-name@2.1.0:
+ resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==}
+ engines: {node: '>=12.20'}
+
color-string@1.9.1:
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
@@ -6026,6 +6034,10 @@ packages:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
+ content-disposition@1.0.1:
+ resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==}
+ engines: {node: '>=18'}
+
content-type@1.0.5:
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
@@ -6036,6 +6048,10 @@ packages:
cookie-signature@1.0.6:
resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+ cookie-signature@1.2.2:
+ resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
+ engines: {node: '>=6.6.0'}
+
cookie@0.7.1:
resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
engines: {node: '>= 0.6'}
@@ -6086,14 +6102,6 @@ packages:
engines: {node: '>=20'}
hasBin: true
- cross-env@7.0.3:
- resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
- engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
- hasBin: true
-
- cross-fetch@4.1.0:
- resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==}
-
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -6149,9 +6157,15 @@ packages:
resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
- cssstyle@4.6.0:
- resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==}
- engines: {node: '>=18'}
+ cssom@0.3.8:
+ resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
+
+ cssom@0.5.0:
+ resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==}
+
+ cssstyle@2.3.0:
+ resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
+ engines: {node: '>=8'}
cssstyle@5.3.3:
resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==}
@@ -6160,8 +6174,8 @@ packages:
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
- cypress@15.6.0:
- resolution: {integrity: sha512-Vqo66GG1vpxZ7H1oDX9umfmzA3nF7Wy80QAc3VjwPREO5zTY4d1xfQFNPpOWleQl9vpdmR2z1liliOcYlRX6rQ==}
+ cypress@15.7.1:
+ resolution: {integrity: sha512-U3sYnJ+Cnpgr6IPycxsznTg//mGVXfPGeGV+om7VQCyp5XyVkhG4oPr3X3hTq1+OB0Om0O5DxusYmt7cbvwqMQ==}
engines: {node: ^20.1.0 || ^22.0.0 || >=24.0.0}
hasBin: true
@@ -6173,9 +6187,9 @@ packages:
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
engines: {node: '>= 12'}
- data-urls@5.0.0:
- resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
- engines: {node: '>=18'}
+ data-urls@3.0.2:
+ resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==}
+ engines: {node: '>=12'}
data-urls@6.0.0:
resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==}
@@ -6193,10 +6207,6 @@ packages:
resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
engines: {node: '>= 0.4'}
- date-fns@2.30.0:
- resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
- engines: {node: '>=0.11'}
-
date-fns@4.1.0:
resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
@@ -6299,10 +6309,6 @@ packages:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
- define-lazy-prop@2.0.0:
- resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
- engines: {node: '>=8'}
-
define-properties@1.2.1:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
@@ -6403,6 +6409,11 @@ packages:
domelementtype@2.3.0:
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+ domexception@4.0.0:
+ resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
+ engines: {node: '>=12'}
+ deprecated: Use your platform's native DOMException instead
+
domhandler@3.3.0:
resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==}
engines: {node: '>= 4'}
@@ -6456,12 +6467,19 @@ packages:
resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
engines: {node: '>=12'}
+ emoji-regex@10.6.0:
+ resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
+
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ empathic@2.0.0:
+ resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==}
+ engines: {node: '>=14'}
+
encodeurl@1.0.2:
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
engines: {node: '>= 0.8'}
@@ -6551,18 +6569,13 @@ packages:
es6-promisify@5.0.0:
resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
- esbuild-register@3.6.0:
- resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==}
- peerDependencies:
- esbuild: '>=0.12 <1'
-
esbuild@0.25.11:
resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==}
engines: {node: '>=18'}
hasBin: true
- esbuild@0.27.0:
- resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==}
+ esbuild@0.27.1:
+ resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==}
engines: {node: '>=18'}
hasBin: true
@@ -6596,6 +6609,11 @@ packages:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
+ escodegen@2.1.0:
+ resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+
eslint-formatter-pretty@4.1.0:
resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==}
engines: {node: '>=10'}
@@ -6634,8 +6652,8 @@ packages:
'@typescript-eslint/parser':
optional: true
- eslint-plugin-vue@10.5.1:
- resolution: {integrity: sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==}
+ eslint-plugin-vue@10.6.2:
+ resolution: {integrity: sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
@@ -6746,20 +6764,16 @@ packages:
resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- execa@8.0.1:
- resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
- engines: {node: '>=16.17'}
-
- execa@9.6.0:
- resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==}
+ execa@9.6.1:
+ resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==}
engines: {node: ^18.19.0 || >=20.5.0}
executable@4.1.1:
resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
engines: {node: '>=4'}
- exifreader@4.32.0:
- resolution: {integrity: sha512-sj1PzjpaPwSE/2MeUqoAYcfc2u7AZOGSby0FzmAkB4jjeCXgDryxzVgMwV+tJKGIkGdWkkWiUWoLSJoPHJ6V5Q==}
+ exifreader@4.33.1:
+ resolution: {integrity: sha512-KsVc4bRfZW255PSst5Opt5jUeLp+SD2+q6fmXQkMMkphpFCDBFjzNAvswgQa1YcMrXq+9Na6HJ6gS3wo2x7RRw==}
exit@0.1.2:
resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
@@ -6780,6 +6794,10 @@ packages:
resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
engines: {node: '>= 0.10.0'}
+ express@5.1.0:
+ resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
+ engines: {node: '>= 18'}
+
ext-list@2.2.2:
resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
engines: {node: '>=0.10.0'}
@@ -6800,8 +6818,8 @@ packages:
resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}
engines: {'0': node >=0.6.0}
- fast-content-type-parse@2.0.1:
- resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==}
+ fast-content-type-parse@3.0.0:
+ resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==}
fast-decode-uri-component@1.0.1:
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
@@ -6834,10 +6852,6 @@ packages:
fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
- fast-xml-parser@4.5.3:
- resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==}
- hasBin: true
-
fast-xml-parser@5.2.5:
resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==}
hasBin: true
@@ -6870,9 +6884,9 @@ packages:
picomatch:
optional: true
- feed@4.2.2:
- resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==}
- engines: {node: '>=0.4.0'}
+ feed@5.1.0:
+ resolution: {integrity: sha512-qGNhgYygnefSkAHHrNHqC7p3R8J0/xQDS/cYUud8er/qD9EFGWyCdUDfULHTJQN1d3H3WprzVwMc9MfB4J50Wg==}
+ engines: {node: '>=20', pnpm: '>=10'}
fetch-blob@3.2.0:
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
@@ -6921,13 +6935,14 @@ packages:
resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
engines: {node: '>= 0.8'}
+ finalhandler@2.1.0:
+ resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
+ engines: {node: '>= 0.8'}
+
find-my-way@9.3.0:
resolution: {integrity: sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==}
engines: {node: '>=20'}
- find-package-json@1.2.0:
- resolution: {integrity: sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw==}
-
find-up@4.1.0:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
@@ -6936,17 +6951,13 @@ packages:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
- find-up@7.0.0:
- resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==}
- engines: {node: '>=18'}
-
find-versions@5.1.0:
resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==}
engines: {node: '>=12'}
- fkill@9.0.0:
- resolution: {integrity: sha512-MdYSsbdCaIRjzo5edthZtWmEZVMfr1qrtYZUHIdO3swCE+CoZA8S5l0s4jDsYlTa9ZiXv0pTgpzE7s4N8NeUOA==}
- engines: {node: '>=18'}
+ fkill@10.0.1:
+ resolution: {integrity: sha512-ecaskrAMoRXdtrGEQI/NyEJ3ZoZrMUVPb3EPNMrSqP/Tb08ZN22KqMJN24cDgNJ+ddkQR8W6cJRMvF9+nnZg6A==}
+ engines: {node: '>=20'}
flat-cache@4.0.1:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
@@ -7011,6 +7022,10 @@ packages:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
+ fresh@2.0.0:
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
+
from@0.1.7:
resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
@@ -7069,6 +7084,10 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
+ get-east-asian-width@1.4.0:
+ resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
+ engines: {node: '>=18'}
+
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -7089,10 +7108,6 @@ packages:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
- get-stream@8.0.1:
- resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
- engines: {node: '>=16'}
-
get-stream@9.0.1:
resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
engines: {node: '>=18'}
@@ -7124,10 +7139,6 @@ packages:
engines: {node: 20 || >=22}
hasBin: true
- glob@13.0.0:
- resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==}
- engines: {node: 20 || >=22}
-
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
@@ -7148,16 +7159,10 @@ packages:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
- globalyzer@0.1.0:
- resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
-
globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
- globrex@0.1.2:
- resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
-
google-protobuf@3.21.4:
resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==}
@@ -7169,16 +7174,13 @@ packages:
resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==}
engines: {node: '>=16'}
- got@14.6.4:
- resolution: {integrity: sha512-DjsLab39NUMf5iYlK9asVCkHMhaA2hEhrlmf+qXRhjEivuuBHWYbjmty9DA3OORUwZgENTB+6vSmY2ZW8gFHVw==}
+ got@14.6.5:
+ resolution: {integrity: sha512-Su87c0NNeg97de1sO02gy9I8EmE7DCJ1gzcFLcgGpYeq2PnLg4xz73MWrp6HjqbSsjb6Glf4UBDW6JNyZA6uSg==}
engines: {node: '>=20'}
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
graphql@16.12.0:
resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==}
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
@@ -7187,8 +7189,8 @@ packages:
resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==}
engines: {node: '>=0.8.0'}
- happy-dom@20.0.10:
- resolution: {integrity: sha512-6umCCHcjQrhP5oXhrHQQvLB0bwb1UzHAHdsXy+FjtKoYjUhmNZsQL8NivwM1vDvNEChJabVrUYxUnp/ZdYmy2g==}
+ happy-dom@20.0.11:
+ resolution: {integrity: sha512-QsCdAUHAmiDeKeaNojb1OHOPF7NjcWPBR7obdu3NwH2a/oyQaLg5d0aaCy/9My6CdPChYF07dvz5chaXBGaD4g==}
engines: {node: '>=20.0.0'}
hard-rejection@2.1.0:
@@ -7267,6 +7269,10 @@ packages:
resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==}
engines: {node: '>=14'}
+ html-encoding-sniffer@3.0.0:
+ resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
+ engines: {node: '>=12'}
+
html-encoding-sniffer@4.0.0:
resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
engines: {node: '>=18'}
@@ -7280,10 +7286,6 @@ packages:
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
- htmlescape@1.1.1:
- resolution: {integrity: sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==}
- engines: {node: '>=0.10'}
-
htmlparser2@10.0.0:
resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==}
@@ -7307,6 +7309,10 @@ packages:
resolution: {integrity: sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==}
engines: {node: '>=6.0.0'}
+ http-proxy-agent@5.0.0:
+ resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
+ engines: {node: '>= 6'}
+
http-proxy-agent@7.0.2:
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
engines: {node: '>= 14'}
@@ -7347,10 +7353,6 @@ packages:
resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
engines: {node: '>=12.20.0'}
- human-signals@5.0.0:
- resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
- engines: {node: '>=16.17.0'}
-
human-signals@8.0.1:
resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==}
engines: {node: '>=18.18.0'}
@@ -7395,8 +7397,8 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
- import-in-the-middle@1.15.0:
- resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==}
+ import-in-the-middle@2.0.0:
+ resolution: {integrity: sha512-yNZhyQYqXpkT0AKq3F3KLasUSK4fHvebNH5hOsKQw2dhGSALvQ4U0BqUc5suziKvydO5u5hgN2hy1RJaho8U5A==}
import-lazy@4.0.0:
resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
@@ -7415,10 +7417,6 @@ packages:
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'}
- indent-string@5.0.0:
- resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
- engines: {node: '>=12'}
-
index-to-position@1.2.0:
resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==}
engines: {node: '>=18'}
@@ -7462,8 +7460,8 @@ packages:
ios-haptics@0.1.4:
resolution: {integrity: sha512-94FJcSuvmhe4mHTX4Uauj+/2yhs56m4BLkRScy1vNvkv7H1cSjsvfT+olc1sYOUqWlPhtVttAFBHex0cY9CE7Q==}
- ip-address@10.1.0:
- resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
+ ip-address@10.0.1:
+ resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==}
engines: {node: '>= 12'}
ip-address@9.0.5:
@@ -7482,8 +7480,8 @@ packages:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
- ipaddr.js@2.2.0:
- resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
+ ipaddr.js@2.3.0:
+ resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==}
engines: {node: '>= 10'}
irregular-plurals@3.5.0:
@@ -7532,11 +7530,6 @@ packages:
resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
engines: {node: '>= 0.4'}
- is-docker@2.2.1:
- resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
- engines: {node: '>=8'}
- hasBin: true
-
is-expression@4.0.0:
resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==}
@@ -7612,6 +7605,9 @@ packages:
is-promise@2.2.2:
resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
+ is-promise@4.0.0:
+ resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
+
is-regex@1.2.1:
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
@@ -7640,9 +7636,9 @@ packages:
resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
engines: {node: '>= 0.4'}
- is-svg@5.1.0:
- resolution: {integrity: sha512-uVg5yifaTxHoefNf5Jcx+i9RZe2OBYd/UStp1umx+EERa4xGRa3LLGXjoEph43qUORC0qkafUgrXZ6zzK89yGA==}
- engines: {node: '>=14.16'}
+ is-svg@6.1.0:
+ resolution: {integrity: sha512-i7YPdvYuSCYcaLQrKwt8cvKTlwHcdA6Hp8N9SO3Q5jIzo8x6kH3N47W0BvPP7NdxVBmIHx7X9DK36czYYW7lHg==}
+ engines: {node: '>=20'}
is-symbol@1.1.1:
resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
@@ -7675,10 +7671,6 @@ packages:
resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
engines: {node: '>= 0.4'}
- is-wsl@2.2.0:
- resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
- engines: {node: '>=8'}
-
isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
@@ -7776,6 +7768,15 @@ packages:
resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ jest-environment-jsdom@29.7.0:
+ resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
jest-environment-node@29.7.0:
resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7917,11 +7918,11 @@ packages:
resolution: {integrity: sha512-/kmVISmrwVwtyYU40iQUOp3SUPk2dhNCMsZBQX0R1/jZ8maaXJ/oZIzUOiyOqcgtLnETFKYChbJ5iDC/eWmFHg==}
engines: {node: '>=0.1.90'}
- jsdom@26.1.0:
- resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==}
- engines: {node: '>=18'}
+ jsdom@20.0.3:
+ resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==}
+ engines: {node: '>=14'}
peerDependencies:
- canvas: ^3.0.0
+ canvas: ^2.5.0
peerDependenciesMeta:
canvas:
optional: true
@@ -7985,9 +7986,9 @@ packages:
jsonfile@6.2.0:
resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
- jsonld@8.3.3:
- resolution: {integrity: sha512-9YcilrF+dLfg9NTEof/mJLMtbdX1RJ8dbWtJgE00cMOIohb1lIyJl710vFiTaiHTl6ZYODJuBd32xFvUhmv3kg==}
- engines: {node: '>=14'}
+ jsonld@9.0.0:
+ resolution: {integrity: sha512-pjMIdkXfC1T2wrX9B9i2uXhGdyCmgec3qgMht+TDj+S0qX3bjWMQUfL7NeqEhuRTi8G5ESzmL9uGlST7nzSEWg==}
+ engines: {node: '>=18'}
jsonpointer@5.0.1:
resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
@@ -8001,9 +8002,6 @@ packages:
resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==}
engines: {'0': node >=0.6.0}
- jsrsasign@11.1.0:
- resolution: {integrity: sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==}
-
jstransformer@1.0.0:
resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==}
@@ -8035,19 +8033,9 @@ packages:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
- ky-universal@0.11.0:
- resolution: {integrity: sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==}
- engines: {node: '>=14.16'}
- peerDependencies:
- ky: '>=0.31.4'
- web-streams-polyfill: '>=3.2.1'
- peerDependenciesMeta:
- web-streams-polyfill:
- optional: true
-
- ky@0.33.3:
- resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==}
- engines: {node: '>=14.16'}
+ ky@1.14.0:
+ resolution: {integrity: sha512-Rczb6FMM6JT0lvrOlP5WUOCB7s9XKxzwgErzhKlKde1bEV90FXplV1o87fpt4PU/asJFiqjYJxAJyzJhcrxOsQ==}
+ engines: {node: '>=18'}
lazy-ass@1.6.0:
resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==}
@@ -8096,10 +8084,6 @@ packages:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
- locate-path@7.2.0:
- resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
lodash.defaults@4.2.0:
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
@@ -8171,9 +8155,6 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- magicast@0.3.5:
- resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
-
magicast@0.5.1:
resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==}
@@ -8265,8 +8246,12 @@ packages:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
- mediabunny@1.25.0:
- resolution: {integrity: sha512-ozaqk6zS2Vbf3+3+OoxKfnCVeZRcv5PO8DgQtBrM5vpWIbpEK+kMVV6pgfo4mC3XtMwvQEMbhj3zEf0LNklh9w==}
+ media-typer@1.1.0:
+ resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
+ engines: {node: '>= 0.8'}
+
+ mediabunny@1.25.8:
+ resolution: {integrity: sha512-2WCa9WtEbHOvg5rAWXQjVE+O/r01fpj65ymZdA2XhIeaWmdDQ40p32F0WY6tdBi+aeY+4ldwhAOpo0eyVrYTGg==}
meilisearch@0.54.0:
resolution: {integrity: sha512-b1bwJAEfj8C6hgSN88+/LvW3pe3nWC+thBS2seAbPZGakf/vzsLqppgZquiomzCr2GhU7U7H289625qhYe3rbw==}
@@ -8284,6 +8269,10 @@ packages:
merge-descriptors@1.0.3:
resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+ merge-descriptors@2.0.0:
+ resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
+ engines: {node: '>=18'}
+
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -8298,10 +8287,6 @@ packages:
mfm-js@0.25.0:
resolution: {integrity: sha512-JoK5TOtswXIvZSZ9hUEL+ZkcNV4onu/DtkaKeXK846+sJBBF8DvxYmPutt7nPaRDsUMmJGr64PNVMFpMGdk3hw==}
- microformats-parser@2.0.4:
- resolution: {integrity: sha512-DA2yt3uz2JjupBGoNvaG9ngBP5vSTI1ky2yhxBai/RnQrlzo+gEzuCdvwIIjj2nh3uVPDybTP5u7uua7pOa6LA==}
- engines: {node: '>=18'}
-
micromark-core-commonmark@2.0.3:
resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
@@ -8402,6 +8387,10 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
+ mime-types@3.0.2:
+ resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
+ engines: {node: '>=18'}
+
mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
@@ -8519,9 +8508,6 @@ packages:
engines: {node: '>=10'}
hasBin: true
- mnemonist@0.40.0:
- resolution: {integrity: sha512-kdd8AFNig2AD5Rkih7EPCXhu/iMvwevQFX/uEiGhZyPZi7fHqOoF4V4kHLpCfysxXMgQ4B52kdPMCwARshKvEg==}
-
mock-socket@9.3.1:
resolution: {integrity: sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==}
engines: {node: '>= 8'}
@@ -8551,8 +8537,8 @@ packages:
peerDependencies:
msw: ^2.0.0
- msw@2.12.2:
- resolution: {integrity: sha512-Fsr8AR5Yu6C0thoWa1Z8qGBFQLDvLsWlAn/v3CNLiUizoRqBYArK3Ex3thXpMWRr1Li5/MKLOEZ5mLygUmWi1A==}
+ msw@2.12.4:
+ resolution: {integrity: sha512-rHNiVfTyKhzc0EjoXUBVGteNKBevdjOlVC6GlIRXpy+/3LHEIGRovnB5WPjcvmNODVQ1TNFnoa7wsGbd0V3epg==}
engines: {node: '>=18'}
hasBin: true
peerDependencies:
@@ -8669,14 +8655,17 @@ packages:
engines: {node: ^18.17.0 || >=20.5.0}
hasBin: true
+ node-html-parser@7.0.1:
+ resolution: {integrity: sha512-KGtmPY2kS0thCWGK0VuPyOS+pBKhhe8gXztzA2ilAOhbUbxa9homF1bOyKvhGzMLXUoRds9IOmr/v5lr/lqNmA==}
+
node-int64@0.4.0:
resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
node-releases@2.0.27:
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
- nodemailer@7.0.10:
- resolution: {integrity: sha512-Us/Se1WtT0ylXgNFfyFSx4LElllVLJXQjWi2Xz17xWw7amDKO2MLtFnVp1WACy7GkVGs+oBlRopVNUzlrGSw1w==}
+ nodemailer@7.0.11:
+ resolution: {integrity: sha512-gnXhNRE0FNhD7wPSCGhdNh46Hs6nm+uTyg+Kq0cZukNQiYdnCsoQjodNP9BQVG9XrcK/v6/MgpAPBUFyzh9pvw==}
engines: {node: '>=6.0.0'}
nodemon@3.1.11:
@@ -8743,8 +8732,8 @@ packages:
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
- nwsapi@2.2.22:
- resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==}
+ nwsapi@2.2.23:
+ resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==}
oauth2orize-pkce@0.1.2:
resolution: {integrity: sha512-grto2UYhXHi9GLE3IBgBBbV87xci55+bCyjpVuxKyzol6I5Rg0K1MiTuXE+JZk54R86SG2wqXODMiZYHraPpxw==}
@@ -8753,9 +8742,6 @@ packages:
resolution: {integrity: sha512-j4XtFDQUBsvUHPjUmvmNDUDMYed2MphMIJBhyxVVe8hGCjkuYnjIsW+D9qk8c5ciXRdnk6x6tEbiO6PLeOZdCQ==}
engines: {node: '>= 0.4.0'}
- oauth@0.10.2:
- resolution: {integrity: sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==}
-
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -8788,13 +8774,13 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
- obliterator@2.0.5:
- resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==}
-
oblivious-set@2.0.0:
resolution: {integrity: sha512-QOUH5Xrsced9fKXaQTjWoDGKeS/Or7E2jB0FN63N4mkAO4qJdB7WR7e6qWAOHM5nk25FJ8TGjhP7DH4l6vFVLg==}
engines: {node: '>=16'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
on-exit-leak-free@2.1.2:
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
engines: {node: '>=14.0.0'}
@@ -8817,12 +8803,8 @@ packages:
oniguruma-parser@0.12.1:
resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
- oniguruma-to-es@4.3.3:
- resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
-
- open@8.4.2:
- resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
- engines: {node: '>=12'}
+ oniguruma-to-es@4.3.4:
+ resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==}
openapi-types@12.1.3:
resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
@@ -8873,10 +8855,6 @@ packages:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
- p-limit@4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
p-locate@4.1.0:
resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
engines: {node: '>=8'}
@@ -8885,16 +8863,12 @@ packages:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
- p-locate@6.0.0:
- resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
p-map@4.0.0:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
- p-map@7.0.4:
- resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==}
+ p-map@7.0.3:
+ resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==}
engines: {node: '>=18'}
p-queue@6.6.2:
@@ -8954,10 +8928,6 @@ packages:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
- path-exists@5.0.0:
- resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
@@ -9059,9 +9029,9 @@ packages:
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
- pid-port@1.0.2:
- resolution: {integrity: sha512-Khqp07zX8IJpmIg56bHrLxS3M0iSL4cq6wnMq8YE7r/hSw3Kn4QxYS6QJg8Bs22Z7CSVj7eSsxFuigYVIFWmjg==}
- engines: {node: '>=18'}
+ pid-port@2.0.0:
+ resolution: {integrity: sha512-EDmfRxLl6lkhPjDI+19l5pkII89xVsiCP3aGjS808f7M16DyCKSXEWthD/hjyDLn5I4gKqTVw7hSgdvdXRJDTw==}
+ engines: {node: '>=20'}
pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
@@ -9084,8 +9054,8 @@ packages:
piscina@4.9.2:
resolution: {integrity: sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==}
- pkce-challenge@4.1.0:
- resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==}
+ pkce-challenge@5.0.1:
+ resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==}
engines: {node: '>=16.20.0'}
pkg-dir@4.2.0:
@@ -9108,8 +9078,8 @@ packages:
resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
engines: {node: '>=10.13.0'}
- pnpm@10.22.0:
- resolution: {integrity: sha512-vwSe/plbKPUn/StBrgR0zikYb37cs79UUIe9Yfu+uyv3U2LRMH/aCcLSiOHkmXh6wS1Py2F6l0cYpgUfLu50HA==}
+ pnpm@10.25.0:
+ resolution: {integrity: sha512-XoJjkCevN8+DIGG8xtY5whljRIjg8rrr54UCink957Ul/80/f/V09emGBlTgmP6FK6isXdXO/hdn0joCCpL1AQ==}
engines: {node: '>=18.12'}
hasBin: true
@@ -9271,10 +9241,6 @@ packages:
peerDependencies:
postcss: ^8.4.32
- postcss-selector-parser@6.1.2:
- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
- engines: {node: '>=4'}
-
postcss-selector-parser@7.1.0:
resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==}
engines: {node: '>=4'}
@@ -9318,8 +9284,8 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prettier@3.6.2:
- resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
+ prettier@3.7.4:
+ resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
engines: {node: '>=14'}
hasBin: true
@@ -9405,11 +9371,18 @@ packages:
resolution: {integrity: sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ ps-list@9.0.0:
+ resolution: {integrity: sha512-lxMEoIL/BQlk2KunFzxwUPwMvjFH7x7cmvzSLsSHpyMXl9FFfLUlfKrYwFc4wx/ZaIxxuXC4n8rjQ1CX/tkXVQ==}
+ engines: {node: '>=20'}
+
ps-tree@1.2.0:
resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==}
engines: {node: '>= 0.10'}
hasBin: true
+ psl@1.15.0:
+ resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
+
pstree.remy@1.1.8:
resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
@@ -9493,6 +9466,9 @@ packages:
resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
engines: {node: '>=0.6'}
+ querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+
queue-lit@1.5.2:
resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==}
engines: {node: '>=12'}
@@ -9530,9 +9506,9 @@ packages:
resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==}
engines: {node: '>= 0.10'}
- rdf-canonize@3.4.0:
- resolution: {integrity: sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==}
- engines: {node: '>=12'}
+ rdf-canonize@5.0.0:
+ resolution: {integrity: sha512-g8OUrgMXAR9ys/ZuJVfBr05sPPoMA7nHIVs8VEvg9QwM5W4GR2qSFEEHjsyHF1eWlBaf8Ev40WNjQFQ+nJTO3w==}
+ engines: {node: '>=18'}
re2@1.22.3:
resolution: {integrity: sha512-002aE82U91DiaUA16U6vbiJusvPXn1OWiQukOxJkVUTXbzrSuQbFNHYKcGw8QK/uifRCfjl2Hd/vXYDanKkmaQ==}
@@ -9546,10 +9522,10 @@ packages:
resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==}
engines: {node: ^20.9.0 || >=22}
- react-dom@19.2.0:
- resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==}
+ react-dom@19.2.1:
+ resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==}
peerDependencies:
- react: ^19.2.0
+ react: ^19.2.1
react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
@@ -9557,8 +9533,8 @@ packages:
react-is@18.3.1:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
- react@19.2.0:
- resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==}
+ react@19.2.1:
+ resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==}
engines: {node: '>=0.10.0'}
read-pkg-up@7.0.1:
@@ -9583,9 +9559,9 @@ packages:
readdir-glob@1.1.3:
resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
- readdirp@4.1.2:
- resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
- engines: {node: '>= 14.18.0'}
+ readdirp@5.0.0:
+ resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==}
+ engines: {node: '>= 20.19.0'}
real-require@0.2.0:
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
@@ -9609,10 +9585,6 @@ packages:
redis-info@3.1.0:
resolution: {integrity: sha512-ER4L9Sh/vm63DkIE0bkSjxluQlioBiBgf5w1UuldaW/3vPcecdljVDisZhmnCMvsxHNiARTTDDHGg9cGwTfrKg==}
- redis-lock@0.1.4:
- resolution: {integrity: sha512-7/+zu86XVQfJVx1nHTzux5reglDiyUCDwmW7TSlvVezfhH2YLc/Rc8NE0ejQG+8/0lwKzm29/u/4+ogKeLosiA==}
- engines: {node: '>=0.6'}
-
redis-parser@3.0.0:
resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==}
engines: {node: '>=4'}
@@ -9663,13 +9635,16 @@ packages:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
- require-in-the-middle@7.5.2:
- resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==}
- engines: {node: '>=8.6.0'}
+ require-in-the-middle@8.0.1:
+ resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==}
+ engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'}
require-main-filename@2.0.0:
resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+ requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+
resolve-alpn@1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
@@ -9742,8 +9717,9 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
- rrweb-cssom@0.8.0:
- resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==}
+ router@2.2.0:
+ resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
+ engines: {node: '>= 18'}
rss-parser@3.13.0:
resolution: {integrity: sha512-7jWUBV5yGN3rqMMj7CZufl/291QAhvrrGpDNE4k/02ZchL0npisiYYqULF71jCEKoIiHvK/Q2e6IkDwPziT7+w==}
@@ -9785,8 +9761,8 @@ packages:
sanitize-html@2.17.0:
resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==}
- sass@1.94.1:
- resolution: {integrity: sha512-/YVm5FRQaRlr3oNh2LLFYne1PdPlRZGyKnHh1sLleOqLcohTR4eUUvBjBIqkl1fEXd1MGOHgzJGJh+LgTtV4KQ==}
+ sass@1.95.1:
+ resolution: {integrity: sha512-uPoDh5NIEZV4Dp5GBodkmNY9tSQfXY02pmCcUo+FR1P+x953HGkpw+vV28D4IqYB6f8webZtwoSaZaiPtpTeMg==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -9803,9 +9779,6 @@ packages:
secure-json-parse@2.7.0:
resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
- secure-json-parse@3.0.2:
- resolution: {integrity: sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==}
-
secure-json-parse@4.1.0:
resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==}
@@ -9846,15 +9819,23 @@ packages:
resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
engines: {node: '>= 0.8.0'}
+ send@1.2.0:
+ resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
+ engines: {node: '>= 18'}
+
serve-static@1.16.2:
resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
engines: {node: '>= 0.8.0'}
+ serve-static@2.2.0:
+ resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
+ engines: {node: '>= 18'}
+
set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
- set-cookie-parser@2.7.2:
- resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
+ set-cookie-parser@2.7.1:
+ resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
@@ -9891,11 +9872,8 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- shiki@3.15.0:
- resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==}
-
- shimmer@1.2.1:
- resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
+ shiki@3.19.0:
+ resolution: {integrity: sha512-77VJr3OR/VUZzPiStyRhADmO2jApMM0V2b1qf0RpfWya8Zr1PeZev5AEpPGAAKWdiYUtcZGBE4F5QvJml1PvWA==}
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -10134,8 +10112,8 @@ packages:
standard-as-callback@2.1.0:
resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
- start-server-and-test@2.1.2:
- resolution: {integrity: sha512-OIjfo3G6QV9Sh6IlMqj58oZwVhPVuU/l6uVACG7YNE9kAfDvcYoPThtb0NNT3tZMMC3wOYbXnC15yiCSNFkdRg==}
+ start-server-and-test@2.1.3:
+ resolution: {integrity: sha512-k4EcbNjeg0odaDkAMlIeDVDByqX9PIgL4tivgP2tES6Zd8o+4pTq/HgbWCyA3VHIoZopB+wGnNPKYGGSByNriQ==}
engines: {node: '>=16'}
hasBin: true
@@ -10173,8 +10151,8 @@ packages:
react-dom:
optional: true
- storybook@9.1.16:
- resolution: {integrity: sha512-339U14K6l46EFyRvaPS2ZlL7v7Pb+LlcXT8KAETrGPxq8v1sAjj2HAOB6zrlAK3M+0+ricssfAwsLCwt7Eg8TQ==}
+ storybook@10.1.5:
+ resolution: {integrity: sha512-q3xB1pOcmmHUH9LfQNY/BWMGxp3fc1OALJf+F5BXIxHGQUEIizz6V1AbDOngWN9oWzuA8Gdz5rOCe7yelOMWVg==}
hasBin: true
peerDependencies:
prettier: ^2 || ^3
@@ -10220,6 +10198,10 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
+ string-width@7.2.0:
+ resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+ engines: {node: '>=18'}
+
string.prototype.trim@1.2.10:
resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
engines: {node: '>= 0.4'}
@@ -10287,12 +10269,6 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- strip-literal@3.1.0:
- resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==}
-
- strnum@1.1.2:
- resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==}
-
strnum@2.1.1:
resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==}
@@ -10346,8 +10322,8 @@ packages:
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
- systeminformation@5.27.11:
- resolution: {integrity: sha512-K3Lto/2m3K2twmKHdgx5B+0in9qhXK4YnoT9rIlgwN/4v7OV5c8IjbeAUkuky/6VzCQC7iKCAqi8rZathCdjHg==}
+ systeminformation@5.27.14:
+ resolution: {integrity: sha512-3DoNDYSZBLxBwaJtQGWNpq0fonga/VZ47HY1+7/G3YoIPaPz93Df6egSzzTKbEMmlzUpy3eQ0nR9REuYIycXGg==}
engines: {node: '>=8.0.0'}
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
hasBin: true
@@ -10358,6 +10334,10 @@ packages:
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
hasBin: true
+ tagged-tag@1.0.0:
+ resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
+ engines: {node: '>=20'}
+
tar-stream@3.1.7:
resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
@@ -10382,10 +10362,6 @@ packages:
resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
engines: {node: '>=8'}
- test-exclude@7.0.1:
- resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
- engines: {node: '>=18'}
-
text-decoder@1.2.3:
resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
@@ -10408,9 +10384,6 @@ packages:
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
- tiny-glob@0.2.9:
- resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
-
tiny-invariant@1.3.3:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
@@ -10420,17 +10393,14 @@ packages:
tinycolor2@1.6.0:
resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
- tinyexec@0.3.2:
- resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
+ tinyexec@1.0.2:
+ resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
+ engines: {node: '>=18'}
tinyglobby@0.2.15:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
- tinypool@1.1.1:
- resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
- engines: {node: ^18.0.0 || >=20.0.0}
-
tinyrainbow@1.2.0:
resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
engines: {node: '>=14.0.0'}
@@ -10502,6 +10472,10 @@ packages:
resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==}
hasBin: true
+ tough-cookie@4.1.4:
+ resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
+ engines: {node: '>=6'}
+
tough-cookie@5.1.2:
resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==}
engines: {node: '>=16'}
@@ -10513,9 +10487,9 @@ packages:
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
- tr46@5.1.1:
- resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==}
- engines: {node: '>=18'}
+ tr46@3.0.0:
+ resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
+ engines: {node: '>=12'}
tr46@6.0.0:
resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==}
@@ -10568,14 +10542,21 @@ packages:
engines: {node: '>=14.16'}
hasBin: true
+ tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tsx@4.20.6:
- resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==}
+ tsx@4.21.0:
+ resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
engines: {node: '>=18.0.0'}
hasBin: true
+ tsyringe@4.10.0:
+ resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==}
+ engines: {node: '>= 6.0.0'}
+
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
@@ -10618,10 +10599,18 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
+ type-fest@5.2.0:
+ resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==}
+ engines: {node: '>=20'}
+
type-is@1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
+ type-is@2.0.1:
+ resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
+ engines: {node: '>= 0.6'}
+
typed-array-buffer@1.0.3:
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
engines: {node: '>= 0.4'}
@@ -10641,24 +10630,23 @@ packages:
typedarray@0.0.6:
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
- typeorm@0.3.27:
- resolution: {integrity: sha512-pNV1bn+1n8qEe8tUNsNdD8ejuPcMAg47u2lUGnbsajiNUr3p2Js1XLKQjBMH0yMRMDfdX8T+fIRejFmIwy9x4A==}
+ typeorm@0.3.28:
+ resolution: {integrity: sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==}
engines: {node: '>=16.13.0'}
hasBin: true
peerDependencies:
- '@google-cloud/spanner': ^5.18.0 || ^6.0.0 || ^7.0.0
+ '@google-cloud/spanner': ^5.18.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
'@sap/hana-client': ^2.14.22
better-sqlite3: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0
ioredis: ^5.0.4
mongodb: ^5.8.0 || ^6.0.0
- mssql: ^9.1.1 || ^10.0.1 || ^11.0.1
+ mssql: ^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0
mysql2: ^2.2.5 || ^3.0.1
oracledb: ^6.3.0
pg: ^8.5.1
pg-native: ^3.0.0
pg-query-stream: ^4.0.0
redis: ^3.1.1 || ^4.0.0 || ^5.0.14
- reflect-metadata: ^0.1.14 || ^0.2.0
sql.js: ^1.4.0
sqlite3: ^5.0.3
ts-node: ^10.7.0
@@ -10718,8 +10706,8 @@ packages:
resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==}
engines: {node: '>=18'}
- ulid@2.4.0:
- resolution: {integrity: sha512-fIRiVTJNcSRmXKPZtGzFQv9WRrZ3M9eoptl/teFJvjOzmpU+/K/JH6HZ8deBfb5vMEpicJcLn7JmvdknlMq7Zg==}
+ ulid@3.0.2:
+ resolution: {integrity: sha512-yu26mwteFYzBAot7KVMqFGCVpsF6g8wXfJzQUHvu1no3+rRRSFcSV2nKeYvNPLD2J4b08jYBDhHUjeH0ygIl9w==}
hasBin: true
unbox-primitive@1.1.0:
@@ -10738,10 +10726,6 @@ packages:
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
- undici@5.29.0:
- resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==}
- engines: {node: '>=14.0'}
-
undici@6.22.0:
resolution: {integrity: sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==}
engines: {node: '>=18.17'}
@@ -10750,10 +10734,6 @@ packages:
resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==}
engines: {node: '>=20.18.1'}
- unicorn-magic@0.1.0:
- resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
- engines: {node: '>=18'}
-
unicorn-magic@0.3.0:
resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
engines: {node: '>=18'}
@@ -10788,6 +10768,10 @@ packages:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
+ universalify@0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+
universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
@@ -10803,6 +10787,10 @@ packages:
resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
engines: {node: '>=14.0.0'}
+ unplugin@2.3.10:
+ resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==}
+ engines: {node: '>=18.12.0'}
+
until-async@3.0.2:
resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==}
@@ -10819,6 +10807,14 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+
+ use-sync-external-store@1.6.0:
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
utf-8-validate@6.0.5:
resolution: {integrity: sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA==}
engines: {node: '>=6.14.2'}
@@ -10880,13 +10876,8 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
- vite-node@3.2.4:
- resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==}
- engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
- hasBin: true
-
- vite-plugin-glsl@1.5.4:
- resolution: {integrity: sha512-EUmwL+IDK+dGDAlaKm89++k8aJ4qmHjLQxrngww3GLOOAQ4aZ48o9YR1ie7XPe08iDWlG+9Uh5V7oiZcXTUbyA==}
+ vite-plugin-glsl@1.5.5:
+ resolution: {integrity: sha512-6NM2P4JkM+1hNSqMhM4eagX03bmhEoTyrOrk68y3Q6KXfdF73QIuCb6BmRZvwLPgXTCOBM3Zc8gL1WxctYnrUQ==}
engines: {node: '>= 20.17.0', npm: '>= 10.8.3'}
peerDependencies:
'@rollup/pluginutils': ^5.x
@@ -10901,8 +10892,8 @@ packages:
vite-plugin-turbosnap@1.0.3:
resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==}
- vite@7.2.2:
- resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==}
+ vite@7.2.7:
+ resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -10952,52 +10943,24 @@ packages:
peerDependencies:
vitest: '>=3'
- vitest@3.2.4:
- resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==}
- engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
- hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@types/debug': ^4.1.12
- '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
- '@vitest/browser': 3.2.4
- '@vitest/ui': 3.2.4
- happy-dom: '*'
- jsdom: '*'
- peerDependenciesMeta:
- '@edge-runtime/vm':
- optional: true
- '@types/debug':
- optional: true
- '@types/node':
- optional: true
- '@vitest/browser':
- optional: true
- '@vitest/ui':
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
-
- vitest@4.0.10:
- resolution: {integrity: sha512-2Fqty3MM9CDwOVet/jaQalYlbcjATZwPYGcqpiYQqgQ/dLC7GuHdISKgTYIVF/kaishKxLzleKWWfbSDklyIKg==}
+ vitest@4.0.15:
+ resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
- '@types/debug': ^4.1.12
+ '@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.0.10
- '@vitest/browser-preview': 4.0.10
- '@vitest/browser-webdriverio': 4.0.10
- '@vitest/ui': 4.0.10
+ '@vitest/browser-playwright': 4.0.15
+ '@vitest/browser-preview': 4.0.15
+ '@vitest/browser-webdriverio': 4.0.15
+ '@vitest/ui': 4.0.15
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
- '@types/debug':
+ '@opentelemetry/api':
optional: true
'@types/node':
optional: true
@@ -11046,8 +11009,8 @@ packages:
vue-component-type-helpers@2.2.12:
resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==}
- vue-component-type-helpers@3.1.4:
- resolution: {integrity: sha512-Uws7Ew1OzTTqHW8ZVl/qLl/HB+jf08M0NdFONbVWAx0N4gMLK8yfZDgeB77hDnBmaigWWEn5qP8T9BG59jIeyQ==}
+ vue-component-type-helpers@3.1.8:
+ resolution: {integrity: sha512-oaowlmEM6BaYY+8o+9D9cuzxpWQWHqHTMKakMxXu0E+UCIOMTljyIPO15jcnaCwJtZu/zWDotK7mOIHvWD9mcw==}
vue-demi@0.14.10:
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
@@ -11076,14 +11039,14 @@ packages:
peerDependencies:
vue: '>=2'
- vue-tsc@3.1.4:
- resolution: {integrity: sha512-GsRJxttj4WkmXW/zDwYPGMJAN3np/4jTzoDFQTpTsI5Vg/JKMWamBwamlmLihgSVHO66y9P7GX+uoliYxeI4Hw==}
+ vue-tsc@3.1.8:
+ resolution: {integrity: sha512-deKgwx6exIHeZwF601P1ktZKNF0bepaSN4jBU3AsbldPx9gylUc1JDxYppl82yxgkAgaz0Y0LCLOi+cXe9HMYA==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
- vue@3.5.24:
- resolution: {integrity: sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==}
+ vue@3.5.25:
+ resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -11095,13 +11058,17 @@ packages:
peerDependencies:
vue: ^3.0.1
+ w3c-xmlserializer@4.0.0:
+ resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
+ engines: {node: '>=14'}
+
w3c-xmlserializer@5.0.0:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
- wait-on@8.0.5:
- resolution: {integrity: sha512-J3WlS0txVHkhLRb2FsmRg3dkMTCV1+M6Xra3Ho7HzZDHpE7DCOnoSoCJsZotrmW3uRMhvIJGSKUKrh/MeF4iag==}
- engines: {node: '>=12.0.0'}
+ wait-on@9.0.3:
+ resolution: {integrity: sha512-13zBnyYvFDW1rBvWiJ6Av3ymAaq8EDQuvxZnPIw3g04UqGi4TyoIJABmfJ6zrvKo9yeFQExNkOk7idQbDJcuKA==}
+ engines: {node: '>=20.0.0'}
hasBin: true
walker@1.0.8:
@@ -11142,6 +11109,10 @@ packages:
webpack-virtual-modules@0.6.2:
resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+ whatwg-encoding@2.0.0:
+ resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
+ engines: {node: '>=12'}
+
whatwg-encoding@3.1.1:
resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
engines: {node: '>=18'}
@@ -11154,9 +11125,9 @@ packages:
resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
engines: {node: '>=18'}
- whatwg-url@14.2.0:
- resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==}
- engines: {node: '>=18'}
+ whatwg-url@11.0.0:
+ resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==}
+ engines: {node: '>=12'}
whatwg-url@15.1.0:
resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==}
@@ -11226,6 +11197,10 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
+ wrap-ansi@9.0.2:
+ resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
+ engines: {node: '>=18'}
+
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
@@ -11307,6 +11282,10 @@ packages:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
+ yargs-parser@22.0.0:
+ resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+
yargs@15.4.1:
resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
engines: {node: '>=8'}
@@ -11319,6 +11298,10 @@ packages:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
+ yargs@18.0.0:
+ resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+
yauzl@2.10.0:
resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
@@ -11330,10 +11313,6 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- yocto-queue@1.2.2:
- resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
- engines: {node: '>=12.20'}
-
yoctocolors-cjs@2.1.3:
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
engines: {node: '>=18'}
@@ -11356,11 +11335,6 @@ snapshots:
'@adobe/css-tools@4.4.4': {}
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
-
'@analytics/cookie-utils@0.2.14':
dependencies:
'@analytics/global-storage-utils': 0.1.9
@@ -11412,15 +11386,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@asamuzakjp/css-color@3.2.0':
- dependencies:
- '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
- '@csstools/css-tokenizer': 3.0.4
- lru-cache: 10.4.3
-
- '@asamuzakjp/css-color@4.1.0':
+ '@asamuzakjp/css-color@4.0.5':
dependencies:
'@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
'@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
@@ -11488,31 +11454,31 @@ snapshots:
'@smithy/util-utf8': 2.3.0
tslib: 2.8.1
- '@aws-sdk/client-s3@3.936.0':
+ '@aws-sdk/client-s3@3.948.0':
dependencies:
'@aws-crypto/sha1-browser': 5.2.0
'@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0
- '@aws-sdk/core': 3.936.0
- '@aws-sdk/credential-provider-node': 3.936.0
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/credential-provider-node': 3.948.0
'@aws-sdk/middleware-bucket-endpoint': 3.936.0
'@aws-sdk/middleware-expect-continue': 3.936.0
- '@aws-sdk/middleware-flexible-checksums': 3.936.0
+ '@aws-sdk/middleware-flexible-checksums': 3.947.0
'@aws-sdk/middleware-host-header': 3.936.0
'@aws-sdk/middleware-location-constraint': 3.936.0
'@aws-sdk/middleware-logger': 3.936.0
- '@aws-sdk/middleware-recursion-detection': 3.936.0
- '@aws-sdk/middleware-sdk-s3': 3.936.0
+ '@aws-sdk/middleware-recursion-detection': 3.948.0
+ '@aws-sdk/middleware-sdk-s3': 3.947.0
'@aws-sdk/middleware-ssec': 3.936.0
- '@aws-sdk/middleware-user-agent': 3.936.0
+ '@aws-sdk/middleware-user-agent': 3.947.0
'@aws-sdk/region-config-resolver': 3.936.0
- '@aws-sdk/signature-v4-multi-region': 3.936.0
+ '@aws-sdk/signature-v4-multi-region': 3.947.0
'@aws-sdk/types': 3.936.0
'@aws-sdk/util-endpoints': 3.936.0
'@aws-sdk/util-user-agent-browser': 3.936.0
- '@aws-sdk/util-user-agent-node': 3.936.0
+ '@aws-sdk/util-user-agent-node': 3.947.0
'@smithy/config-resolver': 4.4.3
- '@smithy/core': 3.18.5
+ '@smithy/core': 3.18.7
'@smithy/eventstream-serde-browser': 4.2.5
'@smithy/eventstream-serde-config-resolver': 4.3.5
'@smithy/eventstream-serde-node': 4.2.5
@@ -11523,21 +11489,21 @@ snapshots:
'@smithy/invalid-dependency': 4.2.5
'@smithy/md5-js': 4.2.5
'@smithy/middleware-content-length': 4.2.5
- '@smithy/middleware-endpoint': 4.3.12
- '@smithy/middleware-retry': 4.4.12
+ '@smithy/middleware-endpoint': 4.3.14
+ '@smithy/middleware-retry': 4.4.14
'@smithy/middleware-serde': 4.2.6
'@smithy/middleware-stack': 4.2.5
'@smithy/node-config-provider': 4.3.5
'@smithy/node-http-handler': 4.4.5
'@smithy/protocol-http': 5.3.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
'@smithy/url-parser': 4.2.5
'@smithy/util-base64': 4.3.0
'@smithy/util-body-length-browser': 4.2.0
'@smithy/util-body-length-node': 4.2.1
- '@smithy/util-defaults-mode-browser': 4.3.11
- '@smithy/util-defaults-mode-node': 4.2.14
+ '@smithy/util-defaults-mode-browser': 4.3.13
+ '@smithy/util-defaults-mode-node': 4.2.16
'@smithy/util-endpoints': 3.2.5
'@smithy/util-middleware': 4.2.5
'@smithy/util-retry': 4.2.5
@@ -11548,7 +11514,7 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/client-ses@3.936.0':
+ '@aws-sdk/client-sesv2@3.938.0':
dependencies:
'@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0
@@ -11559,36 +11525,36 @@ snapshots:
'@aws-sdk/middleware-recursion-detection': 3.936.0
'@aws-sdk/middleware-user-agent': 3.936.0
'@aws-sdk/region-config-resolver': 3.936.0
+ '@aws-sdk/signature-v4-multi-region': 3.936.0
'@aws-sdk/types': 3.936.0
'@aws-sdk/util-endpoints': 3.936.0
'@aws-sdk/util-user-agent-browser': 3.936.0
'@aws-sdk/util-user-agent-node': 3.936.0
'@smithy/config-resolver': 4.4.3
- '@smithy/core': 3.18.5
+ '@smithy/core': 3.18.7
'@smithy/fetch-http-handler': 5.3.6
'@smithy/hash-node': 4.2.5
'@smithy/invalid-dependency': 4.2.5
'@smithy/middleware-content-length': 4.2.5
- '@smithy/middleware-endpoint': 4.3.12
- '@smithy/middleware-retry': 4.4.12
+ '@smithy/middleware-endpoint': 4.3.14
+ '@smithy/middleware-retry': 4.4.14
'@smithy/middleware-serde': 4.2.6
'@smithy/middleware-stack': 4.2.5
'@smithy/node-config-provider': 4.3.5
'@smithy/node-http-handler': 4.4.5
'@smithy/protocol-http': 5.3.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
'@smithy/url-parser': 4.2.5
'@smithy/util-base64': 4.3.0
'@smithy/util-body-length-browser': 4.2.0
'@smithy/util-body-length-node': 4.2.1
- '@smithy/util-defaults-mode-browser': 4.3.11
- '@smithy/util-defaults-mode-node': 4.2.14
+ '@smithy/util-defaults-mode-browser': 4.3.13
+ '@smithy/util-defaults-mode-node': 4.2.16
'@smithy/util-endpoints': 3.2.5
'@smithy/util-middleware': 4.2.5
'@smithy/util-retry': 4.2.5
'@smithy/util-utf8': 4.2.0
- '@smithy/util-waiter': 4.2.5
tslib: 2.8.1
transitivePeerDependencies:
- aws-crt
@@ -11608,26 +11574,69 @@ snapshots:
'@aws-sdk/util-user-agent-browser': 3.936.0
'@aws-sdk/util-user-agent-node': 3.936.0
'@smithy/config-resolver': 4.4.3
- '@smithy/core': 3.18.5
+ '@smithy/core': 3.18.7
'@smithy/fetch-http-handler': 5.3.6
'@smithy/hash-node': 4.2.5
'@smithy/invalid-dependency': 4.2.5
'@smithy/middleware-content-length': 4.2.5
- '@smithy/middleware-endpoint': 4.3.12
- '@smithy/middleware-retry': 4.4.12
+ '@smithy/middleware-endpoint': 4.3.14
+ '@smithy/middleware-retry': 4.4.14
'@smithy/middleware-serde': 4.2.6
'@smithy/middleware-stack': 4.2.5
'@smithy/node-config-provider': 4.3.5
'@smithy/node-http-handler': 4.4.5
'@smithy/protocol-http': 5.3.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
'@smithy/url-parser': 4.2.5
'@smithy/util-base64': 4.3.0
'@smithy/util-body-length-browser': 4.2.0
'@smithy/util-body-length-node': 4.2.1
- '@smithy/util-defaults-mode-browser': 4.3.11
- '@smithy/util-defaults-mode-node': 4.2.14
+ '@smithy/util-defaults-mode-browser': 4.3.13
+ '@smithy/util-defaults-mode-node': 4.2.16
+ '@smithy/util-endpoints': 3.2.5
+ '@smithy/util-middleware': 4.2.5
+ '@smithy/util-retry': 4.2.5
+ '@smithy/util-utf8': 4.2.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/client-sso@3.948.0':
+ dependencies:
+ '@aws-crypto/sha256-browser': 5.2.0
+ '@aws-crypto/sha256-js': 5.2.0
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/middleware-host-header': 3.936.0
+ '@aws-sdk/middleware-logger': 3.936.0
+ '@aws-sdk/middleware-recursion-detection': 3.948.0
+ '@aws-sdk/middleware-user-agent': 3.947.0
+ '@aws-sdk/region-config-resolver': 3.936.0
+ '@aws-sdk/types': 3.936.0
+ '@aws-sdk/util-endpoints': 3.936.0
+ '@aws-sdk/util-user-agent-browser': 3.936.0
+ '@aws-sdk/util-user-agent-node': 3.947.0
+ '@smithy/config-resolver': 4.4.3
+ '@smithy/core': 3.18.7
+ '@smithy/fetch-http-handler': 5.3.6
+ '@smithy/hash-node': 4.2.5
+ '@smithy/invalid-dependency': 4.2.5
+ '@smithy/middleware-content-length': 4.2.5
+ '@smithy/middleware-endpoint': 4.3.14
+ '@smithy/middleware-retry': 4.4.14
+ '@smithy/middleware-serde': 4.2.6
+ '@smithy/middleware-stack': 4.2.5
+ '@smithy/node-config-provider': 4.3.5
+ '@smithy/node-http-handler': 4.4.5
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/smithy-client': 4.9.10
+ '@smithy/types': 4.9.0
+ '@smithy/url-parser': 4.2.5
+ '@smithy/util-base64': 4.3.0
+ '@smithy/util-body-length-browser': 4.2.0
+ '@smithy/util-body-length-node': 4.2.1
+ '@smithy/util-defaults-mode-browser': 4.3.13
+ '@smithy/util-defaults-mode-node': 4.2.16
'@smithy/util-endpoints': 3.2.5
'@smithy/util-middleware': 4.2.5
'@smithy/util-retry': 4.2.5
@@ -11640,12 +11649,28 @@ snapshots:
dependencies:
'@aws-sdk/types': 3.936.0
'@aws-sdk/xml-builder': 3.930.0
- '@smithy/core': 3.18.5
+ '@smithy/core': 3.18.7
'@smithy/node-config-provider': 4.3.5
'@smithy/property-provider': 4.2.5
'@smithy/protocol-http': 5.3.5
'@smithy/signature-v4': 5.3.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
+ '@smithy/types': 4.9.0
+ '@smithy/util-base64': 4.3.0
+ '@smithy/util-middleware': 4.2.5
+ '@smithy/util-utf8': 4.2.0
+ tslib: 2.8.1
+
+ '@aws-sdk/core@3.947.0':
+ dependencies:
+ '@aws-sdk/types': 3.936.0
+ '@aws-sdk/xml-builder': 3.930.0
+ '@smithy/core': 3.18.7
+ '@smithy/node-config-provider': 4.3.5
+ '@smithy/property-provider': 4.2.5
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/signature-v4': 5.3.5
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
'@smithy/util-base64': 4.3.0
'@smithy/util-middleware': 4.2.5
@@ -11660,6 +11685,14 @@ snapshots:
'@smithy/types': 4.9.0
tslib: 2.8.1
+ '@aws-sdk/credential-provider-env@3.947.0':
+ dependencies:
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/property-provider': 4.2.5
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+
'@aws-sdk/credential-provider-http@3.936.0':
dependencies:
'@aws-sdk/core': 3.936.0
@@ -11668,7 +11701,20 @@ snapshots:
'@smithy/node-http-handler': 4.4.5
'@smithy/property-provider': 4.2.5
'@smithy/protocol-http': 5.3.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
+ '@smithy/types': 4.9.0
+ '@smithy/util-stream': 4.5.6
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-http@3.947.0':
+ dependencies:
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/fetch-http-handler': 5.3.6
+ '@smithy/node-http-handler': 4.4.5
+ '@smithy/property-provider': 4.2.5
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
'@smithy/util-stream': 4.5.6
tslib: 2.8.1
@@ -11692,6 +11738,25 @@ snapshots:
transitivePeerDependencies:
- aws-crt
+ '@aws-sdk/credential-provider-ini@3.948.0':
+ dependencies:
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/credential-provider-env': 3.947.0
+ '@aws-sdk/credential-provider-http': 3.947.0
+ '@aws-sdk/credential-provider-login': 3.948.0
+ '@aws-sdk/credential-provider-process': 3.947.0
+ '@aws-sdk/credential-provider-sso': 3.948.0
+ '@aws-sdk/credential-provider-web-identity': 3.948.0
+ '@aws-sdk/nested-clients': 3.948.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/credential-provider-imds': 4.2.5
+ '@smithy/property-provider': 4.2.5
+ '@smithy/shared-ini-file-loader': 4.4.0
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
'@aws-sdk/credential-provider-login@3.936.0':
dependencies:
'@aws-sdk/core': 3.936.0
@@ -11705,6 +11770,19 @@ snapshots:
transitivePeerDependencies:
- aws-crt
+ '@aws-sdk/credential-provider-login@3.948.0':
+ dependencies:
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/nested-clients': 3.948.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/property-provider': 4.2.5
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/shared-ini-file-loader': 4.4.0
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
'@aws-sdk/credential-provider-node@3.936.0':
dependencies:
'@aws-sdk/credential-provider-env': 3.936.0
@@ -11722,6 +11800,23 @@ snapshots:
transitivePeerDependencies:
- aws-crt
+ '@aws-sdk/credential-provider-node@3.948.0':
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.947.0
+ '@aws-sdk/credential-provider-http': 3.947.0
+ '@aws-sdk/credential-provider-ini': 3.948.0
+ '@aws-sdk/credential-provider-process': 3.947.0
+ '@aws-sdk/credential-provider-sso': 3.948.0
+ '@aws-sdk/credential-provider-web-identity': 3.948.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/credential-provider-imds': 4.2.5
+ '@smithy/property-provider': 4.2.5
+ '@smithy/shared-ini-file-loader': 4.4.0
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
'@aws-sdk/credential-provider-process@3.936.0':
dependencies:
'@aws-sdk/core': 3.936.0
@@ -11731,6 +11826,15 @@ snapshots:
'@smithy/types': 4.9.0
tslib: 2.8.1
+ '@aws-sdk/credential-provider-process@3.947.0':
+ dependencies:
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/property-provider': 4.2.5
+ '@smithy/shared-ini-file-loader': 4.4.0
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+
'@aws-sdk/credential-provider-sso@3.936.0':
dependencies:
'@aws-sdk/client-sso': 3.936.0
@@ -11744,6 +11848,19 @@ snapshots:
transitivePeerDependencies:
- aws-crt
+ '@aws-sdk/credential-provider-sso@3.948.0':
+ dependencies:
+ '@aws-sdk/client-sso': 3.948.0
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/token-providers': 3.948.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/property-provider': 4.2.5
+ '@smithy/shared-ini-file-loader': 4.4.0
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
'@aws-sdk/credential-provider-web-identity@3.936.0':
dependencies:
'@aws-sdk/core': 3.936.0
@@ -11756,12 +11873,24 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/lib-storage@3.936.0(@aws-sdk/client-s3@3.936.0)':
+ '@aws-sdk/credential-provider-web-identity@3.948.0':
dependencies:
- '@aws-sdk/client-s3': 3.936.0
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/nested-clients': 3.948.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/property-provider': 4.2.5
+ '@smithy/shared-ini-file-loader': 4.4.0
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/lib-storage@3.948.0(@aws-sdk/client-s3@3.948.0)':
+ dependencies:
+ '@aws-sdk/client-s3': 3.948.0
'@smithy/abort-controller': 4.2.5
- '@smithy/middleware-endpoint': 4.3.12
- '@smithy/smithy-client': 4.9.8
+ '@smithy/middleware-endpoint': 4.3.14
+ '@smithy/smithy-client': 4.9.10
buffer: 5.6.0
events: 3.3.0
stream-browserify: 3.0.0
@@ -11784,12 +11913,12 @@ snapshots:
'@smithy/types': 4.9.0
tslib: 2.8.1
- '@aws-sdk/middleware-flexible-checksums@3.936.0':
+ '@aws-sdk/middleware-flexible-checksums@3.947.0':
dependencies:
'@aws-crypto/crc32': 5.2.0
'@aws-crypto/crc32c': 5.2.0
'@aws-crypto/util': 5.2.0
- '@aws-sdk/core': 3.936.0
+ '@aws-sdk/core': 3.947.0
'@aws-sdk/types': 3.936.0
'@smithy/is-array-buffer': 4.2.0
'@smithy/node-config-provider': 4.3.5
@@ -11822,7 +11951,15 @@ snapshots:
'@aws-sdk/middleware-recursion-detection@3.936.0':
dependencies:
'@aws-sdk/types': 3.936.0
- '@aws/lambda-invoke-store': 0.2.0
+ '@aws/lambda-invoke-store': 0.2.2
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-recursion-detection@3.948.0':
+ dependencies:
+ '@aws-sdk/types': 3.936.0
+ '@aws/lambda-invoke-store': 0.2.2
'@smithy/protocol-http': 5.3.5
'@smithy/types': 4.9.0
tslib: 2.8.1
@@ -11832,11 +11969,28 @@ snapshots:
'@aws-sdk/core': 3.936.0
'@aws-sdk/types': 3.936.0
'@aws-sdk/util-arn-parser': 3.893.0
- '@smithy/core': 3.18.5
+ '@smithy/core': 3.18.7
'@smithy/node-config-provider': 4.3.5
'@smithy/protocol-http': 5.3.5
'@smithy/signature-v4': 5.3.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
+ '@smithy/types': 4.9.0
+ '@smithy/util-config-provider': 4.2.0
+ '@smithy/util-middleware': 4.2.5
+ '@smithy/util-stream': 4.5.6
+ '@smithy/util-utf8': 4.2.0
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-sdk-s3@3.947.0':
+ dependencies:
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/types': 3.936.0
+ '@aws-sdk/util-arn-parser': 3.893.0
+ '@smithy/core': 3.18.7
+ '@smithy/node-config-provider': 4.3.5
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/signature-v4': 5.3.5
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
'@smithy/util-config-provider': 4.2.0
'@smithy/util-middleware': 4.2.5
@@ -11855,7 +12009,17 @@ snapshots:
'@aws-sdk/core': 3.936.0
'@aws-sdk/types': 3.936.0
'@aws-sdk/util-endpoints': 3.936.0
- '@smithy/core': 3.18.5
+ '@smithy/core': 3.18.7
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-user-agent@3.947.0':
+ dependencies:
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/types': 3.936.0
+ '@aws-sdk/util-endpoints': 3.936.0
+ '@smithy/core': 3.18.7
'@smithy/protocol-http': 5.3.5
'@smithy/types': 4.9.0
tslib: 2.8.1
@@ -11875,26 +12039,69 @@ snapshots:
'@aws-sdk/util-user-agent-browser': 3.936.0
'@aws-sdk/util-user-agent-node': 3.936.0
'@smithy/config-resolver': 4.4.3
- '@smithy/core': 3.18.5
+ '@smithy/core': 3.18.7
'@smithy/fetch-http-handler': 5.3.6
'@smithy/hash-node': 4.2.5
'@smithy/invalid-dependency': 4.2.5
'@smithy/middleware-content-length': 4.2.5
- '@smithy/middleware-endpoint': 4.3.12
- '@smithy/middleware-retry': 4.4.12
+ '@smithy/middleware-endpoint': 4.3.14
+ '@smithy/middleware-retry': 4.4.14
'@smithy/middleware-serde': 4.2.6
'@smithy/middleware-stack': 4.2.5
'@smithy/node-config-provider': 4.3.5
'@smithy/node-http-handler': 4.4.5
'@smithy/protocol-http': 5.3.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
'@smithy/url-parser': 4.2.5
'@smithy/util-base64': 4.3.0
'@smithy/util-body-length-browser': 4.2.0
'@smithy/util-body-length-node': 4.2.1
- '@smithy/util-defaults-mode-browser': 4.3.11
- '@smithy/util-defaults-mode-node': 4.2.14
+ '@smithy/util-defaults-mode-browser': 4.3.13
+ '@smithy/util-defaults-mode-node': 4.2.16
+ '@smithy/util-endpoints': 3.2.5
+ '@smithy/util-middleware': 4.2.5
+ '@smithy/util-retry': 4.2.5
+ '@smithy/util-utf8': 4.2.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/nested-clients@3.948.0':
+ dependencies:
+ '@aws-crypto/sha256-browser': 5.2.0
+ '@aws-crypto/sha256-js': 5.2.0
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/middleware-host-header': 3.936.0
+ '@aws-sdk/middleware-logger': 3.936.0
+ '@aws-sdk/middleware-recursion-detection': 3.948.0
+ '@aws-sdk/middleware-user-agent': 3.947.0
+ '@aws-sdk/region-config-resolver': 3.936.0
+ '@aws-sdk/types': 3.936.0
+ '@aws-sdk/util-endpoints': 3.936.0
+ '@aws-sdk/util-user-agent-browser': 3.936.0
+ '@aws-sdk/util-user-agent-node': 3.947.0
+ '@smithy/config-resolver': 4.4.3
+ '@smithy/core': 3.18.7
+ '@smithy/fetch-http-handler': 5.3.6
+ '@smithy/hash-node': 4.2.5
+ '@smithy/invalid-dependency': 4.2.5
+ '@smithy/middleware-content-length': 4.2.5
+ '@smithy/middleware-endpoint': 4.3.14
+ '@smithy/middleware-retry': 4.4.14
+ '@smithy/middleware-serde': 4.2.6
+ '@smithy/middleware-stack': 4.2.5
+ '@smithy/node-config-provider': 4.3.5
+ '@smithy/node-http-handler': 4.4.5
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/smithy-client': 4.9.10
+ '@smithy/types': 4.9.0
+ '@smithy/url-parser': 4.2.5
+ '@smithy/util-base64': 4.3.0
+ '@smithy/util-body-length-browser': 4.2.0
+ '@smithy/util-body-length-node': 4.2.1
+ '@smithy/util-defaults-mode-browser': 4.3.13
+ '@smithy/util-defaults-mode-node': 4.2.16
'@smithy/util-endpoints': 3.2.5
'@smithy/util-middleware': 4.2.5
'@smithy/util-retry': 4.2.5
@@ -11920,6 +12127,15 @@ snapshots:
'@smithy/types': 4.9.0
tslib: 2.8.1
+ '@aws-sdk/signature-v4-multi-region@3.947.0':
+ dependencies:
+ '@aws-sdk/middleware-sdk-s3': 3.947.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/protocol-http': 5.3.5
+ '@smithy/signature-v4': 5.3.5
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+
'@aws-sdk/token-providers@3.936.0':
dependencies:
'@aws-sdk/core': 3.936.0
@@ -11932,6 +12148,18 @@ snapshots:
transitivePeerDependencies:
- aws-crt
+ '@aws-sdk/token-providers@3.948.0':
+ dependencies:
+ '@aws-sdk/core': 3.947.0
+ '@aws-sdk/nested-clients': 3.948.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/property-provider': 4.2.5
+ '@smithy/shared-ini-file-loader': 4.4.0
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
'@aws-sdk/types@3.936.0':
dependencies:
'@smithy/types': 4.9.0
@@ -11968,13 +12196,21 @@ snapshots:
'@smithy/types': 4.9.0
tslib: 2.8.1
+ '@aws-sdk/util-user-agent-node@3.947.0':
+ dependencies:
+ '@aws-sdk/middleware-user-agent': 3.947.0
+ '@aws-sdk/types': 3.936.0
+ '@smithy/node-config-provider': 4.3.5
+ '@smithy/types': 4.9.0
+ tslib: 2.8.1
+
'@aws-sdk/xml-builder@3.930.0':
dependencies:
'@smithy/types': 4.9.0
fast-xml-parser: 5.2.5
tslib: 2.8.1
- '@aws/lambda-invoke-store@0.2.0': {}
+ '@aws/lambda-invoke-store@0.2.2': {}
'@babel/code-frame@7.27.1':
dependencies:
@@ -12241,12 +12477,14 @@ snapshots:
'@cropper/utils@2.1.0': {}
- '@csstools/color-helpers@5.1.0': {}
+ '@csstools/color-helpers@5.1.0':
+ optional: true
'@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
dependencies:
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
+ optional: true
'@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
dependencies:
@@ -12254,15 +12492,18 @@ snapshots:
'@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
+ optional: true
'@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)':
dependencies:
'@csstools/css-tokenizer': 3.0.4
+ optional: true
'@csstools/css-syntax-patches-for-csstree@1.0.16':
optional: true
- '@csstools/css-tokenizer@3.0.4': {}
+ '@csstools/css-tokenizer@3.0.4':
+ optional: true
'@cypress/request@3.0.9':
dependencies:
@@ -12292,13 +12533,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@digitalbazaar/http-client@3.4.1(web-streams-polyfill@3.3.3)':
+ '@digitalbazaar/http-client@4.2.0':
dependencies:
- ky: 0.33.3
- ky-universal: 0.11.0(ky@0.33.3)(web-streams-polyfill@3.3.3)
- undici: 5.29.0
- transitivePeerDependencies:
- - web-streams-polyfill
+ ky: 1.14.0
+ undici: 6.22.0
'@discordapp/twemoji@16.0.1':
dependencies:
@@ -12317,157 +12555,157 @@ snapshots:
'@esbuild/aix-ppc64@0.25.11':
optional: true
- '@esbuild/aix-ppc64@0.27.0':
+ '@esbuild/aix-ppc64@0.27.1':
optional: true
'@esbuild/android-arm64@0.25.11':
optional: true
- '@esbuild/android-arm64@0.27.0':
+ '@esbuild/android-arm64@0.27.1':
optional: true
'@esbuild/android-arm@0.25.11':
optional: true
- '@esbuild/android-arm@0.27.0':
+ '@esbuild/android-arm@0.27.1':
optional: true
'@esbuild/android-x64@0.25.11':
optional: true
- '@esbuild/android-x64@0.27.0':
+ '@esbuild/android-x64@0.27.1':
optional: true
'@esbuild/darwin-arm64@0.25.11':
optional: true
- '@esbuild/darwin-arm64@0.27.0':
+ '@esbuild/darwin-arm64@0.27.1':
optional: true
'@esbuild/darwin-x64@0.25.11':
optional: true
- '@esbuild/darwin-x64@0.27.0':
+ '@esbuild/darwin-x64@0.27.1':
optional: true
'@esbuild/freebsd-arm64@0.25.11':
optional: true
- '@esbuild/freebsd-arm64@0.27.0':
+ '@esbuild/freebsd-arm64@0.27.1':
optional: true
'@esbuild/freebsd-x64@0.25.11':
optional: true
- '@esbuild/freebsd-x64@0.27.0':
+ '@esbuild/freebsd-x64@0.27.1':
optional: true
'@esbuild/linux-arm64@0.25.11':
optional: true
- '@esbuild/linux-arm64@0.27.0':
+ '@esbuild/linux-arm64@0.27.1':
optional: true
'@esbuild/linux-arm@0.25.11':
optional: true
- '@esbuild/linux-arm@0.27.0':
+ '@esbuild/linux-arm@0.27.1':
optional: true
'@esbuild/linux-ia32@0.25.11':
optional: true
- '@esbuild/linux-ia32@0.27.0':
+ '@esbuild/linux-ia32@0.27.1':
optional: true
'@esbuild/linux-loong64@0.25.11':
optional: true
- '@esbuild/linux-loong64@0.27.0':
+ '@esbuild/linux-loong64@0.27.1':
optional: true
'@esbuild/linux-mips64el@0.25.11':
optional: true
- '@esbuild/linux-mips64el@0.27.0':
+ '@esbuild/linux-mips64el@0.27.1':
optional: true
'@esbuild/linux-ppc64@0.25.11':
optional: true
- '@esbuild/linux-ppc64@0.27.0':
+ '@esbuild/linux-ppc64@0.27.1':
optional: true
'@esbuild/linux-riscv64@0.25.11':
optional: true
- '@esbuild/linux-riscv64@0.27.0':
+ '@esbuild/linux-riscv64@0.27.1':
optional: true
'@esbuild/linux-s390x@0.25.11':
optional: true
- '@esbuild/linux-s390x@0.27.0':
+ '@esbuild/linux-s390x@0.27.1':
optional: true
'@esbuild/linux-x64@0.25.11':
optional: true
- '@esbuild/linux-x64@0.27.0':
+ '@esbuild/linux-x64@0.27.1':
optional: true
'@esbuild/netbsd-arm64@0.25.11':
optional: true
- '@esbuild/netbsd-arm64@0.27.0':
+ '@esbuild/netbsd-arm64@0.27.1':
optional: true
'@esbuild/netbsd-x64@0.25.11':
optional: true
- '@esbuild/netbsd-x64@0.27.0':
+ '@esbuild/netbsd-x64@0.27.1':
optional: true
'@esbuild/openbsd-arm64@0.25.11':
optional: true
- '@esbuild/openbsd-arm64@0.27.0':
+ '@esbuild/openbsd-arm64@0.27.1':
optional: true
'@esbuild/openbsd-x64@0.25.11':
optional: true
- '@esbuild/openbsd-x64@0.27.0':
+ '@esbuild/openbsd-x64@0.27.1':
optional: true
'@esbuild/openharmony-arm64@0.25.11':
optional: true
- '@esbuild/openharmony-arm64@0.27.0':
+ '@esbuild/openharmony-arm64@0.27.1':
optional: true
'@esbuild/sunos-x64@0.25.11':
optional: true
- '@esbuild/sunos-x64@0.27.0':
+ '@esbuild/sunos-x64@0.27.1':
optional: true
'@esbuild/win32-arm64@0.25.11':
optional: true
- '@esbuild/win32-arm64@0.27.0':
+ '@esbuild/win32-arm64@0.27.1':
optional: true
'@esbuild/win32-ia32@0.25.11':
optional: true
- '@esbuild/win32-ia32@0.27.0':
+ '@esbuild/win32-ia32@0.27.1':
optional: true
'@esbuild/win32-x64@0.25.11':
optional: true
- '@esbuild/win32-x64@0.27.0':
+ '@esbuild/win32-x64@0.27.1':
optional: true
'@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)':
@@ -12528,7 +12766,7 @@ snapshots:
'@fastify/accept-negotiator@2.0.1': {}
- '@fastify/accepts@5.0.3':
+ '@fastify/accepts@5.0.4':
dependencies:
accepts: 1.3.8
fastify-plugin: 5.1.0
@@ -12539,19 +12777,12 @@ snapshots:
ajv-formats: 3.0.1(ajv@8.17.1)
fast-uri: 3.1.0
- '@fastify/busboy@2.1.1': {}
-
'@fastify/busboy@3.2.0': {}
- '@fastify/cookie@11.0.2':
- dependencies:
- cookie: 1.0.2
- fastify-plugin: 5.1.0
-
- '@fastify/cors@10.1.0':
+ '@fastify/cors@11.2.0':
dependencies:
fastify-plugin: 5.1.0
- mnemonist: 0.40.0
+ toad-cache: 3.7.0
'@fastify/deepmerge@3.1.0': {}
@@ -12570,9 +12801,9 @@ snapshots:
'@fastify/forwarded@3.0.1': {}
- '@fastify/http-proxy@10.0.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)':
+ '@fastify/http-proxy@11.4.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)':
dependencies:
- '@fastify/reply-from': 11.0.2
+ '@fastify/reply-from': 12.5.0
fast-querystring: 1.1.2
fastify-plugin: 5.1.0
ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
@@ -12595,17 +12826,17 @@ snapshots:
'@fastify/proxy-addr@5.1.0':
dependencies:
'@fastify/forwarded': 3.0.1
- ipaddr.js: 2.2.0
+ ipaddr.js: 2.3.0
- '@fastify/reply-from@11.0.2':
+ '@fastify/reply-from@12.5.0':
dependencies:
'@fastify/error': 4.2.0
end-of-stream: 1.4.5
- fast-content-type-parse: 2.0.1
+ fast-content-type-parse: 3.0.0
fast-querystring: 1.1.2
fastify-plugin: 5.1.0
toad-cache: 3.7.0
- undici: 6.22.0
+ undici: 7.16.0
'@fastify/send@4.1.0':
dependencies:
@@ -12624,10 +12855,10 @@ snapshots:
fastq: 1.19.1
glob: 11.1.0
- '@fastify/view@10.0.2':
+ '@file-type/xml@0.4.4':
dependencies:
- fastify-plugin: 5.1.0
- toad-cache: 3.7.0
+ sax: 1.4.3
+ strtok3: 10.3.4
'@github/webauthn-json@2.1.1': {}
@@ -12757,31 +12988,31 @@ snapshots:
'@inquirer/ansi@1.0.2': {}
- '@inquirer/confirm@5.1.21(@types/node@24.10.1)':
+ '@inquirer/confirm@5.1.21(@types/node@24.10.2)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@24.10.1)
- '@inquirer/type': 3.0.10(@types/node@24.10.1)
+ '@inquirer/core': 10.3.2(@types/node@24.10.2)
+ '@inquirer/type': 3.0.10(@types/node@24.10.2)
optionalDependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
- '@inquirer/core@10.3.2(@types/node@24.10.1)':
+ '@inquirer/core@10.3.2(@types/node@24.10.2)':
dependencies:
'@inquirer/ansi': 1.0.2
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@24.10.1)
+ '@inquirer/type': 3.0.10(@types/node@24.10.2)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@inquirer/figures@1.0.15': {}
- '@inquirer/type@3.0.10(@types/node@24.10.1)':
+ '@inquirer/type@3.0.10(@types/node@24.10.2)':
optionalDependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@ioredis/commands@1.4.0': {}
@@ -12817,7 +13048,7 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@@ -12830,14 +13061,14 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@24.10.1)
+ jest-config: 29.7.0(@types/node@24.10.2)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -12866,7 +13097,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -12884,7 +13115,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -12900,7 +13131,7 @@ snapshots:
'@jest/pattern@30.0.1':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
jest-regex-util: 30.0.1
'@jest/reporters@29.7.0':
@@ -12911,7 +13142,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.31
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
chalk: 4.1.2
collect-v8-coverage: 1.0.3
exit: 0.1.2
@@ -12985,8 +13216,8 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 24.10.1
- '@types/yargs': 17.0.35
+ '@types/node': 24.10.2
+ '@types/yargs': 17.0.34
chalk: 4.1.2
'@jest/types@30.2.0':
@@ -12995,16 +13226,16 @@ snapshots:
'@jest/schemas': 30.0.5
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 24.10.1
- '@types/yargs': 17.0.35
+ '@types/node': 24.10.2
+ '@types/yargs': 17.0.34
chalk: 4.1.2
- '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))':
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.3)(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))':
dependencies:
glob: 10.5.0
magic-string: 0.30.21
react-docgen-typescript: 2.4.0(typescript@5.9.3)
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
optionalDependencies:
typescript: 5.9.3
@@ -13034,6 +13265,18 @@ snapshots:
'@keyv/serialize@1.1.1': {}
+ '@kitajs/html@4.2.11':
+ dependencies:
+ csstype: 3.2.3
+
+ '@kitajs/ts-html-plugin@4.1.3(@kitajs/html@4.2.11)(typescript@5.9.3)':
+ dependencies:
+ '@kitajs/html': 4.2.11
+ chalk: 5.6.2
+ tslib: 2.8.1
+ typescript: 5.9.3
+ yargs: 18.0.0
+
'@kurkle/color@0.3.4': {}
'@levischuck/tiny-cbor@0.2.11': {}
@@ -13058,35 +13301,41 @@ snapshots:
- supports-color
optional: true
- '@mcaptcha/core-glue@0.1.0-alpha-5': {}
+ '@mcaptcha/core-glue@0.1.0-rc1': {}
- '@mcaptcha/vanilla-glue@0.1.0-alpha-3':
+ '@mcaptcha/vanilla-glue@0.1.0-rc2(bufferutil@4.0.9)(utf-8-validate@6.0.5)':
dependencies:
- '@mcaptcha/core-glue': 0.1.0-alpha-5
+ '@mcaptcha/core-glue': 0.1.0-rc1
+ jest-environment-jsdom: 29.7.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
- '@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0)':
+ '@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.1)':
dependencies:
'@types/mdx': 2.0.13
'@types/react': 19.2.2
- react: 19.2.0
+ react: 19.2.1
- '@microsoft/api-extractor-model@7.32.0(@types/node@24.10.1)':
+ '@microsoft/api-extractor-model@7.32.2(@types/node@24.10.2)':
dependencies:
'@microsoft/tsdoc': 0.16.0
'@microsoft/tsdoc-config': 0.18.0
- '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1)
+ '@rushstack/node-core-library': 5.19.1(@types/node@24.10.2)
transitivePeerDependencies:
- '@types/node'
- '@microsoft/api-extractor@7.55.0(@types/node@24.10.1)':
+ '@microsoft/api-extractor@7.55.2(@types/node@24.10.2)':
dependencies:
- '@microsoft/api-extractor-model': 7.32.0(@types/node@24.10.1)
+ '@microsoft/api-extractor-model': 7.32.2(@types/node@24.10.2)
'@microsoft/tsdoc': 0.16.0
'@microsoft/tsdoc-config': 0.18.0
- '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1)
+ '@rushstack/node-core-library': 5.19.1(@types/node@24.10.2)
'@rushstack/rig-package': 0.6.0
- '@rushstack/terminal': 0.19.3(@types/node@24.10.1)
- '@rushstack/ts-command-line': 5.1.3(@types/node@24.10.1)
+ '@rushstack/terminal': 0.19.5(@types/node@24.10.2)
+ '@rushstack/ts-command-line': 5.1.5(@types/node@24.10.2)
diff: 8.0.2
lodash: 4.17.21
minimatch: 10.0.3
@@ -13108,15 +13357,15 @@ snapshots:
'@misskey-dev/browser-image-resizer@2024.1.0': {}
- '@misskey-dev/eslint-plugin@2.2.0(@eslint/compat@1.4.0(eslint@9.39.1))(@eslint/js@9.39.1)(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1))(eslint@9.39.1)(globals@16.5.0)':
+ '@misskey-dev/eslint-plugin@2.2.0(@eslint/compat@1.4.0(eslint@9.39.1))(@eslint/js@9.39.1)(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3))(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1))(eslint@9.39.1)(globals@16.5.0)':
dependencies:
'@eslint/compat': 1.4.0(eslint@9.39.1)
'@eslint/js': 9.39.1
'@stylistic/eslint-plugin': 5.5.0(eslint@9.39.1)
- '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3)
eslint: 9.39.1
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)
globals: 16.5.0
'@misskey-dev/sharp-read-bmp@1.2.0':
@@ -13129,7 +13378,7 @@ snapshots:
dependencies:
cheerio: 1.1.2
escape-regexp: 0.0.1
- got: 14.6.4
+ got: 14.6.5
html-entities: 2.6.0
iconv-lite: 0.7.0
jschardet: 3.1.4
@@ -13162,48 +13411,48 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
- '@napi-rs/canvas-android-arm64@0.1.82':
+ '@napi-rs/canvas-android-arm64@0.1.84':
optional: true
- '@napi-rs/canvas-darwin-arm64@0.1.82':
+ '@napi-rs/canvas-darwin-arm64@0.1.84':
optional: true
- '@napi-rs/canvas-darwin-x64@0.1.82':
+ '@napi-rs/canvas-darwin-x64@0.1.84':
optional: true
- '@napi-rs/canvas-linux-arm-gnueabihf@0.1.82':
+ '@napi-rs/canvas-linux-arm-gnueabihf@0.1.84':
optional: true
- '@napi-rs/canvas-linux-arm64-gnu@0.1.82':
+ '@napi-rs/canvas-linux-arm64-gnu@0.1.84':
optional: true
- '@napi-rs/canvas-linux-arm64-musl@0.1.82':
+ '@napi-rs/canvas-linux-arm64-musl@0.1.84':
optional: true
- '@napi-rs/canvas-linux-riscv64-gnu@0.1.82':
+ '@napi-rs/canvas-linux-riscv64-gnu@0.1.84':
optional: true
- '@napi-rs/canvas-linux-x64-gnu@0.1.82':
+ '@napi-rs/canvas-linux-x64-gnu@0.1.84':
optional: true
- '@napi-rs/canvas-linux-x64-musl@0.1.82':
+ '@napi-rs/canvas-linux-x64-musl@0.1.84':
optional: true
- '@napi-rs/canvas-win32-x64-msvc@0.1.82':
+ '@napi-rs/canvas-win32-x64-msvc@0.1.84':
optional: true
- '@napi-rs/canvas@0.1.82':
+ '@napi-rs/canvas@0.1.84':
optionalDependencies:
- '@napi-rs/canvas-android-arm64': 0.1.82
- '@napi-rs/canvas-darwin-arm64': 0.1.82
- '@napi-rs/canvas-darwin-x64': 0.1.82
- '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.82
- '@napi-rs/canvas-linux-arm64-gnu': 0.1.82
- '@napi-rs/canvas-linux-arm64-musl': 0.1.82
- '@napi-rs/canvas-linux-riscv64-gnu': 0.1.82
- '@napi-rs/canvas-linux-x64-gnu': 0.1.82
- '@napi-rs/canvas-linux-x64-musl': 0.1.82
- '@napi-rs/canvas-win32-x64-msvc': 0.1.82
+ '@napi-rs/canvas-android-arm64': 0.1.84
+ '@napi-rs/canvas-darwin-arm64': 0.1.84
+ '@napi-rs/canvas-darwin-x64': 0.1.84
+ '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.84
+ '@napi-rs/canvas-linux-arm64-gnu': 0.1.84
+ '@napi-rs/canvas-linux-arm64-musl': 0.1.84
+ '@napi-rs/canvas-linux-riscv64-gnu': 0.1.84
+ '@napi-rs/canvas-linux-x64-gnu': 0.1.84
+ '@napi-rs/canvas-linux-x64-musl': 0.1.84
+ '@napi-rs/canvas-win32-x64-msvc': 0.1.84
'@napi-rs/nice-android-arm-eabi@1.1.1':
optional: true
@@ -13289,7 +13538,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@nestjs/core@11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.20)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
+ '@nestjs/core@11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2)':
dependencies:
'@nestjs/common': 11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nuxt/opencollective': 0.4.1
@@ -13301,27 +13550,27 @@ snapshots:
tslib: 2.8.1
uid: 2.0.2
optionalDependencies:
- '@nestjs/platform-express': 10.4.20(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)
+ '@nestjs/platform-express': 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)
- '@nestjs/platform-express@10.4.20(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)':
+ '@nestjs/platform-express@11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)':
dependencies:
'@nestjs/common': 11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2)
- '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.20)(reflect-metadata@0.2.2)(rxjs@7.8.2)
- body-parser: 1.20.3
+ '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2)
cors: 2.8.5
- express: 4.21.2
+ express: 5.1.0
multer: 2.0.2
+ path-to-regexp: 8.3.0
tslib: 2.8.1
transitivePeerDependencies:
- supports-color
- '@nestjs/testing@11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-express@10.4.20)':
+ '@nestjs/testing@11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)(@nestjs/platform-express@11.1.9)':
dependencies:
'@nestjs/common': 11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2)
- '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.20)(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ '@nestjs/core': 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2)
tslib: 2.8.1
optionalDependencies:
- '@nestjs/platform-express': 10.4.20(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)
+ '@nestjs/platform-express': 11.1.9(@nestjs/common@11.1.9(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9)
'@noble/hashes@1.8.0': {}
@@ -13366,11 +13615,7 @@ snapshots:
'@open-draft/until@2.1.0': {}
- '@opentelemetry/api-logs@0.204.0':
- dependencies:
- '@opentelemetry/api': 1.9.0
-
- '@opentelemetry/api-logs@0.57.2':
+ '@opentelemetry/api-logs@0.208.0':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13380,224 +13625,202 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/semantic-conventions': 1.38.0
-
'@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/semantic-conventions': 1.38.0
- '@opentelemetry/instrumentation-amqplib@0.51.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-amqplib@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-connect@0.48.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-connect@0.52.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
'@types/connect': 3.4.38
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-dataloader@0.22.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-dataloader@0.26.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-express@0.53.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-express@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-fs@0.24.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-fs@0.28.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-generic-pool@0.48.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-generic-pool@0.52.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-graphql@0.52.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-graphql@0.56.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-hapi@0.51.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-hapi@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-http@0.204.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-http@0.208.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
forwarded-parse: 2.1.2
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-ioredis@0.52.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-ioredis@0.56.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.38.2
- '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-kafkajs@0.14.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-kafkajs@0.18.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-knex@0.49.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-knex@0.53.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-koa@0.52.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-koa@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-lru-memoizer@0.49.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-lru-memoizer@0.53.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mongodb@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mongodb@0.61.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mongoose@0.51.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mongoose@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mysql2@0.51.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mysql2@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
'@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mysql@0.50.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mysql@0.54.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@types/mysql': 2.15.27
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-pg@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-pg@0.61.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
'@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0)
- '@types/pg': 8.15.5
+ '@types/pg': 8.15.6
'@types/pg-pool': 2.0.6
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-redis@0.53.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-redis@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.38.2
'@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-tedious@0.23.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-tedious@0.27.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@types/tedious': 4.0.14
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-undici@0.15.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-undici@0.19.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.204.0
- import-in-the-middle: 1.15.0
- require-in-the-middle: 7.5.2
- transitivePeerDependencies:
- - supports-color
-
- '@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.57.2
- '@types/shimmer': 1.2.0
- import-in-the-middle: 1.15.0
- require-in-the-middle: 7.5.2
- semver: 7.7.3
- shimmer: 1.2.1
+ '@opentelemetry/api-logs': 0.208.0
+ import-in-the-middle: 2.0.0
+ require-in-the-middle: 8.0.1
transitivePeerDependencies:
- supports-color
@@ -13694,6 +13917,21 @@ snapshots:
asn1js: 3.0.6
tslib: 2.8.1
+ '@peculiar/asn1-cms@2.6.0':
+ dependencies:
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ '@peculiar/asn1-x509-attr': 2.6.0
+ asn1js: 3.0.6
+ tslib: 2.8.1
+
+ '@peculiar/asn1-csr@2.6.0':
+ dependencies:
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ asn1js: 3.0.6
+ tslib: 2.8.1
+
'@peculiar/asn1-ecc@2.6.0':
dependencies:
'@peculiar/asn1-schema': 2.6.0
@@ -13701,6 +13939,33 @@ snapshots:
asn1js: 3.0.6
tslib: 2.8.1
+ '@peculiar/asn1-pfx@2.6.0':
+ dependencies:
+ '@peculiar/asn1-cms': 2.6.0
+ '@peculiar/asn1-pkcs8': 2.6.0
+ '@peculiar/asn1-rsa': 2.6.0
+ '@peculiar/asn1-schema': 2.6.0
+ asn1js: 3.0.6
+ tslib: 2.8.1
+
+ '@peculiar/asn1-pkcs8@2.6.0':
+ dependencies:
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ asn1js: 3.0.6
+ tslib: 2.8.1
+
+ '@peculiar/asn1-pkcs9@2.6.0':
+ dependencies:
+ '@peculiar/asn1-cms': 2.6.0
+ '@peculiar/asn1-pfx': 2.6.0
+ '@peculiar/asn1-pkcs8': 2.6.0
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ '@peculiar/asn1-x509-attr': 2.6.0
+ asn1js: 3.0.6
+ tslib: 2.8.1
+
'@peculiar/asn1-rsa@2.6.0':
dependencies:
'@peculiar/asn1-schema': 2.6.0
@@ -13714,6 +13979,13 @@ snapshots:
pvtsutils: 1.3.6
tslib: 2.8.1
+ '@peculiar/asn1-x509-attr@2.6.0':
+ dependencies:
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ asn1js: 3.0.6
+ tslib: 2.8.1
+
'@peculiar/asn1-x509@2.6.0':
dependencies:
'@peculiar/asn1-schema': 2.6.0
@@ -13721,6 +13993,20 @@ snapshots:
pvtsutils: 1.3.6
tslib: 2.8.1
+ '@peculiar/x509@1.14.2':
+ dependencies:
+ '@peculiar/asn1-cms': 2.6.0
+ '@peculiar/asn1-csr': 2.6.0
+ '@peculiar/asn1-ecc': 2.6.0
+ '@peculiar/asn1-pkcs9': 2.6.0
+ '@peculiar/asn1-rsa': 2.6.0
+ '@peculiar/asn1-schema': 2.6.0
+ '@peculiar/asn1-x509': 2.6.0
+ pvtsutils: 1.3.6
+ reflect-metadata: 0.2.2
+ tslib: 2.8.1
+ tsyringe: 4.10.0
+
'@peertube/http-signature@1.7.0':
dependencies:
assert-plus: 1.0.0
@@ -13732,10 +14018,10 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@prisma/instrumentation@6.15.0(@opentelemetry/api@1.9.0)':
+ '@prisma/instrumentation@6.19.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
@@ -13875,7 +14161,7 @@ snapshots:
'@rtsao/scc@1.1.0': {}
- '@rushstack/node-core-library@5.18.0(@types/node@24.10.1)':
+ '@rushstack/node-core-library@5.19.1(@types/node@24.10.2)':
dependencies:
ajv: 8.13.0
ajv-draft-04: 1.0.0(ajv@8.13.0)
@@ -13886,28 +14172,28 @@ snapshots:
resolve: 1.22.11
semver: 7.5.4
optionalDependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
- '@rushstack/problem-matcher@0.1.1(@types/node@24.10.1)':
+ '@rushstack/problem-matcher@0.1.1(@types/node@24.10.2)':
optionalDependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@rushstack/rig-package@0.6.0':
dependencies:
resolve: 1.22.11
strip-json-comments: 3.1.1
- '@rushstack/terminal@0.19.3(@types/node@24.10.1)':
+ '@rushstack/terminal@0.19.5(@types/node@24.10.2)':
dependencies:
- '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1)
- '@rushstack/problem-matcher': 0.1.1(@types/node@24.10.1)
+ '@rushstack/node-core-library': 5.19.1(@types/node@24.10.2)
+ '@rushstack/problem-matcher': 0.1.1(@types/node@24.10.2)
supports-color: 8.1.1
optionalDependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
- '@rushstack/ts-command-line@5.1.3(@types/node@24.10.1)':
+ '@rushstack/ts-command-line@5.1.5(@types/node@24.10.2)':
dependencies:
- '@rushstack/terminal': 0.19.3(@types/node@24.10.1)
+ '@rushstack/terminal': 0.19.5(@types/node@24.10.2)
'@types/argparse': 1.0.38
argparse: 1.0.10
string-argv: 0.3.2
@@ -13916,145 +14202,145 @@ snapshots:
'@sec-ant/readable-stream@0.4.1': {}
- '@sentry-internal/browser-utils@10.26.0':
+ '@sentry-internal/browser-utils@10.29.0':
dependencies:
- '@sentry/core': 10.26.0
+ '@sentry/core': 10.29.0
- '@sentry-internal/feedback@10.26.0':
+ '@sentry-internal/feedback@10.29.0':
dependencies:
- '@sentry/core': 10.26.0
+ '@sentry/core': 10.29.0
'@sentry-internal/node-cpu-profiler@2.2.0':
dependencies:
detect-libc: 2.1.2
node-abi: 3.85.0
- '@sentry-internal/replay-canvas@10.26.0':
+ '@sentry-internal/replay-canvas@10.29.0':
dependencies:
- '@sentry-internal/replay': 10.26.0
- '@sentry/core': 10.26.0
+ '@sentry-internal/replay': 10.29.0
+ '@sentry/core': 10.29.0
- '@sentry-internal/replay@10.26.0':
+ '@sentry-internal/replay@10.29.0':
dependencies:
- '@sentry-internal/browser-utils': 10.26.0
- '@sentry/core': 10.26.0
+ '@sentry-internal/browser-utils': 10.29.0
+ '@sentry/core': 10.29.0
- '@sentry/browser@10.26.0':
+ '@sentry/browser@10.29.0':
dependencies:
- '@sentry-internal/browser-utils': 10.26.0
- '@sentry-internal/feedback': 10.26.0
- '@sentry-internal/replay': 10.26.0
- '@sentry-internal/replay-canvas': 10.26.0
- '@sentry/core': 10.26.0
+ '@sentry-internal/browser-utils': 10.29.0
+ '@sentry-internal/feedback': 10.29.0
+ '@sentry-internal/replay': 10.29.0
+ '@sentry-internal/replay-canvas': 10.29.0
+ '@sentry/core': 10.29.0
- '@sentry/core@10.26.0': {}
+ '@sentry/core@10.29.0': {}
- '@sentry/node-core@10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
+ '@sentry/node-core@10.29.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
dependencies:
'@apm-js-collab/tracing-hooks': 0.3.1
'@opentelemetry/api': 1.9.0
'@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
- '@sentry/core': 10.26.0
- '@sentry/opentelemetry': 10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
- import-in-the-middle: 1.15.0
+ '@sentry/core': 10.29.0
+ '@sentry/opentelemetry': 10.29.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ import-in-the-middle: 2.0.0
transitivePeerDependencies:
- supports-color
- '@sentry/node@10.26.0':
+ '@sentry/node@10.29.0':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-amqplib': 0.51.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-connect': 0.48.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-dataloader': 0.22.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-express': 0.53.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-fs': 0.24.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-generic-pool': 0.48.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-graphql': 0.52.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-hapi': 0.51.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-http': 0.204.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-ioredis': 0.52.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-kafkajs': 0.14.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-knex': 0.49.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-koa': 0.52.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-lru-memoizer': 0.49.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mongodb': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mongoose': 0.51.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mysql': 0.50.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mysql2': 0.51.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-pg': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-redis': 0.53.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-tedious': 0.23.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-undici': 0.15.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-amqplib': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-connect': 0.52.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-dataloader': 0.26.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-express': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-fs': 0.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-generic-pool': 0.52.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-graphql': 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-hapi': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-http': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-ioredis': 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-kafkajs': 0.18.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-knex': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-koa': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-lru-memoizer': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongodb': 0.61.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongoose': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql': 0.54.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql2': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-pg': 0.61.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-redis': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-tedious': 0.27.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-undici': 0.19.0(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
- '@prisma/instrumentation': 6.15.0(@opentelemetry/api@1.9.0)
- '@sentry/core': 10.26.0
- '@sentry/node-core': 10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
- '@sentry/opentelemetry': 10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
- import-in-the-middle: 1.15.0
+ '@prisma/instrumentation': 6.19.0(@opentelemetry/api@1.9.0)
+ '@sentry/core': 10.29.0
+ '@sentry/node-core': 10.29.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ '@sentry/opentelemetry': 10.29.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ import-in-the-middle: 2.0.0
minimatch: 9.0.5
transitivePeerDependencies:
- supports-color
- '@sentry/opentelemetry@10.26.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
+ '@sentry/opentelemetry@10.29.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
- '@sentry/core': 10.26.0
+ '@sentry/core': 10.29.0
- '@sentry/profiling-node@10.26.0':
+ '@sentry/profiling-node@10.29.0':
dependencies:
'@sentry-internal/node-cpu-profiler': 2.2.0
- '@sentry/core': 10.26.0
- '@sentry/node': 10.26.0
+ '@sentry/core': 10.29.0
+ '@sentry/node': 10.29.0
transitivePeerDependencies:
- supports-color
- '@sentry/vue@10.26.0(vue@3.5.24(typescript@5.9.3))':
+ '@sentry/vue@10.29.0(vue@3.5.25(typescript@5.9.3))':
dependencies:
- '@sentry/browser': 10.26.0
- '@sentry/core': 10.26.0
- vue: 3.5.24(typescript@5.9.3)
+ '@sentry/browser': 10.29.0
+ '@sentry/core': 10.29.0
+ vue: 3.5.25(typescript@5.9.3)
- '@shikijs/core@3.15.0':
+ '@shikijs/core@3.19.0':
dependencies:
- '@shikijs/types': 3.15.0
+ '@shikijs/types': 3.19.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
- '@shikijs/engine-javascript@3.15.0':
+ '@shikijs/engine-javascript@3.19.0':
dependencies:
- '@shikijs/types': 3.15.0
+ '@shikijs/types': 3.19.0
'@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 4.3.3
+ oniguruma-to-es: 4.3.4
- '@shikijs/engine-oniguruma@3.15.0':
+ '@shikijs/engine-oniguruma@3.19.0':
dependencies:
- '@shikijs/types': 3.15.0
+ '@shikijs/types': 3.19.0
'@shikijs/vscode-textmate': 10.0.2
- '@shikijs/langs@3.15.0':
+ '@shikijs/langs@3.19.0':
dependencies:
- '@shikijs/types': 3.15.0
+ '@shikijs/types': 3.19.0
- '@shikijs/themes@3.15.0':
+ '@shikijs/themes@3.19.0':
dependencies:
- '@shikijs/types': 3.15.0
+ '@shikijs/types': 3.19.0
- '@shikijs/types@3.15.0':
+ '@shikijs/types@3.19.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -14069,7 +14355,7 @@ snapshots:
'@sideway/pinpoint@2.0.0': {}
- '@simplewebauthn/server@12.0.0(encoding@0.1.13)':
+ '@simplewebauthn/server@13.2.2':
dependencies:
'@hexagon/base64': 1.1.28
'@levischuck/tiny-cbor': 0.2.11
@@ -14078,10 +14364,7 @@ snapshots:
'@peculiar/asn1-rsa': 2.6.0
'@peculiar/asn1-schema': 2.6.0
'@peculiar/asn1-x509': 2.6.0
- '@simplewebauthn/types': 12.0.0
- cross-fetch: 4.1.0(encoding@0.1.13)
- transitivePeerDependencies:
- - encoding
+ '@peculiar/x509': 1.14.2
'@simplewebauthn/types@12.0.0': {}
@@ -14107,11 +14390,11 @@ snapshots:
dependencies:
'@sinonjs/commons': 3.0.1
- '@sinonjs/fake-timers@11.3.1':
+ '@sinonjs/fake-timers@13.0.5':
dependencies:
'@sinonjs/commons': 3.0.1
- '@sinonjs/fake-timers@13.0.5':
+ '@sinonjs/fake-timers@15.0.0':
dependencies:
'@sinonjs/commons': 3.0.1
@@ -14122,11 +14405,6 @@ snapshots:
'@sinonjs/text-encoding@0.7.3': {}
- '@smithy/abort-controller@2.2.0':
- dependencies:
- '@smithy/types': 2.12.0
- tslib: 2.8.1
-
'@smithy/abort-controller@4.2.5':
dependencies:
'@smithy/types': 4.9.0
@@ -14150,7 +14428,7 @@ snapshots:
'@smithy/util-middleware': 4.2.5
tslib: 2.8.1
- '@smithy/core@3.18.5':
+ '@smithy/core@3.18.7':
dependencies:
'@smithy/middleware-serde': 4.2.6
'@smithy/protocol-http': 5.3.5
@@ -14254,9 +14532,9 @@ snapshots:
'@smithy/types': 4.9.0
tslib: 2.8.1
- '@smithy/middleware-endpoint@4.3.12':
+ '@smithy/middleware-endpoint@4.3.14':
dependencies:
- '@smithy/core': 3.18.5
+ '@smithy/core': 3.18.7
'@smithy/middleware-serde': 4.2.6
'@smithy/node-config-provider': 4.3.5
'@smithy/shared-ini-file-loader': 4.4.0
@@ -14265,12 +14543,12 @@ snapshots:
'@smithy/util-middleware': 4.2.5
tslib: 2.8.1
- '@smithy/middleware-retry@4.4.12':
+ '@smithy/middleware-retry@4.4.14':
dependencies:
'@smithy/node-config-provider': 4.3.5
'@smithy/protocol-http': 5.3.5
'@smithy/service-error-classification': 4.2.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
'@smithy/util-middleware': 4.2.5
'@smithy/util-retry': 4.2.5
@@ -14295,14 +14573,6 @@ snapshots:
'@smithy/types': 4.9.0
tslib: 2.8.1
- '@smithy/node-http-handler@2.5.0':
- dependencies:
- '@smithy/abort-controller': 2.2.0
- '@smithy/protocol-http': 3.3.0
- '@smithy/querystring-builder': 2.2.0
- '@smithy/types': 2.12.0
- tslib: 2.8.1
-
'@smithy/node-http-handler@4.4.5':
dependencies:
'@smithy/abort-controller': 4.2.5
@@ -14316,22 +14586,11 @@ snapshots:
'@smithy/types': 4.9.0
tslib: 2.8.1
- '@smithy/protocol-http@3.3.0':
- dependencies:
- '@smithy/types': 2.12.0
- tslib: 2.8.1
-
'@smithy/protocol-http@5.3.5':
dependencies:
'@smithy/types': 4.9.0
tslib: 2.8.1
- '@smithy/querystring-builder@2.2.0':
- dependencies:
- '@smithy/types': 2.12.0
- '@smithy/util-uri-escape': 2.2.0
- tslib: 2.8.1
-
'@smithy/querystring-builder@4.2.5':
dependencies:
'@smithy/types': 4.9.0
@@ -14363,20 +14622,16 @@ snapshots:
'@smithy/util-utf8': 4.2.0
tslib: 2.8.1
- '@smithy/smithy-client@4.9.8':
+ '@smithy/smithy-client@4.9.10':
dependencies:
- '@smithy/core': 3.18.5
- '@smithy/middleware-endpoint': 4.3.12
+ '@smithy/core': 3.18.7
+ '@smithy/middleware-endpoint': 4.3.14
'@smithy/middleware-stack': 4.2.5
'@smithy/protocol-http': 5.3.5
'@smithy/types': 4.9.0
'@smithy/util-stream': 4.5.6
tslib: 2.8.1
- '@smithy/types@2.12.0':
- dependencies:
- tslib: 2.8.1
-
'@smithy/types@4.9.0':
dependencies:
tslib: 2.8.1
@@ -14415,20 +14670,20 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@smithy/util-defaults-mode-browser@4.3.11':
+ '@smithy/util-defaults-mode-browser@4.3.13':
dependencies:
'@smithy/property-provider': 4.2.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
tslib: 2.8.1
- '@smithy/util-defaults-mode-node@4.2.14':
+ '@smithy/util-defaults-mode-node@4.2.16':
dependencies:
'@smithy/config-resolver': 4.4.3
'@smithy/credential-provider-imds': 4.2.5
'@smithy/node-config-provider': 4.3.5
'@smithy/property-provider': 4.2.5
- '@smithy/smithy-client': 4.9.8
+ '@smithy/smithy-client': 4.9.10
'@smithy/types': 4.9.0
tslib: 2.8.1
@@ -14464,10 +14719,6 @@ snapshots:
'@smithy/util-utf8': 4.2.0
tslib: 2.8.1
- '@smithy/util-uri-escape@2.2.0':
- dependencies:
- tslib: 2.8.1
-
'@smithy/util-uri-escape@4.2.0':
dependencies:
tslib: 2.8.1
@@ -14496,273 +14747,297 @@ snapshots:
'@standard-schema/spec@1.0.0': {}
- '@storybook/addon-actions@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-actions@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(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: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
uuid: 9.0.1
- '@storybook/addon-backgrounds@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-backgrounds@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
memoizerific: 1.11.3
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- '@storybook/addon-controls@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-controls@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
dequal: 2.0.3
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- '@storybook/addon-docs@8.6.14(@types/react@19.2.2)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-docs@8.6.14(@types/react@19.2.2)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.2.0)
- '@storybook/blocks': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/csf-plugin': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/react-dom-shim': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.2.1)
+ '@storybook/blocks': 8.6.14(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/csf-plugin': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/react-dom-shim': 8.6.14(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
transitivePeerDependencies:
- '@types/react'
- '@storybook/addon-essentials@8.6.14(@types/react@19.2.2)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-essentials@8.6.14(@types/react@19.2.2)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/addon-actions': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/addon-controls': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/addon-docs': 8.6.14(@types/react@19.2.2)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/addon-highlight': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/addon-measure': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/addon-outline': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/addon-toolbars': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/addon-viewport': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ '@storybook/addon-actions': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/addon-backgrounds': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/addon-controls': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/addon-docs': 8.6.14(@types/react@19.2.2)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/addon-highlight': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/addon-measure': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/addon-outline': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/addon-toolbars': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/addon-viewport': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
transitivePeerDependencies:
- '@types/react'
- '@storybook/addon-highlight@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-highlight@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/addon-interactions@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-interactions@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/test': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ '@storybook/instrumenter': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/test': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
polished: 4.3.1
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- '@storybook/addon-links@9.1.16(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-links@10.1.5(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
optionalDependencies:
- react: 19.2.0
+ react: 19.2.1
- '@storybook/addon-mdx-gfm@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-mdx-gfm@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
remark-gfm: 4.0.1
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
transitivePeerDependencies:
- supports-color
- '@storybook/addon-measure@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-measure@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
tiny-invariant: 1.3.3
- '@storybook/addon-outline@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-outline@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- '@storybook/addon-storysource@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-storysource@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/source-loader': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ '@storybook/source-loader': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
estraverse: 5.3.0
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
tiny-invariant: 1.3.3
- '@storybook/addon-toolbars@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-toolbars@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/addon-viewport@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/addon-viewport@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
memoizerific: 1.11.3
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/blocks@8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/blocks@8.6.14(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- '@storybook/icons': 1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ '@storybook/icons': 1.6.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
optionalDependencies:
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- '@storybook/builder-vite@9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))':
+ '@storybook/builder-vite@10.1.5(esbuild@0.27.1)(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))':
dependencies:
- '@storybook/csf-plugin': 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ '@storybook/csf-plugin': 10.1.5(esbuild@0.27.1)(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
+ '@vitest/mocker': 3.2.4(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
+ transitivePeerDependencies:
+ - esbuild
+ - msw
+ - rollup
+ - webpack
- '@storybook/components@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/components@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/core-events@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/core-events@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/csf-plugin@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/csf-plugin@10.1.5(esbuild@0.27.1)(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
- unplugin: 1.16.1
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
+ unplugin: 2.3.10
+ optionalDependencies:
+ esbuild: 0.27.1
+ rollup: 4.53.3
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
- '@storybook/csf-plugin@9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/csf-plugin@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
unplugin: 1.16.1
'@storybook/global@5.0.0': {}
- '@storybook/icons@1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@storybook/icons@1.6.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- '@storybook/instrumenter@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/icons@2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
+ dependencies:
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+
+ '@storybook/instrumenter@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
'@vitest/utils': 2.1.9
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/manager-api@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/manager-api@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/preview-api@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/preview-api@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/react-dom-shim@8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/react-dom-shim@10.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/react-dom-shim@9.1.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/react-dom-shim@8.6.14(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/react-vite@9.1.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.3)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))':
+ '@storybook/react-vite@10.1.5(esbuild@0.27.1)(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(typescript@5.9.3)(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))':
dependencies:
- '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.3)(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
'@rollup/pluginutils': 5.3.0(rollup@4.53.3)
- '@storybook/builder-vite': 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
- '@storybook/react': 9.1.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3)
- find-up: 7.0.0
+ '@storybook/builder-vite': 10.1.5(esbuild@0.27.1)(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
+ '@storybook/react': 10.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(typescript@5.9.3)
+ empathic: 2.0.0
magic-string: 0.30.21
- react: 19.2.0
+ react: 19.2.1
react-docgen: 8.0.2
- react-dom: 19.2.0(react@19.2.0)
+ react-dom: 19.2.1(react@19.2.1)
resolve: 1.22.11
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
tsconfig-paths: 4.2.0
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
transitivePeerDependencies:
+ - esbuild
+ - msw
- rollup
- supports-color
- typescript
+ - webpack
- '@storybook/react@9.1.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(typescript@5.9.3)':
+ '@storybook/react@10.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(typescript@5.9.3)':
dependencies:
'@storybook/global': 5.0.0
- '@storybook/react-dom-shim': 9.1.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ '@storybook/react-dom-shim': 10.1.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ react: 19.2.1
+ react-docgen: 8.0.2
+ react-dom: 19.2.1(react@19.2.1)
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
optionalDependencies:
typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
- '@storybook/source-loader@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/source-loader@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
es-toolkit: 1.42.0
estraverse: 5.3.0
- prettier: 3.6.2
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ prettier: 3.7.4
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/test@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
'@storybook/global': 5.0.0
- '@storybook/instrumenter': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ '@storybook/instrumenter': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(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: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/theming@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/theming@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/types@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))':
+ '@storybook/types@8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))':
dependencies:
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
- '@storybook/vue3-vite@9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3))':
+ '@storybook/vue3-vite@10.1.5(esbuild@0.27.1)(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))(vue@3.5.25(typescript@5.9.3))':
dependencies:
- '@storybook/builder-vite': 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
- '@storybook/vue3': 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(vue@3.5.24(typescript@5.9.3))
- find-package-json: 1.2.0
+ '@storybook/builder-vite': 10.1.5(esbuild@0.27.1)(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(rollup@4.53.3)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
+ '@storybook/vue3': 10.1.5(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vue@3.5.25(typescript@5.9.3))
magic-string: 0.30.21
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
typescript: 5.9.3
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
vue-component-meta: 2.2.12(typescript@5.9.3)
- vue-docgen-api: 4.79.2(vue@3.5.24(typescript@5.9.3))
+ vue-docgen-api: 4.79.2(vue@3.5.25(typescript@5.9.3))
transitivePeerDependencies:
+ - esbuild
+ - msw
+ - rollup
- vue
+ - webpack
- '@storybook/vue3@9.1.16(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))(vue@3.5.24(typescript@5.9.3))':
+ '@storybook/vue3@10.1.5(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))(vue@3.5.25(typescript@5.9.3))':
dependencies:
'@storybook/global': 5.0.0
- storybook: 9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
+ storybook: 10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5)
type-fest: 2.19.0
- vue: 3.5.24(typescript@5.9.3)
- vue-component-type-helpers: 3.1.4
+ vue: 3.5.25(typescript@5.9.3)
+ vue-component-type-helpers: 3.1.8
'@stylistic/eslint-plugin@5.5.0(eslint@9.39.1)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
- '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/types': 8.49.0
eslint: 9.39.1
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
picomatch: 4.0.3
- '@swc/cli@0.7.9(@swc/core@1.15.2)(chokidar@4.0.3)':
+ '@swc/cli@0.7.9(@swc/core@1.15.3)(chokidar@5.0.0)':
dependencies:
- '@swc/core': 1.15.2
+ '@swc/core': 1.15.3
'@swc/counter': 0.1.3
'@xhmikosr/bin-wrapper': 13.2.0
commander: 8.3.0
@@ -14773,7 +15048,7 @@ snapshots:
source-map: 0.7.6
tinyglobby: 0.2.15
optionalDependencies:
- chokidar: 4.0.3
+ chokidar: 5.0.0
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
@@ -14784,10 +15059,10 @@ snapshots:
'@swc/wasm': 1.2.130
optional: true
- '@swc/core-darwin-arm64@1.15.2':
+ '@swc/core-darwin-arm64@1.15.3':
optional: true
- '@swc/core-darwin-x64@1.15.2':
+ '@swc/core-darwin-x64@1.15.3':
optional: true
'@swc/core-freebsd-x64@1.3.11':
@@ -14795,52 +15070,52 @@ snapshots:
'@swc/wasm': 1.2.130
optional: true
- '@swc/core-linux-arm-gnueabihf@1.15.2':
+ '@swc/core-linux-arm-gnueabihf@1.15.3':
optional: true
- '@swc/core-linux-arm64-gnu@1.15.2':
+ '@swc/core-linux-arm64-gnu@1.15.3':
optional: true
- '@swc/core-linux-arm64-musl@1.15.2':
+ '@swc/core-linux-arm64-musl@1.15.3':
optional: true
- '@swc/core-linux-x64-gnu@1.15.2':
+ '@swc/core-linux-x64-gnu@1.15.3':
optional: true
- '@swc/core-linux-x64-musl@1.15.2':
+ '@swc/core-linux-x64-musl@1.15.3':
optional: true
- '@swc/core-win32-arm64-msvc@1.15.2':
+ '@swc/core-win32-arm64-msvc@1.15.3':
optional: true
- '@swc/core-win32-ia32-msvc@1.15.2':
+ '@swc/core-win32-ia32-msvc@1.15.3':
optional: true
- '@swc/core-win32-x64-msvc@1.15.2':
+ '@swc/core-win32-x64-msvc@1.15.3':
optional: true
- '@swc/core@1.15.2':
+ '@swc/core@1.15.3':
dependencies:
'@swc/counter': 0.1.3
'@swc/types': 0.1.25
optionalDependencies:
- '@swc/core-darwin-arm64': 1.15.2
- '@swc/core-darwin-x64': 1.15.2
- '@swc/core-linux-arm-gnueabihf': 1.15.2
- '@swc/core-linux-arm64-gnu': 1.15.2
- '@swc/core-linux-arm64-musl': 1.15.2
- '@swc/core-linux-x64-gnu': 1.15.2
- '@swc/core-linux-x64-musl': 1.15.2
- '@swc/core-win32-arm64-msvc': 1.15.2
- '@swc/core-win32-ia32-msvc': 1.15.2
- '@swc/core-win32-x64-msvc': 1.15.2
+ '@swc/core-darwin-arm64': 1.15.3
+ '@swc/core-darwin-x64': 1.15.3
+ '@swc/core-linux-arm-gnueabihf': 1.15.3
+ '@swc/core-linux-arm64-gnu': 1.15.3
+ '@swc/core-linux-arm64-musl': 1.15.3
+ '@swc/core-linux-x64-gnu': 1.15.3
+ '@swc/core-linux-x64-musl': 1.15.3
+ '@swc/core-win32-arm64-msvc': 1.15.3
+ '@swc/core-win32-ia32-msvc': 1.15.3
+ '@swc/core-win32-x64-msvc': 1.15.3
'@swc/counter@0.1.3': {}
- '@swc/jest@0.2.39(@swc/core@1.15.2)':
+ '@swc/jest@0.2.39(@swc/core@1.15.3)':
dependencies:
'@jest/create-cache-key-function': 30.2.0
- '@swc/core': 1.15.2
+ '@swc/core': 1.15.3
'@swc/counter': 0.1.3
jsonc-parser: 3.3.1
@@ -15000,14 +15275,14 @@ snapshots:
dependencies:
'@testing-library/dom': 10.4.0
- '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.24)(vue@3.5.24(typescript@5.9.3))':
+ '@testing-library/vue@8.1.0(@vue/compiler-sfc@3.5.25)(vue@3.5.25(typescript@5.9.3))':
dependencies:
'@babel/runtime': 7.28.4
'@testing-library/dom': 9.3.4
'@vue/test-utils': 2.4.6
- vue: 3.5.24(typescript@5.9.3)
+ vue: 3.5.25(typescript@5.9.3)
optionalDependencies:
- '@vue/compiler-sfc': 3.5.24
+ '@vue/compiler-sfc': 3.5.25
'@tokenizer/inflate@0.2.7':
dependencies:
@@ -15034,15 +15309,17 @@ snapshots:
'@tokenizer/token@0.3.0': {}
+ '@tootallnate/once@2.0.0': {}
+
'@tsd/typescript@5.9.3': {}
'@twemoji/parser@16.0.0': {}
'@types/accepts@1.3.7':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
- '@types/archiver@6.0.4':
+ '@types/archiver@7.0.0':
dependencies:
'@types/readdir-glob': 1.1.5
@@ -15071,12 +15348,10 @@ snapshots:
dependencies:
'@babel/types': 7.28.5
- '@types/bcryptjs@2.4.6': {}
-
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/braces@3.0.5': {}
@@ -15095,7 +15370,7 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/content-disposition@0.5.9': {}
@@ -15103,7 +15378,7 @@ snapshots:
'@types/debug@4.1.12':
dependencies:
- '@types/ms': 0.7.34
+ '@types/ms': 2.1.0
'@types/deep-eql@4.0.2': {}
@@ -15128,12 +15403,12 @@ snapshots:
'@types/express-serve-static-core@5.1.0':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
'@types/send': 1.2.1
- '@types/express@5.0.5':
+ '@types/express@5.0.4':
dependencies:
'@types/body-parser': 1.19.6
'@types/express-serve-static-core': 5.1.0
@@ -15141,11 +15416,11 @@ snapshots:
'@types/fluent-ffmpeg@2.1.28':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/hammerjs@2.0.46': {}
@@ -15153,15 +15428,13 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
- '@types/htmlescape@1.1.3': {}
-
'@types/http-cache-semantics@4.0.4': {}
'@types/http-errors@2.0.5': {}
'@types/http-link-header@1.0.7':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -15180,9 +15453,9 @@ snapshots:
'@types/js-yaml@4.0.9': {}
- '@types/jsdom@21.1.7':
+ '@types/jsdom@20.0.1':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/tough-cookie': 4.0.5
parse5: 7.3.0
@@ -15192,8 +15465,6 @@ snapshots:
'@types/jsonld@1.5.15': {}
- '@types/jsrsasign@10.5.15': {}
-
'@types/long@4.0.2': {}
'@types/matter-js@0.20.2': {}
@@ -15210,35 +15481,35 @@ snapshots:
dependencies:
'@types/braces': 3.0.5
- '@types/mime-types@2.1.4': {}
+ '@types/mime-types@3.0.1': {}
'@types/mime@1.3.5': {}
'@types/minimist@1.2.5': {}
- '@types/ms@0.7.34': {}
+ '@types/ms@2.1.0': {}
'@types/mysql@2.15.27':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/node-fetch@2.6.13':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
form-data: 4.0.5
'@types/node@20.19.25':
dependencies:
undici-types: 6.21.0
- '@types/node@24.10.1':
+ '@types/node@24.10.2':
dependencies:
undici-types: 7.16.0
- '@types/nodemailer@6.4.21':
+ '@types/nodemailer@7.0.4':
dependencies:
- '@aws-sdk/client-ses': 3.936.0
- '@types/node': 24.10.1
+ '@aws-sdk/client-sesv2': 3.938.0
+ '@types/node': 24.10.2
transitivePeerDependencies:
- aws-crt
@@ -15250,12 +15521,8 @@ snapshots:
'@types/oauth2orize@1.11.5':
dependencies:
- '@types/express': 5.0.5
- '@types/node': 24.10.1
-
- '@types/oauth@0.9.6':
- dependencies:
- '@types/node': 24.10.1
+ '@types/express': 5.0.4
+ '@types/node': 24.10.2
'@types/offscreencanvas@2019.3.0': {}
@@ -15265,25 +15532,17 @@ snapshots:
dependencies:
'@types/pg': 8.15.6
- '@types/pg@8.15.5':
- dependencies:
- '@types/node': 24.10.1
- pg-protocol: 1.10.3
- pg-types: 2.2.0
-
'@types/pg@8.15.6':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
pg-protocol: 1.10.3
pg-types: 2.2.0
- '@types/pug@2.0.10': {}
-
'@types/punycode@2.1.4': {}
'@types/qrcode@1.5.6':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/qs@6.14.0': {}
@@ -15299,7 +15558,7 @@ snapshots:
'@types/readdir-glob@1.1.5':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/redis-info@3.0.3': {}
@@ -15320,32 +15579,30 @@ snapshots:
'@types/send@0.17.6':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/send@1.2.1':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/serve-static@1.15.10':
dependencies:
'@types/http-errors': 2.0.5
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/send': 0.17.6
'@types/serviceworker@0.0.74': {}
- '@types/shimmer@1.2.0': {}
-
- '@types/simple-oauth2@5.0.7': {}
+ '@types/simple-oauth2@5.0.8': {}
'@types/sinon@17.0.4':
dependencies:
- '@types/sinonjs__fake-timers': 8.1.5
+ '@types/sinonjs__fake-timers': 15.0.1
+
+ '@types/sinonjs__fake-timers@15.0.1': {}
'@types/sinonjs__fake-timers@8.1.1': {}
- '@types/sinonjs__fake-timers@8.1.5': {}
-
'@types/sizzle@2.3.10': {}
'@types/stack-utils@2.0.3': {}
@@ -15356,7 +15613,7 @@ snapshots:
dependencies:
'@types/cookiejar': 2.1.5
'@types/methods': 1.1.4
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
form-data: 4.0.5
'@types/supertest@6.0.3':
@@ -15366,7 +15623,7 @@ snapshots:
'@types/tedious@4.0.14':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/throttle-debounce@5.0.2': {}
@@ -15382,43 +15639,42 @@ snapshots:
'@types/vary@1.1.3':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/wawoff2@1.0.2':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/web-push@3.6.4':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/whatwg-mimetype@3.0.2': {}
'@types/ws@8.18.1':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
'@types/yargs-parser@21.0.3': {}
- '@types/yargs@17.0.35':
+ '@types/yargs@17.0.34':
dependencies:
'@types/yargs-parser': 21.0.3
'@types/yauzl@2.10.3':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
optional: true
- '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)':
+ '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.47.0
+ '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.49.0
+ '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.49.0
eslint: 9.39.1
- graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
ts-api-utils: 2.1.0(typescript@5.9.3)
@@ -15426,41 +15682,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.47.0
+ '@typescript-eslint/scope-manager': 8.49.0
+ '@typescript-eslint/types': 8.49.0
+ '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.49.0
debug: 4.4.3(supports-color@10.2.2)
eslint: 9.39.1
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.47.0(typescript@5.9.3)':
+ '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.49.0
debug: 4.4.3(supports-color@10.2.2)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.47.0':
+ '@typescript-eslint/scope-manager@8.49.0':
dependencies:
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/visitor-keys': 8.47.0
+ '@typescript-eslint/types': 8.49.0
+ '@typescript-eslint/visitor-keys': 8.49.0
- '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
- '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1)(typescript@5.9.3)':
+ '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/types': 8.49.0
+ '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.49.0(eslint@9.39.1)(typescript@5.9.3)
debug: 4.4.3(supports-color@10.2.2)
eslint: 9.39.1
ts-api-utils: 2.1.0(typescript@5.9.3)
@@ -15468,100 +15724,61 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.47.0': {}
+ '@typescript-eslint/types@8.49.0': {}
- '@typescript-eslint/typescript-estree@8.47.0(typescript@5.9.3)':
+ '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.47.0(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/visitor-keys': 8.47.0
+ '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.49.0
+ '@typescript-eslint/visitor-keys': 8.49.0
debug: 4.4.3(supports-color@10.2.2)
- fast-glob: 3.3.3
- is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.7.3
+ tinyglobby: 0.2.15
ts-api-utils: 2.1.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.47.0(eslint@9.39.1)(typescript@5.9.3)':
+ '@typescript-eslint/utils@8.49.0(eslint@9.39.1)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
- '@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.49.0
+ '@typescript-eslint/types': 8.49.0
+ '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3)
eslint: 9.39.1
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.47.0':
+ '@typescript-eslint/visitor-keys@8.49.0':
dependencies:
- '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/types': 8.49.0
eslint-visitor-keys: 4.2.1
'@ungap/structured-clone@1.3.0': {}
- '@vitejs/plugin-vue@6.0.2(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))(vue@3.5.24(typescript@5.9.3))':
+ '@vitejs/plugin-vue@6.0.2(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))(vue@3.5.25(typescript@5.9.3))':
dependencies:
'@rolldown/pluginutils': 1.0.0-beta.50
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
- vue: 3.5.24(typescript@5.9.3)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
+ vue: 3.5.25(typescript@5.9.3)
- '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@bcoe/v8-coverage': 1.0.2
- ast-v8-to-istanbul: 0.3.8
- debug: 4.4.3(supports-color@10.2.2)
- istanbul-lib-coverage: 3.2.2
- istanbul-lib-report: 3.0.1
- istanbul-lib-source-maps: 5.0.6
- istanbul-reports: 3.2.0
- magic-string: 0.30.21
- magicast: 0.3.5
- std-env: 3.10.0
- test-exclude: 7.0.1
- tinyrainbow: 2.0.0
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
- transitivePeerDependencies:
- - supports-color
-
- '@vitest/coverage-v8@3.2.4(vitest@4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@bcoe/v8-coverage': 1.0.2
- ast-v8-to-istanbul: 0.3.8
- debug: 4.4.3(supports-color@10.2.2)
- istanbul-lib-coverage: 3.2.2
- istanbul-lib-report: 3.0.1
- istanbul-lib-source-maps: 5.0.6
- istanbul-reports: 3.2.0
- magic-string: 0.30.21
- magicast: 0.3.5
- std-env: 3.10.0
- test-exclude: 7.0.1
- tinyrainbow: 2.0.0
- vitest: 4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
- transitivePeerDependencies:
- - supports-color
-
- '@vitest/coverage-v8@4.0.10(vitest@4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))':
+ '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))':
dependencies:
'@bcoe/v8-coverage': 1.0.2
- '@vitest/utils': 4.0.10
+ '@vitest/utils': 4.0.15
ast-v8-to-istanbul: 0.3.8
- debug: 4.4.3(supports-color@10.2.2)
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.6
istanbul-reports: 3.2.0
magicast: 0.5.1
+ obug: 2.1.1
std-env: 3.10.0
tinyrainbow: 3.0.3
- vitest: 4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
transitivePeerDependencies:
- supports-color
@@ -15580,32 +15797,32 @@ snapshots:
chai: 5.3.3
tinyrainbow: 2.0.0
- '@vitest/expect@4.0.10':
+ '@vitest/expect@4.0.15':
dependencies:
'@standard-schema/spec': 1.0.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.0.10
- '@vitest/utils': 4.0.10
+ '@vitest/spy': 4.0.15
+ '@vitest/utils': 4.0.15
chai: 6.2.1
tinyrainbow: 3.0.3
- '@vitest/mocker@3.2.4(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))':
+ '@vitest/mocker@3.2.4(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- msw: 2.12.2(@types/node@24.10.1)(typescript@5.9.3)
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ msw: 2.12.4(@types/node@24.10.2)(typescript@5.9.3)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
- '@vitest/mocker@4.0.10(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))':
+ '@vitest/mocker@4.0.15(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))':
dependencies:
- '@vitest/spy': 4.0.10
+ '@vitest/spy': 4.0.15
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- msw: 2.12.2(@types/node@24.10.1)(typescript@5.9.3)
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ msw: 2.12.4(@types/node@24.10.2)(typescript@5.9.3)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
'@vitest/pretty-format@2.0.5':
dependencies:
@@ -15619,30 +15836,18 @@ snapshots:
dependencies:
tinyrainbow: 2.0.0
- '@vitest/pretty-format@4.0.10':
+ '@vitest/pretty-format@4.0.15':
dependencies:
tinyrainbow: 3.0.3
- '@vitest/runner@3.2.4':
+ '@vitest/runner@4.0.15':
dependencies:
- '@vitest/utils': 3.2.4
- pathe: 2.0.3
- strip-literal: 3.1.0
-
- '@vitest/runner@4.0.10':
- dependencies:
- '@vitest/utils': 4.0.10
+ '@vitest/utils': 4.0.15
pathe: 2.0.3
- '@vitest/snapshot@3.2.4':
+ '@vitest/snapshot@4.0.15':
dependencies:
- '@vitest/pretty-format': 3.2.4
- magic-string: 0.30.21
- pathe: 2.0.3
-
- '@vitest/snapshot@4.0.10':
- dependencies:
- '@vitest/pretty-format': 4.0.10
+ '@vitest/pretty-format': 4.0.15
magic-string: 0.30.21
pathe: 2.0.3
@@ -15654,7 +15859,7 @@ snapshots:
dependencies:
tinyspy: 4.0.4
- '@vitest/spy@4.0.10': {}
+ '@vitest/spy@4.0.15': {}
'@vitest/utils@2.0.5':
dependencies:
@@ -15675,22 +15880,22 @@ snapshots:
loupe: 3.2.1
tinyrainbow: 2.0.0
- '@vitest/utils@4.0.10':
+ '@vitest/utils@4.0.15':
dependencies:
- '@vitest/pretty-format': 4.0.10
+ '@vitest/pretty-format': 4.0.15
tinyrainbow: 3.0.3
'@volar/language-core@2.4.15':
dependencies:
'@volar/source-map': 2.4.15
- '@volar/language-core@2.4.23':
+ '@volar/language-core@2.4.26':
dependencies:
- '@volar/source-map': 2.4.23
+ '@volar/source-map': 2.4.26
'@volar/source-map@2.4.15': {}
- '@volar/source-map@2.4.23': {}
+ '@volar/source-map@2.4.26': {}
'@volar/typescript@2.4.15':
dependencies:
@@ -15698,41 +15903,41 @@ snapshots:
path-browserify: 1.0.1
vscode-uri: 3.1.0
- '@volar/typescript@2.4.23':
+ '@volar/typescript@2.4.26':
dependencies:
- '@volar/language-core': 2.4.23
+ '@volar/language-core': 2.4.26
path-browserify: 1.0.1
vscode-uri: 3.1.0
- '@vue/compiler-core@3.5.24':
+ '@vue/compiler-core@3.5.25':
dependencies:
'@babel/parser': 7.28.5
- '@vue/shared': 3.5.24
+ '@vue/shared': 3.5.25
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.5.24':
+ '@vue/compiler-dom@3.5.25':
dependencies:
- '@vue/compiler-core': 3.5.24
- '@vue/shared': 3.5.24
+ '@vue/compiler-core': 3.5.25
+ '@vue/shared': 3.5.25
- '@vue/compiler-sfc@3.5.24':
+ '@vue/compiler-sfc@3.5.25':
dependencies:
'@babel/parser': 7.28.5
- '@vue/compiler-core': 3.5.24
- '@vue/compiler-dom': 3.5.24
- '@vue/compiler-ssr': 3.5.24
- '@vue/shared': 3.5.24
+ '@vue/compiler-core': 3.5.25
+ '@vue/compiler-dom': 3.5.25
+ '@vue/compiler-ssr': 3.5.25
+ '@vue/shared': 3.5.25
estree-walker: 2.0.2
magic-string: 0.30.21
postcss: 8.5.6
source-map-js: 1.2.1
- '@vue/compiler-ssr@3.5.24':
+ '@vue/compiler-ssr@3.5.25':
dependencies:
- '@vue/compiler-dom': 3.5.24
- '@vue/shared': 3.5.24
+ '@vue/compiler-dom': 3.5.25
+ '@vue/shared': 3.5.25
'@vue/compiler-vue2@2.7.16':
dependencies:
@@ -15742,9 +15947,9 @@ snapshots:
'@vue/language-core@2.2.12(typescript@5.9.3)':
dependencies:
'@volar/language-core': 2.4.15
- '@vue/compiler-dom': 3.5.24
+ '@vue/compiler-dom': 3.5.25
'@vue/compiler-vue2': 2.7.16
- '@vue/shared': 3.5.24
+ '@vue/shared': 3.5.25
alien-signals: 1.0.13
minimatch: 9.0.5
muggle-string: 0.4.1
@@ -15752,11 +15957,11 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
- '@vue/language-core@3.1.4(typescript@5.9.3)':
+ '@vue/language-core@3.1.8(typescript@5.9.3)':
dependencies:
- '@volar/language-core': 2.4.23
- '@vue/compiler-dom': 3.5.24
- '@vue/shared': 3.5.24
+ '@volar/language-core': 2.4.26
+ '@vue/compiler-dom': 3.5.25
+ '@vue/shared': 3.5.25
alien-signals: 3.1.0
muggle-string: 0.4.1
path-browserify: 1.0.1
@@ -15764,29 +15969,29 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
- '@vue/reactivity@3.5.24':
+ '@vue/reactivity@3.5.25':
dependencies:
- '@vue/shared': 3.5.24
+ '@vue/shared': 3.5.25
- '@vue/runtime-core@3.5.24':
+ '@vue/runtime-core@3.5.25':
dependencies:
- '@vue/reactivity': 3.5.24
- '@vue/shared': 3.5.24
+ '@vue/reactivity': 3.5.25
+ '@vue/shared': 3.5.25
- '@vue/runtime-dom@3.5.24':
+ '@vue/runtime-dom@3.5.25':
dependencies:
- '@vue/reactivity': 3.5.24
- '@vue/runtime-core': 3.5.24
- '@vue/shared': 3.5.24
+ '@vue/reactivity': 3.5.25
+ '@vue/runtime-core': 3.5.25
+ '@vue/shared': 3.5.25
csstype: 3.2.3
- '@vue/server-renderer@3.5.24(vue@3.5.24(typescript@5.9.3))':
+ '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@5.9.3))':
dependencies:
- '@vue/compiler-ssr': 3.5.24
- '@vue/shared': 3.5.24
- vue: 3.5.24(typescript@5.9.3)
+ '@vue/compiler-ssr': 3.5.25
+ '@vue/shared': 3.5.25
+ vue: 3.5.25(typescript@5.9.3)
- '@vue/shared@3.5.24': {}
+ '@vue/shared@3.5.25': {}
'@vue/test-utils@2.4.6':
dependencies:
@@ -15893,6 +16098,8 @@ snapshots:
'@xmldom/xmldom@0.9.8':
optional: true
+ abab@2.0.6: {}
+
abbrev@1.1.1:
optional: true
@@ -15911,6 +16118,16 @@ snapshots:
mime-types: 2.1.35
negotiator: 0.6.3
+ accepts@2.0.0:
+ dependencies:
+ mime-types: 3.0.2
+ negotiator: 1.0.0
+
+ acorn-globals@7.0.1:
+ dependencies:
+ acorn: 8.15.0
+ acorn-walk: 8.3.4
+
acorn-import-attributes@1.9.5(acorn@8.15.0):
dependencies:
acorn: 8.15.0
@@ -15919,6 +16136,10 @@ snapshots:
dependencies:
acorn: 8.15.0
+ acorn-walk@8.3.4:
+ dependencies:
+ acorn: 8.15.0
+
acorn@7.4.1: {}
acorn@8.15.0: {}
@@ -15936,7 +16157,6 @@ snapshots:
debug: 4.4.3(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
- optional: true
agent-base@7.1.4: {}
@@ -15945,12 +16165,7 @@ snapshots:
clean-stack: 2.2.0
indent-string: 4.0.0
- aggregate-error@5.0.0:
- dependencies:
- clean-stack: 5.3.0
- indent-string: 5.0.0
-
- aiscript-vscode@https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/c3cde89e79a41d93540cf8a48cd619c3f2dcb1b7:
+ aiscript-vscode@https://codeload.github.com/aiscript-dev/aiscript-vscode/tar.gz/1dc7f60cda78d030dadfc518a33c472202b2ef67:
dependencies:
vscode-languageclient: 9.0.1
@@ -16033,7 +16248,7 @@ snapshots:
ansi-styles@6.2.3: {}
- ansis@3.17.0: {}
+ ansis@4.2.0: {}
anymatch@3.1.3:
dependencies:
@@ -16307,7 +16522,7 @@ snapshots:
balanced-match@1.0.2: {}
- bare-events@2.8.2: {}
+ bare-events@2.8.1: {}
base64-js@1.5.1: {}
@@ -16317,11 +16532,7 @@ snapshots:
dependencies:
tweetnacl: 0.14.5
- bcryptjs@2.4.3: {}
-
- better-opn@3.0.2:
- dependencies:
- open: 8.4.2
+ bcryptjs@3.0.3: {}
bidi-js@1.0.3:
dependencies:
@@ -16364,6 +16575,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ body-parser@2.2.1:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 4.4.3(supports-color@10.2.2)
+ http-errors: 2.0.0
+ iconv-lite: 0.7.0
+ on-finished: 2.4.1
+ qs: 6.14.0
+ raw-body: 3.0.1
+ type-is: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
boolbase@1.0.0: {}
bowser@2.12.1: {}
@@ -16428,7 +16653,7 @@ snapshots:
node-gyp-build: 4.8.4
optional: true
- bullmq@5.63.2:
+ bullmq@5.65.1:
dependencies:
cron-parser: 4.9.0
ioredis: 5.8.2
@@ -16450,8 +16675,6 @@ snapshots:
bytes@3.1.2: {}
- cac@6.7.14: {}
-
cacache@19.0.1:
dependencies:
'@npmcli/fs': 4.0.0
@@ -16462,7 +16685,7 @@ snapshots:
minipass-collect: 2.0.1
minipass-flush: 1.0.5
minipass-pipeline: 1.2.4
- p-map: 7.0.4
+ p-map: 7.0.3
ssri: 12.0.0
tar: 7.5.2
unique-filename: 4.0.0
@@ -16529,13 +16752,13 @@ snapshots:
caniuse-lite@1.0.30001755: {}
- canonicalize@1.0.8: {}
+ canonicalize@2.1.0: {}
canvas-confetti@1.9.4: {}
caseless@0.12.0: {}
- cbor@9.0.2:
+ cbor@10.0.11:
dependencies:
nofilter: 3.1.0
@@ -16645,9 +16868,9 @@ snapshots:
undici: 7.16.0
whatwg-mimetype: 4.0.0
- chokidar@4.0.3:
+ chokidar@5.0.0:
dependencies:
- readdirp: 4.1.2
+ readdirp: 5.0.0
chownr@2.0.0:
optional: true
@@ -16664,10 +16887,6 @@ snapshots:
clean-stack@2.2.0: {}
- clean-stack@5.3.0:
- dependencies:
- escape-string-regexp: 5.0.0
-
cli-cursor@3.1.0:
dependencies:
restore-cursor: 3.1.0
@@ -16703,6 +16922,12 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
+ cliui@9.0.1:
+ dependencies:
+ string-width: 7.2.0
+ strip-ansi: 7.1.2
+ wrap-ansi: 9.0.2
+
cluster-key-slot@1.1.2: {}
co@4.6.0: {}
@@ -16713,8 +16938,14 @@ snapshots:
dependencies:
color-name: 1.1.4
+ color-convert@3.1.3:
+ dependencies:
+ color-name: 2.1.0
+
color-name@1.1.4: {}
+ color-name@2.1.0: {}
+
color-string@1.9.1:
dependencies:
color-name: 1.1.4
@@ -16799,12 +17030,16 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
+ content-disposition@1.0.1: {}
+
content-type@1.0.5: {}
convert-source-map@2.0.0: {}
cookie-signature@1.0.6: {}
+ cookie-signature@1.2.2: {}
+
cookie@0.7.1: {}
cookie@1.0.2: {}
@@ -16829,13 +17064,13 @@ snapshots:
crc-32: 1.2.2
readable-stream: 4.7.0
- create-jest@29.7.0(@types/node@24.10.1):
+ create-jest@29.7.0(@types/node@24.10.2):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@24.10.1)
+ jest-config: 29.7.0(@types/node@24.10.2)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -16858,16 +17093,6 @@ snapshots:
'@epic-web/invariant': 1.0.0
cross-spawn: 7.0.6
- cross-env@7.0.3:
- dependencies:
- cross-spawn: 7.0.6
-
- cross-fetch@4.1.0(encoding@0.1.13):
- dependencies:
- node-fetch: 2.7.0(encoding@0.1.13)
- transitivePeerDependencies:
- - encoding
-
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -16950,21 +17175,24 @@ snapshots:
dependencies:
css-tree: 2.2.1
- cssstyle@4.6.0:
+ cssom@0.3.8: {}
+
+ cssom@0.5.0: {}
+
+ cssstyle@2.3.0:
dependencies:
- '@asamuzakjp/css-color': 3.2.0
- rrweb-cssom: 0.8.0
+ cssom: 0.3.8
cssstyle@5.3.3:
dependencies:
- '@asamuzakjp/css-color': 4.1.0
+ '@asamuzakjp/css-color': 4.0.5
'@csstools/css-syntax-patches-for-csstree': 1.0.16
css-tree: 3.1.0
optional: true
csstype@3.2.3: {}
- cypress@15.6.0:
+ cypress@15.7.1:
dependencies:
'@cypress/request': 3.0.9
'@cypress/xvfb': 1.2.4(supports-color@8.1.1)
@@ -17002,7 +17230,6 @@ snapshots:
process: 0.11.10
proxy-from-env: 1.0.0
request-progress: 3.0.0
- semver: 7.7.3
supports-color: 8.1.1
systeminformation: 5.27.7
tmp: 0.2.5
@@ -17016,10 +17243,11 @@ snapshots:
data-uri-to-buffer@4.0.1: {}
- data-urls@5.0.0:
+ data-urls@3.0.2:
dependencies:
- whatwg-mimetype: 4.0.0
- whatwg-url: 14.2.0
+ abab: 2.0.6
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
data-urls@6.0.0:
dependencies:
@@ -17045,10 +17273,6 @@ snapshots:
es-errors: 1.3.0
is-data-view: 1.0.2
- date-fns@2.30.0:
- dependencies:
- '@babel/runtime': 7.28.4
-
date-fns@4.1.0: {}
dayjs@1.11.19: {}
@@ -17163,8 +17387,6 @@ snapshots:
es-errors: 1.3.0
gopd: 1.2.0
- define-lazy-prop@2.0.0: {}
-
define-properties@1.2.1:
dependencies:
define-data-property: 1.1.4
@@ -17246,6 +17468,10 @@ snapshots:
domelementtype@2.3.0: {}
+ domexception@4.0.0:
+ dependencies:
+ webidl-conversions: 7.0.0
+
domhandler@3.3.0:
dependencies:
domelementtype: 2.3.0
@@ -17304,10 +17530,14 @@ snapshots:
emittery@0.13.1: {}
+ emoji-regex@10.6.0: {}
+
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
+ empathic@2.0.0: {}
+
encodeurl@1.0.2: {}
encodeurl@2.0.0: {}
@@ -17453,13 +17683,6 @@ snapshots:
es6-promise: 4.2.8
optional: true
- esbuild-register@3.6.0(esbuild@0.25.11):
- dependencies:
- debug: 4.4.3(supports-color@10.2.2)
- esbuild: 0.25.11
- transitivePeerDependencies:
- - supports-color
-
esbuild@0.25.11:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.11
@@ -17489,34 +17712,34 @@ snapshots:
'@esbuild/win32-ia32': 0.25.11
'@esbuild/win32-x64': 0.25.11
- esbuild@0.27.0:
+ esbuild@0.27.1:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.27.0
- '@esbuild/android-arm': 0.27.0
- '@esbuild/android-arm64': 0.27.0
- '@esbuild/android-x64': 0.27.0
- '@esbuild/darwin-arm64': 0.27.0
- '@esbuild/darwin-x64': 0.27.0
- '@esbuild/freebsd-arm64': 0.27.0
- '@esbuild/freebsd-x64': 0.27.0
- '@esbuild/linux-arm': 0.27.0
- '@esbuild/linux-arm64': 0.27.0
- '@esbuild/linux-ia32': 0.27.0
- '@esbuild/linux-loong64': 0.27.0
- '@esbuild/linux-mips64el': 0.27.0
- '@esbuild/linux-ppc64': 0.27.0
- '@esbuild/linux-riscv64': 0.27.0
- '@esbuild/linux-s390x': 0.27.0
- '@esbuild/linux-x64': 0.27.0
- '@esbuild/netbsd-arm64': 0.27.0
- '@esbuild/netbsd-x64': 0.27.0
- '@esbuild/openbsd-arm64': 0.27.0
- '@esbuild/openbsd-x64': 0.27.0
- '@esbuild/openharmony-arm64': 0.27.0
- '@esbuild/sunos-x64': 0.27.0
- '@esbuild/win32-arm64': 0.27.0
- '@esbuild/win32-ia32': 0.27.0
- '@esbuild/win32-x64': 0.27.0
+ '@esbuild/aix-ppc64': 0.27.1
+ '@esbuild/android-arm': 0.27.1
+ '@esbuild/android-arm64': 0.27.1
+ '@esbuild/android-x64': 0.27.1
+ '@esbuild/darwin-arm64': 0.27.1
+ '@esbuild/darwin-x64': 0.27.1
+ '@esbuild/freebsd-arm64': 0.27.1
+ '@esbuild/freebsd-x64': 0.27.1
+ '@esbuild/linux-arm': 0.27.1
+ '@esbuild/linux-arm64': 0.27.1
+ '@esbuild/linux-ia32': 0.27.1
+ '@esbuild/linux-loong64': 0.27.1
+ '@esbuild/linux-mips64el': 0.27.1
+ '@esbuild/linux-ppc64': 0.27.1
+ '@esbuild/linux-riscv64': 0.27.1
+ '@esbuild/linux-s390x': 0.27.1
+ '@esbuild/linux-x64': 0.27.1
+ '@esbuild/netbsd-arm64': 0.27.1
+ '@esbuild/netbsd-x64': 0.27.1
+ '@esbuild/openbsd-arm64': 0.27.1
+ '@esbuild/openbsd-x64': 0.27.1
+ '@esbuild/openharmony-arm64': 0.27.1
+ '@esbuild/sunos-x64': 0.27.1
+ '@esbuild/win32-arm64': 0.27.1
+ '@esbuild/win32-ia32': 0.27.1
+ '@esbuild/win32-x64': 0.27.1
escalade@3.2.0: {}
@@ -17534,6 +17757,14 @@ snapshots:
escape-string-regexp@5.0.0: {}
+ escodegen@2.1.0:
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.3.0
+ esutils: 2.0.3
+ optionalDependencies:
+ source-map: 0.6.1
+
eslint-formatter-pretty@4.1.0:
dependencies:
'@types/eslint': 7.29.0
@@ -17553,17 +17784,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1):
dependencies:
debug: 3.2.7(supports-color@8.1.1)
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3)
eslint: 9.39.1
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -17574,7 +17805,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.1
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.1)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -17586,25 +17817,25 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-vue@10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.47.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)):
+ eslint-plugin-vue@10.6.2(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1))(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(vue-eslint-parser@10.2.0(eslint@9.39.1)):
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
eslint: 9.39.1
natural-compare: 1.4.0
nth-check: 2.1.1
- postcss-selector-parser: 6.1.2
+ postcss-selector-parser: 7.1.0
semver: 7.7.3
vue-eslint-parser: 10.2.0(eslint@9.39.1)
xml-name-validator: 4.0.0
optionalDependencies:
'@stylistic/eslint-plugin': 5.5.0(eslint@9.39.1)
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.49.0(eslint@9.39.1)(typescript@5.9.3)
eslint-rule-docs@1.1.235: {}
@@ -17706,7 +17937,7 @@ snapshots:
events-universal@1.0.1:
dependencies:
- bare-events: 2.8.2
+ bare-events: 2.8.1
transitivePeerDependencies:
- bare-abort-controller
@@ -17748,19 +17979,7 @@ snapshots:
signal-exit: 3.0.7
strip-final-newline: 3.0.0
- execa@8.0.1:
- dependencies:
- cross-spawn: 7.0.6
- get-stream: 8.0.1
- human-signals: 5.0.0
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.3.0
- onetime: 6.0.0
- signal-exit: 4.1.0
- strip-final-newline: 3.0.0
-
- execa@9.6.0:
+ execa@9.6.1:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
cross-spawn: 7.0.6
@@ -17779,7 +17998,7 @@ snapshots:
dependencies:
pify: 2.3.0
- exifreader@4.32.0:
+ exifreader@4.33.1:
optionalDependencies:
'@xmldom/xmldom': 0.9.8
@@ -17833,6 +18052,38 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ express@5.1.0:
+ dependencies:
+ accepts: 2.0.0
+ body-parser: 2.2.1
+ content-disposition: 1.0.1
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.2.2
+ debug: 4.4.3(supports-color@10.2.2)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 2.1.0
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ merge-descriptors: 2.0.0
+ mime-types: 3.0.2
+ on-finished: 2.4.1
+ once: 1.4.0
+ parseurl: 1.3.3
+ proxy-addr: 2.0.7
+ qs: 6.14.0
+ range-parser: 1.2.1
+ router: 2.2.0
+ send: 1.2.0
+ serve-static: 2.2.0
+ statuses: 2.0.2
+ type-is: 2.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
ext-list@2.2.2:
dependencies:
mime-db: 1.54.0
@@ -17856,7 +18107,7 @@ snapshots:
extsprintf@1.3.0: {}
- fast-content-type-parse@2.0.1: {}
+ fast-content-type-parse@3.0.0: {}
fast-decode-uri-component@1.0.1: {}
@@ -17893,10 +18144,6 @@ snapshots:
fast-uri@3.1.0: {}
- fast-xml-parser@4.5.3:
- dependencies:
- strnum: 1.1.2
-
fast-xml-parser@5.2.5:
dependencies:
strnum: 2.1.1
@@ -17943,7 +18190,7 @@ snapshots:
optionalDependencies:
picomatch: 4.0.3
- feed@4.2.2:
+ feed@5.1.0:
dependencies:
xml-js: 1.6.11
@@ -18015,14 +18262,23 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ finalhandler@2.1.0:
+ dependencies:
+ debug: 4.4.3(supports-color@10.2.2)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
find-my-way@9.3.0:
dependencies:
fast-deep-equal: 3.1.3
fast-querystring: 1.1.2
safe-regex2: 5.0.0
- find-package-json@1.2.0: {}
-
find-up@4.1.0:
dependencies:
locate-path: 5.0.0
@@ -18033,23 +18289,16 @@ snapshots:
locate-path: 6.0.0
path-exists: 4.0.0
- find-up@7.0.0:
- dependencies:
- locate-path: 7.2.0
- path-exists: 5.0.0
- unicorn-magic: 0.1.0
-
find-versions@5.1.0:
dependencies:
semver-regex: 4.0.5
- fkill@9.0.0:
+ fkill@10.0.1:
dependencies:
- aggregate-error: 5.0.0
- execa: 8.0.1
- pid-port: 1.0.2
+ execa: 9.6.1
+ pid-port: 2.0.0
process-exists: 5.0.0
- ps-list: 8.1.1
+ ps-list: 9.0.0
taskkill: 5.0.0
flat-cache@4.0.1:
@@ -18107,6 +18356,8 @@ snapshots:
fresh@0.5.2: {}
+ fresh@2.0.0: {}
+
from@0.1.7: {}
fs-extra@11.3.2:
@@ -18174,6 +18425,8 @@ snapshots:
get-caller-file@2.0.5: {}
+ get-east-asian-width@1.4.0: {}
+
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -18200,8 +18453,6 @@ snapshots:
get-stream@6.0.1: {}
- get-stream@8.0.1: {}
-
get-stream@9.0.1:
dependencies:
'@sec-ant/readable-stream': 0.4.1
@@ -18247,12 +18498,6 @@ snapshots:
package-json-from-dist: 1.0.1
path-scurry: 2.0.1
- glob@13.0.0:
- dependencies:
- minimatch: 10.1.1
- minipass: 7.1.2
- path-scurry: 2.0.1
-
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
@@ -18275,8 +18520,6 @@ snapshots:
define-properties: 1.2.1
gopd: 1.2.0
- globalyzer@0.1.0: {}
-
globby@11.1.0:
dependencies:
array-union: 2.1.0
@@ -18286,8 +18529,6 @@ snapshots:
merge2: 1.4.1
slash: 3.0.0
- globrex@0.1.2: {}
-
google-protobuf@3.21.4:
optional: true
@@ -18307,7 +18548,7 @@ snapshots:
p-cancelable: 3.0.0
responselike: 3.0.0
- got@14.6.4:
+ got@14.6.5:
dependencies:
'@sindresorhus/is': 7.1.1
byte-counter: 0.1.0
@@ -18324,13 +18565,11 @@ snapshots:
graceful-fs@4.2.11: {}
- graphemer@1.4.0: {}
-
graphql@16.12.0: {}
hammerjs@2.0.8: {}
- happy-dom@20.0.10:
+ happy-dom@20.0.11:
dependencies:
'@types/node': 20.19.25
'@types/whatwg-mimetype': 3.0.2
@@ -18406,9 +18645,14 @@ snapshots:
hpagent@1.2.0: {}
+ html-encoding-sniffer@3.0.0:
+ dependencies:
+ whatwg-encoding: 2.0.0
+
html-encoding-sniffer@4.0.0:
dependencies:
whatwg-encoding: 3.1.1
+ optional: true
html-entities@2.6.0: {}
@@ -18416,8 +18660,6 @@ snapshots:
html-void-elements@3.0.0: {}
- htmlescape@1.1.1: {}
-
htmlparser2@10.0.0:
dependencies:
domelementtype: 2.3.0
@@ -18458,6 +18700,14 @@ snapshots:
http-link-header@1.1.3: {}
+ http-proxy-agent@5.0.0:
+ dependencies:
+ '@tootallnate/once': 2.0.0
+ agent-base: 6.0.2
+ debug: 4.4.3(supports-color@10.2.2)
+ transitivePeerDependencies:
+ - supports-color
+
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.4
@@ -18492,7 +18742,6 @@ snapshots:
debug: 4.4.3(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
- optional: true
https-proxy-agent@7.0.6(supports-color@10.2.2):
dependencies:
@@ -18507,8 +18756,6 @@ snapshots:
human-signals@3.0.1: {}
- human-signals@5.0.0: {}
-
human-signals@8.0.1: {}
iconv-lite@0.4.24:
@@ -18544,7 +18791,7 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
- import-in-the-middle@1.15.0:
+ import-in-the-middle@2.0.0:
dependencies:
acorn: 8.15.0
acorn-import-attributes: 1.9.5(acorn@8.15.0)
@@ -18562,8 +18809,6 @@ snapshots:
indent-string@4.0.0: {}
- indent-string@5.0.0: {}
-
index-to-position@1.2.0: {}
inflight@1.0.6:
@@ -18609,7 +18854,7 @@ snapshots:
ios-haptics@0.1.4: {}
- ip-address@10.1.0: {}
+ ip-address@10.0.1: {}
ip-address@9.0.5:
dependencies:
@@ -18624,7 +18869,7 @@ snapshots:
ipaddr.js@1.9.1: {}
- ipaddr.js@2.2.0: {}
+ ipaddr.js@2.3.0: {}
irregular-plurals@3.5.0: {}
@@ -18677,8 +18922,6 @@ snapshots:
call-bound: 1.0.4
has-tostringtag: 1.0.2
- is-docker@2.2.1: {}
-
is-expression@4.0.0:
dependencies:
acorn: 7.4.1
@@ -18738,6 +18981,8 @@ snapshots:
is-promise@2.2.2: {}
+ is-promise@4.0.0: {}
+
is-regex@1.2.1:
dependencies:
call-bound: 1.0.4
@@ -18762,9 +19007,9 @@ snapshots:
call-bound: 1.0.4
has-tostringtag: 1.0.2
- is-svg@5.1.0:
+ is-svg@6.1.0:
dependencies:
- fast-xml-parser: 4.5.3
+ '@file-type/xml': 0.4.4
is-symbol@1.1.1:
dependencies:
@@ -18793,10 +19038,6 @@ snapshots:
call-bound: 1.0.4
get-intrinsic: 1.3.0
- is-wsl@2.2.0:
- dependencies:
- is-docker: 2.2.1
-
isarray@1.0.0: {}
isarray@2.0.5: {}
@@ -18880,7 +19121,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
chalk: 4.1.2
co: 4.6.0
dedent: 1.7.0
@@ -18900,16 +19141,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@24.10.1):
+ jest-cli@29.7.0(@types/node@24.10.2):
dependencies:
'@jest/core': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@24.10.1)
+ create-jest: 29.7.0(@types/node@24.10.2)
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@24.10.1)
+ jest-config: 29.7.0(@types/node@24.10.2)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -18919,7 +19160,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@24.10.1):
+ jest-config@29.7.0(@types/node@24.10.2):
dependencies:
'@babel/core': 7.28.5
'@jest/test-sequencer': 29.7.0
@@ -18944,7 +19185,7 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -18968,12 +19209,27 @@ snapshots:
jest-util: 29.7.0
pretty-format: 29.7.0
+ jest-environment-jsdom@29.7.0(bufferutil@4.0.9)(utf-8-validate@6.0.5):
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/jsdom': 20.0.1
+ '@types/node': 24.10.2
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ jsdom: 20.0.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
jest-environment-node@29.7.0:
dependencies:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -18983,7 +19239,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -19022,7 +19278,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -19059,7 +19315,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -19087,7 +19343,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
chalk: 4.1.2
cjs-module-lexer: 1.4.3
collect-v8-coverage: 1.0.3
@@ -19133,7 +19389,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -19152,7 +19408,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -19161,17 +19417,17 @@ snapshots:
jest-worker@29.7.0:
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@24.10.1):
+ jest@29.7.0(@types/node@24.10.2):
dependencies:
'@jest/core': 29.7.0
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@24.10.1)
+ jest-cli: 29.7.0(@types/node@24.10.2)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -19231,28 +19487,34 @@ snapshots:
jschardet@3.1.4: {}
- jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5):
+ jsdom@20.0.3(bufferutil@4.0.9)(utf-8-validate@6.0.5):
dependencies:
- cssstyle: 4.6.0
- data-urls: 5.0.0
+ abab: 2.0.6
+ acorn: 8.15.0
+ acorn-globals: 7.0.1
+ cssom: 0.5.0
+ cssstyle: 2.3.0
+ data-urls: 3.0.2
decimal.js: 10.6.0
- html-encoding-sniffer: 4.0.0
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.6(supports-color@10.2.2)
+ domexception: 4.0.0
+ escodegen: 2.1.0
+ form-data: 4.0.5
+ html-encoding-sniffer: 3.0.0
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
is-potential-custom-element-name: 1.0.1
- nwsapi: 2.2.22
+ nwsapi: 2.2.23
parse5: 7.3.0
- rrweb-cssom: 0.8.0
saxes: 6.0.0
symbol-tree: 3.2.4
- tough-cookie: 5.1.2
- w3c-xmlserializer: 5.0.0
+ tough-cookie: 4.1.4
+ w3c-xmlserializer: 4.0.0
webidl-conversions: 7.0.0
- whatwg-encoding: 3.1.1
- whatwg-mimetype: 4.0.0
- whatwg-url: 14.2.0
+ whatwg-encoding: 2.0.0
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
- xml-name-validator: 5.0.0
+ xml-name-validator: 4.0.0
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -19330,14 +19592,12 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
- jsonld@8.3.3(web-streams-polyfill@3.3.3):
+ jsonld@9.0.0:
dependencies:
- '@digitalbazaar/http-client': 3.4.1(web-streams-polyfill@3.3.3)
- canonicalize: 1.0.8
+ '@digitalbazaar/http-client': 4.2.0
+ canonicalize: 2.1.0
lru-cache: 6.0.0
- rdf-canonize: 3.4.0
- transitivePeerDependencies:
- - web-streams-polyfill
+ rdf-canonize: 5.0.0
jsonpointer@5.0.1: {}
@@ -19355,8 +19615,6 @@ snapshots:
json-schema: 0.4.0
verror: 1.10.0
- jsrsasign@11.1.0: {}
-
jstransformer@1.0.0:
dependencies:
is-promise: 2.2.2
@@ -19396,15 +19654,7 @@ snapshots:
kleur@3.0.3: {}
- ky-universal@0.11.0(ky@0.33.3)(web-streams-polyfill@3.3.3):
- dependencies:
- abort-controller: 3.0.0
- ky: 0.33.3
- node-fetch: 3.3.2
- optionalDependencies:
- web-streams-polyfill: 3.3.3
-
- ky@0.33.3: {}
+ ky@1.14.0: {}
lazy-ass@1.6.0: {}
@@ -19423,7 +19673,7 @@ snapshots:
dependencies:
cookie: 1.0.2
process-warning: 4.0.1
- set-cookie-parser: 2.7.2
+ set-cookie-parser: 2.7.1
lilconfig@3.1.3: {}
@@ -19452,10 +19702,6 @@ snapshots:
dependencies:
p-locate: 5.0.0
- locate-path@7.2.0:
- dependencies:
- p-locate: 6.0.0
-
lodash.defaults@4.2.0: {}
lodash.isarguments@3.1.0: {}
@@ -19512,12 +19758,6 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
- magicast@0.3.5:
- dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
- source-map-js: 1.2.1
-
magicast@0.5.1:
dependencies:
'@babel/parser': 7.28.5
@@ -19689,7 +19929,9 @@ snapshots:
media-typer@0.3.0: {}
- mediabunny@1.25.0:
+ media-typer@1.1.0: {}
+
+ mediabunny@1.25.8:
dependencies:
'@types/dom-mediacapture-transform': 0.1.11
'@types/dom-webcodecs': 0.1.13
@@ -19719,6 +19961,8 @@ snapshots:
merge-descriptors@1.0.3: {}
+ merge-descriptors@2.0.0: {}
+
merge-stream@2.0.0: {}
merge2@1.4.1: {}
@@ -19729,10 +19973,6 @@ snapshots:
dependencies:
'@twemoji/parser': 16.0.0
- microformats-parser@2.0.4:
- dependencies:
- parse5: 7.3.0
-
micromark-core-commonmark@2.0.3:
dependencies:
decode-named-character-reference: 1.2.0
@@ -19937,6 +20177,10 @@ snapshots:
dependencies:
mime-db: 1.52.0
+ mime-types@3.0.2:
+ dependencies:
+ mime-db: 1.54.0
+
mime@1.6.0: {}
mime@2.6.0: {}
@@ -20037,10 +20281,6 @@ snapshots:
mkdirp@1.0.4:
optional: true
- mnemonist@0.40.0:
- dependencies:
- obliterator: 2.0.5
-
mock-socket@9.3.1: {}
module-details-from-path@1.0.4: {}
@@ -20067,14 +20307,14 @@ snapshots:
optionalDependencies:
msgpackr-extract: 3.0.3
- msw-storybook-addon@2.0.6(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3)):
+ msw-storybook-addon@2.0.6(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3)):
dependencies:
is-node-process: 1.2.0
- msw: 2.12.2(@types/node@24.10.1)(typescript@5.9.3)
+ msw: 2.12.4(@types/node@24.10.2)(typescript@5.9.3)
- msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3):
+ msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3):
dependencies:
- '@inquirer/confirm': 5.1.21(@types/node@24.10.1)
+ '@inquirer/confirm': 5.1.21(@types/node@24.10.2)
'@mswjs/interceptors': 0.40.0
'@open-draft/deferred-promise': 2.2.0
'@types/statuses': 2.0.6
@@ -20089,7 +20329,7 @@ snapshots:
statuses: 2.0.2
strict-event-emitter: 0.5.1
tough-cookie: 6.0.0
- type-fest: 4.41.0
+ type-fest: 5.2.0
until-async: 3.0.2
yargs: 17.7.2
optionalDependencies:
@@ -20169,6 +20409,7 @@ snapshots:
whatwg-url: 5.0.0
optionalDependencies:
encoding: 0.1.13
+ optional: true
node-fetch@3.3.2:
dependencies:
@@ -20199,15 +20440,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ node-html-parser@7.0.1:
+ dependencies:
+ css-select: 5.2.2
+ he: 1.2.0
+
node-int64@0.4.0: {}
node-releases@2.0.27: {}
- nodemailer@7.0.10: {}
+ nodemailer@7.0.11: {}
nodemon@3.1.11:
dependencies:
- chokidar: 4.0.3
+ chokidar: 5.0.0
debug: 4.4.3(supports-color@5.5.0)
ignore-by-default: 1.0.1
minimatch: 3.1.2
@@ -20281,7 +20527,7 @@ snapshots:
dependencies:
boolbase: 1.0.0
- nwsapi@2.2.22: {}
+ nwsapi@2.2.23: {}
oauth2orize-pkce@0.1.2: {}
@@ -20293,8 +20539,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- oauth@0.10.2: {}
-
object-assign@4.1.1: {}
object-inspect@1.13.4: {}
@@ -20335,10 +20579,10 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
- obliterator@2.0.5: {}
-
oblivious-set@2.0.0: {}
+ obug@2.1.1: {}
+
on-exit-leak-free@2.1.2: {}
on-finished@2.4.1:
@@ -20359,18 +20603,12 @@ snapshots:
oniguruma-parser@0.12.1: {}
- oniguruma-to-es@4.3.3:
+ oniguruma-to-es@4.3.4:
dependencies:
oniguruma-parser: 0.12.1
regex: 6.0.1
regex-recursion: 6.0.2
- open@8.4.2:
- dependencies:
- define-lazy-prop: 2.0.0
- is-docker: 2.2.1
- is-wsl: 2.2.0
-
openapi-types@12.1.3: {}
openapi-typescript@7.10.1(typescript@5.9.3):
@@ -20422,10 +20660,6 @@ snapshots:
dependencies:
yocto-queue: 0.1.0
- p-limit@4.0.0:
- dependencies:
- yocto-queue: 1.2.2
-
p-locate@4.1.0:
dependencies:
p-limit: 2.3.0
@@ -20434,15 +20668,11 @@ snapshots:
dependencies:
p-limit: 3.1.0
- p-locate@6.0.0:
- dependencies:
- p-limit: 4.0.0
-
p-map@4.0.0:
dependencies:
aggregate-error: 3.1.0
- p-map@7.0.4: {}
+ p-map@7.0.3: {}
p-queue@6.6.2:
dependencies:
@@ -20502,8 +20732,6 @@ snapshots:
path-exists@4.0.0: {}
- path-exists@5.0.0: {}
-
path-is-absolute@1.0.1: {}
path-key@3.1.1: {}
@@ -20585,9 +20813,9 @@ snapshots:
picomatch@4.0.3: {}
- pid-port@1.0.2:
+ pid-port@2.0.0:
dependencies:
- execa: 8.0.1
+ execa: 9.6.1
pify@2.3.0: {}
@@ -20617,7 +20845,7 @@ snapshots:
optionalDependencies:
'@napi-rs/nice': 1.1.1
- pkce-challenge@4.1.0: {}
+ pkce-challenge@5.0.1: {}
pkg-dir@4.2.0:
dependencies:
@@ -20635,7 +20863,7 @@ snapshots:
pngjs@5.0.0: {}
- pnpm@10.22.0: {}
+ pnpm@10.25.0: {}
polished@4.3.1:
dependencies:
@@ -20781,11 +21009,6 @@ snapshots:
postcss: 8.5.6
postcss-value-parser: 4.2.0
- postcss-selector-parser@6.1.2:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
postcss-selector-parser@7.1.0:
dependencies:
cssesc: 3.0.0
@@ -20822,7 +21045,7 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier@3.6.2: {}
+ prettier@3.7.4: {}
pretty-bytes@5.6.0: {}
@@ -20846,7 +21069,7 @@ snapshots:
dependencies:
'@chainsafe/is-ip': 2.1.0
ip-regex: 5.0.0
- ipaddr.js: 2.2.0
+ ipaddr.js: 2.3.0
netmask: 2.0.2
probe-image-size@7.2.3:
@@ -20905,10 +21128,16 @@ snapshots:
ps-list@8.1.1: {}
+ ps-list@9.0.0: {}
+
ps-tree@1.2.0:
dependencies:
event-stream: 3.3.4
+ psl@1.15.0:
+ dependencies:
+ punycode: 2.3.1
+
pstree.remy@1.1.8: {}
pug-attrs@3.0.0:
@@ -21019,6 +21248,8 @@ snapshots:
dependencies:
side-channel: 1.1.0
+ querystringify@2.2.0: {}
+
queue-lit@1.5.2: {}
queue-microtask@1.2.3: {}
@@ -21051,7 +21282,7 @@ snapshots:
iconv-lite: 0.7.0
unpipe: 1.0.0
- rdf-canonize@3.4.0:
+ rdf-canonize@5.0.0:
dependencies:
setimmediate: 1.0.5
@@ -21082,16 +21313,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- react-dom@19.2.0(react@19.2.0):
+ react-dom@19.2.1(react@19.2.1):
dependencies:
- react: 19.2.0
+ react: 19.2.1
scheduler: 0.27.0
react-is@17.0.2: {}
react-is@18.3.1: {}
- react@19.2.0: {}
+ react@19.2.1: {}
read-pkg-up@7.0.1:
dependencies:
@@ -21134,7 +21365,7 @@ snapshots:
dependencies:
minimatch: 5.1.6
- readdirp@4.1.2: {}
+ readdirp@5.0.0: {}
real-require@0.2.0: {}
@@ -21159,8 +21390,6 @@ snapshots:
dependencies:
lodash: 4.17.21
- redis-lock@0.1.4: {}
-
redis-parser@3.0.0:
dependencies:
redis-errors: 1.2.0
@@ -21239,16 +21468,17 @@ snapshots:
require-from-string@2.0.2: {}
- require-in-the-middle@7.5.2:
+ require-in-the-middle@8.0.1:
dependencies:
debug: 4.4.3(supports-color@10.2.2)
module-details-from-path: 1.0.4
- resolve: 1.22.11
transitivePeerDependencies:
- supports-color
require-main-filename@2.0.0: {}
+ requires-port@1.0.0: {}
+
resolve-alpn@1.2.1: {}
resolve-cwd@3.0.0:
@@ -21330,7 +21560,15 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.53.3
fsevents: 2.3.3
- rrweb-cssom@0.8.0: {}
+ router@2.2.0:
+ dependencies:
+ debug: 4.4.3(supports-color@10.2.2)
+ depd: 2.0.0
+ is-promise: 4.0.0
+ parseurl: 1.3.3
+ path-to-regexp: 8.3.0
+ transitivePeerDependencies:
+ - supports-color
rss-parser@3.13.0:
dependencies:
@@ -21385,9 +21623,9 @@ snapshots:
parse-srcset: 1.0.2
postcss: 8.5.6
- sass@1.94.1:
+ sass@1.95.1:
dependencies:
- chokidar: 4.0.3
+ chokidar: 5.0.0
immutable: 5.1.4
source-map-js: 1.2.1
optionalDependencies:
@@ -21403,8 +21641,6 @@ snapshots:
secure-json-parse@2.7.0: {}
- secure-json-parse@3.0.2: {}
-
secure-json-parse@4.1.0: {}
seedrandom@3.0.5: {}
@@ -21447,6 +21683,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ send@1.2.0:
+ dependencies:
+ debug: 4.4.3(supports-color@10.2.2)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ mime-types: 3.0.2
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
serve-static@1.16.2:
dependencies:
encodeurl: 2.0.0
@@ -21456,9 +21708,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ serve-static@2.2.0:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 1.2.0
+ transitivePeerDependencies:
+ - supports-color
+
set-blocking@2.0.0: {}
- set-cookie-parser@2.7.2: {}
+ set-cookie-parser@2.7.1: {}
set-function-length@1.2.2:
dependencies:
@@ -21524,19 +21785,17 @@ snapshots:
shebang-regex@3.0.0: {}
- shiki@3.15.0:
+ shiki@3.19.0:
dependencies:
- '@shikijs/core': 3.15.0
- '@shikijs/engine-javascript': 3.15.0
- '@shikijs/engine-oniguruma': 3.15.0
- '@shikijs/langs': 3.15.0
- '@shikijs/themes': 3.15.0
- '@shikijs/types': 3.15.0
+ '@shikijs/core': 3.19.0
+ '@shikijs/engine-javascript': 3.19.0
+ '@shikijs/engine-oniguruma': 3.19.0
+ '@shikijs/langs': 3.19.0
+ '@shikijs/themes': 3.19.0
+ '@shikijs/types': 3.19.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
- shimmer@1.2.1: {}
-
side-channel-list@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -21682,7 +21941,7 @@ snapshots:
socks@2.8.7:
dependencies:
- ip-address: 10.1.0
+ ip-address: 10.0.1
smart-buffer: 4.2.0
sonic-boom@4.2.0:
@@ -21767,7 +22026,7 @@ snapshots:
standard-as-callback@2.1.0: {}
- start-server-and-test@2.1.2:
+ start-server-and-test@2.1.3:
dependencies:
arg: 5.0.2
bluebird: 3.7.2
@@ -21776,7 +22035,7 @@ snapshots:
execa: 5.1.1
lazy-ass: 1.6.0
ps-tree: 1.2.0
- wait-on: 8.0.5(debug@4.4.3)
+ wait-on: 9.0.3(debug@4.4.3)
transitivePeerDependencies:
- supports-color
@@ -21791,42 +22050,40 @@ snapshots:
es-errors: 1.3.0
internal-slot: 1.1.0
- storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(199cee10961aa3cfbc20370674a11145):
+ storybook-addon-misskey-theme@https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640(62d43c4a6ba7695d11b4f3f5e39354d0):
dependencies:
- '@storybook/blocks': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/components': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/core-events': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/manager-api': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/preview-api': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/theming': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
- '@storybook/types': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)))
+ '@storybook/blocks': 8.6.14(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/components': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/core-events': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/manager-api': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/preview-api': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/theming': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
+ '@storybook/types': 8.6.14(storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5))
optionalDependencies:
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- storybook@9.1.16(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(prettier@3.6.2)(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)):
+ storybook@10.1.5(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.7.4)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@6.0.5):
dependencies:
'@storybook/global': 5.0.0
+ '@storybook/icons': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@testing-library/jest-dom': 6.9.1
'@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0)
'@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
'@vitest/spy': 3.2.4
- better-opn: 3.0.2
- esbuild: 0.25.11
- esbuild-register: 3.6.0(esbuild@0.25.11)
+ esbuild: 0.27.1
recast: 0.23.11
semver: 7.7.3
+ use-sync-external-store: 1.6.0(react@19.2.1)
ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
optionalDependencies:
- prettier: 3.6.2
+ prettier: 3.7.4
transitivePeerDependencies:
- '@testing-library/dom'
- bufferutil
- - msw
- - supports-color
+ - react
+ - react-dom
- utf-8-validate
- - vite
stream-browserify@3.0.0:
dependencies:
@@ -21877,6 +22134,12 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.1.2
+ string-width@7.2.0:
+ dependencies:
+ emoji-regex: 10.6.0
+ get-east-asian-width: 1.4.0
+ strip-ansi: 7.1.2
+
string.prototype.trim@1.2.10:
dependencies:
call-bind: 1.0.8
@@ -21948,12 +22211,6 @@ snapshots:
strip-json-comments@3.1.1: {}
- strip-literal@3.1.0:
- dependencies:
- js-tokens: 9.0.1
-
- strnum@1.1.2: {}
-
strnum@2.1.1: {}
strtok3@10.3.4:
@@ -22020,10 +22277,12 @@ snapshots:
symbol-tree@3.2.4: {}
- systeminformation@5.27.11: {}
+ systeminformation@5.27.14: {}
systeminformation@5.27.7: {}
+ tagged-tag@1.0.0: {}
+
tar-stream@3.1.7:
dependencies:
b4a: 1.7.3
@@ -22068,12 +22327,6 @@ snapshots:
glob: 7.2.3
minimatch: 3.1.2
- test-exclude@7.0.1:
- dependencies:
- '@istanbuljs/schema': 0.1.3
- glob: 10.5.0
- minimatch: 9.0.5
-
text-decoder@1.2.3:
dependencies:
b4a: 1.7.3
@@ -22094,26 +22347,19 @@ snapshots:
through@2.3.8: {}
- tiny-glob@0.2.9:
- dependencies:
- globalyzer: 0.1.0
- globrex: 0.1.2
-
tiny-invariant@1.3.3: {}
tinybench@2.9.0: {}
tinycolor2@1.6.0: {}
- tinyexec@0.3.2: {}
+ tinyexec@1.0.2: {}
tinyglobby@0.2.15:
dependencies:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
- tinypool@1.1.1: {}
-
tinyrainbow@1.2.0: {}
tinyrainbow@2.0.0: {}
@@ -22166,6 +22412,13 @@ snapshots:
touch@3.1.1: {}
+ tough-cookie@4.1.4:
+ dependencies:
+ psl: 1.15.0
+ punycode: 2.3.1
+ universalify: 0.2.0
+ url-parse: 1.5.10
+
tough-cookie@5.1.2:
dependencies:
tldts: 6.1.86
@@ -22176,7 +22429,7 @@ snapshots:
tr46@0.0.3: {}
- tr46@5.1.1:
+ tr46@3.0.0:
dependencies:
punycode: 2.3.1
@@ -22205,7 +22458,7 @@ snapshots:
tsc-alias@1.8.16:
dependencies:
- chokidar: 4.0.3
+ chokidar: 5.0.0
commander: 9.5.0
get-tsconfig: 4.13.0
globby: 11.1.0
@@ -22236,15 +22489,21 @@ snapshots:
path-exists: 4.0.0
read-pkg-up: 7.0.1
+ tslib@1.14.1: {}
+
tslib@2.8.1: {}
- tsx@4.20.6:
+ tsx@4.21.0:
dependencies:
- esbuild: 0.25.11
+ esbuild: 0.27.1
get-tsconfig: 4.13.0
optionalDependencies:
fsevents: 2.3.3
+ tsyringe@4.10.0:
+ dependencies:
+ tslib: 1.14.1
+
tunnel-agent@0.6.0:
dependencies:
safe-buffer: 5.2.1
@@ -22271,11 +22530,21 @@ snapshots:
type-fest@4.41.0: {}
+ type-fest@5.2.0:
+ dependencies:
+ tagged-tag: 1.0.0
+
type-is@1.6.18:
dependencies:
media-typer: 0.3.0
mime-types: 2.1.35
+ type-is@2.0.1:
+ dependencies:
+ content-type: 1.0.5
+ media-typer: 1.1.0
+ mime-types: 3.0.2
+
typed-array-buffer@1.0.3:
dependencies:
call-bound: 1.0.4
@@ -22311,10 +22580,10 @@ snapshots:
typedarray@0.0.6: {}
- typeorm@0.3.27(ioredis@5.8.2)(pg@8.16.3)(reflect-metadata@0.2.2):
+ typeorm@0.3.28(ioredis@5.8.2)(pg@8.16.3):
dependencies:
'@sqltools/formatter': 1.2.5
- ansis: 3.17.0
+ ansis: 4.2.0
app-root-path: 3.1.0
buffer: 6.0.3
dayjs: 1.11.19
@@ -22347,7 +22616,7 @@ snapshots:
uint8array-extras@1.5.0: {}
- ulid@2.4.0: {}
+ ulid@3.0.2: {}
unbox-primitive@1.1.0:
dependencies:
@@ -22367,16 +22636,10 @@ snapshots:
undici-types@7.16.0: {}
- undici@5.29.0:
- dependencies:
- '@fastify/busboy': 2.1.1
-
undici@6.22.0: {}
undici@7.16.0: {}
- unicorn-magic@0.1.0: {}
-
unicorn-magic@0.3.0: {}
unified@11.0.5:
@@ -22422,6 +22685,8 @@ snapshots:
universalify@0.1.2: {}
+ universalify@0.2.0: {}
+
universalify@2.0.1: {}
unload@2.4.1: {}
@@ -22433,6 +22698,13 @@ snapshots:
acorn: 8.15.0
webpack-virtual-modules: 0.6.2
+ unplugin@2.3.10:
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ acorn: 8.15.0
+ picomatch: 4.0.3
+ webpack-virtual-modules: 0.6.2
+
until-async@3.0.2: {}
untildify@4.0.0: {}
@@ -22447,6 +22719,15 @@ snapshots:
dependencies:
punycode: 2.3.1
+ url-parse@1.5.10:
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+
+ use-sync-external-store@1.6.0(react@19.2.1):
+ dependencies:
+ react: 19.2.1
+
utf-8-validate@6.0.5:
dependencies:
node-gyp-build: 4.8.4
@@ -22464,13 +22745,13 @@ snapshots:
uuid@9.0.1: {}
- v-code-diff@1.13.1(vue@3.5.24(typescript@5.9.3)):
+ v-code-diff@1.13.1(vue@3.5.25(typescript@5.9.3)):
dependencies:
diff: 5.2.0
diff-match-patch: 1.0.5
highlight.js: 11.11.1
- vue: 3.5.24(typescript@5.9.3)
- vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3))
+ vue: 3.5.25(typescript@5.9.3)
+ vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3))
v8-to-istanbul@9.3.0:
dependencies:
@@ -22503,37 +22784,16 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite-node@3.2.4(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6):
+ vite-plugin-glsl@1.5.5(@rollup/pluginutils@5.3.0(rollup@4.53.3))(esbuild@0.27.1)(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)):
dependencies:
- cac: 6.7.14
- debug: 4.4.3(supports-color@10.2.2)
- es-module-lexer: 1.7.0
- pathe: 2.0.3
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
- transitivePeerDependencies:
- - '@types/node'
- - jiti
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - yaml
-
- vite-plugin-glsl@1.5.4(@rollup/pluginutils@5.3.0(rollup@4.53.3))(esbuild@0.25.11)(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)):
- dependencies:
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
optionalDependencies:
'@rollup/pluginutils': 5.3.0(rollup@4.53.3)
- esbuild: 0.25.11
+ esbuild: 0.27.1
vite-plugin-turbosnap@1.0.3: {}
- vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6):
+ vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0):
dependencies:
esbuild: 0.25.11
fdir: 6.5.0(picomatch@4.0.3)
@@ -22542,92 +22802,48 @@ snapshots:
rollup: 4.53.3
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 24.10.1
+ '@types/node': 24.10.2
fsevents: 2.3.3
- sass: 1.94.1
+ sass: 1.95.1
terser: 5.44.1
- tsx: 4.20.6
+ tsx: 4.21.0
- vitest-fetch-mock@0.4.5(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)):
+ vitest-fetch-mock@0.4.5(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)):
dependencies:
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
- vitest-websocket-mock@0.5.0(vitest@4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)):
+ vitest-websocket-mock@0.5.0(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)):
dependencies:
'@vitest/utils': 3.2.4
mock-socket: 9.3.1
- vitest: 4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6):
+ vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(happy-dom@20.0.11)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0):
dependencies:
- '@types/chai': 5.2.3
- '@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
- '@vitest/pretty-format': 3.2.4
- '@vitest/runner': 3.2.4
- '@vitest/snapshot': 3.2.4
- '@vitest/spy': 3.2.4
- '@vitest/utils': 3.2.4
- chai: 5.3.3
- debug: 4.4.3(supports-color@10.2.2)
- expect-type: 1.2.2
- magic-string: 0.30.21
- pathe: 2.0.3
- picomatch: 4.0.3
- std-env: 3.10.0
- tinybench: 2.9.0
- tinyexec: 0.3.2
- tinyglobby: 0.2.15
- tinypool: 1.1.1
- tinyrainbow: 2.0.0
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
- vite-node: 3.2.4(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
- why-is-node-running: 2.3.0
- optionalDependencies:
- '@types/debug': 4.1.12
- '@types/node': 24.10.1
- happy-dom: 20.0.10
- jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
- transitivePeerDependencies:
- - jiti
- - less
- - lightningcss
- - msw
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - yaml
-
- vitest@4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(happy-dom@20.0.10)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6):
- dependencies:
- '@vitest/expect': 4.0.10
- '@vitest/mocker': 4.0.10(msw@2.12.2(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6))
- '@vitest/pretty-format': 4.0.10
- '@vitest/runner': 4.0.10
- '@vitest/snapshot': 4.0.10
- '@vitest/spy': 4.0.10
- '@vitest/utils': 4.0.10
- debug: 4.4.3(supports-color@10.2.2)
+ '@vitest/expect': 4.0.15
+ '@vitest/mocker': 4.0.15(msw@2.12.4(@types/node@24.10.2)(typescript@5.9.3))(vite@7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0))
+ '@vitest/pretty-format': 4.0.15
+ '@vitest/runner': 4.0.15
+ '@vitest/snapshot': 4.0.15
+ '@vitest/spy': 4.0.15
+ '@vitest/utils': 4.0.15
es-module-lexer: 1.7.0
expect-type: 1.2.2
magic-string: 0.30.21
+ obug: 2.1.1
pathe: 2.0.3
picomatch: 4.0.3
std-env: 3.10.0
tinybench: 2.9.0
- tinyexec: 0.3.2
+ tinyexec: 1.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vite: 7.2.2(@types/node@24.10.1)(sass@1.94.1)(terser@5.44.1)(tsx@4.20.6)
+ vite: 7.2.7(@types/node@24.10.2)(sass@1.95.1)(terser@5.44.1)(tsx@4.21.0)
why-is-node-running: 2.3.0
optionalDependencies:
- '@types/debug': 4.1.12
- '@types/node': 24.10.1
- happy-dom: 20.0.10
+ '@opentelemetry/api': 1.9.0
+ '@types/node': 24.10.2
+ happy-dom: 20.0.11
jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- jiti
@@ -22638,7 +22854,6 @@ snapshots:
- sass-embedded
- stylus
- sugarss
- - supports-color
- terser
- tsx
- yaml
@@ -22673,18 +22888,18 @@ snapshots:
vue-component-type-helpers@2.2.12: {}
- vue-component-type-helpers@3.1.4: {}
+ vue-component-type-helpers@3.1.8: {}
- vue-demi@0.14.10(vue@3.5.24(typescript@5.9.3)):
+ vue-demi@0.14.10(vue@3.5.25(typescript@5.9.3)):
dependencies:
- vue: 3.5.24(typescript@5.9.3)
+ vue: 3.5.25(typescript@5.9.3)
- vue-docgen-api@4.79.2(vue@3.5.24(typescript@5.9.3)):
+ vue-docgen-api@4.79.2(vue@3.5.25(typescript@5.9.3)):
dependencies:
'@babel/parser': 7.28.5
'@babel/types': 7.28.5
- '@vue/compiler-dom': 3.5.24
- '@vue/compiler-sfc': 3.5.24
+ '@vue/compiler-dom': 3.5.25
+ '@vue/compiler-sfc': 3.5.25
ast-types: 0.16.1
esm-resolve: 1.0.11
hash-sum: 2.0.0
@@ -22692,8 +22907,8 @@ snapshots:
pug: 3.0.3
recast: 0.23.11
ts-map: 1.0.3
- vue: 3.5.24(typescript@5.9.3)
- vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.24(typescript@5.9.3))
+ vue: 3.5.25(typescript@5.9.3)
+ vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.25(typescript@5.9.3))
vue-eslint-parser@10.2.0(eslint@9.39.1):
dependencies:
@@ -22707,36 +22922,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.24(typescript@5.9.3)):
+ vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.25(typescript@5.9.3)):
dependencies:
- vue: 3.5.24(typescript@5.9.3)
+ vue: 3.5.25(typescript@5.9.3)
- vue-tsc@3.1.4(typescript@5.9.3):
+ vue-tsc@3.1.8(typescript@5.9.3):
dependencies:
- '@volar/typescript': 2.4.23
- '@vue/language-core': 3.1.4(typescript@5.9.3)
+ '@volar/typescript': 2.4.26
+ '@vue/language-core': 3.1.8(typescript@5.9.3)
typescript: 5.9.3
- vue@3.5.24(typescript@5.9.3):
+ vue@3.5.25(typescript@5.9.3):
dependencies:
- '@vue/compiler-dom': 3.5.24
- '@vue/compiler-sfc': 3.5.24
- '@vue/runtime-dom': 3.5.24
- '@vue/server-renderer': 3.5.24(vue@3.5.24(typescript@5.9.3))
- '@vue/shared': 3.5.24
+ '@vue/compiler-dom': 3.5.25
+ '@vue/compiler-sfc': 3.5.25
+ '@vue/runtime-dom': 3.5.25
+ '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@5.9.3))
+ '@vue/shared': 3.5.25
optionalDependencies:
typescript: 5.9.3
- vuedraggable@4.1.0(vue@3.5.24(typescript@5.9.3)):
+ vuedraggable@4.1.0(vue@3.5.25(typescript@5.9.3)):
dependencies:
sortablejs: 1.14.0
- vue: 3.5.24(typescript@5.9.3)
+ vue: 3.5.25(typescript@5.9.3)
+
+ w3c-xmlserializer@4.0.0:
+ dependencies:
+ xml-name-validator: 4.0.0
w3c-xmlserializer@5.0.0:
dependencies:
xml-name-validator: 5.0.0
+ optional: true
- wait-on@8.0.5(debug@4.4.3):
+ wait-on@9.0.3(debug@4.4.3):
dependencies:
axios: 1.13.2(debug@4.4.3)
joi: 18.0.1
@@ -22785,6 +23005,10 @@ snapshots:
webpack-virtual-modules@0.6.2: {}
+ whatwg-encoding@2.0.0:
+ dependencies:
+ iconv-lite: 0.6.3
+
whatwg-encoding@3.1.1:
dependencies:
iconv-lite: 0.6.3
@@ -22793,9 +23017,9 @@ snapshots:
whatwg-mimetype@4.0.0: {}
- whatwg-url@14.2.0:
+ whatwg-url@11.0.0:
dependencies:
- tr46: 5.1.1
+ tr46: 3.0.0
webidl-conversions: 7.0.0
whatwg-url@15.1.0:
@@ -22901,6 +23125,12 @@ snapshots:
string-width: 5.1.2
strip-ansi: 7.1.2
+ wrap-ansi@9.0.2:
+ dependencies:
+ ansi-styles: 6.2.3
+ string-width: 7.2.0
+ strip-ansi: 7.1.2
+
wrappy@1.0.2: {}
write-file-atomic@4.0.2:
@@ -22921,7 +23151,8 @@ snapshots:
xml-name-validator@4.0.0: {}
- xml-name-validator@5.0.0: {}
+ xml-name-validator@5.0.0:
+ optional: true
xml2js@0.5.0:
dependencies:
@@ -22955,6 +23186,8 @@ snapshots:
yargs-parser@21.1.1: {}
+ yargs-parser@22.0.0: {}
+
yargs@15.4.1:
dependencies:
cliui: 6.0.0
@@ -22989,6 +23222,15 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
+ yargs@18.0.0:
+ dependencies:
+ cliui: 9.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ string-width: 7.2.0
+ y18n: 5.0.8
+ yargs-parser: 22.0.0
+
yauzl@2.10.0:
dependencies:
buffer-crc32: 0.2.13
@@ -23001,8 +23243,6 @@ snapshots:
yocto-queue@0.1.0: {}
- yocto-queue@1.2.2: {}
-
yoctocolors-cjs@2.1.3: {}
yoctocolors@2.1.2: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 8f7fdf13c8..a9443da0b3 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -4,6 +4,7 @@ packages:
- packages/frontend
- packages/frontend-builder
- packages/frontend-embed
+ - packages/i18n
- packages/icons-subsetter
- packages/sw
- packages/misskey-js
@@ -14,6 +15,7 @@ onlyBuiltDependencies:
- '@nestjs/core'
- '@parcel/watcher'
- '@sentry/profiling-node'
+ - '@sentry-internal/node-cpu-profiler'
- '@swc/core'
- '@tensorflow/tfjs-node'
- bufferutil
@@ -33,3 +35,4 @@ ignorePatchFailures: false
minimumReleaseAge: 10080 # delay 7days to mitigate supply-chain attack
minimumReleaseAgeExclude:
- '@syuilo/aiscript'
+ - systeminformation # 脆弱性対応。そのうち消すこと
diff --git a/scripts/build-assets.mjs b/scripts/build-assets.mjs
index e610a72380..0cfce02fef 100644
--- a/scripts/build-assets.mjs
+++ b/scripts/build-assets.mjs
@@ -6,14 +6,7 @@
import * as fs from 'node:fs/promises';
import * as path from 'node:path';
import { fileURLToPath } from 'node:url';
-import cssnano from 'cssnano';
import * as yaml from 'js-yaml';
-import postcss from 'postcss';
-import * as terser from 'terser';
-
-import { build as buildLocales } from '../locales/index.js';
-import generateDTS from '../locales/generateDTS.js';
-import meta from '../package.json' with { type: "json" };
import buildTarball from './tarball.mjs';
const configDir = fileURLToPath(new URL('../.config', import.meta.url));
@@ -23,86 +16,19 @@ const configPath = process.env.MISSKEY_CONFIG_YML
? path.resolve(configDir, 'test.yml')
: path.resolve(configDir, 'default.yml');
-let locales = buildLocales();
-
async function loadConfig() {
return fs.readFile(configPath, 'utf-8').then(data => yaml.load(data)).catch(() => null);
}
async function copyFrontendFonts() {
- await fs.cp('./packages/frontend/node_modules/three/examples/fonts', './built/_frontend_dist_/fonts', { dereference: true, recursive: true });
-}
-
-async function copyFrontendLocales() {
- generateDTS();
-
- await fs.mkdir('./built/_frontend_dist_/locales', { recursive: true });
-
- const v = { '_version_': meta.version };
-
- for (const [lang, locale] of Object.entries(locales)) {
- await fs.writeFile(`./built/_frontend_dist_/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
- }
-}
-
-async function copyBackendViews() {
- await fs.cp('./packages/backend/src/server/web/views', './packages/backend/built/server/web/views', { recursive: true });
-}
-
-async function buildBackendScript() {
- await fs.mkdir('./packages/backend/built/server/web', { recursive: true });
-
- for (const file of [
- './packages/backend/src/server/web/boot.js',
- './packages/backend/src/server/web/boot.embed.js',
- './packages/backend/src/server/web/bios.js',
- './packages/backend/src/server/web/cli.js',
- './packages/backend/src/server/web/error.js',
- ]) {
- let source = await fs.readFile(file, { encoding: 'utf-8' });
- source = source.replaceAll('LANGS', JSON.stringify(Object.keys(locales)));
- const { code } = await terser.minify(source, { toplevel: true });
- await fs.writeFile(`./packages/backend/built/server/web/${path.basename(file)}`, code);
- }
-}
-
-async function buildBackendStyle() {
- await fs.mkdir('./packages/backend/built/server/web', { recursive: true });
-
- for (const file of [
- './packages/backend/src/server/web/style.css',
- './packages/backend/src/server/web/style.embed.css',
- './packages/backend/src/server/web/bios.css',
- './packages/backend/src/server/web/cli.css',
- './packages/backend/src/server/web/error.css'
- ]) {
- const source = await fs.readFile(file, { encoding: 'utf-8' });
- const { css } = await postcss([cssnano({ zindex: false })]).process(source, { from: undefined });
- await fs.writeFile(`./packages/backend/built/server/web/${path.basename(file)}`, css);
- }
+ await fs.cp('./packages/frontend/node_modules/three/examples/fonts', './built/_frontend_dist_/fonts', { dereference: true, recursive: true });
}
async function build() {
- await Promise.all([
- copyFrontendFonts(),
- copyFrontendLocales(),
- copyBackendViews(),
- buildBackendScript(),
- buildBackendStyle(),
+ await Promise.all([
+ copyFrontendFonts(),
loadConfig().then(config => config?.publishTarballInsteadOfProvideRepositoryUrl && buildTarball()),
- ]);
+ ]);
}
await build();
-
-if (process.argv.includes('--watch')) {
- const watcher = fs.watch('./locales');
- for await (const event of watcher) {
- const filename = event.filename?.replaceAll('\\', '/');
- if (/^[a-z]+-[A-Z]+\.yml/.test(filename)) {
- console.log(`update ${filename} ...`)
- locales = buildLocales();
- await copyFrontendLocales()
- }
- }
-}
diff --git a/scripts/changelog-checker/package-lock.json b/scripts/changelog-checker/package-lock.json
index f1d81e447b..466cf21d0b 100644
--- a/scripts/changelog-checker/package-lock.json
+++ b/scripts/changelog-checker/package-lock.json
@@ -9,16 +9,16 @@
"version": "1.0.0",
"devDependencies": {
"@types/mdast": "4.0.4",
- "@types/node": "24.9.1",
- "@vitest/coverage-v8": "4.0.10",
+ "@types/node": "24.10.2",
+ "@vitest/coverage-v8": "4.0.15",
"mdast-util-to-string": "4.0.0",
"remark": "15.0.1",
"remark-parse": "11.0.0",
"typescript": "5.9.3",
"unified": "11.0.5",
- "vite": "7.2.2",
+ "vite": "7.2.7",
"vite-node": "5.2.0",
- "vitest": "4.0.10"
+ "vitest": "4.0.15"
}
},
"node_modules/@babel/helper-string-parser": {
@@ -842,20 +842,21 @@
]
},
"node_modules/@standard-schema/spec": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
- "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/chai": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz",
- "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
+ "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/deep-eql": "*"
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
}
},
"node_modules/@types/debug": {
@@ -898,12 +899,11 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "24.9.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz",
- "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==",
+ "version": "24.10.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.2.tgz",
+ "integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"undici-types": "~7.16.0"
}
@@ -915,21 +915,21 @@
"dev": true
},
"node_modules/@vitest/coverage-v8": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.10.tgz",
- "integrity": "sha512-g+brmtoKa/sAeIohNJnnWhnHtU6GuqqVOSQ4SxDIPcgZWZyhJs5RmF5LpqXs8Kq64lANP+vnbn5JLzhLj/G56g==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.15.tgz",
+ "integrity": "sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@bcoe/v8-coverage": "^1.0.2",
- "@vitest/utils": "4.0.10",
+ "@vitest/utils": "4.0.15",
"ast-v8-to-istanbul": "^0.3.8",
- "debug": "^4.4.3",
"istanbul-lib-coverage": "^3.2.2",
"istanbul-lib-report": "^3.0.1",
"istanbul-lib-source-maps": "^5.0.6",
"istanbul-reports": "^3.2.0",
"magicast": "^0.5.1",
+ "obug": "^2.1.1",
"std-env": "^3.10.0",
"tinyrainbow": "^3.0.3"
},
@@ -937,8 +937,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/browser": "4.0.10",
- "vitest": "4.0.10"
+ "@vitest/browser": "4.0.15",
+ "vitest": "4.0.15"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -947,16 +947,16 @@
}
},
"node_modules/@vitest/expect": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.10.tgz",
- "integrity": "sha512-3QkTX/lK39FBNwARCQRSQr0TP9+ywSdxSX+LgbJ2M1WmveXP72anTbnp2yl5fH+dU6SUmBzNMrDHs80G8G2DZg==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.15.tgz",
+ "integrity": "sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.0.0",
"@types/chai": "^5.2.2",
- "@vitest/spy": "4.0.10",
- "@vitest/utils": "4.0.10",
+ "@vitest/spy": "4.0.15",
+ "@vitest/utils": "4.0.15",
"chai": "^6.2.1",
"tinyrainbow": "^3.0.3"
},
@@ -965,13 +965,13 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.10.tgz",
- "integrity": "sha512-e2OfdexYkjkg8Hh3L9NVEfbwGXq5IZbDovkf30qW2tOh7Rh9sVtmSr2ztEXOFbymNxS4qjzLXUQIvATvN4B+lg==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.15.tgz",
+ "integrity": "sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "4.0.10",
+ "@vitest/spy": "4.0.15",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.21"
},
@@ -992,9 +992,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.10.tgz",
- "integrity": "sha512-99EQbpa/zuDnvVjthwz5bH9o8iPefoQZ63WV8+bsRJZNw3qQSvSltfut8yu1Jc9mqOYi7pEbsKxYTi/rjaq6PA==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.15.tgz",
+ "integrity": "sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1005,13 +1005,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.10.tgz",
- "integrity": "sha512-EXU2iSkKvNwtlL8L8doCpkyclw0mc/t4t9SeOnfOFPyqLmQwuceMPA4zJBa6jw0MKsZYbw7kAn+gl7HxrlB8UQ==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.15.tgz",
+ "integrity": "sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "4.0.10",
+ "@vitest/utils": "4.0.15",
"pathe": "^2.0.3"
},
"funding": {
@@ -1019,13 +1019,13 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.10.tgz",
- "integrity": "sha512-2N4X2ZZl7kZw0qeGdQ41H0KND96L3qX1RgwuCfy6oUsF2ISGD/HpSbmms+CkIOsQmg2kulwfhJ4CI0asnZlvkg==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.15.tgz",
+ "integrity": "sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.0.10",
+ "@vitest/pretty-format": "4.0.15",
"magic-string": "^0.30.21",
"pathe": "^2.0.3"
},
@@ -1034,9 +1034,9 @@
}
},
"node_modules/@vitest/spy": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.10.tgz",
- "integrity": "sha512-AsY6sVS8OLb96GV5RoG8B6I35GAbNrC49AO+jNRF9YVGb/g9t+hzNm1H6kD0NDp8tt7VJLs6hb7YMkDXqu03iw==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.15.tgz",
+ "integrity": "sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==",
"dev": true,
"license": "MIT",
"funding": {
@@ -1044,19 +1044,29 @@
}
},
"node_modules/@vitest/utils": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.10.tgz",
- "integrity": "sha512-kOuqWnEwZNtQxMKg3WmPK1vmhZu9WcoX69iwWjVz+jvKTsF1emzsv3eoPcDr6ykA3qP2bsCQE7CwqfNtAVzsmg==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.15.tgz",
+ "integrity": "sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.0.10",
+ "@vitest/pretty-format": "4.0.15",
"tinyrainbow": "^3.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/ast-v8-to-istanbul": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz",
@@ -1220,9 +1230,9 @@
}
},
"node_modules/expect-type": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz",
- "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz",
+ "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -1983,7 +1993,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12"
},
@@ -2128,7 +2137,8 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
"integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/source-map-js": {
"version": "1.2.1",
@@ -2143,7 +2153,8 @@
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
"integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/std-env": {
"version": "3.10.0",
@@ -2172,11 +2183,14 @@
"license": "MIT"
},
"node_modules/tinyexec": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
- "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz",
+ "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/tinyglobby": {
"version": "0.2.15",
@@ -2341,9 +2355,9 @@
}
},
"node_modules/vite": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz",
- "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
+ "version": "7.2.7",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz",
+ "integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2439,29 +2453,28 @@
}
},
"node_modules/vitest": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.10.tgz",
- "integrity": "sha512-2Fqty3MM9CDwOVet/jaQalYlbcjATZwPYGcqpiYQqgQ/dLC7GuHdISKgTYIVF/kaishKxLzleKWWfbSDklyIKg==",
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.15.tgz",
+ "integrity": "sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
- "@vitest/expect": "4.0.10",
- "@vitest/mocker": "4.0.10",
- "@vitest/pretty-format": "4.0.10",
- "@vitest/runner": "4.0.10",
- "@vitest/snapshot": "4.0.10",
- "@vitest/spy": "4.0.10",
- "@vitest/utils": "4.0.10",
- "debug": "^4.4.3",
+ "@vitest/expect": "4.0.15",
+ "@vitest/mocker": "4.0.15",
+ "@vitest/pretty-format": "4.0.15",
+ "@vitest/runner": "4.0.15",
+ "@vitest/snapshot": "4.0.15",
+ "@vitest/spy": "4.0.15",
+ "@vitest/utils": "4.0.15",
"es-module-lexer": "^1.7.0",
"expect-type": "^1.2.2",
"magic-string": "^0.30.21",
+ "obug": "^2.1.1",
"pathe": "^2.0.3",
"picomatch": "^4.0.3",
"std-env": "^3.10.0",
"tinybench": "^2.9.0",
- "tinyexec": "^0.3.2",
+ "tinyexec": "^1.0.2",
"tinyglobby": "^0.2.15",
"tinyrainbow": "^3.0.3",
"vite": "^6.0.0 || ^7.0.0",
@@ -2478,12 +2491,12 @@
},
"peerDependencies": {
"@edge-runtime/vm": "*",
- "@types/debug": "^4.1.12",
+ "@opentelemetry/api": "^1.9.0",
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
- "@vitest/browser-playwright": "4.0.10",
- "@vitest/browser-preview": "4.0.10",
- "@vitest/browser-webdriverio": "4.0.10",
- "@vitest/ui": "4.0.10",
+ "@vitest/browser-playwright": "4.0.15",
+ "@vitest/browser-preview": "4.0.15",
+ "@vitest/browser-webdriverio": "4.0.15",
+ "@vitest/ui": "4.0.15",
"happy-dom": "*",
"jsdom": "*"
},
@@ -2491,7 +2504,7 @@
"@edge-runtime/vm": {
"optional": true
},
- "@types/debug": {
+ "@opentelemetry/api": {
"optional": true
},
"@types/node": {
diff --git a/scripts/changelog-checker/package.json b/scripts/changelog-checker/package.json
index cbce64611e..2c3761b44a 100644
--- a/scripts/changelog-checker/package.json
+++ b/scripts/changelog-checker/package.json
@@ -10,15 +10,15 @@
},
"devDependencies": {
"@types/mdast": "4.0.4",
- "@types/node": "24.9.1",
- "@vitest/coverage-v8": "4.0.10",
+ "@types/node": "24.10.2",
+ "@vitest/coverage-v8": "4.0.15",
"mdast-util-to-string": "4.0.0",
"remark": "15.0.1",
"remark-parse": "11.0.0",
"typescript": "5.9.3",
"unified": "11.0.5",
- "vite": "7.2.2",
+ "vite": "7.2.7",
"vite-node": "5.2.0",
- "vitest": "4.0.10"
+ "vitest": "4.0.15"
}
}
diff --git a/scripts/clean-all.js b/scripts/clean-all.js
index 5a8f9eba23..839ea3ba1c 100644
--- a/scripts/clean-all.js
+++ b/scripts/clean-all.js
@@ -24,6 +24,9 @@ const fs = require('fs');
fs.rmSync(__dirname + '/../packages/sw/built', { recursive: true, force: true });
fs.rmSync(__dirname + '/../packages/sw/node_modules', { recursive: true, force: true });
+ fs.rmSync(__dirname + '/../packages/i18n/built', { recursive: true, force: true });
+ fs.rmSync(__dirname + '/../packages/i18n/node_modules', { recursive: true, force: true });
+
fs.rmSync(__dirname + '/../packages/misskey-js/built', { recursive: true, force: true });
fs.rmSync(__dirname + '/../packages/misskey-js/node_modules', { recursive: true, force: true });
diff --git a/scripts/clean.js b/scripts/clean.js
index 69a8df76af..5cce8bacab 100644
--- a/scripts/clean.js
+++ b/scripts/clean.js
@@ -11,6 +11,7 @@ const fs = require('fs');
fs.rmSync(__dirname + '/../packages/frontend/built', { recursive: true, force: true });
fs.rmSync(__dirname + '/../packages/frontend-embed/built', { recursive: true, force: true });
fs.rmSync(__dirname + '/../packages/icons-subsetter/built', { recursive: true, force: true });
+ fs.rmSync(__dirname + '/../packages/i18n/built', { recursive: true, force: true });
fs.rmSync(__dirname + '/../packages/sw/built', { recursive: true, force: true });
fs.rmSync(__dirname + '/../packages/misskey-js/built', { recursive: true, force: true });
fs.rmSync(__dirname + '/../packages/misskey-reversi/built', { recursive: true, force: true });
diff --git a/scripts/dev.mjs b/scripts/dev.mjs
index e500510b9e..b54004132a 100644
--- a/scripts/dev.mjs
+++ b/scripts/dev.mjs
@@ -16,6 +16,13 @@ await execa('pnpm', ['clean'], {
stderr: process.stderr,
});
+// アセットのビルドで依存しているので一番最初に必要
+await execa('pnpm', ['--filter', 'i18n', 'build'], {
+ cwd: _dirname + '/../',
+ stdout: process.stdout,
+ stderr: process.stderr,
+});
+
await Promise.all([
execa('pnpm', ['build-pre'], {
cwd: _dirname + '/../',
@@ -38,6 +45,11 @@ await Promise.all([
stdout: process.stdout,
stderr: process.stderr,
}),
+ execa('pnpm', ['--filter', 'misskey-js', 'build'], {
+ cwd: _dirname + '/../',
+ stdout: process.stdout,
+ stderr: process.stderr,
+ }),
]);
execa('pnpm', ['build-pre', '--watch'], {
@@ -88,6 +100,12 @@ execa('pnpm', ['--filter', 'misskey-js', 'watch', '--no-clean'], {
stderr: process.stderr,
});
+execa('pnpm', ['--filter', 'i18n', 'watch', '--no-clean'], {
+ cwd: _dirname + '/../',
+ stdout: process.stdout,
+ stderr: process.stderr,
+});
+
execa('pnpm', ['--filter', 'misskey-reversi', 'watch', '--no-clean'], {
cwd: _dirname + '/../',
stdout: process.stdout,
diff --git a/scripts/tarball.mjs b/scripts/tarball.mjs
index fddbe3b04a..d1fe4de4f5 100644
--- a/scripts/tarball.mjs
+++ b/scripts/tarball.mjs
@@ -3,11 +3,10 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import { createWriteStream } from 'node:fs';
+import { createWriteStream, promises as fsp } from 'node:fs';
import { mkdir } from 'node:fs/promises';
import { resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
-import glob from 'fast-glob';
import walk from 'ignore-walk';
import { Pack } from 'tar/pack';
import meta from '../package.json' with { type: "json" };
@@ -25,7 +24,7 @@ export default async function build() {
const pack = new Pack({ cwd, gzip: true });
const patterns = await walk({ path: cwd, ignoreFiles: ['.gitignore'] });
- for await (const entry of glob.stream(patterns, { cwd, ignore, dot: true })) {
+ for await (const entry of fsp.glob(patterns, { cwd, ignore, dot: true })) {
pack.add(entry);
}