fix(sicherheit): Next 16.4.2 und Prisma 7.10.1

Next.js bis 16.4.0 hat zwei kritische Lücken (RCE in der Bildoptimierung mit SVG und in use cache) und eine hohe (DoS über Server Actions). Prisma 7.10.1 hebt mysql2 und deepmerge-ts über bekannte Lücken. Volle Prüfung grün; dazu der Vorlagen-Ablauf mit mehr Zeit, weil sein Dry-Run wirklich gegen den Testhost plant.

Refs #020

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 14:06:57 +02:00
co-authored by Claude Opus 5.5
parent a9ea35cab5
commit 420aca3994
6 changed files with 161 additions and 152 deletions
+2
View File
@@ -20,6 +20,8 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/lang/de/).
### Entfernt ### Entfernt
### Sicherheit ### Sicherheit
- Next.js 16.4.0 → 16.4.2: zwei kritische Lücken (Remote Code Execution in der Bildoptimierung mit SVG und in `use cache`) und eine hohe (DoS über Server Actions); ProxDeploy nutzte die betroffenen Funktionen nicht, der Bild-Endpunkt ist aber standardmäßig erreichbar
- Prisma 7.10.0 → 7.10.1: hebt `mysql2` und `deepmerge-ts` über bekannte Lücken (nur im Prisma-CLI, nicht zur Laufzeit)
## [0.6.1] – 2026-10-12 ## [0.6.1] – 2026-10-12
+5 -1
View File
@@ -57,7 +57,7 @@ cli/ CLI in Go; nur REST-API. Typen aus cli/api/openapi.json
## Werkzeuge und Versionen ## Werkzeuge und Versionen
Node 24 über nvm (`export NVM_DIR="$HOME/.nvm"; . "$NVM_DIR/nvm.sh"`), pnpm 12. Exakt gepinnt: Node 24 über nvm (`export NVM_DIR="$HOME/.nvm"; . "$NVM_DIR/nvm.sh"`), pnpm 12. Exakt gepinnt:
`next@16.4.0`, `react@19.3.0`, `prisma`/`@prisma/client`/`@prisma/adapter-pg` **`7.10.0`** `next@16.4.2`, `react@19.3.0`, `prisma`/`@prisma/client`/`@prisma/adapter-pg` **`7.10.1`**
(der `latest`-Tag von prisma zeigt auf einen 8.0-RC), `vitest@5.0.1`, `@playwright/test@1.63.0`, (der `latest`-Tag von prisma zeigt auf einen 8.0-RC), `vitest@5.0.1`, `@playwright/test@1.63.0`,
`pino@10.4.0`. Obergrenzen: **eslint 9.x** (eslint-plugin-react aus eslint-config-next kann 10 nicht), `pino@10.4.0`. Obergrenzen: **eslint 9.x** (eslint-plugin-react aus eslint-config-next kann 10 nicht),
**typescript ~6.0.3** (typescript-eslint 8 erlaubt < 6.1). **typescript ~6.0.3** (typescript-eslint 8 erlaubt < 6.1).
@@ -67,6 +67,10 @@ CLI: **Go 1.27.2** ohne sudo unter `~/.local/go` (`export PATH="$HOME/.local/go/
`go.yaml.in/yaml/v3 3.0.5`, `oapi-codegen 2.8.0` (als `go tool`). Antwortschemas der API stehen in `go.yaml.in/yaml/v3 3.0.5`, `oapi-codegen 2.8.0` (als `go tool`). Antwortschemas der API stehen in
`src/lib/schemas/api.ts`; nach einer Änderung `pnpm openapi` und `go generate ./...` in `cli/`. `src/lib/schemas/api.ts`; nach einer Änderung `pnpm openapi` und `go generate ./...` in `cli/`.
**Sicherheitsupdates** gehen vor die Regel „mindestens zwei Wochen abgelagert“: mit bekannter
kritischer Lücke kein Release (`pnpm audit --prod` vor jedem Tag; Next 16.4.0 → 16.4.2 und Prisma
7.10.0 → 7.10.1 am 2026-10-23 aus diesem Grund).
Next 16: `proxy.ts` statt middleware; `cookies()`, `headers()`, `params`, `searchParams` sind async. Next 16: `proxy.ts` statt middleware; `cookies()`, `headers()`, `params`, `searchParams` sind async.
Prisma 7: Client aus `@/generated/prisma/client`, Enum-Werte aus `@/generated/prisma/enums`, Zugriff Prisma 7: Client aus `@/generated/prisma/client`, Enum-Werte aus `@/generated/prisma/enums`, Zugriff
über den Lazy-Proxy `src/lib/db.ts`. über den Lazy-Proxy `src/lib/db.ts`.
+25 -15
View File
@@ -55,17 +55,22 @@ Compose startet `postgres`, spielt mit `migrate` die Datenbank ein und startet d
### In einem Debian-LXC auf dem Proxmox-Host ### In einem Debian-LXC auf dem Proxmox-Host
Auf dem Proxmox-Host als root – Paket und Skripte kommen aus dem
[Release](https://git.wilde-server.de/florian.wilde/proxdeploy/releases):
```bash ```bash
scripts/paket-bauen.sh 0.6.0 --tar # im Repository: proxdeploy-0.6.0.tar.gz v=1.0.0; basis=https://git.wilde-server.de/florian.wilde/proxdeploy/releases/download/v$v
scp proxdeploy-0.6.0.tar.gz deploy/install-lxc.sh deploy/im-container.sh root@pve01:/root/ for f in install-lxc.sh im-container.sh proxdeploy-$v.tar.gz SHA256SUMS; do curl -fsSLO "$basis/$f"; done
ssh root@pve01 ./install-lxc.sh --paket proxdeploy-0.6.0.tar.gz --url https://proxdeploy.example sha256sum -c --ignore-missing SHA256SUMS && chmod +x install-lxc.sh
./install-lxc.sh --paket proxdeploy-$v.tar.gz --url https://proxdeploy.example
``` ```
Der Installer legt einen unprivilegierten Debian-13-Container an (DHCP auf `vmbr0`; `--ip`, `--gw`, Der Installer legt einen unprivilegierten Debian-13-Container an (DHCP auf `vmbr0`; `--ip`, `--gw`,
`--vlan`, `--storage`, `--ctid` u. a. siehe `--help`), installiert Node.js 24 (Prüfsumme geprüft) und `--vlan`, `--storage`, `--ctid` u. a. siehe `--help`), installiert Node.js 24 (Prüfsumme geprüft) und
PostgreSQL, richtet systemd-Dienste ein und zeigt am Ende Adresse und das Passwort des ersten Admins. PostgreSQL, richtet systemd-Dienste ein und zeigt am Ende Adresse und das Passwort des ersten Admins.
Aktualisieren mit `./install-lxc.sh --aktualisieren <ctid> --paket proxdeploy-0.6.1.tar.gz` – die Aktualisieren mit `./install-lxc.sh --aktualisieren <ctid> --paket proxdeploy-<neu>.tar.gz` – die
letzten drei Fassungen bleiben unter `/opt/proxdeploy/versionen/`. letzten drei Fassungen bleiben unter `/opt/proxdeploy/versionen/`. Ein eigenes Paket aus dem
Repository baut `scripts/paket-bauen.sh <version> --tar`.
## Erste Schritte ## Erste Schritte
@@ -94,6 +99,13 @@ Das API-Token braucht eine eigene Rolle; die Befehle stehen in
`proxdeploy` ist ein einzelnes Binary (Linux, macOS, Windows; amd64 und arm64) und spricht nur die `proxdeploy` ist ein einzelnes Binary (Linux, macOS, Windows; amd64 und arm64) und spricht nur die
REST-API – dieselbe wie die Web-GUI, mit denselben Phasentexten. REST-API – dieselbe wie die Web-GUI, mit denselben Phasentexten.
```bash
# Linux amd64 – andere Plattformen: siehe Release (darwin, windows, arm64)
curl -fsSL -o /usr/local/bin/proxdeploy \
https://git.wilde-server.de/florian.wilde/proxdeploy/releases/download/v1.0.0/proxdeploy-1.0.0-linux-amd64
chmod +x /usr/local/bin/proxdeploy
```
```bash ```bash
proxdeploy login https://proxdeploy.example # fragt Benutzer und Passwort, speichert ein Token proxdeploy login https://proxdeploy.example # fragt Benutzer und Passwort, speichert ein Token
proxdeploy servers proxdeploy servers
@@ -191,17 +203,15 @@ OIDC_GRUPPE_OPERATOR=proxdeploy-operators
## Stand ## Stand
Version und Änderungen stehen im [CHANGELOG](CHANGELOG.md), der Plan in **1.0.0** – alle Etappen der Vorgabe umgesetzt. Änderungen stehen im [CHANGELOG](CHANGELOG.md), der
[docs/architektur.md](docs/architektur.md), die Aufgaben in [docs/issues/](docs/issues/README.md). Plan in [docs/architektur.md](docs/architektur.md), die Aufgaben in [docs/issues/](docs/issues/README.md).
| Etappe | Inhalt | Stand | | Geprüft | |
|---|---|---| |---|---|
| 1 · v0.1.0 | Server-Verwaltung, Fingerprint-Pinning, Verbindungstest mit Fähigkeitserkennung | ✓ fertig, auf PVE 9.2 geprüft | | Proxmox VE 9.x | **Feldtest auf PVE 9.2**: VMs und LXC mit Debian 12/13 und Ubuntu 22.04/24.04/26.04, mit und ohne SSH zum Node ([#020](docs/issues/020-feldtest.md)) |
| 2 · v0.2.0 | Katalog, Template-Bau, Debian-13-VM, Live-Fortschritt, Assistent | ✓ fertig, auf PVE 9.2 geprüft | | Proxmox VE 8.x | im Code unterstützt (Rechte, API-Wege je Version gegen nachgebaute Server getestet), **nicht im Feldtest** |
| 3 · v0.3.0 | LXC, Ubuntu, Profile, Vorlagen, Profile im Template, SSH-Schlüssel, Template-Bau ohne SSH | ✓ fertig, auf PVE 9.2 geprüft | | Anmeldung | lokale Benutzer im Betrieb geprüft; OIDC gegen einen nachgebauten Identity Provider getestet, noch nicht gegen einen echten |
| 4 · v0.4.0 | CLI `proxdeploy` (Go), API-Tokens | ✓ fertig, auf PVE 9.2 geprüft | | Betrieb | Docker Compose lokal, LXC-Installer samt Update auf PVE 9.2 |
| 5 · v0.5.0 | Verlauf, Aufräumen, Audit-Log, Benutzer, OIDC | ✓ fertig (Aufräumen auf PVE 9.2 geprüft, OIDC gegen Mock-IdP) |
| 6 · v0.6.0 | Branding, README mit Screenshots, Docker Compose, LXC-Installer | ✓ fertig, Installer auf PVE 9.2 geprüft |
## Entwicklung ## Entwicklung
+5 -5
View File
@@ -35,12 +35,12 @@
"@fontsource-variable/jetbrains-mono": "^5.3.0", "@fontsource-variable/jetbrains-mono": "^5.3.0",
"@fontsource-variable/space-grotesk": "^5.3.0", "@fontsource-variable/space-grotesk": "^5.3.0",
"@node-rs/argon2": "^2.2.1", "@node-rs/argon2": "^2.2.1",
"@prisma/adapter-pg": "7.10.0", "@prisma/adapter-pg": "7.10.1",
"@prisma/client": "7.10.0", "@prisma/client": "7.10.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"jose": "^6.2.12", "jose": "^6.2.12",
"lucide-react": "1.47.0", "lucide-react": "1.47.0",
"next": "16.4.0", "next": "16.4.2",
"openid-client": "6.8.8", "openid-client": "6.8.8",
"pg": "^8.23.0", "pg": "^8.23.0",
"pg-boss": "12.37.1", "pg-boss": "12.37.1",
@@ -67,13 +67,13 @@
"dotenv": "^17.4.2", "dotenv": "^17.4.2",
"esbuild": "^0.27.0", "esbuild": "^0.27.0",
"eslint": "^9.39.5", "eslint": "^9.39.5",
"eslint-config-next": "16.4.0", "eslint-config-next": "16.4.2",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"husky": "^9.1.7", "husky": "^9.1.7",
"lint-staged": "^17.5.1", "lint-staged": "^17.5.1",
"opentype.js": "1.3.5", "opentype.js": "1.3.5",
"prettier": "^3.9.9", "prettier": "^3.9.9",
"prisma": "7.10.0", "prisma": "7.10.1",
"tailwindcss": "^4.3.3", "tailwindcss": "^4.3.3",
"tsx": "^4.23.13", "tsx": "^4.23.13",
"typescript": "~6.0.3", "typescript": "~6.0.3",
+121 -130
View File
@@ -176,11 +176,11 @@ importers:
specifier: ^2.2.1 specifier: ^2.2.1
version: 2.2.2 version: 2.2.2
'@prisma/adapter-pg': '@prisma/adapter-pg':
specifier: 7.10.0 specifier: 7.10.1
version: 7.10.0 version: 7.10.1
'@prisma/client': '@prisma/client':
specifier: 7.10.0 specifier: 7.10.1
version: 7.10.0(prisma@7.10.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3))(typescript@6.0.3) version: 7.10.1(prisma@7.10.1(@types/node@24.19.2)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3))(typescript@6.0.3)
clsx: clsx:
specifier: ^2.1.1 specifier: ^2.1.1
version: 2.1.1 version: 2.1.1
@@ -191,8 +191,8 @@ importers:
specifier: 1.47.0 specifier: 1.47.0
version: 1.47.0(react@19.3.0) version: 1.47.0(react@19.3.0)
next: next:
specifier: 16.4.0 specifier: 16.4.2
version: 16.4.0(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@24.19.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) version: 16.4.2(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@24.19.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
openid-client: openid-client:
specifier: 6.8.8 specifier: 6.8.8
version: 6.8.8 version: 6.8.8
@@ -267,8 +267,8 @@ importers:
specifier: ^9.39.5 specifier: ^9.39.5
version: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) version: 9.39.5(jiti@2.7.0)(supports-color@7.2.0)
eslint-config-next: eslint-config-next:
specifier: 16.4.0 specifier: 16.4.2
version: 16.4.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) version: 16.4.2(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
eslint-config-prettier: eslint-config-prettier:
specifier: ^10.1.8 specifier: ^10.1.8
version: 10.1.8(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) version: 10.1.8(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))
@@ -285,8 +285,8 @@ importers:
specifier: ^3.9.9 specifier: ^3.9.9
version: 3.9.10 version: 3.9.10
prisma: prisma:
specifier: 7.10.0 specifier: 7.10.1
version: 7.10.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3) version: 7.10.1(@types/node@24.19.2)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3)
tailwindcss: tailwindcss:
specifier: ^4.3.3 specifier: ^4.3.3
version: 4.3.3 version: 4.3.3
@@ -1054,60 +1054,60 @@ packages:
'@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4
'@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4
'@next/env@16.4.0': '@next/env@16.4.2':
resolution: {integrity: sha512-pyLlT5oafGlX8X7xjgGNXz5dNIDSxREm+qD6i9VLSZiZFopA/XWl8NM/KPmLx/8EG/++c49iid3gNWSQW1+2dQ==} resolution: {integrity: sha512-nTUTFH7G5/J/fmpkjVLegOkqyKOP0CEsJcMsyO4UCYeN1su+YMW/MfaSErnJskL7XM+UDK6aTvslxsRCyya/sA==}
'@next/eslint-plugin-next@16.4.0': '@next/eslint-plugin-next@16.4.2':
resolution: {integrity: sha512-ffeflB/dL8RrvWejQximw01pOpKHN692Y3FjDB82DCd0YVvXvBD6vY7mcZp27yvSVFVM6wA73xVodEKF4spizA==} resolution: {integrity: sha512-gCTWlw0e+Y6kajpFyKKgA195jUJCRhlzJE0lV7ufe8a+ghIsANWZ0/FiJwg6DuOG1+OvRbcZDcFBoRh3mNJx0g==}
'@next/swc-darwin-arm64@16.4.0': '@next/swc-darwin-arm64@16.4.2':
resolution: {integrity: sha512-yyZ+9MgViAKLLb5l1gPBGjRwnq3teNLb5Zx6JEw8LzNSTjlsnp+baUHFxTgl7PpjCmKf48VQfyipG1eBflb48Q==} resolution: {integrity: sha512-ONkhFvZNFWlsEHOM/81AtxdyuJP2KRYKYR0JxPwvcu1AuPMMMgcL+wW2luldJvMtZwKtUxoSkCychW5wIeoYSw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@next/swc-darwin-x64@16.4.0': '@next/swc-darwin-x64@16.4.2':
resolution: {integrity: sha512-RePEEejEj1Auf5s9qEcG0JbcDP3ceNUS/ofNX8AhxzgIjTVlZIHMatlp16YplcSMpsVo/ZMQHJTjbMYJznjGUg==} resolution: {integrity: sha512-luPCMbOsCoaF+kXJEUjmjmOZg1lC3BflhmUu+ZmW4tBu2vW/4AXak8JBFvePizGkxVmNiAw/r9ra+6UviCWtWQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@next/swc-linux-arm64-gnu@16.4.0': '@next/swc-linux-arm64-gnu@16.4.2':
resolution: {integrity: sha512-HhsyCqd+NpmvDDVY/LqkAN24f+QVvXh3ie+PfcwKinWL2Mu826JymQxJXGjAIfmJ4VlHjp4Pe/nZtXtUoEMAqw==} resolution: {integrity: sha512-xhwFTAncJyaCNy5KqKKuKaIIdCy1/1ZV1s5S1G0hhT7wGMkDTlfJ6aQbfRFnIG/s3/kDrxQ8aycVe+c5QnP8ow==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@next/swc-linux-arm64-musl@16.4.0': '@next/swc-linux-arm64-musl@16.4.2':
resolution: {integrity: sha512-sN9Pf+Zh+RpZAOmbR7d8KAA8T61CVhawtbEJ2Bk6QrRzx6Z/6haaF4UiwBzytM96GRRRWZh9/WALIEO3npMamA==} resolution: {integrity: sha512-T1PNmfbPcxr5ndtWUL/3wQtLXsz808lq6sc2GrNT5k2oquF7UyqZddHSuAewHVsWsGXe6nsl9HoN1YNriVjuSg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@next/swc-linux-x64-gnu@16.4.0': '@next/swc-linux-x64-gnu@16.4.2':
resolution: {integrity: sha512-D5M5xLWQVd1CvR+L7BickM1weRfmM41x3L1NWcnKY/oyJJqr1qwaCgmu3dMAhLBOMdZwSuDCRV6DJRRpiUkbDQ==} resolution: {integrity: sha512-N9cDUOCGtkJG5PNKDFZUF3xXndrJJcpLp121uAGjIGvO/U2p9tfdNOM9htj7+5f72l0m8rMw/cvYacUJBQoudg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc] libc: [glibc]
'@next/swc-linux-x64-musl@16.4.0': '@next/swc-linux-x64-musl@16.4.2':
resolution: {integrity: sha512-8d5WLS6a9YalqpOgXdlbvonFu+sIgjA+CO6tGzetrpPVcUL56foa7B7664h41rAlbLi5fJwK4vWji3zf4QDy+w==} resolution: {integrity: sha512-yY2uh1YhX6ufuYy2FCbw1dqblbhI57GLYAJfCkqD9auTv6pLrH67Uccjc3QMKBeCYAG6lkgu08ExmX1bbjejjQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl] libc: [musl]
'@next/swc-win32-arm64-msvc@16.4.0': '@next/swc-win32-arm64-msvc@16.4.2':
resolution: {integrity: sha512-sQuOIiW3snb48UwrBcDMvFA/u03qtw2LeuSIxFIQ9AJuW9UG/4Ddsfo+eV73PnZwBhyncMtsKVh7PrzMol2/fA==} resolution: {integrity: sha512-j/ArWRIHpMMB6wYLMhr2puTguBt70lNU/Cmjl9p6dTDE8DGknYJMP9PdwPk2dqpCNL/KIX9yfngDvIesxJPmsg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@next/swc-win32-x64-msvc@16.4.0': '@next/swc-win32-x64-msvc@16.4.2':
resolution: {integrity: sha512-6/33lCuxpdHUy27RegyGM/5uTpF7YZd3UR4D0gpkOA/tWY5YR7msbQjqPgCZmSmxrrTLGCXYA4A8vT2H5DPGTQ==} resolution: {integrity: sha512-AA4edyWHDko3NCSo0x6GomsdgFb0oR1J3MXU1b5xt6FRFg4AucrMPW3S0hCe/9onU0O1BbpGQBsqo1r0Gneu1g==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -1229,14 +1229,14 @@ packages:
engines: {node: '>=20'} engines: {node: '>=20'}
hasBin: true hasBin: true
'@prisma/adapter-pg@7.10.0': '@prisma/adapter-pg@7.10.1':
resolution: {integrity: sha512-N7nwSor0HO1Kz6xBv0TPAjAPysKK0fac6p4fVN3ensLOuzc/83Fgmln5k92eK/cvzqdkSR/2kkAqlbcdwVrwpw==} resolution: {integrity: sha512-EP9ruPYHjKP80WZlb5qVaEXKgZjJieBFjAxcBtQnDAHD6+16UN4keVmBh6L/RUpuDQT2FQRbvKNgq5d4Ix+IkQ==}
'@prisma/client-runtime-utils@7.10.0': '@prisma/client-runtime-utils@7.10.1':
resolution: {integrity: sha512-cnCy7lUV8/CctgKVEmqAbSLAmwqJdE/qAlqTBk/0NDk59zEb2cZ0M0M0E4vVPnqbSEYudRroQDvOWfUZH6RIfw==} resolution: {integrity: sha512-AzoATVIgmO3lcZfM443+9SI7+cyLMW2+Psw4op8WQHpHvHCX//CKxv8fwhiL0yGWF8DjdQrFewxrZo5McBdB8g==}
'@prisma/client@7.10.0': '@prisma/client@7.10.1':
resolution: {integrity: sha512-Ubw/QS9JGIBSBUsyxAUQuK/Jcu0Tsva7le7QbLd91Kix9yJvYDdj5QkwgEbbZniH80dd+sziQcALPc+HnvQC8Q==} resolution: {integrity: sha512-5tgAbFGh//zVOC6WPNVgziOErJHYkUE+wmqCwbIyq6IrTXUYtv9y2iBFGh/Owo99Mx0+cr0j1FOrxkYBMuyhaQ==}
engines: {node: ^20.19 || ^22.12 || >=24.0} engines: {node: ^20.19 || ^22.12 || >=24.0}
peerDependencies: peerDependencies:
prisma: '*' prisma: '*'
@@ -1247,11 +1247,11 @@ packages:
typescript: typescript:
optional: true optional: true
'@prisma/config@7.10.0': '@prisma/config@7.10.1':
resolution: {integrity: sha512-Rcg828gIRE3HOQ3pOATFjV5d/P0U9OIobxhd/IMxlfWjA4vru0eGwb0AIwFw0rmcLMVShohZYWPixVxkBHsxUA==} resolution: {integrity: sha512-+0swF5ELUa3P/9cIR26+gpYjjCbGE0qvEBZhV4zMDkYsrtHjZ884MQbOnWFWXj600N0sSJNnHbtBqe12yDngWg==}
'@prisma/debug@7.10.0': '@prisma/debug@7.10.1':
resolution: {integrity: sha512-caygJKtltmRIgdJ3jRpkOr7yM4DW6zxo5uOmojKWFb3asnxWoRkQOwZmXBgD8FZp4htrX+nMpcWqDwzlQ1+Y4g==} resolution: {integrity: sha512-eFCAkGZ13D/qPg48JBlG5IWi9cSBBOC7oG3abDPcAkYioDWlIjh0YJJLK2J7qo5S+xWWD8I6egAN/8KbCaiMCA==}
'@prisma/debug@7.2.0': '@prisma/debug@7.2.0':
resolution: {integrity: sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==} resolution: {integrity: sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==}
@@ -1259,20 +1259,20 @@ packages:
'@prisma/dev@0.24.17': '@prisma/dev@0.24.17':
resolution: {integrity: sha512-UvdZzmpFwknnfreh6Jije84ekkYGPYEJhXG1tFzCsCfQyzJifrOo38eZc0qajzvaC6OLUOrN9ML5XfCnEZL9DA==} resolution: {integrity: sha512-UvdZzmpFwknnfreh6Jije84ekkYGPYEJhXG1tFzCsCfQyzJifrOo38eZc0qajzvaC6OLUOrN9ML5XfCnEZL9DA==}
'@prisma/driver-adapter-utils@7.10.0': '@prisma/driver-adapter-utils@7.10.1':
resolution: {integrity: sha512-u8zkcRLlaryO652T4qavBg0HmzNW5tSKdsCn6hc1PhWAp/J6k0vrxLuUs+b9o+HcjsK7Dfa01o4OFSn0frauJA==} resolution: {integrity: sha512-DJ4c6xvVnm3s9ZUyql9nCUicADSqyvH+CjXRCM9L6m5zJxCNmebCElG6X4irICq3rosBwlX+S19Dxq/4IrZk3A==}
'@prisma/engines-version@7.10.0-4.0edf323efd1d98336f3f0a68684b56f689b900d3': '@prisma/engines-version@8.1.0-1.d1b3f377ca835d73fd50954a5e22128b9ebdd6b8':
resolution: {integrity: sha512-8OJ6RuZTZ06eFUOtBwxVmv8XMmOW6HWN5F+uxUbZkGxR0Bfab1dfAdXaHPmR5mb59E+fmUo8IOzXlbLY1SClbw==} resolution: {integrity: sha512-XjXmwjN2NE340RpXoXv8ZF8aNAvr0FE+7gNfkKeW6vyjXs7F8uxvEbWQoVrhioXDQoIsnNmv7r+wxvzfdEZaWA==}
'@prisma/engines@7.10.0': '@prisma/engines@7.10.1':
resolution: {integrity: sha512-KNumN6NHFwybvfdYzTee9pqwx5PvknpWAaHn6L5NsbrKdl+SQrsVZs9opKs6U6SAsvB26HDt3WybRjOhgoWOYQ==} resolution: {integrity: sha512-R6/ghv1Bu36FhCdQLFof1pNtyoWoeDzJLYeTKjgqb4eGtOAJx7ZqJtcm4pzkahLfZ9rYz8AkmsMDwkyiYbXPCQ==}
'@prisma/fetch-engine@7.10.0': '@prisma/fetch-engine@7.10.1':
resolution: {integrity: sha512-Zqyu8DY14t6W/xwmAxUYWCXtHrvQnSvT644EAZSsdM8NSmCS74vJJbBKdVsK3ucFpnUWkEpbO1a0CxJXrg130g==} resolution: {integrity: sha512-qZezeaExLWG2ptbHOrMxdiWluKHgqEclTdJbvY6pk6+Wg7EiVkeq5U3cXz9ti8nd0bngNvsDgledLHVRg5LF1w==}
'@prisma/get-platform@7.10.0': '@prisma/get-platform@7.10.1':
resolution: {integrity: sha512-0bra1LFYi8xNw0yqV62bHJNQk4BKleOngZiqPWIQc7a3+9q6rqsnqJ15BuepP8943PFMvtmgnP52juZsyYkA6w==} resolution: {integrity: sha512-iVnghHne5vcaobBjPVCMEjh5r/1UCj394EIGTUclasFRatpR/MQwcM2veLv5kgoFSyYP54nch/lNFCQRYcDxvg==}
'@prisma/get-platform@7.2.0': '@prisma/get-platform@7.2.0':
resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==} resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==}
@@ -2305,9 +2305,9 @@ packages:
deep-is@0.1.4: deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
deepmerge-ts@7.1.5: deepmerge-ts@8.0.2:
resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==} resolution: {integrity: sha512-uqbvqLUMrc6p0MO+WBRtTxY55hmyh94WRwI5a++PZe54X+bfVh59FSN7uWCBCW1CCVjzjnrwzfI8zidE2obMMw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.9.0'}
define-data-property@1.1.4: define-data-property@1.1.4:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
@@ -2323,10 +2323,6 @@ packages:
delaunator@5.1.0: delaunator@5.1.0:
resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==}
denque@2.1.0:
resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
engines: {node: '>=0.10'}
destr@2.0.5: destr@2.0.5:
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
@@ -2440,8 +2436,8 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'} engines: {node: '>=10'}
eslint-config-next@16.4.0: eslint-config-next@16.4.2:
resolution: {integrity: sha512-2RHLYswzc+hNRktWAjIL6XAvwb1cKcjLawJ5KWywAxn/JivNHtG42ZigL1yobVXDqsimuuL2F9jcEcnHFzbppQ==} resolution: {integrity: sha512-P33vjcETMXc+qBjpF77TeJHZLzk6cPcTy8KjpxLucYB3mCIFIORMcZ+cBXcAiIYjE5RM7jyknEEOwMNdnx/ADQ==}
peerDependencies: peerDependencies:
eslint: '>=9.0.0' eslint: '>=9.0.0'
typescript: '>=3.3.1' typescript: '>=3.3.1'
@@ -3221,9 +3217,11 @@ packages:
ms@2.1.3: ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
mysql2@3.15.3: mysql2@3.24.4:
resolution: {integrity: sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==} resolution: {integrity: sha512-A2olluVlj0mvgyIRRISMEzXc51m+21mRtcMVjJyIpt2GG98+XrC9m9HzsqcMsX2LcnfccJvY5NB22g8fENBnOA==}
engines: {node: '>= 8.0'} engines: {node: '>= 8.0'}
peerDependencies:
'@types/node': '>= 8'
named-placeholders@1.1.6: named-placeholders@1.1.6:
resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==} resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==}
@@ -3245,8 +3243,8 @@ packages:
natural-compare@1.4.0: natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
next@16.4.0: next@16.4.2:
resolution: {integrity: sha512-N2C+9q89Z/oLrsepSRS4jRMtwmUZAoZuAHU0e9T6+sAB5DdhADmrnOW+zjYijlrYFmVfmQhGVGy9eMFoB7UgKg==} resolution: {integrity: sha512-r+oBJojfefUjOiWkBhXgLS+igxX/7BWyK59uHnyOyplMSLtBZ+QLP3okrdYTbrfrbrmNTVWLBPaHDX9KRaIt3w==}
engines: {node: '>=20.9.0'} engines: {node: '>=20.9.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -3493,8 +3491,8 @@ packages:
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
prisma@7.10.0: prisma@7.10.1:
resolution: {integrity: sha512-o0ornyJOWgygVAzGCpr8PdXV8EJLHyVGDDUr/voBQt8Azzw8cYTByzzPGcA/m4tCkPcnJA8raEOv2CslsKhPEw==} resolution: {integrity: sha512-GoVeErHGGtsSjsflQ1r2BA3RKTXtxNraQJz8OLkLhoLr7OgCscdx4qw4WMM4HnERYc+a1cq2VnMNbep+vOjNcQ==}
engines: {node: ^20.19 || ^22.12 || >=24.0} engines: {node: ^20.19 || ^22.12 || >=24.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -3642,9 +3640,6 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
hasBin: true hasBin: true
seq-queue@0.0.5:
resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==}
serialize-error@13.0.2: serialize-error@13.0.2:
resolution: {integrity: sha512-G+YKwp9I6IvWMe5RlwqxdmTPIcq/G8HK/sU51gdV1XAJznYkRSTB0ph+zB9AfSxG0fx6xrqYA6i9HeIcHFTXow==} resolution: {integrity: sha512-G+YKwp9I6IvWMe5RlwqxdmTPIcq/G8HK/sU51gdV1XAJznYkRSTB0ph+zB9AfSxG0fx6xrqYA6i9HeIcHFTXow==}
engines: {node: '>=20'} engines: {node: '>=20'}
@@ -3715,9 +3710,9 @@ packages:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
engines: {node: '>= 10.x'} engines: {node: '>= 10.x'}
sqlstring@2.3.3: sql-escaper@1.5.2:
resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} resolution: {integrity: sha512-6CKD38c31SENivxOADeMNLdukOnUxUcflKtzVWzace7Riv1v7cAEym5Cx9Q7gYZ3ezIJI7ZpqecQq8cqNeSSFg==}
engines: {node: '>= 0.6'} engines: {bun: '>=1.0.0', deno: '>=2.0.0', node: '>=12.0.0'}
ssh2@1.17.0: ssh2@1.17.0:
resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==} resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==}
@@ -4711,37 +4706,37 @@ snapshots:
'@tybys/wasm-util': 0.10.4 '@tybys/wasm-util': 0.10.4
optional: true optional: true
'@next/env@16.4.0': {} '@next/env@16.4.2': {}
'@next/eslint-plugin-next@16.4.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))': '@next/eslint-plugin-next@16.4.2(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))
fast-glob: 3.3.1 fast-glob: 3.3.1
transitivePeerDependencies: transitivePeerDependencies:
- eslint - eslint
'@next/swc-darwin-arm64@16.4.0': '@next/swc-darwin-arm64@16.4.2':
optional: true optional: true
'@next/swc-darwin-x64@16.4.0': '@next/swc-darwin-x64@16.4.2':
optional: true optional: true
'@next/swc-linux-arm64-gnu@16.4.0': '@next/swc-linux-arm64-gnu@16.4.2':
optional: true optional: true
'@next/swc-linux-arm64-musl@16.4.0': '@next/swc-linux-arm64-musl@16.4.2':
optional: true optional: true
'@next/swc-linux-x64-gnu@16.4.0': '@next/swc-linux-x64-gnu@16.4.2':
optional: true optional: true
'@next/swc-linux-x64-musl@16.4.0': '@next/swc-linux-x64-musl@16.4.2':
optional: true optional: true
'@next/swc-win32-arm64-msvc@16.4.0': '@next/swc-win32-arm64-msvc@16.4.2':
optional: true optional: true
'@next/swc-win32-x64-msvc@16.4.0': '@next/swc-win32-x64-msvc@16.4.2':
optional: true optional: true
'@node-rs/argon2-android-arm-eabi@2.2.2': '@node-rs/argon2-android-arm-eabi@2.2.2':
@@ -4823,34 +4818,34 @@ snapshots:
dependencies: dependencies:
playwright: 1.63.0 playwright: 1.63.0
'@prisma/adapter-pg@7.10.0': '@prisma/adapter-pg@7.10.1':
dependencies: dependencies:
'@prisma/driver-adapter-utils': 7.10.0 '@prisma/driver-adapter-utils': 7.10.1
'@types/pg': 8.23.1 '@types/pg': 8.23.1
pg: 8.23.1 pg: 8.23.1
postgres-array: 3.0.4 postgres-array: 3.0.4
transitivePeerDependencies: transitivePeerDependencies:
- pg-native - pg-native
'@prisma/client-runtime-utils@7.10.0': {} '@prisma/client-runtime-utils@7.10.1': {}
'@prisma/client@7.10.0(prisma@7.10.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3))(typescript@6.0.3)': '@prisma/client@7.10.1(prisma@7.10.1(@types/node@24.19.2)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3))(typescript@6.0.3)':
dependencies: dependencies:
'@prisma/client-runtime-utils': 7.10.0 '@prisma/client-runtime-utils': 7.10.1
optionalDependencies: optionalDependencies:
prisma: 7.10.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3) prisma: 7.10.1(@types/node@24.19.2)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3)
typescript: 6.0.3 typescript: 6.0.3
'@prisma/config@7.10.0': '@prisma/config@7.10.1':
dependencies: dependencies:
c12: 3.3.4 c12: 3.3.4
deepmerge-ts: 7.1.5 deepmerge-ts: 8.0.2
effect: 3.20.0 effect: 3.20.0
empathic: 2.0.0 empathic: 2.0.0
transitivePeerDependencies: transitivePeerDependencies:
- magicast - magicast
'@prisma/debug@7.10.0': {} '@prisma/debug@7.10.1': {}
'@prisma/debug@7.2.0': {} '@prisma/debug@7.2.0': {}
@@ -4874,28 +4869,28 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- typescript - typescript
'@prisma/driver-adapter-utils@7.10.0': '@prisma/driver-adapter-utils@7.10.1':
dependencies: dependencies:
'@prisma/debug': 7.10.0 '@prisma/debug': 7.10.1
'@prisma/engines-version@7.10.0-4.0edf323efd1d98336f3f0a68684b56f689b900d3': {} '@prisma/engines-version@8.1.0-1.d1b3f377ca835d73fd50954a5e22128b9ebdd6b8': {}
'@prisma/engines@7.10.0': '@prisma/engines@7.10.1':
dependencies: dependencies:
'@prisma/debug': 7.10.0 '@prisma/debug': 7.10.1
'@prisma/engines-version': 7.10.0-4.0edf323efd1d98336f3f0a68684b56f689b900d3 '@prisma/engines-version': 8.1.0-1.d1b3f377ca835d73fd50954a5e22128b9ebdd6b8
'@prisma/fetch-engine': 7.10.0 '@prisma/fetch-engine': 7.10.1
'@prisma/get-platform': 7.10.0 '@prisma/get-platform': 7.10.1
'@prisma/fetch-engine@7.10.0': '@prisma/fetch-engine@7.10.1':
dependencies: dependencies:
'@prisma/debug': 7.10.0 '@prisma/debug': 7.10.1
'@prisma/engines-version': 7.10.0-4.0edf323efd1d98336f3f0a68684b56f689b900d3 '@prisma/engines-version': 8.1.0-1.d1b3f377ca835d73fd50954a5e22128b9ebdd6b8
'@prisma/get-platform': 7.10.0 '@prisma/get-platform': 7.10.1
'@prisma/get-platform@7.10.0': '@prisma/get-platform@7.10.1':
dependencies: dependencies:
'@prisma/debug': 7.10.0 '@prisma/debug': 7.10.1
'@prisma/get-platform@7.2.0': '@prisma/get-platform@7.2.0':
dependencies: dependencies:
@@ -5854,7 +5849,7 @@ snapshots:
deep-is@0.1.4: {} deep-is@0.1.4: {}
deepmerge-ts@7.1.5: {} deepmerge-ts@8.0.2: {}
define-data-property@1.1.4: define-data-property@1.1.4:
dependencies: dependencies:
@@ -5874,8 +5869,6 @@ snapshots:
dependencies: dependencies:
robust-predicates: 3.0.3 robust-predicates: 3.0.3
denque@2.1.0: {}
destr@2.0.5: {} destr@2.0.5: {}
detect-libc@2.1.2: {} detect-libc@2.1.2: {}
@@ -6097,9 +6090,9 @@ snapshots:
escape-string-regexp@4.0.0: {} escape-string-regexp@4.0.0: {}
eslint-config-next@16.4.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3): eslint-config-next@16.4.2(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3):
dependencies: dependencies:
'@next/eslint-plugin-next': 16.4.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) '@next/eslint-plugin-next': 16.4.2(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))
eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0)
eslint-import-resolver-node: 0.3.10(supports-color@7.2.0) eslint-import-resolver-node: 0.3.10(supports-color@7.2.0)
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)
@@ -6880,17 +6873,16 @@ snapshots:
ms@2.1.3: {} ms@2.1.3: {}
mysql2@3.15.3: mysql2@3.24.4(@types/node@24.19.2):
dependencies: dependencies:
'@types/node': 24.19.2
aws-ssl-profiles: 1.1.2 aws-ssl-profiles: 1.1.2
denque: 2.1.0
generate-function: 2.3.1 generate-function: 2.3.1
iconv-lite: 0.7.3 iconv-lite: 0.7.3
long: 5.3.2 long: 5.3.2
lru.min: 1.1.5 lru.min: 1.1.5
named-placeholders: 1.1.6 named-placeholders: 1.1.6
seq-queue: 0.0.5 sql-escaper: 1.5.2
sqlstring: 2.3.3
named-placeholders@1.1.6: named-placeholders@1.1.6:
dependencies: dependencies:
@@ -6905,9 +6897,9 @@ snapshots:
natural-compare@1.4.0: {} natural-compare@1.4.0: {}
next@16.4.0(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@24.19.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0): next@16.4.2(@babel/core@7.29.7(supports-color@7.2.0))(@opentelemetry/api@1.9.1)(@playwright/test@1.63.0)(@types/node@24.19.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0):
dependencies: dependencies:
'@next/env': 16.4.0 '@next/env': 16.4.2
'@swc/helpers': 0.5.23 '@swc/helpers': 0.5.23
baseline-browser-mapping: 2.11.28 baseline-browser-mapping: 2.11.28
caniuse-lite: 1.0.30001815 caniuse-lite: 1.0.30001815
@@ -6916,14 +6908,14 @@ snapshots:
react-dom: 19.3.0(react@19.3.0) react-dom: 19.3.0(react@19.3.0)
styled-jsx: 5.1.6(@babel/core@7.29.7(supports-color@7.2.0))(react@19.3.0) styled-jsx: 5.1.6(@babel/core@7.29.7(supports-color@7.2.0))(react@19.3.0)
optionalDependencies: optionalDependencies:
'@next/swc-darwin-arm64': 16.4.0 '@next/swc-darwin-arm64': 16.4.2
'@next/swc-darwin-x64': 16.4.0 '@next/swc-darwin-x64': 16.4.2
'@next/swc-linux-arm64-gnu': 16.4.0 '@next/swc-linux-arm64-gnu': 16.4.2
'@next/swc-linux-arm64-musl': 16.4.0 '@next/swc-linux-arm64-musl': 16.4.2
'@next/swc-linux-x64-gnu': 16.4.0 '@next/swc-linux-x64-gnu': 16.4.2
'@next/swc-linux-x64-musl': 16.4.0 '@next/swc-linux-x64-musl': 16.4.2
'@next/swc-win32-arm64-msvc': 16.4.0 '@next/swc-win32-arm64-msvc': 16.4.2
'@next/swc-win32-x64-msvc': 16.4.0 '@next/swc-win32-x64-msvc': 16.4.2
'@opentelemetry/api': 1.9.1 '@opentelemetry/api': 1.9.1
'@playwright/test': 1.63.0 '@playwright/test': 1.63.0
sharp: 0.35.5(@types/node@24.19.2) sharp: 0.35.5(@types/node@24.19.2)
@@ -7160,17 +7152,18 @@ snapshots:
prettier@3.9.10: {} prettier@3.9.10: {}
prisma@7.10.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3): prisma@7.10.1(@types/node@24.19.2)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3):
dependencies: dependencies:
'@prisma/config': 7.10.0 '@prisma/config': 7.10.1
'@prisma/dev': 0.24.17(typescript@6.0.3) '@prisma/dev': 0.24.17(typescript@6.0.3)
'@prisma/engines': 7.10.0 '@prisma/engines': 7.10.1
'@prisma/studio-core': 0.33.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@prisma/studio-core': 0.33.0(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
mysql2: 3.15.3 mysql2: 3.24.4(@types/node@24.19.2)
postgres: 3.4.7 postgres: 3.4.7
optionalDependencies: optionalDependencies:
typescript: 6.0.3 typescript: 6.0.3
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node'
- '@types/react' - '@types/react'
- '@types/react-dom' - '@types/react-dom'
- magicast - magicast
@@ -7326,8 +7319,6 @@ snapshots:
semver@7.8.5: {} semver@7.8.5: {}
seq-queue@0.0.5: {}
serialize-error@13.0.2: serialize-error@13.0.2:
dependencies: dependencies:
non-error: 0.1.0 non-error: 0.1.0
@@ -7437,7 +7428,7 @@ snapshots:
split2@4.2.0: {} split2@4.2.0: {}
sqlstring@2.3.3: {} sql-escaper@1.5.2: {}
ssh2@1.17.0: ssh2@1.17.0:
dependencies: dependencies:
+3 -1
View File
@@ -6,6 +6,8 @@ import { anmelden, E2E_PRAEFIX, keinQuerscrollen } from "./helfer";
* keinen, wird der Ablauf übersprungen und sagt das. * keinen, wird der Ablauf übersprungen und sagt das.
*/ */
test("Vorlage im Assistenten anwenden und als neue Vorlage speichern", async ({ page }) => { test("Vorlage im Assistenten anwenden und als neue Vorlage speichern", async ({ page }) => {
// Der Dry-Run plant wirklich gegen den Proxmox-Host – auf dem langsamen Testhost dauert das.
test.setTimeout(120_000);
const name = `${E2E_PRAEFIX}-${test.info().project.name}`; const name = `${E2E_PRAEFIX}-${test.info().project.name}`;
await anmelden(page, "/vorlagen"); await anmelden(page, "/vorlagen");
await expect(page.getByText("Docker-Host klein")).toBeVisible(); await expect(page.getByText("Docker-Host klein")).toBeVisible();
@@ -30,7 +32,7 @@ test("Vorlage im Assistenten anwenden und als neue Vorlage speichern", async ({
await page.getByRole("button", { name: "Weiter" }).click(); await page.getByRole("button", { name: "Weiter" }).click();
await expect(page.getByLabel("Docker CE")).toBeChecked(); await expect(page.getByLabel("Docker CE")).toBeChecked();
await page.getByRole("button", { name: "Weiter" }).click(); await page.getByRole("button", { name: "Weiter" }).click();
await expect(page.getByText(/--preset docker-host-klein/)).toBeVisible({ timeout: 30_000 }); await expect(page.getByText(/--preset docker-host-klein/)).toBeVisible({ timeout: 90_000 });
await page.getByRole("button", { name: "Als Vorlage speichern" }).click(); await page.getByRole("button", { name: "Als Vorlage speichern" }).click();
await page.getByLabel("Kurzname (für --preset)").fill(name); await page.getByLabel("Kurzname (für --preset)").fill(name);