diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 5038abc64..8be4785e5 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -19,7 +19,7 @@ jobs:
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
set -e
- export PATH="/usr/local/go/bin:$HOME/go/bin:$HOME/.local/share/pnpm:$PATH"
+ export PATH="$HOME/.local/bin:$HOME/.local/share/pnpm/bin:$HOME/go/bin:$PATH"
cd ~/schedule-optimizer
# Pull latest changes
@@ -44,11 +44,11 @@ jobs:
# Build backend (frontend already compiled to backend/internal/static/dist)
echo "Building Go binary..."
cd backend
- go build -o bin/server ./cmd/server
+ CGO_ENABLED=1 go build -o bin/server ./cmd/server
# Run tests
echo "Running tests..."
- go test ./...
+ CGO_ENABLED=1 go test ./...
cd ..
# Restart service
diff --git a/CLAUDE.md b/CLAUDE.md
index 33714e4ae..128d0dcd9 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -31,7 +31,7 @@ Schedule Optimizer is a course scheduling tool for WWU students. The main branch
Install these on a fresh server:
```bash
-# Go 1.24+
+# Go 1.25+
# https://go.dev/doc/install
# SQLite3
diff --git a/README.md b/README.md
index 811b6c7d3..7600bec32 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
A course scheduling tool for Western Washington University students. Add your courses, set preferences, and generate optimized, conflict-free schedules instantly.
-**[Try it live](https://cwooper.me/schedule-optimizer)**
+**[Try it live](https://schedule-optimizer.cwooper.me)**
> **Disclaimer:** This project is not affiliated with Western Washington University. It is an independent initiative developed for educational and personal use. All data is for informational purposes only and should not be considered official or binding.
@@ -45,7 +45,7 @@ Under the hood, schedule generation uses a **bitmask-based conflict detection**
| Layer | Technology |
|-------|-----------|
-| Backend | Go 1.24, Gin, SQLite (WAL mode) |
+| Backend | Go 1.25, Gin, SQLite (WAL mode) |
| SQL | sqlc (type-safe codegen), golang-migrate |
| Frontend | React 19, TypeScript, Vite |
| Styling | Tailwind CSS v4, shadcn/ui |
@@ -115,7 +115,7 @@ frontend/src/
### Prerequisites
-- Go 1.24+
+- Go 1.25+
- Node.js 20+ and pnpm
- SQLite 3
- [sqlc](https://sqlc.dev/) — `go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest`
diff --git a/backend/.env.example b/backend/.env.example
index 5f23b5767..4de39f508 100644
--- a/backend/.env.example
+++ b/backend/.env.example
@@ -22,4 +22,4 @@ JOBS_PAST_TERM_YEARS=5 # Years of past terms to scrape
# Production Settings
# ENVIRONMENT=production
# DATABASE_PATH=/var/lib/schedule-optimizer/schedule.db
-# CORS_ALLOWED_ORIGINS=https://cwooper.me/schedule-optimizer
+# CORS_ALLOWED_ORIGINS=https://schedule-optimizer.cwooper.me
diff --git a/backend/README.md b/backend/README.md
index 99f48d45b..a9a9605a3 100644
--- a/backend/README.md
+++ b/backend/README.md
@@ -7,9 +7,9 @@ Go backend for WWU Schedule Optimizer using Gin, SQLite, and sqlc.
### Required Software
```bash
-# Go 1.24+
+# Go 1.25+
# See https://go.dev/doc/install
-go version # should show go1.24 or later
+go version # should show go1.25 or later
# SQLite3
sudo apt install sqlite3 # Debian/Ubuntu
diff --git a/backend/go.mod b/backend/go.mod
index 949966130..8eaa2f12a 100644
--- a/backend/go.mod
+++ b/backend/go.mod
@@ -1,6 +1,6 @@
module schedule-optimizer
-go 1.24.4
+go 1.25.0
require (
github.com/gin-contrib/cors v1.7.6
@@ -9,7 +9,8 @@ require (
github.com/joho/godotenv v1.5.1
github.com/lmittmann/tint v1.1.2
github.com/mattn/go-sqlite3 v1.14.33
- golang.org/x/sync v0.19.0
+ github.com/xuri/excelize/v2 v2.10.0
+ golang.org/x/sync v0.20.0
)
require (
@@ -32,19 +33,18 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/quic-go/qpack v0.6.0 // indirect
- github.com/quic-go/quic-go v0.57.0 // indirect
+ github.com/quic-go/quic-go v0.59.1 // indirect
github.com/richardlehane/mscfb v1.0.4 // indirect
github.com/richardlehane/msoleps v1.0.4 // indirect
github.com/tiendc/go-deepcopy v1.7.1 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.3.0 // indirect
github.com/xuri/efp v0.0.1 // indirect
- github.com/xuri/excelize/v2 v2.10.0 // indirect
github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9 // indirect
golang.org/x/arch v0.22.0 // indirect
- golang.org/x/crypto v0.45.0 // indirect
- golang.org/x/net v0.47.0 // indirect
- golang.org/x/sys v0.38.0 // indirect
- golang.org/x/text v0.31.0 // indirect
+ golang.org/x/crypto v0.52.0 // indirect
+ golang.org/x/net v0.55.0 // indirect
+ golang.org/x/sys v0.45.0 // indirect
+ golang.org/x/text v0.37.0 // indirect
google.golang.org/protobuf v1.36.10 // indirect
)
diff --git a/backend/go.sum b/backend/go.sum
index 0642de0c8..20ff0476c 100644
--- a/backend/go.sum
+++ b/backend/go.sum
@@ -59,8 +59,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=
-github.com/quic-go/quic-go v0.57.0 h1:AsSSrrMs4qI/hLrKlTH/TGQeTMY0ib1pAOX7vA3AdqE=
-github.com/quic-go/quic-go v0.57.0/go.mod h1:ly4QBAjHA2VhdnxhojRsCUOeJwKYg+taDlos92xb1+s=
+github.com/quic-go/quic-go v0.59.1 h1:0Gmua0HW1Tv7ANR7hUYwRyD0MG5OJfgvYSZasGZzBic=
+github.com/quic-go/quic-go v0.59.1/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
@@ -91,19 +91,19 @@ go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
golang.org/x/arch v0.22.0 h1:c/Zle32i5ttqRXjdLyyHZESLD/bB90DCU1g9l/0YBDI=
golang.org/x/arch v0.22.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=
-golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
-golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
-golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
-golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
-golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
-golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
+golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988=
+golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc=
+golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ=
+golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs=
+golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
+golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
-golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
-golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
-golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
-golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
-golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
+golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
+golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
+golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/backend/internal/static/handler.go b/backend/internal/static/handler.go
index b1c12ab92..abbe02ae3 100644
--- a/backend/internal/static/handler.go
+++ b/backend/internal/static/handler.go
@@ -9,9 +9,6 @@ import (
"strings"
)
-// basePath is stripped from incoming requests to match nginx rewrite behavior.
-const basePath = "/schedule-optimizer"
-
// Handler returns an http.Handler that serves static files from the embedded filesystem.
// It serves pre-compressed .gz files when the client accepts gzip encoding.
func Handler() http.Handler {
@@ -35,14 +32,8 @@ func Handler() http.Handler {
})
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- // Strip base path prefix (matches nginx rewrite behavior)
- urlPath := strings.TrimPrefix(r.URL.Path, basePath)
- if urlPath == "" {
- urlPath = "/"
- }
-
// Determine the logical file path (for gzip lookup)
- filePath := strings.TrimPrefix(urlPath, "/")
+ filePath := strings.TrimPrefix(r.URL.Path, "/")
if filePath == "" {
filePath = "index.html"
}
@@ -61,7 +52,6 @@ func Handler() http.Handler {
}
// Fall back to http.FileServer for non-gzip requests
- r.URL.Path = urlPath
fileServer.ServeHTTP(w, r)
})
}
diff --git a/backend/internal/static/handler_test.go b/backend/internal/static/handler_test.go
index b795e99ba..a0b51d1a5 100644
--- a/backend/internal/static/handler_test.go
+++ b/backend/internal/static/handler_test.go
@@ -18,18 +18,13 @@ func TestHandler(t *testing.T) {
wantTypePrefix string
wantGzip bool
}{
- // With /schedule-optimizer prefix (production path)
- {"root with prefix", "/schedule-optimizer/", false, http.StatusOK, "text/html", false},
- {"root with prefix gzip", "/schedule-optimizer/", true, http.StatusOK, "text/html", true},
- {"index explicit redirects", "/schedule-optimizer/index.html", false, http.StatusMovedPermanently, "", false},
- {"svg logo", "/schedule-optimizer/schopt-logo-dark.svg", false, http.StatusOK, "image/svg+xml", false},
-
- // Without prefix (direct local access)
- {"root no prefix", "/", false, http.StatusOK, "text/html", false},
- {"root no prefix gzip", "/", true, http.StatusOK, "text/html", true},
+ {"root", "/", false, http.StatusOK, "text/html", false},
+ {"root gzip", "/", true, http.StatusOK, "text/html", true},
+ {"index explicit redirects", "/index.html", false, http.StatusMovedPermanently, "", false},
+ {"svg logo", "/schopt-logo-dark.svg", false, http.StatusOK, "image/svg+xml", false},
// Unknown paths should 404
- {"unknown path", "/schedule-optimizer/nonexistent.txt", false, http.StatusNotFound, "", false},
+ {"unknown path", "/nonexistent.txt", false, http.StatusNotFound, "", false},
}
for _, tt := range tests {
@@ -64,7 +59,7 @@ func TestHandlerVaryHeader(t *testing.T) {
handler := Handler()
// Gzip responses should include Vary header for caching
- req := httptest.NewRequest("GET", "/schedule-optimizer/", nil)
+ req := httptest.NewRequest("GET", "/", nil)
req.Header.Set("Accept-Encoding", "gzip")
w := httptest.NewRecorder()
handler.ServeHTTP(w, req)
@@ -92,7 +87,7 @@ func TestAcceptsGzipEdgeCases(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- req := httptest.NewRequest("GET", "/schedule-optimizer/", nil)
+ req := httptest.NewRequest("GET", "/", nil)
if tt.acceptEncoding != "" {
req.Header.Set("Accept-Encoding", tt.acceptEncoding)
}
diff --git a/frontend/index.html b/frontend/index.html
index 80efd3c9b..9973d0b3c 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -7,10 +7,10 @@
-
+
-
+
diff --git a/frontend/package.json b/frontend/package.json
index 98cb57673..fc0fa9820 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -59,8 +59,25 @@
"tw-animate-css": "^1.4.0",
"typescript": "~5.9.3",
"typescript-eslint": "^8.54.0",
- "vite": "^7.3.1",
+ "vite": "^7.3.2",
"vite-plugin-compression": "^0.5.1",
- "vitest": "^4.0.18"
+ "vitest": "^4.1.0"
+ },
+ "pnpm": {
+ "onlyBuiltDependencies": [
+ "esbuild"
+ ],
+ "overrides": {
+ "minimatch@3": "^3.1.5",
+ "minimatch@9": "^9.0.9",
+ "minimatch@10": "^10.2.5",
+ "picomatch@4": "^4.0.4",
+ "flatted@3": "^3.4.2",
+ "rollup@4": "^4.61.1",
+ "ajv@6": "^6.15.0",
+ "brace-expansion@1": "^1.1.15",
+ "brace-expansion@2": "^2.1.1",
+ "postcss@8": "^8.5.15"
+ }
}
}
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index 8b0b3093a..31082e6db 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -4,6 +4,18 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
+overrides:
+ minimatch@3: ^3.1.5
+ minimatch@9: ^9.0.9
+ minimatch@10: ^10.2.5
+ picomatch@4: ^4.0.4
+ flatted@3: ^3.4.2
+ rollup@4: ^4.61.1
+ ajv@6: ^6.15.0
+ brace-expansion@1: ^1.1.15
+ brace-expansion@2: ^2.1.1
+ postcss@8: ^8.5.15
+
importers:
.:
@@ -89,7 +101,7 @@ importers:
version: 9.39.2
'@tailwindcss/vite':
specifier: ^4.1.18
- version: 4.1.18(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
+ version: 4.1.18(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
'@types/node':
specifier: ^25.2.1
version: 25.2.1
@@ -101,7 +113,7 @@ importers:
version: 19.2.3(@types/react@19.2.13)
'@vitejs/plugin-react':
specifier: ^5.1.3
- version: 5.1.3(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
+ version: 5.1.3(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
eslint:
specifier: ^9.39.2
version: 9.39.2(jiti@2.6.1)
@@ -139,14 +151,14 @@ importers:
specifier: ^8.54.0
version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
vite:
- specifier: ^7.3.1
- version: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
+ specifier: ^7.3.2
+ version: 7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
vite-plugin-compression:
specifier: ^0.5.1
- version: 0.5.1(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
+ version: 0.5.1(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
vitest:
- specifier: ^4.0.18
- version: 4.0.18(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
+ specifier: ^4.1.0
+ version: 4.1.8(@types/node@25.2.1)(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
packages:
@@ -463,14 +475,6 @@ packages:
peerDependencies:
react: ^16.13 || ^17 || ^18 || ^19
- '@isaacs/balanced-match@4.0.1':
- resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
- engines: {node: 20 || >=22}
-
- '@isaacs/brace-expansion@5.0.1':
- resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==}
- engines: {node: 20 || >=22}
-
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -1215,141 +1219,141 @@ packages:
'@rolldown/pluginutils@1.0.0-rc.2':
resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==}
- '@rollup/rollup-android-arm-eabi@4.57.1':
- resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==}
+ '@rollup/rollup-android-arm-eabi@4.61.1':
+ resolution: {integrity: sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.57.1':
- resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==}
+ '@rollup/rollup-android-arm64@4.61.1':
+ resolution: {integrity: sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.57.1':
- resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==}
+ '@rollup/rollup-darwin-arm64@4.61.1':
+ resolution: {integrity: sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.57.1':
- resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==}
+ '@rollup/rollup-darwin-x64@4.61.1':
+ resolution: {integrity: sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.57.1':
- resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==}
+ '@rollup/rollup-freebsd-arm64@4.61.1':
+ resolution: {integrity: sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.57.1':
- resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==}
+ '@rollup/rollup-freebsd-x64@4.61.1':
+ resolution: {integrity: sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.57.1':
- resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.61.1':
+ resolution: {integrity: sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm-musleabihf@4.57.1':
- resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==}
+ '@rollup/rollup-linux-arm-musleabihf@4.61.1':
+ resolution: {integrity: sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==}
cpu: [arm]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-arm64-gnu@4.57.1':
- resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==}
+ '@rollup/rollup-linux-arm64-gnu@4.61.1':
+ resolution: {integrity: sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-arm64-musl@4.57.1':
- resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==}
+ '@rollup/rollup-linux-arm64-musl@4.61.1':
+ resolution: {integrity: sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-loong64-gnu@4.57.1':
- resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==}
+ '@rollup/rollup-linux-loong64-gnu@4.61.1':
+ resolution: {integrity: sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==}
cpu: [loong64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-loong64-musl@4.57.1':
- resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==}
+ '@rollup/rollup-linux-loong64-musl@4.61.1':
+ resolution: {integrity: sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==}
cpu: [loong64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-ppc64-gnu@4.57.1':
- resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==}
+ '@rollup/rollup-linux-ppc64-gnu@4.61.1':
+ resolution: {integrity: sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-ppc64-musl@4.57.1':
- resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==}
+ '@rollup/rollup-linux-ppc64-musl@4.61.1':
+ resolution: {integrity: sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==}
cpu: [ppc64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-riscv64-gnu@4.57.1':
- resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==}
+ '@rollup/rollup-linux-riscv64-gnu@4.61.1':
+ resolution: {integrity: sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-riscv64-musl@4.57.1':
- resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==}
+ '@rollup/rollup-linux-riscv64-musl@4.61.1':
+ resolution: {integrity: sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@rollup/rollup-linux-s390x-gnu@4.57.1':
- resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==}
+ '@rollup/rollup-linux-s390x-gnu@4.61.1':
+ resolution: {integrity: sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-gnu@4.57.1':
- resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==}
+ '@rollup/rollup-linux-x64-gnu@4.61.1':
+ resolution: {integrity: sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rollup/rollup-linux-x64-musl@4.57.1':
- resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==}
+ '@rollup/rollup-linux-x64-musl@4.61.1':
+ resolution: {integrity: sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rollup/rollup-openbsd-x64@4.57.1':
- resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==}
+ '@rollup/rollup-openbsd-x64@4.61.1':
+ resolution: {integrity: sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==}
cpu: [x64]
os: [openbsd]
- '@rollup/rollup-openharmony-arm64@4.57.1':
- resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==}
+ '@rollup/rollup-openharmony-arm64@4.61.1':
+ resolution: {integrity: sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.57.1':
- resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==}
+ '@rollup/rollup-win32-arm64-msvc@4.61.1':
+ resolution: {integrity: sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.57.1':
- resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==}
+ '@rollup/rollup-win32-ia32-msvc@4.61.1':
+ resolution: {integrity: sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.57.1':
- resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==}
+ '@rollup/rollup-win32-x64-gnu@4.61.1':
+ resolution: {integrity: sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.57.1':
- resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==}
+ '@rollup/rollup-win32-x64-msvc@4.61.1':
+ resolution: {integrity: sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==}
cpu: [x64]
os: [win32]
@@ -1488,6 +1492,9 @@ packages:
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -1567,34 +1574,34 @@ packages:
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
- '@vitest/expect@4.0.18':
- resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==}
+ '@vitest/expect@4.1.8':
+ resolution: {integrity: sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ==}
- '@vitest/mocker@4.0.18':
- resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==}
+ '@vitest/mocker@4.1.8':
+ resolution: {integrity: sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw==}
peerDependencies:
msw: ^2.4.9
- vite: ^6.0.0 || ^7.0.0-0
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
peerDependenciesMeta:
msw:
optional: true
vite:
optional: true
- '@vitest/pretty-format@4.0.18':
- resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==}
+ '@vitest/pretty-format@4.1.8':
+ resolution: {integrity: sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==}
- '@vitest/runner@4.0.18':
- resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==}
+ '@vitest/runner@4.1.8':
+ resolution: {integrity: sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg==}
- '@vitest/snapshot@4.0.18':
- resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==}
+ '@vitest/snapshot@4.1.8':
+ resolution: {integrity: sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ==}
- '@vitest/spy@4.0.18':
- resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==}
+ '@vitest/spy@4.1.8':
+ resolution: {integrity: sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA==}
- '@vitest/utils@4.0.18':
- resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==}
+ '@vitest/utils@4.1.8':
+ resolution: {integrity: sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==}
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
@@ -1606,8 +1613,8 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ ajv@6.15.0:
+ resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
@@ -1670,15 +1677,23 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ balanced-match@4.0.4:
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
+
baseline-browser-mapping@2.9.19:
resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==}
hasBin: true
- brace-expansion@1.1.12:
- resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+ brace-expansion@1.1.15:
+ resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==}
- brace-expansion@2.0.2:
- resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+ brace-expansion@2.1.1:
+ resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==}
+
+ brace-expansion@5.0.6:
+ resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==}
+ engines: {node: 18 || 20 || >=22}
browserslist@4.28.1:
resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
@@ -1821,8 +1836,8 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
- es-module-lexer@1.7.0:
- resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
+ es-module-lexer@2.1.0:
+ resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==}
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
@@ -1937,7 +1952,7 @@ packages:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
peerDependencies:
- picomatch: ^3 || ^4
+ picomatch: ^4.0.4
peerDependenciesMeta:
picomatch:
optional: true
@@ -1954,8 +1969,8 @@ packages:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
- flatted@3.3.3:
- resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ flatted@3.4.2:
+ resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
for-each@0.3.5:
resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
@@ -2349,15 +2364,15 @@ packages:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
- minimatch@10.1.1:
- resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==}
- engines: {node: 20 || >=22}
+ minimatch@10.2.5:
+ resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
+ engines: {node: 18 || 20 || >=22}
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@3.1.5:
+ resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
- minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ minimatch@9.0.9:
+ resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==}
engines: {node: '>=16 || 14 >=14.17'}
motion-dom@12.33.0:
@@ -2369,8 +2384,8 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ nanoid@3.3.12:
+ resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
@@ -2443,16 +2458,16 @@ packages:
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
- picomatch@4.0.3:
- resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ picomatch@4.0.4:
+ resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
possible-typed-array-names@1.1.0:
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
engines: {node: '>= 0.4'}
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ postcss@8.5.15:
+ resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==}
engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1:
@@ -2599,8 +2614,8 @@ packages:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
- rollup@4.57.1:
- resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==}
+ rollup@4.61.1:
+ resolution: {integrity: sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2689,8 +2704,8 @@ packages:
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
- std-env@3.10.0:
- resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
+ std-env@4.1.0:
+ resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
stop-iteration-iterator@1.1.0:
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
@@ -2741,8 +2756,8 @@ packages:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
- tinyrainbow@3.0.3:
- resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==}
+ tinyrainbow@3.1.0:
+ resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==}
engines: {node: '>=14.0.0'}
ts-api-utils@2.4.0:
@@ -2845,8 +2860,8 @@ packages:
peerDependencies:
vite: '>=2.0.0'
- vite@7.3.1:
- resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
+ vite@7.3.5:
+ resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -2885,20 +2900,23 @@ packages:
yaml:
optional: true
- vitest@4.0.18:
- resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==}
+ vitest@4.1.8:
+ resolution: {integrity: sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.0.18
- '@vitest/browser-preview': 4.0.18
- '@vitest/browser-webdriverio': 4.0.18
- '@vitest/ui': 4.0.18
+ '@vitest/browser-playwright': 4.1.8
+ '@vitest/browser-preview': 4.1.8
+ '@vitest/browser-webdriverio': 4.1.8
+ '@vitest/coverage-istanbul': 4.1.8
+ '@vitest/coverage-v8': 4.1.8
+ '@vitest/ui': 4.1.8
happy-dom: '*'
jsdom: '*'
+ vite: ^6.0.0 || ^7.0.0 || ^8.0.0
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
@@ -2912,6 +2930,10 @@ packages:
optional: true
'@vitest/browser-webdriverio':
optional: true
+ '@vitest/coverage-istanbul':
+ optional: true
+ '@vitest/coverage-v8':
+ optional: true
'@vitest/ui':
optional: true
happy-dom:
@@ -3186,7 +3208,7 @@ snapshots:
dependencies:
'@eslint/object-schema': 2.1.7
debug: 4.4.3
- minimatch: 3.1.2
+ minimatch: 3.1.5
transitivePeerDependencies:
- supports-color
@@ -3200,14 +3222,14 @@ snapshots:
'@eslint/eslintrc@3.3.3':
dependencies:
- ajv: 6.12.6
+ ajv: 6.15.0
debug: 4.4.3
espree: 10.4.0
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.1
js-yaml: 4.1.1
- minimatch: 3.1.2
+ minimatch: 3.1.5
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
@@ -3253,12 +3275,6 @@ snapshots:
dependencies:
react: 19.2.4
- '@isaacs/balanced-match@4.0.1': {}
-
- '@isaacs/brace-expansion@5.0.1':
- dependencies:
- '@isaacs/balanced-match': 4.0.1
-
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -4052,79 +4068,79 @@ snapshots:
'@rolldown/pluginutils@1.0.0-rc.2': {}
- '@rollup/rollup-android-arm-eabi@4.57.1':
+ '@rollup/rollup-android-arm-eabi@4.61.1':
optional: true
- '@rollup/rollup-android-arm64@4.57.1':
+ '@rollup/rollup-android-arm64@4.61.1':
optional: true
- '@rollup/rollup-darwin-arm64@4.57.1':
+ '@rollup/rollup-darwin-arm64@4.61.1':
optional: true
- '@rollup/rollup-darwin-x64@4.57.1':
+ '@rollup/rollup-darwin-x64@4.61.1':
optional: true
- '@rollup/rollup-freebsd-arm64@4.57.1':
+ '@rollup/rollup-freebsd-arm64@4.61.1':
optional: true
- '@rollup/rollup-freebsd-x64@4.57.1':
+ '@rollup/rollup-freebsd-x64@4.61.1':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.57.1':
+ '@rollup/rollup-linux-arm-gnueabihf@4.61.1':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.57.1':
+ '@rollup/rollup-linux-arm-musleabihf@4.61.1':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.57.1':
+ '@rollup/rollup-linux-arm64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.57.1':
+ '@rollup/rollup-linux-arm64-musl@4.61.1':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.57.1':
+ '@rollup/rollup-linux-loong64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-loong64-musl@4.57.1':
+ '@rollup/rollup-linux-loong64-musl@4.61.1':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.57.1':
+ '@rollup/rollup-linux-ppc64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-ppc64-musl@4.57.1':
+ '@rollup/rollup-linux-ppc64-musl@4.61.1':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.57.1':
+ '@rollup/rollup-linux-riscv64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.57.1':
+ '@rollup/rollup-linux-riscv64-musl@4.61.1':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.57.1':
+ '@rollup/rollup-linux-s390x-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.57.1':
+ '@rollup/rollup-linux-x64-gnu@4.61.1':
optional: true
- '@rollup/rollup-linux-x64-musl@4.57.1':
+ '@rollup/rollup-linux-x64-musl@4.61.1':
optional: true
- '@rollup/rollup-openbsd-x64@4.57.1':
+ '@rollup/rollup-openbsd-x64@4.61.1':
optional: true
- '@rollup/rollup-openharmony-arm64@4.57.1':
+ '@rollup/rollup-openharmony-arm64@4.61.1':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.57.1':
+ '@rollup/rollup-win32-arm64-msvc@4.61.1':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.57.1':
+ '@rollup/rollup-win32-ia32-msvc@4.61.1':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.57.1':
+ '@rollup/rollup-win32-x64-gnu@4.61.1':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.57.1':
+ '@rollup/rollup-win32-x64-msvc@4.61.1':
optional: true
'@standard-schema/spec@1.1.0': {}
@@ -4190,12 +4206,12 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.18
'@tailwindcss/oxide-win32-x64-msvc': 4.1.18
- '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))':
+ '@tailwindcss/vite@4.1.18(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))':
dependencies:
'@tailwindcss/node': 4.1.18
'@tailwindcss/oxide': 4.1.18
tailwindcss: 4.1.18
- vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
+ vite: 7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
'@tanstack/query-core@5.90.20': {}
@@ -4242,6 +4258,8 @@ snapshots:
'@types/estree@1.0.8': {}
+ '@types/estree@1.0.9': {}
+
'@types/json-schema@7.0.15': {}
'@types/node@25.2.1':
@@ -4323,7 +4341,7 @@ snapshots:
'@typescript-eslint/types': 8.54.0
'@typescript-eslint/visitor-keys': 8.54.0
debug: 4.4.3
- minimatch: 9.0.5
+ minimatch: 9.0.9
semver: 7.7.4
tinyglobby: 0.2.15
ts-api-utils: 2.4.0(typescript@5.9.3)
@@ -4347,7 +4365,7 @@ snapshots:
'@typescript-eslint/types': 8.54.0
eslint-visitor-keys: 4.2.1
- '@vitejs/plugin-react@5.1.3(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))':
+ '@vitejs/plugin-react@5.1.3(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))':
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0)
@@ -4355,48 +4373,50 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-rc.2
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
- vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
+ vite: 7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
transitivePeerDependencies:
- supports-color
- '@vitest/expect@4.0.18':
+ '@vitest/expect@4.1.8':
dependencies:
'@standard-schema/spec': 1.1.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.0.18
- '@vitest/utils': 4.0.18
+ '@vitest/spy': 4.1.8
+ '@vitest/utils': 4.1.8
chai: 6.2.2
- tinyrainbow: 3.0.3
+ tinyrainbow: 3.1.0
- '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))':
+ '@vitest/mocker@4.1.8(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))':
dependencies:
- '@vitest/spy': 4.0.18
+ '@vitest/spy': 4.1.8
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
+ vite: 7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
- '@vitest/pretty-format@4.0.18':
+ '@vitest/pretty-format@4.1.8':
dependencies:
- tinyrainbow: 3.0.3
+ tinyrainbow: 3.1.0
- '@vitest/runner@4.0.18':
+ '@vitest/runner@4.1.8':
dependencies:
- '@vitest/utils': 4.0.18
+ '@vitest/utils': 4.1.8
pathe: 2.0.3
- '@vitest/snapshot@4.0.18':
+ '@vitest/snapshot@4.1.8':
dependencies:
- '@vitest/pretty-format': 4.0.18
+ '@vitest/pretty-format': 4.1.8
+ '@vitest/utils': 4.1.8
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.0.18': {}
+ '@vitest/spy@4.1.8': {}
- '@vitest/utils@4.0.18':
+ '@vitest/utils@4.1.8':
dependencies:
- '@vitest/pretty-format': 4.0.18
- tinyrainbow: 3.0.3
+ '@vitest/pretty-format': 4.1.8
+ convert-source-map: 2.0.0
+ tinyrainbow: 3.1.0
acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
@@ -4404,7 +4424,7 @@ snapshots:
acorn@8.15.0: {}
- ajv@6.12.6:
+ ajv@6.15.0:
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
@@ -4479,17 +4499,23 @@ snapshots:
balanced-match@1.0.2: {}
+ balanced-match@4.0.4: {}
+
baseline-browser-mapping@2.9.19: {}
- brace-expansion@1.1.12:
+ brace-expansion@1.1.15:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
- brace-expansion@2.0.2:
+ brace-expansion@2.1.1:
dependencies:
balanced-match: 1.0.2
+ brace-expansion@5.0.6:
+ dependencies:
+ balanced-match: 4.0.4
+
browserslist@4.28.1:
dependencies:
baseline-browser-mapping: 2.9.19
@@ -4684,7 +4710,7 @@ snapshots:
es-errors@1.3.0: {}
- es-module-lexer@1.7.0: {}
+ es-module-lexer@2.1.0: {}
es-object-atoms@1.1.1:
dependencies:
@@ -4754,7 +4780,7 @@ snapshots:
hasown: 2.0.2
jsx-ast-utils: 3.3.5
language-tags: 1.0.9
- minimatch: 3.1.2
+ minimatch: 3.1.5
object.fromentries: 2.0.8
safe-regex-test: 1.1.0
string.prototype.includes: 2.0.1
@@ -4783,7 +4809,7 @@ snapshots:
functional-red-black-tree: 1.0.1
jsx-ast-utils-x: 0.1.0
lodash.merge: 4.6.2
- minimatch: 10.1.1
+ minimatch: 10.2.5
scslre: 0.3.0
semver: 7.7.3
typescript: 5.9.3
@@ -4811,7 +4837,7 @@ snapshots:
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
'@types/estree': 1.0.8
- ajv: 6.12.6
+ ajv: 6.15.0
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.3
@@ -4830,7 +4856,7 @@ snapshots:
is-glob: 4.0.3
json-stable-stringify-without-jsonify: 1.0.1
lodash.merge: 4.6.2
- minimatch: 3.1.2
+ minimatch: 3.1.5
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
@@ -4868,9 +4894,9 @@ snapshots:
fast-levenshtein@2.0.6: {}
- fdir@6.5.0(picomatch@4.0.3):
+ fdir@6.5.0(picomatch@4.0.4):
optionalDependencies:
- picomatch: 4.0.3
+ picomatch: 4.0.4
file-entry-cache@8.0.0:
dependencies:
@@ -4883,10 +4909,10 @@ snapshots:
flat-cache@4.0.1:
dependencies:
- flatted: 3.3.3
+ flatted: 3.4.2
keyv: 4.5.4
- flatted@3.3.3: {}
+ flatted@3.4.2: {}
for-each@0.3.5:
dependencies:
@@ -5242,17 +5268,17 @@ snapshots:
math-intrinsics@1.1.0: {}
- minimatch@10.1.1:
+ minimatch@10.2.5:
dependencies:
- '@isaacs/brace-expansion': 5.0.1
+ brace-expansion: 5.0.6
- minimatch@3.1.2:
+ minimatch@3.1.5:
dependencies:
- brace-expansion: 1.1.12
+ brace-expansion: 1.1.15
- minimatch@9.0.5:
+ minimatch@9.0.9:
dependencies:
- brace-expansion: 2.0.2
+ brace-expansion: 2.1.1
motion-dom@12.33.0:
dependencies:
@@ -5262,7 +5288,7 @@ snapshots:
ms@2.1.3: {}
- nanoid@3.3.11: {}
+ nanoid@3.3.12: {}
natural-compare@1.4.0: {}
@@ -5337,13 +5363,13 @@ snapshots:
picocolors@1.1.1: {}
- picomatch@4.0.3: {}
+ picomatch@4.0.4: {}
possible-typed-array-names@1.1.0: {}
- postcss@8.5.6:
+ postcss@8.5.15:
dependencies:
- nanoid: 3.3.11
+ nanoid: 3.3.12
picocolors: 1.1.1
source-map-js: 1.2.1
@@ -5487,35 +5513,35 @@ snapshots:
resolve-from@4.0.0: {}
- rollup@4.57.1:
+ rollup@4.61.1:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.57.1
- '@rollup/rollup-android-arm64': 4.57.1
- '@rollup/rollup-darwin-arm64': 4.57.1
- '@rollup/rollup-darwin-x64': 4.57.1
- '@rollup/rollup-freebsd-arm64': 4.57.1
- '@rollup/rollup-freebsd-x64': 4.57.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.57.1
- '@rollup/rollup-linux-arm-musleabihf': 4.57.1
- '@rollup/rollup-linux-arm64-gnu': 4.57.1
- '@rollup/rollup-linux-arm64-musl': 4.57.1
- '@rollup/rollup-linux-loong64-gnu': 4.57.1
- '@rollup/rollup-linux-loong64-musl': 4.57.1
- '@rollup/rollup-linux-ppc64-gnu': 4.57.1
- '@rollup/rollup-linux-ppc64-musl': 4.57.1
- '@rollup/rollup-linux-riscv64-gnu': 4.57.1
- '@rollup/rollup-linux-riscv64-musl': 4.57.1
- '@rollup/rollup-linux-s390x-gnu': 4.57.1
- '@rollup/rollup-linux-x64-gnu': 4.57.1
- '@rollup/rollup-linux-x64-musl': 4.57.1
- '@rollup/rollup-openbsd-x64': 4.57.1
- '@rollup/rollup-openharmony-arm64': 4.57.1
- '@rollup/rollup-win32-arm64-msvc': 4.57.1
- '@rollup/rollup-win32-ia32-msvc': 4.57.1
- '@rollup/rollup-win32-x64-gnu': 4.57.1
- '@rollup/rollup-win32-x64-msvc': 4.57.1
+ '@rollup/rollup-android-arm-eabi': 4.61.1
+ '@rollup/rollup-android-arm64': 4.61.1
+ '@rollup/rollup-darwin-arm64': 4.61.1
+ '@rollup/rollup-darwin-x64': 4.61.1
+ '@rollup/rollup-freebsd-arm64': 4.61.1
+ '@rollup/rollup-freebsd-x64': 4.61.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.61.1
+ '@rollup/rollup-linux-arm-musleabihf': 4.61.1
+ '@rollup/rollup-linux-arm64-gnu': 4.61.1
+ '@rollup/rollup-linux-arm64-musl': 4.61.1
+ '@rollup/rollup-linux-loong64-gnu': 4.61.1
+ '@rollup/rollup-linux-loong64-musl': 4.61.1
+ '@rollup/rollup-linux-ppc64-gnu': 4.61.1
+ '@rollup/rollup-linux-ppc64-musl': 4.61.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.61.1
+ '@rollup/rollup-linux-riscv64-musl': 4.61.1
+ '@rollup/rollup-linux-s390x-gnu': 4.61.1
+ '@rollup/rollup-linux-x64-gnu': 4.61.1
+ '@rollup/rollup-linux-x64-musl': 4.61.1
+ '@rollup/rollup-openbsd-x64': 4.61.1
+ '@rollup/rollup-openharmony-arm64': 4.61.1
+ '@rollup/rollup-win32-arm64-msvc': 4.61.1
+ '@rollup/rollup-win32-ia32-msvc': 4.61.1
+ '@rollup/rollup-win32-x64-gnu': 4.61.1
+ '@rollup/rollup-win32-x64-msvc': 4.61.1
fsevents: 2.3.3
safe-array-concat@1.1.3:
@@ -5618,7 +5644,7 @@ snapshots:
stackback@0.0.2: {}
- std-env@3.10.0: {}
+ std-env@4.1.0: {}
stop-iteration-iterator@1.1.0:
dependencies:
@@ -5672,10 +5698,10 @@ snapshots:
tinyglobby@0.2.15:
dependencies:
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
+ fdir: 6.5.0(picomatch@4.0.4)
+ picomatch: 4.0.4
- tinyrainbow@3.0.3: {}
+ tinyrainbow@3.1.0: {}
ts-api-utils@2.4.0(typescript@5.9.3):
dependencies:
@@ -5784,22 +5810,22 @@ snapshots:
- '@types/react'
- '@types/react-dom'
- vite-plugin-compression@0.5.1(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)):
+ vite-plugin-compression@0.5.1(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)):
dependencies:
chalk: 4.1.2
debug: 4.4.3
fs-extra: 10.1.0
- vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
+ vite: 7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
transitivePeerDependencies:
- supports-color
- vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2):
+ vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2):
dependencies:
esbuild: 0.27.3
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.57.1
+ fdir: 6.5.0(picomatch@4.0.4)
+ picomatch: 4.0.4
+ postcss: 8.5.15
+ rollup: 4.61.1
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 25.2.1
@@ -5807,42 +5833,32 @@ snapshots:
jiti: 2.6.1
lightningcss: 1.30.2
- vitest@4.0.18(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2):
+ vitest@4.1.8(@types/node@25.2.1)(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)):
dependencies:
- '@vitest/expect': 4.0.18
- '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
- '@vitest/pretty-format': 4.0.18
- '@vitest/runner': 4.0.18
- '@vitest/snapshot': 4.0.18
- '@vitest/spy': 4.0.18
- '@vitest/utils': 4.0.18
- es-module-lexer: 1.7.0
+ '@vitest/expect': 4.1.8
+ '@vitest/mocker': 4.1.8(vite@7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2))
+ '@vitest/pretty-format': 4.1.8
+ '@vitest/runner': 4.1.8
+ '@vitest/snapshot': 4.1.8
+ '@vitest/spy': 4.1.8
+ '@vitest/utils': 4.1.8
+ 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.3
- std-env: 3.10.0
+ picomatch: 4.0.4
+ std-env: 4.1.0
tinybench: 2.9.0
tinyexec: 1.0.2
tinyglobby: 0.2.15
- tinyrainbow: 3.0.3
- vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
+ tinyrainbow: 3.1.0
+ vite: 7.3.5(@types/node@25.2.1)(jiti@2.6.1)(lightningcss@1.30.2)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 25.2.1
transitivePeerDependencies:
- - jiti
- - less
- - lightningcss
- msw
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - terser
- - tsx
- - yaml
which-boxed-primitive@1.1.1:
dependencies:
diff --git a/frontend/pnpm-workspace.yaml b/frontend/pnpm-workspace.yaml
new file mode 100644
index 000000000..ec18b187c
--- /dev/null
+++ b/frontend/pnpm-workspace.yaml
@@ -0,0 +1,26 @@
+# esbuild runs a postinstall script to fetch its platform binary. pnpm 10+
+# gates build scripts by default; approve esbuild so `pnpm install` exits 0 in
+# CI/deploy instead of erroring on an ignored build. `allowBuilds` is the pnpm
+# 11 field; `onlyBuiltDependencies` is the pnpm 10.16+ name — both are listed so
+# the approval survives whichever pnpm the deploy box runs.
+allowBuilds:
+ esbuild: true
+onlyBuiltDependencies:
+ - esbuild
+
+# Overrides force patched versions of transitive dev-tooling deps that carry
+# security advisories (ReDoS / prototype pollution / DoS). These packages are
+# only pulled in by eslint/vitest/build tooling and never ship to production.
+# Mirrored in package.json "pnpm.overrides" so both old (<10.16) and new pnpm
+# read them.
+overrides:
+ minimatch@3: ^3.1.5
+ minimatch@9: ^9.0.9
+ minimatch@10: ^10.2.5
+ picomatch@4: ^4.0.4
+ flatted@3: ^3.4.2
+ rollup@4: ^4.61.1
+ ajv@6: ^6.15.0
+ brace-expansion@1: ^1.1.15
+ brace-expansion@2: ^2.1.1
+ postcss@8: ^8.5.15
diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts
index 6c0a3a215..7683e6a84 100644
--- a/frontend/vite.config.ts
+++ b/frontend/vite.config.ts
@@ -6,9 +6,9 @@ import compression from 'vite-plugin-compression'
// https://vite.dev/config/
export default defineConfig({
- base: '/schedule-optimizer/',
+ base: '/',
define: {
- __APP_BASE_URL__: JSON.stringify('/schedule-optimizer/'),
+ __APP_BASE_URL__: JSON.stringify('/'),
},
plugins: [
react(),
@@ -26,10 +26,9 @@ export default defineConfig({
},
server: {
proxy: {
- "/schedule-optimizer/api": {
+ "/api": {
target: "http://localhost:48920",
changeOrigin: true,
- rewrite: (path) => path.replace(/^\/schedule-optimizer/, ""),
},
},
},