From 9fb6f1dc1e221007573e926700acbf4947048639 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:47 +0200
Subject: [PATCH 01/44] build(deps): Node 26 and pnpm 12, in every image, CI
job and script
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
node (images, CI) 24 -> 26 Active LTS from 2026-10-28
distroless nodejs 24-debian13 -> 26-debian13
pnpm 11.22.0 -> 12.15.0 the Rust rewrite
@types/node 24.13.3 -> 26.6.5 follows the runtime
tsx 4.23.13 -> 4.23.15
Node 25 stopped shipping corepack, so neither node:26-alpine nor setup-node
has one. The Dockerfiles install pnpm with npm, at the version the root
package.json pins; CI reads that version out of `packageManager`, which
stays the one place it is written. `--allow-scripts=pnpm` names the one
install script we let run — pnpm's own, which only hard-links its native
binary — because npm 11.20 warns about unlisted scripts and is moving to
blocking them.
pnpm 12 rejects `confirmModulesPurge` as "a pnpm v11 setting"
(ERR_PNPM_UNRECOGNIZED_WORKSPACE_SETTINGS): with the version pinned, an
unknown key in pnpm-workspace.yaml is an error now. It also has no prompt
left for the setting to answer — it rebuilt node_modules after a hoisting
change with stdin closed. The lockfile gains a leading YAML document,
`packageManagerDependencies`, that pins pnpm and its per-platform binaries;
a frozen install refuses a lockfile whose pin does not match. Re-resolving
with pnpm 12 rewrote some peer suffixes and moved giget (a devtools
dependency) from 3.3.1 to 3.2.0.
Node 25 also turned Web Storage on. On a server that is one `sessionStorage`
shared by every request the process serves, plus a warning whenever
something probes `localStorage`. Nothing of ours uses either server-side,
but the SSR process renders for every visitor, so the api and web images
add `--no-experimental-webstorage` to NODE_OPTIONS: the globals Node 24 did
not have, it does not have either.
@types/node 26 aligns WebCrypto's BufferSource with lib.dom and refuses a
view that could sit on a SharedArrayBuffer; the two digest helpers in
didProof.test.ts now take `Uint8Array`, which is what
canonicalUtf8 already returns. The Nitro bundles target node26.
Measured: on node:26-alpine with pnpm 12.15.0, `pnpm typecheck` passes,
and so do the API (586) and web (954) unit suites; the API image builds and
its runtime reports v26.12.1 with the flag set.
Co-Authored-By: Claude Opus 5.5
---
.github/workflows/api-ci.yml | 29 +-
.github/workflows/deploy-docs.yml | 6 +-
.github/workflows/docs-ci.yml | 6 +-
.github/workflows/web-ci.yml | 25 +-
README.md | 8 +-
apps/api/Dockerfile | 34 +-
apps/api/nitro.config.ts | 13 +-
apps/api/scripts/run-integration-tests.sh | 6 +-
apps/api/scripts/run-unit-tests.sh | 4 +-
apps/api/test/didProof.test.ts | 7 +-
apps/web/Dockerfile | 30 +-
apps/web/Dockerfile.static | 15 +-
apps/web/nuxt.config.ts | 10 +-
apps/web/scripts/run-unit-tests.sh | 4 +-
deploy/helm/trackarr/README.md | 2 +-
deploy/helm/trackarr/templates/_env.tpl | 2 +-
doc/Dockerfile | 4 +-
doc/guide/architecture.md | 4 +-
package.json | 6 +-
pnpm-lock.yaml | 594 +++++++++++++---------
pnpm-workspace.yaml | 16 +-
tests/e2e/run.sh | 2 +-
22 files changed, 504 insertions(+), 323 deletions(-)
diff --git a/.github/workflows/api-ci.yml b/.github/workflows/api-ci.yml
index f2371167..25a7ec90 100644
--- a/.github/workflows/api-ci.yml
+++ b/.github/workflows/api-ci.yml
@@ -66,15 +66,18 @@ jobs:
- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- # Matches `node:24-alpine` in apps/api/Dockerfile, so CI checks the
+ # Matches `node:26-alpine` in apps/api/Dockerfile, so CI checks the
# runtime we actually ship.
- node-version: 24
+ node-version: 26
- # corepack rather than a third-party setup action: the pinned pnpm
- # version already lives in package.json's `packageManager` field, and the
- # Dockerfiles activate it exactly this way.
- - name: Enable corepack
- run: corepack enable
+ # Still no third-party setup action, but no corepack either: Node 25
+ # stopped shipping it. The version is read from package.json's
+ # `packageManager` field, which stays the one place it is pinned — and
+ # pnpm 12 checks that pin against pnpm-lock.yaml on a frozen install.
+ # `--allow-scripts`: pnpm's install script only hard-links its native
+ # binary, and npm is moving to blocking scripts it was not told about.
+ - name: Install pnpm
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -119,10 +122,10 @@ jobs:
- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: 24
+ node-version: 26
- - name: Enable corepack
- run: corepack enable
+ - name: Install pnpm
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -193,10 +196,10 @@ jobs:
- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: 24
+ node-version: 26
- - name: Enable corepack
- run: corepack enable
+ - name: Install pnpm
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
- name: Install dependencies
run: pnpm install --frozen-lockfile
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
index dcde7725..4786e164 100644
--- a/.github/workflows/deploy-docs.yml
+++ b/.github/workflows/deploy-docs.yml
@@ -47,13 +47,13 @@ jobs:
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- # Node 24, comme `doc/Dockerfile` et comme les autres workflows.
+ # Node 26, comme `doc/Dockerfile` et comme les autres workflows.
# Ce travail était resté sur 20, en fin de vie depuis avril 2026 :
# la même documentation était donc construite sur deux runtimes,
# et le déploiement — qui a `pages: write` — tournait sur celui
# qui ne reçoit plus de correctif. Vérifié : `npm ci` puis
- # `npm run build` passent en 24 (vitepress 1.6.4 demande >= 20).
- node-version: 24
+ # `npm run build` passent en 26 (vitepress 1.6.4 demande >= 20).
+ node-version: 26
cache: 'npm'
cache-dependency-path: './doc/package-lock.json'
diff --git a/.github/workflows/docs-ci.yml b/.github/workflows/docs-ci.yml
index 02d215df..49d1c96d 100644
--- a/.github/workflows/docs-ci.yml
+++ b/.github/workflows/docs-ci.yml
@@ -45,13 +45,13 @@ jobs:
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- # Node 24, comme `doc/Dockerfile` et comme les autres workflows.
+ # Node 26, comme `doc/Dockerfile` et comme les autres workflows.
# Ce travail était resté sur 20, en fin de vie depuis avril 2026 :
# la même documentation était donc construite sur deux runtimes,
# et le déploiement — qui a `pages: write` — tournait sur celui
# qui ne reçoit plus de correctif. Vérifié : `npm ci` puis
- # `npm run build` passent en 24 (vitepress 1.6.4 demande >= 20).
- node-version: 24
+ # `npm run build` passent en 26 (vitepress 1.6.4 demande >= 20).
+ node-version: 26
cache: 'npm'
cache-dependency-path: './doc/package-lock.json'
diff --git a/.github/workflows/web-ci.yml b/.github/workflows/web-ci.yml
index f78a1a2f..ecd49875 100644
--- a/.github/workflows/web-ci.yml
+++ b/.github/workflows/web-ci.yml
@@ -77,10 +77,10 @@ jobs:
- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- node-version: 24
+ node-version: 26
- - name: Enable corepack
- run: corepack enable
+ - name: Install pnpm
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
# `nuxt prepare` runs as apps/web's postinstall, so the generated
# `.nuxt` declarations — auto-imports, typed routes, component types —
@@ -103,15 +103,18 @@ jobs:
- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
- # Matches `node:24-alpine` in apps/web/Dockerfile, so CI checks the
+ # Matches `node:26-alpine` in apps/web/Dockerfile, so CI checks the
# runtime we actually ship.
- node-version: 24
-
- # corepack rather than a third-party setup action: the pinned pnpm
- # version already lives in package.json's `packageManager` field, and the
- # Dockerfiles activate it exactly this way.
- - name: Enable corepack
- run: corepack enable
+ node-version: 26
+
+ # Still no third-party setup action, but no corepack either: Node 25
+ # stopped shipping it. The version is read from package.json's
+ # `packageManager` field, which stays the one place it is pinned — and
+ # pnpm 12 checks that pin against pnpm-lock.yaml on a frozen install.
+ # `--allow-scripts`: pnpm's install script only hard-links its native
+ # binary, and npm is moving to blocking scripts it was not told about.
+ - name: Install pnpm
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
- name: Install dependencies
run: pnpm install --frozen-lockfile
diff --git a/README.md b/README.md
index 7524a199..3272c31e 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
Three containers — Nuxt 4 web · Nitro API · Go tracker — backed by PostgreSQL and Redis.
-[](https://nodejs.org/)
+[](https://nodejs.org/)
[](https://nuxt.com/)
[](https://go.dev/)
[](https://www.typescriptlang.org/)
@@ -120,7 +120,7 @@ Three independent containers behind Caddy, plus the usual Postgres + Redis. They
- **The tracker is its own thing.** It's the hot path — every BitTorrent client in the swarm hits `/announce` every few minutes. A static Go binary on `scratch` (~10 MB image, sub-ms p99) means a single broken Nuxt deploy can't take down announces. Two transports — BEP 3 over HTTP/8080 and BEP 15 over UDP/6969 — share one wire-agnostic processor.
- **API and web are split.** `apps/api` (Nitro standalone) owns every `/api/*` route, upload endpoints, metadata lookups, admin tools. `apps/web` is Nuxt SSR — rendered shell + page chunks. They scale and redeploy independently.
-- **Distroless everywhere.** `apps/web` + `apps/api` run on `gcr.io/distroless/nodejs24-debian13:nonroot`; `apps/tracker` runs on `scratch`; the static frontend runs on `cgr.dev/chainguard/nginx`. No shells, no package managers, non-root by default.
+- **Distroless everywhere.** `apps/web` + `apps/api` run on `gcr.io/distroless/nodejs26-debian13:nonroot`; `apps/tracker` runs on `scratch`; the static frontend runs on `cgr.dev/chainguard/nginx`. No shells, no package managers, non-root by default.
More details: [Architecture guide](doc/guide/architecture.md).
@@ -197,7 +197,7 @@ from **distroless Chainguard nginx**:
| Image size | 254 MB | **28 MB** |
| Idle RSS | ~120 MB | **~7 MB** |
| Cold start | ~2 s | **<100 ms** |
-| Base image | `distroless/nodejs24` | **`chainguard/nginx`** |
+| Base image | `distroless/nodejs26` | **`chainguard/nginx`** |
| First paint | server-rendered HTML | SPA shell, hydrates client-side |
```bash
@@ -244,7 +244,7 @@ change end to end.
| Layer | Technology | Notes |
| ---------------- | ----------------------------------------- | -------------------------------------------------- |
| Frontend | Nuxt 4, Vue 3, Tailwind CSS, Tiptap | SSR by default, opt-in static SPA build |
-| API | Nitro 4 (Node 24), Drizzle ORM, Zod | Standalone container, distroless runtime |
+| API | Nitro 4 (Node 26), Drizzle ORM, Zod | Standalone container, distroless runtime |
| Tracker | Go 1.25, sqlc | `scratch`-based image, sub-ms announce p99 |
| Database | PostgreSQL 18 | `gin_trgm_ops` full-text, migrations at API boot |
| Connection pool | PgBouncer | Transaction-mode pooling |
diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile
index 7b9e9a76..f5160d7f 100644
--- a/apps/api/Dockerfile
+++ b/apps/api/Dockerfile
@@ -15,14 +15,21 @@
# corepack + the api's build deps just to expose a single CLI invocation;
# this trims it down to what's actually needed at boot.
#
-# Base is gcr.io/distroless/nodejs24-debian13:nonroot — no /bin/sh, no apt,
+# Base is gcr.io/distroless/nodejs26-debian13:nonroot — no /bin/sh, no apt,
# runs as uid 65532, signed by Google.
# -----------------------------------------------------------------------------
# Install dependencies for the API build (cached on package.json + lockfile)
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS deps
-RUN corepack enable && corepack prepare pnpm@11.22.0 --activate
+FROM node:26-alpine AS deps
+# npm rather than corepack: Node 25 stopped shipping corepack, so the
+# node:26 images have none. The version must match `packageManager` in the
+# root package.json — pnpm 12 records it in pnpm-lock.yaml and a frozen
+# install refuses a lockfile whose pin it does not match. `--allow-scripts`
+# names the one install script we let run: pnpm's own, which only hard-links
+# its native binary over the bins. npm 11.20 runs unlisted scripts with a
+# warning today and is moving to blocking them.
+RUN npm install --global --allow-scripts=pnpm pnpm@12.15.0
WORKDIR /app
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
COPY apps/api/package.json ./apps/api/
@@ -33,8 +40,8 @@ RUN pnpm install --filter "@trackarr/api..." --frozen-lockfile
# -----------------------------------------------------------------------------
# Build Nitro (produces apps/api/.output, fully self-contained)
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS builder
-RUN corepack enable && corepack prepare pnpm@11.22.0 --activate
+FROM node:26-alpine AS builder
+RUN npm install --global --allow-scripts=pnpm pnpm@12.15.0
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/apps/api/node_modules ./apps/api/node_modules
@@ -54,8 +61,8 @@ RUN pnpm --filter @trackarr/api build
# `drizzle-kit push --force` against schema.ts. Hoisted into /db-tools so it
# stays isolated from the Nitro bundle's own (inlined) node_modules.
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS db-tools
-RUN corepack enable && corepack prepare pnpm@11.22.0 --activate
+FROM node:26-alpine AS db-tools
+RUN npm install --global --allow-scripts=pnpm pnpm@12.15.0
WORKDIR /db-tools
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
COPY packages/db ./packages/db
@@ -82,7 +89,7 @@ RUN mkdir -p /seed/uploads
# Final runtime — distroless nonroot
# Entrypoint of this base image is `/nodejs/bin/node`; CMD is just the script.
# -----------------------------------------------------------------------------
-FROM gcr.io/distroless/nodejs24-debian13:nonroot AS runner
+FROM gcr.io/distroless/nodejs26-debian13:nonroot AS runner
WORKDIR /app
COPY --from=builder --chown=nonroot:nonroot /app/apps/api/.output ./.output
@@ -116,11 +123,18 @@ USER nonroot
EXPOSE 4000
# Memory tuning:
# --max-old-space-size=512 cap the V8 old-generation heap at 512 MB.
-# Without this, Node 24 derives the cap from the
+# Without this, Node derives the cap from the
# host's RAM (often 2+ GB on dev machines), which
# defers GC and lets RSS balloon under load.
# --max-semi-space-size=8 smaller young-generation chunks → more frequent
# minor GCs, lower transient peak.
+# --no-experimental-webstorage
+# Node 25 turned Web Storage on by default. On a
+# server that means ONE `sessionStorage` shared
+# by every request the process ever serves, and
+# a warning each time something probes
+# `localStorage`. Off, as it was on Node 24:
+# neither global exists.
# MALLOC_ARENA_MAX=2 glibc malloc on distroless pre-allocates one
# memory arena per CPU; capping at 2 saves
# ~30-60 MB of RSS on multi-core hosts.
@@ -128,7 +142,7 @@ EXPOSE 4000
ENV NODE_ENV=production \
NITRO_PORT=4000 \
NITRO_HOST=0.0.0.0 \
- NODE_OPTIONS="--max-old-space-size=512 --max-semi-space-size=8" \
+ NODE_OPTIONS="--max-old-space-size=512 --max-semi-space-size=8 --no-experimental-webstorage" \
MALLOC_ARENA_MAX=2 \
NITRO_ENV_PREFIX=NUXT_ \
TRACKARR_RUNTIME=docker
diff --git a/apps/api/nitro.config.ts b/apps/api/nitro.config.ts
index 47ace6c9..a43d022c 100644
--- a/apps/api/nitro.config.ts
+++ b/apps/api/nitro.config.ts
@@ -31,17 +31,18 @@ export default defineNitroConfig({
// esbuild target. Nitro's default is `es2019` — far older than what
// we actually run, and old enough to refuse BigInt literal syntax
// (`0n` / `1024n`) at parse time even though the runtime supports
- // them fine. Pinning to `node24` matches the production runtime
- // (distroless `gcr.io/distroless/nodejs24-debian13:nonroot`, see
- // apps/api/Dockerfile) and unlocks every ES2025 feature V8 13.6
- // ships — iterator helpers, Set methods (`union` / `intersection` / …),
- // `Promise.try`, `RegExp.escape`, JSON modules. Targeting a Node
+ // them fine. Pinning to `node26` matches the production runtime
+ // (distroless `gcr.io/distroless/nodejs26-debian13:nonroot`, see
+ // apps/api/Dockerfile) and unlocks every ES2025 feature — iterator
+ // helpers, Set methods (`union` / `intersection` / …), `Promise.try`,
+ // `RegExp.escape`, JSON modules — plus what V8 14.6 adds on top:
+ // `Map.prototype.getOrInsert`, `Iterator.concat`, `Temporal`. Targeting a Node
// version rather than an ES year is the recommended idiom for
// server-only bundles since esbuild keeps a per-runtime feature
// table that accounts for V8-specific quirks.
esbuild: {
options: {
- target: 'node24',
+ target: 'node26',
},
},
diff --git a/apps/api/scripts/run-integration-tests.sh b/apps/api/scripts/run-integration-tests.sh
index 0380433f..b5ac2f09 100755
--- a/apps/api/scripts/run-integration-tests.sh
+++ b/apps/api/scripts/run-integration-tests.sh
@@ -10,7 +10,7 @@
# migration. Measurably not equivalent either: a push of this schema onto
# a database one version behind stops on an interactive rename prompt and
# exits 0, applying nothing.
-# 3. installs deps + runs the integration suite inside node:24-alpine
+# 3. installs deps + runs the integration suite inside node:26-alpine
# 4. tears the containers + network down on exit (success or failure)
#
# RustFS is here for objectStorage.itest.ts, which exercises the S3 driver
@@ -31,7 +31,7 @@ S3=trackarr-itest-rustfs
PG_IMAGE=postgres:18.6-alpine
RD_IMAGE=redis:8.10.1-alpine
S3_IMAGE=rustfs/rustfs:latest
-NODE_IMAGE=node:24-alpine
+NODE_IMAGE=node:26-alpine
DB_URL="postgres://tracker:tracker@${PG}:5432/trackarr"
RD_PASS=itest-redis-password
RD_URL="redis://${RD}:6379"
@@ -136,7 +136,7 @@ docker run --rm --network "$NET" \
-e S3_TEST_BUCKET="$S3_BUCKET" \
"$NODE_IMAGE" sh -c "
set -e
- corepack enable
+ npm install --global --silent --allow-scripts=pnpm \"\$(node -p \"require('./package.json').packageManager\")\"
pnpm config set store-dir /pnpm-store >/dev/null
pnpm install --filter '@trackarr/api...' --filter '@trackarr/db...'
echo '=== migrations ==='
diff --git a/apps/api/scripts/run-unit-tests.sh b/apps/api/scripts/run-unit-tests.sh
index 84c9bd41..d99f4d3d 100755
--- a/apps/api/scripts/run-unit-tests.sh
+++ b/apps/api/scripts/run-unit-tests.sh
@@ -18,9 +18,9 @@ docker run --rm \
-v trackarr-itest-nm-api:/app/apps/api/node_modules \
-v trackarr-itest-nm-db:/app/packages/db/node_modules \
-v trackarr-itest-nm-shared:/app/packages/shared/node_modules \
- node:24-alpine sh -c "
+ node:26-alpine sh -c "
set -e
- corepack enable
+ npm install --global --silent --allow-scripts=pnpm \"\$(node -p \"require('./package.json').packageManager\")\"
pnpm config set store-dir /pnpm-store >/dev/null
pnpm install --filter '@trackarr/api...' --filter '@trackarr/db...' --prefer-offline
pnpm --filter @trackarr/api exec vitest run $*
diff --git a/apps/api/test/didProof.test.ts b/apps/api/test/didProof.test.ts
index fe282e23..7de8694c 100644
--- a/apps/api/test/didProof.test.ts
+++ b/apps/api/test/didProof.test.ts
@@ -137,7 +137,10 @@ describe('a browser signature the server accepts', () => {
// The member's half, in the browser's terms.
const config = proofConfigFor(memberDid, endorsedAt);
- const digest = async (bytes: Uint8Array) =>
+ // `Uint8Array`, not the default `ArrayBufferLike`: since
+ // @types/node 26, WebCrypto's `BufferSource` refuses a view that could sit
+ // on a SharedArrayBuffer — the same rule the browser's lib.dom applies.
+ const digest = async (bytes: Uint8Array) =>
new Uint8Array(await subtle.digest('SHA-256', bytes));
const input = composeSigningInput(
await digest(canonicalUtf8(config)),
@@ -175,7 +178,7 @@ describe('a browser signature the server accepts', () => {
createHash('sha256').update(canonicalBytes(config)).digest(),
createHash('sha256').update(canonicalBytes(doc)).digest(),
);
- const browserDigest = async (bytes: Uint8Array) =>
+ const browserDigest = async (bytes: Uint8Array) =>
new Uint8Array(await subtle.digest('SHA-256', bytes));
const browserInput = composeSigningInput(
await browserDigest(canonicalUtf8(config)),
diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile
index f3ddda44..5e692aea 100644
--- a/apps/web/Dockerfile
+++ b/apps/web/Dockerfile
@@ -5,14 +5,21 @@
# (Nuxt inlines its node_modules at build time), so the runtime image
# carries only that bundle and a small Node-based healthcheck.
#
-# Base is gcr.io/distroless/nodejs24-debian13:nonroot — no /bin/sh, no apt,
+# Base is gcr.io/distroless/nodejs26-debian13:nonroot — no /bin/sh, no apt,
# no package manager, runs as uid 65532, signed by Google.
# -----------------------------------------------------------------------------
# Install dependencies (cached on package.json + lockfile)
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS deps
-RUN corepack enable && corepack prepare pnpm@11.22.0 --activate
+FROM node:26-alpine AS deps
+# npm rather than corepack: Node 25 stopped shipping corepack, so the
+# node:26 images have none. The version must match `packageManager` in the
+# root package.json — pnpm 12 records it in pnpm-lock.yaml and a frozen
+# install refuses a lockfile whose pin it does not match. `--allow-scripts`
+# names the one install script we let run: pnpm's own, which only hard-links
+# its native binary over the bins. npm 11.20 runs unlisted scripts with a
+# warning today and is moving to blocking them.
+RUN npm install --global --allow-scripts=pnpm pnpm@12.15.0
WORKDIR /app
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
COPY apps/web/package.json ./apps/web/
@@ -22,8 +29,8 @@ RUN pnpm install --filter "@trackarr/web..." --frozen-lockfile
# -----------------------------------------------------------------------------
# Build the Nuxt app (produces apps/web/.output)
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS builder
-RUN corepack enable && corepack prepare pnpm@11.22.0 --activate
+FROM node:26-alpine AS builder
+RUN npm install --global --allow-scripts=pnpm pnpm@12.15.0
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/apps/web/node_modules ./apps/web/node_modules
@@ -52,7 +59,7 @@ RUN --mount=type=cache,target=/app/node_modules/.cache/nuxt,sharing=locked \
# Final runtime — distroless nonroot
# Entrypoint of this base image is `/nodejs/bin/node`; CMD is just the script.
# -----------------------------------------------------------------------------
-FROM gcr.io/distroless/nodejs24-debian13:nonroot AS runner
+FROM gcr.io/distroless/nodejs26-debian13:nonroot AS runner
WORKDIR /app
COPY --from=builder --chown=nonroot:nonroot /app/apps/web/.output ./.output
@@ -62,12 +69,17 @@ USER nonroot
EXPOSE 3000
# Memory tuning (see apps/api/Dockerfile for rationale).
# Web SSR retains compiled Vue templates / component state; without an
-# explicit V8 heap cap, sustained traffic on Node 24 grows RSS into the
-# hundreds of MB before V8 bothers to GC. 384 MB is plenty for SSR.
+# explicit V8 heap cap, sustained traffic grows RSS into the hundreds of
+# MB before V8 bothers to GC. 384 MB is plenty for SSR.
+#
+# `--no-experimental-webstorage` matters more here than in the API: this
+# process renders pages for every visitor, and Node 25+ would hand that
+# render a `sessionStorage` shared by all of them. Same flag, same reason
+# — see apps/api/Dockerfile.
ENV NODE_ENV=production \
NUXT_HOST=0.0.0.0 \
NUXT_PORT=3000 \
- NODE_OPTIONS="--max-old-space-size=384 --max-semi-space-size=8" \
+ NODE_OPTIONS="--max-old-space-size=384 --max-semi-space-size=8 --no-experimental-webstorage" \
MALLOC_ARENA_MAX=2 \
TRACKARR_RUNTIME=docker
STOPSIGNAL SIGTERM
diff --git a/apps/web/Dockerfile.static b/apps/web/Dockerfile.static
index 45ec1d90..02a93300 100644
--- a/apps/web/Dockerfile.static
+++ b/apps/web/Dockerfile.static
@@ -19,8 +19,15 @@
# -----------------------------------------------------------------------------
# Install workspace dependencies (cached on package.json + lockfile)
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS deps
-RUN corepack enable && corepack prepare pnpm@11.22.0 --activate
+FROM node:26-alpine AS deps
+# npm rather than corepack: Node 25 stopped shipping corepack, so the
+# node:26 images have none. The version must match `packageManager` in the
+# root package.json — pnpm 12 records it in pnpm-lock.yaml and a frozen
+# install refuses a lockfile whose pin it does not match. `--allow-scripts`
+# names the one install script we let run: pnpm's own, which only hard-links
+# its native binary over the bins. npm 11.20 runs unlisted scripts with a
+# warning today and is moving to blocking them.
+RUN npm install --global --allow-scripts=pnpm pnpm@12.15.0
WORKDIR /app
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./
COPY apps/web/package.json ./apps/web/
@@ -32,8 +39,8 @@ RUN pnpm install --filter "@trackarr/web..." --frozen-lockfile
# turn `ssr: false`, and `nuxi generate` writes the prerendered static
# tree to apps/web/.output/public/.
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS builder
-RUN corepack enable && corepack prepare pnpm@11.22.0 --activate
+FROM node:26-alpine AS builder
+RUN npm install --global --allow-scripts=pnpm pnpm@12.15.0
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/apps/web/node_modules ./apps/web/node_modules
diff --git a/apps/web/nuxt.config.ts b/apps/web/nuxt.config.ts
index e419e8ca..8ef3995d 100644
--- a/apps/web/nuxt.config.ts
+++ b/apps/web/nuxt.config.ts
@@ -42,10 +42,10 @@ export default defineNuxtConfig({
// esbuild target for the Nitro server bundle. Nitro defaults to
// `es2019`, which is older than every runtime we ship and old
// enough to refuse BigInt literal syntax (`0n` / `1024n`). Pinning
- // to `node24` matches the production runtime (distroless
- // `gcr.io/distroless/nodejs24-debian13:nonroot`) and unlocks
- // ES2025 features V8 13.6 ships — iterator helpers, Set methods,
- // `Promise.try`, `RegExp.escape`, JSON modules.
+ // to `node26` matches the production runtime (distroless
+ // `gcr.io/distroless/nodejs26-debian13:nonroot`) and unlocks the
+ // ES2025 features — iterator helpers, Set methods, `Promise.try`,
+ // `RegExp.escape`, JSON modules — and what V8 14.6 adds on top.
//
// Note: this only governs the SSR / server bundle. The client
// bundle is emitted by Vite and is left at its default
@@ -53,7 +53,7 @@ export default defineNuxtConfig({
// back rather than a Node runtime.
esbuild: {
options: {
- target: 'node24',
+ target: 'node26',
},
},
...(STATIC_BUILD
diff --git a/apps/web/scripts/run-unit-tests.sh b/apps/web/scripts/run-unit-tests.sh
index 0ae06f82..1228bea1 100755
--- a/apps/web/scripts/run-unit-tests.sh
+++ b/apps/web/scripts/run-unit-tests.sh
@@ -15,9 +15,9 @@ docker run --rm \
-v trackarr-itest-nm-root:/app/node_modules \
-v trackarr-itest-nm-web:/app/apps/web/node_modules \
-v trackarr-itest-nm-shared:/app/packages/shared/node_modules \
- node:24-alpine sh -c "
+ node:26-alpine sh -c "
set -e
- corepack enable
+ npm install --global --silent --allow-scripts=pnpm \"\$(node -p \"require('./package.json').packageManager\")\"
pnpm config set store-dir /pnpm-store >/dev/null
pnpm install --filter '@trackarr/web...' --ignore-scripts
# \`--ignore-scripts\` skips the postinstall that generates .nuxt, and
diff --git a/deploy/helm/trackarr/README.md b/deploy/helm/trackarr/README.md
index 07039293..ee4aac2f 100644
--- a/deploy/helm/trackarr/README.md
+++ b/deploy/helm/trackarr/README.md
@@ -440,7 +440,7 @@ has `postgresql.cluster.monitoring.enabled`.
## Upgrading from a release older than the uid alignment
The pods used to run as uid 1001 while all three images are built for 65532 —
-`gcr.io/distroless/nodejs24-debian13:nonroot` for the api and web, an explicit
+`gcr.io/distroless/nodejs26-debian13:nonroot` for the api and web, an explicit
`USER 65532:65532` for the tracker. It worked only because the bundles are
world-readable. The chart now runs them as the uid they were built for.
diff --git a/deploy/helm/trackarr/templates/_env.tpl b/deploy/helm/trackarr/templates/_env.tpl
index 5c544f84..0f1ba9e8 100644
--- a/deploy/helm/trackarr/templates/_env.tpl
+++ b/deploy/helm/trackarr/templates/_env.tpl
@@ -182,7 +182,7 @@ runAsNonRoot: true
{{/*
65532 because that is what all three images actually are, verified in their
Dockerfiles rather than assumed: the api and web runtimes are
-gcr.io/distroless/nodejs24-debian13:nonroot, whose `nonroot` user is 65532, and
+gcr.io/distroless/nodejs26-debian13:nonroot, whose `nonroot` user is 65532, and
apps/tracker/Dockerfile says `USER 65532:65532` with a comment about staying
consistent with them.
diff --git a/doc/Dockerfile b/doc/Dockerfile
index bad72ee0..51cd4e68 100644
--- a/doc/Dockerfile
+++ b/doc/Dockerfile
@@ -25,7 +25,7 @@
# Stage 1 — install dependencies. Cached on package-lock.json + package.json
# alone so source-only edits don't bust the deps layer.
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS deps
+FROM node:26-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --no-audit --no-fund
@@ -36,7 +36,7 @@ RUN npm ci --no-audit --no-fund
# (passed through to vitepress via process.env, see config.ts).
# - Output lives at .vitepress/dist/.
# -----------------------------------------------------------------------------
-FROM node:24-alpine AS builder
+FROM node:26-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
diff --git a/doc/guide/architecture.md b/doc/guide/architecture.md
index c0c5d3a4..c2b98cd4 100644
--- a/doc/guide/architecture.md
+++ b/doc/guide/architecture.md
@@ -67,9 +67,9 @@ replaces only `apps/web`.
| Container | Base image |
| --- | --- |
-| `apps/web` (SSR) | `gcr.io/distroless/nodejs24-debian13:nonroot` |
+| `apps/web` (SSR) | `gcr.io/distroless/nodejs26-debian13:nonroot` |
| `apps/web` (static) | `cgr.dev/chainguard/nginx` |
-| `apps/api` | `gcr.io/distroless/nodejs24-debian13:nonroot` |
+| `apps/api` | `gcr.io/distroless/nodejs26-debian13:nonroot` |
| `apps/tracker` | `scratch` |
No shells, no package managers, signed images, non-root by default.
diff --git a/package.json b/package.json
index 9aeea502..db26a71b 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"version": "0.37.4",
"private": true,
"type": "module",
- "packageManager": "pnpm@11.22.0",
+ "packageManager": "pnpm@12.15.0",
"scripts": {
"dev": "pnpm -r --parallel run dev",
"build": "pnpm -r run build",
@@ -18,8 +18,8 @@
"check:schema-parity": "pnpm --filter @trackarr/db run check:schema-parity"
},
"devDependencies": {
- "@types/node": "^24.13.3",
- "tsx": "^4.23.13",
+ "@types/node": "^26.6.5",
+ "tsx": "^4.23.15",
"typescript": "^7.0.2"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 77b43ce4..42912209 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,3 +1,161 @@
+---
+lockfileVersion: '9.0'
+
+importers:
+
+ .:
+ configDependencies: {}
+ packageManagerDependencies:
+ pnpm:
+ specifier: 12.15.0
+ version: 12.15.0
+
+packages:
+
+ '@pnpm/exe.android-arm64@12.15.0':
+ resolution: {integrity: sha512-eVCqmscY70LGvgRzu3mi8IBWBFGix+a6mNZoWmXxESsBdeiKEF9xQSuaeel10yn+zI7TXy2jlI63vFLzETk+aQ==}
+ cpu: [arm64]
+ os: [android]
+
+ '@pnpm/exe.android-x64@12.15.0':
+ resolution: {integrity: sha512-Gx/WbkFcdUFUg8g8AShezcS9EiQxfYvdAm2hfKLO8sfJmJvKOCt5fzlgHWDzmGhoclibgW+tUGZ/KF4F4wOTCA==}
+ cpu: [x64]
+ os: [android]
+
+ '@pnpm/exe.darwin-arm64@12.15.0':
+ resolution: {integrity: sha512-N0ZykiDWCvqSBJvt71j7cSoBR993FqvYZFtmpCtqvW3pguiI+NAgraLPA5OTwu5mV+/d8hYpVcPktJA3xFDLtA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@pnpm/exe.darwin-x64@12.15.0':
+ resolution: {integrity: sha512-7Ntr2HlBUxzwWOg7NwDxCbRW/3vXuqKO+hcXm+w3SBi9rrHY53li1wLqWVT7Gjxd+lVEHM1QJZo6WJEGFU8C6A==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@pnpm/exe.freebsd-x64@12.15.0':
+ resolution: {integrity: sha512-btOiyL7fL7W4uQGH0aqFai2TNC3IoKcZ7gNHBVbEFZt2dWrnrD0SufL3iGs3fLlmb4OtuU35uf4Zpr9V9Jh9mA==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@pnpm/exe.linux-arm64-musl@12.15.0':
+ resolution: {integrity: sha512-pNC38k+O+90FOjbPNSnw0E7apq1PKTmz3fFe1amn+lys/U5kL++uzir8bRiho8ONcyA3d9EU7wdqcY0DKkj+JA==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-arm64@12.15.0':
+ resolution: {integrity: sha512-qML/8aCXslh8td/w4U+HJNqUcZ2+m6EfTbWScIzZRmyPsRFN+xB4LP1U/hymxc1iSJiKtG56HJx2fvUErWFIGw==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-ppc64@12.15.0':
+ resolution: {integrity: sha512-tjRDUUl7RCJ6T/6eoNPxOqkwU4Mzi5RtTXmSAxujyz37OTwwsMU7Ps087Zk4gHcUvRSeyF40ZFsew3vtE+nmUA==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-riscv64@12.15.0':
+ resolution: {integrity: sha512-bF1uBWEfbwaeryz6lIiaJ8AWD082otZfvzGX5l+6LZRpRwUEpJHUsJrORaYP5/cNMv5ZR2p6TvvcJcQzwtDzmw==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-s390x@12.15.0':
+ resolution: {integrity: sha512-zKMhIzsexYMToeLmqV5jPsvV/f9vwsJb2kUH2NFYzalbxImeBrlA4kL7GwF8gD4pagV6jYYcJb8RjbZIdjHptg==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-x64-musl@12.15.0':
+ resolution: {integrity: sha512-A9J0Jg0Rdx+qQU4qXtwyST5tto9IOu1zi4fDk35nbc6DWahggbcKtFvZPKFwL2qgUXGXOX//hXv6z/sp6emO8A==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-x64@12.15.0':
+ resolution: {integrity: sha512-yc+QlZR+9+nr29J4fRzhMoapgxTBDndq/+peyoq1XUufnQFnfbXUMFudDIKzHi545linGqmOmXfn0NoufNgcOg==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.win32-arm64@12.15.0':
+ resolution: {integrity: sha512-fPXZxuY1VclkOga9bc53qNCXcegfeoBR8+Ue+AospDwKzuGGSHll0oDxkLfkmpjyRqpe7bH5DyQPYp/xSMaIVA==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@pnpm/exe.win32-x64@12.15.0':
+ resolution: {integrity: sha512-nrd+Tp1We1DGj4DGG5Bea9lZNh9y1PjlLBdEwdInS4D0h0UIDtM7JaGGGDJhNzIwcHASyihWI7HLV+dtG+fhYg==}
+ cpu: [x64]
+ os: [win32]
+
+ pnpm@12.15.0:
+ resolution: {integrity: sha512-s5UdbW/0qfE9x89WzSjSuOs328ycaOUuHhGRhz6p+CoBcoerULqtxczElPA2xnwOR+sTYIwvo29HcRth6hKOYQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+snapshots:
+
+ '@pnpm/exe.android-arm64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.android-x64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.darwin-arm64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.darwin-x64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.freebsd-x64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.linux-arm64-musl@12.15.0':
+ optional: true
+
+ '@pnpm/exe.linux-arm64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.linux-ppc64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.linux-riscv64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.linux-s390x@12.15.0':
+ optional: true
+
+ '@pnpm/exe.linux-x64-musl@12.15.0':
+ optional: true
+
+ '@pnpm/exe.linux-x64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.win32-arm64@12.15.0':
+ optional: true
+
+ '@pnpm/exe.win32-x64@12.15.0':
+ optional: true
+
+ pnpm@12.15.0:
+ optionalDependencies:
+ '@pnpm/exe.android-arm64': 12.15.0
+ '@pnpm/exe.android-x64': 12.15.0
+ '@pnpm/exe.darwin-arm64': 12.15.0
+ '@pnpm/exe.darwin-x64': 12.15.0
+ '@pnpm/exe.freebsd-x64': 12.15.0
+ '@pnpm/exe.linux-arm64': 12.15.0
+ '@pnpm/exe.linux-arm64-musl': 12.15.0
+ '@pnpm/exe.linux-ppc64': 12.15.0
+ '@pnpm/exe.linux-riscv64': 12.15.0
+ '@pnpm/exe.linux-s390x': 12.15.0
+ '@pnpm/exe.linux-x64': 12.15.0
+ '@pnpm/exe.linux-x64-musl': 12.15.0
+ '@pnpm/exe.win32-arm64': 12.15.0
+ '@pnpm/exe.win32-x64': 12.15.0
+
+---
lockfileVersion: '9.0'
settings:
@@ -25,7 +183,7 @@ overrides:
undici@8: ^8.10.2
svgo@4: ^4.1.0
'@babel/core@7': ^7.29.6
- '@types/node': ^24.13.3
+ '@types/node': ^26.6.5
'@peculiar/asn1-android': ^2.9.4
'@peculiar/asn1-cms': ^2.9.4
'@peculiar/asn1-csr': ^2.9.4
@@ -54,11 +212,11 @@ importers:
.:
devDependencies:
'@types/node':
- specifier: ^24.13.3
- version: 24.13.3
+ specifier: ^26.6.5
+ version: 26.6.5
tsx:
- specifier: ^4.23.13
- version: 4.23.13
+ specifier: ^4.23.15
+ version: 4.23.15
typescript:
specifier: ^7.0.2
version: 7.0.2
@@ -103,7 +261,7 @@ importers:
version: 18.0.10
nitropack:
specifier: ^2.13.4
- version: 2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ version: 2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nodemailer:
specifier: ^10.2.1
version: 10.2.1
@@ -155,7 +313,7 @@ importers:
version: 13.1.3
vitest:
specifier: ^4.1.12
- version: 4.1.12(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ version: 4.1.12(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
apps/web:
dependencies:
@@ -164,13 +322,13 @@ importers:
version: 1.2.94
'@nuxtjs/i18n':
specifier: ^10.6.0
- version: 10.6.0(@vue/compiler-dom@3.5.41)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 10.6.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@nuxtjs/tailwindcss':
specifier: 6.14.0
- version: 6.14.0(magicast@0.5.5)(supports-color@10.2.2)(tsx@4.23.13)(yaml@2.9.0)
+ version: 6.14.0(magicast@0.5.5)(supports-color@10.2.2)(tsx@4.23.15)(yaml@2.9.0)
'@pinia/nuxt':
specifier: 1.0.2
- version: 1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ version: 1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@simplewebauthn/browser':
specifier: ^13.3.0
version: 13.3.0
@@ -221,7 +379,7 @@ importers:
version: 0.3.7
nuxt:
specifier: ^4.6.2
- version: 4.6.2(770feae4848205a63c0a1ab5684c5cdb)
+ version: 4.6.2(78ce3ce95614c10964492054815ad65e)
pinia:
specifier: ^4.0.3
version: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
@@ -236,17 +394,17 @@ importers:
version: 5.3.4(chart.js@4.5.1)(vue@3.5.44(typescript@5.9.3))
vue-router:
specifier: ^5.4.0
- version: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
devDependencies:
'@iconify-json/ph':
specifier: ^1.2.2
version: 1.2.2
'@nuxt/fonts':
specifier: ^0.14.0
- version: 0.14.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ version: 0.14.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/icon':
specifier: ^2.5.1
- version: 2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@types/turndown':
specifier: ^5.0.6
version: 5.0.6
@@ -255,7 +413,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.1.12
- version: 4.1.12(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ version: 4.1.12(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
vue-tsc:
specifier: ^3.3.11
version: 3.3.11(typescript@5.9.3)
@@ -2121,8 +2279,8 @@ packages:
'@types/magnet-uri@5.1.5':
resolution: {integrity: sha512-SbBjlb1KGe38VfjRR+mwqztJd/4skhdKkRbIzPDhTy7IAeEAPZWIVSEkZw00Qr4ZZOGR3/ATJ20WWPBfrKHGdA==}
- '@types/node@24.13.3':
- resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==}
+ '@types/node@26.6.5':
+ resolution: {integrity: sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==}
'@types/parse-torrent@11.0.1':
resolution: {integrity: sha512-rzk5O1sk/Fbu8grskEEbFb0FZyDdVIkreRs2br90Y5BNcExSAEeRJftqxvyniJcJzI1xRK4fWxS0PJfxVvVRVQ==}
@@ -3637,10 +3795,6 @@ packages:
resolution: {integrity: sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==}
hasBin: true
- giget@3.3.1:
- resolution: {integrity: sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==}
- hasBin: true
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -4406,7 +4560,7 @@ packages:
hasBin: true
peerDependencies:
'@parcel/watcher': ^2.1.0
- '@types/node': ^24.13.3
+ '@types/node': ^26.6.5
rolldown: ~1.2.1
peerDependenciesMeta:
'@parcel/watcher':
@@ -5326,13 +5480,8 @@ packages:
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
engines: {node: '>=0.6.x'}
- tsx@4.23.12:
- resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==}
- engines: {node: '>=18.0.0'}
- hasBin: true
-
- tsx@4.23.13:
- resolution: {integrity: sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw==}
+ tsx@4.23.15:
+ resolution: {integrity: sha512-Yiex1Ovn8z2xPpOWckIiysV1SSyRMY9BkLF++q0yKiDxCqRhosKfMg3janKkiLBwZ5c/YryloKwGZcrEmtwxKw==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -5428,8 +5577,8 @@ packages:
unplugin:
optional: true
- undici-types@7.18.2:
- resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
+ undici-types@8.9.0:
+ resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==}
undici@8.12.3:
resolution: {integrity: sha512-+fdndUTwBP86cVjihTp21hZHo7d6oj1c/47XPA3lL8mM0XHs+C4EkcjmgRsFnFk2f/UONGDy9ItBItmXsLOQHw==}
@@ -5744,7 +5893,7 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
- '@types/node': ^24.13.3
+ '@types/node': ^26.6.5
'@vitejs/devtools': ^0.7.1 || ^0.8.0
esbuild: ^0.28.2
jiti: '>=1.21.0'
@@ -5789,7 +5938,7 @@ packages:
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
- '@types/node': ^24.13.3
+ '@types/node': ^26.6.5
'@vitest/browser-playwright': 4.1.12
'@vitest/browser-preview': 4.1.12
'@vitest/browser-webdriverio': ^4.1.11
@@ -6331,17 +6480,17 @@ snapshots:
'@drizzle-team/brocli@0.10.2': {}
- '@dxup/nuxt@0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@dxup/nuxt@0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@dxup/unimport': 0.1.2
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@vue/compiler-dom': 3.5.42
chokidar: 5.0.0
knitwork: 1.3.0
magic-string: 1.4.3
pathe: 2.0.3
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
transitivePeerDependencies:
- '@farmfe/core'
- '@rspack/core'
@@ -6591,12 +6740,12 @@ snapshots:
'@intlify/shared@11.4.8': {}
- '@intlify/unplugin-vue-i18n@11.2.5(@vue/compiler-dom@3.5.41)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))':
+ '@intlify/unplugin-vue-i18n@11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))
'@intlify/bundle-utils': 11.2.5(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))
'@intlify/shared': 11.4.8
- '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.8)(@vue/compiler-dom@3.5.41)(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
+ '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.8)(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
'@rollup/pluginutils': 5.3.0(rollup@4.60.3)
'@typescript-eslint/scope-manager': 8.59.2
'@typescript-eslint/typescript-estree': 8.59.2(supports-color@10.2.2)(typescript@5.9.3)
@@ -6607,10 +6756,9 @@ snapshots:
unplugin: 2.3.11
vue: 3.5.44(typescript@5.9.3)
optionalDependencies:
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
transitivePeerDependencies:
- - '@vue/compiler-dom'
- eslint
- rollup
- supports-color
@@ -6620,12 +6768,12 @@ snapshots:
'@intlify/utils@0.14.1': {}
- '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.4.8)(@vue/compiler-dom@3.5.41)(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))':
+ '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.4.8)(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@babel/parser': 7.29.8
+ '@vue/compiler-dom': 3.5.41
optionalDependencies:
'@intlify/shared': 11.4.8
- '@vue/compiler-dom': 3.5.41
vue: 3.5.44(typescript@5.9.3)
vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
@@ -6728,7 +6876,7 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
- '@nuxt/cli@4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@nuxt/cli@4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@clack/prompts': 1.8.1
args-tokenizer: 0.3.0
@@ -6739,7 +6887,7 @@ snapshots:
exsolve: 1.1.3
fuzzysort: 4.0.2
get-port-please: 3.2.0
- my-bad: 0.2.11(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
obug: 3.0.0
package-manager-detector: 1.9.0
pathe: 2.0.3
@@ -6763,11 +6911,11 @@ snapshots:
'@nuxt/devalue@2.0.2': {}
- '@nuxt/devtools-kit@3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
execa: 8.0.1
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- magic-string
- magicast
@@ -6775,11 +6923,11 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/devtools-kit@3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
execa: 8.0.1
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- magic-string
- magicast
@@ -6787,11 +6935,11 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/devtools-kit@3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
execa: 8.0.1
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@nuxt/schema'
- confbox
@@ -6815,11 +6963,11 @@ snapshots:
pkg-types: 2.4.0
semver: 7.8.5
- '@nuxt/devtools@3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.3.1)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxt/devtools@3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
- '@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ '@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/devtools-wizard': 3.4.4
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@vue/devtools-core': 8.2.1(vue@3.5.44(typescript@5.9.3))
'@vue/devtools-kit': 8.2.1
birpc: 4.2.0
@@ -6846,9 +6994,9 @@ snapshots:
tinyexec: 1.3.1
tinyglobby: 0.2.17
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
- vite-plugin-inspect: 11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- vite-plugin-vue-tracer: 1.5.0(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+ vite-plugin-inspect: 11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ vite-plugin-vue-tracer: 1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
which: 6.0.1
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
transitivePeerDependencies:
@@ -6885,13 +7033,13 @@ snapshots:
- utf-8-validate
- vue
- '@nuxt/fonts@0.14.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@nuxt/fonts@0.14.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/devtools-kit': 3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/devtools-kit': 3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
consola: 3.4.2
defu: 6.1.7
- fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
h3: 1.15.11
magic-regexp: 0.10.0
ofetch: 1.5.1
@@ -6900,7 +7048,7 @@ snapshots:
tinyglobby: 0.2.17
ufo: 1.6.4
unifont: 0.7.5
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -6935,14 +7083,14 @@ snapshots:
- vite
- webpack
- '@nuxt/icon@2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxt/icon@2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@iconify/collections': 1.0.727
'@iconify/types': 2.0.0
'@iconify/utils': 3.1.4
'@iconify/vue': 5.0.1(vue@3.5.44(typescript@5.9.3))
- '@nuxt/devtools-kit': 3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/devtools-kit': 3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
consola: 3.4.2
local-pkg: 1.2.1
mlly: 1.8.2
@@ -6986,7 +7134,7 @@ snapshots:
transitivePeerDependencies:
- magicast
- '@nuxt/kit@4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))':
+ '@nuxt/kit@4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
c12: 3.3.4(magicast@0.5.5)
consola: 3.4.2
@@ -7006,7 +7154,7 @@ snapshots:
scule: 1.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unctx: 3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ unctx: 3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
untyped: 2.0.0
verkit: 0.3.2
transitivePeerDependencies:
@@ -7016,7 +7164,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))':
+ '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
c12: 3.3.4(magicast@0.5.5)
consola: 3.4.2
@@ -7036,7 +7184,7 @@ snapshots:
scule: 1.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
untyped: 2.0.0
verkit: 0.3.2
transitivePeerDependencies:
@@ -7046,7 +7194,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))':
+ '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
c12: 3.3.4(magicast@0.5.5)
consola: 3.4.2
@@ -7066,7 +7214,7 @@ snapshots:
scule: 1.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
untyped: 2.0.0
verkit: 0.3.2
transitivePeerDependencies:
@@ -7076,7 +7224,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))':
+ '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
consola: 3.4.2
defu: 6.1.7
@@ -7094,13 +7242,13 @@ snapshots:
std-env: 4.3.0
tinyexec: 1.3.1
tinyglobby: 0.2.17
- unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
verkit: 0.5.0
optionalDependencies:
'@nuxt/schema': 4.6.2
confbox: 0.3.1
dotenv: 17.4.2
- giget: 3.3.1
+ giget: 3.2.0
jiti: 2.7.0
mlly: 1.8.2
oxc-parser: 0.141.0
@@ -7109,7 +7257,7 @@ snapshots:
- magic-string
- unplugin
- '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))':
+ '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
consola: 3.4.2
defu: 6.1.7
@@ -7127,13 +7275,13 @@ snapshots:
std-env: 4.3.0
tinyexec: 1.3.1
tinyglobby: 0.2.17
- unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
verkit: 0.5.0
optionalDependencies:
'@nuxt/schema': 4.6.2
confbox: 0.3.1
dotenv: 17.4.2
- giget: 3.3.1
+ giget: 3.2.0
jiti: 2.7.0
mlly: 1.8.2
oxc-parser: 0.141.0
@@ -7142,10 +7290,10 @@ snapshots:
- magic-string
- unplugin
- '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(770feae4848205a63c0a1ab5684c5cdb))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
- '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
consola: 3.4.2
defu: 6.1.7
destr: 2.0.5
@@ -7155,20 +7303,20 @@ snapshots:
exsolve: 1.1.3
flru: 1.0.2
h3: 1.15.11
- impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
klona: 2.0.6
mocked-exports: 0.1.1
- my-bad: 0.2.11(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- nitropack: 2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ nitropack: 2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nostics: 1.3.0
- nuxt: 4.6.2(770feae4848205a63c0a1ab5684c5cdb)
+ nuxt: 4.6.2(78ce3ce95614c10964492054815ad65e)
ohash: 2.0.12
pathe: 2.0.3
radix3: 1.1.2
rou3: 0.9.2
std-env: 4.3.0
ufo: 1.6.4
- unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
unrouting: 0.2.3
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
vue: 3.5.44(typescript@5.9.3)
@@ -7241,19 +7389,19 @@ snapshots:
pkg-types: 2.4.0
std-env: 4.3.0
- '@nuxt/telemetry@2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))))':
+ '@nuxt/telemetry@2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
citty: 0.2.2
consola: 3.4.2
rc9: 3.0.1
std-env: 4.2.0
- '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@24.13.3)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(770feae4848205a63c0a1ab5684c5cdb))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.13)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)':
+ '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
- '@vitejs/plugin-vue': 6.0.10(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
- '@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@vitejs/plugin-vue': 6.0.10(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
autoprefixer: 10.6.1(postcss@8.5.26)
clickable-path: 0.1.1
consola: 3.4.2
@@ -7266,8 +7414,8 @@ snapshots:
js-tokens: 10.0.0
knitwork: 1.3.0
mocked-exports: 0.1.1
- my-bad: 0.2.11(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- nuxt: 4.6.2(770feae4848205a63c0a1ab5684c5cdb)
+ my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ nuxt: 4.6.2(78ce3ce95614c10964492054815ad65e)
pathe: 2.0.3
pkg-types: 2.4.0
postcss: 8.5.26
@@ -7276,10 +7424,10 @@ snapshots:
std-env: 4.3.0
ufo: 1.6.4
unenv: 2.0.0-rc.24
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
- vite-node: 6.0.0(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
- vite-plugin-checker: 0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@5.9.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@5.9.3))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+ vite-node: 6.0.0(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+ vite-plugin-checker: 0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@5.9.3))
vue: 3.5.44(typescript@5.9.3)
vue-bundle-renderer: 2.4.0
optionalDependencies:
@@ -7322,21 +7470,21 @@ snapshots:
- webpack
- yaml
- '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(770feae4848205a63c0a1ab5684c5cdb))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
clickable-path: 0.1.1
defu: 6.1.7
exsolve: 1.1.3
mocked-exports: 0.1.1
- my-bad: 0.2.11(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- nuxt: 4.6.2(770feae4848205a63c0a1ab5684c5cdb)
+ my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ nuxt: 4.6.2(78ce3ce95614c10964492054815ad65e)
pathe: 2.0.3
rou3: 0.9.2
srvx: 1.0.5
ufo: 1.6.4
ultrahtml: 1.7.0
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@nuxt/schema'
- confbox
@@ -7349,16 +7497,16 @@ snapshots:
- rolldown
- unplugin
- '@nuxtjs/i18n@10.6.0(@vue/compiler-dom@3.5.41)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxtjs/i18n@10.6.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@intlify/core': 11.4.8
'@intlify/h3': 0.7.4
'@intlify/message-compiler': 11.4.8
'@intlify/shared': 11.4.8
- '@intlify/unplugin-vue-i18n': 11.2.5(@vue/compiler-dom@3.5.41)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
+ '@intlify/unplugin-vue-i18n': 11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
'@intlify/utils': 0.14.1
'@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.60.3)
- '@nuxt/kit': 4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@rollup/plugin-yaml': 4.1.2(rollup@4.60.3)
'@vue/compiler-sfc': 3.5.41
confbox: 0.2.4
@@ -7374,12 +7522,12 @@ snapshots:
oxc-walker: 0.7.0(oxc-parser@0.141.0)
pathe: 2.0.3
ufo: 1.6.4
- unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unrouting: 0.2.3
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
- vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -7399,7 +7547,6 @@ snapshots:
- '@vercel/blob'
- '@vercel/functions'
- '@vercel/kv'
- - '@vue/compiler-dom'
- aws4fetch
- bun-types-no-globals
- db0
@@ -7420,7 +7567,7 @@ snapshots:
- vue
- webpack
- '@nuxtjs/tailwindcss@6.14.0(magicast@0.5.5)(supports-color@10.2.2)(tsx@4.23.13)(yaml@2.9.0)':
+ '@nuxtjs/tailwindcss@6.14.0(magicast@0.5.5)(supports-color@10.2.2)(tsx@4.23.15)(yaml@2.9.0)':
dependencies:
'@nuxt/kit': 3.21.4(magicast@0.5.5)
autoprefixer: 10.5.0(postcss@8.5.26)
@@ -7434,8 +7581,8 @@ snapshots:
pkg-types: 2.3.1
postcss: 8.5.26
postcss-nesting: 13.0.2(postcss@8.5.26)
- tailwind-config-viewer: 2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.13)(yaml@2.9.0))
- tailwindcss: 3.4.19(tsx@4.23.13)(yaml@2.9.0)
+ tailwind-config-viewer: 2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.15)(yaml@2.9.0))
+ tailwindcss: 3.4.19(tsx@4.23.15)(yaml@2.9.0)
ufo: 1.6.4
unctx: 2.5.0
transitivePeerDependencies:
@@ -7770,9 +7917,9 @@ snapshots:
tslib: 2.8.1
tsyringe: 4.10.0
- '@pinia/nuxt@1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))':
+ '@pinia/nuxt@1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
transitivePeerDependencies:
- magic-string
@@ -8220,7 +8367,7 @@ snapshots:
'@types/create-torrent@6.1.1':
dependencies:
- '@types/node': 24.13.3
+ '@types/node': 26.6.5
'@types/css-tree@3.2.0': {}
@@ -8238,20 +8385,20 @@ snapshots:
'@types/magnet-uri@5.1.5':
dependencies:
- '@types/node': 24.13.3
+ '@types/node': 26.6.5
- '@types/node@24.13.3':
+ '@types/node@26.6.5':
dependencies:
- undici-types: 7.18.2
+ undici-types: 8.9.0
'@types/parse-torrent@11.0.1':
dependencies:
'@types/magnet-uri': 5.1.5
- '@types/node': 24.13.3
+ '@types/node': 26.6.5
'@types/qrcode@1.5.6':
dependencies:
- '@types/node': 24.13.3
+ '@types/node': 26.6.5
'@types/resolve@1.20.2': {}
@@ -8264,7 +8411,7 @@ snapshots:
'@types/web-push@3.6.4':
dependencies:
- '@types/node': 24.13.3
+ '@types/node': 26.6.5
'@typescript-eslint/project-service@8.59.2(supports-color@10.2.2)(typescript@5.9.3)':
dependencies:
@@ -8366,18 +8513,18 @@ snapshots:
'@typescript/typescript-win32-x64@7.0.2':
optional: true
- '@unhead/bundler@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@unhead/bundler@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
magic-string: 1.4.3
oxc-walker: 1.1.1(@oxc-project/types@0.155.0)(oxc-parser@0.141.0)(rolldown@1.2.15)
- unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
optionalDependencies:
esbuild: 0.28.2
lightningcss: 1.33.0
oxc-parser: 0.141.0
rolldown: 1.2.15
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
- '@oxc-project/types'
@@ -8386,15 +8533,15 @@ snapshots:
- rollup
- unloader
- '@unhead/vue@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@unhead/vue@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
- '@unhead/bundler': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ '@unhead/bundler': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
hookable: 6.1.1
- unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
vue: 3.5.44(typescript@5.9.3)
optionalDependencies:
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
- '@oxc-project/types'
@@ -8428,22 +8575,22 @@ snapshots:
- rollup
- supports-color
- '@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
'@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
'@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
'@rolldown/pluginutils': 1.0.1
'@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vue: 3.5.44(typescript@5.9.3)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@6.0.10(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@vitejs/plugin-vue@6.0.10(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@rolldown/pluginutils': 1.0.1
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vue: 3.5.44(typescript@5.9.3)
'@vitest/expect@4.1.12':
@@ -8455,13 +8602,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.1
- '@vitest/mocker@4.1.12(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))':
+ '@vitest/mocker@4.1.12(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.12
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
'@vitest/pretty-format@4.1.12':
dependencies:
@@ -9296,7 +9443,7 @@ snapshots:
'@drizzle-team/brocli': 0.10.2
'@esbuild-kit/esm-loader': 2.6.5
esbuild: 0.28.2
- tsx: 4.23.12
+ tsx: 4.23.15
drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9):
optionalDependencies:
@@ -9612,7 +9759,7 @@ snapshots:
dependencies:
tiny-inflate: 1.0.3
- fontless@0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ fontless@0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
consola: 3.4.2
css-tree: 3.2.1
@@ -9628,7 +9775,7 @@ snapshots:
unifont: 0.7.5
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
optionalDependencies:
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -9723,9 +9870,6 @@ snapshots:
giget@3.2.0: {}
- giget@3.3.1:
- optional: true
-
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -9874,12 +10018,12 @@ snapshots:
import-meta-resolve@4.2.0: {}
- impound@1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ impound@1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
es-module-lexer: 3.0.4
pathe: 2.0.3
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
transitivePeerDependencies:
- '@farmfe/core'
@@ -10418,13 +10562,13 @@ snapshots:
muggle-string@0.4.1: {}
- my-bad@0.2.11(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ my-bad@0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
clickable-path: 0.1.1
errx: 0.2.2
fnv1a-64: 0.1.2
optionalDependencies:
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
mz@2.7.0:
dependencies:
@@ -10440,7 +10584,7 @@ snapshots:
negotiator@0.6.3: {}
- nitropack@2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ nitropack@2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@cloudflare/kv-asset-handler': 0.4.2
'@rollup/plugin-alias': 6.0.0(rollup@4.60.3)
@@ -10505,7 +10649,7 @@ snapshots:
uncrypto: 0.1.3
unctx: 2.5.0
unenv: 2.0.0-rc.24
- unimport: 6.2.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unimport: 6.2.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.1
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
untyped: 2.0.0
@@ -10597,20 +10741,20 @@ snapshots:
nuxt-define@1.0.0: {}
- nuxt@4.6.2(770feae4848205a63c0a1ab5684c5cdb):
+ nuxt@4.6.2(78ce3ce95614c10964492054815ad65e):
dependencies:
- '@dxup/nuxt': 0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ '@dxup/nuxt': 0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@jridgewell/trace-mapping': 0.3.31
- '@nuxt/cli': 4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ '@nuxt/cli': 4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/devalue': 2.0.2
- '@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.3.1)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
- '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.3.1)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(770feae4848205a63c0a1ab5684c5cdb))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ '@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/schema': 4.6.2
- '@nuxt/telemetry': 2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))))
- '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@24.13.3)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(770feae4848205a63c0a1ab5684c5cdb))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.13)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)
- '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(770feae4848205a63c0a1ab5684c5cdb))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/telemetry': 2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))
+ '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)
+ '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@vue/shared': 3.5.44
chokidar: 5.0.0
clickable-path: 0.1.1
@@ -10627,13 +10771,13 @@ snapshots:
fnv1a-64: 0.1.2
hookable: 6.1.2
ignore: 7.0.13
- impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
iron-webcrypto: 2.0.0
jiti: 2.7.0
klona: 2.0.6
knitwork: 1.3.0
magic-string: 1.4.3
- my-bad: 0.2.11(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nanotar: 0.3.0
nostics: 1.3.0
object-identity: 0.2.3
@@ -10654,21 +10798,21 @@ snapshots:
ufo: 1.6.4
ultrahtml: 1.7.0
uncrypto: 0.1.3
- unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
undici: 8.12.3
- unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- unimport: 7.0.2(acorn@8.18.0)(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
- unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unimport: 7.0.2(acorn@8.18.0)(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unrouting: 0.2.3
untyped: 2.0.0
verkit: 0.5.0
vue: 3.5.44(typescript@5.9.3)
vue-bundle-renderer: 2.4.0
vue-component-type-helpers: 3.3.13
- vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
optionalDependencies:
'@parcel/watcher': 2.5.6
- '@types/node': 24.13.3
+ '@types/node': 26.6.5
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -11053,13 +11197,13 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.5.26
- postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.13)(yaml@2.9.0):
+ postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.15)(yaml@2.9.0):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
jiti: 1.21.7
postcss: 8.5.26
- tsx: 4.23.13
+ tsx: 4.23.15
yaml: 2.9.0
postcss-nested@6.2.0(postcss@8.5.26):
@@ -11593,7 +11737,7 @@ snapshots:
tagged-tag@1.0.0: {}
- tailwind-config-viewer@2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.13)(yaml@2.9.0)):
+ tailwind-config-viewer@2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@koa/router': 12.0.2(supports-color@10.2.2)
commander: 6.2.1
@@ -11603,11 +11747,11 @@ snapshots:
open: 7.4.2
portfinder: 1.0.38(supports-color@10.2.2)
replace-in-file: 6.3.5
- tailwindcss: 3.4.19(tsx@4.23.13)(yaml@2.9.0)
+ tailwindcss: 3.4.19(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- supports-color
- tailwindcss@3.4.19(tsx@4.23.13)(yaml@2.9.0):
+ tailwindcss@3.4.19(tsx@4.23.15)(yaml@2.9.0):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -11626,7 +11770,7 @@ snapshots:
postcss: 8.5.26
postcss-import: 15.1.0(postcss@8.5.26)
postcss-js: 4.1.0(postcss@8.5.26)
- postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.13)(yaml@2.9.0)
+ postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.26)(tsx@4.23.15)(yaml@2.9.0)
postcss-nested: 6.2.0(postcss@8.5.26)
postcss-selector-parser: 6.1.5
resolve: 1.22.12
@@ -11749,13 +11893,7 @@ snapshots:
tsscmp@1.0.6: {}
- tsx@4.23.12:
- dependencies:
- esbuild: 0.28.2
- optionalDependencies:
- fsevents: 2.3.3
-
- tsx@4.23.13:
+ tsx@4.23.15:
dependencies:
esbuild: 0.28.2
optionalDependencies:
@@ -11832,42 +11970,42 @@ snapshots:
magic-string: 0.30.21
unplugin: 2.3.11
- unctx@3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))):
+ unctx@3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 0.30.21
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))):
+ unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 1.4.3
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))):
+ unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 1.4.3
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))):
+ unctx@3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 1.4.3
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))):
+ unctx@3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 1.4.3
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- undici-types@7.18.2: {}
+ undici-types@8.9.0: {}
undici@8.12.3: {}
@@ -11875,12 +12013,12 @@ snapshots:
dependencies:
pathe: 2.0.3
- unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
hookable: 6.1.1
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
optionalDependencies:
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
- '@rspack/core'
@@ -11901,7 +12039,7 @@ snapshots:
ohash: 2.0.11
undici: 8.12.3
- unimport@6.2.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ unimport@6.2.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
acorn: 8.16.0
escape-string-regexp: 5.0.0
@@ -11915,7 +12053,7 @@ snapshots:
scule: 1.3.0
strip-literal: 3.1.0
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
optionalDependencies:
oxc-parser: 0.141.0
@@ -11930,7 +12068,7 @@ snapshots:
- vite
- webpack
- unimport@7.0.2(acorn@8.18.0)(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ unimport@7.0.2(acorn@8.18.0)(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
@@ -11943,7 +12081,7 @@ snapshots:
scule: 1.3.0
strip-literal: 4.0.0
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
optionalDependencies:
acorn: 8.18.0
@@ -11978,7 +12116,7 @@ snapshots:
picomatch: 4.0.7
webpack-virtual-modules: 0.6.2
- unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@jridgewell/remapping': 2.3.5
picomatch: 4.0.7
@@ -11987,9 +12125,9 @@ snapshots:
esbuild: 0.28.2
rolldown: 1.2.15
rollup: 4.60.3
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@jridgewell/remapping': 2.3.5
picomatch: 4.0.7
@@ -11998,7 +12136,7 @@ snapshots:
esbuild: 0.28.2
rolldown: 1.2.15
rollup: 4.60.3
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
unrouting@0.2.3:
dependencies:
@@ -12069,23 +12207,23 @@ snapshots:
verkit@0.5.0: {}
- vite-dev-rpc@2.0.0(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ vite-dev-rpc@2.0.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
birpc: 4.0.0
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
- vite-hot-client: 2.2.0(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+ vite-hot-client: 2.2.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- vite-hot-client@2.2.0(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ vite-hot-client@2.2.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- vite-node@6.0.0(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0):
+ vite-node@6.0.0(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0):
dependencies:
cac: 7.0.0
es-module-lexer: 2.1.0
obug: 2.1.1
pathe: 2.0.3
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@types/node'
- '@vitejs/devtools'
@@ -12100,7 +12238,7 @@ snapshots:
- tsx
- yaml
- vite-plugin-checker@0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@5.9.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@5.9.3)):
+ vite-plugin-checker@0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@5.9.3)):
dependencies:
'@babel/code-frame': 7.29.7
chokidar: 5.0.0
@@ -12109,14 +12247,14 @@ snapshots:
picomatch: 4.0.7
proper-lockfile: 4.1.2
tiny-invariant: 1.3.3
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
optionalDependencies:
eslint: 10.3.0(jiti@2.7.0)(supports-color@10.2.2)
optionator: 0.9.4
typescript: 5.9.3
vue-tsc: 3.3.11(typescript@5.9.3)
- vite-plugin-inspect@11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ vite-plugin-inspect@11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
ansis: 4.3.1
error-stack-parser-es: 1.0.5
@@ -12126,22 +12264,22 @@ snapshots:
perfect-debounce: 2.1.0
sirv: 3.0.2
unplugin-utils: 0.3.2
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
- vite-dev-rpc: 2.0.0(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+ vite-dev-rpc: 2.0.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
optionalDependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- vite-plugin-vue-tracer@1.5.0(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
+ vite-plugin-vue-tracer@1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
dependencies:
estree-walker: 3.0.3
exsolve: 1.1.1
magic-string: 1.2.0
pathe: 2.0.3
source-map-js: 1.2.2
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vue: 3.5.44(typescript@5.9.3)
- vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0):
+ vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0):
dependencies:
lightningcss: 1.33.0
picomatch: 4.0.7
@@ -12149,18 +12287,18 @@ snapshots:
rolldown: 1.2.15
tinyglobby: 0.2.17
optionalDependencies:
- '@types/node': 24.13.3
+ '@types/node': 26.6.5
esbuild: 0.28.2
fsevents: 2.3.3
jiti: 2.7.0
terser: 5.46.2
- tsx: 4.23.13
+ tsx: 4.23.15
yaml: 2.9.0
- vitest@4.1.12(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)):
+ vitest@4.1.12(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.12
- '@vitest/mocker': 4.1.12(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ '@vitest/mocker': 4.1.12(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.12
'@vitest/runner': 4.1.12
'@vitest/snapshot': 4.1.12
@@ -12177,11 +12315,11 @@ snapshots:
tinyexec: 1.3.0
tinyglobby: 0.2.17
tinyrainbow: 3.1.1
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.1
- '@types/node': 24.13.3
+ '@types/node': 26.6.5
jsdom: 30.0.1(@noble/hashes@2.2.0)
transitivePeerDependencies:
- msw
@@ -12209,7 +12347,7 @@ snapshots:
'@vue/devtools-api': 6.6.4
vue: 3.5.44(typescript@5.9.3)
- vue-router@5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
+ vue-router@5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
dependencies:
'@vue-macros/common': 3.1.4(vue@3.5.44(typescript@5.9.3))
'@vue/devtools-api': 8.2.1
@@ -12225,13 +12363,13 @@ snapshots:
picomatch: 4.0.7
scule: 1.3.0
tinyglobby: 0.2.17
- unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
vue: 3.5.44(typescript@5.9.3)
optionalDependencies:
'@vue/compiler-sfc': 3.5.41
pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
- vite: 8.3.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.13)(yaml@2.9.0)
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
- '@rsbuild/core'
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 316254e2..d6c7832d 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -22,13 +22,13 @@ shamefullyHoist: false
# Le pin EST le garde-fou. Il tombera quand volar saura parler à l'API
# `unstable` — pas avant.
-# pnpm 11 asks before removing node_modules when the lockfile has moved enough
-# to invalidate it, and refuses when there is no TTY:
-# ERR_PNPM_ABORTED_REMOVE_MODULES_DIR_NO_TTY
-# GitHub Actions sets CI=true so it is unaffected, but `docker build` does not,
-# so the image builds would fail on it. Declared here rather than exported as
-# CI=true in each Dockerfile: one place, and it cannot be forgotten in a new one.
-confirmModulesPurge: false
+# No `confirmModulesPurge` any more, and do not add it back. pnpm 11 asked
+# before removing node_modules and refused without a TTY
+# (ERR_PNPM_ABORTED_REMOVE_MODULES_DIR_NO_TTY), which broke `docker build`.
+# pnpm 12 has no such prompt — it rebuilt node_modules after a hoisting change
+# with stdin closed, measured on 12.15.0 — and it REJECTS the key as "a pnpm v11
+# setting" (ERR_PNPM_UNRECOGNIZED_WORKSPACE_SETTINGS), because this repo pins
+# the pnpm that reads this file.
# ── Supply-chain hardening ───────────────────────────────────────────────────
# The npm registry has repeatedly been the delivery vehicle for compromised
@@ -112,7 +112,7 @@ overrides:
# minifie NOS propres SVG au build.
"svgo@4": "^4.1.0"
"@babel/core@7": "^7.29.6"
- "@types/node": "^24.13.3"
+ "@types/node": "^26.6.5"
"@peculiar/asn1-android": "^2.9.4"
"@peculiar/asn1-cms": "^2.9.4"
"@peculiar/asn1-csr": "^2.9.4"
diff --git a/tests/e2e/run.sh b/tests/e2e/run.sh
index fc02349e..710e6792 100755
--- a/tests/e2e/run.sh
+++ b/tests/e2e/run.sh
@@ -115,7 +115,7 @@ say "bundling the browser's crypto module for Node"
# Desktop's virtiofs lags, and worse, the host caches the negative lookup, so
# polling for the file can keep failing after it exists. A pipe has no such
# problem.
-docker run --rm -v "$ROOT":/repo -w /repo node:24-alpine \
+docker run --rm -v "$ROOT":/repo -w /repo node:26-alpine \
node_modules/.pnpm/node_modules/.bin/esbuild --bundle --platform=node \
--format=esm --target=node24 apps/web/app/utils/crypto.ts > "$HERE/crypto.mjs"
[ -s "$HERE/crypto.mjs" ] || { echo "crypto bundle is empty" >&2; exit 1; }
From 6b4ef89f7edd670c1329d5730624eed5ed18060e Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:47 +0200
Subject: [PATCH 02/44] chore(deps): drizzle-orm 0.45.4 and drizzle-kit 0.31.11
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
drizzle-orm 0.45.2 -> 0.45.4 packages/db and apps/api, kept in step
drizzle-kit 0.31.10 -> 0.31.11
0.45.4 fixes postgres-js ignoring an explicit `.prepare(name)`. Nothing here
calls it — the client prepares everything through `prepare: true` — so the
fix changes no query we send. 0.45.3 only adds a Netlify driver.
drizzle-kit 0.31.11 makes `drizzle-kit check` warn about migrations it
would skip in silence, the trap behind the hand-written 0071-0073.
Checked against a throwaway Postgres 18.6: `check:schema-parity` passes all
three checks (generate produces nothing, 79 journal entries, the chain
applies — 208 tables, 1719 columns, 589 indexes), `drizzle-kit check` is
clean, and the typecheck and API unit suite pass.
Co-Authored-By: Claude Opus 5.5
---
apps/api/package.json | 2 +-
packages/db/package.json | 4 +-
pnpm-lock.yaml | 93 +++++++++++++++++++++-------------------
3 files changed, 51 insertions(+), 48 deletions(-)
diff --git a/apps/api/package.json b/apps/api/package.json
index a068a855..dd0bd39a 100644
--- a/apps/api/package.json
+++ b/apps/api/package.json
@@ -22,7 +22,7 @@
"bencode": "^4.0.1",
"create-torrent": "^6.1.3",
"css-tree": "^3.2.1",
- "drizzle-orm": "^0.45.2",
+ "drizzle-orm": "^0.45.4",
"h3": "^1.15.11",
"ioredis": "^6.0.0",
"marked": "^18.0.9",
diff --git a/packages/db/package.json b/packages/db/package.json
index e244b2f6..1d159cc6 100644
--- a/packages/db/package.json
+++ b/packages/db/package.json
@@ -15,10 +15,10 @@
"db:baseline": "node scripts/baseline.mjs"
},
"dependencies": {
- "drizzle-orm": "^0.45.2",
+ "drizzle-orm": "^0.45.4",
"postgres": "^3.4.9"
},
"devDependencies": {
- "drizzle-kit": "^0.31.10"
+ "drizzle-kit": "^0.31.11"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 42912209..1cbc2c61 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -248,8 +248,8 @@ importers:
specifier: ^3.2.1
version: 3.2.1
drizzle-orm:
- specifier: ^0.45.2
- version: 0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)
+ specifier: ^0.45.4
+ version: 0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)
h3:
specifier: ^1.15.11
version: 1.15.11
@@ -261,7 +261,7 @@ importers:
version: 18.0.10
nitropack:
specifier: ^2.13.4
- version: 2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ version: 2.13.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nodemailer:
specifier: ^10.2.1
version: 10.2.1
@@ -322,7 +322,7 @@ importers:
version: 1.2.94
'@nuxtjs/i18n':
specifier: ^10.6.0
- version: 10.6.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@nuxtjs/tailwindcss':
specifier: 6.14.0
version: 6.14.0(magicast@0.5.5)(supports-color@10.2.2)(tsx@4.23.15)(yaml@2.9.0)
@@ -379,7 +379,7 @@ importers:
version: 0.3.7
nuxt:
specifier: ^4.6.2
- version: 4.6.2(78ce3ce95614c10964492054815ad65e)
+ version: 4.6.2(c0f3e47b19cb6936d50f731134c5a0b1)
pinia:
specifier: ^4.0.3
version: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
@@ -401,7 +401,7 @@ importers:
version: 1.2.2
'@nuxt/fonts':
specifier: ^0.14.0
- version: 0.14.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ version: 0.14.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/icon':
specifier: ^2.5.1
version: 2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
@@ -421,15 +421,15 @@ importers:
packages/db:
dependencies:
drizzle-orm:
- specifier: ^0.45.2
- version: 0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)
+ specifier: ^0.45.4
+ version: 0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)
postgres:
specifier: ^3.4.9
version: 3.4.9
devDependencies:
drizzle-kit:
- specifier: ^0.31.10
- version: 0.31.10
+ specifier: ^0.31.11
+ version: 0.31.11
packages/shared: {}
@@ -3319,12 +3319,12 @@ packages:
resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==}
engines: {node: '>=12'}
- drizzle-kit@0.31.10:
- resolution: {integrity: sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw==}
+ drizzle-kit@0.31.11:
+ resolution: {integrity: sha512-YCYqxTLIB2OCqf6w9/Vef13baBVbwQIPcbT4Y56AfO6B9ajZhDhD8Jkveg/hJvT/iuMloKD/IYYkyMMNhr7Kqg==}
hasBin: true
- drizzle-orm@0.45.2:
- resolution: {integrity: sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==}
+ drizzle-orm@0.45.4:
+ resolution: {integrity: sha512-NiM1YZpJ2UxyeE67DpDDZ+Tsw4YLX3trSlkNT7Tm9eKoUNb1LvaAaQzXgYQsWs+AQ9TUmmwMmBOCXuqqxUWKKQ==}
peerDependencies:
'@aws-sdk/client-rds-data': '>=3'
'@cloudflare/workers-types': '>=4'
@@ -3332,6 +3332,7 @@ packages:
'@libsql/client': '>=0.10.0'
'@libsql/client-wasm': '>=0.10.0'
'@neondatabase/serverless': '>=0.10.0'
+ '@netlify/db': '>=0.4.0'
'@op-engineering/op-sqlite': '>=2'
'@opentelemetry/api': ^1.4.1
'@planetscale/database': '>=1.13'
@@ -3368,6 +3369,8 @@ packages:
optional: true
'@neondatabase/serverless':
optional: true
+ '@netlify/db':
+ optional: true
'@op-engineering/op-sqlite':
optional: true
'@opentelemetry/api':
@@ -6963,7 +6966,7 @@ snapshots:
pkg-types: 2.4.0
semver: 7.8.5
- '@nuxt/devtools@3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxt/devtools@3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/devtools-wizard': 3.4.4
@@ -6993,7 +6996,7 @@ snapshots:
structured-clone-es: 2.0.1
tinyexec: 1.3.1
tinyglobby: 0.2.17
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vite-plugin-inspect: 11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
vite-plugin-vue-tracer: 1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
@@ -7033,13 +7036,13 @@ snapshots:
- utf-8-validate
- vue
- '@nuxt/fonts@0.14.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/fonts@0.14.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@nuxt/devtools-kit': 3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
consola: 3.4.2
defu: 6.1.7
- fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
h3: 1.15.11
magic-regexp: 0.10.0
ofetch: 1.5.1
@@ -7049,7 +7052,7 @@ snapshots:
ufo: 1.6.4
unifont: 0.7.5
unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -7290,7 +7293,7 @@ snapshots:
- magic-string
- unplugin
- '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
@@ -7307,9 +7310,9 @@ snapshots:
klona: 2.0.6
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- nitropack: 2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ nitropack: 2.13.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nostics: 1.3.0
- nuxt: 4.6.2(78ce3ce95614c10964492054815ad65e)
+ nuxt: 4.6.2(c0f3e47b19cb6936d50f731134c5a0b1)
ohash: 2.0.12
pathe: 2.0.3
radix3: 1.1.2
@@ -7318,7 +7321,7 @@ snapshots:
ufo: 1.6.4
unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
unrouting: 0.2.3
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
vue: 3.5.44(typescript@5.9.3)
vue-bundle-renderer: 2.4.0
vue-devtools-stub: 0.1.0
@@ -7397,7 +7400,7 @@ snapshots:
rc9: 3.0.1
std-env: 4.2.0
- '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)':
+ '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)':
dependencies:
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@vitejs/plugin-vue': 6.0.10(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
@@ -7415,7 +7418,7 @@ snapshots:
knitwork: 1.3.0
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- nuxt: 4.6.2(78ce3ce95614c10964492054815ad65e)
+ nuxt: 4.6.2(c0f3e47b19cb6936d50f731134c5a0b1)
pathe: 2.0.3
pkg-types: 2.4.0
postcss: 8.5.26
@@ -7470,7 +7473,7 @@ snapshots:
- webpack
- yaml
- '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
clickable-path: 0.1.1
@@ -7478,7 +7481,7 @@ snapshots:
exsolve: 1.1.3
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- nuxt: 4.6.2(78ce3ce95614c10964492054815ad65e)
+ nuxt: 4.6.2(c0f3e47b19cb6936d50f731134c5a0b1)
pathe: 2.0.3
rou3: 0.9.2
srvx: 1.0.5
@@ -7497,7 +7500,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxtjs/i18n@10.6.0(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxtjs/i18n@10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@intlify/core': 11.4.8
'@intlify/h3': 0.7.4
@@ -7525,7 +7528,7 @@ snapshots:
unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unrouting: 0.2.3
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
transitivePeerDependencies:
@@ -9365,9 +9368,9 @@ snapshots:
dateformat@4.6.3: {}
- db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)):
+ db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)):
optionalDependencies:
- drizzle-orm: 0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)
+ drizzle-orm: 0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)
debug@3.2.7(supports-color@10.2.2):
dependencies:
@@ -9438,14 +9441,14 @@ snapshots:
dotenv@17.4.2: {}
- drizzle-kit@0.31.10:
+ drizzle-kit@0.31.11:
dependencies:
'@drizzle-team/brocli': 0.10.2
'@esbuild-kit/esm-loader': 2.6.5
esbuild: 0.28.2
tsx: 4.23.15
- drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9):
+ drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9):
optionalDependencies:
'@opentelemetry/api': 1.9.1
postgres: 3.4.9
@@ -9759,7 +9762,7 @@ snapshots:
dependencies:
tiny-inflate: 1.0.3
- fontless@0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ fontless@0.2.1(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
consola: 3.4.2
css-tree: 3.2.1
@@ -9773,7 +9776,7 @@ snapshots:
pathe: 2.0.3
ufo: 1.6.4
unifont: 0.7.5
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
@@ -10584,7 +10587,7 @@ snapshots:
negotiator@0.6.3: {}
- nitropack@2.13.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ nitropack@2.13.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@cloudflare/kv-asset-handler': 0.4.2
'@rollup/plugin-alias': 6.0.0(rollup@4.60.3)
@@ -10605,7 +10608,7 @@ snapshots:
cookie-es: 2.0.1
croner: 10.0.1
crossws: 0.3.5
- db0: 0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))
+ db0: 0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))
defu: 6.1.7
destr: 2.0.5
dot-prop: 10.1.0
@@ -10651,7 +10654,7 @@ snapshots:
unenv: 2.0.0-rc.24
unimport: 6.2.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.1
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
untyped: 2.0.0
unwasm: 0.5.3
youch: 4.1.1
@@ -10741,19 +10744,19 @@ snapshots:
nuxt-define@1.0.0: {}
- nuxt@4.6.2(78ce3ce95614c10964492054815ad65e):
+ nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1):
dependencies:
'@dxup/nuxt': 0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@jridgewell/trace-mapping': 0.3.31
'@nuxt/cli': 4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/devalue': 2.0.2
- '@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/schema': 4.6.2
'@nuxt/telemetry': 2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))
- '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)
- '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(78ce3ce95614c10964492054815ad65e))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)
+ '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@vue/shared': 3.5.44
chokidar: 5.0.0
@@ -12143,7 +12146,7 @@ snapshots:
escape-string-regexp: 5.0.0
ufo: 1.6.4
- unstorage@1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2)):
+ unstorage@1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2)):
dependencies:
anymatch: 3.1.3
chokidar: 5.0.0
@@ -12154,7 +12157,7 @@ snapshots:
ofetch: 1.5.1
ufo: 1.6.4
optionalDependencies:
- db0: 0.3.4(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(postgres@3.4.9))
+ db0: 0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))
ioredis: 5.10.1(supports-color@10.2.2)
untun@0.1.3:
From 55372cebf2949b70701aa507c87d64498cc85999 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:47 +0200
Subject: [PATCH 03/44] chore(deps): @simplewebauthn/server 14, vitest 5 and
@prometheus-io/client in the API
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@simplewebauthn/server 13.3.3 -> 14.0.3
prom-client 15.1.3 -> @prometheus-io/client 0.16.1
vitest 4.1.12 -> 5.0.5
nitropack 2.13.4 -> 2.13.5
marked 18.0.10 -> 18.1.1
pino 10.3.1 -> 10.4.0
pino-pretty 13.1.3 -> 13.2.0
zod 4.6.6 -> 4.6.7
uuid 14.0.2 -> 14.0.3
@iconify/utils 3.1.4 -> 3.1.7
@simplewebauthn/server 14's one breaking change is a Node 22 floor. 14.0.2
is a security release (GHSA-2g3p-m8c9-hhwh, GHSA-j3h4-m3m2-7p7j: CRLs are
now only trusted when they chain to an RP-chosen anchor). 14.0 also puts
ML-DSA-44 first in the default algorithm list; we pass no list, so
registration offers it, and an authenticator that does not know it picks
the next one.
prom-client is deprecated in favour of @prometheus-io/client — the same
code, now a Prometheus subproject. The switch had been put off on
2026-09-02 because 0.16.1 was six days old; utils/metrics.ts is the only
caller and only the import moves. Its 0.16 breaking changes (MetricType as
a string union, AggregatorRegistry renamed, cluster IPC renamed) touch
nothing here; it adds nodejs_eventloop_utilization_{summary,histogram} to
the default metrics, and doc/reference/metrics.md says so.
vitest 5: the API config already sets `clearMocks: true` (now the default),
and every vi.mock / vi.hoisted call is at module level, where 5.0 still
allows it.
h3 stays on 1.15.11: npm's latest is 2.x, but nitropack 2.13.5 depends on
h3 ^1.15.11, and the Nitro that speaks h3 2 is still a beta (3.0.x-beta).
Measured: typecheck, 586 unit tests, and the integration suite — 32 files,
471 tests, including the 7 S3 tests — against Postgres 18.6, Redis 8.10.2
and RustFS 1.0.3.
Co-Authored-By: Claude Opus 5.5
---
apps/api/package.json | 20 +-
apps/api/utils/metrics.ts | 37 +-
doc/reference/metrics.md | 2 +-
pnpm-lock.yaml | 1289 +++++++++++++++++++++----------------
4 files changed, 765 insertions(+), 583 deletions(-)
diff --git a/apps/api/package.json b/apps/api/package.json
index dd0bd39a..69ebae91 100644
--- a/apps/api/package.json
+++ b/apps/api/package.json
@@ -15,8 +15,9 @@
},
"dependencies": {
"@iconify-json/ph": "^1.2.2",
- "@iconify/utils": "^3.1.4",
- "@simplewebauthn/server": "^13.3.3",
+ "@iconify/utils": "^3.1.7",
+ "@prometheus-io/client": "^0.16.1",
+ "@simplewebauthn/server": "^14.0.3",
"@trackarr/db": "workspace:*",
"@trackarr/shared": "workspace:*",
"bencode": "^4.0.1",
@@ -25,17 +26,16 @@
"drizzle-orm": "^0.45.4",
"h3": "^1.15.11",
"ioredis": "^6.0.0",
- "marked": "^18.0.9",
- "nitropack": "^2.13.4",
+ "marked": "^18.1.1",
+ "nitropack": "^2.13.5",
"nodemailer": "^10.2.1",
"otplib": "^13.4.1",
"parse-torrent": "^11.0.24",
- "pino": "^10.3.1",
- "prom-client": "^15.1.3",
+ "pino": "^10.4.0",
"qrcode": "^1.5.4",
- "uuid": "^14.0.1",
+ "uuid": "^14.0.3",
"web-push": "^3.6.7",
- "zod": "^4.6.6"
+ "zod": "^4.6.7"
},
"devDependencies": {
"@types/bencode": "^4.0.0",
@@ -44,7 +44,7 @@
"@types/parse-torrent": "^11.0.1",
"@types/qrcode": "^1.5.6",
"@types/web-push": "^3.6.4",
- "pino-pretty": "^13.1.3",
- "vitest": "^4.1.12"
+ "pino-pretty": "^13.2.0",
+ "vitest": "^5.0.5"
}
}
diff --git a/apps/api/utils/metrics.ts b/apps/api/utils/metrics.ts
index fb8b6d1e..fc7b0fc5 100644
--- a/apps/api/utils/metrics.ts
+++ b/apps/api/utils/metrics.ts
@@ -13,29 +13,32 @@
* keyspace.
*/
/*
- * `prom-client` est marqué déprécié (« replaced by @prometheus-io/client »).
- * On y reste, délibérément, et voici les chiffres qui portent ce choix — pris
- * le 2026-09-02 :
+ * `@prometheus-io/client`, et non plus `prom-client` : c'est le même code,
+ * devenu sous-projet de Prometheus en août 2026 (même auteur, Simon Nyberg) et
+ * renommé au passage. `prom-client` est marqué « replaced by
+ * @prometheus-io/client » et ne recevra plus rien.
*
- * - `prom-client@15.1.3` n'a AUCUNE alerte de sécurité (audit npm en masse
- * sur les 1101 paquets du verrou : 0). Déprécié n'est pas vulnérable.
- * - `@prometheus-io/client` en est à `0.16.1`, avec quatre versions publiées
- * en tout, la première non-alpha le 2026-08-24. Le dépôt s'impose
- * `minimumReleaseAge: 1440` justement pour ne pas dépendre du frais ; un
- * 0.x de six jours est très en dessous de cette barre.
- * - Il ajoute une dépendance d'exécution, `@opentelemetry/api`.
+ * La bascule avait été repoussée le 2026-09-02 : la 0.16.1 avait six jours,
+ * très en dessous de la barre que pose `minimumReleaseAge`. Faite le
+ * 2026-10-24, sur la même 0.16.1, et voici ce que la 0.16 change pour nous :
*
- * La surface à migrer est pourtant minuscule — ce fichier est le seul
- * appelant, et il n'utilise que les quatre symboles ci-dessous. Le jour où le
- * successeur atteint une majeure stable, la bascule tient en un import.
- * D'ici là, changer de bibliothèque de métriques ne corrigerait rien.
+ * - le nom du paquet — ce fichier est le seul appelant, d'où un seul import ;
+ * - Node 22 minimum — nous tournons en 26 ;
+ * - `MetricType` devient une union de chaînes, `AggregatorRegistry` s'appelle
+ * `ClusterRegistry` et les messages IPC du mode cluster sont renommés :
+ * rien de cela n'est utilisé ici ;
+ * - deux métriques par défaut de plus, `trackarr_nodejs_eventloop_utilization_*`.
+ *
+ * À surveiller à la version suivante : une jauge ne démarrera plus à zéro.
+ * Toutes celles-ci sont posées à chaque collecte, sauf quand leur requête
+ * échoue — elles seraient alors absentes d'un premier scrape au lieu de valoir 0.
*/
import {
Registry,
Gauge,
collectDefaultMetrics,
type MetricObjectWithValues,
-} from 'prom-client';
+} from '@prometheus-io/client';
import { db, schema } from '@trackarr/db';
import { recordStore } from './federation/storeCounts';
import { sql, eq, isNull, and, or, gt, ne, lte } from 'drizzle-orm';
@@ -54,10 +57,10 @@ export const registry = new Registry();
collectDefaultMetrics({ register: registry, prefix: 'trackarr_' });
// `Gauge` config takes `registers: Registry[]`; `register` (singular) is
-// silently ignored, which would route every gauge to prom-client's default
+// silently ignored, which would route every gauge to the library's default
// global registry instead of our custom one. Spent an embarrassing amount
// of time staring at /metrics wondering where my counts went.
-// Typed rather than `as const`: prom-client's configs declare
+// Typed rather than `as const`: the library's configs declare
// `registers: Registry[]`, and a readonly tuple is not assignable to a
// mutable array — that single `as const` produced 55 of the API's type
// errors, one per metric spread.
diff --git a/doc/reference/metrics.md b/doc/reference/metrics.md
index d69186a0..90d4e850 100644
--- a/doc/reference/metrics.md
+++ b/doc/reference/metrics.md
@@ -161,7 +161,7 @@ The contributory pool: members fund a shared pot until the target is hit, then a
### Default Node.js metrics
-`prom-client`'s default collector ships under the `trackarr_` prefix: CPU, heap usage, event-loop lag, GC pauses, etc. (Useful when you want to alert on Node-side trouble.)
+The default collector of `@prometheus-io/client` (the Prometheus project's successor to `prom-client`) ships under the `trackarr_` prefix: CPU, heap usage, event-loop lag and utilisation, GC pauses, etc. (Useful when you want to alert on Node-side trouble.)
## Example dashboard queries
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1cbc2c61..af8aeb65 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -227,11 +227,14 @@ importers:
specifier: ^1.2.2
version: 1.2.2
'@iconify/utils':
- specifier: ^3.1.4
- version: 3.1.4
+ specifier: ^3.1.7
+ version: 3.1.7
+ '@prometheus-io/client':
+ specifier: ^0.16.1
+ version: 0.16.1
'@simplewebauthn/server':
- specifier: ^13.3.3
- version: 13.3.3
+ specifier: ^14.0.3
+ version: 14.0.3
'@trackarr/db':
specifier: workspace:*
version: link:../../packages/db
@@ -257,11 +260,11 @@ importers:
specifier: ^6.0.0
version: 6.0.0(supports-color@10.2.2)
marked:
- specifier: ^18.0.9
- version: 18.0.10
+ specifier: ^18.1.1
+ version: 18.1.1
nitropack:
- specifier: ^2.13.4
- version: 2.13.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ specifier: ^2.13.5
+ version: 2.13.5(@parcel/watcher@2.5.6)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(srvx@1.0.6)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nodemailer:
specifier: ^10.2.1
version: 10.2.1
@@ -272,22 +275,19 @@ importers:
specifier: ^11.0.24
version: 11.0.24
pino:
- specifier: ^10.3.1
- version: 10.3.1
- prom-client:
- specifier: ^15.1.3
- version: 15.1.3
+ specifier: ^10.4.0
+ version: 10.4.0
qrcode:
specifier: ^1.5.4
version: 1.5.4
uuid:
- specifier: ^14.0.1
- version: 14.0.2
+ specifier: ^14.0.3
+ version: 14.0.3
web-push:
specifier: ^3.6.7
version: 3.6.7(supports-color@10.2.2)
zod:
- specifier: ^4.6.6
+ specifier: ^4.6.7
version: 4.6.7
devDependencies:
'@types/bencode':
@@ -309,11 +309,11 @@ importers:
specifier: ^3.6.4
version: 3.6.4
pino-pretty:
- specifier: ^13.1.3
- version: 13.1.3
+ specifier: ^13.2.0
+ version: 13.2.0
vitest:
- specifier: ^4.1.12
- version: 4.1.12(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ specifier: ^5.0.5
+ version: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
apps/web:
dependencies:
@@ -322,13 +322,13 @@ importers:
version: 1.2.94
'@nuxtjs/i18n':
specifier: ^10.6.0
- version: 10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@nuxtjs/tailwindcss':
specifier: 6.14.0
version: 6.14.0(magicast@0.5.5)(supports-color@10.2.2)(tsx@4.23.15)(yaml@2.9.0)
'@pinia/nuxt':
specifier: 1.0.2
- version: 1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ version: 1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@simplewebauthn/browser':
specifier: ^13.3.0
version: 13.3.0
@@ -379,7 +379,7 @@ importers:
version: 0.3.7
nuxt:
specifier: ^4.6.2
- version: 4.6.2(c0f3e47b19cb6936d50f731134c5a0b1)
+ version: 4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a)
pinia:
specifier: ^4.0.3
version: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
@@ -394,17 +394,17 @@ importers:
version: 5.3.4(chart.js@4.5.1)(vue@3.5.44(typescript@5.9.3))
vue-router:
specifier: ^5.4.0
- version: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
devDependencies:
'@iconify-json/ph':
specifier: ^1.2.2
version: 1.2.2
'@nuxt/fonts':
specifier: ^0.14.0
- version: 0.14.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ version: 0.14.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.11.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/icon':
specifier: ^2.5.1
- version: 2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@types/turndown':
specifier: ^5.0.6
version: 5.0.6
@@ -439,8 +439,8 @@ packages:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
- '@antfu/install-pkg@1.1.0':
- resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
+ '@antfu/install-pkg@2.1.0':
+ resolution: {integrity: sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==}
'@asamuzakjp/css-color@6.0.7':
resolution: {integrity: sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==}
@@ -516,10 +516,6 @@ packages:
resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==}
engines: {node: '>=6.9.0'}
- '@babel/helper-string-parser@7.27.1':
- resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-string-parser@7.29.7':
resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
engines: {node: '>=6.9.0'}
@@ -528,10 +524,6 @@ packages:
resolution: {integrity: sha512-+6HYEBnsDRZHJtUTAEfMQd0zMDqdFHS7C+5vAsEZqBUr3vEMWOWlHJ0Jz1gS8jJIlCvLsuA6ivmeoqzH936YcA==}
engines: {node: ^22.18.0 || >=24.11.0}
- '@babel/helper-validator-identifier@7.28.5':
- resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-validator-identifier@7.29.7':
resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
engines: {node: '>=6.9.0'}
@@ -548,11 +540,6 @@ packages:
resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.29.3':
- resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
'@babel/parser@7.29.8':
resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==}
engines: {node: '>=6.0.0'}
@@ -594,10 +581,6 @@ packages:
resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.29.0':
- resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
- engines: {node: '>=6.9.0'}
-
'@babel/types@7.29.8':
resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==}
engines: {node: '>=6.9.0'}
@@ -942,8 +925,8 @@ packages:
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
- '@iconify/utils@3.1.4':
- resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==}
+ '@iconify/utils@3.1.7':
+ resolution: {integrity: sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==}
'@iconify/vue@5.0.1':
resolution: {integrity: sha512-aumwwooJlFJ5H5qYWB6ZTAyM0C8hpfcSVLB9/a3qnH1GGvIJ+FEbpEs4s/HfErYe/M5qZeLjwmESR5fFm3lXEw==}
@@ -1028,8 +1011,8 @@ packages:
vue-i18n:
optional: true
- '@ioredis/commands@1.5.1':
- resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==}
+ '@ioredis/commands@1.10.0':
+ resolution: {integrity: sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q==}
'@ioredis/commands@2.0.0':
resolution: {integrity: sha512-vrx0AE/T0h7cRZwfo1M39Cr+ZhZrkf0V8mQN75wucKCxCLD9l/VX6no3gFvrLqD1IlG/1LtzWovqEw3t0Vr9zg==}
@@ -1088,6 +1071,13 @@ packages:
peerDependencies:
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
+ '@napi-rs/lzma-linux-x64-gnu@1.5.1':
+ resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==}
+ engines: {node: ^22.20 || ^24.12 || >=25}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
'@napi-rs/wasm-runtime@1.2.3':
resolution: {integrity: sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==}
engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0}
@@ -1653,6 +1643,10 @@ packages:
resolution: {integrity: sha512-SYHm4SoWSI0nRCoos6jpGusIqhPH9bbGBqv7ohlZ+H6BunrDzzQPk2ePgDuEUzV82OdvbLgtW4twUDwhU9P3YQ==}
engines: {node: '>=14'}
+ '@peculiar/asn1-asym-key@2.11.0':
+ resolution: {integrity: sha512-r2957WdSZle/Zt4t9og7OMQYXNJ9/3ANXVtFwLCDJuHORlBZ4AFmDt1Qee0CzyTbHQg4ZZApBGEz5/6cFsyCRg==}
+ engines: {node: '>=14'}
+
'@peculiar/asn1-cms@2.9.4':
resolution: {integrity: sha512-cben7oxmQsUGZqotus7yt0srYdncOT6RNWcTQ77T2RFOXejYVYkXadrfePdRcrVpO9K95IRLKKglG2k38jKXuw==}
engines: {node: '>=14'}
@@ -1689,6 +1683,10 @@ packages:
resolution: {integrity: sha512-ehQXbpQaQYycgu8OrvigwSPTFfVRcu0ECNYCWw+yzBp02Lw5paRqzzhUpfOgO2K38+WfFZuEz/0RPtam5g0OMg==}
engines: {node: '>=14'}
+ '@peculiar/asn1-x509-post-quantum@2.11.0':
+ resolution: {integrity: sha512-K6EnquTX3xJ2G+uLPFH0jVkh7W8y6eTzoCxvSoXAj0sWS5uvVB2PEvpBPdzY4+ytaedUM3x9ZVgX0AZKb316ew==}
+ engines: {node: '>=14'}
+
'@peculiar/asn1-x509@2.9.4':
resolution: {integrity: sha512-CxhBo/RdEbMMob7T31ZdQjGuoyRFLVwrDzTn25bihzBasRg9kRm/0IxIPvhgQtcK/9dNcO1XQL2fuPugwELL0Q==}
engines: {node: '>=14'}
@@ -1696,8 +1694,8 @@ packages:
'@peculiar/utils@2.0.3':
resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==}
- '@peculiar/x509@1.14.3':
- resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==}
+ '@peculiar/x509@2.2.0':
+ resolution: {integrity: sha512-adpW58ySPQMOUPv8pTKT3RIyCFqfUFt8X05ukPdtkQToXDVr8dMtxuenik1yx8tNFTbpApWsM/Hi5SzlIx48+Q==}
engines: {node: '>=20.0.0'}
'@pinia/nuxt@1.0.2':
@@ -1724,6 +1722,10 @@ packages:
'@poppinss/exception@1.2.3':
resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==}
+ '@prometheus-io/client@0.16.1':
+ resolution: {integrity: sha512-XkFPsGFGoSs/UMg/vh0QLDpanl/tsrOV5PLHdpGe8Ho+ir/Llhytr15j6y8ZwLrpIGzK9gTVVpIalA6C4UjUZw==}
+ engines: {node: ^22 || ^24 || >=26}
+
'@rolldown/binding-android-arm-eabi@1.2.15':
resolution: {integrity: sha512-aLcgK9gIJ3YRvrrtfSBbRa27F5WrpiTaPulnFpsHPxpUHgFlSgnU4854MHwoRGEBhfRJDWCS2WQ7lIjskE9Olw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -1832,8 +1834,8 @@ packages:
rollup:
optional: true
- '@rollup/plugin-commonjs@29.0.2':
- resolution: {integrity: sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg==}
+ '@rollup/plugin-commonjs@29.0.3':
+ resolution: {integrity: sha512-ZaOxZceP7SOUW7Lqw5IRVweSQYWaeIPnXIGLiB690EBA3FGJTO40EEr2L5yZplJWsgTCogILRSpcAe7+U0Otdg==}
engines: {node: '>=16.0.0 || 14 >= 14.17'}
peerDependencies:
rollup: ^2.68.0||^3.0.0||^4.0.0
@@ -1904,141 +1906,141 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.60.3':
- resolution: {integrity: sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==}
+ '@rollup/rollup-android-arm-eabi@4.65.0':
+ resolution: {integrity: sha512-t2AnVba25baFdq7gczzS13JyVcdubLVbFX1X04mxrggDrTQPUXNv3XM0k9H1hr5tqvg7AVvtQ720QHAj0iYqhg==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.60.3':
- resolution: {integrity: sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==}
+ '@rollup/rollup-android-arm64@4.65.0':
+ resolution: {integrity: sha512-dNONUaEwPGhl/nuO2KV8VABWlcjYyU6KtZGN8dQv5OS5JU7JSCxPijVNKXbRJd0iuTzTiJ4TjPt/4bbvDRNiMQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.60.3':
- resolution: {integrity: sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==}
+ '@rollup/rollup-darwin-arm64@4.65.0':
+ resolution: {integrity: sha512-zWQqUH+9zavr2Bxuzfpuv2SIF3X31cr58TvSQC9o1GhpOvkqRwr60GkZdQcudyT/BEgdpdSafjgd2I13MbTL7g==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.60.3':
- resolution: {integrity: sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==}
+ '@rollup/rollup-darwin-x64@4.65.0':
+ resolution: {integrity: sha512-RQYreBFWtO4//hIuOaZkYUnF/lPU4lz35dveDimDshWCJvVisVtJ/shmT9bkXK8wFJY+FJF89X6F3Cq1qI3LCw==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.60.3':
- resolution: {integrity: sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==}
+ '@rollup/rollup-freebsd-arm64@4.65.0':
+ resolution: {integrity: sha512-A0NfMj6Cuh/9BE5k3awJKv6HoxFVXIcLAb6SZqAMoxUHPA1ZNNK4RsGuUPD/vL7nEAm9LG+ZzXWWTrnC0XtkpA==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.60.3':
- resolution: {integrity: sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==}
+ '@rollup/rollup-freebsd-x64@4.65.0':
+ resolution: {integrity: sha512-BI6/H7q3aP0I7S7GOrjyxTjgEJlSnovXE38+bdxBpuKN6z+d//uF+T+VQ3Q7ltJL/71p17ufartARX9Ja5gOGQ==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.60.3':
- resolution: {integrity: sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.65.0':
+ resolution: {integrity: sha512-W1vUprf09RWaVWnsFP1vlUkEWJzTZlpObOEAYZXt9Fq0UVAOYEkeGr7wBX7McKqqIQskXdBnpiOMgwPujordgA==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm-musleabihf@4.60.3':
- resolution: {integrity: sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==}
+ '@rollup/rollup-linux-arm-musleabihf@4.65.0':
+ resolution: {integrity: sha512-s8QTcZWgrl9haFzEGIqyE5BWyo89pFDGLMBFZ752WYxk8DJwNU/O1X6pZgPw829d9/sm6CCHyrMP3aurt76p1Q==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-arm64-gnu@4.60.3':
- resolution: {integrity: sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==}
+ '@rollup/rollup-linux-arm64-gnu@4.65.0':
+ resolution: {integrity: sha512-ke1f6dLRzkqveyjjF2fkEwQYZvxHtNNwjegY8nJrwcO0Bdqr8CzFO/pKE0Bns13cx0qz2Ba2Y0Hs3dSwMdnHxA==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm64-musl@4.60.3':
- resolution: {integrity: sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==}
+ '@rollup/rollup-linux-arm64-musl@4.65.0':
+ resolution: {integrity: sha512-926SMeUcy4y18Rz/w2aJiUKOnyAnm6czg72bXkQEaeemsll+Wr0hnsjb2BGRpHvWgwAMYy5ACJCotbvfLCfj0A==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-loong64-gnu@4.60.3':
- resolution: {integrity: sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==}
+ '@rollup/rollup-linux-loong64-gnu@4.65.0':
+ resolution: {integrity: sha512-6T7JNRP1hc4hqF2dUsEoVLOt9K8tmODoCLldtQRYnrddGGQY8Gqe2pM/qMMUo7EMowpP7oa2N95k0/8sYK/ipw==}
cpu: [loong64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-loong64-musl@4.60.3':
- resolution: {integrity: sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==}
+ '@rollup/rollup-linux-loong64-musl@4.65.0':
+ resolution: {integrity: sha512-SImGFl1Je5kpyAgOCPONVT7h6ASV8mAUwGRjY7eZvVjPg//PfHOXgI+P241RF/+HqsA4PP3qD527ysWFKNQyhQ==}
cpu: [loong64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-ppc64-gnu@4.60.3':
- resolution: {integrity: sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==}
+ '@rollup/rollup-linux-ppc64-gnu@4.65.0':
+ resolution: {integrity: sha512-XeDTbmPF1Yu5asfXGPrMkWoxTDhgryQbmw5Q1+R582O51VNCk23J6f2pDrsAp5YkneBVBwtExx6ZGOb9D2aQ6A==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-ppc64-musl@4.60.3':
- resolution: {integrity: sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==}
+ '@rollup/rollup-linux-ppc64-musl@4.65.0':
+ resolution: {integrity: sha512-VS55JUI/1nsljmV/jfqNkLZXFw8uMO8nNlfoHmSevNf6fO3neuhyDvx9dv3c/Ytt8r/431SL8Qax1dpYvOMZTg==}
cpu: [ppc64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-riscv64-gnu@4.60.3':
- resolution: {integrity: sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==}
+ '@rollup/rollup-linux-riscv64-gnu@4.65.0':
+ resolution: {integrity: sha512-Vblw84TbX7RS4la1Y4+yQ7aore/oSyaNtFbppuBr5Vs/4LfBeXKq9dIfoExw6zOvRERqd2rRAjnZRaMhH/0x5w==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-riscv64-musl@4.60.3':
- resolution: {integrity: sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==}
+ '@rollup/rollup-linux-riscv64-musl@4.65.0':
+ resolution: {integrity: sha512-7+gHjtONvKgwR9InTKFaLq53f6YzBJkgeMRBENdWTsQr+spahGqQm8HF5aXpq8i4JaRrOqYyv6Zn1WltDTxaZQ==}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-s390x-gnu@4.60.3':
- resolution: {integrity: sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==}
+ '@rollup/rollup-linux-s390x-gnu@4.65.0':
+ resolution: {integrity: sha512-KvNDC0J6s4vVHhtJ6KrDXU0Er0au/hmRIBq/+1maCV8TseGupeKizq0bWcrbp2HE1T8xoknvN0Q/KZ/YF0qX3w==}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-gnu@4.60.3':
- resolution: {integrity: sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==}
+ '@rollup/rollup-linux-x64-gnu@4.65.0':
+ resolution: {integrity: sha512-GExdD15WPvu/x/drELjVam7vX8EsPgvTMOa/iJL/p/4m/oOqzbb7JXZg8fXR4hlXtg/sF2zyTZ3bR0AEtEMlhQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-musl@4.60.3':
- resolution: {integrity: sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==}
+ '@rollup/rollup-linux-x64-musl@4.65.0':
+ resolution: {integrity: sha512-8sT9PemIZfIMED4Vd4KGoOXVDj5CMSWNcGdbheRUx9TYS03yOWdT2Q0lXPyEyNBB9YTilwewIQKNIBk6Nxi0Kg==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rollup/rollup-openbsd-x64@4.60.3':
- resolution: {integrity: sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==}
+ '@rollup/rollup-openbsd-x64@4.65.0':
+ resolution: {integrity: sha512-pO6Ehi0jo5yE0R6PltKhJhv9mlIiyzBJk5N5NUF2OF6xtVKI+1bdXxj/rb0jGXy3hck1ELVT0QPY3tzkAm360w==}
cpu: [x64]
os: [openbsd]
- '@rollup/rollup-openharmony-arm64@4.60.3':
- resolution: {integrity: sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==}
+ '@rollup/rollup-openharmony-arm64@4.65.0':
+ resolution: {integrity: sha512-vo7N3/+cjjPDYr8vtxC+qSNgWa9sDvJ7g8N8R5SWqFY4WiNH1ULcAU70SKVyHeiIZOYYwNP9pTipmhN5sl1NPw==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.60.3':
- resolution: {integrity: sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==}
+ '@rollup/rollup-win32-arm64-msvc@4.65.0':
+ resolution: {integrity: sha512-ArwvgFAbjKcDM7qqotZ4OVYf+UMT9xH2YzkCzK4+AuZSDihMlz1Ekoe4INwBVXzn2mnJzuIYOcSx07iTBijGRQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.60.3':
- resolution: {integrity: sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==}
+ '@rollup/rollup-win32-ia32-msvc@4.65.0':
+ resolution: {integrity: sha512-QGMmK4/cxKE/36FoLMSHQBCyymv/eFTnsCvvsBF0rgmOvVbvX78VWZRerL3dHa77f4pM6Xcc2iGDhJ10w/svKQ==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.60.3':
- resolution: {integrity: sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==}
+ '@rollup/rollup-win32-x64-gnu@4.65.0':
+ resolution: {integrity: sha512-XfKYFWHIPs4HPODIMsGF1IKlS3H1e3WokUZIgpmn4+uNnZBlnRDDHEylNyazbQXwhMKZre68OjtRYbKqb5+j8w==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.60.3':
- resolution: {integrity: sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==}
+ '@rollup/rollup-win32-x64-msvc@4.65.0':
+ resolution: {integrity: sha512-wPWi++K4Bs1VR4XihOhfGi4IGX6Cub7FlerTf8X2v+2BtDHddgSqWCXwGD+h2yAe4/niIhNDwAltioOC+wEogQ==}
cpu: [x64]
os: [win32]
@@ -2048,8 +2050,8 @@ packages:
'@simplewebauthn/browser@13.3.0':
resolution: {integrity: sha512-BE/UWv6FOToAdVk0EokzkqQQDOWtNydYlY6+OrmiZ5SCNmb41VehttboTetUM3T/fr6EAFYVXjz4My2wg230rQ==}
- '@simplewebauthn/server@13.3.3':
- resolution: {integrity: sha512-LelX/lcy5cjc15A86i/aNxHhB5eU7dd20QsbP0VLAf9e38+SLlsnqCCyecx3xqfGofhmX05h1J9fKRYWxw+luA==}
+ '@simplewebauthn/server@14.0.3':
+ resolution: {integrity: sha512-D39/0fiDiYmGV+nraY9s63D1Ho2AX/waMLy22/9gUadTUuvbAnstfb4bpbHYbwZuV5ZLDYN1SmzDKuiHzKAA4Q==}
engines: {node: '>=20.0.0'}
'@sindresorhus/is@7.2.0':
@@ -2264,9 +2266,6 @@ packages:
'@types/esrecurse@4.3.1':
resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==}
- '@types/estree@1.0.8':
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
-
'@types/estree@1.0.9':
resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
@@ -2495,8 +2494,8 @@ packages:
webpack:
optional: true
- '@vercel/nft@1.5.0':
- resolution: {integrity: sha512-IWTDeIoWhQ7ZtRO/JRKH+jhmeQvZYhtGPmzw/QGDY+wDCQqfm25P9yIdoAFagu4fWsK4IwZXDFIjrmp5rRm/sA==}
+ '@vercel/nft@1.11.0':
+ resolution: {integrity: sha512-m1QFg+U+3yPOnP1xSYJ73UIRxLOXdts1JOhiOiyPYqEsALgrXFFINvgUaD6R6iNvaBFAjHllBCbkfx4FuOdpaA==}
engines: {node: '>=20'}
hasBin: true
@@ -2528,6 +2527,17 @@ packages:
vite:
optional: true
+ '@vitest/mocker@5.0.5':
+ resolution: {integrity: sha512-xLL3lkDegJZw+MGoGaCCsFayDZthGgpAtr3Vziyfc4p7xH89K7KRPcRBBh/kEYm0Aqkt5DtTmkYpBtRV/FrHZg==}
+ peerDependencies:
+ msw: ^2.4.9 || ^3.0.0
+ vite: ^8.2.4
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
'@vitest/pretty-format@4.1.12':
resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
@@ -2540,6 +2550,9 @@ packages:
'@vitest/spy@4.1.12':
resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
+ '@vitest/spy@5.0.5':
+ resolution: {integrity: sha512-lwJRExuH417257Q5wv9QYugN9IMJkoxcrKrYxGPQkBzl7wlNpTUxD/5yNX4ESKVUIShKPgkGchYPFMWOOk0wzw==}
+
'@vitest/utils@4.1.12':
resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
@@ -2694,11 +2707,6 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- acorn@8.16.0:
- resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
acorn@8.18.0:
resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
engines: {node: '>=0.4.0'}
@@ -3001,6 +3009,10 @@ packages:
resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
engines: {node: '>=18'}
+ chai@6.3.0:
+ resolution: {integrity: sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==}
+ engines: {node: '>=18'}
+
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -3051,10 +3063,6 @@ packages:
resolution: {integrity: sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==}
engines: {node: '>=0.10.0'}
- cluster-key-slot@1.1.2:
- resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
- engines: {node: '>=0.10.0'}
-
co@4.6.0:
resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
@@ -3161,6 +3169,14 @@ packages:
crossws@0.3.5:
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
+ crossws@0.4.16:
+ resolution: {integrity: sha512-gKc2u346c6tZazImz8/4KkRRKW6cEHot3Z3+gzKNSkfHTWkYrXeiidMKYN0JnHqeszIs5++iDaVzP/pWl/efpw==}
+ peerDependencies:
+ srvx: '>=0.11.5'
+ peerDependenciesMeta:
+ srvx:
+ optional: true
+
css-tree@3.2.1:
resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
@@ -3311,8 +3327,8 @@ packages:
dompurify@3.4.17:
resolution: {integrity: sha512-B/pSlYVHQ58kqISD/yDjuJ1yfzI34m1gF4lAod2bwSRhiN4K5Cl3H8Af7hqB2PmTL911tdEudnnXn5FnhRoz0w==}
- dot-prop@10.1.0:
- resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==}
+ dot-prop@10.2.0:
+ resolution: {integrity: sha512-BTJ9aZYL3vCfZlZOBLy9v8TUqWGQ0pzFnygKwFZt5udj6viBoFIBviKPUoZLDCPn1FoXffv6McQFDenrm5Krfw==}
engines: {node: '>=20'}
dotenv@17.4.2:
@@ -3488,6 +3504,9 @@ packages:
es-module-lexer@2.1.0:
resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==}
+ es-module-lexer@2.3.2:
+ resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==}
+
es-module-lexer@3.0.4:
resolution: {integrity: sha512-BldNY5mwkVu+cQ5Ymn3e6hB9Sx8XHx4ZevWbiUyZbfKxJxYO27Hf0wfzkxIaD5CAJMaGl3YspKELj0ff/7nCMA==}
@@ -3600,8 +3619,9 @@ packages:
resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
engines: {node: '>=12.0.0'}
- exsolve@1.0.8:
- resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==}
+ expect-type@1.4.0:
+ resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==}
+ engines: {node: '>=12.0.0'}
exsolve@1.1.1:
resolution: {integrity: sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==}
@@ -3823,8 +3843,8 @@ packages:
resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==}
engines: {node: '>=18'}
- globby@16.2.0:
- resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==}
+ globby@16.2.4:
+ resolution: {integrity: sha512-c8B/VNLmxRcmqqenRA9t+9IyOjf9+V6lTxPaUJLqOCONdQkWZ0ETYgX0qbtJqPsgCNusT9MZ5Jeidw8Eb9tn2g==}
engines: {node: '>=20'}
gopd@1.2.0:
@@ -3905,8 +3925,8 @@ packages:
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
engines: {node: '>= 14'}
- httpxy@0.5.1:
- resolution: {integrity: sha512-JPhqYiixe1A1I+MXDewWDZqeudBGU8Q9jCHYN8ML+779RQzLjTi78HBvWz4jMxUD6h2/vUL12g4q/mFM0OUw1A==}
+ httpxy@0.5.6:
+ resolution: {integrity: sha512-iqc3nOxvNb5FxbhJozt8wNmHgjlmk4zzba512jMEXVwHCEBCbGAj49eGfy5PI8ts3/LFSFq8siiSNqwfY1AlfQ==}
human-signals@5.0.0:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
@@ -3954,8 +3974,8 @@ packages:
resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
- ioredis@5.10.1:
- resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==}
+ ioredis@5.11.1:
+ resolution: {integrity: sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A==}
engines: {node: '>=12.22.0'}
ioredis@6.0.0:
@@ -4093,9 +4113,6 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- js-tokens@9.0.1:
- resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
-
js-yaml@4.3.2:
resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==}
hasBin: true
@@ -4277,9 +4294,14 @@ packages:
linkifyjs@4.3.3:
resolution: {integrity: sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==}
- listhen@1.10.0:
- resolution: {integrity: sha512-kfz4C0OrC6IpaVMtYDJtf6PFjurxe9NBBoDAh/o2p587INryFOO4DQ9OetbCdDrWFt1m1CJKvYrzkGsuPHw8nQ==}
+ listhen@1.10.1:
+ resolution: {integrity: sha512-6nt/86SkqUQSLW1ofz8MxC6RhRMqOl3ONISe6qqvJ3xj09aJWQx6DhgSZpugs3PX4PXdOas/WD6A9jx6J2N19A==}
hasBin: true
+ peerDependencies:
+ '@parcel/watcher': ^2.5.6
+ peerDependenciesMeta:
+ '@parcel/watcher':
+ optional: true
loader-utils@3.3.1:
resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
@@ -4297,12 +4319,6 @@ packages:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
- lodash.defaults@4.2.0:
- resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
-
- lodash.isarguments@3.1.0:
- resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
-
lodash@4.18.1:
resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
@@ -4313,6 +4329,10 @@ packages:
resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==}
engines: {node: 20 || >=22}
+ lru-cache@11.5.3:
+ resolution: {integrity: sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==}
+ engines: {node: 20 || >=22}
+
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -4332,9 +4352,6 @@ packages:
magic-string@1.4.3:
resolution: {integrity: sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==}
- magicast@0.5.2:
- resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==}
-
magicast@0.5.5:
resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==}
@@ -4347,6 +4364,11 @@ packages:
engines: {node: '>= 20'}
hasBin: true
+ marked@18.1.1:
+ resolution: {integrity: sha512-zEGgrtUG8crk+TrMacJSVABU4DYDDkS8uqgU3ohrn/2fW9C2AEfUrO3m6IhpIpQpl7YcVpiXXC9cSMWDANT3dg==}
+ engines: {node: '>= 20'}
+ hasBin: true
+
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
@@ -4397,8 +4419,8 @@ packages:
resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
engines: {node: '>=18'}
- mime@4.1.0:
- resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==}
+ mime@4.1.1:
+ resolution: {integrity: sha512-YAApRsTpM2+gnUFHhRNGfkX8NK0V5xj1nyQLufGlwEI+eX4xRsTcel2IXDuMEGSGjBvzykNW4VuoEACgwYe7BQ==}
engines: {node: '>=16'}
hasBin: true
@@ -4478,8 +4500,8 @@ packages:
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
engines: {node: '>= 0.6'}
- nitropack@2.13.4:
- resolution: {integrity: sha512-tX7bT6zxNeMwkc6hxHiZeUoTOjVrcjoh1Z3cmxOlodIqjl4HISgqfGOmkWSayky3Nv9Z5+KQH52F8nmXJY5AAA==}
+ nitropack@2.13.5:
+ resolution: {integrity: sha512-Aq7c7Bd35CZloj1xZm4b4SonDzIDA5FUinMVQu61U6GHq2z8oZXbNiFCJYSPGvLUkkCXNx6Fzc/mS2kjJPgKyA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -4523,6 +4545,9 @@ packages:
node-mock-http@1.0.4:
resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==}
+ node-mock-http@1.0.5:
+ resolution: {integrity: sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==}
+
node-releases@2.0.53:
resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==}
engines: {node: '>=18'}
@@ -4688,9 +4713,6 @@ packages:
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
- package-manager-detector@1.6.0:
- resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==}
-
package-manager-detector@1.9.0:
resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==}
@@ -4739,9 +4761,6 @@ packages:
path-to-regexp@6.3.0:
resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
- pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
-
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
@@ -4783,15 +4802,15 @@ packages:
pino-abstract-transport@3.0.0:
resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==}
- pino-pretty@13.1.3:
- resolution: {integrity: sha512-ttXRkkOz6WWC95KeY9+xxWL6AtImwbyMHrL1mSwqwW9u+vLp/WIElvHvCSDg0xO/Dzrggz1zv3rN5ovTRVowKg==}
+ pino-pretty@13.2.0:
+ resolution: {integrity: sha512-jjghD1ML+Di/WxjJDz6j6Y4FT7hIXOlb8h27AyJ+ohtAXJXH4PS/xkv7si+RCCIW59HMgZsMKTDgzdr0RhuRrg==}
hasBin: true
pino-std-serializers@7.1.0:
resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==}
- pino@10.3.1:
- resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==}
+ pino@10.4.0:
+ resolution: {integrity: sha512-bk1ZMTwG/Vymx+zPoa28MhNzucFvXJWp3csrSuxuHPSMeUettaCoQ5Jvg07mtC4JGNpcfTwz41oVCnNgBK9+vA==}
hasBin: true
pirates@4.0.7:
@@ -4890,8 +4909,8 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- pretty-bytes@7.1.0:
- resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==}
+ pretty-bytes@7.2.0:
+ resolution: {integrity: sha512-T2kroepGB5DRVbkN/nOpW03+VRWqdtJhZNuCW3wYk3chdPjgi4GcTBOaxWfHq1MIM0ypidxsSWbQaAiRpxnXmg==}
engines: {node: '>=20'}
process-nextick-args@2.0.1:
@@ -4904,11 +4923,6 @@ packages:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
- prom-client@15.1.3:
- resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==}
- engines: {node: ^16 || ^18 || >=20}
- deprecated: prom-client has been replaced by @prometheus-io/client
-
proper-lockfile@4.1.2:
resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==}
@@ -5017,6 +5031,9 @@ packages:
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
engines: {node: '>= 12.13.0'}
+ real-require@1.0.0:
+ resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==}
+
redis-errors@1.2.0:
resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==}
engines: {node: '>=4'}
@@ -5086,8 +5103,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- rollup-plugin-visualizer@7.0.1:
- resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==}
+ rollup-plugin-visualizer@7.1.1:
+ resolution: {integrity: sha512-ThaGiHTU8XW02OkK80TrTHATraJmM9OAduU4otal+7gyXLpYEtmGBLfx5kW+EHvvLwn03YGW2NnwKUIqsYlJAA==}
engines: {node: '>=22'}
hasBin: true
peerDependencies:
@@ -5099,8 +5116,8 @@ packages:
rollup:
optional: true
- rollup@4.60.3:
- resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==}
+ rollup@4.65.0:
+ resolution: {integrity: sha512-QVCvQUTGDN6JRwi3jVGCY3H4aTHvi9rX0LyoBMkGUvdh/Z6O51CzcLz85BWZaTCDGhl6ySGqYZs+xI1jmPqGcw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -5153,11 +5170,6 @@ packages:
engines: {node: '>=10'}
hasBin: true
- semver@7.8.1:
- resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==}
- engines: {node: '>=10'}
- hasBin: true
-
semver@7.8.5:
resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==}
engines: {node: '>=10'}
@@ -5231,6 +5243,9 @@ packages:
sonic-boom@4.2.1:
resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==}
+ sonic-boom@5.0.2:
+ resolution: {integrity: sha512-/JEruzo6yhNVhsLblTRchgTQHIt7SsdJP0YyrfWaNKjIOQDfrdZv9gwYraYCAsmKV39/LAdV31FLL5NCDpoL/A==}
+
source-map-js@1.2.2:
resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==}
engines: {node: '>=0.10.0'}
@@ -5246,6 +5261,10 @@ packages:
resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
engines: {node: '>= 12'}
+ source-map@0.8.0:
+ resolution: {integrity: sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==}
+ engines: {node: '>= 12'}
+
split2@4.2.0:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'}
@@ -5274,9 +5293,6 @@ packages:
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
engines: {node: '>= 0.8'}
- std-env@4.1.0:
- resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
-
std-env@4.2.0:
resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==}
@@ -5298,6 +5314,10 @@ packages:
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
engines: {node: '>=18'}
+ string-width@8.3.0:
+ resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==}
+ engines: {node: '>=20'}
+
string_decoder@1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
@@ -5320,9 +5340,6 @@ packages:
resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==}
engines: {node: '>=14.16'}
- strip-literal@3.1.0:
- resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==}
-
strip-literal@4.0.0:
resolution: {integrity: sha512-PaqAvfUZKBwc/SLmNZtHmzK+v19Z4O4eS3cKPeGvbIv/U3pnyEq4Tuw3/4v/FwfM8VQaEawsyCcOQ0P+kpwWWw==}
@@ -5406,8 +5423,12 @@ packages:
tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
- tinyclip@0.1.12:
- resolution: {integrity: sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==}
+ tinybench@6.2.2:
+ resolution: {integrity: sha512-nIZ2N2dFpjBsg2hgitKu7mA+FvsIJuGJOwysRngmVRRmWgR/UyPjwJj8c/fT/dhm8EkHnF5EOogRf+0Z2qrimA==}
+ engines: {node: '>=20.0.0'}
+
+ tinyclip@0.1.15:
+ resolution: {integrity: sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A==}
engines: {node: ^16.14.0 || >= 17.3.0}
tinyclip@1.0.3:
@@ -5534,9 +5555,6 @@ packages:
resolution: {integrity: sha512-8iAasVS4wUx0gPLjH8Xtz2PeDzTSiy8QiLGu2DT3X5GU+egFEQhpnbtkehbAwjvDcxIERmCYcysiODFmE3Ud0Q==}
engines: {node: '>=18'}
- ultrahtml@1.6.0:
- resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==}
-
ultrahtml@1.7.0:
resolution: {integrity: sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==}
@@ -5609,14 +5627,17 @@ packages:
unifont@0.7.5:
resolution: {integrity: sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==}
- unimport@6.2.0:
- resolution: {integrity: sha512-4NcqaphAHQff4eBWQ3pjVOCYNLlmVGGMoLDmboobh8+OQe9yP7UyeoMP043M1bG0YNc3CqtukD2VuINxOqm4rQ==}
+ unimport@6.5.0:
+ resolution: {integrity: sha512-t0KLJLRbebz3f7NrQe+vy2ObeugVeM1XqI2oeYnauddmHSglYj3U6bxOJ65IbXmOFkcAGFJK2OyGH7aqHPM6Ug==}
engines: {node: '>=18.12.0'}
peerDependencies:
oxc-parser: '*'
+ rolldown: ^1.0.0
peerDependenciesMeta:
oxc-parser:
optional: true
+ rolldown:
+ optional: true
unimport@7.0.2:
resolution: {integrity: sha512-5yrZs6kHyx5h1ZgeLxK0EgS/JL7Uhwv9HgzQImW8JccGmbYWyXx7Jc4YhU5+sd1Yk31PlfLQhfbZ1oigXipo3A==}
@@ -5637,10 +5658,6 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
- unplugin-utils@0.3.1:
- resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==}
- engines: {node: '>=20.19.0'}
-
unplugin-utils@0.3.2:
resolution: {integrity: sha512-xVToRh2CTmLk2HnEG7ac4rl1MJTT3RFkpS8B++/SnB0kXvuaavD+n3m/vrzyWQOdJNSZQACnbz01pnppbwV5BA==}
engines: {node: '>=20.19.0'}
@@ -5783,8 +5800,70 @@ packages:
uploadthing:
optional: true
- untun@0.1.3:
- resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==}
+ unstorage@1.17.6:
+ resolution: {integrity: sha512-gjKtcmn/KwZuJZO9o2sc0esAQnhmTw0LviDHwevTXbJMYs0dRTp8ZEEWXHU0vTpzbN3cA0yxlTeyXssMp3zDqw==}
+ peerDependencies:
+ '@azure/app-configuration': ^1.8.0
+ '@azure/cosmos': ^4.2.0
+ '@azure/data-tables': ^13.3.0
+ '@azure/identity': ^4.6.0
+ '@azure/keyvault-secrets': ^4.9.0
+ '@azure/storage-blob': ^12.26.0
+ '@capacitor/preferences': ^6 || ^7 || ^8
+ '@deno/kv': '>=0.9.0'
+ '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
+ '@planetscale/database': ^1.19.0
+ '@upstash/redis': ^1.34.3
+ '@vercel/blob': '>=0.27.1'
+ '@vercel/functions': ^2.2.12 || ^3.0.0
+ '@vercel/kv': ^1 || ^2 || ^3
+ aws4fetch: ^1.0.20
+ db0: '>=0.2.1'
+ idb-keyval: ^6.2.1
+ ioredis: ^5.4.2
+ uploadthing: ^7.4.4
+ peerDependenciesMeta:
+ '@azure/app-configuration':
+ optional: true
+ '@azure/cosmos':
+ optional: true
+ '@azure/data-tables':
+ optional: true
+ '@azure/identity':
+ optional: true
+ '@azure/keyvault-secrets':
+ optional: true
+ '@azure/storage-blob':
+ optional: true
+ '@capacitor/preferences':
+ optional: true
+ '@deno/kv':
+ optional: true
+ '@netlify/blobs':
+ optional: true
+ '@planetscale/database':
+ optional: true
+ '@upstash/redis':
+ optional: true
+ '@vercel/blob':
+ optional: true
+ '@vercel/functions':
+ optional: true
+ '@vercel/kv':
+ optional: true
+ aws4fetch:
+ optional: true
+ db0:
+ optional: true
+ idb-keyval:
+ optional: true
+ ioredis:
+ optional: true
+ uploadthing:
+ optional: true
+
+ untun@0.2.2:
+ resolution: {integrity: sha512-+NnOJcSiEtYsVgJmXUzQbJeRAFXJC4yPJYuh6kF9B0Rm6zunXcs/3GZOTllyocSbUDIxD6Bj7e/4ATw7sph1Sw==}
hasBin: true
untyped@2.0.0:
@@ -5813,8 +5892,8 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- uuid@14.0.2:
- resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==}
+ uuid@14.0.3:
+ resolution: {integrity: sha512-Sc5u1VVln93y1Xnz4R+CunOZc7R9LUcTmhj7Rc7Eg3HVcf7rVn2FOoa812fe0W8p3jD7xeoGSYbfqCGGH2B6xw==}
hasBin: true
vary@1.1.2:
@@ -5975,6 +6054,47 @@ packages:
jsdom:
optional: true
+ vitest@5.0.5:
+ resolution: {integrity: sha512-cPODOMF8YnkiiYtDdHo6n4wWmBrOBBbOIYH2d33M4l3CdNn72h+qMmO6uXffUN6A5AZFXNND/d+krS9mgkXRfg==}
+ engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@opentelemetry/api': ^1.9.0
+ '@types/node': ^26.6.5
+ '@vitest/browser-playwright': 5.0.5
+ '@vitest/browser-preview': 5.0.5
+ '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0
+ '@vitest/coverage-istanbul': 5.0.5
+ '@vitest/coverage-v8': 5.0.5
+ '@vitest/ui': 5.0.5
+ happy-dom: '*'
+ jsdom: '*'
+ vite: ^8.2.4
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@opentelemetry/api':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser-playwright':
+ optional: true
+ '@vitest/browser-preview':
+ optional: true
+ '@vitest/browser-webdriverio':
+ optional: true
+ '@vitest/coverage-istanbul':
+ optional: true
+ '@vitest/coverage-v8':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
vscode-uri@3.2.0:
resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==}
@@ -6090,6 +6210,11 @@ packages:
engines: {node: '>=8'}
hasBin: true
+ why-is-node-running@3.2.1:
+ resolution: {integrity: sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ==}
+ engines: {node: '>=20.11'}
+ hasBin: true
+
word-wrap@1.2.5:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
@@ -6183,6 +6308,10 @@ packages:
resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+ yargs@18.2.0:
+ resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+
ylru@1.4.0:
resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==}
engines: {node: '>= 4.0.0'}
@@ -6208,10 +6337,10 @@ snapshots:
'@alloc/quick-lru@5.2.0': {}
- '@antfu/install-pkg@1.1.0':
+ '@antfu/install-pkg@2.1.0':
dependencies:
- package-manager-detector: 1.6.0
- tinyexec: 1.3.0
+ package-manager-detector: 1.9.0
+ tinyexec: 1.3.1
'@asamuzakjp/css-color@6.0.7':
dependencies:
@@ -6336,14 +6465,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/helper-string-parser@7.27.1': {}
-
'@babel/helper-string-parser@7.29.7': {}
'@babel/helper-string-parser@8.0.6': {}
- '@babel/helper-validator-identifier@7.28.5': {}
-
'@babel/helper-validator-identifier@7.29.7': {}
'@babel/helper-validator-identifier@8.0.6': {}
@@ -6355,10 +6480,6 @@ snapshots:
'@babel/template': 7.29.7
'@babel/types': 7.29.8
- '@babel/parser@7.29.3':
- dependencies:
- '@babel/types': 7.29.0
-
'@babel/parser@7.29.8':
dependencies:
'@babel/types': 7.29.8
@@ -6410,11 +6531,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/types@7.29.0':
- dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.28.5
-
'@babel/types@7.29.8':
dependencies:
'@babel/helper-string-parser': 7.29.7
@@ -6483,17 +6599,17 @@ snapshots:
'@drizzle-team/brocli@0.10.2': {}
- '@dxup/nuxt@0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@dxup/nuxt@0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@dxup/unimport': 0.1.2
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@vue/compiler-dom': 3.5.42
chokidar: 5.0.0
knitwork: 1.3.0
magic-string: 1.4.3
pathe: 2.0.3
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
transitivePeerDependencies:
- '@farmfe/core'
- '@rspack/core'
@@ -6690,9 +6806,9 @@ snapshots:
'@iconify/types@2.0.0': {}
- '@iconify/utils@3.1.4':
+ '@iconify/utils@3.1.7':
dependencies:
- '@antfu/install-pkg': 1.1.0
+ '@antfu/install-pkg': 2.1.0
'@iconify/types': 2.0.0
import-meta-resolve: 4.2.0
@@ -6743,13 +6859,13 @@ snapshots:
'@intlify/shared@11.4.8': {}
- '@intlify/unplugin-vue-i18n@11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))':
+ '@intlify/unplugin-vue-i18n@11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.65.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))
'@intlify/bundle-utils': 11.2.5(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))
'@intlify/shared': 11.4.8
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.8)(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
'@typescript-eslint/scope-manager': 8.59.2
'@typescript-eslint/typescript-estree': 8.59.2(supports-color@10.2.2)(typescript@5.9.3)
debug: 4.4.3(supports-color@10.2.2)
@@ -6780,7 +6896,7 @@ snapshots:
vue: 3.5.44(typescript@5.9.3)
vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
- '@ioredis/commands@1.5.1': {}
+ '@ioredis/commands@1.10.0': {}
'@ioredis/commands@2.0.0': {}
@@ -6844,7 +6960,7 @@ snapshots:
https-proxy-agent: 7.0.6(supports-color@10.2.2)
node-fetch: 2.7.0
nopt: 8.1.0
- semver: 7.8.1
+ semver: 7.8.5
tar: 7.5.22
transitivePeerDependencies:
- encoding
@@ -6852,11 +6968,14 @@ snapshots:
'@mixmark-io/domino@2.2.0': {}
- '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.60.3)':
+ '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.65.0)':
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
json5: 2.2.3
- rollup: 4.60.3
+ rollup: 4.65.0
+
+ '@napi-rs/lzma-linux-x64-gnu@1.5.1':
+ optional: true
'@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)':
dependencies:
@@ -6914,9 +7033,9 @@ snapshots:
'@nuxt/devalue@2.0.2': {}
- '@nuxt/devtools-kit@3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
execa: 8.0.1
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
@@ -6926,9 +7045,9 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/devtools-kit@3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
execa: 8.0.1
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
@@ -6938,9 +7057,9 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/devtools-kit@3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
execa: 8.0.1
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
@@ -6966,11 +7085,11 @@ snapshots:
pkg-types: 2.4.0
semver: 7.8.5
- '@nuxt/devtools@3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxt/devtools@3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
- '@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/devtools-wizard': 3.4.4
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@vue/devtools-core': 8.2.1(vue@3.5.44(typescript@5.9.3))
'@vue/devtools-kit': 8.2.1
birpc: 4.2.0
@@ -6996,9 +7115,9 @@ snapshots:
structured-clone-es: 2.0.1
tinyexec: 1.3.1
tinyglobby: 0.2.17
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- vite-plugin-inspect: 11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ vite-plugin-inspect: 11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
vite-plugin-vue-tracer: 1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
which: 6.0.1
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
@@ -7036,13 +7155,13 @@ snapshots:
- utf-8-validate
- vue
- '@nuxt/fonts@0.14.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.10.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/fonts@0.14.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.11.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/devtools-kit': 3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/devtools-kit': 3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
consola: 3.4.2
defu: 6.1.7
- fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
h3: 1.15.11
magic-regexp: 0.10.0
ofetch: 1.5.1
@@ -7051,8 +7170,8 @@ snapshots:
tinyglobby: 0.2.17
ufo: 1.6.4
unifont: 0.7.5
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -7086,14 +7205,14 @@ snapshots:
- vite
- webpack
- '@nuxt/icon@2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxt/icon@2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@iconify/collections': 1.0.727
'@iconify/types': 2.0.0
- '@iconify/utils': 3.1.4
+ '@iconify/utils': 3.1.7
'@iconify/vue': 5.0.1(vue@3.5.44(typescript@5.9.3))
- '@nuxt/devtools-kit': 3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/devtools-kit': 3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
consola: 3.4.2
local-pkg: 1.2.1
mlly: 1.8.2
@@ -7137,7 +7256,7 @@ snapshots:
transitivePeerDependencies:
- magicast
- '@nuxt/kit@4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ '@nuxt/kit@4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
c12: 3.3.4(magicast@0.5.5)
consola: 3.4.2
@@ -7157,7 +7276,7 @@ snapshots:
scule: 1.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unctx: 3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ unctx: 3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
untyped: 2.0.0
verkit: 0.3.2
transitivePeerDependencies:
@@ -7167,7 +7286,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
c12: 3.3.4(magicast@0.5.5)
consola: 3.4.2
@@ -7187,7 +7306,7 @@ snapshots:
scule: 1.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
untyped: 2.0.0
verkit: 0.3.2
transitivePeerDependencies:
@@ -7197,7 +7316,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
c12: 3.3.4(magicast@0.5.5)
consola: 3.4.2
@@ -7217,7 +7336,7 @@ snapshots:
scule: 1.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
untyped: 2.0.0
verkit: 0.3.2
transitivePeerDependencies:
@@ -7227,7 +7346,7 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
consola: 3.4.2
defu: 6.1.7
@@ -7245,7 +7364,7 @@ snapshots:
std-env: 4.3.0
tinyexec: 1.3.1
tinyglobby: 0.2.17
- unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
verkit: 0.5.0
optionalDependencies:
'@nuxt/schema': 4.6.2
@@ -7260,7 +7379,7 @@ snapshots:
- magic-string
- unplugin
- '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
consola: 3.4.2
defu: 6.1.7
@@ -7278,7 +7397,7 @@ snapshots:
std-env: 4.3.0
tinyexec: 1.3.1
tinyglobby: 0.2.17
- unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
verkit: 0.5.0
optionalDependencies:
'@nuxt/schema': 4.6.2
@@ -7293,10 +7412,10 @@ snapshots:
- magic-string
- unplugin
- '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(@parcel/watcher@2.5.6)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(srvx@1.0.6)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
consola: 3.4.2
defu: 6.1.7
destr: 2.0.5
@@ -7306,22 +7425,22 @@ snapshots:
exsolve: 1.1.3
flru: 1.0.2
h3: 1.15.11
- impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
klona: 2.0.6
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- nitropack: 2.13.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ nitropack: 2.13.5(@parcel/watcher@2.5.6)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(srvx@1.0.6)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nostics: 1.3.0
- nuxt: 4.6.2(c0f3e47b19cb6936d50f731134c5a0b1)
+ nuxt: 4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a)
ohash: 2.0.12
pathe: 2.0.3
radix3: 1.1.2
rou3: 0.9.2
std-env: 4.3.0
ufo: 1.6.4
- unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
unrouting: 0.2.3
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
vue: 3.5.44(typescript@5.9.3)
vue-bundle-renderer: 2.4.0
vue-devtools-stub: 0.1.0
@@ -7342,7 +7461,9 @@ snapshots:
- '@netlify/blobs'
- '@nuxt/schema'
- '@oxc-project/types'
+ - '@parcel/watcher'
- '@planetscale/database'
+ - '@rsbuild/core'
- '@rspack/core'
- '@unhead/cli'
- '@upstash/redis'
@@ -7374,6 +7495,7 @@ snapshots:
- rolldown
- rollup
- sqlite3
+ - srvx
- supports-color
- typescript
- unloader
@@ -7392,17 +7514,17 @@ snapshots:
pkg-types: 2.4.0
std-env: 4.3.0
- '@nuxt/telemetry@2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))':
+ '@nuxt/telemetry@2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
citty: 0.2.2
consola: 3.4.2
rc9: 3.0.1
std-env: 4.2.0
- '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)':
+ '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.15)(rollup@4.65.0))(rollup@4.65.0)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@vitejs/plugin-vue': 6.0.10(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
autoprefixer: 10.6.1(postcss@8.5.26)
@@ -7418,7 +7540,7 @@ snapshots:
knitwork: 1.3.0
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- nuxt: 4.6.2(c0f3e47b19cb6936d50f731134c5a0b1)
+ nuxt: 4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a)
pathe: 2.0.3
pkg-types: 2.4.0
postcss: 8.5.26
@@ -7427,7 +7549,7 @@ snapshots:
std-env: 4.3.0
ufo: 1.6.4
unenv: 2.0.0-rc.24
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vite-node: 6.0.0(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vite-plugin-checker: 0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@5.9.3))
@@ -7436,7 +7558,7 @@ snapshots:
optionalDependencies:
'@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.7(supports-color@10.2.2))
rolldown: 1.2.15
- rollup-plugin-visualizer: 7.0.1(rolldown@1.2.15)(rollup@4.60.3)
+ rollup-plugin-visualizer: 7.1.1(rolldown@1.2.15)(rollup@4.65.0)
transitivePeerDependencies:
- '@biomejs/biome'
- '@farmfe/core'
@@ -7473,15 +7595,15 @@ snapshots:
- webpack
- yaml
- '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
clickable-path: 0.1.1
defu: 6.1.7
exsolve: 1.1.3
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- nuxt: 4.6.2(c0f3e47b19cb6936d50f731134c5a0b1)
+ nuxt: 4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a)
pathe: 2.0.3
rou3: 0.9.2
srvx: 1.0.5
@@ -7500,17 +7622,17 @@ snapshots:
- rolldown
- unplugin
- '@nuxtjs/i18n@10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.10.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxtjs/i18n@10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
'@intlify/core': 11.4.8
'@intlify/h3': 0.7.4
'@intlify/message-compiler': 11.4.8
'@intlify/shared': 11.4.8
- '@intlify/unplugin-vue-i18n': 11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
+ '@intlify/unplugin-vue-i18n': 11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.65.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
'@intlify/utils': 0.14.1
- '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.60.3)
- '@nuxt/kit': 4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- '@rollup/plugin-yaml': 4.1.2(rollup@4.60.3)
+ '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.65.0)
+ '@nuxt/kit': 4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@rollup/plugin-yaml': 4.1.2(rollup@4.65.0)
'@vue/compiler-sfc': 3.5.41
confbox: 0.2.4
defu: 6.1.7
@@ -7525,12 +7647,12 @@ snapshots:
oxc-walker: 0.7.0(oxc-parser@0.141.0)
pathe: 2.0.3
ufo: 1.6.4
- unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unrouting: 0.2.3
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
- vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -7819,6 +7941,7 @@ snapshots:
'@parcel/watcher-win32-arm64': 2.5.6
'@parcel/watcher-win32-ia32': 2.5.6
'@parcel/watcher-win32-x64': 2.5.6
+ optional: true
'@peculiar/asn1-android@2.9.4':
dependencies:
@@ -7826,6 +7949,14 @@ snapshots:
asn1js: 3.0.10
tslib: 2.8.1
+ '@peculiar/asn1-asym-key@2.11.0':
+ dependencies:
+ '@peculiar/asn1-pkcs8': 2.9.4
+ '@peculiar/asn1-schema': 2.9.4
+ '@peculiar/asn1-x509': 2.9.4
+ asn1js: 3.0.10
+ tslib: 2.8.1
+
'@peculiar/asn1-cms@2.9.4':
dependencies:
'@peculiar/asn1-schema': 2.9.4
@@ -7895,6 +8026,14 @@ snapshots:
asn1js: 3.0.10
tslib: 2.8.1
+ '@peculiar/asn1-x509-post-quantum@2.11.0':
+ dependencies:
+ '@peculiar/asn1-asym-key': 2.11.0
+ '@peculiar/asn1-schema': 2.9.4
+ '@peculiar/asn1-x509': 2.9.4
+ asn1js: 3.0.10
+ tslib: 2.8.1
+
'@peculiar/asn1-x509@2.9.4':
dependencies:
'@peculiar/asn1-schema': 2.9.4
@@ -7906,7 +8045,7 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@peculiar/x509@1.14.3':
+ '@peculiar/x509@2.2.0':
dependencies:
'@peculiar/asn1-cms': 2.9.4
'@peculiar/asn1-csr': 2.9.4
@@ -7915,14 +8054,14 @@ snapshots:
'@peculiar/asn1-rsa': 2.9.4
'@peculiar/asn1-schema': 2.9.4
'@peculiar/asn1-x509': 2.9.4
+ '@peculiar/asn1-x509-post-quantum': 2.11.0
pvtsutils: 1.3.6
- reflect-metadata: 0.2.2
tslib: 2.8.1
tsyringe: 4.10.0
- '@pinia/nuxt@1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ '@pinia/nuxt@1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
transitivePeerDependencies:
- magic-string
@@ -7950,6 +8089,11 @@ snapshots:
'@poppinss/exception@1.2.3': {}
+ '@prometheus-io/client@0.16.1':
+ dependencies:
+ '@opentelemetry/api': 1.9.1
+ tdigest: 0.1.2
+
'@rolldown/binding-android-arm-eabi@1.2.15':
optional: true
@@ -7997,13 +8141,13 @@ snapshots:
'@rolldown/pluginutils@1.0.1': {}
- '@rollup/plugin-alias@6.0.0(rollup@4.60.3)':
+ '@rollup/plugin-alias@6.0.0(rollup@4.65.0)':
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/plugin-commonjs@29.0.2(rollup@4.60.3)':
+ '@rollup/plugin-commonjs@29.0.3(rollup@4.65.0)':
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
commondir: 1.0.1
estree-walker: 2.0.2
fdir: 6.5.0(picomatch@4.0.7)
@@ -8011,143 +8155,143 @@ snapshots:
magic-string: 0.30.21
picomatch: 4.0.7
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/plugin-inject@5.0.5(rollup@4.60.3)':
+ '@rollup/plugin-inject@5.0.5(rollup@4.65.0)':
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
estree-walker: 2.0.2
magic-string: 0.30.21
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/plugin-json@6.1.0(rollup@4.60.3)':
+ '@rollup/plugin-json@6.1.0(rollup@4.65.0)':
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.3)':
+ '@rollup/plugin-node-resolve@16.0.3(rollup@4.65.0)':
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-module: 1.0.0
resolve: 1.22.12
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/plugin-replace@6.0.3(rollup@4.60.3)':
+ '@rollup/plugin-replace@6.0.3(rollup@4.65.0)':
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
magic-string: 0.30.21
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/plugin-terser@1.0.0(rollup@4.60.3)':
+ '@rollup/plugin-terser@1.0.0(rollup@4.65.0)':
dependencies:
serialize-javascript: 7.1.3
smob: 1.6.1
terser: 5.46.2
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/plugin-yaml@4.1.2(rollup@4.60.3)':
+ '@rollup/plugin-yaml@4.1.2(rollup@4.65.0)':
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
js-yaml: 4.3.2
tosource: 2.0.0-alpha.3
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/pluginutils@5.3.0(rollup@4.60.3)':
+ '@rollup/pluginutils@5.3.0(rollup@4.65.0)':
dependencies:
'@types/estree': 1.0.9
estree-walker: 2.0.2
picomatch: 4.0.7
optionalDependencies:
- rollup: 4.60.3
+ rollup: 4.65.0
- '@rollup/rollup-android-arm-eabi@4.60.3':
+ '@rollup/rollup-android-arm-eabi@4.65.0':
optional: true
- '@rollup/rollup-android-arm64@4.60.3':
+ '@rollup/rollup-android-arm64@4.65.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.60.3':
+ '@rollup/rollup-darwin-arm64@4.65.0':
optional: true
- '@rollup/rollup-darwin-x64@4.60.3':
+ '@rollup/rollup-darwin-x64@4.65.0':
optional: true
- '@rollup/rollup-freebsd-arm64@4.60.3':
+ '@rollup/rollup-freebsd-arm64@4.65.0':
optional: true
- '@rollup/rollup-freebsd-x64@4.60.3':
+ '@rollup/rollup-freebsd-x64@4.65.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.60.3':
+ '@rollup/rollup-linux-arm-gnueabihf@4.65.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.60.3':
+ '@rollup/rollup-linux-arm-musleabihf@4.65.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.60.3':
+ '@rollup/rollup-linux-arm64-gnu@4.65.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.60.3':
+ '@rollup/rollup-linux-arm64-musl@4.65.0':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.60.3':
+ '@rollup/rollup-linux-loong64-gnu@4.65.0':
optional: true
- '@rollup/rollup-linux-loong64-musl@4.60.3':
+ '@rollup/rollup-linux-loong64-musl@4.65.0':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.60.3':
+ '@rollup/rollup-linux-ppc64-gnu@4.65.0':
optional: true
- '@rollup/rollup-linux-ppc64-musl@4.60.3':
+ '@rollup/rollup-linux-ppc64-musl@4.65.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.60.3':
+ '@rollup/rollup-linux-riscv64-gnu@4.65.0':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.60.3':
+ '@rollup/rollup-linux-riscv64-musl@4.65.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.60.3':
+ '@rollup/rollup-linux-s390x-gnu@4.65.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.60.3':
+ '@rollup/rollup-linux-x64-gnu@4.65.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.60.3':
+ '@rollup/rollup-linux-x64-musl@4.65.0':
optional: true
- '@rollup/rollup-openbsd-x64@4.60.3':
+ '@rollup/rollup-openbsd-x64@4.65.0':
optional: true
- '@rollup/rollup-openharmony-arm64@4.60.3':
+ '@rollup/rollup-openharmony-arm64@4.65.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.60.3':
+ '@rollup/rollup-win32-arm64-msvc@4.65.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.60.3':
+ '@rollup/rollup-win32-ia32-msvc@4.65.0':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.60.3':
+ '@rollup/rollup-win32-x64-gnu@4.65.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.60.3':
+ '@rollup/rollup-win32-x64-msvc@4.65.0':
optional: true
'@scure/base@2.2.0': {}
'@simplewebauthn/browser@13.3.0': {}
- '@simplewebauthn/server@13.3.3':
+ '@simplewebauthn/server@14.0.3':
dependencies:
'@hexagon/base64': 1.1.28
'@levischuck/tiny-cbor': 0.2.11
@@ -8156,7 +8300,9 @@ snapshots:
'@peculiar/asn1-rsa': 2.9.4
'@peculiar/asn1-schema': 2.9.4
'@peculiar/asn1-x509': 2.9.4
- '@peculiar/x509': 1.14.3
+ '@peculiar/asn1-x509-post-quantum': 2.11.0
+ '@peculiar/x509': 2.2.0
+ reflect-metadata: 0.2.2
'@sindresorhus/is@7.2.0': {}
@@ -8378,8 +8524,6 @@ snapshots:
'@types/esrecurse@4.3.1': {}
- '@types/estree@1.0.8': {}
-
'@types/estree@1.0.9': {}
'@types/hammerjs@2.0.46': {}
@@ -8516,12 +8660,12 @@ snapshots:
'@typescript/typescript-win32-x64@7.0.2':
optional: true
- '@unhead/bundler@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@unhead/bundler@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
magic-string: 1.4.3
oxc-walker: 1.1.1(@oxc-project/types@0.155.0)(oxc-parser@0.141.0)(rolldown@1.2.15)
- unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
optionalDependencies:
esbuild: 0.28.2
lightningcss: 1.33.0
@@ -8536,12 +8680,12 @@ snapshots:
- rollup
- unloader
- '@unhead/vue@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@unhead/vue@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
dependencies:
- '@unhead/bundler': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@unhead/bundler': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
hookable: 6.1.1
- unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
vue: 3.5.44(typescript@5.9.3)
optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
@@ -8559,12 +8703,12 @@ snapshots:
- rollup
- unloader
- '@vercel/nft@1.5.0(rollup@4.60.3)(supports-color@10.2.2)':
+ '@vercel/nft@1.11.0(rollup@4.65.0)(supports-color@10.2.2)':
dependencies:
'@mapbox/node-pre-gyp': 2.0.3(supports-color@10.2.2)
- '@rollup/pluginutils': 5.3.0(rollup@4.60.3)
- acorn: 8.16.0
- acorn-import-attributes: 1.9.5(acorn@8.16.0)
+ '@rollup/pluginutils': 5.3.0(rollup@4.65.0)
+ acorn: 8.18.0
+ acorn-import-attributes: 1.9.5(acorn@8.18.0)
async-sema: 3.1.1
bindings: 1.5.0
estree-walker: 2.0.2
@@ -8613,6 +8757,15 @@ snapshots:
optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+ '@vitest/mocker@5.0.5(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ '@vitest/spy': 5.0.5
+ estree-walker: 3.0.3
+ magic-string: 1.4.3
+ optionalDependencies:
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+
'@vitest/pretty-format@4.1.12':
dependencies:
tinyrainbow: 3.1.1
@@ -8631,6 +8784,8 @@ snapshots:
'@vitest/spy@4.1.12': {}
+ '@vitest/spy@5.0.5': {}
+
'@vitest/utils@4.1.12':
dependencies:
'@vitest/pretty-format': 4.1.12
@@ -8863,16 +9018,14 @@ snapshots:
mime-types: 2.1.35
negotiator: 0.6.3
- acorn-import-attributes@1.9.5(acorn@8.16.0):
+ acorn-import-attributes@1.9.5(acorn@8.18.0):
dependencies:
- acorn: 8.16.0
+ acorn: 8.18.0
acorn-jsx@5.3.2(acorn@8.18.0):
dependencies:
acorn: 8.18.0
- acorn@8.16.0: {}
-
acorn@8.18.0: {}
agent-base@7.1.4: {}
@@ -9110,37 +9263,20 @@ snapshots:
dependencies:
run-applescript: 7.1.0
- c12@3.3.4(magicast@0.5.2):
- dependencies:
- chokidar: 5.0.0
- confbox: 0.2.4
- defu: 6.1.7
- dotenv: 17.4.2
- exsolve: 1.1.1
- giget: 3.2.0
- jiti: 2.7.0
- ohash: 2.0.12
- pathe: 2.0.3
- perfect-debounce: 2.1.0
- pkg-types: 2.3.1
- rc9: 3.0.1
- optionalDependencies:
- magicast: 0.5.2
-
c12@3.3.4(magicast@0.5.5):
dependencies:
chokidar: 5.0.0
confbox: 0.2.4
defu: 6.1.7
dotenv: 17.4.2
- exsolve: 1.1.1
+ exsolve: 1.1.3
giget: 3.2.0
jiti: 2.7.0
ohash: 2.0.12
pathe: 2.0.3
perfect-debounce: 2.1.0
- pkg-types: 2.3.1
- rc9: 3.0.1
+ pkg-types: 2.4.0
+ rc9: 3.1.0
optionalDependencies:
magicast: 0.5.5
@@ -9178,6 +9314,8 @@ snapshots:
chai@6.2.2: {}
+ chai@6.3.0: {}
+
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
@@ -9239,8 +9377,6 @@ snapshots:
cluster-key-slot@1.1.1: {}
- cluster-key-slot@1.1.2: {}
-
co@4.6.0: {}
color-convert@2.0.1:
@@ -9339,6 +9475,10 @@ snapshots:
dependencies:
uncrypto: 0.1.3
+ crossws@0.4.16(srvx@1.0.6):
+ optionalDependencies:
+ srvx: 1.0.6
+
css-tree@3.2.1:
dependencies:
mdn-data: 2.27.1
@@ -9435,7 +9575,7 @@ snapshots:
optionalDependencies:
'@types/trusted-types': 2.0.7
- dot-prop@10.1.0:
+ dot-prop@10.2.0:
dependencies:
type-fest: 5.6.0
@@ -9503,6 +9643,8 @@ snapshots:
es-module-lexer@2.1.0: {}
+ es-module-lexer@2.3.2: {}
+
es-module-lexer@3.0.4: {}
es-object-atoms@1.1.1:
@@ -9660,7 +9802,7 @@ snapshots:
expect-type@1.3.0: {}
- exsolve@1.0.8: {}
+ expect-type@1.4.0: {}
exsolve@1.1.1: {}
@@ -9762,7 +9904,7 @@ snapshots:
dependencies:
tiny-inflate: 1.0.3
- fontless@0.2.1(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ fontless@0.2.1(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
consola: 3.4.2
css-tree: 3.2.1
@@ -9776,7 +9918,7 @@ snapshots:
pathe: 2.0.3
ufo: 1.6.4
unifont: 0.7.5
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
@@ -9909,12 +10051,13 @@ snapshots:
dependencies:
ini: 4.1.1
- globby@16.2.0:
+ globby@16.2.4:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
fast-glob: 3.3.3
- ignore: 7.0.6
+ ignore: 7.0.13
is-path-inside: 4.0.0
+ micromatch: 4.0.8
slash: 5.1.0
unicorn-magic: 0.4.0
@@ -10005,7 +10148,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- httpxy@0.5.1: {}
+ httpxy@0.5.6: {}
human-signals@5.0.0: {}
@@ -10021,12 +10164,12 @@ snapshots:
import-meta-resolve@4.2.0: {}
- impound@1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ impound@1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
es-module-lexer: 3.0.4
pathe: 2.0.3
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
transitivePeerDependencies:
- '@farmfe/core'
@@ -10052,14 +10195,12 @@ snapshots:
ini@4.1.1: {}
- ioredis@5.10.1(supports-color@10.2.2):
+ ioredis@5.11.1(supports-color@10.2.2):
dependencies:
- '@ioredis/commands': 1.5.1
- cluster-key-slot: 1.1.2
+ '@ioredis/commands': 1.10.0
+ cluster-key-slot: 1.1.1
debug: 4.4.3(supports-color@10.2.2)
denque: 2.1.0
- lodash.defaults: 4.2.0
- lodash.isarguments: 3.1.0
redis-errors: 1.2.0
redis-parser: 3.0.0
standard-as-callback: 2.1.0
@@ -10187,8 +10328,6 @@ snapshots:
js-tokens@4.0.0: {}
- js-tokens@9.0.1: {}
-
js-yaml@4.3.2:
dependencies:
argparse: 2.0.1
@@ -10388,26 +10527,28 @@ snapshots:
linkifyjs@4.3.3: {}
- listhen@1.10.0:
+ listhen@1.10.1(@parcel/watcher@2.5.6)(srvx@1.0.6):
dependencies:
- '@parcel/watcher': 2.5.6
'@parcel/watcher-wasm': 2.5.6
citty: 0.2.2
consola: 3.4.2
- crossws: 0.3.5
+ crossws: 0.4.16(srvx@1.0.6)
defu: 6.1.7
get-port-please: 3.2.0
h3: 1.15.11
http-shutdown: 1.2.2
jiti: 2.7.0
- mlly: 1.8.2
node-forge: 1.4.0
pathe: 2.0.3
- std-env: 4.2.0
- tinyclip: 0.1.12
+ std-env: 4.3.0
+ tinyclip: 0.1.15
ufo: 1.6.4
- untun: 0.1.3
+ untun: 0.2.2
uqr: 0.1.3
+ optionalDependencies:
+ '@parcel/watcher': 2.5.6
+ transitivePeerDependencies:
+ - srvx
loader-utils@3.3.1: {}
@@ -10425,16 +10566,14 @@ snapshots:
dependencies:
p-locate: 5.0.0
- lodash.defaults@4.2.0: {}
-
- lodash.isarguments@3.1.0: {}
-
lodash@4.18.1: {}
lru-cache@10.4.3: {}
lru-cache@11.5.2: {}
+ lru-cache@11.5.3: {}
+
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
@@ -10455,7 +10594,7 @@ snapshots:
magic-string@0.30.21:
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/sourcemap-codec': 1.6.0
magic-string@1.2.0:
dependencies:
@@ -10465,12 +10604,6 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.6.0
- magicast@0.5.2:
- dependencies:
- '@babel/parser': 7.29.3
- '@babel/types': 7.29.0
- source-map-js: 1.2.2
-
magicast@0.5.5:
dependencies:
'@babel/parser': 7.29.9
@@ -10485,6 +10618,8 @@ snapshots:
marked@18.0.10: {}
+ marked@18.1.1: {}
+
math-intrinsics@1.1.0: {}
mdn-data@2.27.1: {}
@@ -10520,7 +10655,7 @@ snapshots:
dependencies:
mime-db: 1.54.0
- mime@4.1.0: {}
+ mime@4.1.1: {}
mimic-fn@4.0.0: {}
@@ -10587,19 +10722,19 @@ snapshots:
negotiator@0.6.3: {}
- nitropack@2.13.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ nitropack@2.13.5(@parcel/watcher@2.5.6)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(srvx@1.0.6)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@cloudflare/kv-asset-handler': 0.4.2
- '@rollup/plugin-alias': 6.0.0(rollup@4.60.3)
- '@rollup/plugin-commonjs': 29.0.2(rollup@4.60.3)
- '@rollup/plugin-inject': 5.0.5(rollup@4.60.3)
- '@rollup/plugin-json': 6.1.0(rollup@4.60.3)
- '@rollup/plugin-node-resolve': 16.0.3(rollup@4.60.3)
- '@rollup/plugin-replace': 6.0.3(rollup@4.60.3)
- '@rollup/plugin-terser': 1.0.0(rollup@4.60.3)
- '@vercel/nft': 1.5.0(rollup@4.60.3)(supports-color@10.2.2)
+ '@rollup/plugin-alias': 6.0.0(rollup@4.65.0)
+ '@rollup/plugin-commonjs': 29.0.3(rollup@4.65.0)
+ '@rollup/plugin-inject': 5.0.5(rollup@4.65.0)
+ '@rollup/plugin-json': 6.1.0(rollup@4.65.0)
+ '@rollup/plugin-node-resolve': 16.0.3(rollup@4.65.0)
+ '@rollup/plugin-replace': 6.0.3(rollup@4.65.0)
+ '@rollup/plugin-terser': 1.0.0(rollup@4.65.0)
+ '@vercel/nft': 1.11.0(rollup@4.65.0)(supports-color@10.2.2)
archiver: 7.0.1
- c12: 3.3.4(magicast@0.5.2)
+ c12: 3.3.4(magicast@0.5.5)
chokidar: 5.0.0
citty: 0.2.2
compatx: 0.2.0
@@ -10611,50 +10746,50 @@ snapshots:
db0: 0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))
defu: 6.1.7
destr: 2.0.5
- dot-prop: 10.1.0
+ dot-prop: 10.2.0
esbuild: 0.28.2
escape-string-regexp: 5.0.0
etag: 1.8.1
- exsolve: 1.0.8
- globby: 16.2.0
+ exsolve: 1.1.3
+ globby: 16.2.4
gzip-size: 7.0.0
h3: 1.15.11
hookable: 5.5.3
- httpxy: 0.5.1
- ioredis: 5.10.1(supports-color@10.2.2)
+ httpxy: 0.5.6
+ ioredis: 5.11.1(supports-color@10.2.2)
jiti: 2.7.0
klona: 2.0.6
knitwork: 1.3.0
- listhen: 1.10.0
+ listhen: 1.10.1(@parcel/watcher@2.5.6)(srvx@1.0.6)
magic-string: 0.30.21
- magicast: 0.5.2
- mime: 4.1.0
+ magicast: 0.5.5
+ mime: 4.1.1
mlly: 1.8.2
node-fetch-native: 1.6.7
- node-mock-http: 1.0.4
+ node-mock-http: 1.0.5
ofetch: 1.5.1
- ohash: 2.0.11
+ ohash: 2.0.12
pathe: 2.0.3
perfect-debounce: 2.1.0
- pkg-types: 2.3.1
- pretty-bytes: 7.1.0
+ pkg-types: 2.4.0
+ pretty-bytes: 7.2.0
radix3: 1.1.2
- rollup: 4.60.3
- rollup-plugin-visualizer: 7.0.1(rolldown@1.2.15)(rollup@4.60.3)
+ rollup: 4.65.0
+ rollup-plugin-visualizer: 7.1.1(rolldown@1.2.15)(rollup@4.65.0)
scule: 1.3.0
- semver: 7.7.4
+ semver: 7.8.5
serve-placeholder: 2.0.2
serve-static: 2.2.1(supports-color@10.2.2)
source-map: 0.7.6
- std-env: 4.1.0
+ std-env: 4.3.0
ufo: 1.6.4
- ultrahtml: 1.6.0
+ ultrahtml: 1.7.0
uncrypto: 0.1.3
unctx: 2.5.0
unenv: 2.0.0-rc.24
- unimport: 6.2.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unplugin-utils: 0.3.1
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2))
+ unimport: 6.5.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin-utils: 0.3.2
+ unstorage: 1.17.6(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
untyped: 2.0.0
unwasm: 0.5.3
youch: 4.1.1
@@ -10672,7 +10807,9 @@ snapshots:
- '@farmfe/core'
- '@libsql/client'
- '@netlify/blobs'
+ - '@parcel/watcher'
- '@planetscale/database'
+ - '@rsbuild/core'
- '@rspack/core'
- '@upstash/redis'
- '@vercel/blob'
@@ -10691,13 +10828,15 @@ snapshots:
- react-native-b4a
- rolldown
- sqlite3
+ - srvx
- supports-color
- unloader
- uploadthing
- vite
- webpack
- node-addon-api@7.1.1: {}
+ node-addon-api@7.1.1:
+ optional: true
node-domexception@1.0.0: {}
@@ -10719,6 +10858,8 @@ snapshots:
node-mock-http@1.0.4: {}
+ node-mock-http@1.0.5: {}
+
node-releases@2.0.53: {}
nodemailer@10.2.1: {}
@@ -10744,20 +10885,20 @@ snapshots:
nuxt-define@1.0.0: {}
- nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1):
+ nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a):
dependencies:
- '@dxup/nuxt': 0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@dxup/nuxt': 0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@jridgewell/trace-mapping': 0.3.31
'@nuxt/cli': 4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/devalue': 2.0.2
- '@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.10.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(@parcel/watcher@2.5.6)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(srvx@1.0.6)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/schema': 4.6.2
- '@nuxt/telemetry': 2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))
- '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3))(rollup@4.60.3)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)
- '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(c0f3e47b19cb6936d50f731134c5a0b1))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/telemetry': 2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))
+ '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.15)(rollup@4.65.0))(rollup@4.65.0)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)
+ '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
'@vue/shared': 3.5.44
chokidar: 5.0.0
clickable-path: 0.1.1
@@ -10774,7 +10915,7 @@ snapshots:
fnv1a-64: 0.1.2
hookable: 6.1.2
ignore: 7.0.13
- impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ impound: 1.2.1(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
iron-webcrypto: 2.0.0
jiti: 2.7.0
klona: 2.0.6
@@ -10801,18 +10942,18 @@ snapshots:
ufo: 1.6.4
ultrahtml: 1.7.0
uncrypto: 0.1.3
- unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
undici: 8.12.3
- unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unimport: 7.0.2(acorn@8.18.0)(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unimport: 7.0.2(acorn@8.18.0)(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unrouting: 0.2.3
untyped: 2.0.0
verkit: 0.5.0
vue: 3.5.44(typescript@5.9.3)
vue-bundle-renderer: 2.4.0
vue-component-type-helpers: 3.3.13
- vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
optionalDependencies:
'@parcel/watcher': 2.5.6
'@types/node': 26.6.5
@@ -10882,6 +11023,7 @@ snapshots:
- sass-embedded
- serve
- sqlite3
+ - srvx
- stylelint
- stylus
- sugarss
@@ -11049,8 +11191,6 @@ snapshots:
package-json-from-dist@1.0.1: {}
- package-manager-detector@1.6.0: {}
-
package-manager-detector@1.9.0: {}
parse-torrent@11.0.24:
@@ -11092,8 +11232,6 @@ snapshots:
path-to-regexp@6.3.0: {}
- pathe@1.1.2: {}
-
pathe@2.0.3: {}
perfect-debounce@2.1.0: {}
@@ -11122,7 +11260,7 @@ snapshots:
dependencies:
split2: 4.2.0
- pino-pretty@13.1.3:
+ pino-pretty@13.2.0:
dependencies:
colorette: 2.0.20
dateformat: 4.6.3
@@ -11135,12 +11273,12 @@ snapshots:
pino-abstract-transport: 3.0.0
pump: 3.0.4
secure-json-parse: 4.1.0
- sonic-boom: 4.2.1
+ sonic-boom: 5.0.2
strip-json-comments: 5.0.3
pino-std-serializers@7.1.0: {}
- pino@10.3.1:
+ pino@10.4.0:
dependencies:
'@pinojs/redact': 0.4.0
atomic-sleep: 1.0.0
@@ -11149,7 +11287,7 @@ snapshots:
pino-std-serializers: 7.1.0
process-warning: 5.0.0
quick-format-unescaped: 4.0.4
- real-require: 0.2.0
+ real-require: 1.0.0
safe-stable-stringify: 2.5.0
sonic-boom: 4.2.1
thread-stream: 4.0.0
@@ -11245,7 +11383,7 @@ snapshots:
prelude-ls@1.2.1: {}
- pretty-bytes@7.1.0: {}
+ pretty-bytes@7.2.0: {}
process-nextick-args@2.0.1: {}
@@ -11253,11 +11391,6 @@ snapshots:
process@0.11.10: {}
- prom-client@15.1.3:
- dependencies:
- '@opentelemetry/api': 1.9.1
- tdigest: 0.1.2
-
proper-lockfile@4.1.2:
dependencies:
graceful-fs: 4.2.11
@@ -11411,6 +11544,8 @@ snapshots:
real-require@0.2.0: {}
+ real-require@1.0.0: {}
+
redis-errors@1.2.0: {}
redis-parser@3.0.0:
@@ -11480,45 +11615,46 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.2.15
'@rolldown/binding-win32-x64-msvc': 1.2.15
- rollup-plugin-visualizer@7.0.1(rolldown@1.2.15)(rollup@4.60.3):
+ rollup-plugin-visualizer@7.1.1(rolldown@1.2.15)(rollup@4.65.0):
dependencies:
open: 11.0.0
picomatch: 4.0.7
- source-map: 0.7.6
- yargs: 18.0.0
+ source-map: 0.8.0
+ yargs: 18.2.0
optionalDependencies:
rolldown: 1.2.15
- rollup: 4.60.3
+ rollup: 4.65.0
- rollup@4.60.3:
+ rollup@4.65.0:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.60.3
- '@rollup/rollup-android-arm64': 4.60.3
- '@rollup/rollup-darwin-arm64': 4.60.3
- '@rollup/rollup-darwin-x64': 4.60.3
- '@rollup/rollup-freebsd-arm64': 4.60.3
- '@rollup/rollup-freebsd-x64': 4.60.3
- '@rollup/rollup-linux-arm-gnueabihf': 4.60.3
- '@rollup/rollup-linux-arm-musleabihf': 4.60.3
- '@rollup/rollup-linux-arm64-gnu': 4.60.3
- '@rollup/rollup-linux-arm64-musl': 4.60.3
- '@rollup/rollup-linux-loong64-gnu': 4.60.3
- '@rollup/rollup-linux-loong64-musl': 4.60.3
- '@rollup/rollup-linux-ppc64-gnu': 4.60.3
- '@rollup/rollup-linux-ppc64-musl': 4.60.3
- '@rollup/rollup-linux-riscv64-gnu': 4.60.3
- '@rollup/rollup-linux-riscv64-musl': 4.60.3
- '@rollup/rollup-linux-s390x-gnu': 4.60.3
- '@rollup/rollup-linux-x64-gnu': 4.60.3
- '@rollup/rollup-linux-x64-musl': 4.60.3
- '@rollup/rollup-openbsd-x64': 4.60.3
- '@rollup/rollup-openharmony-arm64': 4.60.3
- '@rollup/rollup-win32-arm64-msvc': 4.60.3
- '@rollup/rollup-win32-ia32-msvc': 4.60.3
- '@rollup/rollup-win32-x64-gnu': 4.60.3
- '@rollup/rollup-win32-x64-msvc': 4.60.3
+ '@napi-rs/lzma-linux-x64-gnu': 1.5.1
+ '@rollup/rollup-android-arm-eabi': 4.65.0
+ '@rollup/rollup-android-arm64': 4.65.0
+ '@rollup/rollup-darwin-arm64': 4.65.0
+ '@rollup/rollup-darwin-x64': 4.65.0
+ '@rollup/rollup-freebsd-arm64': 4.65.0
+ '@rollup/rollup-freebsd-x64': 4.65.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.65.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.65.0
+ '@rollup/rollup-linux-arm64-gnu': 4.65.0
+ '@rollup/rollup-linux-arm64-musl': 4.65.0
+ '@rollup/rollup-linux-loong64-gnu': 4.65.0
+ '@rollup/rollup-linux-loong64-musl': 4.65.0
+ '@rollup/rollup-linux-ppc64-gnu': 4.65.0
+ '@rollup/rollup-linux-ppc64-musl': 4.65.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.65.0
+ '@rollup/rollup-linux-riscv64-musl': 4.65.0
+ '@rollup/rollup-linux-s390x-gnu': 4.65.0
+ '@rollup/rollup-linux-x64-gnu': 4.65.0
+ '@rollup/rollup-linux-x64-musl': 4.65.0
+ '@rollup/rollup-openbsd-x64': 4.65.0
+ '@rollup/rollup-openharmony-arm64': 4.65.0
+ '@rollup/rollup-win32-arm64-msvc': 4.65.0
+ '@rollup/rollup-win32-ia32-msvc': 4.65.0
+ '@rollup/rollup-win32-x64-gnu': 4.65.0
+ '@rollup/rollup-win32-x64-msvc': 4.65.0
fsevents: 2.3.3
rope-sequence@1.3.4: {}
@@ -11557,8 +11693,6 @@ snapshots:
semver@7.7.4: {}
- semver@7.8.1: {}
-
semver@7.8.5: {}
send@1.2.1(supports-color@10.2.2):
@@ -11630,6 +11764,10 @@ snapshots:
dependencies:
atomic-sleep: 1.0.0
+ sonic-boom@5.0.2:
+ dependencies:
+ atomic-sleep: 1.0.0
+
source-map-js@1.2.2: {}
source-map-support@0.5.21:
@@ -11641,6 +11779,8 @@ snapshots:
source-map@0.7.6: {}
+ source-map@0.8.0: {}
+
split2@4.2.0: {}
srvx@1.0.5: {}
@@ -11655,8 +11795,6 @@ snapshots:
statuses@2.0.2: {}
- std-env@4.1.0: {}
-
std-env@4.2.0: {}
std-env@4.3.0: {}
@@ -11688,6 +11826,11 @@ snapshots:
get-east-asian-width: 1.5.0
strip-ansi: 7.2.0
+ string-width@8.3.0:
+ dependencies:
+ get-east-asian-width: 1.5.0
+ strip-ansi: 7.2.0
+
string_decoder@1.1.1:
dependencies:
safe-buffer: 5.1.2
@@ -11708,10 +11851,6 @@ snapshots:
strip-json-comments@5.0.3: {}
- strip-literal@3.1.0:
- dependencies:
- js-tokens: 9.0.1
-
strip-literal@4.0.0:
dependencies:
js-tokens: 10.0.0
@@ -11843,7 +11982,9 @@ snapshots:
tinybench@2.9.0: {}
- tinyclip@0.1.12: {}
+ tinybench@6.2.2: {}
+
+ tinyclip@0.1.15: {}
tinyclip@1.0.3: {}
@@ -11960,53 +12101,51 @@ snapshots:
uint8array-extras@1.6.0: {}
- ultrahtml@1.6.0: {}
-
ultrahtml@1.7.0: {}
uncrypto@0.1.3: {}
unctx@2.5.0:
dependencies:
- acorn: 8.16.0
+ acorn: 8.18.0
estree-walker: 3.0.3
magic-string: 0.30.21
unplugin: 2.3.11
- unctx@3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
+ unctx@3.0.0(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 0.30.21
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
+ unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 1.4.3
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
+ unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 1.4.3
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
+ unctx@3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 1.4.3
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
+ unctx@3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
magic-string: 1.4.3
oxc-parser: 0.141.0
rolldown: 1.2.15
- unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
undici-types@8.9.0: {}
@@ -12016,10 +12155,10 @@ snapshots:
dependencies:
pathe: 2.0.3
- unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
hookable: 6.1.1
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
@@ -12042,36 +12181,37 @@ snapshots:
ohash: 2.0.11
undici: 8.12.3
- unimport@6.2.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ unimport@6.5.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
- acorn: 8.16.0
+ acorn: 8.18.0
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
local-pkg: 1.2.1
- magic-string: 0.30.21
+ magic-string: 1.4.3
mlly: 1.8.2
pathe: 2.0.3
picomatch: 4.0.7
- pkg-types: 2.3.1
+ pkg-types: 2.4.0
scule: 1.3.0
- strip-literal: 3.1.0
+ strip-literal: 4.0.0
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
optionalDependencies:
oxc-parser: 0.141.0
+ rolldown: 1.2.15
transitivePeerDependencies:
- '@farmfe/core'
+ - '@rsbuild/core'
- '@rspack/core'
- bun-types-no-globals
- esbuild
- - rolldown
- rollup
- unloader
- vite
- webpack
- unimport@7.0.2(acorn@8.18.0)(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ unimport@7.0.2(acorn@8.18.0)(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
@@ -12084,7 +12224,7 @@ snapshots:
scule: 1.3.0
strip-literal: 4.0.0
tinyglobby: 0.2.17
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
optionalDependencies:
acorn: 8.18.0
@@ -12102,11 +12242,6 @@ snapshots:
universalify@2.0.1: {}
- unplugin-utils@0.3.1:
- dependencies:
- pathe: 2.0.3
- picomatch: 4.0.7
-
unplugin-utils@0.3.2:
dependencies:
pathe: 2.0.3
@@ -12119,7 +12254,7 @@ snapshots:
picomatch: 4.0.7
webpack-virtual-modules: 0.6.2
- unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@jridgewell/remapping': 2.3.5
picomatch: 4.0.7
@@ -12127,10 +12262,10 @@ snapshots:
optionalDependencies:
esbuild: 0.28.2
rolldown: 1.2.15
- rollup: 4.60.3
+ rollup: 4.65.0
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@jridgewell/remapping': 2.3.5
picomatch: 4.0.7
@@ -12138,7 +12273,7 @@ snapshots:
optionalDependencies:
esbuild: 0.28.2
rolldown: 1.2.15
- rollup: 4.60.3
+ rollup: 4.65.0
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
unrouting@0.2.3:
@@ -12146,7 +12281,7 @@ snapshots:
escape-string-regexp: 5.0.0
ufo: 1.6.4
- unstorage@1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.10.1(supports-color@10.2.2)):
+ unstorage@1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2)):
dependencies:
anymatch: 3.1.3
chokidar: 5.0.0
@@ -12158,13 +12293,23 @@ snapshots:
ufo: 1.6.4
optionalDependencies:
db0: 0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))
- ioredis: 5.10.1(supports-color@10.2.2)
+ ioredis: 5.11.1(supports-color@10.2.2)
- untun@0.1.3:
+ unstorage@1.17.6(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2)):
dependencies:
- citty: 0.1.6
- consola: 3.4.2
- pathe: 1.1.2
+ anymatch: 3.1.3
+ chokidar: 5.0.0
+ destr: 2.0.5
+ h3: 1.15.11
+ lru-cache: 11.5.3
+ node-fetch-native: 1.6.7
+ ofetch: 1.5.1
+ ufo: 1.6.4
+ optionalDependencies:
+ db0: 0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))
+ ioredis: 5.11.1(supports-color@10.2.2)
+
+ untun@0.2.2: {}
untyped@2.0.0:
dependencies:
@@ -12176,12 +12321,12 @@ snapshots:
unwasm@0.5.3:
dependencies:
- exsolve: 1.1.1
+ exsolve: 1.1.3
knitwork: 1.3.0
magic-string: 0.30.21
mlly: 1.8.2
pathe: 2.0.3
- pkg-types: 2.3.1
+ pkg-types: 2.4.0
update-browserslist-db@1.3.1(browserslist@4.28.8):
dependencies:
@@ -12202,7 +12347,7 @@ snapshots:
util-deprecate@1.0.2: {}
- uuid@14.0.2: {}
+ uuid@14.0.3: {}
vary@1.1.2: {}
@@ -12257,7 +12402,7 @@ snapshots:
typescript: 5.9.3
vue-tsc: 3.3.11(typescript@5.9.3)
- vite-plugin-inspect@11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ vite-plugin-inspect@11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
ansis: 4.3.1
error-stack-parser-es: 1.0.5
@@ -12270,7 +12415,7 @@ snapshots:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vite-dev-rpc: 2.0.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
optionalDependencies:
- '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
vite-plugin-vue-tracer@1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
dependencies:
@@ -12327,6 +12472,29 @@ snapshots:
transitivePeerDependencies:
- msw
+ vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ dependencies:
+ '@types/chai': 5.2.3
+ '@vitest/mocker': 5.0.5(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ chai: 6.3.0
+ es-module-lexer: 2.3.2
+ expect-type: 1.4.0
+ magic-string: 1.4.3
+ obug: 3.0.0
+ picomatch: 4.0.7
+ std-env: 4.3.0
+ tinybench: 6.2.2
+ tinyexec: 1.3.1
+ tinyglobby: 0.2.17
+ vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+ why-is-node-running: 3.2.1
+ optionalDependencies:
+ '@opentelemetry/api': 1.9.1
+ '@types/node': 26.6.5
+ jsdom: 30.0.1(@noble/hashes@2.2.0)
+ transitivePeerDependencies:
+ - msw
+
vscode-uri@3.2.0: {}
vue-bundle-renderer@2.4.0:
@@ -12350,7 +12518,7 @@ snapshots:
'@vue/devtools-api': 6.6.4
vue: 3.5.44(typescript@5.9.3)
- vue-router@5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
+ vue-router@5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
dependencies:
'@vue-macros/common': 3.1.4(vue@3.5.44(typescript@5.9.3))
'@vue/devtools-api': 8.2.1
@@ -12366,7 +12534,7 @@ snapshots:
picomatch: 4.0.7
scule: 1.3.0
tinyglobby: 0.2.17
- unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.60.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
vue: 3.5.44(typescript@5.9.3)
optionalDependencies:
@@ -12462,6 +12630,8 @@ snapshots:
siginfo: 2.0.0
stackback: 0.0.2
+ why-is-node-running@3.2.1: {}
+
word-wrap@1.2.5: {}
wrap-ansi@6.2.0:
@@ -12561,6 +12731,15 @@ snapshots:
y18n: 5.0.8
yargs-parser: 22.0.0
+ yargs@18.2.0:
+ dependencies:
+ cliui: 9.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ string-width: 8.3.0
+ y18n: 5.0.8
+ yargs-parser: 22.0.0
+
ylru@1.4.0: {}
yocto-queue@0.1.0: {}
From c753e264b802ea86a0722e3b6b198c79f2bc2db1 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:48 +0200
Subject: [PATCH 04/44] chore(deps): Go 1.27 for the tracker and the relay
go (go.mod, images, CI) 1.26 -> 1.27 both modules
github.com/jackc/pgx/v5 5.10.0 -> 5.11.0 tracker
go-redis/v9 9.22.0 -> 9.23.0 tracker and relay
miniredis/v2 2.38.0 -> 2.40.0 tracker tests
golang.org/x/{sys,sync,text}, puddle, gopher-lua, go.uber.org/atomic: latest
Go 1.27 needed no code change: gofmt (whose alignment rules moved) leaves
both trees untouched, and go vet's new printf check for `%w` on a pointer
error finds nothing. encoding/json is now backed by v2, timers stay
synchronous as they have been since the go.mod line passed 1.23.
pgx 5.11 parses connection strings the way libpq does (a literal `+`,
last repeated key wins, bracketed IPv6, empty port means 5432) and adds
`Rows.TypeMap`; our DATABASE_URL forms are unaffected and nothing here
implements pgx.Rows. It also hardens decoders and redacts passwords from
parse errors.
go-redis 9.23 gives every client a dedicated pipeline pool. It is capped at
10 connections, never pre-dials, and spills to the main pool when full, so
the tracker can hold at most ten more Redis connections; `?pipeline_pool_size=`
in REDIS_URL tunes it. The 3 s timeouts the tracker pins are untouched.
Measured on golang:1.27: gofmt, go vet, go test and go test -race pass for
both modules, govulncheck finds no vulnerabilities, and both images build.
Co-Authored-By: Claude Opus 5.5
---
.github/workflows/relay-ci.yml | 12 ++++----
.github/workflows/tracker-ci.yml | 19 ++++++------
README.md | 6 ++--
apps/relay/Dockerfile | 2 +-
apps/relay/go.mod | 8 ++---
apps/relay/go.sum | 26 ++++++++--------
apps/tracker/Dockerfile | 2 +-
apps/tracker/go.mod | 20 ++++++-------
apps/tracker/go.sum | 51 +++++++++++++++-----------------
doc/guide/architecture.md | 2 +-
doc/guide/configuration.md | 2 +-
11 files changed, 73 insertions(+), 77 deletions(-)
diff --git a/.github/workflows/relay-ci.yml b/.github/workflows/relay-ci.yml
index 6d89d930..b86c8f32 100644
--- a/.github/workflows/relay-ci.yml
+++ b/.github/workflows/relay-ci.yml
@@ -59,12 +59,12 @@ jobs:
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
with:
# The minor, not `go-version-file`. The `go` directive in go.mod is a
- # minimum language version (`go 1.26.0`) and setup-go treats a full
- # x.y.z as an exact pin — which on the tracker built CI on go1.26.0
- # and failed govulncheck on 19 stdlib vulnerabilities fixed in
- # 1.26.1. Tracking the minor matches `golang:1.26-alpine` in the
+ # minimum language version (`go 1.27.0`) and setup-go treats a full
+ # x.y.z as an exact pin — which on the tracker once built CI on
+ # go1.26.0 and failed govulncheck on 19 stdlib vulnerabilities fixed
+ # in 1.26.1. Tracking the minor matches `golang:1.27-alpine` in the
# Dockerfile. Bump alongside the Dockerfile and the go.mod directive.
- go-version: '1.26'
+ go-version: '1.27'
check-latest: true
cache-dependency-path: apps/relay/go.sum
@@ -113,7 +113,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
with:
- go-version: '1.26'
+ go-version: '1.27'
check-latest: true
cache-dependency-path: apps/relay/go.sum
diff --git a/.github/workflows/tracker-ci.yml b/.github/workflows/tracker-ci.yml
index 54d2f8f0..02af0d58 100644
--- a/.github/workflows/tracker-ci.yml
+++ b/.github/workflows/tracker-ci.yml
@@ -47,14 +47,15 @@ jobs:
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
with:
# Deliberately the minor, not `go-version-file`. The `go` directive
- # in go.mod is a *minimum language version* (`go 1.26.0`), but
- # setup-go treats a full x.y.z as an exact pin — so reading it built
- # CI on go1.26.0, the initial release, which govulncheck correctly
- # flagged for 19 reachable stdlib vulnerabilities all fixed in
- # 1.26.1. Tracking the minor matches `golang:1.26-alpine` in the
- # Dockerfile, so CI tests the toolchain we actually ship. Bump this
- # alongside the Dockerfile and the go.mod directive.
- go-version: '1.26'
+ # in go.mod is a *minimum language version* (`go 1.27.0`), but
+ # setup-go treats a full x.y.z as an exact pin — so reading it, back
+ # when the directive said `go 1.26.0`, built CI on that initial
+ # release, which govulncheck correctly flagged for 19 reachable
+ # stdlib vulnerabilities all fixed in 1.26.1. Tracking the minor
+ # matches `golang:1.27-alpine` in the Dockerfile, so CI tests the
+ # toolchain we actually ship. Bump this alongside the Dockerfile and
+ # the go.mod directive.
+ go-version: '1.27'
check-latest: true
cache-dependency-path: apps/tracker/go.sum
@@ -100,7 +101,7 @@ jobs:
# Same reasoning as the test job: track the minor, not the go.mod
# directive. It matters most here — pinning to go1.26.0 is what made
# this job fail on 19 stdlib vulnerabilities fixed in 1.26.1.
- go-version: '1.26'
+ go-version: '1.27'
check-latest: true
cache-dependency-path: apps/tracker/go.sum
diff --git a/README.md b/README.md
index 3272c31e..a8800d4a 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ Three containers — Nuxt 4 web · Nitro API · Go tracker — backed by Postgre
[](https://nodejs.org/)
[](https://nuxt.com/)
-[](https://go.dev/)
+[](https://go.dev/)
[](https://www.typescriptlang.org/)
[](LICENSE)
@@ -95,7 +95,7 @@ Three independent containers behind Caddy, plus the usual Postgres + Redis. They
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ apps/web │ │ apps/api │ │ apps/tracker │
- │ Nuxt 4 SSR │ │ Nitro 4 │ │ Go 1.25 │
+ │ Nuxt 4 SSR │ │ Nitro 4 │ │ Go 1.27 │
│ Vue 3 / TS │ │ Drizzle ORM │ │ sqlc │
│ (stateless) │ │ Zod, h3 │ │ HTTP + UDP │
└──────────────┘ └──────┬───────┘ └──────┬───────┘
@@ -245,7 +245,7 @@ change end to end.
| ---------------- | ----------------------------------------- | -------------------------------------------------- |
| Frontend | Nuxt 4, Vue 3, Tailwind CSS, Tiptap | SSR by default, opt-in static SPA build |
| API | Nitro 4 (Node 26), Drizzle ORM, Zod | Standalone container, distroless runtime |
-| Tracker | Go 1.25, sqlc | `scratch`-based image, sub-ms announce p99 |
+| Tracker | Go 1.27, sqlc | `scratch`-based image, sub-ms announce p99 |
| Database | PostgreSQL 18 | `gin_trgm_ops` full-text, migrations at API boot |
| Connection pool | PgBouncer | Transaction-mode pooling |
| Cache / queue | Redis 8 | Peer hashes, sessions, rate-limit windows, pub/sub |
diff --git a/apps/relay/Dockerfile b/apps/relay/Dockerfile
index 60e0b92f..7f038966 100644
--- a/apps/relay/Dockerfile
+++ b/apps/relay/Dockerfile
@@ -8,7 +8,7 @@
# No /etc/passwd: USER takes a numeric uid:gid, which the kernel applies
# without a name lookup.
-FROM golang:1.26-alpine AS builder
+FROM golang:1.27-alpine AS builder
WORKDIR /src
COPY apps/relay/go.mod apps/relay/go.sum ./
diff --git a/apps/relay/go.mod b/apps/relay/go.mod
index f932ff78..e31107f7 100644
--- a/apps/relay/go.mod
+++ b/apps/relay/go.mod
@@ -1,11 +1,11 @@
module github.com/florianjs/trackarr/apps/relay
-go 1.26.0
+go 1.27.0
-require github.com/redis/go-redis/v9 v9.22.0
+require github.com/redis/go-redis/v9 v9.23.0
require (
github.com/cespare/xxhash/v2 v2.3.0 // indirect
- go.uber.org/atomic v1.11.0 // indirect
- golang.org/x/sys v0.44.0 // indirect
+ go.uber.org/atomic v1.12.0 // indirect
+ golang.org/x/sys v0.49.0 // indirect
)
diff --git a/apps/relay/go.sum b/apps/relay/go.sum
index 4f35daa9..edc2c001 100644
--- a/apps/relay/go.sum
+++ b/apps/relay/go.sum
@@ -4,19 +4,17 @@ github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
-github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/redis/go-redis/v9 v9.22.0 h1:laDvpYXTJtZLloinw1fA5Kqd6HAEH2XKxOkG/PDq2F0=
-github.com/redis/go-redis/v9 v9.22.0/go.mod h1:y2g0Wj8rQvuK0ELM+oxSudcLtC09JScs98I/X9gRWY4=
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/klauspost/cpuid/v2 v2.4.0 h1:S6Hrbc7+ywsr0r+RLapfGBHfyefhCTwEh3A0tV913Dw=
+github.com/klauspost/cpuid/v2 v2.4.0/go.mod h1:19jmZ9mjzoF//ddRSUsv0zfBTJWh3QJh9FNxZTMrGxU=
+github.com/redis/go-redis/v9 v9.23.0 h1:/TTVdJa8BRNsybwwGGnmiYktHNlUXtbOQxlWpHBPL3s=
+github.com/redis/go-redis/v9 v9.23.0/go.mod h1:EWP2UUk+XDaI1s5nQB5mablZN6vccXlmBQTyfnF87D0=
+github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE=
+github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg=
github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
-go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
-go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
-golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
-golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+go.uber.org/atomic v1.12.0 h1:BvcXdFKuviU4fTL/f+SxdQ5qJX/Jix8pAkgdUcb3XOE=
+go.uber.org/atomic v1.12.0/go.mod h1:I6c4cg+6HCxRjfjSsYtApoFILnpc0CGUdGkXVqbYVNk=
+go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
+go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg=
+golang.org/x/sys v0.49.0 h1:XbzkgYJHdqh/8m2Uu0W/dQv8nktxx4BFHp1M0gROTXA=
+golang.org/x/sys v0.49.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
diff --git a/apps/tracker/Dockerfile b/apps/tracker/Dockerfile
index cf294115..aa302b45 100644
--- a/apps/tracker/Dockerfile
+++ b/apps/tracker/Dockerfile
@@ -11,7 +11,7 @@
# We also skip /etc/passwd: USER takes a numeric uid:gid, so the kernel
# applies it without ever needing to look up a username.
-FROM golang:1.26-alpine AS builder
+FROM golang:1.27-alpine AS builder
WORKDIR /src
# Cache deps independently of source changes.
diff --git a/apps/tracker/go.mod b/apps/tracker/go.mod
index 823b2f7b..0fd10fe3 100644
--- a/apps/tracker/go.mod
+++ b/apps/tracker/go.mod
@@ -1,21 +1,21 @@
module github.com/florianjs/trackarr/apps/tracker
-go 1.26.0
+go 1.27.0
require (
- github.com/alicebob/miniredis/v2 v2.38.0
- github.com/jackc/pgx/v5 v5.10.0
- github.com/redis/go-redis/v9 v9.22.0
+ github.com/alicebob/miniredis/v2 v2.40.0
+ github.com/jackc/pgx/v5 v5.11.0
+ github.com/redis/go-redis/v9 v9.23.0
)
require (
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
- github.com/jackc/puddle/v2 v2.2.2 // indirect
- github.com/yuin/gopher-lua v1.1.1 // indirect
- go.uber.org/atomic v1.11.0 // indirect
- golang.org/x/sync v0.22.0 // indirect
- golang.org/x/sys v0.47.0 // indirect
- golang.org/x/text v0.41.0 // indirect
+ github.com/jackc/puddle/v2 v2.2.3 // indirect
+ github.com/yuin/gopher-lua v1.1.2 // indirect
+ go.uber.org/atomic v1.12.0 // indirect
+ golang.org/x/sync v0.24.0 // indirect
+ golang.org/x/sys v0.49.0 // indirect
+ golang.org/x/text v0.43.0 // indirect
)
diff --git a/apps/tracker/go.sum b/apps/tracker/go.sum
index 3e94c635..be24b4e2 100644
--- a/apps/tracker/go.sum
+++ b/apps/tracker/go.sum
@@ -1,5 +1,5 @@
-github.com/alicebob/miniredis/v2 v2.38.0 h1:nZAzCR+Lj+Vxk4ZXzm2NuKq2O33RXj1XxJ2e2uP9jiw=
-github.com/alicebob/miniredis/v2 v2.38.0/go.mod h1:TcL7YfarKPGDAthEtl5NBeHZfeUQj6OXMm/+iu5cLMM=
+github.com/alicebob/miniredis/v2 v2.40.0 h1:6IgTQbvm2JiMYZ8yur/acNJzVjtSOWCelxXbk/LUBXc=
+github.com/alicebob/miniredis/v2 v2.40.0/go.mod h1:TcL7YfarKPGDAthEtl5NBeHZfeUQj6OXMm/+iu5cLMM=
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
@@ -7,40 +7,37 @@ github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
-github.com/jackc/pgx/v5 v5.10.0 h1:VhSvgU2jSli8o3AqIEOTJr7rZwAEUVo4E4XhR94Zfr0=
-github.com/jackc/pgx/v5 v5.10.0/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
-github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
-github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
-github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
-github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/jackc/pgx/v5 v5.11.0 h1:IzBBtyK9AHqf98cctWFifYSci2hgQR/cd56wB4p+ogg=
+github.com/jackc/pgx/v5 v5.11.0/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
+github.com/jackc/puddle/v2 v2.2.3 h1:f8HoREISb3l5eO9coPgK7U3hKLhWGokOFVcThl5jrao=
+github.com/jackc/puddle/v2 v2.2.3/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
+github.com/klauspost/cpuid/v2 v2.4.0 h1:S6Hrbc7+ywsr0r+RLapfGBHfyefhCTwEh3A0tV913Dw=
+github.com/klauspost/cpuid/v2 v2.4.0/go.mod h1:19jmZ9mjzoF//ddRSUsv0zfBTJWh3QJh9FNxZTMrGxU=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/redis/go-redis/v9 v9.22.0 h1:laDvpYXTJtZLloinw1fA5Kqd6HAEH2XKxOkG/PDq2F0=
-github.com/redis/go-redis/v9 v9.22.0/go.mod h1:y2g0Wj8rQvuK0ELM+oxSudcLtC09JScs98I/X9gRWY4=
+github.com/redis/go-redis/v9 v9.23.0 h1:/TTVdJa8BRNsybwwGGnmiYktHNlUXtbOQxlWpHBPL3s=
+github.com/redis/go-redis/v9 v9.23.0/go.mod h1:EWP2UUk+XDaI1s5nQB5mablZN6vccXlmBQTyfnF87D0=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
-github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
-github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=
-github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
+github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE=
+github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg=
+github.com/yuin/gopher-lua v1.1.2 h1:yF/FjE3hD65tBbt0VXLE13HWS9h34fdzJmrWRXwobGA=
+github.com/yuin/gopher-lua v1.1.2/go.mod h1:7aRmXIWl37SqRf0koeyylBEzJ+aPt8A+mmkQ4f1ntR8=
github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
-go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
-go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
-golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
-golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
-golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
-golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
-golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
-golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
+go.uber.org/atomic v1.12.0 h1:BvcXdFKuviU4fTL/f+SxdQ5qJX/Jix8pAkgdUcb3XOE=
+go.uber.org/atomic v1.12.0/go.mod h1:I6c4cg+6HCxRjfjSsYtApoFILnpc0CGUdGkXVqbYVNk=
+go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
+go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg=
+golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA=
+golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
+golang.org/x/sys v0.49.0 h1:XbzkgYJHdqh/8m2Uu0W/dQv8nktxx4BFHp1M0gROTXA=
+golang.org/x/sys v0.49.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
+golang.org/x/text v0.43.0 h1:1QivrlhwAsnMOcqgOdl9my7s9OyZl8O5/UGUTJVXoWc=
+golang.org/x/text v0.43.0/go.mod h1:hbSIYA/amXcRXTFSZqh8tWHEoqRvvbKPJ2uz/KU+a+s=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/doc/guide/architecture.md b/doc/guide/architecture.md
index c2b98cd4..83adf01d 100644
--- a/doc/guide/architecture.md
+++ b/doc/guide/architecture.md
@@ -16,7 +16,7 @@ plus the usual Postgres + Redis pair. They share zero process state
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ apps/web │ │ apps/api │ │ apps/tracker │
- │ Nuxt 4 SSR │ │ Nitro 4 │ │ Go 1.25 │
+ │ Nuxt 4 SSR │ │ Nitro 4 │ │ Go 1.27 │
│ Vue 3 │ │ Drizzle ORM │ │ sqlc │
│ TypeScript │ │ Zod, h3 │ │ HTTP + UDP │
└─────────────┘ └──────┬──────┘ └──────┬───────┘
diff --git a/doc/guide/configuration.md b/doc/guide/configuration.md
index d58d71a8..279a6526 100644
--- a/doc/guide/configuration.md
+++ b/doc/guide/configuration.md
@@ -39,7 +39,7 @@ The production stack ships **three independent application containers** behind C
| -------------- | --------------------------------------------------------------------------------- |
| `web` (`front-ssr`) | Nuxt 4 SSR — UI shell + page chunks |
| `api` | Nitro 4 standalone — every `/api/*`, `/uploads/*`, SSE notifications |
-| `tracker` | Go 1.25 — BEP 3 HTTP announce on `:8080`, BEP 15 UDP announce on `:6969` |
+| `tracker` | Go 1.27 — BEP 3 HTTP announce on `:8080`, BEP 15 UDP announce on `:6969` |
| `postgres` | PostgreSQL 18 |
| `pgbouncer` | Transaction-mode pool between `api`/`tracker` and `postgres` |
| `redis` | Redis 8 — peer hashes, sessions, rate-limit windows, pub/sub bus |
From f1192a51f6c770d732d87f9221c8975dc83a3d1d Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:48 +0200
Subject: [PATCH 05/44] chore(deps): TypeScript 6, vitest 5, @nuxt/fonts 1 and
VueUse 15 in the web app
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
typescript 5.9.3 -> 6.0.3 the last release with a JS API
vue-tsc 3.3.11 -> 3.3.13
vitest 4.1.12 -> 5.0.5
@nuxt/fonts 0.14.0 -> 1.1.0
@nuxt/icon 2.5.1 -> 2.6.0
@vueuse/core 14.4.0 -> 15.0.0
@simplewebauthn/browser 13.3.0 -> 14.0.0
@tiptap/* 3.31.0 -> 3.32.0
pinia, @pinia/nuxt 4.0.3, 1.0.2 -> 4.1.0, 1.0.3
chart.js 4.5.1 -> 4.6.1
isomorphic-dompurify 4.1.0 -> 4.6.0 DOMPurify 3.4.17
marked, mediainfo.js, @iconify-json/simple-icons: latest patch
TypeScript stops at 6.0. vue-tsc 3.3.13 still needs the JavaScript
compiler API, which TypeScript 7 no longer ships; what it learned is to
follow a `typescript` aliased to @typescript/typescript6 down to the tsc 6
inside it. @vue/language-core 4.0.0-alpha.0 wants typescript >=7.1.0-beta.
`nuxt typecheck` passes on 6.0.3, and an error planted in a .vue file on
purpose is reported (TS2322), so the pass is real. pnpm-workspace.yaml
records why the two TypeScripts stay apart.
@nuxt/fonts 1.0 serves the faces from /_nuxt/fonts/ instead of /_fonts/.
The static image's `^~ /_nuxt/` block already gives them a year as
immutable, so its `/_fonts/` block goes; the CSP needs nothing, since
'self' covers both. Measured on the running stack: the woff2 files answer
200 with `max-age=31536000, immutable` in both shapes, and Inter and
JetBrains Mono load.
Reading the module also showed that the Docker build cache for the faces
never worked. @nuxt/fonts keeps it under Nuxt's rootDir
(apps/web/node_modules/.cache/nuxt/fonts, 3 MB) — 0.14 got the same path
from the working directory pnpm runs the script in — while both
Dockerfiles mounted /app/node_modules/.cache/nuxt, which nothing writes
to. The mount now targets the real path; the static build that followed an
SSR build downloaded nothing.
VueUse 15 drops templateRef, Node 20 and the timer options replaced by
`scheduler`; our one import, watchDebounced with `{ debounce }`, is
unchanged. @simplewebauthn/browser 14's only breaking change is the
runtime floor. tiptap 3.32's @tiptap/pm now requires prosemirror-view
^1.42.6 and prosemirror-model ^1.25.12 on its own, so the two overrides
that held those floors for 3.31 are gone; the resolution is identical
without them, one copy of each. vue-router, unhead and devalue@5 stay, as
nuxt 4.6.2 and @nuxtjs/i18n 10.6.0 have not moved.
Not here: Tailwind CSS 4. @nuxtjs/tailwindcss 6.14.0 is the module's latest
and only speaks Tailwind 3.
Measured: typecheck, 954 unit tests, both image builds, and the e2e suite
(543 checks, 0 failures) against both front shapes.
Co-Authored-By: Claude Opus 5.5
---
README.md | 2 +-
apps/web/Dockerfile | 9 +-
apps/web/Dockerfile.static | 9 +-
apps/web/docker/static/nginx.conf | 30 +-
apps/web/nuxt.config.ts | 8 +-
apps/web/package.json | 44 +-
apps/web/server/plugins/csp.ts | 2 +-
packages/shared/src/theme.ts | 2 +-
pnpm-lock.yaml | 1651 ++++++++++++++---------------
pnpm-workspace.yaml | 33 +-
10 files changed, 854 insertions(+), 936 deletions(-)
diff --git a/README.md b/README.md
index a8800d4a..78f8f203 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ Three containers — Nuxt 4 web · Nitro API · Go tracker — backed by Postgre
[](https://nodejs.org/)
[](https://nuxt.com/)
[](https://go.dev/)
-[](https://www.typescriptlang.org/)
+[](https://www.typescriptlang.org/)
[](LICENSE)
[Features](#-features) • [Architecture](#-architecture) • [Quick Start](#-quick-start) • [Static deployment](#-static-deployment-no-ssr) • [Documentation](https://dim145.github.io/opentracker/) • [Live Demo](https://tracker.florianargaud.com/)
diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile
index 5e692aea..9de2a022 100644
--- a/apps/web/Dockerfile
+++ b/apps/web/Dockerfile
@@ -50,9 +50,16 @@ COPY tsconfig.base.json ./
# mode from "the build breaks" into "the first build of the day is the only one
# that needs Google".
#
+# The target is the WEB package's node_modules, not the workspace root's: the
+# module resolves its cache against Nuxt's `rootDir` (apps/web) — @nuxt/fonts
+# 1.x says so, and 0.14 got the same path from the working directory pnpm
+# runs the script in. Until 2026-10 this mounted `/app/node_modules/.cache/nuxt`,
+# which nothing writes to, so the cache this comment promises never existed:
+# measured, the faces land in apps/web/node_modules/.cache/nuxt/fonts (3 MB).
+#
# It does not help a cold CI runner. If a release pipeline cannot tolerate a
# retry, switch the families to `provider: 'local'` — see apps/web/nuxt.config.ts.
-RUN --mount=type=cache,target=/app/node_modules/.cache/nuxt,sharing=locked \
+RUN --mount=type=cache,target=/app/apps/web/node_modules/.cache/nuxt/fonts,sharing=locked \
pnpm --filter @trackarr/web build
# -----------------------------------------------------------------------------
diff --git a/apps/web/Dockerfile.static b/apps/web/Dockerfile.static
index 02a93300..fd6d6e6d 100644
--- a/apps/web/Dockerfile.static
+++ b/apps/web/Dockerfile.static
@@ -63,9 +63,16 @@ ENV NUXT_STATIC_BUILD=true \
# mode from "the build breaks" into "the first build of the day is the only one
# that needs Google".
#
+# The target is the WEB package's node_modules, not the workspace root's: the
+# module resolves its cache against Nuxt's `rootDir` (apps/web) — @nuxt/fonts
+# 1.x says so, and 0.14 got the same path from the working directory pnpm
+# runs the script in. Until 2026-10 this mounted `/app/node_modules/.cache/nuxt`,
+# which nothing writes to, so the cache this comment promises never existed:
+# measured, the faces land in apps/web/node_modules/.cache/nuxt/fonts (3 MB).
+#
# It does not help a cold CI runner. If a release pipeline cannot tolerate a
# retry, switch the families to `provider: 'local'` — see apps/web/nuxt.config.ts.
-RUN --mount=type=cache,target=/app/node_modules/.cache/nuxt,sharing=locked \
+RUN --mount=type=cache,target=/app/apps/web/node_modules/.cache/nuxt/fonts,sharing=locked \
pnpm --filter @trackarr/web exec nuxi generate
# -----------------------------------------------------------------------------
diff --git a/apps/web/docker/static/nginx.conf b/apps/web/docker/static/nginx.conf
index 124bd10e..7dadf56f 100644
--- a/apps/web/docker/static/nginx.conf
+++ b/apps/web/docker/static/nginx.conf
@@ -71,7 +71,7 @@ http {
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()" always;
# No third-party origin: `@nuxt/fonts` downloads Inter, JetBrains Mono and
- # Fraunces at build time and this image serves them from `/_fonts/`, so
+ # Fraunces at build time and this image serves them from `/_nuxt/fonts/`, so
# `'self'` covers the faces as well as the stylesheet. Keep it that way — the
# point of self-hosting was that a visitor's IP never reaches a font CDN.
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https:; frame-ancestors 'self'; object-src 'none'; base-uri 'self'; form-action 'self'" always;
@@ -114,29 +114,11 @@ http {
try_files $uri =404;
}
- # Self-hosted font faces (`@nuxt/fonts`). Content-addressed filenames, so
- # they are as immutable as the bundle — a returning visitor should never
- # revalidate them.
- #
- # `^~` and not a plain prefix, deliberately: nginx lets a matching regex
- # location beat a remembered prefix, and the `\.woff2?$` block further down
- # would otherwise capture these and hand back 7 days instead of a year.
- location ^~ /_fonts/ {
- # `add_header` here drops EVERY header inherited from the http block —
- # nginx's inheritance is all-or-nothing — so the whole set is repeated.
- # Keep it in sync with the http block above. Omitting it is how this file
- # came to declare a policy it never sent; see the note there.
- #
- # One `Cache-Control`, not `expires` plus an `add_header`: the pair emits
- # the header twice and browsers are entitled to take either.
- add_header Cache-Control "public, max-age=31536000, immutable" always;
- add_header X-Frame-Options "SAMEORIGIN" always;
- add_header X-Content-Type-Options "nosniff" always;
- add_header Referrer-Policy "strict-origin-when-cross-origin" always;
- add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()" always;
- add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https:; frame-ancestors 'self'; object-src 'none'; base-uri 'self'; form-action 'self'" always;
- try_files $uri =404;
- }
+ # No `/_fonts/` block any more. @nuxt/fonts 1.x writes the self-hosted
+ # faces under the build assets directory, `/_nuxt/fonts/`, so the `^~ /_nuxt/`
+ # block above already serves them for a year as `immutable` — their names are
+ # content-addressed like the rest of the bundle — and the `\.woff2?$` regex
+ # below never sees them.
# Nuxt's hydration payload files (`_payload.json`, `_payload.js`).
# These ONLY exist for routes that were pre-rendered at build
diff --git a/apps/web/nuxt.config.ts b/apps/web/nuxt.config.ts
index 8ef3995d..c98d7fa2 100644
--- a/apps/web/nuxt.config.ts
+++ b/apps/web/nuxt.config.ts
@@ -93,7 +93,9 @@ export default defineNuxtConfig({
// (`fonts.googleapis.com` in `style-src`, `fonts.gstatic.com` in `font-src`).
// Both are gone now — see `server/plugins/csp.ts` and
// `docker/static/nginx.conf`. The module downloads the faces at build time
- // and serves them from `/_fonts/`, so the running site talks to nobody.
+ // and serves them from `/_nuxt/fonts/` — `/_fonts/` until @nuxt/fonts 1.0
+ // moved them under the build assets directory — so the running site talks to
+ // nobody.
//
// ## Why every family is listed by hand
//
@@ -129,8 +131,8 @@ export default defineNuxtConfig({
// a rate-limit or an offline machine FAILS the build rather than quietly
// shipping an image with no faces — which is the right way round, but it does
// mean a release now needs network. 336 kB across eight `.woff2`, cached in
- // `node_modules/.cache/nuxt/fonts` between builds on the same machine and
- // therefore cold on a CI runner. The alternative was committing the files, and
+ // `apps/web/node_modules/.cache/nuxt/fonts` between builds on the same machine
+ // and therefore cold on a CI runner. The alternative was committing the files, and
// it is still the escape hatch if that ever bites: `provider: 'local'` with
// the faces under `public/fonts/`.
//
diff --git a/apps/web/package.json b/apps/web/package.json
index 8768e489..e5bc12c0 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -14,28 +14,28 @@
"typecheck": "nuxt typecheck"
},
"dependencies": {
- "@iconify-json/simple-icons": "^1.2.94",
+ "@iconify-json/simple-icons": "^1.2.100",
"@nuxtjs/i18n": "^10.6.0",
"@nuxtjs/tailwindcss": "6.14.0",
- "@pinia/nuxt": "1.0.2",
- "@simplewebauthn/browser": "^13.3.0",
- "@tiptap/extension-color": "^3.31.0",
- "@tiptap/extension-image": "^3.31.0",
- "@tiptap/extension-link": "^3.31.0",
- "@tiptap/extension-placeholder": "^3.31.0",
- "@tiptap/extension-text-align": "^3.31.0",
- "@tiptap/extension-text-style": "^3.31.0",
- "@tiptap/starter-kit": "^3.31.0",
- "@tiptap/vue-3": "^3.31.0",
+ "@pinia/nuxt": "1.0.3",
+ "@simplewebauthn/browser": "^14.0.0",
+ "@tiptap/extension-color": "^3.32.0",
+ "@tiptap/extension-image": "^3.32.0",
+ "@tiptap/extension-link": "^3.32.0",
+ "@tiptap/extension-placeholder": "^3.32.0",
+ "@tiptap/extension-text-align": "^3.32.0",
+ "@tiptap/extension-text-style": "^3.32.0",
+ "@tiptap/starter-kit": "^3.32.0",
+ "@tiptap/vue-3": "^3.32.0",
"@trackarr/shared": "workspace:*",
- "@vueuse/core": "^14.4.0",
- "chart.js": "^4.5.1",
+ "@vueuse/core": "^15.0.0",
+ "chart.js": "^4.6.1",
"chartjs-plugin-zoom": "^2.2.0",
- "isomorphic-dompurify": "^4.1.0",
- "marked": "^18.0.9",
- "mediainfo.js": "^0.3.7",
+ "isomorphic-dompurify": "^4.6.0",
+ "marked": "^18.1.1",
+ "mediainfo.js": "^0.3.8",
"nuxt": "^4.6.2",
- "pinia": "^4.0.3",
+ "pinia": "^4.1.0",
"turndown": "^7.2.4",
"vue": "^3.5.44",
"vue-chartjs": "^5.3.4",
@@ -43,11 +43,11 @@
},
"devDependencies": {
"@iconify-json/ph": "^1.2.2",
- "@nuxt/fonts": "^0.14.0",
- "@nuxt/icon": "^2.5.1",
+ "@nuxt/fonts": "^1.1.0",
+ "@nuxt/icon": "^2.6.0",
"@types/turndown": "^5.0.6",
- "typescript": "~5.9.3",
- "vitest": "^4.1.12",
- "vue-tsc": "^3.3.11"
+ "typescript": "~6.0.3",
+ "vitest": "^5.0.5",
+ "vue-tsc": "^3.3.13"
}
}
diff --git a/apps/web/server/plugins/csp.ts b/apps/web/server/plugins/csp.ts
index 3380cf7b..fffa0d20 100644
--- a/apps/web/server/plugins/csp.ts
+++ b/apps/web/server/plugins/csp.ts
@@ -86,7 +86,7 @@ function buildPolicy(nonce: string): string {
//
// The `fonts.googleapis.com` origin that used to be here is gone —
// `@nuxt/fonts` downloads the faces at build time and serves them from
- // `/_fonts/`, so `'self'` covers both the stylesheet and the files.
+ // `/_nuxt/fonts/`, so `'self'` covers both the stylesheet and the files.
"style-src 'self' 'unsafe-inline'",
`style-src-elem 'self' 'nonce-${nonce}'`,
"style-src-attr 'unsafe-inline'",
diff --git a/packages/shared/src/theme.ts b/packages/shared/src/theme.ts
index c956596b..f3af1278 100644
--- a/packages/shared/src/theme.ts
+++ b/packages/shared/src/theme.ts
@@ -403,7 +403,7 @@ export const THEME_TOKENS: readonly TokenDef[] = [
* bundler would otherwise never emit their `@font-face`. The stacks named
* `system-*` download nothing.
*
- * The fallbacks are not decoration. A face served from `/_fonts/` still has to
+ * The fallbacks are not decoration. A face served from `/_nuxt/fonts/` still has to
* arrive, and until it does the browser renders the next entry, so every stack
* ends in something that is already on the machine.
*/
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index af8aeb65..b80b5e23 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -201,8 +201,6 @@ overrides:
source-map-js: ^1.2.2
fast-copy: ^4.1.0
vite: ^8.2.4
- prosemirror-view: ^1.42.3
- prosemirror-model: ^1.25.12
vue-router: ^5.4.0
unhead: ^3.4.3
serialize-javascript: ^7.1.3
@@ -313,110 +311,110 @@ importers:
version: 13.2.0
vitest:
specifier: ^5.0.5
- version: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ version: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.1.3(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
apps/web:
dependencies:
'@iconify-json/simple-icons':
- specifier: ^1.2.94
- version: 1.2.94
+ specifier: ^1.2.100
+ version: 1.2.100
'@nuxtjs/i18n':
specifier: ^10.6.0
- version: 10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)))(rolldown@1.2.15)(rollup@4.65.0)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
'@nuxtjs/tailwindcss':
specifier: 6.14.0
version: 6.14.0(magicast@0.5.5)(supports-color@10.2.2)(tsx@4.23.15)(yaml@2.9.0)
'@pinia/nuxt':
- specifier: 1.0.2
- version: 1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ specifier: 1.0.3
+ version: 1.0.3(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)))(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
'@simplewebauthn/browser':
- specifier: ^13.3.0
- version: 13.3.0
+ specifier: ^14.0.0
+ version: 14.0.0
'@tiptap/extension-color':
- specifier: ^3.31.0
- version: 3.31.0(@tiptap/extension-text-style@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0)))
+ specifier: ^3.32.0
+ version: 3.32.0(@tiptap/extension-text-style@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)))
'@tiptap/extension-image':
- specifier: ^3.31.0
- version: 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
+ specifier: ^3.32.0
+ version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
'@tiptap/extension-link':
- specifier: ^3.31.0
- version: 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ specifier: ^3.32.0
+ version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
'@tiptap/extension-placeholder':
- specifier: ^3.31.0
- version: 3.31.0(@tiptap/extensions@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))
+ specifier: ^3.32.0
+ version: 3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))
'@tiptap/extension-text-align':
- specifier: ^3.31.0
- version: 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
+ specifier: ^3.32.0
+ version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
'@tiptap/extension-text-style':
- specifier: ^3.31.0
- version: 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
+ specifier: ^3.32.0
+ version: 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
'@tiptap/starter-kit':
- specifier: ^3.31.0
- version: 3.31.0
+ specifier: ^3.32.0
+ version: 3.32.0
'@tiptap/vue-3':
- specifier: ^3.31.0
- version: 3.31.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)(vue@3.5.44(typescript@5.9.3))
+ specifier: ^3.32.0
+ version: 3.32.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(vue@3.5.44(typescript@6.0.3))
'@trackarr/shared':
specifier: workspace:*
version: link:../../packages/shared
'@vueuse/core':
- specifier: ^14.4.0
- version: 14.4.0(vue@3.5.44(typescript@5.9.3))
+ specifier: ^15.0.0
+ version: 15.0.0(vue@3.5.44(typescript@6.0.3))
chart.js:
- specifier: ^4.5.1
- version: 4.5.1
+ specifier: ^4.6.1
+ version: 4.6.1
chartjs-plugin-zoom:
specifier: ^2.2.0
- version: 2.2.0(chart.js@4.5.1)
+ version: 2.2.0(chart.js@4.6.1)
isomorphic-dompurify:
- specifier: ^4.1.0
- version: 4.1.0(@noble/hashes@2.2.0)
+ specifier: ^4.6.0
+ version: 4.6.0(@noble/hashes@2.2.0)
marked:
- specifier: ^18.0.9
- version: 18.0.10
+ specifier: ^18.1.1
+ version: 18.1.1
mediainfo.js:
- specifier: ^0.3.7
- version: 0.3.7
+ specifier: ^0.3.8
+ version: 0.3.8
nuxt:
specifier: ^4.6.2
- version: 4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a)
+ version: 4.6.2(0aa2e1ff7ec74578bd134c9d216ec795)
pinia:
- specifier: ^4.0.3
- version: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
+ specifier: ^4.1.0
+ version: 4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3))
turndown:
specifier: ^7.2.4
version: 7.2.4
vue:
specifier: ^3.5.44
- version: 3.5.44(typescript@5.9.3)
+ version: 3.5.44(typescript@6.0.3)
vue-chartjs:
specifier: ^5.3.4
- version: 5.3.4(chart.js@4.5.1)(vue@3.5.44(typescript@5.9.3))
+ version: 5.3.4(chart.js@4.6.1)(vue@3.5.44(typescript@6.0.3))
vue-router:
specifier: ^5.4.0
- version: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ version: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
devDependencies:
'@iconify-json/ph':
specifier: ^1.2.2
version: 1.2.2
'@nuxt/fonts':
- specifier: ^0.14.0
- version: 0.14.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.11.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ specifier: ^1.1.0
+ version: 1.1.0(@nuxt/schema@4.6.2)(cac@7.0.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(postcss@8.5.26)(rolldown@1.2.15)(rollup@4.65.0)(srvx@1.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/icon':
- specifier: ^2.5.1
- version: 2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ specifier: ^2.6.0
+ version: 2.6.0(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
'@types/turndown':
specifier: ^5.0.6
version: 5.0.6
typescript:
- specifier: ~5.9.3
- version: 5.9.3
+ specifier: ~6.0.3
+ version: 6.0.3
vitest:
- specifier: ^4.1.12
- version: 4.1.12(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ specifier: ^5.0.5
+ version: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.1.3(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
vue-tsc:
- specifier: ^3.3.11
- version: 3.3.11(typescript@5.9.3)
+ specifier: ^3.3.13
+ version: 3.3.13(typescript@6.0.3)
packages/db:
dependencies:
@@ -442,13 +440,13 @@ packages:
'@antfu/install-pkg@2.1.0':
resolution: {integrity: sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==}
- '@asamuzakjp/css-color@6.0.7':
- resolution: {integrity: sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==}
- engines: {node: ^22.13.0 || >=24.0.0}
+ '@asamuzakjp/css-color@7.1.7':
+ resolution: {integrity: sha512-Q7ioeear07HwixdIitIn9KS1LZi97CEDFCSjPNm9v+y8KNbsu9q4Lrd4zUQW4faED+E7qxvfeVnbNRW46wFKuw==}
+ engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
- '@asamuzakjp/dom-selector@8.3.2':
- resolution: {integrity: sha512-93Z1N+BQNXysodoicpOIyNh2drHfz/CTf9nnT0FEx72GJcIiwgydD7tGAr78j41LsYn3hlRn+LdGPuBLn1Bl8Q==}
- engines: {node: ^22.13.0 || >=24.0.0}
+ '@asamuzakjp/dom-selector@10.0.5':
+ resolution: {integrity: sha512-EgmJ7oEaGQECTn3H3wmnQpEy4hKY66VvM7VQndwPIQob3p877BgbyOUE3EX0LgXQCciF2H8KMdR+RznqjMNOLw==}
+ engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
'@babel/code-frame@7.29.7':
resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
@@ -612,32 +610,32 @@ packages:
'@colordx/core@7.3.0':
resolution: {integrity: sha512-LVzTTPhX7wpy7TkGjouA9zbbCBIw92RGm7ZQqSKFE0oYE3sMx2FGXz90eVpgw7k/+wrrY+qJ86nHXifZWMS5jA==}
- '@csstools/color-helpers@6.1.1':
- resolution: {integrity: sha512-gLNsunvwf3mCi5u5o46/Z/JcJMnhbHSaZ69rkgPzNM3J4s8hWwpPUQB6/tt0EDFyCiWzxANlx+2LJwpYj4zS1w==}
+ '@csstools/color-helpers@6.1.2':
+ resolution: {integrity: sha512-grhRy3OKmniaAEKXMjua5z/EODX0MSqBGjunw8+j/3HQjOnahs2AGhvEOIYVUWcU6ScApbhLhVrQTX8XqrMrow==}
engines: {node: '>=20.19.0'}
- '@csstools/css-calc@3.3.0':
- resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==}
+ '@csstools/css-calc@3.4.3':
+ resolution: {integrity: sha512-iex20d8CHVkyvg6B7UKV7uHnI2Bqo9g+EFfT9E0y+GvTvhZ/DwONJ+9aKb1dlqm0ZiGsL5RXjp0fCoJYnkeDjA==}
engines: {node: '>=20.19.0'}
peerDependencies:
- '@csstools/css-parser-algorithms': ^4.0.0
- '@csstools/css-tokenizer': ^4.0.0
+ '@csstools/css-parser-algorithms': ^4.0.2
+ '@csstools/css-tokenizer': ^4.0.2
- '@csstools/css-color-parser@4.2.0':
- resolution: {integrity: sha512-5+5LEmFuY1AjXdYhmgjTJogtQnP1evJ1zrBZGUNZ0thkpwnnmKxcHdAMn/OtFjAb25zA+jKDVYVRl+5G7rjv1A==}
+ '@csstools/css-color-parser@4.2.6':
+ resolution: {integrity: sha512-iiPQ3iRWwnJkeEn6RIu6SJPr7hYrLz6XZ9s/QZl+2/LI5KQVjpl2fdmDSZKuD4xP6GMmMPgHFFXg6k1Wkz0Trg==}
engines: {node: '>=20.19.0'}
peerDependencies:
- '@csstools/css-parser-algorithms': ^4.0.0
- '@csstools/css-tokenizer': ^4.0.0
+ '@csstools/css-parser-algorithms': ^4.0.2
+ '@csstools/css-tokenizer': ^4.0.2
- '@csstools/css-parser-algorithms@4.0.0':
- resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==}
+ '@csstools/css-parser-algorithms@4.0.2':
+ resolution: {integrity: sha512-40cSKyMvK+tq4qz6Awrlye2WGuOKt3FwPgtGg6KTfbHOWNw+Rk1rzbAtZnZ6IBhsY491HLRnDXwoyBAijmmILA==}
engines: {node: '>=20.19.0'}
peerDependencies:
- '@csstools/css-tokenizer': ^4.0.0
+ '@csstools/css-tokenizer': ^4.0.2
- '@csstools/css-syntax-patches-for-csstree@1.1.8':
- resolution: {integrity: sha512-CpMLjAvwQg3BL5S0IeqsZNMH7EQrEWi0kLKOC13ZBF0ZwERiLWlibNPJr8G1kdU3Ms/r2KiNrF81pUh2HwAHdg==}
+ '@csstools/css-syntax-patches-for-csstree@1.1.15':
+ resolution: {integrity: sha512-J0u7HkVl2nzSlhsiTOp4AmwcUQ3D+mGEEKfBy/7To5/y7F2OHwyLrXfrhR0SMgr4p5Lo+eaMVSeai24zUcBIxA==}
peerDependencies:
css-tree: ^3.2.1
peerDependenciesMeta:
@@ -872,8 +870,8 @@ packages:
resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- '@exodus/bytes@1.15.1':
- resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==}
+ '@exodus/bytes@1.16.0':
+ resolution: {integrity: sha512-IcpW84uEn3N7ETtNZMlxKhfl6Pec8rUNGOTBtWbK1FKhJxIFAptZyVrvVRVBimAJxJCgc3PxepxkdWWG4DVzfA==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
'@noble/hashes': ^1.8.0 || ^2.0.0
@@ -916,11 +914,11 @@ packages:
'@iconify-json/ph@1.2.2':
resolution: {integrity: sha512-PgkEZNtqa8hBGjHXQa4pMwZa93hmfu8FUSjs/nv4oUU6yLsgv+gh9nu28Kqi8Fz9CCVu4hj1MZs9/60J57IzFw==}
- '@iconify-json/simple-icons@1.2.94':
- resolution: {integrity: sha512-l8UWzVxKaqZd9ABsE/M/9p6NyGkQnmCnOoZyhQmjlXCtY5PuL2rcWxOFk2l9pk7ux3ERMPkTLE4jl6kQpTkwxA==}
+ '@iconify-json/simple-icons@1.2.100':
+ resolution: {integrity: sha512-536pN2RCEQyy5bYwzayrs4e9egr8cmtVcbdSHLaQl/ULUsihzn1eZ0+Hhn50zgz9cbEotiynKsKQSEjFJ7qKmw==}
- '@iconify/collections@1.0.727':
- resolution: {integrity: sha512-n+ipAqz5A6TWExnndwdT6qVX7KfXiw5GNDSxO2otXs6rxFWdHqizHTW1WvmWmT6m2BqQ8lhzUyWSJvm4M3nMAg==}
+ '@iconify/collections@1.0.755':
+ resolution: {integrity: sha512-X5ek7eriIl25N6LQ1fNOsAJdNtlnQOaxpb4/NOW0d4qiif4K5ppr7j0Ow7+eiTuQcKK4YXBNHlw82t7DPcwhPg==}
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
@@ -928,8 +926,8 @@ packages:
'@iconify/utils@3.1.7':
resolution: {integrity: sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==}
- '@iconify/vue@5.0.1':
- resolution: {integrity: sha512-aumwwooJlFJ5H5qYWB6ZTAyM0C8hpfcSVLB9/a3qnH1GGvIJ+FEbpEs4s/HfErYe/M5qZeLjwmESR5fFm3lXEw==}
+ '@iconify/vue@5.0.4':
+ resolution: {integrity: sha512-9yP5PjOv5G9vStHfyPtQ69Ay1CSNAC3AZTRDJ4LX3UMX7nEH0GO8OKhc3qhcrXp1KS2GnlLufGbFCwD+U4Fi5A==}
peerDependencies:
vue: '>=3.0.0'
@@ -1129,16 +1127,6 @@ packages:
'@nuxt/devalue@2.0.2':
resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==}
- '@nuxt/devtools-kit@3.4.1':
- resolution: {integrity: sha512-6ltPm2yUW8GvDdf3VJna7+flLi+ej7xRfSr+S4ovevKt/CuPf9EqYOn1jW7Kw/U1MXt/71zkn+/O2vu3G6O9Hg==}
- peerDependencies:
- vite: ^8.2.4
-
- '@nuxt/devtools-kit@3.4.2':
- resolution: {integrity: sha512-TPPbmH9xrExagYxfCe6JgtbHmgchfgDdA656Yws18rn8I/oCvB+gcw3kTWBBp2sC9ipZPXsgbsW/yZnVnGNBiA==}
- peerDependencies:
- vite: ^8.2.4
-
'@nuxt/devtools-kit@3.4.4':
resolution: {integrity: sha512-q3aRKpnriK/kITYlYUXSE3O0R7WeJwSMLvtbo1HfcKXYg/q8688iIb5VURl0fbkSaFTk7ndU5HIbW+5f0JOJPQ==}
peerDependencies:
@@ -1158,11 +1146,19 @@ packages:
'@vitejs/devtools':
optional: true
- '@nuxt/fonts@0.14.0':
- resolution: {integrity: sha512-4uXQl9fa5F4ibdgU8zomoOcyMdnwgdem+Pi8JEqeDYI5yPR32Kam6HnuRr47dTb97CstaepAvXPWQUUHMtjsFQ==}
+ '@nuxt/fonts@1.1.0':
+ resolution: {integrity: sha512-qFyraSRExjeUkbxBrJOt4isXYFFJtBTOAgDWjajPaCjD6t8waRRPFMQDwQ0LjpputoltWdkj4t7oH1lxMmN10g==}
+ peerDependencies:
+ lightningcss: ^1.33.0
+ subset-font: ^2.9.0
+ peerDependenciesMeta:
+ lightningcss:
+ optional: true
+ subset-font:
+ optional: true
- '@nuxt/icon@2.5.1':
- resolution: {integrity: sha512-zBP72Po7BS+tXzoeDRA/Y9TTY77OIcNCyzfgXsOmep7zZShTEoe4p1WZBXce/9oJDK3YXmbYC3ILQ7XvqM4/XA==}
+ '@nuxt/icon@2.6.0':
+ resolution: {integrity: sha512-cMT2gOK0AS8+CFI45Upz0Erzm9wud+iJ/eX/YeWbcw9UmSdU16PjbYyHpRKSALFHoSi3E7j7WRgT/KyU7UG7iA==}
'@nuxt/kit@3.21.4':
resolution: {integrity: sha512-XDWhQJsA5hpdFpVSmImQIVXcsANJI07TjT1LZC/AUKJxl/dcM52Rq4uU+b3uqyVl4LZR1fODSDEzLxcdXq4Rmg==}
@@ -1698,10 +1694,10 @@ packages:
resolution: {integrity: sha512-adpW58ySPQMOUPv8pTKT3RIyCFqfUFt8X05ukPdtkQToXDVr8dMtxuenik1yx8tNFTbpApWsM/Hi5SzlIx48+Q==}
engines: {node: '>=20.0.0'}
- '@pinia/nuxt@1.0.2':
- resolution: {integrity: sha512-x+G/zz7SDjLq3TUf0jpaXiOb03ZY+O3i0q8aMP76Lz3MS/NaE71SJCCZjYiF8dNsz/0oOnCPT2DKghkumXlVRw==}
+ '@pinia/nuxt@1.0.3':
+ resolution: {integrity: sha512-riI5CHfiQUNqFJjY+KuopkOtxSiex2CQYEHdQHiZRhS20ebtkiXQXtYbL/ecni3vhOJvW1PyVfPT7j5SzwvpLQ==}
peerDependencies:
- pinia: ^4.0.3
+ pinia: ^4.1.0
'@pinojs/redact@0.4.0':
resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==}
@@ -2047,8 +2043,8 @@ packages:
'@scure/base@2.2.0':
resolution: {integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==}
- '@simplewebauthn/browser@13.3.0':
- resolution: {integrity: sha512-BE/UWv6FOToAdVk0EokzkqQQDOWtNydYlY6+OrmiZ5SCNmb41VehttboTetUM3T/fr6EAFYVXjz4My2wg230rQ==}
+ '@simplewebauthn/browser@14.0.0':
+ resolution: {integrity: sha512-1odWVqeEBTl7lJ9zMKLEsmTlnyrDO5iRcTvfMKKk1WThUnp/i8JJdffdj2icP+tty159s4PgwE3BiMoEW9NFow==}
'@simplewebauthn/server@14.0.3':
resolution: {integrity: sha512-D39/0fiDiYmGV+nraY9s63D1Ho2AX/waMLy22/9gUadTUuvbAnstfb4bpbHYbwZuV5ZLDYN1SmzDKuiHzKAA4Q==}
@@ -2065,184 +2061,181 @@ packages:
'@speed-highlight/core@1.2.15':
resolution: {integrity: sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==}
- '@standard-schema/spec@1.1.0':
- resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
-
'@thaunknown/thirty-two@1.0.6':
resolution: {integrity: sha512-Uz2kFb0cNeHg7hds8BtI/umcwzaSMUdbkeQgZrIZQbp3gWRFjrvrvBHNEB6SQYChVxC3rWHovKx1Ya/vSRRMYA==}
engines: {node: '>=0.2.6'}
- '@tiptap/core@3.31.0':
- resolution: {integrity: sha512-SY3yE2ACharFvk0BKgotV6SbwV8R4tN5fGtWOM6deY4JNF3v6CXOD78RFwjs2HSohGWBRyJVPDvrX9nfi8Nsxg==}
+ '@tiptap/core@3.32.0':
+ resolution: {integrity: sha512-Ghh2h02GKSqzytQGcLV4espYOG4EHxjj0MsrUB2Vnr47xmlZYRf6r7k2J09H+JpBdaGrWwrTkyBEi5i3c3yy2Q==}
peerDependencies:
- '@tiptap/pm': 3.31.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-blockquote@3.31.0':
- resolution: {integrity: sha512-E1EcYp28NOEKLkMqf9Z4t/ZjVO5hOX/c5r9nu/sfp5+KePj4TaxGDcruijP5DYJuKxlsZx2lr6/lldiK9KilXw==}
+ '@tiptap/extension-blockquote@3.32.0':
+ resolution: {integrity: sha512-wmuthEdlYVArNoUbqFPH35giutBABFu7fqEB0lTD1k0UXJUs4dFvcbRyGWWgnHFZgP3TT4u8e+xiayYw0eQ0NQ==}
peerDependencies:
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-bold@3.31.0':
- resolution: {integrity: sha512-KB3V3/8/XSrXNM0m7Svgg8xjwG/mr9nYh0krGznmDK1eArxj2GQd5h2g0QiBy8e+G//NMEbWQxSKbhKUKz7aoQ==}
+ '@tiptap/extension-bold@3.32.0':
+ resolution: {integrity: sha512-SQYewnYDoIBN+8oH53IDcD8p+Pz+Jnyq3hrxjy/FAo5ctc+96d3ZLdqc9gzLVSqFFo/SUINv2FVGoq9PvU7yqw==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-bubble-menu@3.31.0':
- resolution: {integrity: sha512-CNuyfYH2KfcREASRh280UkGqYTwuKlMNcyBR7KsZrpzAVwFVo9D6qMkE6/q7I8mNMt2+/Xebe9UFZIYnVccCJA==}
+ '@tiptap/extension-bubble-menu@3.32.0':
+ resolution: {integrity: sha512-X3ll8i9Z8QNvt7+tcqlwopJG+68ugO13Av0Ox4Ico+jXcTnFdDuKQJBSI9sLuMR5vTQOeTHhKYXhjF88aahMSA==}
peerDependencies:
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-bullet-list@3.31.0':
- resolution: {integrity: sha512-jLrzWDzBhfeOK/idnrpyncTuRamBNGCscDC7omG1S+CD3CFuDrp5Ws2tcv5fgASt2Vc/f9Y9zC+gOPkeIEpYFA==}
+ '@tiptap/extension-bullet-list@3.32.0':
+ resolution: {integrity: sha512-Y5P/l06pVCUG46vXpBl3z0fW2b6JpSMX4Cvr+5sfQh8zB3TxwSiLQaaPwI3R5MFD1KfRk3AjiPRieEyXdWcNHw==}
peerDependencies:
- '@tiptap/extension-list': 3.31.0
+ '@tiptap/extension-list': 3.32.0
- '@tiptap/extension-code-block@3.31.0':
- resolution: {integrity: sha512-y/A6N96gBPjEHqVYZ3u/yO/Anyo92iDWgYqShMXAvHprn2Ipmn32wIkX05Kv983fa6j6ySXF7A1nJdHcGCl5aQ==}
+ '@tiptap/extension-code-block@3.32.0':
+ resolution: {integrity: sha512-9NZW/yXP9j9XKr+hRS5m58xiyZI+tQo1PJ7eLHXjGNFWaF601NG/h6741mbKh5uCY51XsbyqG+7que+RavngPA==}
peerDependencies:
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-code@3.31.0':
- resolution: {integrity: sha512-QWo9oItNzyzNMXoCOG4/PiCNYoTjhUKtI5NE7iRJhd9op3KsLoyIO+og+P+0ORxG59Ic76SkXl2/lILaVsB48g==}
+ '@tiptap/extension-code@3.32.0':
+ resolution: {integrity: sha512-I+aEVl0dTmkfnU6HzBGEefb9U7ja2MkucwBBwrmoMwU+uIKpC4xw8NcHC9X6sjAcom3Pxs2HX+8WEo4Vp13R/Q==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-color@3.31.0':
- resolution: {integrity: sha512-5gfS5jl8DBZumwrBckWMsZLuMq1SBmcZHt/xlCwPbtUMFogE068YJq+BbxcgbJKx333G+2JWAO9ea6GyEkih8A==}
+ '@tiptap/extension-color@3.32.0':
+ resolution: {integrity: sha512-whRpuiEZ94FXBbFryWAYJ9rOQrLe4CVQ7GAjWDh+fpm5MJfjtshFvMXtGFIlcmo3e1XBzCcAetmk0zMKoIU0RA==}
peerDependencies:
- '@tiptap/extension-text-style': 3.31.0
+ '@tiptap/extension-text-style': 3.32.0
- '@tiptap/extension-document@3.31.0':
- resolution: {integrity: sha512-C2eDFoBlcRAb4sgbc9ZH+mrFFbjIS9VyoERGeDum3QRdqLEKU1h14Th7isHpGQzTvTywhXQxqXC64mgeSGXLsA==}
+ '@tiptap/extension-document@3.32.0':
+ resolution: {integrity: sha512-GugeKE6AnZDluRXJUNBuX43TPcaJxy5wck6vT2J4a0/EnKStJ43suSZZf1IPfb1ij9EL9bYvAwg9DOcrvdEzTQ==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-dropcursor@3.31.0':
- resolution: {integrity: sha512-hIZOPfM0sGkAhPV69IK1zWMbWBd3wmhS0XCKBRcXUWrE2MW4kkaSyYprSFqtqFuUa3lVIEFrlME1WOEBJ2/2rg==}
+ '@tiptap/extension-dropcursor@3.32.0':
+ resolution: {integrity: sha512-t4Ug8hFLt30dwwYvrh63BVUt6N1Yg5PVI3tMllhCmN3Q68oD47v4MB/i5nGfzIsQqMyXUOetwHJWcZ4MoLTx4Q==}
peerDependencies:
- '@tiptap/extensions': 3.31.0
+ '@tiptap/extensions': 3.32.0
- '@tiptap/extension-floating-menu@3.31.0':
- resolution: {integrity: sha512-NFwv1Kah3zGLmjj53Z+pA2584GdgMDClgvebJPqSunsSdHwHlFwfu+Op1u73xuEYOd6wGgCgzzDZ3V4CKwkJqg==}
+ '@tiptap/extension-floating-menu@3.32.0':
+ resolution: {integrity: sha512-AzKCWceL+4Q1pTc8Whw1kPqN/aYGPQ70/jXPsblWl501t/pXi6Kz0Pi/NggKkuu73VGjykh68YYf/dcOJ/mPZQ==}
peerDependencies:
'@floating-ui/dom': ^1.0.0
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-gapcursor@3.31.0':
- resolution: {integrity: sha512-TY1S9D9x86iIHiPiDU4KtRmLYTgE6RKa54jXubFyekUYFmgNfHuUunWmpK/Rvy6tkG1CKHNL7X+wdo8QXi+hcw==}
+ '@tiptap/extension-gapcursor@3.32.0':
+ resolution: {integrity: sha512-HUpKKWJLtthnpQY5LIjHlJJOmh562RusmOMIe/4iP/H7y+WUR9ZFiZjEs1NBkRjig9fwj8F3BfsrVPYBnM4nLA==}
peerDependencies:
- '@tiptap/extensions': 3.31.0
+ '@tiptap/extensions': 3.32.0
- '@tiptap/extension-hard-break@3.31.0':
- resolution: {integrity: sha512-e3e3YwTSxzO1bYalphs3A3zr+nYRWASMKFPzviO0C2P7vKE4kT4rvCYCWuUxIpfit8Vnh6TFVIkhrQ/6IFlDzw==}
+ '@tiptap/extension-hard-break@3.32.0':
+ resolution: {integrity: sha512-IKUYvK+bO2hGrDWhhTVg0CSh9C2belWg9GyLzvpyd3SZyQ9EgdccLfoytNjOBKbAE/TQ4Oo3kSP+XF6RsUIKPA==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-heading@3.31.0':
- resolution: {integrity: sha512-ryQnvq2iUW2IwjbLniGlRZliNA5YserRTX2mCKyQcv8z/u062J01JDLlX73o47tu4DjuBzmkx6t5SsiXNODRcg==}
+ '@tiptap/extension-heading@3.32.0':
+ resolution: {integrity: sha512-XRiZxZuhfjvbgwCvoBHj04gOsPANEXxxRwrFCQVuFi5yeTHYIzMEioc81j6iAH9pV7aQeJCwLxuh6VHNz3dXEQ==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-horizontal-rule@3.31.0':
- resolution: {integrity: sha512-RTKLnuEmGJOlxzLOmKo85hstXfuLlg+zQSKAggdD6BrSTDR5fdPZXnZTb/gDCo6chCR5BoKHu7Xv1spnPzRmEw==}
+ '@tiptap/extension-horizontal-rule@3.32.0':
+ resolution: {integrity: sha512-Iry7ynsG4xgcxnH1cm+uXJnEtUzoop4sGA10NUN9I+08TOjhj/GrDiRKMQHKAiVI/R7t2MVav1MJlxFf2FdzGw==}
peerDependencies:
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-image@3.31.0':
- resolution: {integrity: sha512-oQyFPUl3N0eA/X+06km0m1qoV/4inoTDWxSEnGAj0ZP7LkIpjqLTjpp4VRSmflTwun8lXe9PGtqJh+oCKUv77Q==}
+ '@tiptap/extension-image@3.32.0':
+ resolution: {integrity: sha512-nv/YlOMwFUp2ItffQbHb14yAJjrn9sdxKl0WK5rH8PPiNoXVkvasieoBLNTHan9gjhrSp7LjVG2ZsMoSe/I7gg==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-italic@3.31.0':
- resolution: {integrity: sha512-8Top75aMS9feCtKYADWOYLrJjx3SGvazETWZdEwDYDGZtEOB7q2+FxcRu2xi+K6Lx9LhzxS9ChULtNdBuRevkQ==}
+ '@tiptap/extension-italic@3.32.0':
+ resolution: {integrity: sha512-KB/i1xoHilbBGcQ+UotDWhi60KpdCde3RzRIpl2na0Yol4z4Fe2IRWg8ljIrlsssDRwel/fsHJbG7a13EP8oKA==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-link@3.31.0':
- resolution: {integrity: sha512-arzZYxyf6in2BzdB3GR53VhSlE3ZwmY8CflXRo1xHpSpxq393myLP6FnaxLPxcfcScfOOsaYh2KAED0HJoBZfA==}
+ '@tiptap/extension-link@3.32.0':
+ resolution: {integrity: sha512-DRdQSgWPSEjrDg5EDBB5yxRygHtUVLhceVGzAsTz8RziiFyvcwAvzBHCO9hd9jutjCXQ2DLIuZB8P+aHhFWnpg==}
peerDependencies:
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-list-item@3.31.0':
- resolution: {integrity: sha512-ayZa+KEMigJis0s8n3X3pqRxzsMuom9JoqE6byJ5NP2oaI2HOQ95yfcuILNKukg1nXG8vkgifEsXxjXz4O2o2g==}
+ '@tiptap/extension-list-item@3.32.0':
+ resolution: {integrity: sha512-FdJTCAeALixzyyGSSEmroXmkIEclbo/4t2Pl03aRERqpPOSPJcC3evDtIhLazTuP6v+FjCmJ+pXNql6ov7qitA==}
peerDependencies:
- '@tiptap/extension-list': 3.31.0
+ '@tiptap/extension-list': 3.32.0
- '@tiptap/extension-list-keymap@3.31.0':
- resolution: {integrity: sha512-bmZZmQyH0PibpIUA2thA3Cgm82cnrcC4oU4eNqiaoUqrva1NuOIqb71L2Br9keBnmtQKEtkzdODs4x+eI53kBg==}
+ '@tiptap/extension-list-keymap@3.32.0':
+ resolution: {integrity: sha512-vXFre18Dk2m5N/gjo408C02GSrolZ8ZIf0wz6/U8lNC4FcYOISgZFj3BND6uabVntGh2GCSPrVFuNpVPhFnn/A==}
peerDependencies:
- '@tiptap/extension-list': 3.31.0
+ '@tiptap/extension-list': 3.32.0
- '@tiptap/extension-list@3.31.0':
- resolution: {integrity: sha512-cED2TPewS3CtzZUdCZNG/qbc6vHJunKRzkFiT8x3RF+pmtIQlrPRH5Y9sbkzLt3yg0ua5KMGFtBH37AHaKUFDw==}
+ '@tiptap/extension-list@3.32.0':
+ resolution: {integrity: sha512-QdzS5nFz9agAQhBgIuQluobWib39W2cMKx1XB6tYSue7bHMJdgPFP0EnGfFajaeVX42CG6RXtQWrNfyQGKhBvg==}
peerDependencies:
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-ordered-list@3.31.0':
- resolution: {integrity: sha512-KLCax7pI/3JTCkMY01n2+CXwZRPPsIVR1fvSmkFMryUPonkkMYWSUlXCuYKvF22+kM0gU0kiXsVjqsn/YFdeDg==}
+ '@tiptap/extension-ordered-list@3.32.0':
+ resolution: {integrity: sha512-htZ5hoMLBkGiDP6M5mGemjOoaBmkrj911wiGoTmMMKzO7qJq9QxUBkLY7ILPaKlUWL8U3ccLdDV2TB/nysp4Jg==}
peerDependencies:
- '@tiptap/extension-list': 3.31.0
+ '@tiptap/extension-list': 3.32.0
- '@tiptap/extension-paragraph@3.31.0':
- resolution: {integrity: sha512-78l9D/jpKvvWXrBBzYPfgqwonBY76+1MMgSovkPffIbya+jaYDJdZhIpeCZXtSBDnw8cYE/rheAeusN1QG3SVQ==}
+ '@tiptap/extension-paragraph@3.32.0':
+ resolution: {integrity: sha512-afKLMc7fWMkkar9H5FilizStSbhFzUoCzdwwdZf6DDsn3LUt8tJlFHACK78cAyx/TzMJBo0N8/8T1u9bL+N67Q==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-placeholder@3.31.0':
- resolution: {integrity: sha512-zH1Z8xZX72P7wZ3HD6fUGJ7XTVWMgyN5Sy+OiD3tuuxfr/oUvS6ykaoGBdHGTMBdrXZpp+GfAcch1MrvLGn8oA==}
+ '@tiptap/extension-placeholder@3.32.0':
+ resolution: {integrity: sha512-TSjyQmVFq56gfURPotxbMsXU3seNTy9VzMACdb6b0bQ66yGWBcjBfWmhpiSRVLdBjQrRvl1+jQbWx0YPSCSpsw==}
peerDependencies:
- '@tiptap/extensions': 3.31.0
+ '@tiptap/extensions': 3.32.0
- '@tiptap/extension-strike@3.31.0':
- resolution: {integrity: sha512-M1X94ve0TNU7LrHCDn6nKf6vM8PEaKQt3FLTwhTIw5uTbx2Imw+uyRrySDdxLWHY/ul8x17I2w9MVLqK/D+Zvw==}
+ '@tiptap/extension-strike@3.32.0':
+ resolution: {integrity: sha512-J9Vw6wmh/wV6SxSsN9RhurvAGcXSY5J3p4EQrROD5PARBl0VOnDFi7/UVoz1RkSdqOKPgAiqDZpaLRgtdBO9Rg==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-text-align@3.31.0':
- resolution: {integrity: sha512-40hsX0anPQv87M3rD8vncqBIgED2xWUDTU/uL1fKTgeOm5BeiPJupxAV41ttI96T1suEAlghaaYrjs28ElK1fQ==}
+ '@tiptap/extension-text-align@3.32.0':
+ resolution: {integrity: sha512-DdV/V86ds9VtQ1MkbovgI28xwSvOW03I8SexsaKljGqSN/HovBXEjlefSnbK4tlWmQLJPH9eNsxRcpHJMftYCA==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-text-style@3.31.0':
- resolution: {integrity: sha512-eY8mIb/NS22sO1xJQqfzHtSdpL2UCQy1nbSCEohRUoW7eaP/nwp29x097+jjJnxg4LjLMsolyw11Q4mswbXDQQ==}
+ '@tiptap/extension-text-style@3.32.0':
+ resolution: {integrity: sha512-+U8FkrNAU45+fHgo4DYfndS/WuhhyttZ+zTyObF1W4VJ8wDiAYqXkl71nQcmMJyyK47yeNUY9CfjUomIaEHhpA==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-text@3.31.0':
- resolution: {integrity: sha512-K+8nIKgNNBiL1+AarcuzvPoRpjuFk5qOe9MM/n9O3HyTTLeWNfRV/zFifcpSoHmhf0QvEAXqmnxDiIpyCpy9+g==}
+ '@tiptap/extension-text@3.32.0':
+ resolution: {integrity: sha512-sF0jIK67IHdZMnzv2mz5vPTyK7R0ui6/YZgFg+/bLnFCNmweVAoYcHZLlC7ISRnwu0mqJr+epNtzJepY1ZDCjg==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extension-underline@3.31.0':
- resolution: {integrity: sha512-B4VK5nu0UdKl7OiMvIcjDPMYmhe8+v1B763Is/GzPSJOMstUHRqAqPx2AsPla6A4UGuZwTx//ajVa5QAGionZQ==}
+ '@tiptap/extension-underline@3.32.0':
+ resolution: {integrity: sha512-rMLdd4vg6sed/JnaXnaupLbCtYiWikTnQ8qir9ItKOXwf1Ui9P1Y4G0bYU4+gcnMsFzaSGtrOhMqG4/c66AogQ==}
peerDependencies:
- '@tiptap/core': 3.31.0
+ '@tiptap/core': 3.32.0
- '@tiptap/extensions@3.31.0':
- resolution: {integrity: sha512-WOv9Y1VjhzAYycrIGPygwmLkoO/UdFYFE5uDWN+FJWMui5sLmLrmfKtOOYzeWIevxomFGix/wl5hqaVGIev1+g==}
+ '@tiptap/extensions@3.32.0':
+ resolution: {integrity: sha512-qO+ndNvlOjzU2MWCtQHoRg1tIortCXLvqPjDx58F1pUYFNCOVZegXi+jqLGDODUA31er+TVz66umzRbbN1bO1Q==}
peerDependencies:
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/pm@3.31.0':
- resolution: {integrity: sha512-JGPUSPLDFPjgFZHcNSghVJmEfvYp2SRPZQ1K8AZOuviEsUNvkYmJsBdudeYwUYNzYO38L4Yy0G6UMSuniBDIMg==}
+ '@tiptap/pm@3.32.0':
+ resolution: {integrity: sha512-H9eN+xHFboJybE7KPGVsu24S8aBlCIgYz38vCHRSnNv17nwmqm06owq/IQ5scza0n3Y7IfUfpgPOtm9SgeHmNQ==}
- '@tiptap/starter-kit@3.31.0':
- resolution: {integrity: sha512-P80nhDEsBf6EMTaRb/ld3BaQW7iqITPR6BiIjOjbO3QDivCz/rGDKSS6q4ngsXfXOpSBc/clo/g0OyAdA8+Q4Q==}
+ '@tiptap/starter-kit@3.32.0':
+ resolution: {integrity: sha512-aPYxaevci4PgMrTLsg+baiqI7M1ICd4V9H+zTTdrqs8OUZIbAvj/pNDuHU8uWZyKMu3Dh72t2D6ZdqRu/6aSWw==}
- '@tiptap/vue-3@3.31.0':
- resolution: {integrity: sha512-v/oIp43nvANe2upFMc/1JGPvMD6C7mY0JdiB7kUjFxjAnTmjVRxJY+4hJiJgoVXTiCyDaEJeEhPKLueDJfKYwg==}
+ '@tiptap/vue-3@3.32.0':
+ resolution: {integrity: sha512-FpYquLlZpfFzgWcQuOrXuUXDNn8YYomD3dLx92b61XxVMlwKkOH3p1XS/wlNNRBLaA7oSB5VRzy5E7EXtfgqpg==}
peerDependencies:
'@floating-ui/dom': ^1.0.0
- '@tiptap/core': 3.31.0
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0
+ '@tiptap/pm': 3.32.0
vue: ^3.0.0
'@tybys/wasm-util@0.10.3':
@@ -2513,20 +2506,6 @@ packages:
vite: ^8.2.4
vue: ^3.2.25 || ^3.6.0-rc.10
- '@vitest/expect@4.1.12':
- resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==}
-
- '@vitest/mocker@4.1.12':
- resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==}
- peerDependencies:
- msw: ^2.4.9
- vite: ^8.2.4
- peerDependenciesMeta:
- msw:
- optional: true
- vite:
- optional: true
-
'@vitest/mocker@5.0.5':
resolution: {integrity: sha512-xLL3lkDegJZw+MGoGaCCsFayDZthGgpAtr3Vziyfc4p7xH89K7KRPcRBBh/kEYm0Aqkt5DtTmkYpBtRV/FrHZg==}
peerDependencies:
@@ -2538,24 +2517,9 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.1.12':
- resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==}
-
- '@vitest/runner@4.1.12':
- resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==}
-
- '@vitest/snapshot@4.1.12':
- resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==}
-
- '@vitest/spy@4.1.12':
- resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==}
-
'@vitest/spy@5.0.5':
resolution: {integrity: sha512-lwJRExuH417257Q5wv9QYugN9IMJkoxcrKrYxGPQkBzl7wlNpTUxD/5yNX4ESKVUIShKPgkGchYPFMWOOk0wzw==}
- '@vitest/utils@4.1.12':
- resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==}
-
'@volar/language-core@2.4.28':
resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==}
@@ -2648,8 +2612,8 @@ packages:
'@vue/devtools-shared@8.2.1':
resolution: {integrity: sha512-Fkac7lUdGReh6pVOi3AYPRGe82LQqRmAfThW7RRligOAP0ZA/Z1z9XLHDM9dv34pV2HRc79DK8uKPeG2fLnA/g==}
- '@vue/language-core@3.3.11':
- resolution: {integrity: sha512-QJmpliwAVpC/OxubIByPAhNzsQPRc8/gxlN2qnVzVfIMjMDz/9RnXRFoetjz5yEgXVXyp4LqhXq3V53PjmNzFw==}
+ '@vue/language-core@3.3.13':
+ resolution: {integrity: sha512-axA0Xemn5LuUKuKWob0/kVq7xQ2mJJM6VqA9Exvt35nM9yRC31goWVve/G/Zb2ZCLsXC8FHYjjfXlnshknSCew==}
'@vue/reactivity@3.5.44':
resolution: {integrity: sha512-u+QJdKeBBEADkPdevsL+6E12QlYVfBD8Zcw5qjDQKtamI6l14KyqazJMobhCKelhWN5zpyKUiEDoTyHE93cqWw==}
@@ -2672,16 +2636,19 @@ packages:
'@vue/shared@3.5.44':
resolution: {integrity: sha512-H82XLH0DjmSOdbEwO15x3QTo1f5PWEtv237eLpYKc0mqLu+B8hnq16lFWmuBmNurkeiG3wr+oM1FhOll/YVFRg==}
- '@vueuse/core@14.4.0':
- resolution: {integrity: sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==}
+ '@vueuse/core@15.0.0':
+ resolution: {integrity: sha512-Zv67h5mrk7YHDJsRObx+DXaCBz6RKBUpxqLesJ+3xZNPG6yuQs7ja7kg3veFrrouYLWAqydQ7CwGEbLVxB43Ng==}
+ engines: {node: '>=22'}
peerDependencies:
vue: ^3.5.0
- '@vueuse/metadata@14.4.0':
- resolution: {integrity: sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==}
+ '@vueuse/metadata@15.0.0':
+ resolution: {integrity: sha512-sfWE5LADAKJ0KnjtGliMdSN8Ij/L7uP6rXIZlgPloAI4zvvefbw6H5Lt7KJA6RqQOYgVqWF5Guj50HHMIzygBg==}
+ engines: {node: '>=22'}
- '@vueuse/shared@14.4.0':
- resolution: {integrity: sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==}
+ '@vueuse/shared@15.0.0':
+ resolution: {integrity: sha512-vbNXhGrbV53xPOMSyOzMHQRvhMgZf7oNDw2RChUetVxwTIEkInQ1joZ9JbT0G3z2n2AJNjvmCWeM9ySYrnvogA==}
+ engines: {node: '>=22'}
peerDependencies:
vue: ^3.5.0
@@ -2893,8 +2860,8 @@ packages:
resolution: {integrity: sha512-sMm2sV5PRs0YOVk0LTKtjuIprVzxgTQUsrGX/7Yph2Rm4FO2Fqqtq7hNjsOB5xezM4v4+5rljCgK++UeQJZguA==}
engines: {node: '>=12.20.0'}
- bidi-js@1.0.3:
- resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
+ bidi-js@1.1.0:
+ resolution: {integrity: sha512-fX1Onk0tdVPC7obPWB5EbJ1z7NVhLq4m2xZLq2YXBkxzMXIGRpNMU88n0EPgWseKl12J7zXs7qrDxPK4sRs2fg==}
binary-extensions@2.3.0:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
@@ -3005,10 +2972,6 @@ packages:
caniuse-lite@1.0.30001819:
resolution: {integrity: sha512-LFUqIIAwpzsIuevnKnsR9qnStBcgzPShTX61lBwN9uFkkf8o8zLiebEjbW8AYtZiF+1YKDWfdt/pWDtMuG8Xwg==}
- chai@6.2.2:
- resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
- engines: {node: '>=18'}
-
chai@6.3.0:
resolution: {integrity: sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==}
engines: {node: '>=18'}
@@ -3017,8 +2980,8 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
- chart.js@4.5.1:
- resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==}
+ chart.js@4.6.1:
+ resolution: {integrity: sha512-hJyniucsFmq//EvXYvJ6c6mahPoI3kaxdjVH8awTaJ/fDNWeSqqqArixMJWkWNN6fcYvPU3HneSANFNYtRi61g==}
engines: {pnpm: '>=8'}
chartjs-plugin-zoom@2.2.0:
@@ -3199,9 +3162,9 @@ packages:
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
engines: {node: '>= 12'}
- data-urls@7.0.0:
- resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ data-urls@8.0.0:
+ resolution: {integrity: sha512-JQUCCK+/CAGbGGx618PlFZMXH81Jtj7t73CHv9dd/zVWvxgGT2zLFRjnKb+Ng46GIwcy+f7f88qd4duqllK+WQ==}
+ engines: {node: ^22.14.0 || >=24.0.0}
dateformat@4.6.3:
resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
@@ -3311,6 +3274,18 @@ packages:
resolution: {integrity: sha512-3woMEITftG1wKeO/4d/QXH1DVKctTSZg3jNGPpjp9hNr5Hos8MCFF5McTML5ZtgKDObm2R591B0spRp2IVernA==}
engines: {node: '>=18'}
+ devframe@1.2.6:
+ resolution: {integrity: sha512-mHzcm6ADzXgRMWdoSX+5PjwhmwAuC3SpDPi3+URznlpzxJF6tXwy5h1xr82zPKju38EVtdnYRnnP4hZwLK01vA==}
+ hasBin: true
+ peerDependencies:
+ '@devframes/agentic': 1.2.6
+ cac: ^7.0.0
+ peerDependenciesMeta:
+ '@devframes/agentic':
+ optional: true
+ cac:
+ optional: true
+
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@@ -3615,10 +3590,6 @@ packages:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
- expect-type@1.3.0:
- resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
- engines: {node: '>=12.0.0'}
-
expect-type@1.4.0:
resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==}
engines: {node: '>=12.0.0'}
@@ -3719,20 +3690,37 @@ packages:
fnv1a-64@0.1.2:
resolution: {integrity: sha512-mJbcILTPybAR1jdOwt/lVv8N2cffeJFFP+gVbSAwLEx1ujXH27RpPd8Rokec/KX9c76UYIB6Co+H4lQzxPnJfA==}
- fontaine@0.8.0:
- resolution: {integrity: sha512-eek1GbzOdWIj9FyQH/emqW1aEdfC3lYRCHepzwlFCm5T77fBSRSyNRKE6/antF1/B1M+SfJXVRQTY9GAr7lnDg==}
- engines: {node: '>=18.12.0'}
+ fontaine@1.0.3:
+ resolution: {integrity: sha512-mCeB9tcB2qeDJYVp/f55ZUQMOkOaZn4MFDlsCsy8Vggsju47egnH1+qzWwderp3BuX2EyezhdsjNX64df6M5mg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ postcss: ^8.5.23
+ peerDependenciesMeta:
+ postcss:
+ optional: true
fontkitten@1.0.3:
resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==}
engines: {node: '>=20'}
- fontless@0.2.1:
- resolution: {integrity: sha512-mUWZ8w91/mw2KEcZ6gHNoNNmsAq9Wiw2IypIux5lM03nhXm+WSloXGUNuRETNTLqZexMgpt7Aj/v63qqrsWraQ==}
- engines: {node: '>=18.12.0'}
+ fontless@1.3.4:
+ resolution: {integrity: sha512-GVj56LLcqGsBY9A2Pp2vJxmYFXNIAJUjPdLBFlJJXfKnZ/ta7mgT8a6kS2mx5tNsjWhhz6HiwSamzc2q80UpHQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
+ devframe: ^1.2.0
+ jiti: ^2.6.1
+ lightningcss: ^1.33.0
+ subset-font: ^2.5.0
vite: ^8.2.4
peerDependenciesMeta:
+ devframe:
+ optional: true
+ jiti:
+ optional: true
+ lightningcss:
+ optional: true
+ subset-font:
+ optional: true
vite:
optional: true
@@ -3861,6 +3849,19 @@ packages:
h3@1.15.11:
resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==}
+ h3@2.0.8:
+ resolution: {integrity: sha512-ENuKlF9kC6E6PrvY1PUyE0qkrnnPTIt2/v48uyEEfTVfgoiqBCE0uwwf++2XrWwT1gxjQBDLQ8PAsmZVniKvTw==}
+ engines: {node: '>=20.19.0'}
+ hasBin: true
+ peerDependencies:
+ crossws: ^0.4.12
+ ocache: '>=0.3.0'
+ peerDependenciesMeta:
+ crossws:
+ optional: true
+ ocache:
+ optional: true
+
hammerjs@2.0.8:
resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==}
engines: {node: '>=0.8.0'}
@@ -3893,9 +3894,9 @@ packages:
hookable@6.1.2:
resolution: {integrity: sha512-+abwxtiEA52GCVIsQqut3S/uKTbUwYIp4Pe/vv+6py5XiXBCqMZHg6pA6Y5qhgLSEys0/cYuPbO0z1QFj5ZCmg==}
- html-encoding-sniffer@6.0.0:
- resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ html-encoding-sniffer@7.0.0:
+ resolution: {integrity: sha512-UikN5yr7xsCDAq87Or5or0PAlD3HJJOKVzM05az588WnpDJ4Ux7a2A53Qi6gofGg2/EtvF/H4hCi/TXfCW4Y6w==}
+ engines: {node: ^22.13.0 || >=24.0.0}
http-assert@1.5.0:
resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==}
@@ -4085,8 +4086,8 @@ packages:
resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==}
engines: {node: '>=20'}
- isomorphic-dompurify@4.1.0:
- resolution: {integrity: sha512-vjQwQSxyEkJHO6g+KIDlWj8swAzUB01pJu9GU9cLGHjE10d59GFzJkgtB2Lj5WTOoq9JeHlYjR/FFuqeopPO0Q==}
+ isomorphic-dompurify@4.6.0:
+ resolution: {integrity: sha512-ZLYxxq2efNUsaUMViQXML/HMBkaJSd8WAFcNJQfWOGi+KLGQyZA8Ewpcj7yWur6KzMHlrZNXTXr8trbx/bkZRw==}
engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
jackspeak@3.4.3:
@@ -4117,8 +4118,8 @@ packages:
resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==}
hasBin: true
- jsdom@30.0.1:
- resolution: {integrity: sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==}
+ jsdom@30.1.3:
+ resolution: {integrity: sha512-hQMUPvRgN7KxsfIytDQji7bimuJeRQa6Qo5+iuiZQk5CafeRxLIA10/cG5YCBFNpD9RO3oqIiN4CO1Y44kxqXg==}
engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
peerDependencies:
canvas: ^3.2.3
@@ -4339,6 +4340,9 @@ packages:
magic-regexp@0.10.0:
resolution: {integrity: sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==}
+ magic-regexp@0.11.2:
+ resolution: {integrity: sha512-s4i7mq2jJnkB5J1HDX67GmdRoWrgo8tE0cL91bKO+HaquxyR5TiqkjVfLhgS2PXretsN/Gv9kSnRBgQxrLO/Qw==}
+
magic-string-ast@1.0.3:
resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==}
engines: {node: '>=20.19.0'}
@@ -4359,11 +4363,6 @@ packages:
resolution: {integrity: sha512-PjS/xWnvq9RK6P/8+dWG7ka3mFGGt/R9xiq5A+P8a8MpE40Dw6yNyTdjCFuJHS3apn6p5bJUCzMSceW3VxezRA==}
engines: {node: '>=12.20.0'}
- marked@18.0.10:
- resolution: {integrity: sha512-FJeH4bRpYoXiggcgriCGItKCSv3xkngJc4QCZ/rkQCogU3VYaLxYJoZl8Nw/b4+x7iij/pd+09mZ6A1dXzpL0A==}
- engines: {node: '>= 20'}
- hasBin: true
-
marked@18.1.1:
resolution: {integrity: sha512-zEGgrtUG8crk+TrMacJSVABU4DYDDkS8uqgU3ohrn/2fW9C2AEfUrO3m6IhpIpQpl7YcVpiXXC9cSMWDANT3dg==}
engines: {node: '>= 20'}
@@ -4380,8 +4379,8 @@ packages:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
- mediainfo.js@0.3.7:
- resolution: {integrity: sha512-mgsmb2GrCTAguVcTohW7KrF+QXNaihrbljj75pLWDQcTTQyqfGoZG4Dy++AZ+FDVCT14LHvVGC9SXxcF5VePag==}
+ mediainfo.js@0.3.8:
+ resolution: {integrity: sha512-34ruGC47ytdp5IE9lXx4Yj8XMxESbzqLxDGfnYXimnokxH+aavC/YqubakOKm0vwrC5ZisL55WMmud6R6TmjBw==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -4596,6 +4595,11 @@ packages:
'@types/node':
optional: true
+ nypm@0.6.11:
+ resolution: {integrity: sha512-wrVBTLWDu7nTUKGWplQebWOXWnhaIwyKQhBxobH/CGxJHoVw27r9vG5ba7kdZnxG+f4rC6dZd6m2oHmpkOcO7g==}
+ engines: {node: '>=18'}
+ hasBin: true
+
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -4774,10 +4778,6 @@ packages:
resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
engines: {node: '>=8.6'}
- picomatch@4.0.5:
- resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
- engines: {node: '>=12'}
-
picomatch@4.0.7:
resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
engines: {node: '>=12'}
@@ -4789,10 +4789,10 @@ packages:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
- pinia@4.0.3:
- resolution: {integrity: sha512-XMQqpvjgG7LMqVhhFUzKLT4KEbsYbfZZ0CZU9PgdFm1O2VKBmIkykL8+SfNhOaT7sR0wT6BEgKT0YNDYWgmVRA==}
+ pinia@4.1.0:
+ resolution: {integrity: sha512-+5/HMuVjYQfKlCD5xQ7zfXn1xUzYFEa7pd0DQK5SaMfZCaFRTHlaH/c02N1FoGOdlzSiwf5EOPgJx//1QDw6gw==}
peerDependencies:
- '@vue/devtools-api': ^8.1.5
+ '@vue/devtools-api': ^8.2.1
typescript: '>=5.6.0'
vue: ^3.5.11
peerDependenciesMeta:
@@ -4926,20 +4926,20 @@ packages:
proper-lockfile@4.1.2:
resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==}
- prosemirror-changeset@2.4.1:
- resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==}
+ prosemirror-changeset@2.4.4:
+ resolution: {integrity: sha512-Gyuz9jYdrAeA9I7AholyOes9KUmv/lEwsC5O9s5xF5VB3EgTPsXMGUxz4+H1B+wKVPdZbvRcg1Cp3x8qX+8ofA==}
- prosemirror-commands@1.7.1:
- resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
+ prosemirror-commands@1.7.2:
+ resolution: {integrity: sha512-q6Q6szxqdu9Xd6EcdKsqXghu5nQdZTpB4Q9yd04WRc7/jt763e/rT60Owh0L1GYY+T46o5rD+9lEN36dZS43tw==}
- prosemirror-dropcursor@1.8.2:
- resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==}
+ prosemirror-dropcursor@1.8.4:
+ resolution: {integrity: sha512-VmKxhcA6a+h5oPSYmfF1ZNeQqPbyYaIxqZsKqeYCyTlPtrjUgNaHL3P8vVaO19oqAV0zuaM/axkowZHrB1P3Tg==}
prosemirror-gapcursor@1.4.1:
resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==}
- prosemirror-history@1.5.0:
- resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==}
+ prosemirror-history@1.5.1:
+ resolution: {integrity: sha512-onlwnqKvgtFg6srZOmDOAhlAy1FIHQpOExORybX0S+DvJepE5tPALrB9iGet/2sqqqrelSnB10OoiOJqAvu2DA==}
prosemirror-inputrules@1.5.1:
resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==}
@@ -4959,8 +4959,8 @@ packages:
prosemirror-tables@1.8.5:
resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==}
- prosemirror-transform@1.12.0:
- resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==}
+ prosemirror-transform@1.12.4:
+ resolution: {integrity: sha512-2/WuPum3pn+O/Vi2vzpi8210ICUe2kIPXdLYjQ09Pv5DtT5bcKWMJhAKPBwvpPjpp5iOYUVwVEr0gOM1BY1Mgw==}
prosemirror-view@1.42.7:
resolution: {integrity: sha512-aTIAUN4zdD+VS7gsv9Po9Sty81B6yl6D3HggCosry9DLYTmVo4omjcqICDIOPnPJmskRUsqLInxBjaH7I+BQ4Q==}
@@ -5127,6 +5127,10 @@ packages:
rou3@0.9.2:
resolution: {integrity: sha512-3SOzvaAg8rkHrXtRjpCvCvbyO5to9oOO27Z/XqHEYXfMRVSw/qMIVdmaOk9W2lcRLtR6dlqTjo9hDeJk70QBYQ==}
+ rou3@1.0.0:
+ resolution: {integrity: sha512-ySeaQkSrua+ut9g+65I7FHqOFBaY8tV0FmccXItoq0q21se32Q3u4YiW7/RqXSosWgYJaaKwRHXy3BST9PeCNQ==}
+ engines: {node: '>=20.19.0'}
+
run-applescript@7.1.0:
resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
engines: {node: '>=18'}
@@ -5215,9 +5219,6 @@ packages:
resolution: {integrity: sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==}
engines: {node: '>= 0.4'}
- siginfo@2.0.0:
- resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
-
signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -5279,9 +5280,6 @@ packages:
engines: {node: '>=20.16.0'}
hasBin: true
- stackback@0.0.2:
- resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
-
standard-as-callback@2.1.0:
resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
@@ -5363,9 +5361,6 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- symbol-tree@3.2.4:
- resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
-
tagged-tag@1.0.0:
resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
engines: {node: '>=20'}
@@ -5420,9 +5415,6 @@ packages:
tiny-invariant@1.3.3:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
- tinybench@2.9.0:
- resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
-
tinybench@6.2.2:
resolution: {integrity: sha512-nIZ2N2dFpjBsg2hgitKu7mA+FvsIJuGJOwysRngmVRRmWgR/UyPjwJj8c/fT/dhm8EkHnF5EOogRf+0Z2qrimA==}
engines: {node: '>=20.0.0'}
@@ -5435,10 +5427,6 @@ packages:
resolution: {integrity: sha512-nTv2raKFMzGG6JJp0lpNDsRPdfFE6UHlu2rVEjXo8vkx1ZS3LW2CVXqIaLu8xZlu+6tbFs9V58Qc/Jmk/Ii7wA==}
engines: {node: ^16.14.0 || >= 17.3.0}
- tinyexec@1.3.0:
- resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==}
- engines: {node: '>=18'}
-
tinyexec@1.3.1:
resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==}
engines: {node: '>=18'}
@@ -5447,10 +5435,6 @@ packages:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
- tinyrainbow@3.1.1:
- resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==}
- engines: {node: '>=14.0.0'}
-
tldts-core@7.0.30:
resolution: {integrity: sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==}
@@ -5481,9 +5465,9 @@ packages:
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
- tr46@6.0.0:
- resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==}
- engines: {node: '>=20'}
+ tr46@7.0.0:
+ resolution: {integrity: sha512-BcDSDW+SIGWVOns1Zm6Yg91q9AEj7eaID0QDY9oIqJD1A8dscNwMcl9Sms2DeuWCNov1X0/oXanHGYQBSLwZsg==}
+ engines: {node: ^22.14.0 || >=24.0.0}
ts-api-utils@2.5.0:
resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
@@ -5532,8 +5516,8 @@ packages:
type-level-regexp@0.1.17:
resolution: {integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==}
- typescript@5.9.3:
- resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ typescript@6.0.3:
+ resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
engines: {node: '>=14.17'}
hasBin: true
@@ -5624,8 +5608,8 @@ packages:
resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==}
engines: {node: '>=20'}
- unifont@0.7.5:
- resolution: {integrity: sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==}
+ unifont@1.0.3:
+ resolution: {integrity: sha512-XGnEwj5sWdCbiBX01mWLSBncS0yMRjnLygau3IfdOlfjMacNIQvTGW4VH7pWBq+gGWArfSef/CensMLjMmIr/A==}
unimport@6.5.0:
resolution: {integrity: sha512-t0KLJLRbebz3f7NrQe+vy2ObeugVeM1XqI2oeYnauddmHSglYj3U6bxOJ65IbXmOFkcAGFJK2OyGH7aqHPM6Ug==}
@@ -6013,47 +5997,6 @@ packages:
yaml:
optional: true
- vitest@4.1.12:
- resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==}
- engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
- hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@opentelemetry/api': ^1.9.0
- '@types/node': ^26.6.5
- '@vitest/browser-playwright': 4.1.12
- '@vitest/browser-preview': 4.1.12
- '@vitest/browser-webdriverio': ^4.1.11
- '@vitest/coverage-istanbul': 4.1.12
- '@vitest/coverage-v8': 4.1.12
- '@vitest/ui': 4.1.12
- happy-dom: '*'
- jsdom: '*'
- vite: ^8.2.4
- peerDependenciesMeta:
- '@edge-runtime/vm':
- optional: true
- '@opentelemetry/api':
- optional: true
- '@types/node':
- optional: true
- '@vitest/browser-playwright':
- optional: true
- '@vitest/browser-preview':
- optional: true
- '@vitest/browser-webdriverio':
- optional: true
- '@vitest/coverage-istanbul':
- optional: true
- '@vitest/coverage-v8':
- optional: true
- '@vitest/ui':
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
-
vitest@5.0.5:
resolution: {integrity: sha512-cPODOMF8YnkiiYtDdHo6n4wWmBrOBBbOIYH2d33M4l3CdNn72h+qMmO6uXffUN6A5AZFXNND/d+krS9mgkXRfg==}
engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0}
@@ -6137,8 +6080,8 @@ packages:
vite:
optional: true
- vue-tsc@3.3.11:
- resolution: {integrity: sha512-gOb0B9rtU2+f1dszwPqSH5kAieIF9ReeLhD3kSRNHv5WZZUQz/JdVXW0RTdqhNTMlQkqKzrTTviqKr/4FYZraQ==}
+ vue-tsc@3.3.13:
+ resolution: {integrity: sha512-jE4/bXdOMSHVxEGgQCqNllJy+9N3Gx6tfSAsg0yhFK/MAN6eXqISihupnDEKSCt12VVnjN2gI3AqLYcqoh5x/A==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
@@ -6154,9 +6097,9 @@ packages:
w3c-keyname@2.2.8:
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
- w3c-xmlserializer@5.0.0:
- resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
- engines: {node: '>=18'}
+ w3c-xmlserializer@6.0.0:
+ resolution: {integrity: sha512-4Nsy8K5Tr6SPDH9jhKJOHf7ChDrc1zufZTVSF7x72hwuEXBqxqk9G6cK+K2NRUtB3iELRJqjXb4JPDMBjMTl2Q==}
+ engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
web-push@3.6.7:
resolution: {integrity: sha512-OpiIUe8cuGjrj3mMBFWY+e4MMIkW3SVT+7vEIjvD9kejGUypv8GPDf84JdPWskK8zMRIJ6xYGm+Kxr8YkPyA0A==}
@@ -6181,12 +6124,8 @@ packages:
resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==}
engines: {node: '>=20'}
- whatwg-url@16.0.1:
- resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
-
- whatwg-url@17.1.0:
- resolution: {integrity: sha512-3GeworPmc2ZfEEHP7lEbUfBX/L75wdEsi0rLNhXcXxnoN5jyq0SL5gCy06SGW2cyTIZdTvWIDQNQoza++vKeaw==}
+ whatwg-url@17.3.0:
+ resolution: {integrity: sha512-KwOAJrpf+GTgBvcBQJcP38sMF0DsQKdwtG+TxM2pW44P6E5k0hDbWrDmyuJDIF0Uef0aQq0ZoJs+5oI+k8ddhg==}
engines: {node: ^22.14.0 || >=24.0.0}
whatwg-url@5.0.0:
@@ -6205,11 +6144,6 @@ packages:
engines: {node: ^20.17.0 || >=22.9.0}
hasBin: true
- why-is-node-running@2.3.0:
- resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
- engines: {node: '>=8'}
- hasBin: true
-
why-is-node-running@3.2.1:
resolution: {integrity: sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ==}
engines: {node: '>=20.11'}
@@ -6304,10 +6238,6 @@ 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}
-
yargs@18.2.0:
resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==}
engines: {node: ^20.19.0 || ^22.12.0 || >=23}
@@ -6342,20 +6272,20 @@ snapshots:
package-manager-detector: 1.9.0
tinyexec: 1.3.1
- '@asamuzakjp/css-color@6.0.7':
+ '@asamuzakjp/css-color@7.1.7':
dependencies:
- '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)
- '@csstools/css-color-parser': 4.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)
- '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.2)
+ '@csstools/css-calc': 3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)
+ '@csstools/css-color-parser': 4.2.6(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)
+ '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2)
'@csstools/css-tokenizer': 4.0.2
- lru-cache: 11.5.2
+ lru-cache: 11.5.3
- '@asamuzakjp/dom-selector@8.3.2':
+ '@asamuzakjp/dom-selector@10.0.5':
dependencies:
- bidi-js: 1.0.3
+ bidi-js: 1.1.0
css-tree: 3.2.1
is-potential-custom-element-name: 1.0.1
- lru-cache: 11.5.2
+ lru-cache: 11.5.3
'@babel/code-frame@7.29.7':
dependencies:
@@ -6565,25 +6495,25 @@ snapshots:
'@colordx/core@7.3.0': {}
- '@csstools/color-helpers@6.1.1': {}
+ '@csstools/color-helpers@6.1.2': {}
- '@csstools/css-calc@3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)':
+ '@csstools/css-calc@3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)':
dependencies:
- '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.2)
+ '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2)
'@csstools/css-tokenizer': 4.0.2
- '@csstools/css-color-parser@4.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)':
+ '@csstools/css-color-parser@4.2.6(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)':
dependencies:
- '@csstools/color-helpers': 6.1.1
- '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)
- '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.2)
+ '@csstools/color-helpers': 6.1.2
+ '@csstools/css-calc': 3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2)
+ '@csstools/css-parser-algorithms': 4.0.2(@csstools/css-tokenizer@4.0.2)
'@csstools/css-tokenizer': 4.0.2
- '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.2)':
+ '@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2)':
dependencies:
'@csstools/css-tokenizer': 4.0.2
- '@csstools/css-syntax-patches-for-csstree@1.1.8(css-tree@3.2.1)':
+ '@csstools/css-syntax-patches-for-csstree@1.1.15(css-tree@3.2.1)':
optionalDependencies:
css-tree: 3.2.1
@@ -6759,7 +6689,7 @@ snapshots:
'@eslint/core': 1.2.1
levn: 0.4.1
- '@exodus/bytes@1.15.1(@noble/hashes@2.2.0)':
+ '@exodus/bytes@1.16.0(@noble/hashes@2.2.0)':
optionalDependencies:
'@noble/hashes': 2.2.0
@@ -6796,11 +6726,11 @@ snapshots:
dependencies:
'@iconify/types': 2.0.0
- '@iconify-json/simple-icons@1.2.94':
+ '@iconify-json/simple-icons@1.2.100':
dependencies:
'@iconify/types': 2.0.0
- '@iconify/collections@1.0.727':
+ '@iconify/collections@1.0.755':
dependencies:
'@iconify/types': 2.0.0
@@ -6812,12 +6742,12 @@ snapshots:
'@iconify/types': 2.0.0
import-meta-resolve: 4.2.0
- '@iconify/vue@5.0.1(vue@3.5.44(typescript@5.9.3))':
+ '@iconify/vue@5.0.4(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@iconify/types': 2.0.0
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
- '@intlify/bundle-utils@11.2.5(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))':
+ '@intlify/bundle-utils@11.2.5(vue-i18n@11.4.8(vue@3.5.44(typescript@6.0.3)))':
dependencies:
'@intlify/message-compiler': 11.4.8
'@intlify/shared': 11.4.8
@@ -6829,7 +6759,7 @@ snapshots:
source-map-js: 1.2.2
yaml-eslint-parser: 1.3.2
optionalDependencies:
- vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
+ vue-i18n: 11.4.8(vue@3.5.44(typescript@6.0.3))
'@intlify/core-base@11.4.8':
dependencies:
@@ -6859,24 +6789,24 @@ snapshots:
'@intlify/shared@11.4.8': {}
- '@intlify/unplugin-vue-i18n@11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.65.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))':
+ '@intlify/unplugin-vue-i18n@11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.65.0)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@6.0.3)))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))
- '@intlify/bundle-utils': 11.2.5(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))
+ '@intlify/bundle-utils': 11.2.5(vue-i18n@11.4.8(vue@3.5.44(typescript@6.0.3)))
'@intlify/shared': 11.4.8
- '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.8)(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
+ '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.8)(vue-i18n@11.4.8(vue@3.5.44(typescript@6.0.3)))(vue@3.5.44(typescript@6.0.3))
'@rollup/pluginutils': 5.3.0(rollup@4.65.0)
'@typescript-eslint/scope-manager': 8.59.2
- '@typescript-eslint/typescript-estree': 8.59.2(supports-color@10.2.2)(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.59.2(supports-color@10.2.2)(typescript@6.0.3)
debug: 4.4.3(supports-color@10.2.2)
fast-glob: 3.3.3
pathe: 2.0.3
picocolors: 1.1.1
unplugin: 2.3.11
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
+ vue-i18n: 11.4.8(vue@3.5.44(typescript@6.0.3))
transitivePeerDependencies:
- eslint
- rollup
@@ -6887,14 +6817,14 @@ snapshots:
'@intlify/utils@0.14.1': {}
- '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.4.8)(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))':
+ '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.4.8)(vue-i18n@11.4.8(vue@3.5.44(typescript@6.0.3)))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@babel/parser': 7.29.8
'@vue/compiler-dom': 3.5.41
optionalDependencies:
'@intlify/shared': 11.4.8
- vue: 3.5.44(typescript@5.9.3)
- vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
+ vue: 3.5.44(typescript@6.0.3)
+ vue-i18n: 11.4.8(vue@3.5.44(typescript@6.0.3))
'@ioredis/commands@1.10.0': {}
@@ -7033,26 +6963,19 @@ snapshots:
'@nuxt/devalue@2.0.2': {}
- '@nuxt/devtools-kit@3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
- dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- execa: 8.0.1
- vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- transitivePeerDependencies:
- - magic-string
- - magicast
- - oxc-parser
- - rolldown
- - unplugin
-
- '@nuxt/devtools-kit@3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/devtools-kit@3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
execa: 8.0.1
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
+ - '@nuxt/schema'
+ - confbox
+ - dotenv
+ - giget
+ - jiti
- magic-string
- - magicast
+ - mlly
- oxc-parser
- rolldown
- unplugin
@@ -7085,12 +7008,12 @@ snapshots:
pkg-types: 2.4.0
semver: 7.8.5
- '@nuxt/devtools@3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxt/devtools@3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/devtools-wizard': 3.4.4
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- '@vue/devtools-core': 8.2.1(vue@3.5.44(typescript@5.9.3))
+ '@vue/devtools-core': 8.2.1(vue@3.5.44(typescript@6.0.3))
'@vue/devtools-kit': 8.2.1
birpc: 4.2.0
consola: 3.4.2
@@ -7118,7 +7041,7 @@ snapshots:
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vite-plugin-inspect: 11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- vite-plugin-vue-tracer: 1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ vite-plugin-vue-tracer: 1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
which: 6.0.1
ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
transitivePeerDependencies:
@@ -7155,23 +7078,26 @@ snapshots:
- utf-8-validate
- vue
- '@nuxt/fonts@0.14.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(ioredis@5.11.1(supports-color@10.2.2))(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/fonts@1.1.0(@nuxt/schema@4.6.2)(cac@7.0.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(postcss@8.5.26)(rolldown@1.2.15)(rollup@4.65.0)(srvx@1.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
- '@nuxt/devtools-kit': 3.4.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- consola: 3.4.2
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
defu: 6.1.7
- fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ devframe: 1.2.6(cac@7.0.0)(srvx@1.0.6)
+ exsolve: 1.1.3
+ fontless: 1.3.4(devframe@1.2.6(cac@7.0.0)(srvx@1.0.6))(esbuild@0.28.2)(jiti@2.7.0)(lightningcss@1.33.0)(postcss@8.5.26)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
h3: 1.15.11
- magic-regexp: 0.10.0
+ magic-regexp: 0.11.2(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ nypm: 0.6.11
ofetch: 1.5.1
pathe: 2.0.3
- sirv: 3.0.2
+ std-env: 4.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
- unifont: 0.7.5
- unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
+ unifont: 1.0.3
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ unstorage: 1.17.6(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
+ optionalDependencies:
+ lightningcss: 1.33.0
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -7181,9 +7107,12 @@ snapshots:
- '@azure/storage-blob'
- '@capacitor/preferences'
- '@deno/kv'
+ - '@devframes/agentic'
- '@farmfe/core'
- '@netlify/blobs'
+ - '@nuxt/schema'
- '@planetscale/database'
+ - '@rsbuild/core'
- '@rspack/core'
- '@upstash/redis'
- '@vercel/blob'
@@ -7191,39 +7120,51 @@ snapshots:
- '@vercel/kv'
- aws4fetch
- bun-types-no-globals
+ - cac
+ - confbox
- db0
+ - dotenv
- esbuild
+ - giget
- idb-keyval
- ioredis
+ - jiti
- magic-string
- - magicast
+ - mlly
+ - ocache
- oxc-parser
+ - postcss
- rolldown
- rollup
+ - srvx
- unloader
- uploadthing
- vite
- webpack
- '@nuxt/icon@2.5.1(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxt/icon@2.6.0(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))':
dependencies:
- '@iconify/collections': 1.0.727
+ '@iconify/collections': 1.0.755
'@iconify/types': 2.0.0
'@iconify/utils': 3.1.7
- '@iconify/vue': 5.0.1(vue@3.5.44(typescript@5.9.3))
- '@nuxt/devtools-kit': 3.4.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ '@iconify/vue': 5.0.4(vue@3.5.44(typescript@6.0.3))
+ '@nuxt/devtools-kit': 3.4.4(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
consola: 3.4.2
local-pkg: 1.2.1
mlly: 1.8.2
ohash: 2.0.12
- picomatch: 4.0.5
- std-env: 4.2.0
+ picomatch: 4.0.7
+ std-env: 4.3.0
tinyglobby: 0.2.17
ufo: 1.6.4
transitivePeerDependencies:
+ - '@nuxt/schema'
+ - confbox
+ - dotenv
+ - giget
+ - jiti
- magic-string
- - magicast
- oxc-parser
- rolldown
- unplugin
@@ -7316,34 +7257,70 @@ snapshots:
- rolldown
- unplugin
- '@nuxt/kit@4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
- c12: 3.3.4(magicast@0.5.5)
consola: 3.4.2
defu: 6.1.7
destr: 2.0.5
- errx: 0.1.2
- exsolve: 1.1.1
- ignore: 7.0.6
- jiti: 2.7.0
+ errx: 0.2.2
+ exsolve: 1.1.3
+ ignore: 7.0.13
klona: 2.0.6
+ microdiff: 1.6.0
+ nostics: 1.3.0
+ package-manager-detector: 1.9.0
+ pathe: 2.0.3
+ rc9: 3.1.0
+ scule: 1.3.0
+ std-env: 4.3.0
+ tinyexec: 1.3.1
+ tinyglobby: 0.2.17
+ unctx: 3.0.1(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ verkit: 0.5.0
+ optionalDependencies:
+ '@nuxt/schema': 4.6.2
+ confbox: 0.3.1
+ dotenv: 17.4.2
+ giget: 3.2.0
+ jiti: 2.7.0
mlly: 1.8.2
- nostics: 1.2.0
- ohash: 2.0.11
+ oxc-parser: 0.141.0
+ rolldown: 1.2.15
+ transitivePeerDependencies:
+ - magic-string
+ - unplugin
+
+ '@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ dependencies:
+ consola: 3.4.2
+ defu: 6.1.7
+ destr: 2.0.5
+ errx: 0.2.2
+ exsolve: 1.1.3
+ ignore: 7.0.13
+ klona: 2.0.6
+ microdiff: 1.6.0
+ nostics: 1.3.0
+ package-manager-detector: 1.9.0
pathe: 2.0.3
- pkg-types: 2.3.1
- rc9: 3.0.1
+ rc9: 3.1.0
scule: 1.3.0
+ std-env: 4.3.0
+ tinyexec: 1.3.1
tinyglobby: 0.2.17
- ufo: 1.6.4
- unctx: 3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- untyped: 2.0.0
- verkit: 0.3.2
+ unctx: 3.0.1(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ verkit: 0.5.0
+ optionalDependencies:
+ '@nuxt/schema': 4.6.2
+ confbox: 0.3.1
+ dotenv: 17.4.2
+ giget: 3.2.0
+ jiti: 2.7.0
+ mlly: 1.8.2
+ oxc-parser: 0.141.0
+ rolldown: 1.2.15
transitivePeerDependencies:
- magic-string
- - magicast
- - oxc-parser
- - rolldown
- unplugin
'@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
@@ -7412,10 +7389,10 @@ snapshots:
- magic-string
- unplugin
- '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(@parcel/watcher@2.5.6)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(srvx@1.0.6)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/nitro-server@4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(@parcel/watcher@2.5.6)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(0aa2e1ff7ec74578bd134c9d216ec795))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(srvx@1.0.6)(supports-color@10.2.2)(typescript@6.0.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
consola: 3.4.2
defu: 6.1.7
destr: 2.0.5
@@ -7431,7 +7408,7 @@ snapshots:
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nitropack: 2.13.5(@parcel/watcher@2.5.6)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(oxc-parser@0.141.0)(rolldown@1.2.15)(srvx@1.0.6)(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
nostics: 1.3.0
- nuxt: 4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a)
+ nuxt: 4.6.2(0aa2e1ff7ec74578bd134c9d216ec795)
ohash: 2.0.12
pathe: 2.0.3
radix3: 1.1.2
@@ -7441,7 +7418,7 @@ snapshots:
unctx: 3.0.1(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
unrouting: 0.2.3
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
vue-bundle-renderer: 2.4.0
vue-devtools-stub: 0.1.0
optionalDependencies:
@@ -7522,11 +7499,11 @@ snapshots:
rc9: 3.0.1
std-env: 4.2.0
- '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.15)(rollup@4.65.0))(rollup@4.65.0)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)':
+ '@nuxt/vite-builder@4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(0aa2e1ff7ec74578bd134c9d216ec795))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.15)(rollup@4.65.0))(rollup@4.65.0)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@6.0.3)(vue-tsc@3.3.13(typescript@6.0.3))(vue@3.5.44(typescript@6.0.3))(yaml@2.9.0)':
dependencies:
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- '@vitejs/plugin-vue': 6.0.10(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
- '@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@vitejs/plugin-vue': 6.0.10(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
+ '@vitejs/plugin-vue-jsx': 5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
autoprefixer: 10.6.1(postcss@8.5.26)
clickable-path: 0.1.1
consola: 3.4.2
@@ -7540,7 +7517,7 @@ snapshots:
knitwork: 1.3.0
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- nuxt: 4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a)
+ nuxt: 4.6.2(0aa2e1ff7ec74578bd134c9d216ec795)
pathe: 2.0.3
pkg-types: 2.4.0
postcss: 8.5.26
@@ -7552,8 +7529,8 @@ snapshots:
unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
vite-node: 6.0.0(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- vite-plugin-checker: 0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@5.9.3))
- vue: 3.5.44(typescript@5.9.3)
+ vite-plugin-checker: 0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@6.0.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-tsc@3.3.13(typescript@6.0.3))
+ vue: 3.5.44(typescript@6.0.3)
vue-bundle-renderer: 2.4.0
optionalDependencies:
'@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.7(supports-color@10.2.2))
@@ -7595,7 +7572,7 @@ snapshots:
- webpack
- yaml
- '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
+ '@nuxt/vite-server@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(0aa2e1ff7ec74578bd134c9d216ec795))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
clickable-path: 0.1.1
@@ -7603,7 +7580,7 @@ snapshots:
exsolve: 1.1.3
mocked-exports: 0.1.1
my-bad: 0.2.11(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- nuxt: 4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a)
+ nuxt: 4.6.2(0aa2e1ff7ec74578bd134c9d216ec795)
pathe: 2.0.3
rou3: 0.9.2
srvx: 1.0.5
@@ -7622,13 +7599,13 @@ snapshots:
- rolldown
- unplugin
- '@nuxtjs/i18n@10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@nuxtjs/i18n@10.6.0(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(ioredis@5.11.1(supports-color@10.2.2))(magicast@0.5.5)(pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)))(rolldown@1.2.15)(rollup@4.65.0)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@intlify/core': 11.4.8
'@intlify/h3': 0.7.4
'@intlify/message-compiler': 11.4.8
'@intlify/shared': 11.4.8
- '@intlify/unplugin-vue-i18n': 11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.65.0)(supports-color@10.2.2)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)))(vue@3.5.44(typescript@5.9.3))
+ '@intlify/unplugin-vue-i18n': 11.2.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(rollup@4.65.0)(supports-color@10.2.2)(typescript@6.0.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-i18n@11.4.8(vue@3.5.44(typescript@6.0.3)))(vue@3.5.44(typescript@6.0.3))
'@intlify/utils': 0.14.1
'@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.65.0)
'@nuxt/kit': 4.5.2(magic-string@0.30.21)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
@@ -7651,8 +7628,8 @@ snapshots:
unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unrouting: 0.2.3
unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
- vue-i18n: 11.4.8(vue@3.5.44(typescript@5.9.3))
- vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ vue-i18n: 11.4.8(vue@3.5.44(typescript@6.0.3))
+ vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -8059,13 +8036,18 @@ snapshots:
tslib: 2.8.1
tsyringe: 4.10.0
- '@pinia/nuxt@1.0.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
+ '@pinia/nuxt@1.0.3(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)))(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))':
dependencies:
- '@nuxt/kit': 4.5.2(magic-string@1.4.3)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@0.30.21)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
+ pinia: 4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3))
transitivePeerDependencies:
+ - '@nuxt/schema'
+ - confbox
+ - dotenv
+ - giget
+ - jiti
- magic-string
- - magicast
+ - mlly
- oxc-parser
- rolldown
- unplugin
@@ -8289,7 +8271,7 @@ snapshots:
'@scure/base@2.2.0': {}
- '@simplewebauthn/browser@13.3.0': {}
+ '@simplewebauthn/browser@14.0.0': {}
'@simplewebauthn/server@14.0.3':
dependencies:
@@ -8310,197 +8292,195 @@ snapshots:
'@speed-highlight/core@1.2.15': {}
- '@standard-schema/spec@1.1.0': {}
-
'@thaunknown/thirty-two@1.0.6':
dependencies:
uint8-util: 2.3.2
- '@tiptap/core@3.31.0(@tiptap/pm@3.31.0)':
+ '@tiptap/core@3.32.0(@tiptap/pm@3.32.0)':
dependencies:
- '@tiptap/pm': 3.31.0
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-blockquote@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)':
+ '@tiptap/extension-blockquote@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-bold@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-bold@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-bubble-menu@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)':
+ '@tiptap/extension-bubble-menu@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
optional: true
- '@tiptap/extension-bullet-list@3.31.0(@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-bullet-list@3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/extension-list': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
- '@tiptap/extension-code-block@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)':
+ '@tiptap/extension-code-block@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-code@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-code@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-color@3.31.0(@tiptap/extension-text-style@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0)))':
+ '@tiptap/extension-color@3.32.0(@tiptap/extension-text-style@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0)))':
dependencies:
- '@tiptap/extension-text-style': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
+ '@tiptap/extension-text-style': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
- '@tiptap/extension-document@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-document@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-dropcursor@3.31.0(@tiptap/extensions@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-dropcursor@3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/extensions': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ '@tiptap/extensions': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
- '@tiptap/extension-floating-menu@3.31.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)':
+ '@tiptap/extension-floating-menu@3.32.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
optional: true
- '@tiptap/extension-gapcursor@3.31.0(@tiptap/extensions@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-gapcursor@3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/extensions': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ '@tiptap/extensions': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
- '@tiptap/extension-hard-break@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-hard-break@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-heading@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-heading@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-horizontal-rule@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)':
+ '@tiptap/extension-horizontal-rule@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-image@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-image@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-italic@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-italic@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-link@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)':
+ '@tiptap/extension-link@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
linkifyjs: 4.3.3
- '@tiptap/extension-list-item@3.31.0(@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-list-item@3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/extension-list': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
- '@tiptap/extension-list-keymap@3.31.0(@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-list-keymap@3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/extension-list': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
- '@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)':
+ '@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
- '@tiptap/extension-ordered-list@3.31.0(@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-ordered-list@3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/extension-list': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
- '@tiptap/extension-paragraph@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-paragraph@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-placeholder@3.31.0(@tiptap/extensions@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-placeholder@3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/extensions': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ '@tiptap/extensions': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
- '@tiptap/extension-strike@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-strike@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-text-align@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-text-align@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-text-style@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-text-style@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-text@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-text@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extension-underline@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))':
+ '@tiptap/extension-underline@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
- '@tiptap/extensions@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)':
+ '@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)':
dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
- '@tiptap/pm@3.31.0':
+ '@tiptap/pm@3.32.0':
dependencies:
- prosemirror-changeset: 2.4.1
- prosemirror-commands: 1.7.1
- prosemirror-dropcursor: 1.8.2
+ prosemirror-changeset: 2.4.4
+ prosemirror-commands: 1.7.2
+ prosemirror-dropcursor: 1.8.4
prosemirror-gapcursor: 1.4.1
- prosemirror-history: 1.5.0
+ prosemirror-history: 1.5.1
prosemirror-inputrules: 1.5.1
prosemirror-keymap: 1.2.3
prosemirror-model: 1.25.12
prosemirror-schema-list: 1.5.1
prosemirror-state: 1.4.4
prosemirror-tables: 1.8.5
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
prosemirror-view: 1.42.7
- '@tiptap/starter-kit@3.31.0':
- dependencies:
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/extension-blockquote': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
- '@tiptap/extension-bold': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-bullet-list': 3.31.0(@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))
- '@tiptap/extension-code': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-code-block': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
- '@tiptap/extension-document': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-dropcursor': 3.31.0(@tiptap/extensions@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))
- '@tiptap/extension-gapcursor': 3.31.0(@tiptap/extensions@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))
- '@tiptap/extension-hard-break': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-heading': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-horizontal-rule': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
- '@tiptap/extension-italic': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-link': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
- '@tiptap/extension-list': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
- '@tiptap/extension-list-item': 3.31.0(@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))
- '@tiptap/extension-list-keymap': 3.31.0(@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))
- '@tiptap/extension-ordered-list': 3.31.0(@tiptap/extension-list@3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0))
- '@tiptap/extension-paragraph': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-strike': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-text': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extension-underline': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))
- '@tiptap/extensions': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
-
- '@tiptap/vue-3@3.31.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)(vue@3.5.44(typescript@5.9.3))':
+ '@tiptap/starter-kit@3.32.0':
+ dependencies:
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/extension-blockquote': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
+ '@tiptap/extension-bold': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-bullet-list': 3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))
+ '@tiptap/extension-code': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-code-block': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
+ '@tiptap/extension-document': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-dropcursor': 3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))
+ '@tiptap/extension-gapcursor': 3.32.0(@tiptap/extensions@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))
+ '@tiptap/extension-hard-break': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-heading': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-horizontal-rule': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
+ '@tiptap/extension-italic': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-link': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
+ '@tiptap/extension-list': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
+ '@tiptap/extension-list-item': 3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))
+ '@tiptap/extension-list-keymap': 3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))
+ '@tiptap/extension-ordered-list': 3.32.0(@tiptap/extension-list@3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0))
+ '@tiptap/extension-paragraph': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-strike': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-text': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extension-underline': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))
+ '@tiptap/extensions': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
+
+ '@tiptap/vue-3@3.32.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.31.0(@tiptap/pm@3.31.0)
- '@tiptap/pm': 3.31.0
- vue: 3.5.44(typescript@5.9.3)
+ '@tiptap/core': 3.32.0(@tiptap/pm@3.32.0)
+ '@tiptap/pm': 3.32.0
+ vue: 3.5.44(typescript@6.0.3)
optionalDependencies:
- '@tiptap/extension-bubble-menu': 3.31.0(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
- '@tiptap/extension-floating-menu': 3.31.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.31.0(@tiptap/pm@3.31.0))(@tiptap/pm@3.31.0)
+ '@tiptap/extension-bubble-menu': 3.32.0(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
+ '@tiptap/extension-floating-menu': 3.32.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.32.0(@tiptap/pm@3.32.0))(@tiptap/pm@3.32.0)
'@tybys/wasm-util@0.10.3':
dependencies:
@@ -8560,12 +8540,12 @@ snapshots:
dependencies:
'@types/node': 26.6.5
- '@typescript-eslint/project-service@8.59.2(supports-color@10.2.2)(typescript@5.9.3)':
+ '@typescript-eslint/project-service@8.59.2(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3)
'@typescript-eslint/types': 8.59.2
debug: 4.4.3(supports-color@10.2.2)
- typescript: 5.9.3
+ typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -8574,24 +8554,24 @@ snapshots:
'@typescript-eslint/types': 8.59.2
'@typescript-eslint/visitor-keys': 8.59.2
- '@typescript-eslint/tsconfig-utils@8.59.2(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.59.2(typescript@6.0.3)':
dependencies:
- typescript: 5.9.3
+ typescript: 6.0.3
'@typescript-eslint/types@8.59.2': {}
- '@typescript-eslint/typescript-estree@8.59.2(supports-color@10.2.2)(typescript@5.9.3)':
+ '@typescript-eslint/typescript-estree@8.59.2(supports-color@10.2.2)(typescript@6.0.3)':
dependencies:
- '@typescript-eslint/project-service': 8.59.2(supports-color@10.2.2)(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.9.3)
+ '@typescript-eslint/project-service': 8.59.2(supports-color@10.2.2)(typescript@6.0.3)
+ '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3)
'@typescript-eslint/types': 8.59.2
'@typescript-eslint/visitor-keys': 8.59.2
debug: 4.4.3(supports-color@10.2.2)
minimatch: 10.2.5
semver: 7.8.5
tinyglobby: 0.2.17
- ts-api-utils: 2.5.0(typescript@5.9.3)
- typescript: 5.9.3
+ ts-api-utils: 2.5.0(typescript@6.0.3)
+ typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -8680,13 +8660,13 @@ snapshots:
- rollup
- unloader
- '@unhead/vue@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@unhead/vue@3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@unhead/bundler': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(unhead@3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
hookable: 6.1.1
unhead: 3.4.3(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
@@ -8722,7 +8702,7 @@ snapshots:
- rollup
- supports-color
- '@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@vitejs/plugin-vue-jsx@5.1.6(supports-color@10.2.2)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@babel/core': 7.29.7(supports-color@10.2.2)
'@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))
@@ -8730,32 +8710,15 @@ snapshots:
'@rolldown/pluginutils': 1.0.1
'@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@6.0.10(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))':
+ '@vitejs/plugin-vue@6.0.10(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@rolldown/pluginutils': 1.0.1
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- vue: 3.5.44(typescript@5.9.3)
-
- '@vitest/expect@4.1.12':
- dependencies:
- '@standard-schema/spec': 1.1.0
- '@types/chai': 5.2.3
- '@vitest/spy': 4.1.12
- '@vitest/utils': 4.1.12
- chai: 6.2.2
- tinyrainbow: 3.1.1
-
- '@vitest/mocker@4.1.12(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
- dependencies:
- '@vitest/spy': 4.1.12
- estree-walker: 3.0.3
- magic-string: 0.30.21
- optionalDependencies:
- vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
+ vue: 3.5.44(typescript@6.0.3)
'@vitest/mocker@5.0.5(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))':
dependencies:
@@ -8766,47 +8729,23 @@ snapshots:
optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- '@vitest/pretty-format@4.1.12':
- dependencies:
- tinyrainbow: 3.1.1
-
- '@vitest/runner@4.1.12':
- dependencies:
- '@vitest/utils': 4.1.12
- pathe: 2.0.3
-
- '@vitest/snapshot@4.1.12':
- dependencies:
- '@vitest/pretty-format': 4.1.12
- '@vitest/utils': 4.1.12
- magic-string: 0.30.21
- pathe: 2.0.3
-
- '@vitest/spy@4.1.12': {}
-
'@vitest/spy@5.0.5': {}
- '@vitest/utils@4.1.12':
- dependencies:
- '@vitest/pretty-format': 4.1.12
- convert-source-map: 2.0.0
- tinyrainbow: 3.1.1
-
'@volar/language-core@2.4.28':
dependencies:
'@volar/source-map': 2.4.28
'@volar/source-map@2.4.28': {}
- '@volar/typescript@2.4.28(typescript@5.9.3)':
+ '@volar/typescript@2.4.28(typescript@6.0.3)':
dependencies:
'@volar/language-core': 2.4.28
path-browserify: 1.0.1
vscode-uri: 3.2.0
optionalDependencies:
- typescript: 5.9.3
+ typescript: 6.0.3
- '@vue-macros/common@3.1.4(vue@3.5.44(typescript@5.9.3))':
+ '@vue-macros/common@3.1.4(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@vue/compiler-sfc': 3.5.42
ast-kit: 2.2.0
@@ -8814,7 +8753,7 @@ snapshots:
magic-string-ast: 1.0.3
unplugin-utils: 0.3.2
optionalDependencies:
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
'@vue/babel-helper-vue-transform-on@2.0.1': {}
@@ -8941,11 +8880,11 @@ snapshots:
dependencies:
'@vue/devtools-kit': 8.2.1
- '@vue/devtools-core@8.2.1(vue@3.5.44(typescript@5.9.3))':
+ '@vue/devtools-core@8.2.1(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@vue/devtools-kit': 8.2.1
'@vue/devtools-shared': 8.2.1
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
'@vue/devtools-kit@8.2.1':
dependencies:
@@ -8956,11 +8895,11 @@ snapshots:
'@vue/devtools-shared@8.2.1': {}
- '@vue/language-core@3.3.11':
+ '@vue/language-core@3.3.13':
dependencies:
'@volar/language-core': 2.4.28
- '@vue/compiler-dom': 3.5.41
- '@vue/shared': 3.5.41
+ '@vue/compiler-dom': 3.5.44
+ '@vue/shared': 3.5.44
alien-signals: 3.2.1
muggle-string: 0.4.1
path-browserify: 1.0.1
@@ -8994,18 +8933,18 @@ snapshots:
'@vue/shared@3.5.44': {}
- '@vueuse/core@14.4.0(vue@3.5.44(typescript@5.9.3))':
+ '@vueuse/core@15.0.0(vue@3.5.44(typescript@6.0.3))':
dependencies:
'@types/web-bluetooth': 0.0.21
- '@vueuse/metadata': 14.4.0
- '@vueuse/shared': 14.4.0(vue@3.5.44(typescript@5.9.3))
- vue: 3.5.44(typescript@5.9.3)
+ '@vueuse/metadata': 15.0.0
+ '@vueuse/shared': 15.0.0(vue@3.5.44(typescript@6.0.3))
+ vue: 3.5.44(typescript@6.0.3)
- '@vueuse/metadata@14.4.0': {}
+ '@vueuse/metadata@15.0.0': {}
- '@vueuse/shared@14.4.0(vue@3.5.44(typescript@5.9.3))':
+ '@vueuse/shared@15.0.0(vue@3.5.44(typescript@6.0.3))':
dependencies:
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
abbrev@3.0.1: {}
@@ -9196,7 +9135,7 @@ snapshots:
bep53-range@2.0.0: {}
- bidi-js@1.0.3:
+ bidi-js@1.1.0:
dependencies:
require-from-string: 2.0.2
@@ -9312,8 +9251,6 @@ snapshots:
caniuse-lite@1.0.30001819: {}
- chai@6.2.2: {}
-
chai@6.3.0: {}
chalk@4.1.2:
@@ -9321,14 +9258,14 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
- chart.js@4.5.1:
+ chart.js@4.6.1:
dependencies:
'@kurkle/color': 0.3.4
- chartjs-plugin-zoom@2.2.0(chart.js@4.5.1):
+ chartjs-plugin-zoom@2.2.0(chart.js@4.6.1):
dependencies:
'@types/hammerjs': 2.0.46
- chart.js: 4.5.1
+ chart.js: 4.6.1
hammerjs: 2.0.8
chokidar@3.6.0:
@@ -9499,10 +9436,10 @@ snapshots:
data-uri-to-buffer@4.0.1: {}
- data-urls@7.0.0(@noble/hashes@2.2.0):
+ data-urls@8.0.0(@noble/hashes@2.2.0):
dependencies:
whatwg-mimetype: 5.0.0
- whatwg-url: 16.0.1(@noble/hashes@2.2.0)
+ whatwg-url: 17.3.0(@noble/hashes@2.2.0)
transitivePeerDependencies:
- '@noble/hashes'
@@ -9563,6 +9500,18 @@ snapshots:
devalue@6.0.3: {}
+ devframe@1.2.6(cac@7.0.0)(srvx@1.0.6):
+ dependencies:
+ crossws: 0.4.16(srvx@1.0.6)
+ h3: 2.0.8(crossws@0.4.16(srvx@1.0.6))
+ nostics: 1.3.0
+ pathe: 2.0.3
+ optionalDependencies:
+ cac: 7.0.0
+ transitivePeerDependencies:
+ - ocache
+ - srvx
+
didyoumean@1.2.2: {}
diff@9.0.0: {}
@@ -9800,8 +9749,6 @@ snapshots:
signal-exit: 4.1.0
strip-final-newline: 3.0.0
- expect-type@1.3.0: {}
-
expect-type@1.4.0: {}
exsolve@1.1.1: {}
@@ -9890,57 +9837,54 @@ snapshots:
fnv1a-64@0.1.2: {}
- fontaine@0.8.0:
+ fontaine@1.0.3(esbuild@0.28.2)(postcss@8.5.26)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@capsizecss/unpack': 4.0.1
css-tree: 3.2.1
- magic-regexp: 0.10.0
- magic-string: 0.30.21
- pathe: 2.0.3
- ufo: 1.6.4
- unplugin: 2.3.11
+ magic-string: 1.4.3
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ optionalDependencies:
+ postcss: 8.5.26
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rsbuild/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - rolldown
+ - rollup
+ - unloader
+ - vite
+ - webpack
fontkitten@1.0.3:
dependencies:
tiny-inflate: 1.0.3
- fontless@0.2.1(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ fontless@1.3.4(devframe@1.2.6(cac@7.0.0)(srvx@1.0.6))(esbuild@0.28.2)(jiti@2.7.0)(lightningcss@1.33.0)(postcss@8.5.26)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
- consola: 3.4.2
css-tree: 3.2.1
defu: 6.1.7
- esbuild: 0.28.2
- fontaine: 0.8.0
+ exsolve: 1.1.3
+ fontaine: 1.0.3(esbuild@0.28.2)(postcss@8.5.26)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ magic-string: 1.4.3
+ unifont: 1.0.3
+ optionalDependencies:
+ devframe: 1.2.6(cac@7.0.0)(srvx@1.0.6)
jiti: 2.7.0
lightningcss: 1.33.0
- magic-string: 0.30.21
- ohash: 2.0.11
- pathe: 2.0.3
- ufo: 1.6.4
- unifont: 0.7.5
- unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(ioredis@5.11.1(supports-color@10.2.2))
- optionalDependencies:
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- - '@azure/app-configuration'
- - '@azure/cosmos'
- - '@azure/data-tables'
- - '@azure/identity'
- - '@azure/keyvault-secrets'
- - '@azure/storage-blob'
- - '@capacitor/preferences'
- - '@deno/kv'
- - '@netlify/blobs'
- - '@planetscale/database'
- - '@upstash/redis'
- - '@vercel/blob'
- - '@vercel/functions'
- - '@vercel/kv'
- - aws4fetch
- - db0
- - idb-keyval
- - ioredis
- - uploadthing
+ - '@farmfe/core'
+ - '@rsbuild/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - postcss
+ - rolldown
+ - rollup
+ - unloader
+ - webpack
foreground-child@3.3.1:
dependencies:
@@ -10081,6 +10025,13 @@ snapshots:
ufo: 1.6.4
uncrypto: 0.1.3
+ h3@2.0.8(crossws@0.4.16(srvx@1.0.6)):
+ dependencies:
+ rou3: 1.0.0
+ srvx: 1.0.6
+ optionalDependencies:
+ crossws: 0.4.16(srvx@1.0.6)
+
hammerjs@2.0.8: {}
has-flag@4.0.0: {}
@@ -10103,9 +10054,9 @@ snapshots:
hookable@6.1.2: {}
- html-encoding-sniffer@6.0.0(@noble/hashes@2.2.0):
+ html-encoding-sniffer@7.0.0(@noble/hashes@2.2.0):
dependencies:
- '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
+ '@exodus/bytes': 1.16.0(@noble/hashes@2.2.0)
transitivePeerDependencies:
- '@noble/hashes'
@@ -10302,10 +10253,10 @@ snapshots:
isexe@4.0.0: {}
- isomorphic-dompurify@4.1.0(@noble/hashes@2.2.0):
+ isomorphic-dompurify@4.6.0(@noble/hashes@2.2.0):
dependencies:
dompurify: 3.4.17
- jsdom: 30.0.1(@noble/hashes@2.2.0)
+ jsdom: 30.1.3(@noble/hashes@2.2.0)
transitivePeerDependencies:
- '@noble/hashes'
- canvas
@@ -10332,28 +10283,27 @@ snapshots:
dependencies:
argparse: 2.0.1
- jsdom@30.0.1(@noble/hashes@2.2.0):
+ jsdom@30.1.3(@noble/hashes@2.2.0):
dependencies:
- '@asamuzakjp/css-color': 6.0.7
- '@asamuzakjp/dom-selector': 8.3.2
+ '@asamuzakjp/css-color': 7.1.7
+ '@asamuzakjp/dom-selector': 10.0.5
'@bramus/specificity': 2.4.2
- '@csstools/css-syntax-patches-for-csstree': 1.1.8(css-tree@3.2.1)
- '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
+ '@csstools/css-syntax-patches-for-csstree': 1.1.15(css-tree@3.2.1)
+ '@exodus/bytes': 1.16.0(@noble/hashes@2.2.0)
css-tree: 3.2.1
- data-urls: 7.0.0(@noble/hashes@2.2.0)
+ data-urls: 8.0.0(@noble/hashes@2.2.0)
decimal.js: 10.6.0
- html-encoding-sniffer: 6.0.0(@noble/hashes@2.2.0)
+ html-encoding-sniffer: 7.0.0(@noble/hashes@2.2.0)
is-potential-custom-element-name: 1.0.1
- lru-cache: 11.5.2
+ lru-cache: 11.5.3
parse5: 8.0.1
saxes: 6.0.0
- symbol-tree: 3.2.4
tough-cookie: 6.0.2
undici: 8.12.3
- w3c-xmlserializer: 5.0.0
+ w3c-xmlserializer: 6.0.0
webidl-conversions: 8.0.1
whatwg-mimetype: 5.0.0
- whatwg-url: 17.1.0(@noble/hashes@2.2.0)
+ whatwg-url: 17.3.0(@noble/hashes@2.2.0)
xml-name-validator: 5.0.0
transitivePeerDependencies:
- '@noble/hashes'
@@ -10588,6 +10538,24 @@ snapshots:
ufo: 1.6.4
unplugin: 2.3.11
+ magic-regexp@0.11.2(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ dependencies:
+ magic-string: 1.4.3
+ regexp-tree: 0.1.27
+ type-level-regexp: 0.1.17
+ unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ transitivePeerDependencies:
+ - '@farmfe/core'
+ - '@rsbuild/core'
+ - '@rspack/core'
+ - bun-types-no-globals
+ - esbuild
+ - rolldown
+ - rollup
+ - unloader
+ - vite
+ - webpack
+
magic-string-ast@1.0.3:
dependencies:
magic-string: 0.30.21
@@ -10616,8 +10584,6 @@ snapshots:
bep53-range: 2.0.0
uint8-util: 2.3.2
- marked@18.0.10: {}
-
marked@18.1.1: {}
math-intrinsics@1.1.0: {}
@@ -10626,9 +10592,9 @@ snapshots:
media-typer@0.3.0: {}
- mediainfo.js@0.3.7:
+ mediainfo.js@0.3.8:
dependencies:
- yargs: 18.0.0
+ yargs: 18.2.0
merge-stream@2.0.0: {}
@@ -10885,20 +10851,20 @@ snapshots:
nuxt-define@1.0.0: {}
- nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a):
+ nuxt@4.6.2(0aa2e1ff7ec74578bd134c9d216ec795):
dependencies:
'@dxup/nuxt': 0.5.10(esbuild@0.28.2)(magicast@0.5.5)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@jridgewell/trace-mapping': 0.3.31
'@nuxt/cli': 4.0.1(@nuxt/schema@4.6.2)(jiti@2.7.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/devalue': 2.0.2
- '@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/devtools': 3.4.4(@nuxt/schema@4.6.2)(bufferutil@4.1.0)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(utf-8-validate@6.0.6)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(@parcel/watcher@2.5.6)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(srvx@1.0.6)(supports-color@10.2.2)(typescript@5.9.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@nuxt/nitro-server': 4.6.2(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@oxc-project/types@0.155.0)(@parcel/watcher@2.5.6)(confbox@0.3.1)(db0@0.3.4(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9)))(dotenv@17.4.2)(drizzle-orm@0.45.4(@opentelemetry/api@1.9.1)(postgres@3.4.9))(esbuild@0.28.2)(giget@3.2.0)(ioredis@5.11.1(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(0aa2e1ff7ec74578bd134c9d216ec795))(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(srvx@1.0.6)(supports-color@10.2.2)(typescript@6.0.3)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
'@nuxt/schema': 4.6.2
'@nuxt/telemetry': 2.9.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))
- '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.15)(rollup@4.65.0))(rollup@4.65.0)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))(vue@3.5.44(typescript@5.9.3))(yaml@2.9.0)
- '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(2fd4af2a8c78ac0b4f3e446ada90ff4a))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ '@nuxt/vite-builder': 4.6.2(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@10.2.2)))(@nuxt/schema@4.6.2)(@types/node@26.6.5)(confbox@0.3.1)(dotenv@17.4.2)(esbuild@0.28.2)(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(0aa2e1ff7ec74578bd134c9d216ec795))(optionator@0.9.4)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup-plugin-visualizer@7.1.1(rolldown@1.2.15)(rollup@4.65.0))(rollup@4.65.0)(supports-color@10.2.2)(terser@5.46.2)(tsx@4.23.15)(typescript@6.0.3)(vue-tsc@3.3.13(typescript@6.0.3))(vue@3.5.44(typescript@6.0.3))(yaml@2.9.0)
+ '@nuxt/vite-server': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(nuxt@4.6.2(0aa2e1ff7ec74578bd134c9d216ec795))(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+ '@unhead/vue': 3.4.3(@oxc-project/types@0.155.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
'@vue/shared': 3.5.44
chokidar: 5.0.0
clickable-path: 0.1.1
@@ -10950,10 +10916,10 @@ snapshots:
unrouting: 0.2.3
untyped: 2.0.0
verkit: 0.5.0
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
vue-bundle-renderer: 2.4.0
vue-component-type-helpers: 3.3.13
- vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3))
+ vue-router: 5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3))
optionalDependencies:
'@parcel/watcher': 2.5.6
'@types/node': 26.6.5
@@ -11040,6 +11006,12 @@ snapshots:
- xml2js
- yaml
+ nypm@0.6.11:
+ dependencies:
+ citty: 0.2.2
+ pathe: 2.0.3
+ tinyexec: 1.3.1
+
object-assign@4.1.1: {}
object-hash@3.0.0: {}
@@ -11240,21 +11212,19 @@ snapshots:
picomatch@2.3.2: {}
- picomatch@4.0.5: {}
-
picomatch@4.0.7: {}
piece-length@2.0.1: {}
pify@2.3.0: {}
- pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)):
+ pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)):
dependencies:
'@vue/devtools-api': 8.2.1
- nostics: 1.2.0
- vue: 3.5.44(typescript@5.9.3)
+ nostics: 1.3.0
+ vue: 3.5.44(typescript@6.0.3)
optionalDependencies:
- typescript: 5.9.3
+ typescript: 6.0.3
pino-abstract-transport@3.0.0:
dependencies:
@@ -11397,20 +11367,20 @@ snapshots:
retry: 0.12.0
signal-exit: 3.0.7
- prosemirror-changeset@2.4.1:
+ prosemirror-changeset@2.4.4:
dependencies:
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
- prosemirror-commands@1.7.1:
+ prosemirror-commands@1.7.2:
dependencies:
prosemirror-model: 1.25.12
prosemirror-state: 1.4.4
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
- prosemirror-dropcursor@1.8.2:
+ prosemirror-dropcursor@1.8.4:
dependencies:
prosemirror-state: 1.4.4
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
prosemirror-view: 1.42.7
prosemirror-gapcursor@1.4.1:
@@ -11420,17 +11390,17 @@ snapshots:
prosemirror-state: 1.4.4
prosemirror-view: 1.42.7
- prosemirror-history@1.5.0:
+ prosemirror-history@1.5.1:
dependencies:
prosemirror-state: 1.4.4
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
prosemirror-view: 1.42.7
rope-sequence: 1.3.4
prosemirror-inputrules@1.5.1:
dependencies:
prosemirror-state: 1.4.4
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
prosemirror-keymap@1.2.3:
dependencies:
@@ -11445,12 +11415,12 @@ snapshots:
dependencies:
prosemirror-model: 1.25.12
prosemirror-state: 1.4.4
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
prosemirror-state@1.4.4:
dependencies:
prosemirror-model: 1.25.12
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
prosemirror-view: 1.42.7
prosemirror-tables@1.8.5:
@@ -11458,10 +11428,10 @@ snapshots:
prosemirror-keymap: 1.2.3
prosemirror-model: 1.25.12
prosemirror-state: 1.4.4
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
prosemirror-view: 1.42.7
- prosemirror-transform@1.12.0:
+ prosemirror-transform@1.12.4:
dependencies:
prosemirror-model: 1.25.12
@@ -11469,7 +11439,7 @@ snapshots:
dependencies:
prosemirror-model: 1.25.12
prosemirror-state: 1.4.4
- prosemirror-transform: 1.12.0
+ prosemirror-transform: 1.12.4
pump@3.0.4:
dependencies:
@@ -11661,6 +11631,8 @@ snapshots:
rou3@0.9.2: {}
+ rou3@1.0.0: {}
+
run-applescript@7.1.0: {}
run-parallel@1.2.0:
@@ -11742,8 +11714,6 @@ snapshots:
shell-quote@1.12.0: {}
- siginfo@2.0.0: {}
-
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
@@ -11787,8 +11757,6 @@ snapshots:
srvx@1.0.6: {}
- stackback@0.0.2: {}
-
standard-as-callback@2.1.0: {}
statuses@1.5.0: {}
@@ -11875,8 +11843,6 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- symbol-tree@3.2.4: {}
-
tagged-tag@1.0.0: {}
tailwind-config-viewer@2.0.4(supports-color@10.2.2)(tailwindcss@3.4.19(tsx@4.23.15)(yaml@2.9.0)):
@@ -11980,16 +11946,12 @@ snapshots:
tiny-invariant@1.3.3: {}
- tinybench@2.9.0: {}
-
tinybench@6.2.2: {}
tinyclip@0.1.15: {}
tinyclip@1.0.3: {}
- tinyexec@1.3.0: {}
-
tinyexec@1.3.1: {}
tinyglobby@0.2.17:
@@ -11997,8 +11959,6 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.7)
picomatch: 4.0.7
- tinyrainbow@3.1.1: {}
-
tldts-core@7.0.30: {}
tldts@7.0.30:
@@ -12021,13 +11981,13 @@ snapshots:
tr46@0.0.3: {}
- tr46@6.0.0:
+ tr46@7.0.0:
dependencies:
punycode: 2.3.1
- ts-api-utils@2.5.0(typescript@5.9.3):
+ ts-api-utils@2.5.0(typescript@6.0.3):
dependencies:
- typescript: 5.9.3
+ typescript: 6.0.3
ts-interface-checker@0.1.13: {}
@@ -12066,7 +12026,7 @@ snapshots:
type-level-regexp@0.1.17: {}
- typescript@5.9.3: {}
+ typescript@6.0.3: {}
typescript@7.0.2:
optionalDependencies:
@@ -12126,9 +12086,16 @@ snapshots:
rolldown: 1.2.15
unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- unctx@3.0.0(magic-string@1.4.3)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
+ unctx@3.0.1(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
optionalDependencies:
- magic-string: 1.4.3
+ magic-string: 0.30.21
+ oxc-parser: 0.141.0
+ rolldown: 1.2.15
+ unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
+
+ unctx@3.0.1(magic-string@0.30.21)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))):
+ optionalDependencies:
+ magic-string: 0.30.21
oxc-parser: 0.141.0
rolldown: 1.2.15
unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
@@ -12175,10 +12142,11 @@ snapshots:
unicorn-magic@0.4.0: {}
- unifont@0.7.5:
+ unifont@1.0.3:
dependencies:
css-tree: 3.2.1
- ohash: 2.0.11
+ fnv1a-64: 0.1.2
+ std-env: 4.3.0
undici: 8.12.3
unimport@6.5.0(esbuild@0.28.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
@@ -12386,7 +12354,7 @@ snapshots:
- tsx
- yaml
- vite-plugin-checker@0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@5.9.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-tsc@3.3.11(typescript@5.9.3)):
+ vite-plugin-checker@0.14.5(eslint@10.3.0(jiti@2.7.0)(supports-color@10.2.2))(optionator@0.9.4)(typescript@6.0.3)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue-tsc@3.3.13(typescript@6.0.3)):
dependencies:
'@babel/code-frame': 7.29.7
chokidar: 5.0.0
@@ -12399,8 +12367,8 @@ snapshots:
optionalDependencies:
eslint: 10.3.0(jiti@2.7.0)(supports-color@10.2.2)
optionator: 0.9.4
- typescript: 5.9.3
- vue-tsc: 3.3.11(typescript@5.9.3)
+ typescript: 6.0.3
+ vue-tsc: 3.3.13(typescript@6.0.3)
vite-plugin-inspect@11.4.1(@nuxt/kit@4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
@@ -12417,7 +12385,7 @@ snapshots:
optionalDependencies:
'@nuxt/kit': 4.6.2(@nuxt/schema@4.6.2)(confbox@0.3.1)(dotenv@17.4.2)(giget@3.2.0)(jiti@2.7.0)(magic-string@1.4.3)(mlly@1.8.2)(oxc-parser@0.141.0)(rolldown@1.2.15)(unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)))
- vite-plugin-vue-tracer@1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
+ vite-plugin-vue-tracer@1.5.0(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3)):
dependencies:
estree-walker: 3.0.3
exsolve: 1.1.1
@@ -12425,7 +12393,7 @@ snapshots:
pathe: 2.0.3
source-map-js: 1.2.2
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0):
dependencies:
@@ -12443,36 +12411,7 @@ snapshots:
tsx: 4.23.15
yaml: 2.9.0
- vitest@4.1.12(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
- dependencies:
- '@vitest/expect': 4.1.12
- '@vitest/mocker': 4.1.12(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
- '@vitest/pretty-format': 4.1.12
- '@vitest/runner': 4.1.12
- '@vitest/snapshot': 4.1.12
- '@vitest/spy': 4.1.12
- '@vitest/utils': 4.1.12
- es-module-lexer: 2.1.0
- expect-type: 1.3.0
- magic-string: 0.30.21
- obug: 2.1.1
- pathe: 2.0.3
- picomatch: 4.0.7
- std-env: 4.2.0
- tinybench: 2.9.0
- tinyexec: 1.3.0
- tinyglobby: 0.2.17
- tinyrainbow: 3.1.1
- vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
- why-is-node-running: 2.3.0
- optionalDependencies:
- '@opentelemetry/api': 1.9.1
- '@types/node': 26.6.5
- jsdom: 30.0.1(@noble/hashes@2.2.0)
- transitivePeerDependencies:
- - msw
-
- vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.0.1(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
+ vitest@5.0.5(@opentelemetry/api@1.9.1)(@types/node@26.6.5)(jsdom@30.1.3(@noble/hashes@2.2.0))(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)):
dependencies:
'@types/chai': 5.2.3
'@vitest/mocker': 5.0.5(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
@@ -12491,7 +12430,7 @@ snapshots:
optionalDependencies:
'@opentelemetry/api': 1.9.1
'@types/node': 26.6.5
- jsdom: 30.0.1(@noble/hashes@2.2.0)
+ jsdom: 30.1.3(@noble/hashes@2.2.0)
transitivePeerDependencies:
- msw
@@ -12501,26 +12440,26 @@ snapshots:
dependencies:
ufo: 1.6.4
- vue-chartjs@5.3.4(chart.js@4.5.1)(vue@3.5.44(typescript@5.9.3)):
+ vue-chartjs@5.3.4(chart.js@4.6.1)(vue@3.5.44(typescript@6.0.3)):
dependencies:
- chart.js: 4.5.1
- vue: 3.5.44(typescript@5.9.3)
+ chart.js: 4.6.1
+ vue: 3.5.44(typescript@6.0.3)
vue-component-type-helpers@3.3.13: {}
vue-devtools-stub@0.1.0: {}
- vue-i18n@11.4.8(vue@3.5.44(typescript@5.9.3)):
+ vue-i18n@11.4.8(vue@3.5.44(typescript@6.0.3)):
dependencies:
'@intlify/core-base': 11.4.8
'@intlify/devtools-types': 11.4.8
'@intlify/shared': 11.4.8
'@vue/devtools-api': 6.6.4
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
- vue-router@5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@5.9.3)):
+ vue-router@5.4.0(@vue/compiler-sfc@3.5.41)(esbuild@0.28.2)(pinia@4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3)))(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))(vue@3.5.44(typescript@6.0.3)):
dependencies:
- '@vue-macros/common': 3.1.4(vue@3.5.44(typescript@5.9.3))
+ '@vue-macros/common': 3.1.4(vue@3.5.44(typescript@6.0.3))
'@vue/devtools-api': 8.2.1
ast-walker-scope: 0.10.0
chokidar: 5.0.0
@@ -12536,10 +12475,10 @@ snapshots:
tinyglobby: 0.2.17
unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.15)(rollup@4.65.0)(vite@8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0))
unplugin-utils: 0.3.2
- vue: 3.5.44(typescript@5.9.3)
+ vue: 3.5.44(typescript@6.0.3)
optionalDependencies:
'@vue/compiler-sfc': 3.5.41
- pinia: 4.0.3(@vue/devtools-api@8.2.1)(typescript@5.9.3)(vue@3.5.44(typescript@5.9.3))
+ pinia: 4.1.0(@vue/devtools-api@8.2.1)(typescript@6.0.3)(vue@3.5.44(typescript@6.0.3))
vite: 8.3.5(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.46.2)(tsx@4.23.15)(yaml@2.9.0)
transitivePeerDependencies:
- '@farmfe/core'
@@ -12552,13 +12491,13 @@ snapshots:
- unloader
- webpack
- vue-tsc@3.3.11(typescript@5.9.3):
+ vue-tsc@3.3.13(typescript@6.0.3):
dependencies:
- '@volar/typescript': 2.4.28(typescript@5.9.3)
- '@vue/language-core': 3.3.11
- typescript: 5.9.3
+ '@volar/typescript': 2.4.28(typescript@6.0.3)
+ '@vue/language-core': 3.3.13
+ typescript: 6.0.3
- vue@3.5.44(typescript@5.9.3):
+ vue@3.5.44(typescript@6.0.3):
dependencies:
'@vue/compiler-dom': 3.5.44
'@vue/compiler-sfc': 3.5.44
@@ -12566,11 +12505,11 @@ snapshots:
'@vue/server-renderer': 3.5.44
'@vue/shared': 3.5.44
optionalDependencies:
- typescript: 5.9.3
+ typescript: 6.0.3
w3c-keyname@2.2.8: {}
- w3c-xmlserializer@5.0.0:
+ w3c-xmlserializer@6.0.0:
dependencies:
xml-name-validator: 5.0.0
@@ -12594,18 +12533,10 @@ snapshots:
whatwg-mimetype@5.0.0: {}
- whatwg-url@16.0.1(@noble/hashes@2.2.0):
+ whatwg-url@17.3.0(@noble/hashes@2.2.0):
dependencies:
- '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
- tr46: 6.0.0
- webidl-conversions: 8.0.1
- transitivePeerDependencies:
- - '@noble/hashes'
-
- whatwg-url@17.1.0(@noble/hashes@2.2.0):
- dependencies:
- '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
- tr46: 6.0.0
+ '@exodus/bytes': 1.16.0(@noble/hashes@2.2.0)
+ tr46: 7.0.0
webidl-conversions: 8.0.1
transitivePeerDependencies:
- '@noble/hashes'
@@ -12625,11 +12556,6 @@ snapshots:
dependencies:
isexe: 4.0.0
- why-is-node-running@2.3.0:
- dependencies:
- siginfo: 2.0.0
- stackback: 0.0.2
-
why-is-node-running@3.2.1: {}
word-wrap@1.2.5: {}
@@ -12722,15 +12648,6 @@ 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
-
yargs@18.2.0:
dependencies:
cliui: 9.0.1
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index d6c7832d..8b83e0b3 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -8,19 +8,27 @@ shamefullyHoist: false
# DEUX versions de TypeScript, volontairement. Ne pas « harmoniser ».
#
# racine : ^7.0.2 — vérifie l'API (`tsc -p apps/api/.nitro/…`)
-# apps/web : ~5.9.3 — vérifie le front (`nuxt typecheck`, donc vue-tsc)
+# apps/web : ~6.0.3 — vérifie le front (`nuxt typecheck`, donc vue-tsc)
#
# TypeScript 7 est le portage natif en Go. Son export principal ne contient
# plus le compilateur : `exports["."]` pointe sur `lib/version.cjs`, et
# `require('typescript').createProgram` vaut `undefined` (mesuré sur 7.0.2).
# Seules des entrées `./unstable/*` exposent une API, encore instable.
#
-# vue-tsc 3.3.11 déclare pourtant `peerDependencies: { typescript: ">=5.0.0" }`.
+# vue-tsc 3.3.13 déclare pourtant `peerDependencies: { typescript: ">=5.0.0" }`.
# Cette plage est fausse pour 7.x : rien n'empêche donc quelqu'un de retirer le
# pin de `apps/web`, de laisser pnpm résoudre le TypeScript de la racine, et de
# casser `nuxt typecheck` sans qu'aucun avertissement de pair ne le signale.
# Le pin EST le garde-fou. Il tombera quand volar saura parler à l'API
-# `unstable` — pas avant.
+# `unstable` — pas avant : @vue/language-core 4.0.0-alpha.0 réclame
+# `typescript >=7.1.0-beta`, rien de stable. Ce que vue-tsc 3.3.13 sait faire
+# (lu dans son `index.js`), c'est suivre un `typescript` aliasé vers
+# `@typescript/typescript6` jusqu'au tsc 6 qu'il embarque — l'API JavaScript de
+# 6.0, toujours pas celle de 7.
+#
+# 6.0 est donc la dernière marche possible, et elle a été franchie le
+# 2026-10-24 : `nuxt typecheck` vert sur 6.0.3, et une erreur volontaire
+# glissée dans un `.vue` y est bien rapportée (TS2322) — pas un faux vert.
# No `confirmModulesPurge` any more, and do not add it back. pnpm 11 asked
# before removing node_modules and refused without a TTY
@@ -160,18 +168,13 @@ overrides:
# qui n'arrive que par @nuxt/devtools) ne corrige donc pas vite ; 8.2.4 est la
# première version qui porte le correctif.
"vite": "^8.2.4"
- # GHSA-c8x8-7fp4-3x9w (<1.42.3) : coller du HTML fourni par un attaquant dans un
- # éditeur ProseMirror peut exécuter son JavaScript dans la page qui l'héberge.
- # Celui-ci tourne chez nous, dans le navigateur : WysiwygEditor (tiptap) sert à
- # la description des torrents, au dépôt comme à l'édition, et à deux écrans
- # d'administration. @tiptap/pm 3.31 accepte `^1.41.9`, d'où le plancher.
- "prosemirror-view": "^1.42.3"
- # Ce plancher en impose un second : prosemirror-view 1.42.7 exige
- # prosemirror-model ^1.25.12, quand le reste de la pile tiptap gardait 1.25.11.
- # Deux copies du modèle, c'est deux classes `Node` : les nœuds de l'une ne sont
- # pas des instances de l'autre, et l'éditeur casse.
- "prosemirror-model": "^1.25.12"
- # Un seul exemplaire, même raison. nuxt 4.6.2 exige vue-router ^5.4.0 et unhead
+ # Plus d'override prosemirror-view ni prosemirror-model. Ils posaient le
+ # correctif de GHSA-c8x8-7fp4-3x9w (XSS au collage dans l'éditeur, <1.42.3) et
+ # le modèle unique qui va avec, parce que @tiptap/pm 3.31 acceptait encore
+ # `^1.41.9`. @tiptap/pm 3.32 exige lui-même `^1.42.6` et `^1.25.12` : retirés
+ # le 2026-10-24, la résolution est restée identique, une version de chacun.
+
+ # Un seul exemplaire de chacun. nuxt 4.6.2 exige vue-router ^5.4.0 et unhead
# ^3.4.3 ; @nuxtjs/i18n 10.6.0 les déclare en dépendances ordinaires (^5.2.0,
# ^3.2.3) et pnpm lui laissait les 5.3.0 et 3.3.2 déjà verrouillées. Deux
# vue-router, c'est deux clés d'injection : le `useRouter()` d'i18n ne
From a66979c4c37585b9dc2d3e9af9061c8dda88f1e3 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:48 +0200
Subject: [PATCH 06/44] chore(deps): Tailwind 4.3.3 and Vue 3.5.44 in the doc
site
@tailwindcss/vite, tailwindcss 4.3.0 -> 4.3.3
vue 3.5.42 -> 3.5.44 (spec; 3.5.44 was already locked)
overrides: esbuild ^0.28.2, postcss ^8.5.31
VitePress stays on 1.6.4, its latest release (2.0 is an alpha), and its
vite override stays on 7, now at its last release, 7.3.7. Vite 8 was
tried: VitePress 1.6.4's plugin assigns to the bundle object, which
rolldown refuses ("not supported by Rolldown"), and the build produced no
page at all.
Tailwind 4.3.3 also stops calling module.register(), which Node 26 has
deprecated (DEP0205): the warning the 4.3.0 build printed is gone.
`allowScripts: { esbuild: true }` names the one install script the site
needs, as allowBuilds does for the workspace. npm 11.20 warns about
unlisted scripts and is moving to blocking them; the entry is unpinned so
an esbuild bump does not bring the warning back.
Measured on node:26-alpine: `npm ci` and `npm run build` pass, 60 pages,
`npm outdated` is empty and `npm audit` finds nothing; the image builds.
Co-Authored-By: Claude Opus 5.5
---
doc/package-lock.json | 392 +++++++++++++++++++++---------------------
doc/package.json | 13 +-
2 files changed, 204 insertions(+), 201 deletions(-)
diff --git a/doc/package-lock.json b/doc/package-lock.json
index 57c0a29f..8f007b55 100644
--- a/doc/package-lock.json
+++ b/doc/package-lock.json
@@ -8,10 +8,10 @@
"name": "trackarr-docs",
"version": "1.0.0",
"devDependencies": {
- "@tailwindcss/vite": "^4.3.0",
- "tailwindcss": "^4.3.0",
+ "@tailwindcss/vite": "^4.3.3",
+ "tailwindcss": "^4.3.3",
"vitepress": "^1.6.4",
- "vue": "^3.5.42"
+ "vue": "^3.5.44"
}
},
"node_modules/@algolia/abtesting": {
@@ -374,9 +374,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
- "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz",
+ "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==",
"cpu": [
"ppc64"
],
@@ -391,9 +391,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
- "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz",
+ "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==",
"cpu": [
"arm"
],
@@ -408,9 +408,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
- "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz",
+ "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==",
"cpu": [
"arm64"
],
@@ -425,9 +425,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
- "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz",
+ "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==",
"cpu": [
"x64"
],
@@ -442,9 +442,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
- "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz",
+ "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==",
"cpu": [
"arm64"
],
@@ -459,9 +459,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
- "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz",
+ "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==",
"cpu": [
"x64"
],
@@ -476,9 +476,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
- "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==",
"cpu": [
"arm64"
],
@@ -493,9 +493,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
- "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz",
+ "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==",
"cpu": [
"x64"
],
@@ -510,9 +510,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
- "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz",
+ "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==",
"cpu": [
"arm"
],
@@ -527,9 +527,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
- "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz",
+ "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==",
"cpu": [
"arm64"
],
@@ -544,9 +544,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
- "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz",
+ "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==",
"cpu": [
"ia32"
],
@@ -561,9 +561,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
- "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz",
+ "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==",
"cpu": [
"loong64"
],
@@ -578,9 +578,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
- "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz",
+ "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==",
"cpu": [
"mips64el"
],
@@ -595,9 +595,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
- "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz",
+ "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==",
"cpu": [
"ppc64"
],
@@ -612,9 +612,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
- "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz",
+ "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==",
"cpu": [
"riscv64"
],
@@ -629,9 +629,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
- "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz",
+ "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==",
"cpu": [
"s390x"
],
@@ -646,9 +646,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
- "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz",
+ "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==",
"cpu": [
"x64"
],
@@ -663,9 +663,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
- "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==",
"cpu": [
"arm64"
],
@@ -680,9 +680,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
- "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==",
"cpu": [
"x64"
],
@@ -697,9 +697,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
- "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==",
"cpu": [
"arm64"
],
@@ -714,9 +714,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
- "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==",
"cpu": [
"x64"
],
@@ -731,9 +731,9 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
- "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz",
+ "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==",
"cpu": [
"arm64"
],
@@ -748,9 +748,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
- "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz",
+ "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==",
"cpu": [
"x64"
],
@@ -765,9 +765,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
- "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz",
+ "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==",
"cpu": [
"arm64"
],
@@ -782,9 +782,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
- "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz",
+ "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==",
"cpu": [
"ia32"
],
@@ -799,9 +799,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
- "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz",
+ "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==",
"cpu": [
"x64"
],
@@ -1359,49 +1359,49 @@
"license": "MIT"
},
"node_modules/@tailwindcss/node": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz",
- "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz",
+ "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/remapping": "^2.3.5",
- "enhanced-resolve": "^5.21.0",
- "jiti": "^2.6.1",
+ "enhanced-resolve": "^5.24.1",
+ "jiti": "^2.7.0",
"lightningcss": "1.32.0",
"magic-string": "^0.30.21",
"source-map-js": "^1.2.1",
- "tailwindcss": "4.3.0"
+ "tailwindcss": "4.3.3"
}
},
"node_modules/@tailwindcss/oxide": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz",
- "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz",
+ "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 20"
},
"optionalDependencies": {
- "@tailwindcss/oxide-android-arm64": "4.3.0",
- "@tailwindcss/oxide-darwin-arm64": "4.3.0",
- "@tailwindcss/oxide-darwin-x64": "4.3.0",
- "@tailwindcss/oxide-freebsd-x64": "4.3.0",
- "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0",
- "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0",
- "@tailwindcss/oxide-linux-arm64-musl": "4.3.0",
- "@tailwindcss/oxide-linux-x64-gnu": "4.3.0",
- "@tailwindcss/oxide-linux-x64-musl": "4.3.0",
- "@tailwindcss/oxide-wasm32-wasi": "4.3.0",
- "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0",
- "@tailwindcss/oxide-win32-x64-msvc": "4.3.0"
+ "@tailwindcss/oxide-android-arm64": "4.3.3",
+ "@tailwindcss/oxide-darwin-arm64": "4.3.3",
+ "@tailwindcss/oxide-darwin-x64": "4.3.3",
+ "@tailwindcss/oxide-freebsd-x64": "4.3.3",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.3.3",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.3.3",
+ "@tailwindcss/oxide-linux-x64-musl": "4.3.3",
+ "@tailwindcss/oxide-wasm32-wasi": "4.3.3",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.3.3"
}
},
"node_modules/@tailwindcss/oxide-android-arm64": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz",
- "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz",
+ "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==",
"cpu": [
"arm64"
],
@@ -1416,9 +1416,9 @@
}
},
"node_modules/@tailwindcss/oxide-darwin-arm64": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz",
- "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz",
+ "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==",
"cpu": [
"arm64"
],
@@ -1433,9 +1433,9 @@
}
},
"node_modules/@tailwindcss/oxide-darwin-x64": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz",
- "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz",
+ "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==",
"cpu": [
"x64"
],
@@ -1450,9 +1450,9 @@
}
},
"node_modules/@tailwindcss/oxide-freebsd-x64": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz",
- "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz",
+ "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==",
"cpu": [
"x64"
],
@@ -1467,9 +1467,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz",
- "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz",
+ "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==",
"cpu": [
"arm"
],
@@ -1484,9 +1484,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz",
- "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz",
+ "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==",
"cpu": [
"arm64"
],
@@ -1504,9 +1504,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm64-musl": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz",
- "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz",
+ "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==",
"cpu": [
"arm64"
],
@@ -1524,9 +1524,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-x64-gnu": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz",
- "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz",
+ "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==",
"cpu": [
"x64"
],
@@ -1544,9 +1544,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-x64-musl": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz",
- "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz",
+ "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==",
"cpu": [
"x64"
],
@@ -1564,9 +1564,9 @@
}
},
"node_modules/@tailwindcss/oxide-wasm32-wasi": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz",
- "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz",
+ "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==",
"bundleDependencies": [
"@napi-rs/wasm-runtime",
"@emnapi/core",
@@ -1582,11 +1582,11 @@
"license": "MIT",
"optional": true,
"dependencies": {
- "@emnapi/core": "^1.10.0",
- "@emnapi/runtime": "^1.10.0",
- "@emnapi/wasi-threads": "^1.2.1",
+ "@emnapi/core": "^1.11.1",
+ "@emnapi/runtime": "^1.11.1",
+ "@emnapi/wasi-threads": "^1.2.2",
"@napi-rs/wasm-runtime": "^1.1.4",
- "@tybys/wasm-util": "^0.10.1",
+ "@tybys/wasm-util": "^0.10.2",
"tslib": "^2.8.1"
},
"engines": {
@@ -1594,18 +1594,18 @@
}
},
"node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": {
- "version": "1.10.0",
+ "version": "1.11.1",
"dev": true,
"inBundle": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@emnapi/wasi-threads": "1.2.1",
+ "@emnapi/wasi-threads": "1.2.2",
"tslib": "^2.4.0"
}
},
"node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": {
- "version": "1.10.0",
+ "version": "1.11.1",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -1615,7 +1615,7 @@
}
},
"node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/wasi-threads": {
- "version": "1.2.1",
+ "version": "1.2.2",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -1643,7 +1643,7 @@
}
},
"node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@tybys/wasm-util": {
- "version": "0.10.1",
+ "version": "0.10.2",
"dev": true,
"inBundle": true,
"license": "MIT",
@@ -1660,9 +1660,9 @@
"optional": true
},
"node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz",
- "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz",
+ "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==",
"cpu": [
"arm64"
],
@@ -1677,9 +1677,9 @@
}
},
"node_modules/@tailwindcss/oxide-win32-x64-msvc": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz",
- "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz",
+ "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==",
"cpu": [
"x64"
],
@@ -1694,15 +1694,15 @@
}
},
"node_modules/@tailwindcss/vite": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.0.tgz",
- "integrity": "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.3.tgz",
+ "integrity": "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@tailwindcss/node": "4.3.0",
- "@tailwindcss/oxide": "4.3.0",
- "tailwindcss": "4.3.0"
+ "@tailwindcss/node": "4.3.3",
+ "@tailwindcss/oxide": "4.3.3",
+ "tailwindcss": "4.3.3"
},
"peerDependencies": {
"vite": "^5.2.0 || ^6 || ^7 || ^8"
@@ -2189,9 +2189,9 @@
"license": "MIT"
},
"node_modules/enhanced-resolve": {
- "version": "5.21.2",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.2.tgz",
- "integrity": "sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ==",
+ "version": "5.26.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.26.0.tgz",
+ "integrity": "sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2216,9 +2216,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
- "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz",
+ "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -2229,32 +2229,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.28.1",
- "@esbuild/android-arm": "0.28.1",
- "@esbuild/android-arm64": "0.28.1",
- "@esbuild/android-x64": "0.28.1",
- "@esbuild/darwin-arm64": "0.28.1",
- "@esbuild/darwin-x64": "0.28.1",
- "@esbuild/freebsd-arm64": "0.28.1",
- "@esbuild/freebsd-x64": "0.28.1",
- "@esbuild/linux-arm": "0.28.1",
- "@esbuild/linux-arm64": "0.28.1",
- "@esbuild/linux-ia32": "0.28.1",
- "@esbuild/linux-loong64": "0.28.1",
- "@esbuild/linux-mips64el": "0.28.1",
- "@esbuild/linux-ppc64": "0.28.1",
- "@esbuild/linux-riscv64": "0.28.1",
- "@esbuild/linux-s390x": "0.28.1",
- "@esbuild/linux-x64": "0.28.1",
- "@esbuild/netbsd-arm64": "0.28.1",
- "@esbuild/netbsd-x64": "0.28.1",
- "@esbuild/openbsd-arm64": "0.28.1",
- "@esbuild/openbsd-x64": "0.28.1",
- "@esbuild/openharmony-arm64": "0.28.1",
- "@esbuild/sunos-x64": "0.28.1",
- "@esbuild/win32-arm64": "0.28.1",
- "@esbuild/win32-ia32": "0.28.1",
- "@esbuild/win32-x64": "0.28.1"
+ "@esbuild/aix-ppc64": "0.28.2",
+ "@esbuild/android-arm": "0.28.2",
+ "@esbuild/android-arm64": "0.28.2",
+ "@esbuild/android-x64": "0.28.2",
+ "@esbuild/darwin-arm64": "0.28.2",
+ "@esbuild/darwin-x64": "0.28.2",
+ "@esbuild/freebsd-arm64": "0.28.2",
+ "@esbuild/freebsd-x64": "0.28.2",
+ "@esbuild/linux-arm": "0.28.2",
+ "@esbuild/linux-arm64": "0.28.2",
+ "@esbuild/linux-ia32": "0.28.2",
+ "@esbuild/linux-loong64": "0.28.2",
+ "@esbuild/linux-mips64el": "0.28.2",
+ "@esbuild/linux-ppc64": "0.28.2",
+ "@esbuild/linux-riscv64": "0.28.2",
+ "@esbuild/linux-s390x": "0.28.2",
+ "@esbuild/linux-x64": "0.28.2",
+ "@esbuild/netbsd-arm64": "0.28.2",
+ "@esbuild/netbsd-x64": "0.28.2",
+ "@esbuild/openbsd-arm64": "0.28.2",
+ "@esbuild/openbsd-x64": "0.28.2",
+ "@esbuild/openharmony-arm64": "0.28.2",
+ "@esbuild/sunos-x64": "0.28.2",
+ "@esbuild/win32-arm64": "0.28.2",
+ "@esbuild/win32-ia32": "0.28.2",
+ "@esbuild/win32-x64": "0.28.2"
}
},
"node_modules/estree-walker": {
@@ -2814,9 +2814,9 @@
"license": "MIT"
},
"node_modules/nanoid": {
- "version": "3.3.18",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz",
- "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==",
+ "version": "3.3.20",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
+ "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
"dev": true,
"funding": [
{
@@ -2872,9 +2872,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.26",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz",
- "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==",
+ "version": "8.5.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.31.tgz",
+ "integrity": "sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==",
"dev": true,
"funding": [
{
@@ -2892,9 +2892,9 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.17",
+ "nanoid": "^3.3.20",
"picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
+ "source-map-js": "^1.2.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
@@ -3093,9 +3093,9 @@
"license": "MIT"
},
"node_modules/tailwindcss": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz",
- "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz",
+ "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==",
"dev": true,
"license": "MIT"
},
diff --git a/doc/package.json b/doc/package.json
index 50b3b867..5e24107f 100644
--- a/doc/package.json
+++ b/doc/package.json
@@ -8,15 +8,18 @@
"preview": "vitepress preview"
},
"devDependencies": {
- "@tailwindcss/vite": "^4.3.0",
- "tailwindcss": "^4.3.0",
+ "@tailwindcss/vite": "^4.3.3",
+ "tailwindcss": "^4.3.3",
"vitepress": "^1.6.4",
- "vue": "^3.5.42"
+ "vue": "^3.5.44"
},
"overrides": {
- "esbuild": "^0.28.1",
+ "esbuild": "^0.28.2",
"vite": "^7.3.7",
- "postcss": "^8.5.23",
+ "postcss": "^8.5.31",
"source-map-js": "^1.2.2"
+ },
+ "allowScripts": {
+ "esbuild": true
}
}
From 6ed306f3583da71d9c218977fdde138458aa8225 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:48 +0200
Subject: [PATCH 07/44] chore(deps): PgBouncer 1.26.1, Redis 8.10.2, Caddy
2.11.7, RustFS 1.0.3, Dockerfile syntax 1.28
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
edoburu/pgbouncer v1.25.2-p0 -> v1.26.1-p0 compose
redis 8.10.1 -> 8.10.2 compose, e2e, CI, scripts
caddy 2.11.4 -> 2.11.7 compose
rustfs/rustfs 1.0.0-rc.3 -> 1.0.3 API CI
docker/dockerfile 1.7 -> 1.28 the four Node Dockerfiles
postgres 18.6 (unchanged: 19 is a release candidate)
PgBouncer 1.26.0 and 1.26.1 are security releases. Two reach this stack:
CVE-2026-107350 lets a user who knows one SCRAM password in auth_file log
in as another SCRAM user — our pooler is scram-sha-256 over a userlist —
and CVE-2026-6668 loops forever on a packet before authentication, at the
default max_packet_size. 1.26 also tracks search_path and
default_transaction_read_only by default in transaction pooling and drops
online restart, which nothing here uses. The image's entrypoint is byte-
for-byte the one of v1.25.2-p0. Tested against Postgres 18.6 with the
compose file's own environment: SCRAM login and 400 executions of four
prepared statements interleaved over ten connections, transactions
included, with no error.
Redis 8.10.2 is a security release too (transactions could still reach
keys whose ACL had been revoked while queued).
Caddy 2.11.6 changed defaults: 16 KiB request headers, 1-minute idle
read/write timeouts (pauses between writes, as in SSE, do not count; both
our streams beat every 30 s), header names with a dot dropped, and some
silent configs made errors. The Caddyfile validates on 2.11.7 and adapts
to byte-identical JSON on 2.11.4 and 2.11.7. `encode` now streams SSE
instead of buffering it.
RustFS 1.0.3 ran the API integration suite's 7 object-storage tests.
Co-Authored-By: Claude Opus 5.5
---
.github/workflows/api-ci.yml | 4 ++--
apps/api/Dockerfile | 2 +-
apps/api/scripts/run-integration-tests.sh | 2 +-
apps/web/Dockerfile | 2 +-
apps/web/Dockerfile.static | 2 +-
doc/Dockerfile | 2 +-
doc/guide/high-availability.md | 4 ++++
doc/guide/upgrading.md | 2 +-
docker-compose.loadtest.yml | 2 +-
docker-compose.prod.yml | 6 +++---
tests/e2e/docker-compose.yml | 2 +-
11 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/api-ci.yml b/.github/workflows/api-ci.yml
index 25a7ec90..41e52d56 100644
--- a/.github/workflows/api-ci.yml
+++ b/.github/workflows/api-ci.yml
@@ -168,7 +168,7 @@ jobs:
--health-timeout 5s
--health-retries 20
redis:
- image: redis:8.10.1-alpine
+ image: redis:8.10.2-alpine
ports:
- 6379:6379
options: >-
@@ -180,7 +180,7 @@ jobs:
# Pinned rather than `:latest`. The suite it serves asserts byte-exact
# SigV4 behaviour, so a floating tag is a test that can start failing
# for a reason that is not in this repository.
- image: rustfs/rustfs:1.0.0-rc.3
+ image: rustfs/rustfs:1.0.3
env:
RUSTFS_ACCESS_KEY: trackarritest
RUSTFS_SECRET_KEY: trackarritestsecret
diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile
index f5160d7f..3abaeca5 100644
--- a/apps/api/Dockerfile
+++ b/apps/api/Dockerfile
@@ -1,4 +1,4 @@
-# syntax=docker/dockerfile:1.7
+# syntax=docker/dockerfile:1.28
# Trackarr API — Nitro standalone, distroless runtime.
#
# The runtime image carries:
diff --git a/apps/api/scripts/run-integration-tests.sh b/apps/api/scripts/run-integration-tests.sh
index b5ac2f09..8e7b4a2c 100755
--- a/apps/api/scripts/run-integration-tests.sh
+++ b/apps/api/scripts/run-integration-tests.sh
@@ -29,7 +29,7 @@ PG=trackarr-itest-pg
RD=trackarr-itest-redis
S3=trackarr-itest-rustfs
PG_IMAGE=postgres:18.6-alpine
-RD_IMAGE=redis:8.10.1-alpine
+RD_IMAGE=redis:8.10.2-alpine
S3_IMAGE=rustfs/rustfs:latest
NODE_IMAGE=node:26-alpine
DB_URL="postgres://tracker:tracker@${PG}:5432/trackarr"
diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile
index 9de2a022..1f194c75 100644
--- a/apps/web/Dockerfile
+++ b/apps/web/Dockerfile
@@ -1,4 +1,4 @@
-# syntax=docker/dockerfile:1.7
+# syntax=docker/dockerfile:1.28
# Trackarr web — Nuxt SSR, distroless runtime.
#
# The Nitro server bundle in `.output/server/` is fully self-contained
diff --git a/apps/web/Dockerfile.static b/apps/web/Dockerfile.static
index fd6d6e6d..85319086 100644
--- a/apps/web/Dockerfile.static
+++ b/apps/web/Dockerfile.static
@@ -1,4 +1,4 @@
-# syntax=docker/dockerfile:1.7
+# syntax=docker/dockerfile:1.28
# Trackarr web — static SPA build, distroless nginx runtime.
#
# This image is the no-SSR alternative to apps/web/Dockerfile. Memory
diff --git a/doc/Dockerfile b/doc/Dockerfile
index 51cd4e68..265c4cfe 100644
--- a/doc/Dockerfile
+++ b/doc/Dockerfile
@@ -1,4 +1,4 @@
-# syntax=docker/dockerfile:1.7
+# syntax=docker/dockerfile:1.28
#
# Trackarr documentation — VitePress static build, distroless nginx
# runtime. Final image lands around 12 MB.
diff --git a/doc/guide/high-availability.md b/doc/guide/high-availability.md
index efc52f0f..037d1c5b 100644
--- a/doc/guide/high-availability.md
+++ b/doc/guide/high-availability.md
@@ -260,6 +260,10 @@ path is worth more than saving the tracker one hop.
`transaction` mode. Tested directly against PgBouncer 1.25.2 with
`postgres.js` 3.4.9 and Postgres 18.6: 80 statements reused across separate
transactions, no error, behaviour identical to connecting straight to Postgres.
+Re-run on PgBouncer 1.26.1 (the `edoburu/pgbouncer:v1.26.1-p0` image the compose
+file pins, configured by the same environment variables): 400 executions of four
+prepared statements interleaved over ten client connections, explicit
+transactions included, SCRAM authentication, no error.
The measurement was right and its earlier explanation was wrong. This page used
to say "postgres.js accounts for the pooling mode itself"; the actual reason is
diff --git a/doc/guide/upgrading.md b/doc/guide/upgrading.md
index dbef5ad9..48e77185 100644
--- a/doc/guide/upgrading.md
+++ b/doc/guide/upgrading.md
@@ -65,7 +65,7 @@ getting out of a hole rather than for normal use.
## Upgrading to PostgreSQL 18 and Redis 8
The compose files moved from `postgres:16-alpine` to `postgres:18.6-alpine` and
-from `redis:7` to `redis:8.10.1-alpine`. One of those is a restart. The other is
+from `redis:7` to `redis:8.10.2-alpine`. One of those is a restart. The other is
not.
### Redis 8 is a restart
diff --git a/docker-compose.loadtest.yml b/docker-compose.loadtest.yml
index c659f3d6..45bbf739 100644
--- a/docker-compose.loadtest.yml
+++ b/docker-compose.loadtest.yml
@@ -70,7 +70,7 @@ services:
- trackarr-loadtest
redis:
- image: redis:8.10.1-alpine
+ image: redis:8.10.2-alpine
container_name: trackarr-loadtest-redis
restart: unless-stopped
command: >
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
index 982c2489..7d14dfe6 100644
--- a/docker-compose.prod.yml
+++ b/docker-compose.prod.yml
@@ -25,7 +25,7 @@ services:
caddy:
# Pinned rather than floating on 2-alpine: a rescheduled container should
# not pull a different Caddy than the one the TLS setup was verified on.
- image: caddy:2.11.4-alpine
+ image: caddy:2.11.7-alpine
container_name: trackarr-caddy
restart: always
# Caddy already runs from a tight image; lock the rootfs and only
@@ -445,7 +445,7 @@ services:
pgbouncer:
# NOTE: consider running non-root + read_only with a tmpfs for its runtime
# dir once verified against the image (finding L14).
- image: edoburu/pgbouncer:v1.25.2-p0
+ image: edoburu/pgbouncer:v1.26.1-p0
container_name: trackarr-pgbouncer
restart: always
# Match the privilege reduction every other service in the stack gets —
@@ -500,7 +500,7 @@ services:
# in-place bump — stop, pull, start. The 8.0 breaking change was ACL
# categories absorbing the Search/JSON/timeseries commands, and this stack
# authenticates with requirepass rather than ACLs, so it is unaffected.
- image: redis:8.10.1-alpine
+ image: redis:8.10.2-alpine
container_name: trackarr-redis
restart: always
# Redis only writes to /data (volume-mounted below) — locking the
diff --git a/tests/e2e/docker-compose.yml b/tests/e2e/docker-compose.yml
index 742940a4..3a8741c2 100644
--- a/tests/e2e/docker-compose.yml
+++ b/tests/e2e/docker-compose.yml
@@ -27,7 +27,7 @@ services:
retries: 30
redis:
- image: redis:8.10.1-alpine
+ image: redis:8.10.2-alpine
command: ["redis-server", "--requirepass", "e2e-redis-password"]
# Published so a scenario can clear the rate-limit counters between phases —
# see the note in lib.mjs. Sessions live in here too, which is why the
From b4b7b9b0bb9a949d87e42b44276c096b69c43bb5 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:48 +0200
Subject: [PATCH 08/44] chore(deps): CloudNativePG, Valkey and RustFS subcharts
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
cluster (CloudNativePG) 0.8.1 -> 0.9.0
cloudnative-pg 0.29.0 -> 0.29.1 operator 1.30.1
valkey 0.11.0 -> 0.12.0 Valkey 9.1.1 -> 9.1.2
rustfs 0.12.0 -> 1.0.3 RustFS 1.0.0-beta.12 -> 1.0.3
Every change in the subcharts' default values is an addition. Rendered
with the defaults, with S3 + RustFS and with the operator enabled, the
manifests differ only in random secrets, image tags and the operator's
CRDs. The RustFS chart 0.12 was deploying a beta; 1.0.3 is the release the
API CI already tests against.
check-render.sh had one assertion failing before this change, with the old
subcharts too: it expected rendering S3 + RustFS without credentials to be
refused. It dates from before 3eba6d5, which made the chart generate the
pair and hand it over by Secret name — rendering now succeeds by design.
The assertion checks that instead: the generated Secret exists and every
secretKeyRef resolves. All render checks pass on the new subcharts.
Co-Authored-By: Claude Opus 5.5
---
deploy/helm/trackarr/Chart.lock | 12 ++++++------
deploy/helm/trackarr/Chart.yaml | 8 ++++----
deploy/helm/trackarr/check-render.sh | 9 ++++++++-
3 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/deploy/helm/trackarr/Chart.lock b/deploy/helm/trackarr/Chart.lock
index 68230399..54024551 100644
--- a/deploy/helm/trackarr/Chart.lock
+++ b/deploy/helm/trackarr/Chart.lock
@@ -1,15 +1,15 @@
dependencies:
- name: cluster
repository: https://cloudnative-pg.github.io/charts
- version: 0.8.1
+ version: 0.9.0
- name: cloudnative-pg
repository: https://cloudnative-pg.github.io/charts
- version: 0.29.0
+ version: 0.29.1
- name: valkey
repository: https://valkey.io/valkey-helm
- version: 0.11.0
+ version: 0.12.0
- name: rustfs
repository: https://charts.rustfs.com
- version: 0.12.0
-digest: sha256:5c228d8b0f8dbfc1209d16438d33a72c5e916c0781fea85c178cb4ea24f25c9e
-generated: "2026-08-24T10:06:25.730137+02:00"
+ version: 1.0.3
+digest: sha256:7398ede678d43444de7df0af659f4e584d4bc79fa740df3698b00ea79d1c48bb
+generated: "2026-10-24T16:15:38.30862075Z"
diff --git a/deploy/helm/trackarr/Chart.yaml b/deploy/helm/trackarr/Chart.yaml
index 0f922241..98cb6823 100644
--- a/deploy/helm/trackarr/Chart.yaml
+++ b/deploy/helm/trackarr/Chart.yaml
@@ -36,7 +36,7 @@ maintainers:
dependencies:
- name: cluster
alias: postgresql
- version: 0.8.1
+ version: 0.9.0
repository: https://cloudnative-pg.github.io/charts
condition: postgresql.enabled
@@ -45,16 +45,16 @@ dependencies:
# once (see README). The flag exists for throwaway and CI clusters.
- name: cloudnative-pg
alias: postgresqlOperator
- version: 0.29.0
+ version: 0.29.1
repository: https://cloudnative-pg.github.io/charts
condition: postgresqlOperator.enabled
- name: valkey
- version: 0.11.0
+ version: 0.12.0
repository: https://valkey.io/valkey-helm
condition: valkey.enabled
- name: rustfs
- version: 0.12.0
+ version: 1.0.3
repository: https://charts.rustfs.com
condition: rustfs.enabled
diff --git a/deploy/helm/trackarr/check-render.sh b/deploy/helm/trackarr/check-render.sh
index f649c5d0..f5f09b75 100755
--- a/deploy/helm/trackarr/check-render.sh
+++ b/deploy/helm/trackarr/check-render.sh
@@ -145,7 +145,14 @@ assert_absent "s3 : plus de UPLOADS_DIR" "name: UPLOADS_DIR" $HOST $S3
assert_contains "s3 : endpoint dérivé du Service RustFS" "http://chk-rustfs-svc:9000" $HOST $S3
assert_fails_with "s3 sans endpoint ni rustfs" "storage.s3.endpoint is empty" \
$HOST --set storage.driver=s3
-assert_fails_with "s3 + rustfs sans identifiants" "must be set to non-default" \
+# Sans identifiants, le rendu doit RÉUSSIR : depuis 3eba6d5, le chart génère la
+# paire (templates/storage-auth.yaml) et la passe au sous-chart par le nom de
+# Secret. L'assertion d'avant attendait le refus de RustFS (« must be set to
+# non-default ») ; elle datait d'avant ce commit et échouait depuis, constaté
+# sur les sous-charts d'origine comme sur les nouveaux le 2026-10-24.
+assert_secret_refs_resolve "s3 + rustfs sans identifiants — le chart les génère" "$CNPG_SECRET" \
+ $HOST --set storage.driver=s3 --set rustfs.enabled=true
+assert_contains "s3 + rustfs sans identifiants — Secret généré" "name: trackarr-s3-auth" \
$HOST --set storage.driver=s3 --set rustfs.enabled=true
assert_fails_with "driver de stockage inconnu" "storage.driver must be" \
$HOST --set storage.driver=minio
From 345311aa9c77624e4794325341ad8b6d7bb61767 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:48 +0200
Subject: [PATCH 09/44] ci(deps): bump the pinned actions
actions/setup-node 7.0.0 -> 7.1.0
docker/setup-buildx-action 4.3.0 -> 4.4.1
docker/build-push-action 7.3.0 -> 7.4.0
actions/deploy-pages 5.0.0 -> 5.0.1
softprops/action-gh-release 3.x -> 3.0.3
Still pinned by commit SHA, the tag in the trailing comment. None of the
release notes lists a breaking change; build-push 7.4.0 fixes a workflow
command injection through its metadata logs.
Left out on purpose: docker/login-action 4.7.0, published 2026-10-23.
dependabot.yml gives actions a 7-day cooldown, and this one holds the
registry credentials.
actionlint and zizmor (medium and above) find nothing.
Co-Authored-By: Claude Opus 5.5
---
.github/workflows/api-ci.yml | 10 +++++-----
.github/workflows/deploy-docs.yml | 4 ++--
.github/workflows/docker.yml | 24 ++++++++++++------------
.github/workflows/docs-ci.yml | 2 +-
.github/workflows/release-tag.yml | 2 +-
.github/workflows/web-ci.yml | 10 +++++-----
6 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/.github/workflows/api-ci.yml b/.github/workflows/api-ci.yml
index 41e52d56..3afe8e85 100644
--- a/.github/workflows/api-ci.yml
+++ b/.github/workflows/api-ci.yml
@@ -64,7 +64,7 @@ jobs:
persist-credentials: false
- name: Set up Node
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
# Matches `node:26-alpine` in apps/api/Dockerfile, so CI checks the
# runtime we actually ship.
@@ -120,7 +120,7 @@ jobs:
persist-credentials: false
- name: Set up Node
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 26
@@ -194,7 +194,7 @@ jobs:
persist-credentials: false
- name: Set up Node
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 26
@@ -310,12 +310,12 @@ jobs:
persist-credentials: false
- name: Set up Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
# Single-arch and loaded into the local daemon: the check has to `docker
# run` it, which a `--push`-only multi-arch build cannot do.
- name: Build the API image
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: .
file: apps/api/Dockerfile
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
index 4786e164..a5e7ed7e 100644
--- a/.github/workflows/deploy-docs.yml
+++ b/.github/workflows/deploy-docs.yml
@@ -45,7 +45,7 @@ jobs:
persist-credentials: false
- name: Setup Node
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
# Node 26, comme `doc/Dockerfile` et comme les autres workflows.
# Ce travail était resté sur 20, en fin de vie depuis avril 2026 :
@@ -86,4 +86,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
- uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index 5624dc76..dde3181b 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -112,11 +112,11 @@ jobs:
# que sur `release`, `workflow_call` et `workflow_dispatch`, jamais sur une
# pull request. `web-ci.yml` et `api-ci.yml` montent bien buildx de leur
# côté, ce qui rendait leurs propres builds verts et masquait le manque.
- - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
+ - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
- name: Build and push api image
id: build-and-push
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: ./
file: ./apps/api/Dockerfile
@@ -192,11 +192,11 @@ jobs:
# que sur `release`, `workflow_call` et `workflow_dispatch`, jamais sur une
# pull request. `web-ci.yml` et `api-ci.yml` montent bien buildx de leur
# côté, ce qui rendait leurs propres builds verts et masquait le manque.
- - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
+ - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
- name: Build and push tracker image
id: build-and-push
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: ./
file: ./apps/tracker/Dockerfile
@@ -278,11 +278,11 @@ jobs:
# que sur `release`, `workflow_call` et `workflow_dispatch`, jamais sur une
# pull request. `web-ci.yml` et `api-ci.yml` montent bien buildx de leur
# côté, ce qui rendait leurs propres builds verts et masquait le manque.
- - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
+ - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
- name: Build and push relay image
id: build-and-push
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: ./
file: ./apps/relay/Dockerfile
@@ -358,11 +358,11 @@ jobs:
# que sur `release`, `workflow_call` et `workflow_dispatch`, jamais sur une
# pull request. `web-ci.yml` et `api-ci.yml` montent bien buildx de leur
# côté, ce qui rendait leurs propres builds verts et masquait le manque.
- - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
+ - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
- name: Build and push front-ssr image
id: build-and-push
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: ./
file: ./apps/web/Dockerfile
@@ -437,11 +437,11 @@ jobs:
# que sur `release`, `workflow_call` et `workflow_dispatch`, jamais sur une
# pull request. `web-ci.yml` et `api-ci.yml` montent bien buildx de leur
# côté, ce qui rendait leurs propres builds verts et masquait le manque.
- - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
+ - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
- name: Build and push front image
id: build-and-push
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: ./
file: ./apps/web/Dockerfile.static
@@ -520,11 +520,11 @@ jobs:
# que sur `release`, `workflow_call` et `workflow_dispatch`, jamais sur une
# pull request. `web-ci.yml` et `api-ci.yml` montent bien buildx de leur
# côté, ce qui rendait leurs propres builds verts et masquait le manque.
- - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
+ - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
- name: Build and push docs image
id: build-and-push
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
# The doc bundle is a self-contained npm project; scope
# the build context to ./doc so the COPY in Dockerfile
diff --git a/.github/workflows/docs-ci.yml b/.github/workflows/docs-ci.yml
index 49d1c96d..4d764f5b 100644
--- a/.github/workflows/docs-ci.yml
+++ b/.github/workflows/docs-ci.yml
@@ -43,7 +43,7 @@ jobs:
persist-credentials: false
- name: Setup Node
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
# Node 26, comme `doc/Dockerfile` et comme les autres workflows.
# Ce travail était resté sur 20, en fin de vie depuis avril 2026 :
diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml
index 0d993bb9..43b188f2 100644
--- a/.github/workflows/release-tag.yml
+++ b/.github/workflows/release-tag.yml
@@ -108,7 +108,7 @@ jobs:
- name: Create GitHub Release
if: steps.check_tag.outputs.exists == 'false'
# v1 runs on a Node runtime GitHub no longer supports.
- uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3
+ uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
tag_name: ${{ steps.version.outputs.version }}
name: Release ${{ steps.version.outputs.version }}
diff --git a/.github/workflows/web-ci.yml b/.github/workflows/web-ci.yml
index ecd49875..94a51d83 100644
--- a/.github/workflows/web-ci.yml
+++ b/.github/workflows/web-ci.yml
@@ -75,7 +75,7 @@ jobs:
persist-credentials: false
- name: Set up Node
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 26
@@ -101,7 +101,7 @@ jobs:
persist-credentials: false
- name: Set up Node
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
+ uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
# Matches `node:26-alpine` in apps/web/Dockerfile, so CI checks the
# runtime we actually ship.
@@ -131,14 +131,14 @@ jobs:
persist-credentials: false
- name: Set up Buildx
- uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
+ uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
# Neither image is loaded or run: the question this job answers is
# whether the SFCs still compile, and a failed `nuxt build` fails the
# step. The gha cache keeps the repeat cost down; drop the job if that
# trade stops being worth it.
- name: SSR image
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: .
file: apps/web/Dockerfile
@@ -147,7 +147,7 @@ jobs:
cache-to: type=gha,mode=max,scope=web-ssr
- name: Static image
- uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
+ uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: .
file: apps/web/Dockerfile.static
From ba8dbacbc084d112a6c82ebeeae49e70e9ccc494 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sat, 24 Oct 2026 23:49:48 +0200
Subject: [PATCH 10/44] feat(web): Tailwind CSS 4
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
tailwindcss 3.4.19 (via @nuxtjs/tailwindcss 6.14.0) -> 4.3.3
@tailwindcss/vite -> 4.3.3, replacing the Nuxt module
tailwind.config.ts -> the `@theme inline` block at the top of main.css
@nuxtjs/tailwindcss 6.14.0 is the module's latest release and pins
tailwindcss ~3.4.17, so Tailwind 4 comes in through its own Vite plugin, and
main.css is loaded through `css:` like any stylesheet.
The design tokens share Tailwind 4's theme namespace (`--font-sans`,
`--radius-md`, `--ease-standard`, `--shadow-*`, 20 names in all). The
official upgrade tool turns that into `@theme { --radius-md: var(--radius-md) }`
and rewrites prose inside comments, so its output was not used as is.
Instead:
- `@theme inline` translates the config key by key, with Tailwind 3's key
names. Utilities carry the value written there — `rounded-sm` is still
`var(--radius-xs)`, bare `rounded` still `var(--radius-sm)` — so no class
in a template changes meaning.
- The tokens are unlayered and what Tailwind emits lives in `@layer theme`,
so wherever a name collides, the token wins the cascade; operator themes
from /api/theme.css are unlayered too.
- `@layer components` and `@layer utilities` stay native cascade layers.
Nothing applies a variant to those classes; the one `@apply` of a custom
class (`.eyebrow` inside `.eyebrow-mono`) became a grouped selector.
- Three Tailwind 3 defaults are restored in `@layer base`, because elements
relying on them would change look without a class changing: gray-200
for a bare `border`, gray-400 placeholders, the pointer on buttons.
- `hover:` keeps Tailwind 3's behaviour (`@custom-variant hover (&:hover)`):
Tailwind 4 drops it on touch screens, which would leave hover-revealed
controls unreachable there.
- Tailwind 4 redrew its default palette in oklch, more saturated (sky-400
loses 56 of red, amber-400 36 of blue). The nine shades in use — eight in
templates, gray-400 for placeholders — keep Tailwind 3's values in a
plain `@theme` block; deleting it adopts the new palette.
- `bg-linear-to-r` blends in oklab where `bg-gradient-to-r` blended in
sRGB, so the two Torznab gauges say `/srgb`.
- Removed utilities renamed, 49 occurrences in 16 components, two of them
comments: `flex-shrink-0` -> `shrink-0` (37), `outline-none` ->
`outline-hidden` (5), `backdrop-blur-sm` -> `backdrop-blur-xs` (4),
`bg-gradient-to-r` -> `bg-linear-to-r` (2), `flex-grow` -> `grow` (1).
The two components that `@apply` in their own
diff --git a/apps/web/i18n/locales/en.json b/apps/web/i18n/locales/en.json
index 5c0d11ca..bdb0d95f 100644
--- a/apps/web/i18n/locales/en.json
+++ b/apps/web/i18n/locales/en.json
@@ -6328,6 +6328,13 @@
"forever": "Every change made from the moderation or admin console — a ban, a role, a setting, a rejected upload — is recorded with who made it and when, and kept indefinitely. Readable by admins only. The entry cannot be edited or removed by the staffer who caused it."
}
},
+ "rules": {
+ "eyebrow": "Site rules",
+ "title": "The rules of {instance}",
+ "loading": "Reading the rules…",
+ "unavailable": "The rules could not be read just now. Reload, and tell the staff if it persists.",
+ "empty": "The staff have not written any rules yet."
+ },
"tickets": {
"title": "Tickets",
"openTab": "Open",
diff --git a/apps/web/i18n/locales/fr.json b/apps/web/i18n/locales/fr.json
index 34002c11..11315897 100644
--- a/apps/web/i18n/locales/fr.json
+++ b/apps/web/i18n/locales/fr.json
@@ -6328,6 +6328,13 @@
"forever": "Chaque changement fait depuis la console de modération ou d'administration — un bannissement, un rôle, un réglage, une mise en ligne refusée — est enregistré avec son auteur et sa date, et conservé sans limite de durée. Lisible par les administrateurs uniquement. L'entrée ne peut être ni modifiée ni supprimée par le membre du personnel qui l'a provoquée."
}
},
+ "rules": {
+ "eyebrow": "Règles du site",
+ "title": "Les règles de {instance}",
+ "loading": "Lecture des règles…",
+ "unavailable": "Les règles n’ont pas pu être lues. Rechargez la page, et prévenez l’équipe si cela persiste.",
+ "empty": "L’équipe n’a pas encore rédigé de règles."
+ },
"tickets": {
"title": "Tickets",
"openTab": "Ouverts",
diff --git a/doc/guide/branding.md b/doc/guide/branding.md
index 5d081557..0f65cdc4 100644
--- a/doc/guide/branding.md
+++ b/doc/guide/branding.md
@@ -80,7 +80,7 @@ Each row is a free-form `(key, value)` pair (both `text`). The keys are enumerat
| Key | Effect |
| ------------ | --------------------------------------------------------------------------------- |
-| `site_rules` | Markdown. Surfaces on the registration page and in the user's dropdown menu. |
+| `site_rules` | Rich text, shown at `/rules` — readable signed out, since an invitation is accepted after reading them — and linked from the footer once set. |
### Announcement banner
@@ -141,7 +141,7 @@ The endpoints overwrite the previous file (one logo + one favicon active at a ti
- **First-boot defaults**: `registration_open` defaults to `false` (opt-in registration), `staffBypass` defaults to `true`. The first admin should sweep `/admin/settings` once after install.
- **Cache staleness on rollback**: if you roll back a setting by editing `settings` directly in the DB (e.g. a recovery action), publish a manual invalidation: `redis-cli PUBLISH settings:invalidate `. Without it, every Nitro replica keeps the stale value until the 60 s TTL expires.
-- **What renders how**: `welcome_message` comes from the rich-text editor and is stored as HTML; the home page sanitises it with the editor's own profile (DOMPurify, which keeps colours and alignment) before rendering. `footer_text` is sanitised HTML, inline. `announcement_message` is plain text. `site_rules` is edited here, but no member-facing page shows it yet.
+- **What renders how**: `welcome_message` comes from the rich-text editor and is stored as HTML; the home page sanitises it with the editor's own profile (DOMPurify, which keeps colours and alignment) before rendering. `footer_text` is sanitised HTML, inline. `announcement_message` is plain text. `site_rules` is rich text too, rendered the same way on `/rules`.
## Implementation reference
diff --git a/doc/reference/api.md b/doc/reference/api.md
index 066fc6a7..43bd4d0b 100644
--- a/doc/reference/api.md
+++ b/doc/reference/api.md
@@ -67,6 +67,7 @@ The tracker has no WebTorrent (WebSocket) announce path. Don't advertise a `wss:
| GET | `/api/branding` | Site title, tagline, logo URL, favicon URL, feature flags. |
| GET | `/api/runtime-config` | Public Nuxt runtime config (announce URLs, etc.) for the static SPA. |
| GET | `/api/announcement` | Operator-set homepage banner (text + level). |
+| GET | `/api/rules` | The site rules from Admin → Branding, as HTML (`{ rules }`), shown at `/rules`. |
| GET | `/api/homepage-content` | Featured rails, custom blocks (operator-curated). |
| GET | `/api/categories` | Hierarchical category tree. |
| GET | `/api/tags` | Tag master list (autocomplete source). |
From 1b7dab42af2504973578c214cc9a1af3794dfbbf Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 01:08:28 +0200
Subject: [PATCH 30/44] fix: five holes in the fixes above, found on a second
read
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The whole series read again, as an outside reviewer would. Six points;
five are fixed here.
## A peer_id squat
Refusing an announce under a peer_id held by another member left a
squat: when the owner announced `stopped`, a stranger could take the
freed peer_id, and the owner coming back under it — libtorrent keeps
one per session — was refused for as long as the stranger re-announced.
And the dedup keys, made of the peer_id alone, let a stranger
announcing under someone else's peer_id hold that member's 2-second
window shut.
A member whose peer_id another member holds now gets a field of their
own, `peer_id:user_id` (`peers.Slot`, one HMGET), and stays on it for
as long as it lives. The write script refuses, atomically, to overwrite
another member's entry, and the member is part of the dedup and credit
keys. Measured end to end: the squat costs the owner nothing (1803 s
credited on their own field), and the stranger's announces no longer
close their window. Four Go tests.
## Key order at upload
Decode then encode sorted every dictionary as a side effect. Without
it, a `.torrent` from a careless encoder, keys out of order, was stored
as it came, under another infohash than the same release uploaded
before, and the duplicate check missed it. The upload sorts keys by
their raw bytes at every depth now, values copied verbatim, so a file
that is already canonical comes out byte for byte; a repeated key keeps
its last value, as the decoder did. Three tests.
## Integers the scanner accepted
An integer was skipped to the next `e`, so `ixyze` passed. Digits only
now, with an optional sign; leading zeros stay tolerated, so a file
stored years ago remains downloadable. One test.
## Refusal timing
A username with no account and a wrong proof got the same status and
message but not the same work — the second reads the account, decrypts
its verifier and hashes — and the milliseconds between them enumerated
members. Every refusal of credentials now ends no sooner than 300 ms
after the request arrived; measured, 310 to 320 ms either way.
## The WS tile
The protocol matrix still listed `ws`, always off, for a transport that
never existed: gone from the admin and public stats, the home page and
the admin panel. The debug page's tracker status, which hard-coded UDP
as off, reads the real flag.
## Left as it is
The per-account sign-in counter lets anyone hold an account out of
password sign-in for fifteen minutes. Recognising a device that already
signed in would answer it, and needs a mechanism this site does not
have: the login log's IP hash changes salt every day. The trade-off is
written down in the security guide.
Review of upstream trackarr, October 2026: section 8.
Co-Authored-By: Claude Opus 5.5
---
.../api/admin/debug/tracker-status.get.ts | 3 +-
apps/api/routes/api/admin/stats.get.ts | 1 -
apps/api/routes/api/auth/login.post.ts | 16 +++
apps/api/routes/api/stats/public.get.ts | 10 +-
apps/api/test/torrentBytes.test.ts | 44 ++++++++
apps/api/utils/bencodeScan.ts | 10 +-
apps/api/utils/torrentBytes.ts | 72 +++++++++++-
apps/tracker/internal/peers/peers.go | 106 ++++++++++++++++--
apps/tracker/internal/peers/slot_test.go | 103 +++++++++++++++++
apps/tracker/internal/server/handler.go | 45 +++-----
apps/web/app/components/admin/Protocols.vue | 5 +-
apps/web/app/pages/index.vue | 4 +-
doc/guide/security.md | 5 +
doc/reference/api.md | 2 +-
14 files changed, 367 insertions(+), 59 deletions(-)
create mode 100644 apps/tracker/internal/peers/slot_test.go
diff --git a/apps/api/routes/api/admin/debug/tracker-status.get.ts b/apps/api/routes/api/admin/debug/tracker-status.get.ts
index 02a89c97..b03d2774 100644
--- a/apps/api/routes/api/admin/debug/tracker-status.get.ts
+++ b/apps/api/routes/api/admin/debug/tracker-status.get.ts
@@ -5,6 +5,7 @@
import { redis } from '~~/utils/server';
import { getGlobalStats } from '~~/utils/server';
import { requireAdminSession } from '~~/utils/adminAuth';
+import { trackerUdpEnabled } from '~~/utils/announceUrls';
export default defineEventHandler(async (event) => {
// Admin only — live-role-revalidating gate (finding L9).
@@ -25,7 +26,7 @@ export default defineEventHandler(async (event) => {
// process state from here. Report the static protocol matrix and let the
// operator check `docker compose ps tracker` for liveness.
const trackerStatus = 'separate-process';
- const trackerProtocols = { http: true, udp: false, ws: false };
+ const trackerProtocols = { http: true, udp: trackerUdpEnabled() };
// Get global stats from cache
let globalStats:
diff --git a/apps/api/routes/api/admin/stats.get.ts b/apps/api/routes/api/admin/stats.get.ts
index b710cefd..15e2c584 100644
--- a/apps/api/routes/api/admin/stats.get.ts
+++ b/apps/api/routes/api/admin/stats.get.ts
@@ -86,7 +86,6 @@ export default defineEventHandler(async (event) => {
protocols: {
http: true,
udp: trackerUdpEnabled(),
- ws: false,
},
};
});
diff --git a/apps/api/routes/api/auth/login.post.ts b/apps/api/routes/api/auth/login.post.ts
index d7fcb8be..58e87489 100644
--- a/apps/api/routes/api/auth/login.post.ts
+++ b/apps/api/routes/api/auth/login.post.ts
@@ -19,12 +19,26 @@ import { liftExpiredBan } from '~~/utils/banExpiry';
import { decryptSecret, encryptSecretRequired, needsRewrite } from '~~/utils/credentialSecrets';
import { recordLogin } from '~~/utils/account/loginLog';
+/**
+ * How long refusing credentials takes, at least.
+ *
+ * The answer to a username with no account and to a wrong proof is the same
+ * status and message, but not the same work: the second reads the account,
+ * decrypts its verifier and hashes, and was a few milliseconds slower — which
+ * enumerates members as surely as a different message, given enough samples.
+ * Both now end no sooner than this after the request arrived. Well above what
+ * either path costs; unnoticeable after a 600 000-iteration PBKDF2 in the
+ * browser.
+ */
+const REFUSAL_FLOOR_MS = 300;
+
/**
* POST /api/auth/login
* Authenticate user with Zero Knowledge proof
* User proves knowledge of password without sending it
*/
export default defineEventHandler(async (event) => {
+ const arrivedAt = Date.now();
// 10 tries per 5 minutes per address (an IPv6 /64), WITHOUT the progressive
// blacklist — see `RATE_LIMITS.signin` for why a sign-in failure must not
// shut a whole address out of the site. Guessing spread over many addresses
@@ -47,6 +61,8 @@ export default defineEventHandler(async (event) => {
// status, same message, same failure count. See `utils/loginChallenge`.
const rejectCredentials = async () => {
await recordAccountFailure(body.username);
+ const wait = REFUSAL_FLOOR_MS - (Date.now() - arrivedAt);
+ if (wait > 0) await new Promise((resolve) => setTimeout(resolve, wait));
return createError({
statusCode: 401,
message: 'Invalid credentials',
diff --git a/apps/api/routes/api/stats/public.get.ts b/apps/api/routes/api/stats/public.get.ts
index 7b7bb6ac..fb09de8d 100644
--- a/apps/api/routes/api/stats/public.get.ts
+++ b/apps/api/routes/api/stats/public.get.ts
@@ -43,15 +43,14 @@ interface PublicStats {
};
/**
* Protocol matrix mirrored from /api/admin/stats. The Go tracker serves
- * HTTP, and UDP when `TRACKER_UDP_ENABLED` is on; it has no WebSocket
- * transport, hence `ws: false`. We expose the same shape on the public
- * endpoint so the homepage can render the "Protocol health" tile without
- * needing admin credentials.
+ * HTTP, and UDP when `TRACKER_UDP_ENABLED` is on. (A `ws` entry, always
+ * false, listed a WebSocket transport that never existed.) We expose the
+ * same shape on the public endpoint so the homepage can render the
+ * "Protocol health" tile without needing admin credentials.
*/
protocols: {
http: boolean;
udp: boolean;
- ws: boolean;
};
}
@@ -110,7 +109,6 @@ async function computeStats(): Promise {
protocols: {
http: true,
udp: trackerUdpEnabled(),
- ws: false,
},
};
}
diff --git a/apps/api/test/torrentBytes.test.ts b/apps/api/test/torrentBytes.test.ts
index 505f3db1..e177994f 100644
--- a/apps/api/test/torrentBytes.test.ts
+++ b/apps/api/test/torrentBytes.test.ts
@@ -72,6 +72,15 @@ describe('bencodeScan', () => {
expect(dictEntries(raw('d1:ai1e'))).toBeNull(); // unterminated
expect(skipValue(raw('5:ab'), 0)).toBe(-1); // length past EOF
expect(skipValue(raw('-1:a'), 0)).toBe(-1);
+ expect(skipValue(raw('ixyze'), 0)).toBe(-1); // not a number
+ expect(skipValue(raw('ie'), 0)).toBe(-1);
+ expect(skipValue(raw('i1-2e'), 0)).toBe(-1);
+ });
+
+ it('reads integers, tolerating the leading zeros an old file may carry', () => {
+ expect(skipValue(raw('i42e'), 0)).toBe(4);
+ expect(skipValue(raw('i-7e'), 0)).toBe(4);
+ expect(skipValue(raw('i007e'), 0)).toBe(5);
});
it('terminates on deeply nested junk', () => {
@@ -137,6 +146,41 @@ describe('normalizeUploadedTorrent', () => {
expect(infoBytes(out).equals(info)).toBe(true);
});
+ it('sorts the keys a careless encoder left out of order, at every depth', () => {
+ // The decode → encode it replaces did this as a side effect; without it the
+ // same release hashed apart from the row stored before, and dodged the
+ // duplicate check.
+ const sortedInfo = enc({ length: 5, name: Buffer.from('a'), 'piece length': 16384, pieces: Buffer.alloc(20), private: 1 });
+ const unsortedInfo = dictOf([
+ ['private', raw('i1e')],
+ ['pieces', bstr(Buffer.alloc(20))],
+ ['name', bstr('a')],
+ ['piece length', raw('i16384e')],
+ ['length', raw('i5e')],
+ ]);
+ const out = normalizeUploadedTorrent(dictOf([['info', unsortedInfo], ['creation date', raw('i1e')]]));
+ expect(infoBytes(out).equals(sortedInfo)).toBe(true);
+ expect(out.equals(enc(bencode.decode(out)))).toBe(true); // canonical as a whole
+ });
+
+ it('sorts binary piece layer keys by their raw bytes, and keeps them raw', () => {
+ const low = Buffer.alloc(32, 0x81);
+ const high = Buffer.alloc(32, 0xf1);
+ const file = dictOf([
+ ['info', hybridInfo({ private: 1 })],
+ ['piece layers', dictOf([[high, bstr(LAYER)], [low, bstr(LAYER)]])],
+ ]);
+ const out = normalizeUploadedTorrent(file);
+ const layers = dictEntries(out, dictEntries(out)!.entries.find((e) => e.key.toString() === 'piece layers')!.valueStart)!;
+ expect(layers.entries.map((e) => e.key)).toEqual([low, high]);
+ });
+
+ it('keeps the last value of a repeated key, as the decoder did', () => {
+ const info = dictOf([['name', bstr('first')], ['name', bstr('second')], ['private', raw('i1e')]]);
+ const out = normalizeUploadedTorrent(dictOf([['info', info]]));
+ expect(infoBytes(out).equals(enc({ name: Buffer.from('second'), private: 1 }))).toBe(true);
+ });
+
it('throws on anything it cannot walk', () => {
expect(() => normalizeUploadedTorrent(raw('not bencode'))).toThrow();
expect(() => normalizeUploadedTorrent(dictOf([['name', bstr('no info')]]))).toThrow();
diff --git a/apps/api/utils/bencodeScan.ts b/apps/api/utils/bencodeScan.ts
index ce005566..2e0d8e81 100644
--- a/apps/api/utils/bencodeScan.ts
+++ b/apps/api/utils/bencodeScan.ts
@@ -20,7 +20,7 @@
* the `RangeError` reached the member as a 500 instead of "this file cannot be
* read".
*/
-const MAX_DEPTH = 64;
+export const MAX_DEPTH = 64;
const D = 0x64; // d
const L = 0x6c; // l
@@ -36,10 +36,14 @@ export function skipValue(bytes: Buffer, i: number, depth = 0): number {
if (i >= bytes.length || depth > MAX_DEPTH) return -1;
const c = bytes[i]!;
- // Integer: `ie`.
+ // Integer: `ie`, optionally negative. Leading zeros and `-0` are
+ // tolerated — BEP 3 forbids them, but a file stored years ago may carry one,
+ // and refusing it here would make that torrent undownloadable — while
+ // anything that is not a digit is malformed.
if (c === I) {
const e = bytes.indexOf(E, i + 1);
- return e === -1 ? -1 : e + 1;
+ if (e === -1) return -1;
+ return /^-?[0-9]+$/.test(bytes.toString('latin1', i + 1, e)) ? e + 1 : -1;
}
// Dict or list: walk until the matching `e`.
diff --git a/apps/api/utils/torrentBytes.ts b/apps/api/utils/torrentBytes.ts
index 9273b077..fda0d0c5 100644
--- a/apps/api/utils/torrentBytes.ts
+++ b/apps/api/utils/torrentBytes.ts
@@ -20,7 +20,7 @@
* only finds where each value ends, and an edit splices byte ranges: everything
* it does not touch is copied verbatim.
*/
-import { dictEntries, type DictEntry } from '~~/utils/bencodeScan';
+import { MAX_DEPTH, dictEntries, skipValue, type DictEntry } from '~~/utils/bencodeScan';
import { extractV2 } from '~~/utils/bittorrentV2';
/** A bencoded byte string. */
@@ -84,6 +84,69 @@ function rewriteDict(
return Buffer.concat(parts);
}
+/**
+ * The value at `start` with the entries of every dictionary in sorted key
+ * order, at every depth; strings and integers are copied verbatim, and a value
+ * that is already canonical comes back as the very same bytes.
+ *
+ * The upload got this for free from decode → encode, which sorted every
+ * dictionary (and re-spelled every binary key). A file from a careless encoder,
+ * keys out of order, was therefore stored canonical, under the canonical
+ * infohash; kept as it came, the same release uploaded again hashed apart from
+ * the row stored before, and the duplicate check missed it. Sorting by raw key
+ * bytes is the order bencode defines, and a key that occurs twice keeps its
+ * last value, as the decoder did.
+ */
+function canonical(
+ bytes: Buffer,
+ start: number,
+ depth = 0,
+): { out: Buffer; end: number; changed: boolean } | null {
+ if (depth > MAX_DEPTH) return null;
+ if (bytes[start] === 0x64) {
+ const dict = dictEntries(bytes, start);
+ if (!dict) return null;
+ let changed = false;
+ let previous: Buffer | null = null;
+ // `latin1` maps bytes to characters one to one: distinct raw keys stay distinct.
+ const byKey = new Map();
+ for (const e of dict.entries) {
+ const v = canonical(bytes, e.valueStart, depth + 1);
+ if (!v) return null;
+ // A value rebuilt below, or a key out of order or repeated: rebuild this one.
+ if (v.changed || (previous && Buffer.compare(previous, e.key) >= 0)) changed = true;
+ previous = e.key;
+ byKey.set(e.key.toString('latin1'), { key: e.key, value: v.out });
+ }
+ if (!changed) return { out: bytes.subarray(start, dict.end), end: dict.end, changed };
+ const entries = [...byKey.values()].sort((a, b) => Buffer.compare(a.key, b.key));
+ return {
+ out: Buffer.concat([Buffer.from('d'), ...entries.flatMap((e) => [str(e.key), e.value]), Buffer.from('e')]),
+ end: dict.end,
+ changed,
+ };
+ }
+ if (bytes[start] === 0x6c) {
+ let changed = false;
+ const parts: Buffer[] = [];
+ let i = start + 1;
+ while (i < bytes.length && bytes[i] !== 0x65) {
+ const v = canonical(bytes, i, depth + 1);
+ if (!v) return null;
+ changed ||= v.changed;
+ parts.push(v.out);
+ i = v.end;
+ }
+ if (i >= bytes.length) return null;
+ const out = changed
+ ? Buffer.concat([Buffer.from('l'), ...parts, Buffer.from('e')])
+ : bytes.subarray(start, i + 1);
+ return { out, end: i + 1, changed };
+ }
+ const end = skipValue(bytes, start);
+ return end > start ? { out: bytes.subarray(start, end), end, changed: false } : null;
+}
+
/**
* The top-level fields that carry the uploader's own announce URLs, or text from
* a foreign file that has no use here.
@@ -112,9 +175,10 @@ function privateInfo(bytes: Buffer, top: { entries: DictEntry[] }): Buffer | nul
*
* Throws on anything it cannot walk; the caller answers 400.
*/
-export function normalizeUploadedTorrent(raw: Buffer): Buffer {
- const top = dictEntries(raw);
- if (!top) throw new Error('not a bencoded dictionary');
+export function normalizeUploadedTorrent(upload: Buffer): Buffer {
+ const raw = canonical(upload, 0)?.out;
+ const top = raw && dictEntries(raw);
+ if (!raw || !top) throw new Error('not a bencoded dictionary');
const info = privateInfo(raw, top);
if (!info) throw new Error('missing info dict');
const edits = new Map(UPLOADER_FIELDS.map((k) => [k, null]));
diff --git a/apps/tracker/internal/peers/peers.go b/apps/tracker/internal/peers/peers.go
index 27d9c315..20522476 100644
--- a/apps/tracker/internal/peers/peers.go
+++ b/apps/tracker/internal/peers/peers.go
@@ -68,6 +68,12 @@ type PeerData struct {
Left int64 `json:"left"`
IsSeeder bool `json:"isSeeder"`
UpdatedAt int64 `json:"updatedAt"` // unix millis
+
+ // Field is the hash field the entry lives under — its peer_id, or
+ // `peer_id:user_id` when another member already holds that peer_id (see
+ // `Slot`). Filled by `Slot` and `List`, read by `Set` and by whoever removes
+ // a listed entry; never stored.
+ Field string `json:"-"`
}
// countsCacheTTL bounds how stale `Counts` is allowed to go. Each
@@ -232,11 +238,18 @@ const staleWriteWindowMs = 5000
// cjson is used to READ the two counters for comparison and nothing else — the
// value written is the payload Go marshalled, byte for byte. Re-encoding in
// Lua would round int64 byte counts through a double.
+//
+// It also refuses, with 2, to write over an entry another member owns — the
+// atomic half of `Slot`, for two members claiming one free peer_id at once.
var setPeerScript = redis.NewScript(`
local cur = redis.call('HGET', KEYS[1], ARGV[1])
if cur then
local ok, d = pcall(cjson.decode, cur)
if ok and type(d) == 'table' then
+ if ARGV[8] ~= '' and type(d.userId) == 'string' and d.userId ~= ''
+ and d.userId ~= ARGV[8] then
+ return 2
+ end
local age = tonumber(ARGV[5]) - (tonumber(d.updatedAt) or 0)
if age >= 0 and age <= tonumber(ARGV[6]) then
if (tonumber(d.uploaded) or 0) > tonumber(ARGV[3])
@@ -258,6 +271,10 @@ return 1
// a TTL (which previously caused slow memory leaks on swarms that went idle
// right after their first peer). The same script is what drops a stale
// concurrent write.
+//
+// The entry goes under `p.Field`, or the bare peer_id when that is empty. If
+// another member took that peer_id in the meantime, it goes under this
+// member's own field instead, as `Slot` would have chosen.
func (s *Store) Set(ctx context.Context, infoHashHex string, p *PeerData) error {
now := time.Now().UnixMilli()
p.UpdatedAt = now
@@ -265,15 +282,32 @@ func (s *Store) Set(ctx context.Context, infoHashHex string, p *PeerData) error
if err != nil {
return err
}
+ field := p.Field
+ if field == "" {
+ field = p.PeerID
+ }
key := s.peerKey(infoHashHex)
- written, err := setPeerScript.Run(ctx, s.client,
- []string{key},
- p.PeerID, data, p.Uploaded, p.Downloaded,
- now, staleWriteWindowMs, int(s.peerTTL.Seconds()),
- ).Int()
+ run := func(field string) (int, error) {
+ return setPeerScript.Run(ctx, s.client,
+ []string{key},
+ field, data, p.Uploaded, p.Downloaded,
+ now, staleWriteWindowMs, int(s.peerTTL.Seconds()), p.UserID,
+ ).Int()
+ }
+ written, err := run(field)
+ if err == nil && written == 2 && field == p.PeerID && p.UserID != "" {
+ field = memberField(p.PeerID, p.UserID)
+ written, err = run(field)
+ }
if err != nil {
return err
}
+ p.Field = field
+ if written == 2 {
+ slog.Debug("peers: entry held by another member, not written",
+ "info_hash", infoHashHex, "field", field)
+ return nil
+ }
if written == 0 {
// Not an error: a concurrent announce already stored a fresher
// snapshot for this peer, so ours is the one to drop.
@@ -310,9 +344,63 @@ func (s *Store) Get(ctx context.Context, infoHashHex, peerIDHex string) (*PeerDa
return p, nil
}
-// Remove deletes a single peer from the swarm.
-func (s *Store) Remove(ctx context.Context, infoHashHex, peerIDHex string) error {
- err := s.client.HDel(ctx, s.peerKey(infoHashHex), peerIDHex).Err()
+// memberField is where a member's entry goes when another member holds its
+// peer_id. A peer_id is forty hex characters, so the colon cannot clash with a
+// bare one.
+func memberField(peerIDHex, userID string) string { return peerIDHex + ":" + userID }
+
+// Slot finds this member's entry for this peer_id, and the field it lives (or
+// will live) under.
+//
+// Entries are keyed by (info_hash, peer_id), and a peer_id is no secret: every
+// client in the swarm reads it in the BitTorrent handshake. Overwriting
+// another member's entry is how a stranger could delete their baseline (a
+// `stopped`) or replace it with their own counters and address. Refusing the
+// newcomer outright was no better: a stranger who announced a peer_id first —
+// after its owner paused the torrent, say — kept the owner out of the swarm
+// and out of credit for as long as they kept announcing, and two clients that
+// genuinely share a peer_id could never both be served.
+//
+// So a member whose peer_id is held by someone else gets a field of its own,
+// `peer_id:user_id`, and keeps it while it lives — it does not move back to the
+// bare field when that frees up, which would cost it its baseline. Both fields
+// come back in one HMGET. An entry with no owner predates `userId` and belongs
+// to whoever announces it.
+func (s *Store) Slot(ctx context.Context, infoHashHex, peerIDHex, userID string) (*PeerData, string, error) {
+ own := memberField(peerIDHex, userID)
+ vals, err := s.client.HMGet(ctx, s.peerKey(infoHashHex), own, peerIDHex).Result()
+ if err != nil {
+ return nil, peerIDHex, err
+ }
+ if p := s.fresh(ctx, infoHashHex, own, vals[0]); p != nil {
+ return p, own, nil
+ }
+ p := s.fresh(ctx, infoHashHex, peerIDHex, vals[1])
+ if p != nil && p.UserID != "" && p.UserID != userID {
+ return nil, own, nil
+ }
+ return p, peerIDHex, nil
+}
+
+// fresh decodes one HMGET value: nil when absent, and the entry is dropped
+// when unreadable or older than the peer TTL, as `Get` does.
+func (s *Store) fresh(ctx context.Context, infoHashHex, field string, v any) *PeerData {
+ raw, ok := v.(string)
+ if !ok {
+ return nil
+ }
+ p := &PeerData{}
+ if json.Unmarshal([]byte(raw), p) != nil || time.Since(time.UnixMilli(p.UpdatedAt)) > s.peerTTL {
+ _ = s.client.HDel(ctx, s.peerKey(infoHashHex), field).Err()
+ return nil
+ }
+ p.Field = field
+ return p
+}
+
+// Remove deletes a single entry from the swarm, by its field.
+func (s *Store) Remove(ctx context.Context, infoHashHex, field string) error {
+ err := s.client.HDel(ctx, s.peerKey(infoHashHex), field).Err()
s.invalidateCounts(infoHashHex)
return err
}
@@ -334,7 +422,7 @@ func (s *Store) List(ctx context.Context, infoHashHex string) ([]*PeerData, erro
stale := make([]string, 0)
activeCutoffMs := activeListWindow.Milliseconds()
for pid, raw := range all {
- p := &PeerData{}
+ p := &PeerData{Field: pid}
if err := json.Unmarshal([]byte(raw), p); err != nil {
stale = append(stale, pid)
continue
diff --git a/apps/tracker/internal/peers/slot_test.go b/apps/tracker/internal/peers/slot_test.go
new file mode 100644
index 00000000..0c1af56a
--- /dev/null
+++ b/apps/tracker/internal/peers/slot_test.go
@@ -0,0 +1,103 @@
+package peers
+
+import (
+ "context"
+ "testing"
+ "time"
+)
+
+func memberPeer(peerID, userID string, port uint16) *PeerData {
+ return &PeerData{PeerID: peerID, UserID: userID, IP: "203.0.113.9", Port: port}
+}
+
+// A peer_id is public. A stranger announcing under one a member holds must get
+// an entry of their own — never the member's baseline, never a refusal that
+// would let them keep the member out.
+func TestSlot_AnotherMembersPeerIDGetsItsOwnField(t *testing.T) {
+ s, _ := newTestStore(t, time.Hour)
+ ctx := context.Background()
+ if err := s.Set(ctx, "h", memberPeer("p1", "alice", 1)); err != nil {
+ t.Fatal(err)
+ }
+
+ prev, field, err := s.Slot(ctx, "h", "p1", "mallory")
+ if err != nil || prev != nil || field != "p1:mallory" {
+ t.Fatalf("stranger: prev=%v field=%q err=%v, want nil, p1:mallory", prev, field, err)
+ }
+ stranger := memberPeer("p1", "mallory", 2)
+ stranger.Field = field
+ if err := s.Set(ctx, "h", stranger); err != nil {
+ t.Fatal(err)
+ }
+
+ prev, field, _ = s.Slot(ctx, "h", "p1", "alice")
+ if prev == nil || prev.UserID != "alice" || prev.Port != 1 || field != "p1" {
+ t.Fatalf("owner after the stranger wrote: %+v field=%q", prev, field)
+ }
+
+ // The stranger's `stopped` removes their own entry and nothing else.
+ if err := s.Remove(ctx, "h", "p1:mallory"); err != nil {
+ t.Fatal(err)
+ }
+ if got, _ := s.Get(ctx, "h", "p1"); got == nil || got.UserID != "alice" {
+ t.Fatalf("owner's entry after the stranger's stop: %+v", got)
+ }
+}
+
+// Once on a field of its own, a member stays there while it lives: moving back
+// to the bare peer_id when that frees up would cost it its baseline.
+func TestSlot_StaysOnTheMembersFieldWhenTheBareOneFreesUp(t *testing.T) {
+ s, _ := newTestStore(t, time.Hour)
+ ctx := context.Background()
+ _ = s.Set(ctx, "h", memberPeer("p1", "alice", 1))
+ own := memberPeer("p1", "bob", 2)
+ own.Field = "p1:bob"
+ _ = s.Set(ctx, "h", own)
+ _ = s.Remove(ctx, "h", "p1") // alice leaves
+
+ prev, field, _ := s.Slot(ctx, "h", "p1", "bob")
+ if prev == nil || prev.Port != 2 || field != "p1:bob" {
+ t.Fatalf("bob after alice left: %+v field=%q, want his own entry", prev, field)
+ }
+}
+
+// Two members claiming one free peer_id at the same moment both see it free;
+// the script settles it, and the second write lands on its own field.
+func TestSet_NeverOverwritesAnotherMembersEntry(t *testing.T) {
+ s, _ := newTestStore(t, time.Hour)
+ ctx := context.Background()
+ _ = s.Set(ctx, "h", memberPeer("p1", "alice", 1))
+
+ late := memberPeer("p1", "bob", 2)
+ late.Field = "p1" // what a racing Slot would have answered
+ if err := s.Set(ctx, "h", late); err != nil {
+ t.Fatal(err)
+ }
+ if late.Field != "p1:bob" {
+ t.Fatalf("written under %q, want p1:bob", late.Field)
+ }
+ if got, _ := s.Get(ctx, "h", "p1"); got == nil || got.UserID != "alice" || got.Port != 1 {
+ t.Fatalf("alice's entry: %+v", got)
+ }
+ list, _ := s.List(ctx, "h")
+ fields := map[string]string{}
+ for _, p := range list {
+ fields[p.Field] = p.UserID
+ }
+ if len(fields) != 2 || fields["p1"] != "alice" || fields["p1:bob"] != "bob" {
+ t.Fatalf("listed fields: %v", fields)
+ }
+}
+
+// An entry written before `userId` existed has no owner, and is taken over by
+// whoever announces it, as before.
+func TestSlot_AdoptsAnEntryWithNoOwner(t *testing.T) {
+ s, mr := newTestStore(t, time.Hour)
+ ctx := context.Background()
+ injectPeer(t, mr, "h", PeerData{PeerID: "p1", Port: 1, UpdatedAt: time.Now().UnixMilli()})
+
+ prev, field, _ := s.Slot(ctx, "h", "p1", "alice")
+ if prev == nil || field != "p1" {
+ t.Fatalf("legacy entry: %+v field=%q", prev, field)
+ }
+}
diff --git a/apps/tracker/internal/server/handler.go b/apps/tracker/internal/server/handler.go
index dda4a88f..39651dc4 100644
--- a/apps/tracker/internal/server/handler.go
+++ b/apps/tracker/internal/server/handler.go
@@ -417,9 +417,15 @@ func (s *Server) ProcessAnnounce(ctx context.Context, req *announce.Request, cli
infoHashHex = resolved.SwarmKey
}
- // 4. Dedup window — skip if same {hash,peer,event} fired within 2 seconds
+ // 4. Dedup window — skip if same {hash,peer,event} fired within 2 seconds.
+ //
+ // The member is part of every key below. A peer_id is public — any client
+ // in the swarm reads it in the handshake — so a key made of it alone let a
+ // stranger announcing under someone else's peer_id every second hold that
+ // member's window shut, and their announces with it.
peerHex := hexBytes(req.PeerID[:])
- dedupKey := infoHashHex + ":" + peerHex + ":" + req.Event.String()
+ peerKey := peerHex + ":" + user.ID
+ dedupKey := infoHashHex + ":" + peerKey + ":" + req.Event.String()
if !s.dedup.CheckAndMark(ctx, dedupKey) {
seeders, leechers, _ := s.peers.Counts(ctx, infoHashHex)
return AnnounceOutcome{
@@ -455,29 +461,11 @@ func (s *Server) ProcessAnnounce(ctx context.Context, req *announce.Request, cli
// forfeits at most one announce-interval of credit — identical to
// the long-standing TTL-expiry behaviour, and the only direction
// that cannot be replayed.
- prev, _ := s.peers.Get(ctx, infoHashHex, peerHex)
-
- // A peer entry belongs to the member who wrote it. Entries are keyed by
- // (info_hash, peer_id) alone, and a peer_id is no secret — every client in
- // the swarm reads it in the BitTorrent handshake. Any member could therefore
- // announce `stopped` under someone else's peer_id and delete their baseline,
- // so their next announce credited nothing, as often as they liked; or
- // overwrite it with their own counters and address. An announce that names a
- // peer_id held by another member is answered, but it writes, removes and
- // credits nothing. (An entry with no owner predates `userId` and is taken
- // over as before.)
- if prev != nil && prev.UserID != "" && prev.UserID != user.ID {
- if req.Event == announce.EventStopped {
- seeders, leechers, _ := s.peers.Counts(ctx, infoHashHex)
- return AnnounceOutcome{
- Seeders: seeders,
- Leechers: leechers,
- Interval: announceInterval,
- MinInterval: minAnnounceInterval,
- }
- }
- return s.swarmOutcome(ctx, infoHashHex, req.IsSeeder())
- }
+ //
+ // The entry is this member's own: another member announcing under the same
+ // peer_id gets a field of its own, and neither can reach the other's
+ // baseline (see peers.Slot).
+ prev, slot, _ := s.peers.Slot(ctx, infoHashHex, peerHex, user.ID)
var deltaUp, deltaDown int64
if prev != nil {
@@ -693,7 +681,7 @@ func (s *Server) ProcessAnnounce(ctx context.Context, req *announce.Request, cli
* L'écrêtage garde sa place d'origine — avant les multiplicateurs de bonus,
* qui s'appliquent ensuite au delta déjà borné.
*/
- creditKey := infoHashHex + ":" + peerHex + ":credit"
+ creditKey := infoHashHex + ":" + peerKey + ":credit"
bookCredit := (deltaUp > 0 || deltaDown > 0) &&
s.dedup.CheckAndMark(ctx, creditKey)
@@ -830,7 +818,7 @@ func (s *Server) ProcessAnnounce(ctx context.Context, req *announce.Request, cli
// response — the client just left, so they don't need a fresh
// swarm snapshot, but they do still want the current counts.
if req.Event == announce.EventStopped {
- _ = s.peers.Remove(ctx, infoHashHex, peerHex)
+ _ = s.peers.Remove(ctx, infoHashHex, slot)
seeders, leechers, _ := s.peers.Counts(ctx, infoHashHex)
return AnnounceOutcome{
Seeders: seeders,
@@ -857,6 +845,7 @@ func (s *Server) ProcessAnnounce(ctx context.Context, req *announce.Request, cli
Downloaded: req.Downloaded,
Left: req.Left,
IsSeeder: req.IsSeeder(),
+ Field: slot,
}
if err := s.peers.Set(ctx, infoHashHex, pdata); err != nil {
// Redis is down: the swarm can be neither stored nor read, but the rest
@@ -998,7 +987,7 @@ func (s *Server) capMemberPeers(ctx context.Context, infoHashHex, userID string)
}
sort.Slice(mine, func(i, j int) bool { return mine[i].UpdatedAt < mine[j].UpdatedAt })
for _, p := range mine[:len(mine)-maxPeersPerMember+1] {
- _ = s.peers.Remove(ctx, infoHashHex, p.PeerID)
+ _ = s.peers.Remove(ctx, infoHashHex, p.Field)
}
}
diff --git a/apps/web/app/components/admin/Protocols.vue b/apps/web/app/components/admin/Protocols.vue
index 9cc86d9e..c2a29319 100644
--- a/apps/web/app/components/admin/Protocols.vue
+++ b/apps/web/app/components/admin/Protocols.vue
@@ -37,7 +37,7 @@ const props = defineProps<{
protocols: Record | undefined;
}>();
-const defaultProtocols = { http: false, udp: false, ws: false };
+const defaultProtocols = { http: false, udp: false };
const activeCount = computed(() => {
const p = props.protocols ?? defaultProtocols;
@@ -48,7 +48,7 @@ const totalCount = computed(() => {
return Object.keys(p).length;
});
-const ORDER: Record = { http: 0, udp: 1, ws: 2 };
+const ORDER: Record = { http: 0, udp: 1 };
function index(name: string | number): number {
return ORDER[String(name).toLowerCase()] ?? 99;
}
@@ -57,7 +57,6 @@ function protocolIcon(name: string | number): string {
const k = String(name).toLowerCase();
if (k === 'http') return 'ph:globe-bold';
if (k === 'udp') return 'ph:lightning-bold';
- if (k === 'ws') return 'ph:plugs-connected-bold';
return 'ph:plug-bold';
}
diff --git a/apps/web/app/pages/index.vue b/apps/web/app/pages/index.vue
index 628f7560..04c033d0 100644
--- a/apps/web/app/pages/index.vue
+++ b/apps/web/app/pages/index.vue
@@ -266,7 +266,7 @@
-
+
⏚
@@ -357,7 +357,6 @@ interface TrackerStats {
protocols: {
http: boolean;
udp: boolean;
- ws: boolean;
};
}
@@ -555,7 +554,6 @@ const last24hLabel = computed(() => {
const protocolRows = computed(() => [
{ key: 'HTTP', up: stats.value?.protocols?.http === true },
{ key: 'UDP', up: stats.value?.protocols?.udp === true },
- { key: 'WS', up: stats.value?.protocols?.ws === true },
]);
// ── Releases & swarm ────────────────────────────────────────────────
diff --git a/doc/guide/security.md b/doc/guide/security.md
index 72fa5f53..7dbc0bb6 100644
--- a/doc/guide/security.md
+++ b/doc/guide/security.md
@@ -92,6 +92,11 @@ not, so a lockout never tells whether an account exists; the cost is that
anyone can hold an account out of password sign-in for the window. Its open
sessions are untouched, and a successful sign-in clears the count.
+Every refusal of credentials takes at least 300 ms, whatever its cause. A
+username with no account and a wrong password already got the same status and
+message, but not the same work — the second reads the account and hashes —
+and the few milliseconds between them told which usernames exist.
+
This table is what makes an attempt visible afterwards — a run of refusals
against one account, from addresses that differ, is a shape worth recognising.
diff --git a/doc/reference/api.md b/doc/reference/api.md
index 43bd4d0b..9ed65a7b 100644
--- a/doc/reference/api.md
+++ b/doc/reference/api.md
@@ -43,7 +43,7 @@ What the answer depends on, over both transports:
| --- | --- |
| The announcer is a seeder (`left=0`) | Leechers only — a seeder has nothing to fetch from another. `complete` / `incomplete` still count the whole swarm |
| A member's sixth live client session on one torrent | Accepted; their oldest entry is evicted. Five per member per torrent |
-| A `peer_id` another member is announcing under | Answered, but writes, removes and credits nothing |
+| A `peer_id` another member is announcing under | Served from an entry of its own (`peer_id:user_id`); neither member can read, overwrite or remove the other's |
| 120 unknown passkeys from one address within a minute (an IPv6 /64 counts as one) | `Too many invalid requests, retry later` for the rest of that minute, valid passkeys included. Counted per tracker replica |
| Redis unreachable | No peers, `interval` 300 and `min interval` 60, so clients come back soon after it does; nothing is credited |
From d8a0637a574e7ceb5b68c336c9517b37870e3733 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 01:08:28 +0200
Subject: [PATCH 31/44] test(api): identityRecord.itest.ts failed on every
re-run
`revoked_identities` holds DIDs, not foreign keys, so no cascade from
the per-test TRUNCATE reaches it, and the succession tests reuse fixed
DIDs: a run left its revocations behind, and the next run found an
alias too many. Green on a fresh database, red on every re-run. The
setup truncates it with the rest.
Co-Authored-By: Claude Opus 5.5
---
apps/api/test/integration/setup.ts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/apps/api/test/integration/setup.ts b/apps/api/test/integration/setup.ts
index c7e64970..43542ce6 100644
--- a/apps/api/test/integration/setup.ts
+++ b/apps/api/test/integration/setup.ts
@@ -83,6 +83,7 @@ beforeEach(async () => {
catalog_records,
themes, uploaded_fonts,
panic_state,
+ revoked_identities,
users
RESTART IDENTITY CASCADE`,
);
@@ -90,6 +91,11 @@ beforeEach(async () => {
// turns every later one read-only — the write lock, the federation gate and
// the catalogue sweeps all stop on it — and only in the files that run after
// it. The gate caches in Redis for a few seconds, hence the second line.
+ //
+ // `revoked_identities` holds DIDs, not foreign keys, so no cascade reaches
+ // it, and the succession tests reuse fixed DIDs: a run left its revocations
+ // behind and the next run of `identityRecord.itest.ts` found an alias too
+ // many. Green on a fresh database, red on every re-run.
await redis.del('panic:active').catch(() => {});
});
From beb22c7c00acfff626f9a009d63a60cffc3a2181 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 10:13:50 +0100
Subject: [PATCH 32/44] feat(auth): a member's own browsers are exempt from the
per-account sign-in lockout
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ten failed sign-ins in fifteen minutes hold a username out of password
sign-in from every address, the right password included. That stops
guessing spread over many addresses, and it let anyone who knows a username
keep its owner out with one failure every ninety seconds.
A browser that completes a sign-in (password and second factor) or a
registration now gets a known-device cookie (`trackarr_kd`, httpOnly,
SameSite=Lax, 180 days). On that browser the account's count does not
apply: the browser answers to its own, and ten failures there revoke its id
for good. The lockout now shuts an account to new devices only; guessing
gains nothing, since a guesser never holds a valid cookie.
The cookie skips nothing — not the password, not the second factor, not the
per-address limit — unlike the opt-in trusted-device cookie, which skips
the second factor. It is stateless: an HMAC, keyed from
NUXT_SESSION_SECRET, over the account id, `users.session_epoch`, a hash of
the stored verifier, a random device id and the issue time. So "sign out
everywhere", a ban or a password change void every one at once. Redis keeps
only a failure count per device and the revoked ids. A known browser's
success leaves the account's count alone: those failures came from
somewhere else.
The lockout's 429 now carries `data.reason: 'account-locked'`, and the
sign-in page tells it apart from the per-address limit: it says that a
browser used before can still get in.
Tests: 7 unit (format, binding, age, tampering), 4 integration (against the
account row and Redis), and an e2e scenario of 15 checks (issue, lockout,
the known browser getting through, revocation after ten failures, "sign out
everywhere"). Typecheck, the 630 API and 956 web unit tests, the 486
integration tests and the e2e suite (558 checks) pass. Checked in a
browser: the locked account's message on the sign-in page.
Co-Authored-By: Claude Opus 5.5
---
.../api/auth/2fa/passkey-verify.post.ts | 10 +
.../routes/api/auth/2fa/verify-totp.post.ts | 10 +
apps/api/routes/api/auth/login.post.ts | 29 ++-
apps/api/routes/api/auth/register.post.ts | 14 +-
.../test/integration/knownDevices.itest.ts | 93 ++++++++
apps/api/test/knownDevices.test.ts | 87 ++++++++
apps/api/utils/knownDevices.ts | 203 ++++++++++++++++++
apps/api/utils/rateLimit.ts | 11 +-
apps/web/app/pages/auth/login.vue | 7 +-
apps/web/i18n/locales/en.json | 3 +-
apps/web/i18n/locales/fr.json | 3 +-
doc/guide/architecture.md | 4 +
doc/guide/security.md | 29 ++-
doc/guide/two-factor-auth.md | 2 +
tests/e2e/knownDevice.mjs | 137 ++++++++++++
tests/e2e/lib.mjs | 10 +
tests/e2e/run.sh | 6 +-
17 files changed, 639 insertions(+), 19 deletions(-)
create mode 100644 apps/api/test/integration/knownDevices.itest.ts
create mode 100644 apps/api/test/knownDevices.test.ts
create mode 100644 apps/api/utils/knownDevices.ts
create mode 100644 tests/e2e/knownDevice.mjs
diff --git a/apps/api/routes/api/auth/2fa/passkey-verify.post.ts b/apps/api/routes/api/auth/2fa/passkey-verify.post.ts
index 47f01101..798b10f2 100644
--- a/apps/api/routes/api/auth/2fa/passkey-verify.post.ts
+++ b/apps/api/routes/api/auth/2fa/passkey-verify.post.ts
@@ -23,6 +23,7 @@ import {
markFreshAuth,
} from '~~/utils/twoFactor';
import { issueTrustedDevice } from '~~/utils/trustedDevices';
+import { issueKnownDevice } from '~~/utils/knownDevices';
import { validateBody } from '~~/utils/schemas';
import { rateLimit, RATE_LIMITS } from '~~/utils/rateLimit';
import { recordLogin } from '~~/utils/account/loginLog';
@@ -158,6 +159,8 @@ export default defineEventHandler(async (event) => {
downloaded: true,
bonusPoints: true,
trustDevicesEnabled: true,
+ // What the known-device cookie is bound to, with the epoch.
+ authVerifier: true,
},
});
if (!user) throw createError({ statusCode: 401, message: 'User not found' });
@@ -192,6 +195,13 @@ export default defineEventHandler(async (event) => {
},
loggedInAt: Date.now(),
});
+ // The sign-in is complete only now, second factor met: this is where the
+ // browser becomes a known device (see `utils/knownDevices`).
+ issueKnownDevice(event, {
+ userId: user.id,
+ sessionEpoch: user.sessionEpoch,
+ authVerifier: user.authVerifier,
+ });
// Real h3 session id, not the session-data object (finding H1).
await markFreshAuth(await getSessionId(event));
diff --git a/apps/api/routes/api/auth/2fa/verify-totp.post.ts b/apps/api/routes/api/auth/2fa/verify-totp.post.ts
index 1dc6585b..edb734d9 100644
--- a/apps/api/routes/api/auth/2fa/verify-totp.post.ts
+++ b/apps/api/routes/api/auth/2fa/verify-totp.post.ts
@@ -18,6 +18,7 @@ import {
verifyTotp,
} from '~~/utils/twoFactor';
import { issueTrustedDevice } from '~~/utils/trustedDevices';
+import { issueKnownDevice } from '~~/utils/knownDevices';
import { validateBody } from '~~/utils/schemas';
import { rateLimit, RATE_LIMITS } from '~~/utils/rateLimit';
import { notify } from '~~/utils/notify';
@@ -71,6 +72,8 @@ export default defineEventHandler(async (event) => {
totpSecret: true,
totpEnabled: true,
trustDevicesEnabled: true,
+ // What the known-device cookie is bound to, with the epoch.
+ authVerifier: true,
},
});
if (!user) {
@@ -170,6 +173,13 @@ export default defineEventHandler(async (event) => {
},
loggedInAt: Date.now(),
});
+ // The sign-in is complete only now, second factor met: this is where the
+ // browser becomes a known device (see `utils/knownDevices`).
+ issueKnownDevice(event, {
+ userId: user.id,
+ sessionEpoch: user.sessionEpoch,
+ authVerifier: user.authVerifier,
+ });
// Real h3 session id, not the session-data object (finding H1).
await markFreshAuth(await getSessionId(event));
diff --git a/apps/api/routes/api/auth/login.post.ts b/apps/api/routes/api/auth/login.post.ts
index 58e87489..1a19e7ea 100644
--- a/apps/api/routes/api/auth/login.post.ts
+++ b/apps/api/routes/api/auth/login.post.ts
@@ -14,6 +14,11 @@ import {
import { UNKNOWN_ACCOUNT_CHALLENGE } from '~~/utils/loginChallenge';
import { mintChallengeToken, markFreshAuth } from '~~/utils/twoFactor';
import { consumeTrustedDevice } from '~~/utils/trustedDevices';
+import {
+ readKnownDevice,
+ recordKnownDeviceFailure,
+ issueKnownDevice,
+} from '~~/utils/knownDevices';
import { notify } from '~~/utils/notify';
import { liftExpiredBan } from '~~/utils/banExpiry';
import { decryptSecret, encryptSecretRequired, needsRewrite } from '~~/utils/credentialSecrets';
@@ -45,7 +50,12 @@ export default defineEventHandler(async (event) => {
// meets the per-account counter instead.
await rateLimit(event, RATE_LIMITS.signin);
const body = await validateBody(event, loginSchema);
- await assertAccountNotLocked(body.username);
+ // A browser that has already signed in to this account answers to its own
+ // failure counter instead of the account's: whoever fails on purpose from
+ // elsewhere can hold the account shut to new devices, not to the member's
+ // own. See `utils/knownDevices`.
+ const knownDevice = await readKnownDevice(event, body.username);
+ if (!knownDevice) await assertAccountNotLocked(body.username);
// Consumed atomically: two concurrent requests with the same challenge used
// to both read it before either deleted it.
@@ -60,7 +70,8 @@ export default defineEventHandler(async (event) => {
// A username with no account takes the same exit as a wrong proof — same
// status, same message, same failure count. See `utils/loginChallenge`.
const rejectCredentials = async () => {
- await recordAccountFailure(body.username);
+ if (knownDevice) await recordKnownDeviceFailure(knownDevice);
+ else await recordAccountFailure(body.username);
const wait = REFUSAL_FLOOR_MS - (Date.now() - arrivedAt);
if (wait > 0) await new Promise((resolve) => setTimeout(resolve, wait));
return createError({
@@ -116,16 +127,21 @@ export default defineEventHandler(async (event) => {
});
throw await rejectCredentials();
}
- await clearAccountFailures(body.username);
+ // Not after a known device's success: the account's failures came from
+ // somewhere else, and wiping them would hand whoever made them a fresh ten.
+ if (!knownDevice) await clearAccountFailures(body.username);
// Lazy migration: a proven-correct login is the safe moment to write the
// verifier back under the current key — whether it was legacy plaintext or
// only readable through CREDENTIAL_ENCRYPTION_KEY_PREVIOUS. Fire-and-forget:
// a failure here must never cost the user their login, the next one retries.
+ // The known-device cookie issued below is bound to the column as it WILL be.
+ let storedAuthVerifier = user.authVerifier;
if (needsRewrite(user.authVerifier)) {
+ storedAuthVerifier = encryptSecretRequired(storedVerifier);
void db
.update(users)
- .set({ authVerifier: encryptSecretRequired(storedVerifier) })
+ .set({ authVerifier: storedAuthVerifier })
.where(eq(users.id, user.id))
.catch(() => {});
}
@@ -252,6 +268,11 @@ export default defineEventHandler(async (event) => {
},
loggedInAt: Date.now(),
});
+ issueKnownDevice(event, {
+ userId: user.id,
+ sessionEpoch: user.sessionEpoch,
+ authVerifier: storedAuthVerifier,
+ });
// `trusted-device` when the second factor was skipped by a remembered
// browser, `password` otherwise. The distinction is the point: a member
diff --git a/apps/api/routes/api/auth/register.post.ts b/apps/api/routes/api/auth/register.post.ts
index 214daee3..4dca0a73 100644
--- a/apps/api/routes/api/auth/register.post.ts
+++ b/apps/api/routes/api/auth/register.post.ts
@@ -16,6 +16,7 @@ import { rateLimit, RATE_LIMITS } from '~~/utils/rateLimit';
import { markFreshAuth } from '~~/utils/twoFactor';
import { encryptSecretRequired } from '~~/utils/credentialSecrets';
import { recordLogin } from '~~/utils/account/loginLog';
+import { issueKnownDevice } from '~~/utils/knownDevices';
/**
* Postgres advisory lock id used to serialise the "first user gets
@@ -193,6 +194,12 @@ export default defineEventHandler(async (event) => {
// the invite (if any) in the same transaction. Anything that can
// fail here rolls back as a unit — no partially-created admin
// accounts, no consumed-but-unattributed invites.
+ // Encrypted at rest: the verifier IS the login credential, not a hash of it,
+ // so a database dump would otherwise be an account takeover. Computed once,
+ // here, because the known-device cookie issued below is bound to the exact
+ // stored value and the encryption is not deterministic.
+ const storedAuthVerifier = encryptSecretRequired(body.authVerifier);
+
const finalIsFirstUser = await db.transaction(async (tx) => {
await tx.execute(
sql`SELECT pg_advisory_xact_lock(${REGISTER_FIRST_USER_LOCK_ID}::bigint)`
@@ -209,9 +216,7 @@ export default defineEventHandler(async (event) => {
id: userId,
username: body.username,
authSalt: body.authSalt,
- // Encrypted at rest: the verifier IS the login credential, not a hash
- // of it, so a database dump would otherwise be an account takeover.
- authVerifier: encryptSecretRequired(body.authVerifier),
+ authVerifier: storedAuthVerifier,
passkey,
isAdmin: settledFirstUser,
isModerator: false,
@@ -323,6 +328,9 @@ export default defineEventHandler(async (event) => {
},
loggedInAt: Date.now(),
});
+ // The browser that just chose the password is the first known device: a
+ // lockout started before its first sign-in must not shut it out too.
+ issueKnownDevice(event, { userId, sessionEpoch: 0, authVerifier: storedAuthVerifier });
// Open the fresh-auth window, exactly as `login.post.ts` does and at the same
// point — after the session exists, keyed on the real h3 session id rather
diff --git a/apps/api/test/integration/knownDevices.itest.ts b/apps/api/test/integration/knownDevices.itest.ts
new file mode 100644
index 00000000..f02d1f79
--- /dev/null
+++ b/apps/api/test/integration/knownDevices.itest.ts
@@ -0,0 +1,93 @@
+import { describe, it, expect } from 'vitest';
+import { randomBytes } from 'node:crypto';
+import { eq } from 'drizzle-orm';
+import { db, schema } from '@trackarr/db';
+import { redis } from '../../utils/server';
+import {
+ encodeKnownDevice,
+ knownDeviceFor,
+ recordKnownDeviceFailure,
+} from '../../utils/knownDevices';
+import { makeUser } from './helpers';
+
+// A known-device cookie exempts a browser from the per-account sign-in lockout.
+// What makes it safe to hand out is checked here against the real account row
+// and Redis: it names one account, dies with "sign out everywhere" and with a
+// password change, and a device that keeps failing loses it for good.
+
+const VERIFIER = 'v1:cipher-a';
+const now = () => Math.floor(Date.now() / 1000);
+const newDevice = () => randomBytes(16).toString('base64url');
+
+async function member(): Promise<{ id: string; username: string }> {
+ const id = await makeUser({ sessionEpoch: 0, authVerifier: VERIFIER });
+ const row = await db.query.users.findFirst({
+ where: eq(schema.users.id, id),
+ columns: { username: true },
+ });
+ return { id, username: row!.username };
+}
+
+const cookieFor = (userId: string, device: string) =>
+ encodeKnownDevice({ userId, sessionEpoch: 0, authVerifier: VERIFIER }, device, now());
+
+describe('known devices', () => {
+ it('recognises a cookie for the account it was issued to, under that username only', async () => {
+ const a = await member();
+ const b = await member();
+ const device = newDevice();
+ const value = cookieFor(a.id, device);
+
+ expect(await knownDeviceFor(value, a.username)).toBe(device);
+ expect(await knownDeviceFor(value, b.username)).toBeNull();
+ expect(await knownDeviceFor(value, 'no-such-member-anywhere')).toBeNull();
+ expect(await knownDeviceFor(undefined, a.username)).toBeNull();
+ });
+
+ it('forgets the browser when the account signs out everywhere or changes password', async () => {
+ const a = await member();
+ const device = newDevice();
+ const value = cookieFor(a.id, device);
+ expect(await knownDeviceFor(value, a.username)).toBe(device);
+
+ // What "sign out everywhere" and a ban do.
+ await db.update(schema.users).set({ sessionEpoch: 1 }).where(eq(schema.users.id, a.id));
+ expect(await knownDeviceFor(value, a.username)).toBeNull();
+
+ // What a password change does to the stored verifier.
+ await db
+ .update(schema.users)
+ .set({ sessionEpoch: 0, authVerifier: 'v1:cipher-b' })
+ .where(eq(schema.users.id, a.id));
+ expect(await knownDeviceFor(value, a.username)).toBeNull();
+ });
+
+ it('revokes a device after ten failures in the window, and only that device', async () => {
+ const a = await member();
+ const noisy = newDevice();
+ const quiet = newDevice();
+
+ for (let i = 0; i < 9; i++) await recordKnownDeviceFailure(noisy);
+ expect(await knownDeviceFor(cookieFor(a.id, noisy), a.username)).toBe(noisy);
+ await recordKnownDeviceFailure(noisy);
+ expect(await knownDeviceFor(cookieFor(a.id, noisy), a.username)).toBeNull();
+ // Re-signed or not, the id stays revoked: the cookie's age is not what failed.
+ expect(await knownDeviceFor(cookieFor(a.id, noisy), a.username)).toBeNull();
+ expect(await knownDeviceFor(cookieFor(a.id, quiet), a.username)).toBe(quiet);
+
+ await redis.del(`known-device:revoked:${noisy}`, `ratelimit:signin-fail-device:${noisy}`);
+ });
+
+ it('does not count failures older than the window', async () => {
+ const a = await member();
+ const device = newDevice();
+ const old = Date.now() - 16 * 60 * 1000;
+ for (let i = 0; i < 9; i++) {
+ await redis.zadd(`ratelimit:signin-fail-device:${device}`, old + i, `old-${i}`);
+ }
+ await recordKnownDeviceFailure(device); // the tenth entry, nine of them stale
+ expect(await knownDeviceFor(cookieFor(a.id, device), a.username)).toBe(device);
+
+ await redis.del(`ratelimit:signin-fail-device:${device}`);
+ });
+});
diff --git a/apps/api/test/knownDevices.test.ts b/apps/api/test/knownDevices.test.ts
new file mode 100644
index 00000000..db7d4aae
--- /dev/null
+++ b/apps/api/test/knownDevices.test.ts
@@ -0,0 +1,87 @@
+import { describe, it, expect, afterEach } from 'vitest';
+import {
+ encodeKnownDevice,
+ verifyKnownDevice,
+ KNOWN_DEVICE_TTL_S,
+} from '../utils/knownDevices';
+
+// The known-device cookie exempts a browser from the per-account sign-in
+// lockout, so everything it is bound to must void it when it changes: the
+// account, the session epoch ("sign out everywhere", a ban), the stored
+// verifier (a password change). And nothing about it may be forged or stretched.
+
+const subject = {
+ userId: 'a8e2c0de-0000-4000-8000-000000000001',
+ sessionEpoch: 3,
+ authVerifier: 'v1:cipher',
+};
+const DEVICE = 'AAAAAAAAAAAAAAAAAAAAAA'; // 22 base64url characters, as issued
+const NOW = 1_800_000_000;
+
+describe('known-device cookie', () => {
+ const originalSecret = process.env.NUXT_SESSION_SECRET;
+ afterEach(() => {
+ process.env.NUXT_SESSION_SECRET = originalSecret;
+ });
+
+ it('round-trips to its device id', () => {
+ const value = encodeKnownDevice(subject, DEVICE, NOW);
+ expect(value).toMatch(/^v1\.[A-Za-z0-9_-]{22}\.\d+\.[A-Za-z0-9_-]{43}$/);
+ expect(verifyKnownDevice(value, subject, NOW)).toBe(DEVICE);
+ });
+
+ it('is void for another account, epoch or credential', () => {
+ const value = encodeKnownDevice(subject, DEVICE, NOW);
+ const other = 'a8e2c0de-0000-4000-8000-000000000002';
+ expect(verifyKnownDevice(value, { ...subject, userId: other }, NOW)).toBeNull();
+ expect(verifyKnownDevice(value, { ...subject, sessionEpoch: 4 }, NOW)).toBeNull();
+ expect(verifyKnownDevice(value, { ...subject, authVerifier: 'v1:other' }, NOW)).toBeNull();
+ });
+
+ it('reads a missing epoch as 0, the way sessions do', () => {
+ const value = encodeKnownDevice({ ...subject, sessionEpoch: null }, DEVICE, NOW);
+ expect(verifyKnownDevice(value, { ...subject, sessionEpoch: 0 }, NOW)).toBe(DEVICE);
+ });
+
+ it('refuses any part edited', () => {
+ const value = encodeKnownDevice(subject, DEVICE, NOW);
+ const [v, device, issued, mac] = value.split('.') as [string, string, string, string];
+ const flip = (s: string) => (s[0] === 'A' ? 'B' : 'A') + s.slice(1);
+ expect(verifyKnownDevice([v, flip(device), issued, mac].join('.'), subject, NOW)).toBeNull();
+ expect(verifyKnownDevice([v, device, String(Number(issued) + 1), mac].join('.'), subject, NOW)).toBeNull();
+ expect(verifyKnownDevice([v, device, issued, flip(mac)].join('.'), subject, NOW)).toBeNull();
+ expect(verifyKnownDevice(['v2', device, issued, mac].join('.'), subject, NOW)).toBeNull();
+ });
+
+ it('expires, and takes no issue time from the future beyond clock skew', () => {
+ const at = (issuedAt: number) => encodeKnownDevice(subject, DEVICE, issuedAt);
+ expect(verifyKnownDevice(at(NOW - KNOWN_DEVICE_TTL_S), subject, NOW)).toBe(DEVICE);
+ expect(verifyKnownDevice(at(NOW - KNOWN_DEVICE_TTL_S - 1), subject, NOW)).toBeNull();
+ expect(verifyKnownDevice(at(NOW + 299), subject, NOW)).toBe(DEVICE);
+ expect(verifyKnownDevice(at(NOW + 301), subject, NOW)).toBeNull();
+ });
+
+ it('rejects anything that is not the issued shape', () => {
+ const mac = 'A'.repeat(43);
+ for (const bad of [
+ undefined,
+ null,
+ '',
+ 'v1',
+ 'v1..1.x',
+ `v1.${DEVICE}.1`,
+ `v1.${DEVICE}.1.x.y`,
+ `v1.${DEVICE.slice(1)}.1.${mac}`, // device id one character short
+ `v1.${DEVICE}.-1.${mac}`,
+ `v1.${DEVICE}.1.${mac.slice(1)}=`, // padding is not base64url
+ ]) {
+ expect(verifyKnownDevice(bad, subject, NOW)).toBeNull();
+ }
+ });
+
+ it('dies with the session secret', () => {
+ const value = encodeKnownDevice(subject, DEVICE, NOW);
+ process.env.NUXT_SESSION_SECRET = 'another-session-secret-0123456789abcdef';
+ expect(verifyKnownDevice(value, subject, NOW)).toBeNull();
+ });
+});
diff --git a/apps/api/utils/knownDevices.ts b/apps/api/utils/knownDevices.ts
new file mode 100644
index 00000000..d33f9ca3
--- /dev/null
+++ b/apps/api/utils/knownDevices.ts
@@ -0,0 +1,203 @@
+/**
+ * Known-device cookies: the per-account sign-in lockout, minus the member's own
+ * browsers.
+ *
+ * Ten failed sign-ins in fifteen minutes hold a username out of password
+ * sign-in from every address (`assertAccountNotLocked`). That is what stops a
+ * guess spread over many addresses, and it let anyone who knows a username —
+ * on a tracker, everyone — keep its owner out with one failure every ninety
+ * seconds, the right password included.
+ *
+ * A browser that completes a sign-in gets this cookie. It vouches for nothing
+ * but "this browser has proven this account's password before", so it skips
+ * nothing: not the password, not the second factor, not the per-address limit.
+ * What it changes is which counter a sign-in answers to — the device's own
+ * instead of the account's. A stranger failing on purpose can still hold the
+ * account shut to new devices; no longer to the member's usual ones. Guessing
+ * meets the same wall as before, since a guesser never holds a valid cookie.
+ *
+ * Not to be confused with `trustedDevices.ts`, which is opt-in, stored in the
+ * database, and DOES skip the second factor.
+ *
+ * Stateless: the value is an HMAC over the account id, `users.session_epoch`,
+ * a fingerprint of the stored verifier, a random device id and the issue time.
+ * So "sign out everywhere" and a ban (the epoch) revoke every such cookie at
+ * once, and so does a password change (the verifier). Server side, only Redis
+ * keeps anything: a failure counter per device id, and the ids revoked after
+ * ten failures — a stolen cookie is worth ten guesses, once.
+ */
+import { createHash, createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
+import type { H3Event } from 'h3';
+import { eq } from 'drizzle-orm';
+import { db } from '@trackarr/db';
+import { users } from '@trackarr/db/schema';
+import { redis } from './server';
+
+export const KNOWN_DEVICE_COOKIE = 'trackarr_kd';
+
+/** Long enough to outlive the seven-day session many times over. */
+export const KNOWN_DEVICE_TTL_S = 180 * 24 * 60 * 60;
+
+/** How far in the future an issue time may sit: clock skew between replicas. */
+const FUTURE_SKEW_S = 5 * 60;
+
+// Same window and threshold as the account's own counter.
+const DEVICE_FAILURE_WINDOW_S = 15 * 60;
+const DEVICE_MAX_FAILURES = 10;
+
+const failureKey = (deviceId: string) => `ratelimit:signin-fail-device:${deviceId}`;
+const revokedKey = (deviceId: string) => `known-device:revoked:${deviceId}`;
+
+/** What a cookie is bound to. Any of these changing voids it. */
+export interface KnownDeviceSubject {
+ userId: string;
+ sessionEpoch: number | null | undefined;
+ /** The stored column as is, ciphertext included: it changes when the password does. */
+ authVerifier: string | null | undefined;
+}
+
+const VALUE = /^v1\.([A-Za-z0-9_-]{22})\.(\d{1,12})\.([A-Za-z0-9_-]{43})$/;
+
+let cachedKey: { secret: string; key: Buffer } | null = null;
+
+/** A key of its own, derived from the session secret rather than reusing it as is. */
+function signingKey(): Buffer {
+ const secret = process.env.NUXT_SESSION_SECRET;
+ if (!secret || secret.length < 32) {
+ throw new Error('NUXT_SESSION_SECRET must be set and at least 32 characters long');
+ }
+ if (cachedKey?.secret !== secret) {
+ cachedKey = {
+ secret,
+ key: createHmac('sha256', secret).update('trackarr known-device cookie v1').digest(),
+ };
+ }
+ return cachedKey.key;
+}
+
+function mac(subject: KnownDeviceSubject, deviceId: string, issuedAt: number): string {
+ const credential = createHash('sha256')
+ .update(subject.authVerifier ?? '')
+ .digest('base64url');
+ return createHmac('sha256', signingKey())
+ .update(
+ `known-device|${subject.userId}|${subject.sessionEpoch ?? 0}|${credential}|${deviceId}|${issuedAt}`,
+ )
+ .digest('base64url');
+}
+
+/** The cookie value for `subject`. Exported for the tests. */
+export function encodeKnownDevice(
+ subject: KnownDeviceSubject,
+ deviceId: string,
+ issuedAt: number,
+): string {
+ return `v1.${deviceId}.${issuedAt}.${mac(subject, deviceId, issuedAt)}`;
+}
+
+/**
+ * The device id `value` carries, if it was issued for `subject` and has not
+ * outlived its life. Format, signature and age only: revocation is Redis's
+ * business, see `knownDeviceFor`.
+ */
+export function verifyKnownDevice(
+ value: string | null | undefined,
+ subject: KnownDeviceSubject,
+ now: number = Math.floor(Date.now() / 1000),
+): string | null {
+ const m = value ? VALUE.exec(value) : null;
+ if (!m) return null;
+ const [, deviceId = '', issued = '', given = ''] = m;
+ const issuedAt = Number(issued);
+ if (issuedAt > now + FUTURE_SKEW_S || now - issuedAt > KNOWN_DEVICE_TTL_S) return null;
+ const expected = Buffer.from(mac(subject, deviceId, issuedAt));
+ const actual = Buffer.from(given);
+ if (actual.length !== expected.length || !timingSafeEqual(actual, expected)) return null;
+ return deviceId;
+}
+
+/**
+ * The device id of a valid, unrevoked known-device cookie for `username`, or
+ * null. Reads the account only when there is a cookie to check, so a sign-in
+ * without one costs nothing more than before.
+ *
+ * Fails closed on a Redis error: a device whose revocation cannot be checked is
+ * treated as unknown, which is what every browser was before this existed.
+ */
+export async function knownDeviceFor(
+ value: string | null | undefined,
+ username: string,
+): Promise {
+ if (!value || !VALUE.test(value)) return null;
+ const user = await db
+ .select({ id: users.id, sessionEpoch: users.sessionEpoch, authVerifier: users.authVerifier })
+ .from(users)
+ .where(eq(users.username, username))
+ .limit(1)
+ .then((r) => r[0]);
+ if (!user) return null;
+ const deviceId = verifyKnownDevice(value, {
+ userId: user.id,
+ sessionEpoch: user.sessionEpoch,
+ authVerifier: user.authVerifier,
+ });
+ if (!deviceId) return null;
+ try {
+ if (await redis.exists(revokedKey(deviceId))) return null;
+ } catch {
+ return null;
+ }
+ return deviceId;
+}
+
+/** `knownDeviceFor` on the cookie this request carries. */
+export function readKnownDevice(event: H3Event, username: string): Promise {
+ return knownDeviceFor(getCookie(event, KNOWN_DEVICE_COOKIE), username);
+}
+
+/**
+ * One failed sign-in from a known device. The tenth inside the window revokes
+ * its id for good: from then on the browser is unknown, and answers to the
+ * account's counter like any other.
+ */
+export async function recordKnownDeviceFailure(deviceId: string): Promise {
+ const key = failureKey(deviceId);
+ const now = Date.now();
+ try {
+ const results = await redis
+ .multi()
+ .zadd(key, now, `${now}:${randomBytes(6).toString('hex')}`)
+ .zremrangebyscore(key, 0, now - DEVICE_FAILURE_WINDOW_S * 1000)
+ .expire(key, DEVICE_FAILURE_WINDOW_S)
+ .zcard(key)
+ .exec();
+ // [error, reply] per command; the fourth is the count after the trim.
+ if (Number(results?.[3]?.[1] ?? 0) >= DEVICE_MAX_FAILURES) {
+ await redis.set(revokedKey(deviceId), '1', 'EX', KNOWN_DEVICE_TTL_S);
+ }
+ } catch {
+ /* best effort, like the account's counter */
+ }
+}
+
+/**
+ * Hand this browser a fresh known-device cookie once a sign-in is complete —
+ * session open, second factor met. A new device id each time, so an id revoked
+ * on this browser is never carried forward.
+ */
+export function issueKnownDevice(event: H3Event, subject: KnownDeviceSubject): void {
+ const deviceId = randomBytes(16).toString('base64url');
+ setCookie(
+ event,
+ KNOWN_DEVICE_COOKIE,
+ encodeKnownDevice(subject, deviceId, Math.floor(Date.now() / 1000)),
+ {
+ httpOnly: true,
+ sameSite: 'lax',
+ // As the session cookie: a plain-HTTP development stack would never get it back.
+ secure: process.env.NODE_ENV === 'production',
+ path: '/',
+ maxAge: KNOWN_DEVICE_TTL_S,
+ },
+ );
+}
diff --git a/apps/api/utils/rateLimit.ts b/apps/api/utils/rateLimit.ts
index 60af3328..877f5351 100644
--- a/apps/api/utils/rateLimit.ts
+++ b/apps/api/utils/rateLimit.ts
@@ -759,9 +759,10 @@ export const RATE_LIMITS = {
/**
* Limits per address do not stop a guesser spread over many addresses, so
* failures are also counted per username — every username, existing or not, so
- * a lockout never tells whether an account exists. The cost is that anyone can
- * hold an account out of password sign-in for the window; the per-address limit
- * bounds how fast they can, and a member's sessions are untouched.
+ * a lockout never tells whether an account exists. The cost — anyone can hold
+ * an account out of password sign-in for the window — falls only on browsers
+ * that have never signed in to it: a known device answers to its own count
+ * instead (`knownDevices.ts`). A member's sessions are untouched either way.
*/
const ACCOUNT_FAILURE_WINDOW_S = 15 * 60;
const ACCOUNT_MAX_FAILURES = 10;
@@ -783,6 +784,10 @@ export async function assertAccountNotLocked(username: string): Promise {
if (failures >= ACCOUNT_MAX_FAILURES) {
throw createError({
statusCode: 429,
+ // Told apart from the per-address limit because the way out differs: a
+ // browser that has signed in to this account before is not held here.
+ // Says nothing about whether the account exists — every username counts.
+ data: { reason: 'account-locked' },
message: 'Too many failed attempts for this account. Try again later.',
});
}
diff --git a/apps/web/app/pages/auth/login.vue b/apps/web/app/pages/auth/login.vue
index 09fa5f12..cd564b70 100644
--- a/apps/web/app/pages/auth/login.vue
+++ b/apps/web/app/pages/auth/login.vue
@@ -339,9 +339,14 @@ async function handleLogin() {
// « ce compte n'existe pas » révélerait l'existence d'un compte, ce que le
// backend prend soin de ne pas faire (sel factice déterministe).
const code = err.statusCode ?? err.status;
+ // Deux 429 : la limite par adresse, et le verrou du compte, dont un
+ // navigateur déjà utilisé pour s'y connecter est exempté — d'où un message
+ // qui le dit.
error.value =
code === 429
- ? t('auth.login.errors.rateLimited')
+ ? err.data?.data?.reason === 'account-locked'
+ ? t('auth.login.errors.accountLocked')
+ : t('auth.login.errors.rateLimited')
: code === 403
? err.data?.message || t('auth.login.errors.invalidCredentials')
: t('auth.login.errors.invalidCredentials');
diff --git a/apps/web/i18n/locales/en.json b/apps/web/i18n/locales/en.json
index bdb0d95f..ae0defd6 100644
--- a/apps/web/i18n/locales/en.json
+++ b/apps/web/i18n/locales/en.json
@@ -220,7 +220,8 @@
"errors": {
"invalidCredentials": "Invalid username or password.",
"invalidCode": "That code didn't match. Try again.",
- "rateLimited": "Too many attempts. Try again later."
+ "rateLimited": "Too many attempts. Try again later.",
+ "accountLocked": "Too many failed sign-ins for this account. Try again in a few minutes, or sign in from a browser you have used before."
},
"sessionsRevoked": "Every device has been signed out, this one included. Sign in again to continue.",
"sessionRevokedRemote": "This session was signed out from another device. Sign in again to continue."
diff --git a/apps/web/i18n/locales/fr.json b/apps/web/i18n/locales/fr.json
index 11315897..85360a94 100644
--- a/apps/web/i18n/locales/fr.json
+++ b/apps/web/i18n/locales/fr.json
@@ -220,7 +220,8 @@
"errors": {
"invalidCredentials": "Identifiant ou mot de passe invalide.",
"invalidCode": "Le code ne correspond pas. Réessayez.",
- "rateLimited": "Trop de tentatives. Réessayez plus tard."
+ "rateLimited": "Trop de tentatives. Réessayez plus tard.",
+ "accountLocked": "Trop d'échecs de connexion pour ce compte. Réessayez dans quelques minutes, ou connectez-vous depuis un navigateur que vous avez déjà utilisé."
},
"sessionsRevoked": "Tous vos appareils ont été déconnectés, celui-ci compris. Reconnectez-vous pour continuer.",
"sessionRevokedRemote": "Cette session a été déconnectée depuis un autre appareil. Reconnectez-vous pour continuer."
diff --git a/doc/guide/architecture.md b/doc/guide/architecture.md
index 83adf01d..51d83f99 100644
--- a/doc/guide/architecture.md
+++ b/doc/guide/architecture.md
@@ -86,6 +86,10 @@ No shells, no package managers, signed images, non-root by default.
- **Sessions** — h3 sealed cookie (iron-webcrypto), 7-day TTL,
HttpOnly + SameSite=lax. Encryption key from `NUXT_SESSION_SECRET`.
+- **Known devices** — a second, stateless cookie (`trackarr_kd`, 180 days,
+ HMAC keyed from `NUXT_SESSION_SECRET`) on every browser that completed a
+ sign-in. It exempts that browser from the per-account sign-in lockout and
+ from nothing else; see `apps/api/utils/knownDevices.ts`.
- **Notification fan-out** — every event-emitting route calls
`notify(userId, type, payload, link)`. The row hits Postgres,
then a Redis pub/sub broadcast lets every Nitro replica with
diff --git a/doc/guide/security.md b/doc/guide/security.md
index 7dbc0bb6..88fc907f 100644
--- a/doc/guide/security.md
+++ b/doc/guide/security.md
@@ -21,7 +21,8 @@ Trackarr implements distributed rate limiting to prevent abuse:
| Public API | 100/min | 100+ req/10s → auto-block |
| Mutations | 10/min | Progressive penalties |
| Password sign-in | 10/5min per address | `429`, nothing more |
-| Sign-in, per account | 10 failures/15min per username | `429` for that username |
+| Sign-in, per account | 10 failures/15min per username | `429` for that username, except on its known browsers |
+| Sign-in, per known browser | 10 failures/15min | That browser is no longer known |
| Other auth (register, 2FA, password change) | 5/5min | IP blacklisted after violations |
| Tracker | 200/min | Distributed sliding window |
@@ -88,9 +89,29 @@ shut every member behind it out of the site. Per account, ten failures in
fifteen minutes hold that username out of password sign-in for the rest of the
window, from every address — the answer a guess spread over many addresses
used to meet nowhere. Failures are counted for every username, existing or
-not, so a lockout never tells whether an account exists; the cost is that
-anyone can hold an account out of password sign-in for the window. Its open
-sessions are untouched, and a successful sign-in clears the count.
+not, so a lockout never tells whether an account exists. Its open sessions are
+untouched.
+
+That lockout spares the member's own browsers. A browser that completes a
+sign-in — the password, and the second factor if the account has one — or a
+registration receives a **known-device cookie** (`trackarr_kd`, kept six
+months). On that browser the account's count does not apply: the browser
+answers to a count of its own, and ten failures there revoke its cookie for
+good, after which it is a browser like any other. Someone failing on purpose can
+still shut an account to new devices for the window, but no longer to the ones
+its member already uses — where before, one failure every ninety seconds kept
+the account shut everywhere, the right password included. Guessing gains
+nothing: a guesser never holds a valid cookie.
+
+The cookie skips nothing — not the password, not the second factor, not the
+per-address limit — which sets it apart from the opt-in *Trust this browser*
+cookie of [two-factor authentication](./two-factor-auth.md#trusted-devices-optional).
+It is stateless, an HMAC over the account, its session epoch and its stored
+verifier, so *Sign out everywhere*, a ban or a password change voids every one
+at once; Redis keeps only a failure count per device and the ids revoked. A
+successful sign-in from a browser that is not known clears the account's count;
+one from a known browser leaves it, since those failures came from somewhere
+else.
Every refusal of credentials takes at least 300 ms, whatever its cause. A
username with no account and a wrong password already got the same status and
diff --git a/doc/guide/two-factor-auth.md b/doc/guide/two-factor-auth.md
index e62edb11..38c40e3c 100644
--- a/doc/guide/two-factor-auth.md
+++ b/doc/guide/two-factor-auth.md
@@ -27,6 +27,8 @@ When a user opts in (`Trust this browser` toggle in settings), completing a 2FA
The user can list and revoke individual devices from `/settings#security` ("Trusted devices" tab). Changing the password and *Sign out everywhere* both revoke every one of them — the latter did not until October 2026, so a compromised device kept skipping the second factor at its next password sign-in.
+Not to be confused with the **known-device cookie** (`trackarr_kd`) that every browser receives after a complete sign-in, opted in or not. That one skips nothing: it only exempts the browser from the per-account sign-in lockout — see [Security](./security.md#failures-are-the-interesting-half).
+
A sign-in completed with a passkey opens the same kind of session as one completed with a TOTP code. It used to open one without the account's session epoch: once a member had used *Sign out everywhere*, every passkey sign-in produced a session revoked at its first request.
## Forced enrolment (admin)
diff --git a/tests/e2e/knownDevice.mjs b/tests/e2e/knownDevice.mjs
new file mode 100644
index 00000000..33385792
--- /dev/null
+++ b/tests/e2e/knownDevice.mjs
@@ -0,0 +1,137 @@
+/**
+ * The per-account sign-in lockout, and the member's own browsers.
+ *
+ * Ten failed sign-ins in fifteen minutes hold a username out of password
+ * sign-in from every address — the right password included, so anyone who
+ * knows a username could keep its owner out. A browser that has completed a
+ * sign-in carries a known-device cookie and answers to its own counter instead:
+ * failing on purpose from elsewhere now shuts the account to new devices only.
+ * See `apps/api/utils/knownDevices.ts`.
+ *
+ * Runs just before `freshauth`, because it signs `donator` and `plainuser` out
+ * everywhere and only `freshauth` (founder alone) comes after it.
+ */
+import { API, check, report, resetAddressLimits, resetRateLimits } from './lib.mjs';
+import { generateLoginProof } from './crypto.mjs';
+
+const PASSWORDS = { donator: 'E2e-Passw0rd!donator', plainuser: 'E2e-Passw0rd!plain' };
+const KD = 'trackarr_kd';
+
+// A browser: a cookie jar of its own. The scenario's whole point is which
+// cookies each one holds, so it does not reuse the session file.
+const browser = () => new Map();
+
+async function call(jar, path, { method = 'GET', body } = {}) {
+ const res = await fetch(API + path, {
+ method,
+ headers: {
+ ...(body ? { 'content-type': 'application/json' } : {}),
+ ...(jar.size ? { cookie: [...jar].map(([k, v]) => `${k}=${v}`).join('; ') } : {}),
+ },
+ body: body ? JSON.stringify(body) : undefined,
+ redirect: 'manual',
+ });
+ const setCookies = res.headers.getSetCookie?.() ?? [];
+ for (const line of setCookies) {
+ const [pair] = line.split(';');
+ const i = pair.indexOf('=');
+ if (i > 0) jar.set(pair.slice(0, i).trim(), pair.slice(i + 1).trim());
+ }
+ const text = await res.text();
+ let json;
+ try {
+ json = JSON.parse(text);
+ } catch {
+ json = text;
+ }
+ return { status: res.status, body: json, setCookies };
+}
+
+/** The real protocol: challenge, then a proof — the right one, or 64 hex of noise. */
+async function signIn(jar, username, { wrong = false } = {}) {
+ const chal = await call(jar, `/api/auth/challenge?username=${encodeURIComponent(username)}`);
+ if (chal.status !== 200) return chal;
+ const proof = wrong
+ ? 'f'.repeat(64)
+ : await generateLoginProof(PASSWORDS[username], chal.body.salt, chal.body.challenge);
+ return call(jar, '/api/auth/login', {
+ method: 'POST',
+ body: { username, challenge: chal.body.challenge, proof },
+ });
+}
+
+/** Ten wrong proofs from `jar`, between two clears of the per-address buckets. */
+async function failTenTimes(jar, username) {
+ await resetAddressLimits();
+ const statuses = [];
+ for (let i = 0; i < 10; i++) statuses.push((await signIn(jar, username, { wrong: true })).status);
+ await resetAddressLimits();
+ return statuses;
+}
+
+const d = (r) => `status ${r.status} ${JSON.stringify(r.body).slice(0, 160)}`;
+const kdLine = (r) => r.setCookies.find((l) => l.startsWith(`${KD}=`));
+
+await resetRateLimits();
+
+console.log('\n1. a completed sign-in makes the browser known');
+const mine = browser();
+{
+ const r = await signIn(mine, 'donator');
+ check('donator signs in', r.status === 200, d(r));
+ const line = kdLine(r);
+ check('and gets a known-device cookie', !!line, r.setCookies.join(' | ').slice(0, 200));
+ check(
+ 'httpOnly, SameSite=Lax, kept six months',
+ /HttpOnly/i.test(line ?? '') && /SameSite=Lax/i.test(line ?? '') && /Max-Age=15552000/.test(line ?? ''),
+ line,
+ );
+}
+
+console.log('\n2. ten failures from elsewhere shut the account to new browsers');
+const stranger = browser();
+{
+ const st = await failTenTimes(stranger, 'donator');
+ check('ten refusals', st.every((s) => s === 401), st.join(','));
+ const r = await signIn(stranger, 'donator');
+ check('then the right password is refused there', r.status === 429, d(r));
+ check('saying the account is locked, not the address',
+ r.body?.data?.reason === 'account-locked', d(r));
+ const fresh = await signIn(browser(), 'donator');
+ check('and in any other new browser', fresh.status === 429, d(fresh));
+}
+
+console.log("\n3. the member's own browser is not shut out");
+{
+ await resetAddressLimits();
+ const r = await signIn(mine, 'donator');
+ check('the known browser signs in', r.status === 200, d(r));
+ check('and its cookie is renewed', !!kdLine(r), r.setCookies.join(' | ').slice(0, 200));
+ const again = await signIn(stranger, 'donator');
+ check('which does not lift the lockout for the stranger', again.status === 429, d(again));
+}
+
+console.log('\n4. a known browser that fails ten times is known no more');
+{
+ const st = await failTenTimes(mine, 'donator');
+ check('ten refusals from the known browser', st.every((s) => s === 401), st.join(','));
+ const r = await signIn(mine, 'donator');
+ check("then it answers to the account's lockout like any other", r.status === 429, d(r));
+}
+
+console.log('\n5. signing out everywhere forgets every known browser');
+{
+ await resetAddressLimits();
+ const pc = browser();
+ const first = await signIn(pc, 'plainuser');
+ check('plainuser signs in', first.status === 200, d(first));
+ const out = await call(pc, '/api/me/sessions/revoke-all', { method: 'POST' });
+ check('and signs out everywhere', out.status === 200, d(out));
+ await failTenTimes(browser(), 'plainuser');
+ const r = await signIn(pc, 'plainuser');
+ check('after which its old cookie exempts nothing', r.status === 429, d(r));
+}
+
+// The counters this scenario filled must not leak into the next one.
+await resetRateLimits();
+report();
diff --git a/tests/e2e/lib.mjs b/tests/e2e/lib.mjs
index ef1f8f55..c3050cec 100644
--- a/tests/e2e/lib.mjs
+++ b/tests/e2e/lib.mjs
@@ -82,6 +82,16 @@ export function resetRateLimits() {
);
}
+/**
+ * Only the per-address sign-in and challenge buckets. A scenario that signs in
+ * more than ten times from this one host clears them between rounds, while the
+ * per-account and per-device failure counts it is checking stay as they are:
+ * `ratelimit:signin-fail…` does not match `ratelimit:signin:*`.
+ */
+export function resetAddressLimits() {
+ return sweepKeys(['ot:ratelimit:signin:*', 'ot:ratelimit:challenge:*']);
+}
+
/** One EVAL to delete by pattern, plus optional exact keys. */
function sweepKeys(patterns, exact = []) {
const sweep =
diff --git a/tests/e2e/run.sh b/tests/e2e/run.sh
index 710e6792..4573cfe7 100755
--- a/tests/e2e/run.sh
+++ b/tests/e2e/run.sh
@@ -131,8 +131,10 @@ node "$HERE/seed.mjs" > "$HERE/session.json"
# An explicit order rather than a glob, because the order matters: `freshauth`
# clears the fresh-auth stamps to reach the refusal path, which makes every
# session in the run stale, so it has to be last. A glob sorted alphabetically
-# would have put it in the middle and broken everything after it.
-SCENARIOS=(appearance fonts themes torrentVisibility messaging room tickets notifications interactions staffTools badges erasure freshauth)
+# would have put it in the middle and broken everything after it. `knownDevice`
+# signs donator and plainuser out everywhere, so it follows every scenario that
+# uses their sessions.
+SCENARIOS=(appearance fonts themes torrentVisibility messaging room tickets notifications interactions staffTools badges erasure knownDevice freshauth)
status=0
for name in "${SCENARIOS[@]}"; do
From b485fb6dc9d91a24efc8eac13409a0dbca2b5a6e Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 10:13:58 +0100
Subject: [PATCH 33/44] fix(web): three pages read an API error's details one
level too high
`createError({ data })` answers `{ statusCode, statusMessage, message,
data }`, and `$fetch` hands that body back as `err.data`: whatever a route
put in `data` is at `err.data.data`. Three pages read `err.data.`
and never found it:
- torrents: saving a search past the cap, or with no criterion, said
"the search could not be saved" instead of naming the cap or the
missing criterion;
- settings: "sign out everywhere" on a session already revoked ended on
the re-authentication prompt instead of the sign-in page;
- admin upload rules: the fields the server refused were never outlined.
errorDataPath.test.ts sweeps app/ for a caught error's `.data.` followed by
anything but a field of the error body, and flags all four lines as they
were. Checked in a browser: the cap message, and a revoked session landing
on /auth/login?revoked=all with its request answered 401.
Co-Authored-By: Claude Opus 5.5
---
apps/web/app/components/admin/UploadRules.vue | 5 +-
apps/web/app/pages/settings.vue | 8 ++-
apps/web/app/pages/torrents/index.vue | 10 +--
apps/web/test/errorDataPath.test.ts | 66 +++++++++++++++++++
4 files changed, 81 insertions(+), 8 deletions(-)
create mode 100644 apps/web/test/errorDataPath.test.ts
diff --git a/apps/web/app/components/admin/UploadRules.vue b/apps/web/app/components/admin/UploadRules.vue
index a543a73e..25660d70 100644
--- a/apps/web/app/components/admin/UploadRules.vue
+++ b/apps/web/app/components/admin/UploadRules.vue
@@ -664,7 +664,10 @@ async function save() {
notifications.success(t('admin.uploadRules.saved'));
await refreshRules();
} catch (err: any) {
- const invalid = err?.data?.invalidFields as string[] | undefined;
+ // `err.data` est le corps de la réponse, et le `data` de `createError` y est
+ // imbriqué : lus un cran trop haut, les champs refusés par le serveur ne
+ // s'entouraient jamais de rouge.
+ const invalid = err?.data?.data?.invalidFields as string[] | undefined;
if (Array.isArray(invalid)) {
for (const path of invalid) {
if (path === 'titleBlocklist') errors.titleBlocklist = true;
diff --git a/apps/web/app/pages/settings.vue b/apps/web/app/pages/settings.vue
index c2d9d630..35d9bce7 100644
--- a/apps/web/app/pages/settings.vue
+++ b/apps/web/app/pages/settings.vue
@@ -1492,18 +1492,20 @@ async function revokeAllSessions() {
await clearSession();
router.push({ path: '/auth/login', query: { revoked: 'all' } });
} catch (err: unknown) {
+ // `e.data` est le corps de la réponse ; le `data` de `createError` y est
+ // imbriqué. Lu un cran trop haut, le motif ne correspondait jamais et une
+ // session déjà révoquée finissait sur le message de ré-authentification.
const e = err as {
statusCode?: number;
data?: {
message?: string;
- data?: { reauthRequired?: boolean };
- reason?: string;
+ data?: { reauthRequired?: boolean; reason?: string };
};
message?: string;
};
// Déjà révoquée : la demande a abouti, par nous ou depuis un autre
// appareil. Le résultat voulu est le même, donc on va au bout.
- if (e?.data?.reason === 'session-revoked') {
+ if (e?.data?.data?.reason === 'session-revoked') {
await clearSession();
router.push({ path: '/auth/login', query: { revoked: 'all' } });
return;
diff --git a/apps/web/app/pages/torrents/index.vue b/apps/web/app/pages/torrents/index.vue
index 7598ca3d..94970f23 100644
--- a/apps/web/app/pages/torrents/index.vue
+++ b/apps/web/app/pages/torrents/index.vue
@@ -1375,12 +1375,14 @@ async function saveCurrentSearch() {
// 4xx bodies here are English sentences written for a log — "You can keep up
// to 20 saved searches. Delete one first." — and echoing them put English in
// front of a French member at the one moment they needed to understand what
- // to do next.
- const e = err as { data?: { reason?: string; max?: number } };
- const reason = e?.data?.reason;
+ // to do next. `err.data` is the response body, and `createError` nests its
+ // own `data` inside it: read one level up, the reason never matched and
+ // every refusal fell through to the generic "failed".
+ const e = err as { data?: { data?: { reason?: string; max?: number } } };
+ const reason = e?.data?.data?.reason;
savedSearchNotifications.error(
reason === 'limit'
- ? t('search.saveSearch.limit', { max: e?.data?.max ?? 20 })
+ ? t('search.saveSearch.limit', { max: e?.data?.data?.max ?? 20 })
: reason === 'no-criteria'
? t('search.saveSearch.noCriteria')
: t('search.saveSearch.failed')
diff --git a/apps/web/test/errorDataPath.test.ts b/apps/web/test/errorDataPath.test.ts
new file mode 100644
index 00000000..91888f69
--- /dev/null
+++ b/apps/web/test/errorDataPath.test.ts
@@ -0,0 +1,66 @@
+import { describe, expect, it } from 'vitest';
+import { readFileSync, readdirSync } from 'node:fs';
+import { fileURLToPath } from 'node:url';
+import { join, relative } from 'node:path';
+
+// Where the API's error details live in a caught `$fetch` error.
+//
+// A route that refuses with `createError({ statusCode, message, data })` answers
+// `{ statusCode, statusMessage, message, data }`, and `$fetch` hands that body
+// back as `err.data`. So whatever the route put in `data` is at `err.data.data`.
+//
+// Three pages read it one level up and never found it: the saved-search limit
+// fell through to a generic "failed" (`torrents/index.vue`), a session already
+// revoked ended on the re-authentication prompt (`settings.vue`), and the
+// fields the server refused were never outlined (`admin/UploadRules.vue`). Each
+// looked right in review — the name is `data` either way.
+//
+// The check is textual: a caught error's `.data.` followed by anything but a
+// field of the error body itself. `response._data` in an `onResponseError` hook
+// IS the body, so it reads `.data.reason` correctly and does not match.
+
+const APP = fileURLToPath(new URL('../app', import.meta.url));
+
+/** The error body's own fields; anything else under `err.data` is one level too high. */
+const BODY_FIELDS = ['statusCode', 'statusMessage', 'message', 'data', 'url', 'stack', 'error'];
+
+const TOO_HIGH = new RegExp(
+ String.raw`\b(?:e|err|error|ex)\??\.data\??\.(?!(?:${BODY_FIELDS.join('|')})\b)([A-Za-z_]\w*)`,
+);
+
+function walk(dir: string): string[] {
+ return readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
+ const full = join(dir, entry.name);
+ if (entry.isDirectory()) return walk(full);
+ return /\.(vue|ts)$/.test(entry.name) ? [full] : [];
+ });
+}
+
+const FILES = walk(APP);
+
+describe("an API error's data is read where createError puts it", () => {
+ it('sweeps a realistic number of files', () => {
+ expect(FILES.length).toBeGreaterThan(150);
+ });
+
+ it('matches the shapes it is meant to, and only those', () => {
+ expect(TOO_HIGH.test('const reason = e?.data?.reason;')).toBe(true);
+ expect(TOO_HIGH.test('err?.data?.invalidFields as string[]')).toBe(true);
+ expect(TOO_HIGH.test('const reason = e?.data?.data?.reason;')).toBe(false);
+ expect(TOO_HIGH.test('err?.data?.message || err?.message')).toBe(false);
+ expect(TOO_HIGH.test('(response._data as Body)?.data?.reason')).toBe(false);
+ });
+
+ it.each(FILES.map((f) => [relative(APP, f), f]))('%s', (rel, full) => {
+ const offenders = readFileSync(full, 'utf8')
+ .split('\n')
+ .map((line, i) => [i + 1, line] as const)
+ .filter(([, line]) => TOO_HIGH.test(line))
+ .map(([n, line]) => `${rel}:${n} ${line.trim()}`);
+ expect(
+ offenders,
+ `${rel} reads an API error's details at err.data.. createError nests ` +
+ 'them: the body is err.data, its data is err.data.data.',
+ ).toEqual([]);
+ });
+});
From fb7bd608b5eada8a6ea1ea10c06338bf83caaf1c Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:25 +0100
Subject: [PATCH 34/44] fix(api): Redis errors no longer print a rediss://
password
The Redis client masks the credentials of its URL before it logs a
connection error, but the pattern only knew `redis://`. A Redis reached
over TLS (`rediss://`, what managed offers hand out) had its password
written to the log whole, on every connection error.
The mask now covers both schemes and keeps the one it matched. Found while
triaging the scanner's note on the plain `redis://` fallback a few lines
above.
Co-Authored-By: Claude Opus 5.5
---
apps/api/redis/client.ts | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/apps/api/redis/client.ts b/apps/api/redis/client.ts
index d21f5c6d..0d1cb720 100644
--- a/apps/api/redis/client.ts
+++ b/apps/api/redis/client.ts
@@ -120,10 +120,12 @@ redis.on('connect', () => {
});
redis.on('error', (err) => {
- // Sanitize error messages to avoid leaking sensitive info
+ // Sanitize error messages to avoid leaking sensitive info. `rediss://` as
+ // well: a TLS URL carries the same password, and a mask that only knew the
+ // plain scheme let it through whole.
const sanitizedMessage = err.message.replace(
- /redis:\/\/[^@]+@/g,
- 'redis://***@'
+ /(rediss?):\/\/[^@]+@/g,
+ '$1://***@'
);
console.error('[Redis] Error:', sanitizedMessage);
});
From fafa06009070a2765f05ec86a90ab6cfe3f3f457 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:25 +0100
Subject: [PATCH 35/44] fix(api): a double quote in a Telegram link no longer
ends its href
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The Telegram channel renders a notification as HTML and puts its link in
``, but the escaper only handled `&`, `<` and `>`. A `"` in the
link closed the attribute early and left Telegram to parse the rest of the
URL as markup.
`"` now becomes `"`, one of the four named entities Telegram's HTML
mode accepts. The apostrophe needs nothing: the only attribute is
double-quoted.
Co-Authored-By: Claude Opus 5.5
---
apps/api/utils/channels/telegram.ts | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/apps/api/utils/channels/telegram.ts b/apps/api/utils/channels/telegram.ts
index cac5b24a..a6509e08 100644
--- a/apps/api/utils/channels/telegram.ts
+++ b/apps/api/utils/channels/telegram.ts
@@ -27,11 +27,16 @@ interface TelegramUser {
chatId: string;
}
+// `"` too: the result also lands in `href="…"` below, where an unescaped quote
+// ends the attribute early. `"` is one of the four named entities
+// Telegram's HTML mode accepts (with `<`, `>`, `&`); the apostrophe
+// needs none, the only attribute below being double-quoted.
function escapeHtml(s: string): string {
return s
.replaceAll('&', '&')
.replaceAll('<', '<')
- .replaceAll('>', '>');
+ .replaceAll('>', '>')
+ .replaceAll('"', '"');
}
function renderHtml(payload: NotificationPayload): string {
From 793438f0f1471c385c8190d581f95fbd1ac8f46d Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:25 +0100
Subject: [PATCH 36/44] fix(api): log calls pass their values as arguments, not
in the format string
Nine console calls put their values into the first argument through a
template literal. Node reads that first argument as a format string: a
`%s`, `%d` or `%j` arriving in an interpolated value would consume the
next argument, the error, and the line would come out without it. None of
these values is likely to carry one (the paths are encoded, the rest are
counts or configuration), so this is about the shape rather than a failure
seen: a fixed format, and the values after it.
Ban expiry, the metrics listener, panic restore, the IGDB, Open Library,
Google Books and TMDb fetchers, and the secret reader.
Co-Authored-By: Claude Opus 5.5
---
apps/api/plugins/ban-expiry.ts | 3 ++-
apps/api/plugins/metrics.ts | 2 +-
apps/api/routes/api/admin/panic/restore.post.ts | 2 +-
apps/api/utils/metadata/igdb.ts | 2 +-
apps/api/utils/metadata/openlibrary.ts | 4 ++--
apps/api/utils/metadata/tmdb.ts | 4 ++--
apps/api/utils/secrets.ts | 3 ++-
7 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/apps/api/plugins/ban-expiry.ts b/apps/api/plugins/ban-expiry.ts
index 6c74c108..b8277620 100644
--- a/apps/api/plugins/ban-expiry.ts
+++ b/apps/api/plugins/ban-expiry.ts
@@ -119,7 +119,8 @@ export default defineNitroPlugin(async () => {
);
console.log(
- `[Ban Expiry] Unbanned ${expired.length} user(s):`,
+ '[Ban Expiry] Unbanned %d user(s): %s',
+ expired.length,
expired.map((u) => u.username).join(', '),
);
} catch (err) {
diff --git a/apps/api/plugins/metrics.ts b/apps/api/plugins/metrics.ts
index 7de75aa5..755d182b 100644
--- a/apps/api/plugins/metrics.ts
+++ b/apps/api/plugins/metrics.ts
@@ -116,7 +116,7 @@ export default defineNitroPlugin((nitroApp) => {
});
server.on('error', (err) => {
- console.error(`[metrics] server error on ${host}:${port}:`, err);
+ console.error('[metrics] server error on %s:%s:', host, port, err);
});
server.listen(port, host, () => {
diff --git a/apps/api/routes/api/admin/panic/restore.post.ts b/apps/api/routes/api/admin/panic/restore.post.ts
index 4e9fe58b..229fbd2f 100644
--- a/apps/api/routes/api/admin/panic/restore.post.ts
+++ b/apps/api/routes/api/admin/panic/restore.post.ts
@@ -179,7 +179,7 @@ export default defineEventHandler(async (event) => {
const failures: string[] = [];
const fail = (what: string, id: string, err: unknown) => {
failures.push(`${what}:${id}`);
- console.error(`[panic] restore failed for ${what} ${id}:`, err);
+ console.error('[panic] restore failed for %s %s:', what, id, err);
};
await db
diff --git a/apps/api/utils/metadata/igdb.ts b/apps/api/utils/metadata/igdb.ts
index 5d0c6a1c..c63ef208 100644
--- a/apps/api/utils/metadata/igdb.ts
+++ b/apps/api/utils/metadata/igdb.ts
@@ -208,7 +208,7 @@ async function igdbPost(path: string, query: string): Promise
return (await res.json()) as T;
} catch (err) {
if (err instanceof UpstreamUnavailableError) throw err;
- console.warn(`[metadata:igdb] fetch failed for ${path}:`, err);
+ console.warn('[metadata:igdb] fetch failed for %s:', path, err);
throw new UpstreamUnavailableError('igdb', null);
}
}
diff --git a/apps/api/utils/metadata/openlibrary.ts b/apps/api/utils/metadata/openlibrary.ts
index fdf2a422..2f8317be 100644
--- a/apps/api/utils/metadata/openlibrary.ts
+++ b/apps/api/utils/metadata/openlibrary.ts
@@ -73,7 +73,7 @@ async function olGet(
return (await res.json()) as T;
} catch (err) {
if (err instanceof UpstreamUnavailableError) throw err;
- console.warn(`[metadata:openlibrary] fetch failed for ${path}:`, err);
+ console.warn('[metadata:openlibrary] fetch failed for %s:', path, err);
throw new UpstreamUnavailableError('openlibrary', null);
}
}
@@ -98,7 +98,7 @@ async function gbGet(
return (await res.json()) as T;
} catch (err) {
if (err instanceof UpstreamUnavailableError) throw err;
- console.warn(`[metadata:googlebooks] fetch failed for ${path}:`, err);
+ console.warn('[metadata:googlebooks] fetch failed for %s:', path, err);
throw new UpstreamUnavailableError('googlebooks', null);
}
}
diff --git a/apps/api/utils/metadata/tmdb.ts b/apps/api/utils/metadata/tmdb.ts
index e92f6235..d7d0277d 100644
--- a/apps/api/utils/metadata/tmdb.ts
+++ b/apps/api/utils/metadata/tmdb.ts
@@ -103,7 +103,7 @@ async function tmdbGet(
signal: AbortSignal.timeout(8000),
});
} catch (err) {
- console.warn(`[metadata:tmdb] fetch failed for ${path}:`, err);
+ console.warn('[metadata:tmdb] fetch failed for %s:', path, err);
throw new UpstreamUnavailableError('tmdb', null);
}
if (res.status === 404) return null;
@@ -114,7 +114,7 @@ async function tmdbGet(
try {
return (await res.json()) as T;
} catch (err) {
- console.warn(`[metadata:tmdb] unreadable body on ${path}:`, err);
+ console.warn('[metadata:tmdb] unreadable body on %s:', path, err);
throw new UpstreamUnavailableError('tmdb', res.status);
}
}
diff --git a/apps/api/utils/secrets.ts b/apps/api/utils/secrets.ts
index b4d48f77..ed240ac0 100644
--- a/apps/api/utils/secrets.ts
+++ b/apps/api/utils/secrets.ts
@@ -22,7 +22,8 @@ export function readSecret(envKey: string, defaultValue?: string): string {
}
} catch (error) {
console.error(
- `[Secrets] Error reading secret file ${secretFilePath}:`,
+ '[Secrets] Error reading secret file %s:',
+ secretFilePath,
error
);
}
From 776efa206a7285ac8092515d17eb9868b5db0c85 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:26 +0100
Subject: [PATCH 37/44] refactor(api): drop normalizeNumericId, never called
since it was written
The helper came with the IMDb / TMDb / TVDB tagging (2837897) and nothing
ever called it: normalizeTmdbId and normalizeTvdbId each carry their own
patterns. It was also the one place that compiled a regex from its
arguments, which is what the scanner pointed at.
Co-Authored-By: Claude Opus 5.5
---
apps/api/utils/mediaIds.ts | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/apps/api/utils/mediaIds.ts b/apps/api/utils/mediaIds.ts
index e6d57831..6c60e7c3 100644
--- a/apps/api/utils/mediaIds.ts
+++ b/apps/api/utils/mediaIds.ts
@@ -33,22 +33,6 @@ export function normalizeImdbId(input: unknown): string | null {
return null;
}
-function normalizeNumericId(
- input: unknown,
- hostPattern: RegExp,
- minDigits: number,
- maxDigits: number
-): string | null {
- if (typeof input !== 'string') return null;
- const trimmed = input.trim();
- if (!trimmed) return null;
- const fromUrl = trimmed.match(hostPattern);
- if (fromUrl) return fromUrl[1]!;
- const re = new RegExp(`^\\d{${minDigits},${maxDigits}}$`);
- if (re.test(trimmed)) return trimmed;
- return null;
-}
-
export function normalizeTmdbId(input: unknown): string | null {
// TMDb has TWO independent id namespaces — `/movie/{n}` and `/tv/{n}`
// — and the same integer can resolve in both. Without a type hint
From 578b5bce122b151c8c0cc057741e4bcf2331bcb6 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:26 +0100
Subject: [PATCH 38/44] fix(tracker,relay): every response carries
X-Content-Type-Options: nosniff
The tracker answers in bencode served as text/plain and its health check in
JSON; the relay streams text/event-stream and serves plain text. The
shipped Caddyfile adds nosniff on the way out, but an ingress in front of
the Helm chart does not, and a browser left to sniff a bencoded failure
reason or peer list could take it for HTML.
Both now set the header themselves, around their whole mux. The tracker's
test goes through Routes(): a scrape without a passkey is refused before
the database or Redis is touched, with a plain Write. A 404 would have
proved nothing, http.Error setting nosniff on its own; the test fails with
the wrapper removed. On the e2e stack, /announce, /scrape, /health and the
relay's /healthz and /metrics all carry it.
Co-Authored-By: Claude Opus 5.5
---
apps/relay/cmd/relay/main.go | 12 +++++-
apps/relay/cmd/relay/nosniff_test.go | 23 +++++++++++
apps/tracker/internal/server/handler.go | 14 ++++++-
apps/tracker/internal/server/nosniff_test.go | 40 ++++++++++++++++++++
4 files changed, 87 insertions(+), 2 deletions(-)
create mode 100644 apps/relay/cmd/relay/nosniff_test.go
create mode 100644 apps/tracker/internal/server/nosniff_test.go
diff --git a/apps/relay/cmd/relay/main.go b/apps/relay/cmd/relay/main.go
index f4b32575..954dde90 100644
--- a/apps/relay/cmd/relay/main.go
+++ b/apps/relay/cmd/relay/main.go
@@ -168,7 +168,7 @@ func main() {
srv := &http.Server{
Addr: static.Addr,
- Handler: mux,
+ Handler: noSniff(mux),
ReadHeaderTimeout: 10 * time.Second,
// No WriteTimeout: these responses are meant to stay open. The
// heartbeat is what detects a reader that went away.
@@ -196,6 +196,16 @@ func main() {
_ = srv.Shutdown(shutdown)
}
+// noSniff : aucune réponse du relais n'est à deviner. Le flux SSE est
+// `text/event-stream`, `/healthz` et `/metrics` du texte brut ; le Caddyfile
+// livré pose l'en-tête, un ingress devant le chart ne le pose pas.
+func noSniff(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ w.Header().Set("X-Content-Type-Options", "nosniff")
+ next.ServeHTTP(w, r)
+ })
+}
+
func itoa(v int64) string {
if v == 0 {
return "0"
diff --git a/apps/relay/cmd/relay/nosniff_test.go b/apps/relay/cmd/relay/nosniff_test.go
new file mode 100644
index 00000000..1951985c
--- /dev/null
+++ b/apps/relay/cmd/relay/nosniff_test.go
@@ -0,0 +1,23 @@
+package main
+
+import (
+ "net/http"
+ "net/http/httptest"
+ "testing"
+)
+
+// Le relais pose nosniff lui-même, sans compter sur ce qui le précède.
+func TestNoSniff_SetOnEveryResponse(t *testing.T) {
+ h := noSniff(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
+ w.Header().Set("Content-Type", "text/event-stream")
+ w.WriteHeader(http.StatusOK)
+ }))
+ rec := httptest.NewRecorder()
+ h.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/messaging/events", nil))
+ if got := rec.Header().Get("X-Content-Type-Options"); got != "nosniff" {
+ t.Fatalf("X-Content-Type-Options = %q, want nosniff", got)
+ }
+ if got := rec.Header().Get("Content-Type"); got != "text/event-stream" {
+ t.Fatalf("le Content-Type du handler a été perdu : %q", got)
+ }
+}
diff --git a/apps/tracker/internal/server/handler.go b/apps/tracker/internal/server/handler.go
index 39651dc4..07b2d2ab 100644
--- a/apps/tracker/internal/server/handler.go
+++ b/apps/tracker/internal/server/handler.go
@@ -134,7 +134,19 @@ func (s *Server) Routes() http.Handler {
mux.HandleFunc("/announce", s.handleAnnounce)
mux.HandleFunc("/scrape", s.handleScrape)
mux.HandleFunc("/health", s.handleHealth)
- return mux
+ return noSniff(mux)
+}
+
+// noSniff stops a browser from guessing a type for these bodies. They are
+// declared text/plain or JSON, and a bencoded failure reason or peer list read
+// as HTML is what a sniffing browser could make of them. The shipped Caddyfile
+// adds the header on the tracker host; an ingress in front of the chart does
+// not, so the tracker sets it itself.
+func noSniff(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ w.Header().Set("X-Content-Type-Options", "nosniff")
+ next.ServeHTTP(w, r)
+ })
}
// Stop tears the server down: stops the dedup eviction loop, then
diff --git a/apps/tracker/internal/server/nosniff_test.go b/apps/tracker/internal/server/nosniff_test.go
new file mode 100644
index 00000000..626a7066
--- /dev/null
+++ b/apps/tracker/internal/server/nosniff_test.go
@@ -0,0 +1,40 @@
+package server
+
+import (
+ "net/http"
+ "net/http/httptest"
+ "strings"
+ "testing"
+)
+
+// Every response of the tracker's own mux carries nosniff, the bencoded
+// failures included, whatever sits (or does not) in front of it.
+func TestNoSniff_SetOnEveryResponse(t *testing.T) {
+ h := noSniff(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
+ w.Header().Set("Content-Type", "text/plain; charset=utf-8")
+ w.WriteHeader(http.StatusOK)
+ _, _ = w.Write([]byte("d14:failure reason15:Invalid passkeye"))
+ }))
+ rec := httptest.NewRecorder()
+ h.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/announce", nil))
+ if got := rec.Header().Get("X-Content-Type-Options"); got != "nosniff" {
+ t.Fatalf("X-Content-Type-Options = %q, want nosniff", got)
+ }
+ if got := rec.Header().Get("Content-Type"); got != "text/plain; charset=utf-8" {
+ t.Fatalf("the handler's own Content-Type was lost: %q", got)
+ }
+}
+
+// And Routes() is what puts it there. A scrape without a passkey is refused
+// before the database or Redis is touched, and with a plain Write: a 404 would
+// prove nothing, http.Error setting nosniff on its own.
+func TestRoutes_WrapsTheMuxInNoSniff(t *testing.T) {
+ rec := httptest.NewRecorder()
+ (&Server{}).Routes().ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/scrape", nil))
+ if body := rec.Body.String(); !strings.Contains(body, "failure reason") {
+ t.Fatalf("body = %q, want a bencoded failure", body)
+ }
+ if got := rec.Header().Get("X-Content-Type-Options"); got != "nosniff" {
+ t.Fatalf("X-Content-Type-Options = %q, want nosniff", got)
+ }
+}
From 9a3931d4a021968b9bcf280a1ef7850273099559 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:26 +0100
Subject: [PATCH 39/44] fix(images): the api and web images name their user by
number
Both said `USER nonroot`, the distroless base's name for 65532. The kubelet
cannot check a name against `runAsNonRoot: true`, so a manifest that asks
for it without a `runAsUser` gets the container refused ("image has
non-numeric user"). The Helm chart sets runAsUser and was never affected;
anything else was. The tracker and relay images already said 65532:65532,
and these two now do too: both images report it, and their process runs as
uid and gid 65532.
Co-Authored-By: Claude Opus 5.5
---
apps/api/Dockerfile | 5 ++++-
apps/web/Dockerfile | 4 +++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile
index 3abaeca5..2d7bdacc 100644
--- a/apps/api/Dockerfile
+++ b/apps/api/Dockerfile
@@ -119,7 +119,10 @@ COPY --chown=nonroot:nonroot apps/api/scripts/migrationOutcome.mjs ./migrationOu
COPY --chown=nonroot:nonroot apps/api/scripts/migrate.mjs /app/db-tools/packages/db/migrate.mjs
COPY --chown=nonroot:nonroot apps/api/scripts/healthcheck.mjs ./healthcheck.mjs
-USER nonroot
+# Numeric, as in the tracker and relay images: `nonroot` is the same 65532 in
+# this distroless base, but the kubelet refuses to verify a user NAME against
+# `runAsNonRoot` ("image has non-numeric user") unless runAsUser is set.
+USER 65532:65532
EXPOSE 4000
# Memory tuning:
# --max-old-space-size=512 cap the V8 old-generation heap at 512 MB.
diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile
index 1f194c75..0395b3e5 100644
--- a/apps/web/Dockerfile
+++ b/apps/web/Dockerfile
@@ -72,7 +72,9 @@ WORKDIR /app
COPY --from=builder --chown=nonroot:nonroot /app/apps/web/.output ./.output
COPY --chown=nonroot:nonroot apps/web/scripts/healthcheck.mjs ./healthcheck.mjs
-USER nonroot
+# Numeric for the same reason as apps/api/Dockerfile: `runAsNonRoot` cannot
+# check a name.
+USER 65532:65532
EXPOSE 3000
# Memory tuning (see apps/api/Dockerfile for rationale).
# Web SSR retains compiled Vue templates / component state; without an
From 31470afc8cde9244fb384f4fe68bdff03231b52b Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:26 +0100
Subject: [PATCH 40/44] fix(ci): the release job reads its values from env and
creates the release with gh
`${{ steps.version.outputs.version }}` sat inside three `run:` scripts, and
an expression there is pasted into the script text before the shell reads
it. The version step already refuses anything but digits and dots, so this
was a second wall missing rather than an open door. The scripts now read
`$VERSION` from `env`.
The release itself came from softprops/action-gh-release, a third-party
action on the one job that holds a write token. `gh`, already on the
runner, does the same: `--notes` with the PR body is prepended to the
generated notes as the action's `body` was, and `--verify-tag` refuses to
run against a tag the step above did not push. actionlint (with its
shellcheck pass) and zizmor are clean.
Co-Authored-By: Claude Opus 5.5
---
.github/workflows/release-tag.yml | 44 +++++++++++++++++++++----------
1 file changed, 30 insertions(+), 14 deletions(-)
diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml
index 43b188f2..72e93426 100644
--- a/.github/workflows/release-tag.yml
+++ b/.github/workflows/release-tag.yml
@@ -81,41 +81,57 @@ jobs:
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "Extracted version: $VERSION"
+ # The version reaches the scripts below through `env`, never as
+ # `${{ }}` inside `run:`: an expression there is pasted into the
+ # script text before the shell sees it. The step above already
+ # refuses anything but digits and dots, so this is the second
+ # wall, not the first.
- name: Check if tag exists
id: check_tag
+ env:
+ VERSION: ${{ steps.version.outputs.version }}
run: |
# Quoted: `$GITHUB_OUTPUT` is a path, and an unquoted one
# word-splits on any space in the runner's temp directory.
# SC2086 flagged it, and the workflow that creates release
# tags is not the place to leave a redirection target to
# chance.
- if git rev-parse "${{ steps.version.outputs.version }}" >/dev/null 2>&1; then
+ if git rev-parse "$VERSION" >/dev/null 2>&1; then
echo "exists=true" >> "$GITHUB_OUTPUT"
- echo "Tag ${{ steps.version.outputs.version }} already exists"
+ echo "Tag $VERSION already exists"
else
echo "exists=false" >> "$GITHUB_OUTPUT"
fi
- name: Create and push tag
if: steps.check_tag.outputs.exists == 'false'
+ env:
+ VERSION: ${{ steps.version.outputs.version }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- git tag -a "${{ steps.version.outputs.version }}" -m "Release ${{ steps.version.outputs.version }}"
- git push origin "${{ steps.version.outputs.version }}"
- echo "✅ Created tag: ${{ steps.version.outputs.version }}"
+ git tag -a "$VERSION" -m "Release $VERSION"
+ git push origin "$VERSION"
+ echo "✅ Created tag: $VERSION"
+ # `gh`, already on the runner, rather than a third-party action:
+ # one dependency fewer on the one job that holds a write token.
+ # `--notes` is prepended to the generated notes, as the action's
+ # `body` was; `--verify-tag` refuses to run against a tag the step
+ # above did not push, where `gh` would otherwise create one.
- name: Create GitHub Release
if: steps.check_tag.outputs.exists == 'false'
- # v1 runs on a Node runtime GitHub no longer supports.
- uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
- with:
- tag_name: ${{ steps.version.outputs.version }}
- name: Release ${{ steps.version.outputs.version }}
- body: ${{ github.event.pull_request.body }}
- generate_release_notes: true
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ VERSION: ${{ steps.version.outputs.version }}
+ BODY: ${{ github.event.pull_request.body }}
+ run: |
+ gh release create "$VERSION" \
+ --repo "$GITHUB_REPOSITORY" \
+ --verify-tag \
+ --title "Release $VERSION" \
+ --notes "$BODY" \
+ --generate-notes
- name: Delete release branch
env:
@@ -127,7 +143,7 @@ jobs:
# Build and push the images by calling docker.yml directly.
#
# This is NOT redundant with docker.yml's own `release: published` trigger.
- # The Release above is created by action-gh-release using the default
+ # The Release above is created by `gh` using the default
# GITHUB_TOKEN, and GitHub does not raise workflow-triggering events for
# anything done with that token — the recursion guard. So the release event
# never reaches docker.yml, and before this job existed every automated
From dbb3a83e106722697864ba4f1d21a30987c828a1 Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:26 +0100
Subject: [PATCH 41/44] feat(helm): externalRedis.tls, for a Redis reached over
TLS
The chart always built `redis://host:port` for an external Redis. A managed
Redis that only takes TLS (most do) refused the connection, and one that
still accepted plain TCP carried the password and every key in clear.
`externalRedis.tls: true` hands the apps `rediss://`, which the API, the
tracker and the relay all speak. Off by default: a plain Redis on the same
private network is the common case, and its URL does not change.
check-render.sh asserts both sides and the README lists the value with the
other external Redis settings. helm lint and every render check pass.
Co-Authored-By: Claude Opus 5.5
---
deploy/helm/trackarr/README.md | 5 +++--
deploy/helm/trackarr/check-render.sh | 6 ++++++
deploy/helm/trackarr/templates/_env.tpl | 2 +-
deploy/helm/trackarr/values.yaml | 6 ++++++
4 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/deploy/helm/trackarr/README.md b/deploy/helm/trackarr/README.md
index ee4aac2f..814e5522 100644
--- a/deploy/helm/trackarr/README.md
+++ b/deploy/helm/trackarr/README.md
@@ -58,7 +58,7 @@ helm upgrade --install trackarr deploy/helm/trackarr \
| Component | Off with | Then set |
| --- | --- | --- |
| Postgres | `postgresql.enabled=false` | `externalDatabase.url` (and `externalDatabase.migrationsUrl`), or `externalDatabase.existingSecret` |
-| Valkey / Redis | `valkey.enabled=false` | `externalRedis.host`, optionally `externalRedis.existingSecret` |
+| Valkey / Redis | `valkey.enabled=false` | `externalRedis.host`, optionally `externalRedis.existingSecret`, and `externalRedis.tls=true` for a Redis reached over TLS |
| Object store | `rustfs.enabled=false` (the default) | nothing, unless `storage.driver=s3` — then `storage.s3.endpoint` and credentials for the external store. With `rustfs.enabled=true` the credentials are generated |
| Ingress | `ingress.enabled=false` | see below — nothing else is required, but check `trustProxy` |
| Web | `web.enabled=false` | — |
@@ -91,7 +91,8 @@ recommends anyway: Sentinel-style replication rather than sharding, because Redi
was measured at 0.60 of a core while serving 4 811 announces/s.
To keep Redis proper, set `valkey.enabled=false` and point `externalRedis` at
-your own.
+your own. A managed Redis usually takes TLS: `externalRedis.tls=true` hands the
+apps a `rediss://` URL, which the API, the tracker and the relay all speak.
**Object store — [RustFS](https://charts.rustfs.com).** The RustFS project's own
chart, and off by default: it does nothing unless `storage.driver: s3`. It is
diff --git a/deploy/helm/trackarr/check-render.sh b/deploy/helm/trackarr/check-render.sh
index f5f09b75..e913629e 100755
--- a/deploy/helm/trackarr/check-render.sh
+++ b/deploy/helm/trackarr/check-render.sh
@@ -121,6 +121,12 @@ assert_absent "aucun REDIS_PASSWORD quand il n'y en a pas" "name: REDIS_PASSWORD
assert_contains "la clé lue est REDIS_PASSWORD pour un Redis externe" "key: REDIS_PASSWORD" \
$HOST --set valkey.enabled=false --set externalRedis.host=10.0.0.5 \
--set externalRedis.existingSecret=my-redis
+# Un Redis externe joint en TLS : les trois apps reçoivent rediss://, et rien
+# ne change pour qui n'a pas posé la valeur.
+assert_contains "externalRedis.tls : les apps reçoivent rediss://" "rediss://10.0.0.5:6379" \
+ $HOST --set valkey.enabled=false --set externalRedis.host=10.0.0.5 --set externalRedis.tls=true
+assert_absent "externalRedis sans tls : pas de rediss://" "rediss://" \
+ $HOST --set valkey.enabled=false --set externalRedis.host=10.0.0.5
assert_fails_with "valkey off sans externalRedis.host" "set externalRedis.host" \
$HOST --set valkey.enabled=false
diff --git a/deploy/helm/trackarr/templates/_env.tpl b/deploy/helm/trackarr/templates/_env.tpl
index 0f1ba9e8..4aadd229 100644
--- a/deploy/helm/trackarr/templates/_env.tpl
+++ b/deploy/helm/trackarr/templates/_env.tpl
@@ -78,7 +78,7 @@ connection leaks to whoever borrows it next.
{{- end }}
{{- else if .Values.externalRedis.host }}
- name: REDIS_URL
- value: {{ printf "redis://%s:%v" .Values.externalRedis.host (.Values.externalRedis.port | default 6379) | quote }}
+ value: {{ printf "%s://%s:%v" (ternary "rediss" "redis" (default false .Values.externalRedis.tls)) .Values.externalRedis.host (.Values.externalRedis.port | default 6379) | quote }}
{{- if .Values.externalRedis.existingSecret }}
- name: REDIS_PASSWORD
valueFrom:
diff --git a/deploy/helm/trackarr/values.yaml b/deploy/helm/trackarr/values.yaml
index 1298f89e..10bbfe90 100644
--- a/deploy/helm/trackarr/values.yaml
+++ b/deploy/helm/trackarr/values.yaml
@@ -797,6 +797,12 @@ valkey:
externalRedis:
host: ""
port: 6379
+ # `true` for a Redis reached over TLS, as most managed offers are: the apps
+ # then get `rediss://`, which all three (API, tracker, relay) speak. Off by
+ # default, for the common case of a plain Redis on the same private network.
+ # Without it the password and every key crossed the network in clear, whatever
+ # the server accepted.
+ tls: false
# Bring your own Secret for the password. WHICH KEY IS READ DEPENDS ON THE
# CASE, which is a trap worth spelling out:
From 90e7c5e5debac55ff6269a7fdb2862e1582dc7cf Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:26 +0100
Subject: [PATCH 42/44] fix(helm): Valkey's init container gets requests and a
memory limit
The bundled Valkey's init container writes valkey.conf and the ACL file
before the server starts, and had no resources of its own, so it ran
BestEffort. In a namespace whose ResourceQuota covers memory, a pod with
such a container is rejected at admission unless a LimitRange fills the
gap. The subchart takes `initResources`: 10m and 16Mi requested, a 64Mi
limit. The real script, rendered from the chart, peaks at 14.6 MiB under
that limit.
Nothing had flagged it because trivy never looked at the chart: it skips a
chart whose charts/*.tgz are missing, as in any copy made from git, and
says so only in a warning.
Co-Authored-By: Claude Opus 5.5
---
deploy/helm/trackarr/values.yaml | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/deploy/helm/trackarr/values.yaml b/deploy/helm/trackarr/values.yaml
index 10bbfe90..88765e40 100644
--- a/deploy/helm/trackarr/values.yaml
+++ b/deploy/helm/trackarr/values.yaml
@@ -790,6 +790,13 @@ valkey:
resources:
requests: { cpu: 100m, memory: 1280Mi }
limits: { memory: 1536Mi }
+ # The init container, which only writes valkey.conf and the ACL file before
+ # Valkey starts. With no numbers of its own it ran BestEffort, and a namespace
+ # whose ResourceQuota covers memory rejects such a pod unless a LimitRange
+ # fills the gap.
+ initResources:
+ requests: { cpu: 10m, memory: 16Mi }
+ limits: { memory: 64Mi }
# Used when valkey.enabled is false. Point it at your own Redis or Valkey —
# including a Sentinel-fronted one, which is what doc/guide/high-availability.md
From f43cc5eabc1ccf9bc299985bb423ab5dc9c784ce Mon Sep 17 00:00:00 2001
From: dim145
Date: Sun, 25 Oct 2026 19:41:28 +0100
Subject: [PATCH 43/44] chore(security): record each arbitrated finding where
its scanner reads it
semgrep (two passes of rule packs), trivy (vulnerabilities, secrets and
misconfigurations, the Helm chart included), gitleaks (every commit),
gosec, hadolint, actionlint, zizmor, govulncheck and osv-scanner report
nothing on this tree. What they found that is not a defect is written down
where each tool reads it, with the reason beside it:
- inline: `nosemgrep` on 17 v-html (every one behind DOMPurify), on
escapers complete for their output, on regexes built from constants or
written by staff, on ports meant to be published and on connection
strings of local or private networks; `#nosec` on bounded integer
conversions and the loopback health checks; zizmor ignores on the pnpm
install lines and on the `./` reusable workflow (actionlint rejects
`$/`);
- Dockerfiles: Chainguard's free tier publishes no versioned tags, so the
spa and doc images keep `:latest` on its nginx, and both now say
`HEALTHCHECK NONE` rather than leave it unsaid;
- .trivyignore.yaml, loaded through trivy.yaml, scopes each exception to
its paths: no CPU limit in the chart (deliberate, now said above
web.resources), the render-time namespace, the registry allow-list, the
name REDIS_KEY_PREFIX, Valkey's subchart, and node-forge (no fix
exists, dev server only, lapses on 2027-01-31);
- osv-scanner.toml: the same node-forge entry and a false positive on
nuxt 4.6.2; .gitleaksignore: 29 fixtures and look-alikes;
.semgrepignore: the default list, which the file replaces, plus
.gitignore and prose.
Two greens of earlier passes were not checks: the published gosec image
analyses 0 lines of a go1.27 module and exits 0 (gosec built with Go 1.27
covers 7,700 lines), and trivy skipped the chart.
On this tree: typecheck, the 630 API and 1,245 web unit tests, the 486
integration tests, the tracker and relay under -race, helm lint and the
render checks, the six images, and the e2e suite (558 checks) pass.
Co-Authored-By: Claude Opus 5.5
---
.env.example | 2 +
.github/workflows/api-ci.yml | 21 +++--
.github/workflows/release-tag.yml | 5 +-
.github/workflows/web-ci.yml | 4 +-
.gitleaksignore | 50 ++++++++++++
.semgrepignore | 32 ++++++++
.trivyignore.yaml | 79 +++++++++++++++++++
apps/api/redis/client.ts | 2 +
apps/api/routes/api/rss/latest.get.ts | 2 +
apps/api/scripts/run-integration-tests.sh | 2 +
apps/api/utils/channels/smtp.ts | 2 +
apps/api/utils/channels/telegram.ts | 1 +
apps/api/utils/irc/format.ts | 2 +
apps/api/utils/releaseTags.ts | 2 +
apps/api/utils/savedSearchFanout.ts | 2 +
apps/api/utils/storage/fsDriver.ts | 2 +
apps/api/utils/uploadRules.ts | 6 ++
apps/relay/cmd/relay/main.go | 4 +-
apps/relay/internal/sse/handler.go | 3 +
apps/tracker/cmd/tracker/main.go | 2 +-
apps/tracker/internal/server/handler.go | 12 ++-
apps/tracker/internal/stats/stats.go | 2 +
apps/tracker/internal/udp/connid.go | 2 +-
apps/tracker/internal/udp/encode.go | 16 ++--
apps/tracker/internal/udp/parse.go | 6 +-
apps/web/Dockerfile.static | 9 +++
apps/web/app/components/DescriptionRender.vue | 2 +
apps/web/app/components/admin/Branding.vue | 8 ++
.../template/TemplateEditorModal.vue | 4 +-
apps/web/app/layouts/default.vue | 4 +
apps/web/app/pages/auth/login.vue | 2 +
apps/web/app/pages/auth/register.vue | 2 +
apps/web/app/pages/index.vue | 10 +++
apps/web/app/pages/rules.vue | 2 +
apps/web/app/pages/torrents/fiche.vue | 2 +-
apps/web/server/plugins/csp.ts | 2 +
apps/web/server/routes/api/[...path].ts | 6 +-
deploy/helm/trackarr/templates/_env.tpl | 2 +
deploy/helm/trackarr/values.yaml | 4 +
doc/Dockerfile | 9 +++
docker-compose.loadtest.yml | 6 +-
docker-compose.prod.yml | 26 +++---
osv-scanner.toml | 13 +++
pnpm-workspace.yaml | 2 +-
trivy.yaml | 4 +
45 files changed, 338 insertions(+), 44 deletions(-)
create mode 100644 .gitleaksignore
create mode 100644 .semgrepignore
create mode 100644 .trivyignore.yaml
create mode 100644 osv-scanner.toml
create mode 100644 trivy.yaml
diff --git a/.env.example b/.env.example
index 66a11488..1db7e42f 100644
--- a/.env.example
+++ b/.env.example
@@ -75,6 +75,8 @@ DB_DEBUG=false
# -----------------------------------------------------------------------------
# Redis
# -----------------------------------------------------------------------------
+# Local development default; a deployment points REDIS_URL at its own Redis (rediss:// for TLS).
+# nosemgrep: trailofbits.generic.redis-unencrypted-transport.redis-unencrypted-transport
REDIS_URL=redis://localhost:6379
# Redis authentication (REQUIRED for production)
diff --git a/.github/workflows/api-ci.yml b/.github/workflows/api-ci.yml
index 3afe8e85..761ecc37 100644
--- a/.github/workflows/api-ci.yml
+++ b/.github/workflows/api-ci.yml
@@ -74,10 +74,12 @@ jobs:
# stopped shipping it. The version is read from package.json's
# `packageManager` field, which stays the one place it is pinned — and
# pnpm 12 checks that pin against pnpm-lock.yaml on a frozen install.
+ # That pin is the lock zizmor's `adhoc-packages` cannot see, hence its
+ # ignore on each of these steps.
# `--allow-scripts`: pnpm's install script only hard-links its native
# binary, and npm is moving to blocking scripts it was not told about.
- name: Install pnpm
- run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')" # zizmor: ignore[adhoc-packages]
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -108,7 +110,8 @@ jobs:
POSTGRES_USER: parity
POSTGRES_DB: postgres
ports:
- - 5432:5432
+ # Service containers of a throwaway runner.
+ - 5432:5432 # nosemgrep: trailofbits.yaml.docker-compose.port-all-interfaces.port-all-interfaces
options: >-
--health-cmd "pg_isready -U parity"
--health-interval 5s
@@ -125,7 +128,7 @@ jobs:
node-version: 26
- name: Install pnpm
- run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')" # zizmor: ignore[adhoc-packages]
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -161,7 +164,8 @@ jobs:
POSTGRES_PASSWORD: tracker
POSTGRES_DB: trackarr
ports:
- - 5432:5432
+ # Service containers of a throwaway runner.
+ - 5432:5432 # nosemgrep: trailofbits.yaml.docker-compose.port-all-interfaces.port-all-interfaces
options: >-
--health-cmd "pg_isready -U tracker -d trackarr"
--health-interval 5s
@@ -170,7 +174,7 @@ jobs:
redis:
image: redis:8.10.2-alpine
ports:
- - 6379:6379
+ - 6379:6379 # nosemgrep: trailofbits.yaml.docker-compose.port-all-interfaces.port-all-interfaces
options: >-
--health-cmd "redis-cli ping"
--health-interval 5s
@@ -187,7 +191,7 @@ jobs:
RUSTFS_VOLUMES: /data
RUSTFS_ADDRESS: ':9000'
ports:
- - 9000:9000
+ - 9000:9000 # nosemgrep: trailofbits.yaml.docker-compose.port-all-interfaces.port-all-interfaces
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
@@ -199,7 +203,7 @@ jobs:
node-version: 26
- name: Install pnpm
- run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')" # zizmor: ignore[adhoc-packages]
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -246,7 +250,8 @@ jobs:
env:
DATABASE_URL: postgres://tracker:tracker@localhost:5432/trackarr
DB_SSL: 'false'
- REDIS_URL: redis://localhost:6379
+ # The job's own Redis service container.
+ REDIS_URL: redis://localhost:6379 # nosemgrep: trailofbits.generic.redis-unencrypted-transport.redis-unencrypted-transport
# Explicitly empty. A service container runs `redis-server` with no
# `--requirepass`, and the integration vitest config defaults this to
# a fake password when it is UNSET — which would make the client send
diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml
index 72e93426..b182020c 100644
--- a/.github/workflows/release-tag.yml
+++ b/.github/workflows/release-tag.yml
@@ -154,7 +154,10 @@ jobs:
publish-images:
needs: create-tag
if: needs.create-tag.outputs.created == 'true'
- uses: ./.github/workflows/docker.yml
+ # zizmor prefers GitHub's `$/` same-repository syntax (July 2026), but
+ # actionlint 1.7.12 rejects it as a malformed call. Switch once
+ # actionlint parses it; until then `./` resolves to this same commit.
+ uses: ./.github/workflows/docker.yml # zizmor: ignore[self-repository]
with:
version: ${{ needs.create-tag.outputs.version }}
# docker.yml pushes to ghcr and signs with cosign; a called workflow can
diff --git a/.github/workflows/web-ci.yml b/.github/workflows/web-ci.yml
index 94a51d83..e6bc494f 100644
--- a/.github/workflows/web-ci.yml
+++ b/.github/workflows/web-ci.yml
@@ -80,7 +80,7 @@ jobs:
node-version: 26
- name: Install pnpm
- run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')" # zizmor: ignore[adhoc-packages]
# `nuxt prepare` runs as apps/web's postinstall, so the generated
# `.nuxt` declarations — auto-imports, typed routes, component types —
@@ -114,7 +114,7 @@ jobs:
# `--allow-scripts`: pnpm's install script only hard-links its native
# binary, and npm is moving to blocking scripts it was not told about.
- name: Install pnpm
- run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')"
+ run: npm install --global --allow-scripts=pnpm "$(node -p 'require("./package.json").packageManager')" # zizmor: ignore[adhoc-packages]
- name: Install dependencies
run: pnpm install --frozen-lockfile
diff --git a/.gitleaksignore b/.gitleaksignore
new file mode 100644
index 00000000..8c9bc938
--- /dev/null
+++ b/.gitleaksignore
@@ -0,0 +1,50 @@
+# Every line below is a test fixture or a placeholder, not a secret: fake
+# passkeys (`abcdef0123…`), the throwaway `0123…` key the CI and the
+# integration script hand the API, test-only IP hash secrets, a made-up
+# did:key, two base64 strings standing in for legacy verifiers, a test that
+# checks a generated PEM *starts with* `-----BEGIN PRIVATE KEY-----`, and an
+# import list of two PBKDF2 constants the generic rule mistook for one.
+# Checked one by one on 2026-10-25 (gitleaks over all 696 commits). A new
+# fingerprint here needs the same look first.
+
+# .github/workflows/api-ci.yml
+1b5517e2cc107e3f9eddf41efac4c4ab61e42bd0:.github/workflows/api-ci.yml:generic-api-key:251
+# apps/api/scripts/run-integration-tests.sh
+61d3b4dd07cf7d133640a0ff361eada67869298b:apps/api/scripts/run-integration-tests.sh:generic-api-key:96
+# apps/api/test/integration/credentialRewrap.itest.ts
+a8d8ee96c37690a712eb278f441ef6612815e8de:apps/api/test/integration/credentialRewrap.itest.ts:generic-api-key:33
+a8d8ee96c37690a712eb278f441ef6612815e8de:apps/api/test/integration/credentialRewrap.itest.ts:generic-api-key:55
+# apps/api/test/integration/identityRecord.itest.ts
+6a27481799149ebaabb53acb0fd6c10168b4312d:apps/api/test/integration/identityRecord.itest.ts:generic-api-key:640
+# apps/api/test/messagingToken.test.ts
+f44bc361b27539d85a0f9c1dec1106c236076317:apps/api/test/messagingToken.test.ts:generic-api-key:15
+# apps/tracker/internal/config/config_test.go
+5f2fa7a746a288b0adc90a89258eb54329f237ba:apps/tracker/internal/config/config_test.go:generic-api-key:48
+d4c480bb4f89e1299054082efe229e57e4b0fb13:apps/tracker/internal/config/config_test.go:generic-api-key:49
+d4c480bb4f89e1299054082efe229e57e4b0fb13:apps/tracker/internal/config/config_test.go:generic-api-key:58
+d4c480bb4f89e1299054082efe229e57e4b0fb13:apps/tracker/internal/config/config_test.go:generic-api-key:80
+d4c480bb4f89e1299054082efe229e57e4b0fb13:apps/tracker/internal/config/config_test.go:generic-api-key:120
+d4c480bb4f89e1299054082efe229e57e4b0fb13:apps/tracker/internal/config/config_test.go:generic-api-key:139
+d4c480bb4f89e1299054082efe229e57e4b0fb13:apps/tracker/internal/config/config_test.go:generic-api-key:151
+d4c480bb4f89e1299054082efe229e57e4b0fb13:apps/tracker/internal/config/config_test.go:generic-api-key:167
+d4c480bb4f89e1299054082efe229e57e4b0fb13:apps/tracker/internal/config/config_test.go:generic-api-key:223
+# apps/tracker/internal/db/cache_test.go
+2938fd0a8e04ca235f75791460398610803c4eca:apps/tracker/internal/db/cache_test.go:generic-api-key:25
+# apps/tracker/internal/server/logging_test.go
+c3ed12a160fec40488f201b05a5660430517ba7a:apps/tracker/internal/server/logging_test.go:generic-api-key:27
+c3ed12a160fec40488f201b05a5660430517ba7a:apps/tracker/internal/server/logging_test.go:generic-api-key:64
+c3ed12a160fec40488f201b05a5660430517ba7a:apps/tracker/internal/server/logging_test.go:generic-api-key:99
+c3ed12a160fec40488f201b05a5660430517ba7a:apps/tracker/internal/server/logging_test.go:generic-api-key:108
+c3ed12a160fec40488f201b05a5660430517ba7a:apps/tracker/internal/server/logging_test.go:generic-api-key:120
+c3ed12a160fec40488f201b05a5660430517ba7a:apps/tracker/internal/server/logging_test.go:generic-api-key:129
+# apps/tracker/internal/udp/parse_test.go
+cd3622debb27cbd47d49842b37a78060aa5211d7:apps/tracker/internal/udp/parse_test.go:generic-api-key:107
+cd3622debb27cbd47d49842b37a78060aa5211d7:apps/tracker/internal/udp/parse_test.go:generic-api-key:130
+3e6d848cacaa4d57f0a6cc306beba442802e9954:apps/tracker/internal/udp/parse_test.go:generic-api-key:538
+# apps/web/test/identityKey.test.ts
+36f897023afec1dac417f138f5537bc1a873b02d:apps/web/test/identityKey.test.ts:private-key:121
+# deploy/helm/trackarr/check-render.sh
+ab215f4eff21d6d39269f809875b6203e41735b9:deploy/helm/trackarr/check-render.sh:generic-api-key:139
+ab215f4eff21d6d39269f809875b6203e41735b9:deploy/helm/trackarr/check-render.sh:generic-api-key:140
+# tests/security/authentication.test.ts
+ab71a8aa7bb3e5eaf4170b462d02b07a60cf847b:tests/security/authentication.test.ts:generic-api-key:18
diff --git a/.semgrepignore b/.semgrepignore
new file mode 100644
index 00000000..27d149f3
--- /dev/null
+++ b/.semgrepignore
@@ -0,0 +1,32 @@
+# A .semgrepignore REPLACES Semgrep's built-in list rather than adding to it,
+# so that list comes first, as documented
+# (https://docs.semgrep.dev/ignoring-files-folders-code).
+.git
+.svn
+.hg
+_darcs
+CVS
+build/
+vendor/
+dist/
+*.min.js
+.env/
+.tox/
+node_modules/
+.npm/
+.yarn/
+.venv/
+_opam/
+_build/
+_cargo/
+test/
+tests/
+testsuite/
+*_test.go
+
+# What git does not track is not ours to scan either.
+:include .gitignore
+
+# Prose, not code. The shell in a README is an example to read: a throwaway k3s
+# needs `--privileged`, a port-forwarded test LoadBalancer answers plain HTTP.
+*.md
diff --git a/.trivyignore.yaml b/.trivyignore.yaml
new file mode 100644
index 00000000..b0ac9a82
--- /dev/null
+++ b/.trivyignore.yaml
@@ -0,0 +1,79 @@
+# Accepted findings, each with its reason. trivy.yaml points trivy here when it
+# runs from the repository root, which is also what `paths` are relative to.
+# `paths` scope an entry to the files it was checked on; `expired_at` makes it
+# lapse so it gets looked at again. Dockerfile findings are not here but at
+# their line, next to the reason (apps/web/Dockerfile.static, doc/Dockerfile).
+
+vulnerabilities:
+ # node-forge (GHSA-86w9-cpqp-85rv, a.k.a. CVE-2026-33894 / GHSA-ppp5-5v6c-4jwp):
+ # RSA PKCS#1 v1.5 signature verification accepts extra nested DigestAlgorithm
+ # elements. No fixed release exists, 1.4.0 being both the latest and the last
+ # affected. It reaches the tree only through nitropack -> listhen, the dev
+ # server's self-signed-certificate helper, which never verifies a signature;
+ # no production image ships it (checked on 2026-10-25 against the api, web
+ # and spa images).
+ - id: CVE-2026-85393
+ expired_at: 2027-01-31
+ statement: node-forge, dev server only, no fixed release (see above)
+ - id: CVE-2026-33894
+ expired_at: 2027-01-31
+ statement: node-forge, dev server only, no fixed release (see above)
+ - id: GHSA-86w9-cpqp-85rv
+ expired_at: 2027-01-31
+ statement: node-forge, dev server only, no fixed release (see above)
+
+# The Helm chart, which trivy renders with its default values. It does so only
+# once the subcharts are vendored (`helm dependency update deploy/helm/trackarr`):
+# without charts/*.tgz it skips the whole chart with a warning and reports
+# nothing, which reads like a clean result.
+misconfigurations:
+ - id: KSV-0011
+ paths:
+ - "deploy/helm/trackarr/**"
+ statement: >-
+ No CPU limit, on purpose and everywhere in the chart: a CFS quota
+ throttles a burst even on an idle node. CPU requests and memory limits
+ are set (see the comment above web.resources in values.yaml).
+ - id: KSV-0110
+ paths:
+ - "deploy/helm/trackarr/**"
+ statement: >-
+ Render artifact. The templates leave the namespace to `helm install -n`;
+ trivy renders without one and reads that as `default`.
+ - id: KSV-0125
+ paths:
+ - "deploy/helm/trackarr/**"
+ statement: >-
+ A registry allow-list is the cluster's policy to set, not the chart's.
+ The images are the project's own (ghcr.io) and Valkey's official one.
+ - id: KSV-01010
+ paths:
+ - "deploy/helm/trackarr/templates/configmap.yaml"
+ statement: >-
+ Matched on the name REDIS_KEY_PREFIX, the namespace of the app's Redis
+ keys. Credentials all live in Secrets, which check-render.sh verifies.
+ - id: KSV-01010
+ paths:
+ - "deploy/helm/trackarr/charts/valkey/templates/configmap.yaml"
+ - "deploy/helm/trackarr/charts/valkey/templates/init_config.yaml"
+ statement: >-
+ Valkey's subchart. valkey.conf holds the maxmemory and persistence
+ settings; init.sh reads the credential from the mounted Secret at start
+ and writes only its SHA-256 to the ACL file.
+ - id: KSV-0109
+ paths:
+ - "deploy/helm/trackarr/charts/valkey/templates/init_config.yaml"
+ statement: >-
+ The same init.sh: what matched is the name of a shell variable that
+ holds what the mounted Secret contains, not a value.
+ - id: KSV-0020
+ paths:
+ - "deploy/helm/trackarr/charts/valkey/templates/*.yaml"
+ statement: >-
+ Valkey's subchart runs as 1000:1000. Moving it above 10000 changes the
+ owner of an existing data volume, an upgrade nobody has tested; the
+ chart's own images run as 65532.
+ - id: KSV-0021
+ paths:
+ - "deploy/helm/trackarr/charts/valkey/templates/*.yaml"
+ statement: Same as KSV-0020, for the group.
diff --git a/apps/api/redis/client.ts b/apps/api/redis/client.ts
index 0d1cb720..31a3d64c 100644
--- a/apps/api/redis/client.ts
+++ b/apps/api/redis/client.ts
@@ -6,6 +6,8 @@ import { readOptionalSecret } from '../utils/secrets';
* Supports authentication, TLS, and connection security with Docker secrets
*/
+// Development fallback; deployments pass REDIS_URL, rediss:// included.
+// nosemgrep: trailofbits.generic.redis-unencrypted-transport.redis-unencrypted-transport
const redisUrl = process.env.REDIS_URL || 'redis://localhost:6379';
const isProduction = process.env.NODE_ENV === 'production';
diff --git a/apps/api/routes/api/rss/latest.get.ts b/apps/api/routes/api/rss/latest.get.ts
index 03f5d800..9b70b42c 100644
--- a/apps/api/routes/api/rss/latest.get.ts
+++ b/apps/api/routes/api/rss/latest.get.ts
@@ -109,6 +109,8 @@ function buildRSSFeed(feed: RSSFeed): string {
// are independent. ES2021 `replaceAll` makes the literal-string
// intent explicit (no global-regex / per-char-class confusion).
const escapeXml = (str: string) =>
+ // Complete for XML: & first, then < > " '.
+ // nosemgrep: javascript.audit.detect-replaceall-sanitization.detect-replaceall-sanitization
str
.replaceAll('&', '&')
.replaceAll('<', '<')
diff --git a/apps/api/scripts/run-integration-tests.sh b/apps/api/scripts/run-integration-tests.sh
index 8e7b4a2c..beb6b715 100755
--- a/apps/api/scripts/run-integration-tests.sh
+++ b/apps/api/scripts/run-integration-tests.sh
@@ -34,6 +34,8 @@ S3_IMAGE=rustfs/rustfs:latest
NODE_IMAGE=node:26-alpine
DB_URL="postgres://tracker:tracker@${PG}:5432/trackarr"
RD_PASS=itest-redis-password
+# The test's own Redis container on a private network.
+# nosemgrep: trailofbits.generic.redis-unencrypted-transport.redis-unencrypted-transport
RD_URL="redis://${RD}:6379"
S3_URL="http://${S3}:9000"
S3_KEY=trackarritest
diff --git a/apps/api/utils/channels/smtp.ts b/apps/api/utils/channels/smtp.ts
index 4435d0a8..62635c27 100644
--- a/apps/api/utils/channels/smtp.ts
+++ b/apps/api/utils/channels/smtp.ts
@@ -56,6 +56,8 @@ async function getTransporter(server: SmtpServer) {
// interpolated into `href="…"` below, and an unescaped quote would end
// the attribute early and let the rest be read as markup.
function escapeHtml(s: string): string {
+ // Complete for HTML text and double-quoted attributes.
+ // nosemgrep: javascript.audit.detect-replaceall-sanitization.detect-replaceall-sanitization
return s
.replaceAll('&', '&')
.replaceAll('<', '<')
diff --git a/apps/api/utils/channels/telegram.ts b/apps/api/utils/channels/telegram.ts
index a6509e08..3b1c1ddd 100644
--- a/apps/api/utils/channels/telegram.ts
+++ b/apps/api/utils/channels/telegram.ts
@@ -32,6 +32,7 @@ interface TelegramUser {
// Telegram's HTML mode accepts (with `<`, `>`, `&`); the apostrophe
// needs none, the only attribute below being double-quoted.
function escapeHtml(s: string): string {
+ // nosemgrep: javascript.audit.detect-replaceall-sanitization.detect-replaceall-sanitization
return s
.replaceAll('&', '&')
.replaceAll('<', '<')
diff --git a/apps/api/utils/irc/format.ts b/apps/api/utils/irc/format.ts
index 3fe09e26..13f1856c 100644
--- a/apps/api/utils/irc/format.ts
+++ b/apps/api/utils/irc/format.ts
@@ -331,6 +331,8 @@ export function announcePattern(template: string): AnnouncePattern {
* shipped pattern instead of a lookalike.
*/
export function toJsRegExp(pattern: string): RegExp {
+ // Built by announcePattern from escaped literals and named groups, never typed in as a regex.
+ // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp
return new RegExp(pattern.replace(/\(\?P {
}
if (f.season != null && f.season !== (torrent.season ?? null)) return false;
if (f.episode != null && f.episode !== (torrent.episode ?? null)) return false;
+ // An integer year from the database, not a pattern.
+ // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp
if (f.year != null && !new RegExp(`(^|[^0-9])${f.year}([^0-9]|$)`).test(torrent.name)) return false;
if (f.uploaderId && f.uploaderId !== torrent.uploaderId) return false;
// A filter with no free text, no category, no tag and no id would match
diff --git a/apps/api/utils/storage/fsDriver.ts b/apps/api/utils/storage/fsDriver.ts
index e88df5b3..3f3b2434 100644
--- a/apps/api/utils/storage/fsDriver.ts
+++ b/apps/api/utils/storage/fsDriver.ts
@@ -57,6 +57,8 @@ export class FilesystemStorage implements ObjectStorage {
const baseReal = mustExist
? await realpath(this.baseDir)
: resolve(this.baseDir);
+ // Checked on the next line: anything resolving outside the base is refused.
+ // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal
const candidate = resolve(baseReal, key);
if (candidate !== baseReal && !candidate.startsWith(baseReal + sep)) {
throw new Error(`Refusing to address "${key}" outside ${baseReal}`);
diff --git a/apps/api/utils/uploadRules.ts b/apps/api/utils/uploadRules.ts
index 467d558e..37fb5564 100644
--- a/apps/api/utils/uploadRules.ts
+++ b/apps/api/utils/uploadRules.ts
@@ -310,6 +310,8 @@ export function evaluateUpload(
// have been rejected on size/NFO/etc.
if (snapshot.titleBlocklist) {
try {
+ // Staff-written on purpose; a slow pattern only costs the admin who wrote it (fail open, above).
+ // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp
const re = new RegExp(snapshot.titleBlocklist, 'i');
if (re.test(input.title)) {
return {
@@ -337,6 +339,8 @@ export function evaluateUpload(
const pattern = snapshot.effectiveCategoryPatterns[input.categoryId];
if (pattern) {
try {
+ // Staff-written on purpose; a slow pattern only costs the admin who wrote it (fail open, above).
+ // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp
const re = new RegExp(pattern, 'i');
if (!re.test(input.title)) {
return {
@@ -376,6 +380,8 @@ export function anchorPattern(raw: string): string {
export function validateAndAnchor(raw: string): string | null {
const candidate = anchorPattern(raw);
try {
+ // Staff-written on purpose: this is the validation that compiles it.
+ // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp
new RegExp(candidate, 'i');
return candidate;
} catch {
diff --git a/apps/relay/cmd/relay/main.go b/apps/relay/cmd/relay/main.go
index 954dde90..366e3ced 100644
--- a/apps/relay/cmd/relay/main.go
+++ b/apps/relay/cmd/relay/main.go
@@ -56,7 +56,7 @@ func runHealthcheck() int {
// boucle locale, donc seul le port compte.
port := addr[strings.LastIndex(addr, ":")+1:]
client := &http.Client{Timeout: 4 * time.Second}
- resp, err := client.Get("http://127.0.0.1:" + port + "/healthz")
+ resp, err := client.Get("http://127.0.0.1:" + port + "/healthz") // #nosec G704 -- boucle locale ; seul le port vient de l'environnement
if err != nil {
return 1
}
@@ -141,6 +141,8 @@ func main() {
mux.HandleFunc("/metrics", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain; version=0.0.4")
cfg := live.Get()
+ // Texte Prometheus fait de compteurs entiers : rien de la requête.
+ // nosemgrep: go.lang.security.audit.xss.no-direct-write-to-responsewriter.no-direct-write-to-responsewriter
_, _ = w.Write([]byte(
"# HELP relay_connections Open SSE connections on this node.\n" +
"# TYPE relay_connections gauge\n" +
diff --git a/apps/relay/internal/sse/handler.go b/apps/relay/internal/sse/handler.go
index 7ff95920..1f584f6a 100644
--- a/apps/relay/internal/sse/handler.go
+++ b/apps/relay/internal/sse/handler.go
@@ -139,6 +139,9 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if err != nil {
continue
}
+ // Un tableau JSON dans un flux text/event-stream (nosniff posé par
+ // le serveur) : du JSON, pas du balisage.
+ // nosemgrep: go.lang.security.audit.xss.no-fprintf-to-responsewriter.no-fprintf-to-responsewriter
if _, err := fmt.Fprintf(w, "data: %s\n\n", encoded); err != nil {
return
}
diff --git a/apps/tracker/cmd/tracker/main.go b/apps/tracker/cmd/tracker/main.go
index 06b249d8..59ce2922 100644
--- a/apps/tracker/cmd/tracker/main.go
+++ b/apps/tracker/cmd/tracker/main.go
@@ -187,7 +187,7 @@ func runHealthcheck() int {
url := "http://127.0.0.1:" + port + "/health"
client := &http.Client{Timeout: 4 * time.Second}
- resp, err := client.Get(url)
+ resp, err := client.Get(url) // #nosec G704 -- always 127.0.0.1; only the port comes from the environment
if err != nil {
return 1
}
diff --git a/apps/tracker/internal/server/handler.go b/apps/tracker/internal/server/handler.go
index 07b2d2ab..4661c1ac 100644
--- a/apps/tracker/internal/server/handler.go
+++ b/apps/tracker/internal/server/handler.go
@@ -260,6 +260,8 @@ func (s *Server) handleAnnounce(w http.ResponseWriter, r *http.Request) {
}
body := buildAnnounceResponse(out.Seeders, out.Leechers, out.Interval, out.MinInterval, out.Peers, req.Compact, req.PeerID, req.NumWant)
+ // Bencode, served as text/plain with nosniff (noSniff): not markup.
+ // nosemgrep: go.lang.security.audit.xss.no-direct-write-to-responsewriter.no-direct-write-to-responsewriter
_, _ = w.Write(body)
}
@@ -917,7 +919,7 @@ func (s *Server) ProcessAnnounce(ctx context.Context, req *announce.Request, cli
ctx, torrentID, user.ID, now, time.UnixMilli(prev.UpdatedAt), maxSeedTimeCredit,
); err == nil && secs > 0 {
s.bgTasks.Add(1)
- go s.recordSeedTime(user.ID, torrentID, infoHashHex, int32(secs))
+ go s.recordSeedTime(user.ID, torrentID, infoHashHex, int32(secs)) // #nosec G115 -- capped at maxSeedTimeCredit (two intervals) by ClaimSeedTime
} else if err != nil {
slog.Warn("claim seed time", "info_hash", infoHashHex, "err", err)
}
@@ -1349,6 +1351,8 @@ func (s *Server) handleScrape(w http.ResponseWriter, r *http.Request) {
Completed: completed,
})
}
+ // Bencode, served as text/plain with nosniff (noSniff): not markup.
+ // nosemgrep: go.lang.security.audit.xss.no-direct-write-to-responsewriter.no-direct-write-to-responsewriter
_, _ = w.Write(scrapeResponse(stats))
}
@@ -1379,6 +1383,8 @@ func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) {
status = "degraded"
}
body := `{"status":"` + status + `","db":` + boolStr(dbOK) + `,"redis":` + boolStr(redisOK) + `}`
+ // Fixed JSON built from two booleans: nothing from the request.
+ // nosemgrep: go.lang.security.audit.xss.no-direct-write-to-responsewriter.no-direct-write-to-responsewriter
_, _ = w.Write([]byte(body))
}
@@ -1476,5 +1482,7 @@ func (s *Server) clientIP(r *http.Request) string {
func writeFailure(w http.ResponseWriter, reason string) {
w.WriteHeader(http.StatusOK) // BT trackers MUST return 200 with bencode failure
- _, _ = w.Write(bencode.FailureResponse(reason))
+ // Bencode, served as text/plain with nosniff (noSniff): not markup.
+ // nosemgrep: go.lang.security.audit.xss.no-direct-write-to-responsewriter.no-direct-write-to-responsewriter
+ _, _ = w.Write(bencode.FailureResponse(reason)) // #nosec G705 -- bencode in text/plain with nosniff
}
diff --git a/apps/tracker/internal/stats/stats.go b/apps/tracker/internal/stats/stats.go
index c46f4cf2..1e75e1b5 100644
--- a/apps/tracker/internal/stats/stats.go
+++ b/apps/tracker/internal/stats/stats.go
@@ -358,6 +358,8 @@ func (a *Accumulator) Flush(ctx context.Context) (int, error) {
// Le tri sert à ce que deux versements concurrents, s'ils se recouvraient,
// prennent leurs verrous de ligne dans le même ordre.
func (a *Accumulator) pendingIDs(ctx context.Context) ([]string, error) {
+ // Filled by the HSCAN loop below before anything ranges over it.
+ // nosemgrep: trailofbits.go.iterate-over-empty-map.iterate-over-empty-map
seen := make(map[string]struct{})
for _, key := range []string{a.upKey, a.downKey} {
var cursor uint64
diff --git a/apps/tracker/internal/udp/connid.go b/apps/tracker/internal/udp/connid.go
index 2c6986c9..779e3931 100644
--- a/apps/tracker/internal/udp/connid.go
+++ b/apps/tracker/internal/udp/connid.go
@@ -90,7 +90,7 @@ func (i *ConnIDIssuer) derive(ip net.IP, minute int64) uint64 {
// in-memory layouts (4-byte vs 4-in-16) hashes the same way.
mac.Write(ipBytes(ip))
var minBuf [8]byte
- binary.BigEndian.PutUint64(minBuf[:], uint64(minute))
+ binary.BigEndian.PutUint64(minBuf[:], uint64(minute)) // #nosec G115 -- bytes fed to the HMAC; the sign does not matter
mac.Write(minBuf[:])
sum := mac.Sum(nil)
id := binary.BigEndian.Uint64(sum[0:8]) ^ binary.BigEndian.Uint64(sum[8:16])
diff --git a/apps/tracker/internal/udp/encode.go b/apps/tracker/internal/udp/encode.go
index 907d6656..50ef1a22 100644
--- a/apps/tracker/internal/udp/encode.go
+++ b/apps/tracker/internal/udp/encode.go
@@ -46,9 +46,11 @@ func EncodeAnnounceResponse(
out = out[:announceRespHdr]
binary.BigEndian.PutUint32(out[0:4], ActionAnnounce)
binary.BigEndian.PutUint32(out[4:8], transactionID)
- binary.BigEndian.PutUint32(out[8:12], uint32(interval))
- binary.BigEndian.PutUint32(out[12:16], uint32(leechers))
- binary.BigEndian.PutUint32(out[16:20], uint32(seeders))
+ // The interval is configuration and the two counts are peers in one swarm:
+ // none is negative, none comes near 2^32.
+ binary.BigEndian.PutUint32(out[8:12], uint32(interval)) // #nosec G115 -- see above
+ binary.BigEndian.PutUint32(out[12:16], uint32(leechers)) // #nosec G115 -- see above
+ binary.BigEndian.PutUint32(out[16:20], uint32(seeders)) // #nosec G115 -- see above
written := 0
for _, p := range peerList {
@@ -104,9 +106,11 @@ func EncodeScrapeResponse(out []byte, transactionID uint32, stats []ScrapeStat)
binary.BigEndian.PutUint32(out[4:8], transactionID)
for i, s := range stats {
off := scrapeRespHdr + scrapeEntrySize*i
- binary.BigEndian.PutUint32(out[off+0:off+4], uint32(s.Seeders))
- binary.BigEndian.PutUint32(out[off+4:off+8], uint32(s.Completed))
- binary.BigEndian.PutUint32(out[off+8:off+12], uint32(s.Leechers))
+ // Counts of one torrent's peers and snatches: never negative, nowhere
+ // near 2^32, and BEP 15 fixes the field at 32 bits anyway.
+ binary.BigEndian.PutUint32(out[off+0:off+4], uint32(s.Seeders)) // #nosec G115 -- see above
+ binary.BigEndian.PutUint32(out[off+4:off+8], uint32(s.Completed)) // #nosec G115 -- see above
+ binary.BigEndian.PutUint32(out[off+8:off+12], uint32(s.Leechers)) // #nosec G115 -- see above
}
return out
}
diff --git a/apps/tracker/internal/udp/parse.go b/apps/tracker/internal/udp/parse.go
index 73b04a60..0f570266 100644
--- a/apps/tracker/internal/udp/parse.go
+++ b/apps/tracker/internal/udp/parse.go
@@ -147,13 +147,13 @@ func ParseAnnounce(data []byte) (*AnnounceRequestUDP, error) {
r := &AnnounceRequestUDP{
ConnectionID: binary.BigEndian.Uint64(data[0:8]),
TransactionID: binary.BigEndian.Uint32(data[12:16]),
- Downloaded: int64(binary.BigEndian.Uint64(data[56:64])),
+ Downloaded: int64(binary.BigEndian.Uint64(data[56:64])), // #nosec G115 -- a wrapped negative is floored by nonNeg in ToAnnounceRequest
Left: clampLeft(binary.BigEndian.Uint64(data[64:72])),
- Uploaded: int64(binary.BigEndian.Uint64(data[72:80])),
+ Uploaded: int64(binary.BigEndian.Uint64(data[72:80])), // #nosec G115 -- a wrapped negative is floored by nonNeg in ToAnnounceRequest
Event: binary.BigEndian.Uint32(data[80:84]),
IPv4: binary.BigEndian.Uint32(data[84:88]),
Key: binary.BigEndian.Uint32(data[88:92]),
- NumWant: int32(binary.BigEndian.Uint32(data[92:96])),
+ NumWant: int32(binary.BigEndian.Uint32(data[92:96])), // #nosec G115 -- BEP 15 num_want IS a signed int32 (0xFFFFFFFF = -1, "default"); clamped to [0,100] later
Port: binary.BigEndian.Uint16(data[96:98]),
}
// action sanity — caller already routes by action, but if the
diff --git a/apps/web/Dockerfile.static b/apps/web/Dockerfile.static
index 85319086..4f481aa3 100644
--- a/apps/web/Dockerfile.static
+++ b/apps/web/Dockerfile.static
@@ -1,4 +1,6 @@
# syntax=docker/dockerfile:1.28
+# hadolint global ignore=DL3007
+# (the one `:latest` in this file is Chainguard's: see the runner stage)
# Trackarr web — static SPA build, distroless nginx runtime.
#
# This image is the no-SSR alternative to apps/web/Dockerfile. Memory
@@ -81,6 +83,9 @@ RUN --mount=type=cache,target=/app/apps/web/node_modules/.cache/nuxt/fonts,shari
# - Reads its config from /etc/nginx/nginx.conf
# - Serves /usr/share/nginx/html
# -----------------------------------------------------------------------------
+# `:latest` is the only tag Chainguard's free tier publishes (the image already
+# runs as 65532).
+# trivy:ignore:AVD-DS-0001
FROM cgr.dev/chainguard/nginx:latest AS runner
# nginx config (SPA fallback, gzip, asset caching, /healthz)
@@ -115,6 +120,10 @@ STOPSIGNAL SIGQUIT
# La sonde revient donc à l'orchestrateur, qui sait le faire depuis l'extérieur :
# `readinessProbe: httpGet: { path: /healthz }` côté Kubernetes, ou un
# `healthcheck:` dans le compose si l'on veut la garder ici.
+#
+# `HEALTHCHECK NONE` le dit aux analyseurs (trivy DS-0026) sans rien changer :
+# l'image de base n'en déclare aucun.
+HEALTHCHECK NONE
# The Chainguard image's default ENTRYPOINT runs `nginx -g 'daemon off;'`
# from the right user — no overrides needed.
diff --git a/apps/web/app/components/DescriptionRender.vue b/apps/web/app/components/DescriptionRender.vue
index 44ce2d72..fc057965 100644
--- a/apps/web/app/components/DescriptionRender.vue
+++ b/apps/web/app/components/DescriptionRender.vue
@@ -7,6 +7,8 @@
WysiwygEditor's preview mode, the upload/edit pages' preview
panels — should route through this component so the rendered
output is byte-for-byte the same everywhere. -->
+
+
+
+
+
+
{{ form.statusBadgeText || $t('home.live') }}
+
+
+
+
{{ $t('components.templateEditor.previewTooLarge') }}
-
-
+
+
{{ $t('components.templateEditor.previewEmpty') }}
diff --git a/apps/web/app/layouts/default.vue b/apps/web/app/layouts/default.vue
index cfd9a211..6ab2b2d4 100644
--- a/apps/web/app/layouts/default.vue
+++ b/apps/web/app/layouts/default.vue
@@ -54,6 +54,8 @@
/>
+
+
+
+
diff --git a/apps/web/app/pages/auth/login.vue b/apps/web/app/pages/auth/login.vue
index cd564b70..9daf363d 100644
--- a/apps/web/app/pages/auth/login.vue
+++ b/apps/web/app/pages/auth/login.vue
@@ -18,6 +18,8 @@
class="text-accent-fg text-4xl"
/>
+
+
+
+
+
+
ZERO KNOWLEDGE
+
+
+
+
M{{ i + 1 }}
+
+
+
+
{{ $t('rules.empty') }}
+
+
diff --git a/apps/web/app/pages/torrents/fiche.vue b/apps/web/app/pages/torrents/fiche.vue
index a2059281..91d6c7dd 100644
--- a/apps/web/app/pages/torrents/fiche.vue
+++ b/apps/web/app/pages/torrents/fiche.vue
@@ -1199,7 +1199,7 @@ onMounted(() => {
diff --git a/apps/web/server/plugins/csp.ts b/apps/web/server/plugins/csp.ts
index fffa0d20..5beb920a 100644
--- a/apps/web/server/plugins/csp.ts
+++ b/apps/web/server/plugins/csp.ts
@@ -120,6 +120,8 @@ export default defineNitroPlugin((nitro) => {
const stamp = (chunk: string) =>
chunk
+ // The nonce is randomBytes(16) drawn for this response, not input.
+ // nosemgrep: javascript.lang.security.audit.unknown-value-with-script-tag.unknown-value-with-script-tag
.replace(INLINE_SCRIPT, `