This commit is contained in:
Sakurasan
2026-07-06 01:01:38 +08:00
parent 084eb146f9
commit 0719c63ef1
7 changed files with 149 additions and 194 deletions
+17 -11
View File
@@ -1,17 +1,23 @@
# ---- Build stage ----
FROM node:22-alpine AS build
# ---- Frontend build ----
FROM node:22-alpine AS frontend-build
WORKDIR /app
COPY . .
COPY package.json pnpm-lock.yaml .npmrc ./
RUN corepack enable && corepack prepare pnpm@10 --activate && pnpm install
COPY . .
RUN pnpm build
# ---- Serve stage ----
FROM nginx:alpine
# ---- Backend runtime ----
FROM python:3.11-slim
WORKDIR /app
COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
RUN apt-get update && apt-get install -y --no-install-recommends gcc \
&& rm -rf /var/lib/apt/lists/*
EXPOSE 3015
CMD ["nginx", "-g", "daemon off;"]
COPY backend/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY backend/ .
COPY --from=frontend-build /app/dist ./dist
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
+8 -1
View File
@@ -1,5 +1,7 @@
import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from contextlib import asynccontextmanager
from dotenv import load_dotenv
@@ -15,7 +17,7 @@ async def lifespan(app: FastAPI):
yield
app = FastAPI(title="A股走势追踪 API", version="1.0.0", lifespan=lifespan)
app = FastAPI(title="AUV API", version="1.0.0", lifespan=lifespan)
app.add_middleware(
CORSMiddleware,
@@ -29,3 +31,8 @@ app.include_router(stock.router, prefix="/api/stock")
app.include_router(collections.router, prefix="/api/collections")
app.include_router(shares.router, prefix="/api/share")
app.include_router(sectors.router, prefix="/api/sectors")
# 生产模式:后端同时托管前端静态文件
dist_path = os.path.join(os.path.dirname(__file__), "dist")
if os.path.isdir(dist_path):
app.mount("/", StaticFiles(directory=dist_path, html=True), name="static")
+7 -30
View File
@@ -1,24 +1,15 @@
#!/usr/bin/env bash
set -euo pipefail
# ============================================
# 多架构构建 & 推送脚本
# 用法:
# DOCKER_USER=yourname ./buildx-push.sh
# DOCKER_USER=yourname VERSION=v1.0.0 ./buildx-push.sh
# ============================================
DOCKER_USER="${DOCKER_USER:-DOCKER_USER}"
DOCKER_USER="${DOCKER_USER:-mirrors2}"
VERSION="${VERSION:-$(git describe --tags --always 2>/dev/null || echo latest)}"
PLATFORMS="linux/amd64,linux/arm64"
# 确保 buildx 可用
if ! docker buildx version &>/dev/null; then
echo "❌ docker buildx 不可用,请安装或升级 Docker"
echo "❌ docker buildx 不可用"
exit 1
fi
# 创建/复用 multiarch builder
if ! docker buildx inspect multiarch &>/dev/null 2>&1; then
echo "🔧 创建 multiarch builder..."
docker buildx create --name multiarch --driver docker-container --use
@@ -29,29 +20,15 @@ docker buildx inspect --bootstrap
echo ""
echo "========================================"
echo "🚀 构建 backend (${PLATFORMS})"
echo " tag: ${DOCKER_USER}/meoo-backend:${VERSION}"
echo "🚀 构建 app (${PLATFORMS})"
echo " tag: ${DOCKER_USER}/auv:${VERSION}"
echo "========================================"
docker buildx build \
--platform "${PLATFORMS}" \
-t "${DOCKER_USER}/meoo-backend:${VERSION}" \
-t "${DOCKER_USER}/meoo-backend:latest" \
--push \
./backend
echo ""
echo "========================================"
echo "🚀 构建 frontend (${PLATFORMS})"
echo " tag: ${DOCKER_USER}/meoo-frontend:${VERSION}"
echo "========================================"
docker buildx build \
--platform "${PLATFORMS}" \
-t "${DOCKER_USER}/meoo-frontend:${VERSION}" \
-t "${DOCKER_USER}/meoo-frontend:latest" \
-t "${DOCKER_USER}/auv:${VERSION}" \
-t "${DOCKER_USER}/auv:latest" \
--push \
.
echo ""
echo "✅ 完成!"
echo " backend: ${DOCKER_USER}/meoo-backend:${VERSION}"
echo " frontend: ${DOCKER_USER}/meoo-frontend:${VERSION}"
echo "✅ 完成!${DOCKER_USER}/auv:${VERSION}"
+3 -22
View File
@@ -1,29 +1,10 @@
services:
backend:
app:
image: ${DOCKER_USER:-mirrors2}/meoo:${VERSION:-latest}
build:
context: ./backend
# 构建时指定架构,docker buildx 自动处理
x-bake:
platforms:
- linux/amd64
- linux/arm64
image: ${DOCKER_USER:-DOCKER_USER}/meoo-backend:${VERSION:-latest}
context: .
ports:
- "8000:8000"
env_file:
- ./backend/.env
restart: unless-stopped
frontend:
build:
context: .
x-bake:
platforms:
- linux/amd64
- linux/arm64
image: ${DOCKER_USER:-DOCKER_USER}/meoo-frontend:${VERSION:-latest}
ports:
- "3015:3015"
depends_on:
- backend
restart: unless-stopped
-16
View File
@@ -1,16 +0,0 @@
server {
listen 3015;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://backend:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
+48 -48
View File
@@ -1,5 +1,5 @@
{
"name": "a-share-tracker",
"name": "auv",
"version": "1.0.0",
"private": true,
"type": "module",
@@ -10,65 +10,65 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@hookform/resolvers": "^5.2.2",
"@radix-ui/react-accordion": "^1.2.12",
"@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-aspect-ratio": "^1.1.8",
"@radix-ui/react-avatar": "^1.1.11",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-context-menu": "^2.2.16",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-hover-card": "^1.1.15",
"@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-menubar": "^1.1.16",
"@radix-ui/react-navigation-menu": "^1.2.14",
"@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-progress": "^1.1.8",
"@radix-ui/react-radio-group": "^1.3.8",
"@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-separator": "^1.1.8",
"@radix-ui/react-slider": "^1.3.6",
"@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-switch": "^1.2.6",
"@radix-ui/react-tabs": "^1.1.13",
"@radix-ui/react-toggle": "^1.1.10",
"@radix-ui/react-toggle-group": "^1.1.11",
"@radix-ui/react-tooltip": "^1.2.8",
"@tailwindcss/vite": "^4.2.1",
"@tanstack/react-query": "^5.83.0",
"@tanstack/react-router": "^1.168.25",
"@tanstack/router-plugin": "^1.167.28",
"@hookform/resolvers": "^5.4.0",
"@radix-ui/react-accordion": "^1.2.15",
"@radix-ui/react-alert-dialog": "^1.1.18",
"@radix-ui/react-aspect-ratio": "^1.1.11",
"@radix-ui/react-avatar": "^1.2.1",
"@radix-ui/react-checkbox": "^1.3.6",
"@radix-ui/react-collapsible": "^1.1.15",
"@radix-ui/react-context-menu": "^2.3.2",
"@radix-ui/react-dialog": "^1.1.18",
"@radix-ui/react-dropdown-menu": "^2.1.19",
"@radix-ui/react-hover-card": "^1.1.18",
"@radix-ui/react-label": "^2.1.11",
"@radix-ui/react-menubar": "^1.1.19",
"@radix-ui/react-navigation-menu": "^1.2.17",
"@radix-ui/react-popover": "^1.1.18",
"@radix-ui/react-progress": "^1.1.11",
"@radix-ui/react-radio-group": "^1.4.2",
"@radix-ui/react-scroll-area": "^1.2.13",
"@radix-ui/react-select": "^2.3.2",
"@radix-ui/react-separator": "^1.1.11",
"@radix-ui/react-slider": "^1.4.2",
"@radix-ui/react-slot": "^1.3.0",
"@radix-ui/react-switch": "^1.3.2",
"@radix-ui/react-tabs": "^1.1.16",
"@radix-ui/react-toggle": "^1.1.13",
"@radix-ui/react-toggle-group": "^1.1.14",
"@radix-ui/react-tooltip": "^1.2.11",
"@tailwindcss/vite": "^4.3.2",
"@tanstack/react-query": "^5.101.2",
"@tanstack/react-router": "^1.170.17",
"@tanstack/router-plugin": "^1.168.19",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"date-fns": "^4.1.0",
"date-fns": "^4.4.0",
"embla-carousel-react": "^8.6.0",
"framer-motion": "^11.18.2",
"input-otp": "^1.4.2",
"lucide-react": "^0.575.0",
"react": "^19.2.0",
"react": "^19.2.7",
"react-day-picker": "^9.14.0",
"react-dom": "^19.2.0",
"react-hook-form": "^7.71.2",
"react-resizable-panels": "^4.6.5",
"react-dom": "^19.2.7",
"react-hook-form": "^7.81.0",
"react-resizable-panels": "^4.12.1",
"recharts": "^2.15.4",
"sonner": "^2.0.7",
"tailwind-merge": "^3.5.0",
"tailwindcss": "^4.2.1",
"tw-animate-css": "^1.3.4",
"tailwind-merge": "^3.6.0",
"tailwindcss": "^4.3.2",
"tw-animate-css": "^1.4.0",
"vaul": "^1.1.2",
"vite-tsconfig-paths": "^6.0.2",
"zod": "^3.24.2"
"vite-tsconfig-paths": "^6.1.1",
"zod": "^3.25.76"
},
"devDependencies": {
"@types/node": "^22.16.5",
"@types/react": "^19.2.0",
"@types/react-dom": "^19.2.0",
"@vitejs/plugin-react": "^5.0.4",
"typescript": "^5.8.3",
"vite": "^7.3.1"
"@types/node": "^22.20.0",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.2.0",
"typescript": "^5.9.3",
"vite": "^7.3.6"
}
}
+66 -66
View File
@@ -9,97 +9,97 @@ importers:
.:
dependencies:
'@hookform/resolvers':
specifier: ^5.2.2
version: 5.4.0(react-hook-form@7.80.0(react@19.2.7))
specifier: ^5.4.0
version: 5.4.0(react-hook-form@7.81.0(react@19.2.7))
'@radix-ui/react-accordion':
specifier: ^1.2.12
specifier: ^1.2.15
version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-alert-dialog':
specifier: ^1.1.15
specifier: ^1.1.18
version: 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-aspect-ratio':
specifier: ^1.1.8
specifier: ^1.1.11
version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-avatar':
specifier: ^1.1.11
specifier: ^1.2.1
version: 1.2.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-checkbox':
specifier: ^1.3.3
specifier: ^1.3.6
version: 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-collapsible':
specifier: ^1.1.12
specifier: ^1.1.15
version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-context-menu':
specifier: ^2.2.16
specifier: ^2.3.2
version: 2.3.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-dialog':
specifier: ^1.1.15
specifier: ^1.1.18
version: 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.16
specifier: ^2.1.19
version: 2.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-hover-card':
specifier: ^1.1.15
specifier: ^1.1.18
version: 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-label':
specifier: ^2.1.8
specifier: ^2.1.11
version: 2.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-menubar':
specifier: ^1.1.16
specifier: ^1.1.19
version: 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-navigation-menu':
specifier: ^1.2.14
specifier: ^1.2.17
version: 1.2.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-popover':
specifier: ^1.1.15
specifier: ^1.1.18
version: 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-progress':
specifier: ^1.1.8
specifier: ^1.1.11
version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-radio-group':
specifier: ^1.3.8
specifier: ^1.4.2
version: 1.4.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-scroll-area':
specifier: ^1.2.10
specifier: ^1.2.13
version: 1.2.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-select':
specifier: ^2.2.6
specifier: ^2.3.2
version: 2.3.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-separator':
specifier: ^1.1.8
specifier: ^1.1.11
version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-slider':
specifier: ^1.3.6
specifier: ^1.4.2
version: 1.4.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-slot':
specifier: ^1.2.4
specifier: ^1.3.0
version: 1.3.0(@types/react@19.2.17)(react@19.2.7)
'@radix-ui/react-switch':
specifier: ^1.2.6
specifier: ^1.3.2
version: 1.3.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-tabs':
specifier: ^1.1.13
specifier: ^1.1.16
version: 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-toggle':
specifier: ^1.1.10
specifier: ^1.1.13
version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-toggle-group':
specifier: ^1.1.11
specifier: ^1.1.14
version: 1.1.14(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-tooltip':
specifier: ^1.2.8
specifier: ^1.2.11
version: 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@tailwindcss/vite':
specifier: ^4.2.1
specifier: ^4.3.2
version: 4.3.2(vite@7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5))
'@tanstack/react-query':
specifier: ^5.83.0
specifier: ^5.101.2
version: 5.101.2(react@19.2.7)
'@tanstack/react-router':
specifier: ^1.168.25
specifier: ^1.170.17
version: 1.170.17(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@tanstack/router-plugin':
specifier: ^1.167.28
specifier: ^1.168.19
version: 1.168.19(@tanstack/react-router@1.170.17(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(esbuild@0.28.1)(rollup@4.62.2)(vite@7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5))
class-variance-authority:
specifier: ^0.7.1
@@ -111,7 +111,7 @@ importers:
specifier: ^1.1.1
version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
date-fns:
specifier: ^4.1.0
specifier: ^4.4.0
version: 4.4.0
embla-carousel-react:
specifier: ^8.6.0
@@ -126,20 +126,20 @@ importers:
specifier: ^0.575.0
version: 0.575.0(react@19.2.7)
react:
specifier: ^19.2.0
specifier: ^19.2.7
version: 19.2.7
react-day-picker:
specifier: ^9.14.0
version: 9.14.0(react@19.2.7)
react-dom:
specifier: ^19.2.0
specifier: ^19.2.7
version: 19.2.7(react@19.2.7)
react-hook-form:
specifier: ^7.71.2
version: 7.80.0(react@19.2.7)
specifier: ^7.81.0
version: 7.81.0(react@19.2.7)
react-resizable-panels:
specifier: ^4.6.5
version: 4.12.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
specifier: ^4.12.1
version: 4.12.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
recharts:
specifier: ^2.15.4
version: 2.15.4(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
@@ -147,41 +147,41 @@ importers:
specifier: ^2.0.7
version: 2.0.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
tailwind-merge:
specifier: ^3.5.0
specifier: ^3.6.0
version: 3.6.0
tailwindcss:
specifier: ^4.2.1
specifier: ^4.3.2
version: 4.3.2
tw-animate-css:
specifier: ^1.3.4
specifier: ^1.4.0
version: 1.4.0
vaul:
specifier: ^1.1.2
version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
vite-tsconfig-paths:
specifier: ^6.0.2
specifier: ^6.1.1
version: 6.1.1(typescript@5.9.3)(vite@7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5))
zod:
specifier: ^3.24.2
specifier: ^3.25.76
version: 3.25.76
devDependencies:
'@types/node':
specifier: ^22.16.5
specifier: ^22.20.0
version: 22.20.0
'@types/react':
specifier: ^19.2.0
specifier: ^19.2.17
version: 19.2.17
'@types/react-dom':
specifier: ^19.2.0
specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.17)
'@vitejs/plugin-react':
specifier: ^5.0.4
specifier: ^5.2.0
version: 5.2.0(vite@7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5))
typescript:
specifier: ^5.8.3
specifier: ^5.9.3
version: 5.9.3
vite:
specifier: ^7.3.1
specifier: ^7.3.6
version: 7.3.6(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.5)
packages:
@@ -1448,8 +1448,8 @@ packages:
babel-dead-code-elimination@1.0.12:
resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==}
baseline-browser-mapping@2.10.41:
resolution: {integrity: sha512-WwS7MHhqGHHlaVsqRZnhvCEMS0owDX+SxRlve7JkuH7My1Ara3ZriTmCQupPfYjxMZ8I/tgxtJYr2t7taHaH4A==}
baseline-browser-mapping@2.10.42:
resolution: {integrity: sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -1563,8 +1563,8 @@ packages:
dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
electron-to-chromium@1.5.385:
resolution: {integrity: sha512-78sa/M08MNAYHQfjoWMvOlKQqZ0ElhSm/L5HNUc96VZ3b+KvDVnngFm8sYQy0XrhTRgAhggHr5abA7yTvRdo4Q==}
electron-to-chromium@1.5.387:
resolution: {integrity: sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ==}
embla-carousel-react@8.6.0:
resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==}
@@ -1819,8 +1819,8 @@ packages:
peerDependencies:
react: ^19.2.7
react-hook-form@7.80.0:
resolution: {integrity: sha512-4P+fk6oXsxY+6xSj7Euhc2sumQD8zQqCuVHoJwoyp9EchP+IUW9OESB7uHFJOKsIBQ4MQqYE84INJFqUCYNoOg==}
react-hook-form@7.81.0:
resolution: {integrity: sha512-ocbmr2p5KBMoAfj4WCUvped33lVi1Kd5DuDUvQDnB6VEAacOjPI/jMbtDdbhco4y9ct4xUuCmMY0b/C9L0QHjw==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^16.8.0 || ^17 || ^18 || ^19
@@ -1855,8 +1855,8 @@ packages:
'@types/react':
optional: true
react-resizable-panels@4.12.0:
resolution: {integrity: sha512-t/Gp57qSCxGQ52ckhz+8lM7dnuymeU95TEzl2U203qEbGkSLHrtm7US2/ANzq/zOlja3CwPTAfCDuh1unv9mfw==}
react-resizable-panels@4.12.1:
resolution: {integrity: sha512-ElE/UpOvMLRWtAqbCgyizHXcbws8RPMyN3cBqmdY17Nxr5f01+DEwzOLqhgcy68GSnjtIUFgKWKl8aIgx5aypQ==}
peerDependencies:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
@@ -2322,10 +2322,10 @@ snapshots:
'@floating-ui/utils@0.2.11': {}
'@hookform/resolvers@5.4.0(react-hook-form@7.80.0(react@19.2.7))':
'@hookform/resolvers@5.4.0(react-hook-form@7.81.0(react@19.2.7))':
dependencies:
'@standard-schema/utils': 0.3.0
react-hook-form: 7.80.0(react@19.2.7)
react-hook-form: 7.81.0(react@19.2.7)
'@jridgewell/gen-mapping@0.3.13':
dependencies:
@@ -3310,13 +3310,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
baseline-browser-mapping@2.10.41: {}
baseline-browser-mapping@2.10.42: {}
browserslist@4.28.4:
dependencies:
baseline-browser-mapping: 2.10.41
baseline-browser-mapping: 2.10.42
caniuse-lite: 1.0.30001800
electron-to-chromium: 1.5.385
electron-to-chromium: 1.5.387
node-releases: 2.0.50
update-browserslist-db: 1.2.3(browserslist@4.28.4)
@@ -3409,7 +3409,7 @@ snapshots:
'@babel/runtime': 7.29.7
csstype: 3.2.3
electron-to-chromium@1.5.385: {}
electron-to-chromium@1.5.387: {}
embla-carousel-react@8.6.0(react@19.2.7):
dependencies:
@@ -3618,7 +3618,7 @@ snapshots:
react: 19.2.7
scheduler: 0.27.0
react-hook-form@7.80.0(react@19.2.7):
react-hook-form@7.81.0(react@19.2.7):
dependencies:
react: 19.2.7
@@ -3647,7 +3647,7 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.17
react-resizable-panels@4.12.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
react-resizable-panels@4.12.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
dependencies:
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)