Compare commits
4 Commits
2ece5174a7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 5b19d9fe69 | |||
| 1b7210de4f | |||
| 264f00c138 | |||
| 93c714a93b |
19
.claude/launch.json
Normal file
19
.claude/launch.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"version": "0.0.1",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Frontend (Vite)",
|
||||
"runtimeExecutable": "npm",
|
||||
"runtimeArgs": ["run", "dev"],
|
||||
"cwd": "frontend",
|
||||
"port": 5173
|
||||
},
|
||||
{
|
||||
"name": "Backend (FastAPI/uvicorn)",
|
||||
"runtimeExecutable": "python",
|
||||
"runtimeArgs": ["-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"],
|
||||
"cwd": "backend",
|
||||
"port": 8000
|
||||
}
|
||||
]
|
||||
}
|
||||
41
.claude/settings.json
Normal file
41
.claude/settings.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(python -c ' *)",
|
||||
"Bash(python)",
|
||||
"Bash(npm install *)",
|
||||
"Bash(npm run *)",
|
||||
"Bash(echo \"Vite PID: $!\")",
|
||||
"Read(//tmp/**)",
|
||||
"Bash(curl -s http://localhost:5173/)",
|
||||
"Bash(curl -s \"http://localhost:8000/api/news/featured\")",
|
||||
"Bash(python -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\('date:', d['date']\\); print\\('items:', len\\(d['items']\\)\\); [print\\(f\\\\\" #{i['featured_rank']} [{i['importance_score']}]\\\\\", i['title_zh'][:50].encode\\('ascii','replace'\\).decode\\(\\)\\) for i in d['items']]\")",
|
||||
"Bash(curl -s \"http://localhost:8000/api/news/featured\" -w \"\\\\nHTTP %{http_code}\")",
|
||||
"Bash(netstat -ano)",
|
||||
"Bash(taskkill //F //PID 45288)",
|
||||
"Bash(PYTHONIOENCODING=utf-8 python -m uvicorn app.main:app --host 0.0.0.0 --port 8000)",
|
||||
"Bash(echo \"PID: $!\")",
|
||||
"Bash(curl -s http://localhost:8000/api/health)",
|
||||
"Bash(curl -s \"http://localhost:8000/api/news/featured\" -w \"\\\\nHTTP_STATUS:%{http_code}\")",
|
||||
"Bash(curl -s http://localhost:8000/api/news/featured)",
|
||||
"Bash(python3 -c \"import sys,json; d=json.load\\(sys.stdin\\); print\\('items:', len\\(d['items']\\)\\)\")",
|
||||
"Bash(python -c \"import sys,json; d=json.load\\(open\\('/dev/stdin'\\)\\); print\\('items:', len\\(d['items']\\)\\)\")",
|
||||
"Bash(python3 -c ' *)",
|
||||
"Bash(python \"C:/Users/Chenwu/AppData/Local/Temp/validate.py\")",
|
||||
"Bash(cat)",
|
||||
"Bash(curl -s \"http://localhost:8000/api/news\")",
|
||||
"Bash(python \"C:/Users/Chenwu/AppData/Local/Temp/validate2.py\")",
|
||||
"Bash(curl -s \"http://localhost:8000/api/news/dates\")",
|
||||
"Bash(curl -s \"http://localhost:8000/api/news/104\")",
|
||||
"Bash(curl -s \"http://localhost:8000/api/news?category=%E4%B8%B4%E5%BA%8A%E7%A0%94%E7%A9%B6\")",
|
||||
"Bash(npx playwright *)",
|
||||
"Read(//c/Users/Chenwu/.cache/**)",
|
||||
"Bash(npx vue-tsc *)",
|
||||
"Bash(npx vite *)",
|
||||
"Bash(gh api *)",
|
||||
"WebFetch(domain:raw.githubusercontent.com)",
|
||||
"Bash(node -e ' *)",
|
||||
"Read(//c/tmp/**)"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,15 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"WebFetch(domain:aihot.virxact.com)"
|
||||
"WebFetch(domain:aihot.virxact.com)",
|
||||
"Bash(Get-Content \"c:\\\\Users\\\\Chenwu\\\\OneDrive - AZCollaboration\\\\Desktop\\\\tmp\\\\ai_news_v1\\\\backend\\\\requirements.txt\")",
|
||||
"Bash(Test-Path \"c:\\\\Users\\\\Chenwu\\\\OneDrive - AZCollaboration\\\\Desktop\\\\tmp\\\\ai_news_v1\\\\.env.example\")",
|
||||
"Bash(pip show *)",
|
||||
"Bash(pip install *)",
|
||||
"Bash(docker --version)",
|
||||
"Bash(psql --version)",
|
||||
"Bash(python -c ' *)",
|
||||
"PowerShell(netstat -ano)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
319
README_STARTUP.md
Normal file
319
README_STARTUP.md
Normal file
@@ -0,0 +1,319 @@
|
||||
# 🚀 启动指南
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 方式一:本地开发 (推荐)
|
||||
|
||||
**前置条件:**
|
||||
- Python 3.9+
|
||||
- Node.js 18+
|
||||
- PostgreSQL 14+ (需要单独启动)
|
||||
|
||||
**Windows PowerShell:**
|
||||
```powershell
|
||||
.\start.ps1
|
||||
```
|
||||
|
||||
**Windows CMD:**
|
||||
```cmd
|
||||
start.bat
|
||||
```
|
||||
|
||||
**Mac/Linux:**
|
||||
```bash
|
||||
chmod +x start.sh
|
||||
./start.sh
|
||||
```
|
||||
|
||||
然后选择选项 `1` 进行本地开发。
|
||||
|
||||
**访问地址:**
|
||||
- 前端: http://localhost:5173
|
||||
- 后端: http://localhost:8000
|
||||
- API文档: http://localhost:8000/docs
|
||||
|
||||
---
|
||||
|
||||
### 方式二:Docker Compose (完全隔离)
|
||||
|
||||
**前置条件:**
|
||||
- Docker Desktop (包含 Docker Compose)
|
||||
|
||||
**启动:**
|
||||
```powershell
|
||||
.\start-docker.ps1
|
||||
```
|
||||
|
||||
或直接使用 docker-compose:
|
||||
```bash
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
**访问地址:**
|
||||
- 前端: http://localhost:3000
|
||||
- 后端: http://localhost:8000
|
||||
- API文档: http://localhost:8000/docs
|
||||
- 数据库: localhost:5432 (用户: pharma / 密码: pharma123)
|
||||
|
||||
---
|
||||
|
||||
## 详细说明
|
||||
|
||||
### 方式一:本地开发
|
||||
|
||||
#### Windows
|
||||
|
||||
1. **启动脚本:**
|
||||
- PowerShell: `.\start.ps1`
|
||||
- CMD: `start.bat`
|
||||
|
||||
2. **脚本会自动:**
|
||||
- 检查 Python 和 Node.js
|
||||
- 创建虚拟环境 (如需要)
|
||||
- 安装依赖包
|
||||
- 在新窗口启动后端和前端
|
||||
|
||||
3. **手动启动(可选):**
|
||||
|
||||
**后端:**
|
||||
```powershell
|
||||
cd backend
|
||||
python -m venv venv
|
||||
.\venv\Scripts\Activate.ps1
|
||||
pip install -r requirements.txt
|
||||
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||||
```
|
||||
|
||||
**前端(新终端):**
|
||||
```powershell
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
4. **PostgreSQL 配置:**
|
||||
- 确保 PostgreSQL 已启动
|
||||
- 默认连接: `postgresql://pharma:pharma123@localhost/pharma_news`
|
||||
- 如需修改,编辑 `.env` 文件
|
||||
|
||||
#### Mac/Linux
|
||||
|
||||
```bash
|
||||
# 给脚本执行权限
|
||||
chmod +x start.sh
|
||||
|
||||
# 运行脚本
|
||||
./start.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 方式二:Docker Compose
|
||||
|
||||
#### 基本命令
|
||||
|
||||
```bash
|
||||
# 启动所有服务(首次需要构建)
|
||||
docker-compose up
|
||||
|
||||
# 重新构建并启动
|
||||
docker-compose up --build
|
||||
|
||||
# 在后台运行
|
||||
docker-compose up -d
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f
|
||||
|
||||
# 查看特定服务日志
|
||||
docker-compose logs -f backend
|
||||
docker-compose logs -f frontend
|
||||
|
||||
# 停止服务
|
||||
docker-compose down
|
||||
|
||||
# 完全清理(包括数据)
|
||||
docker-compose down -v
|
||||
```
|
||||
|
||||
#### 常见问题
|
||||
|
||||
**问:如何修改端口?**
|
||||
|
||||
编辑 `docker-compose.yml`:
|
||||
```yaml
|
||||
ports:
|
||||
- "8080:8000" # 后端: 外部:内部
|
||||
- "3001:80" # 前端: 外部:内部
|
||||
```
|
||||
|
||||
**问:如何在容器内执行命令?**
|
||||
|
||||
```bash
|
||||
# 后端
|
||||
docker-compose exec backend python -m alembic upgrade head
|
||||
|
||||
# 前端
|
||||
docker-compose exec frontend npm run build
|
||||
```
|
||||
|
||||
**问:如何清理 Docker 数据?**
|
||||
|
||||
```bash
|
||||
# 停止并删除所有容器和卷
|
||||
docker-compose down -v
|
||||
|
||||
# 重新启动会创建新的数据库
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 环境变量配置
|
||||
|
||||
### 后端 (.env)
|
||||
|
||||
```env
|
||||
# PostgreSQL
|
||||
DATABASE_URL=postgresql://pharma:pharma123@localhost:5432/pharma_news
|
||||
|
||||
# LLM 服务
|
||||
LLM_API_KEY=your_api_key
|
||||
LLM_MODEL=gpt-4
|
||||
|
||||
# 其他配置
|
||||
LOG_LEVEL=INFO
|
||||
```
|
||||
|
||||
### 前端 (.env.local)
|
||||
|
||||
```env
|
||||
VITE_API_BASE_URL=http://localhost:8000/api
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 后端无法启动
|
||||
|
||||
```bash
|
||||
# 1. 检查端口是否被占用
|
||||
netstat -ano | findstr :8000 # Windows
|
||||
lsof -i :8000 # Mac/Linux
|
||||
|
||||
# 2. 检查 Python 和依赖
|
||||
python --version
|
||||
pip list | grep fastapi
|
||||
|
||||
# 3. 检查数据库连接
|
||||
# 确保 PostgreSQL 已启动,用户名和密码正确
|
||||
```
|
||||
|
||||
### 前端无法启动
|
||||
|
||||
```bash
|
||||
# 1. 清理依赖
|
||||
rm -rf node_modules package-lock.json
|
||||
npm install
|
||||
|
||||
# 2. 检查 Node 版本
|
||||
node --version
|
||||
npm --version
|
||||
|
||||
# 3. 清理 Vite 缓存
|
||||
rm -rf dist .vite
|
||||
```
|
||||
|
||||
### Docker 容器无法启动
|
||||
|
||||
```bash
|
||||
# 查看详细错误日志
|
||||
docker-compose logs
|
||||
|
||||
# 重建镜像
|
||||
docker-compose build --no-cache
|
||||
|
||||
# 清理所有容器和镜像
|
||||
docker system prune -a
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 开发建议
|
||||
|
||||
### 热重载
|
||||
|
||||
- **后端**: Uvicorn 自动热重载 (修改文件后自动重启)
|
||||
- **前端**: Vite 自动热重载 (修改代码后自动更新浏览器)
|
||||
|
||||
### 调试
|
||||
|
||||
**后端:**
|
||||
```python
|
||||
# 在代码中添加断点
|
||||
import pdb; pdb.set_trace()
|
||||
|
||||
# 或使用 IDE 的调试功能
|
||||
```
|
||||
|
||||
**前端:**
|
||||
- 使用浏览器 DevTools (F12)
|
||||
- VS Code Debugger (需要配置 launch.json)
|
||||
|
||||
### 性能监测
|
||||
|
||||
```bash
|
||||
# 后端性能
|
||||
docker-compose stats backend
|
||||
|
||||
# 前端性能
|
||||
npm run build # 检查构建体积
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 生产部署
|
||||
|
||||
### 使用 Docker
|
||||
|
||||
```bash
|
||||
# 构建生产镜像
|
||||
docker-compose -f docker-compose.yml -f docker-compose.prod.yml build
|
||||
|
||||
# 启动生产环境
|
||||
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
||||
```
|
||||
|
||||
### 本地生产预览
|
||||
|
||||
```bash
|
||||
# 后端
|
||||
uvicorn app.main:app --host 0.0.0.0 --port 8000
|
||||
|
||||
# 前端
|
||||
npm run build
|
||||
npm run preview
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 脚本文件说明
|
||||
|
||||
| 文件 | 说明 | 环境 |
|
||||
|------|------|------|
|
||||
| `start.ps1` | 本地开发启动脚本 | Windows PowerShell |
|
||||
| `start.bat` | 本地开发启动脚本 | Windows CMD |
|
||||
| `start.sh` | 本地开发启动脚本 | Mac/Linux |
|
||||
| `start-docker.ps1` | Docker Compose 启动脚本 | Windows PowerShell |
|
||||
|
||||
---
|
||||
|
||||
## 更多帮助
|
||||
|
||||
- FastAPI 文档: https://fastapi.tiangolo.com/
|
||||
- Vue.js 文档: https://vuejs.org/
|
||||
- Vite 文档: https://vitejs.dev/
|
||||
- PostgreSQL 文档: https://www.postgresql.org/docs/
|
||||
- Docker 文档: https://docs.docker.com/
|
||||
|
||||
291
backend.log
Normal file
291
backend.log
Normal file
@@ -0,0 +1,291 @@
|
||||
INFO: Will watch for changes in these directories: ['C:\\Users\\Chenwu\\OneDrive - AZCollaboration\\Desktop\\tmp\\ai_news_v1\\backend']
|
||||
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
|
||||
INFO: Started reloader process [45476] using WatchFiles
|
||||
INFO: Started server process [55920]
|
||||
INFO: Waiting for application startup.
|
||||
INFO: Application startup complete.
|
||||
INFO: 127.0.0.1:62512 - "GET /api/news?page_size=1&date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51410 - "GET /api/news?page_size=20&date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:57871 - "GET /api/news?page_size=20&date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:50345 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:62949 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:50346 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:63742 - "GET /api/news?page_size=20&date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
Daily pipeline failed: (sqlalchemy.dialects.postgresql.asyncpg.InterfaceError) <class 'asyncpg.exceptions._base.InterfaceError'>: connection is closed
|
||||
[SQL: INSERT INTO system_logs (event_type, message, level, created_at) VALUES ($1::VARCHAR, $2::VARCHAR, $3::VARCHAR, $4::TIMESTAMP WITHOUT TIME ZONE) RETURNING system_logs.id]
|
||||
[parameters: ('pipeline_start', '\u6bcf\u65e5\u6d41\u6c34\u7ebf\u542f\u52a8', 'INFO', datetime.datetime(2026, 5, 26, 22, 0, 0, 12142))]
|
||||
(Background on this error at: https://sqlalche.me/e/20/rvf5)
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 843, in _start_transaction
|
||||
self._transaction = self._connection.transaction(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
isolation=self.isolation_level,
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
readonly=self.readonly,
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
deferrable=self.deferrable,
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\asyncpg\connection.py", line 302, in transaction
|
||||
self._check_open()
|
||||
~~~~~~~~~~~~~~~~^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\asyncpg\connection.py", line 1605, in _check_open
|
||||
raise exceptions.InterfaceError('connection is closed')
|
||||
asyncpg.exceptions._base.InterfaceError: connection is closed
|
||||
|
||||
The above exception was the direct cause of the following exception:
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
|
||||
self.dialect.do_execute(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
cursor, str_statement, effective_parameters, context
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
|
||||
cursor.execute(statement, parameters)
|
||||
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute
|
||||
self._adapt_connection.await_(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
self._prepare_and_execute(operation, parameters)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only
|
||||
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
||||
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn
|
||||
value = await result
|
||||
^^^^^^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 520, in _prepare_and_execute
|
||||
await adapt_connection._start_transaction()
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 850, in _start_transaction
|
||||
self._handle_exception(error)
|
||||
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception
|
||||
raise translated_error from error
|
||||
sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.InterfaceError: <class 'asyncpg.exceptions._base.InterfaceError'>: connection is closed
|
||||
|
||||
The above exception was the direct cause of the following exception:
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\Chenwu\OneDrive - AZCollaboration\Desktop\tmp\ai_news_v1\backend\app\scheduler.py", line 14, in daily_pipeline_job
|
||||
await run_daily_pipeline(db)
|
||||
File "C:\Users\Chenwu\OneDrive - AZCollaboration\Desktop\tmp\ai_news_v1\backend\app\ai\processor.py", line 120, in run_daily_pipeline
|
||||
await _log(db, "INFO", "pipeline_start", "\u6bcf\u65e5\u6d41\u6c34\u7ebf\u542f\u52a8")
|
||||
File "C:\Users\Chenwu\OneDrive - AZCollaboration\Desktop\tmp\ai_news_v1\backend\app\ai\processor.py", line 47, in _log
|
||||
await db.commit()
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\ext\asyncio\session.py", line 999, in commit
|
||||
await greenlet_spawn(self.sync_session.commit)
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 203, in greenlet_spawn
|
||||
result = context.switch(value)
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\session.py", line 2034, in commit
|
||||
trans.commit(_to_root=True)
|
||||
~~~~~~~~~~~~^^^^^^^^^^^^^^^
|
||||
File "<string>", line 2, in commit
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\state_changes.py", line 137, in _go
|
||||
ret_value = fn(self, *arg, **kw)
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\session.py", line 1315, in commit
|
||||
self._prepare_impl()
|
||||
~~~~~~~~~~~~~~~~~~^^
|
||||
File "<string>", line 2, in _prepare_impl
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\state_changes.py", line 137, in _go
|
||||
ret_value = fn(self, *arg, **kw)
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\session.py", line 1290, in _prepare_impl
|
||||
self.session.flush()
|
||||
~~~~~~~~~~~~~~~~~~^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\session.py", line 4352, in flush
|
||||
self._flush(objects)
|
||||
~~~~~~~~~~~^^^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\session.py", line 4487, in _flush
|
||||
with util.safe_reraise():
|
||||
~~~~~~~~~~~~~~~~~^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\util\langhelpers.py", line 122, in __exit__
|
||||
raise exc_value.with_traceback(exc_tb)
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\session.py", line 4448, in _flush
|
||||
flush_context.execute()
|
||||
~~~~~~~~~~~~~~~~~~~~~^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\unitofwork.py", line 465, in execute
|
||||
rec.execute(self)
|
||||
~~~~~~~~~~~^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\unitofwork.py", line 641, in execute
|
||||
util.preloaded.orm_persistence.save_obj(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
self.mapper,
|
||||
^^^^^^^^^^^^
|
||||
uow.states_for_mapper_hierarchy(self.mapper, False, False),
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
uow,
|
||||
^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\persistence.py", line 94, in save_obj
|
||||
_emit_insert_statements(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
base_mapper,
|
||||
^^^^^^^^^^^^
|
||||
...<3 lines>...
|
||||
insert,
|
||||
^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\orm\persistence.py", line 1234, in _emit_insert_statements
|
||||
result = connection.execute(
|
||||
statement,
|
||||
params,
|
||||
execution_options=execution_options,
|
||||
)
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\base.py", line 1421, in execute
|
||||
return meth(
|
||||
self,
|
||||
distilled_parameters,
|
||||
execution_options or NO_OPTIONS,
|
||||
)
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection
|
||||
return connection._execute_clauseelement(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
self, distilled_params, execution_options
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\base.py", line 1643, in _execute_clauseelement
|
||||
ret = self._execute_context(
|
||||
dialect,
|
||||
...<8 lines>...
|
||||
cache_hit=cache_hit,
|
||||
)
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
|
||||
return self._exec_single_context(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
dialect, context, statement, parameters
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
|
||||
self._handle_dbapi_exception(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
e, str_statement, effective_parameters, cursor, context
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\base.py", line 2365, in _handle_dbapi_exception
|
||||
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
|
||||
self.dialect.do_execute(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
cursor, str_statement, effective_parameters, context
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
|
||||
cursor.execute(statement, parameters)
|
||||
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 585, in execute
|
||||
self._adapt_connection.await_(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
self._prepare_and_execute(operation, parameters)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only
|
||||
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
|
||||
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn
|
||||
value = await result
|
||||
^^^^^^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 520, in _prepare_and_execute
|
||||
await adapt_connection._start_transaction()
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 850, in _start_transaction
|
||||
self._handle_exception(error)
|
||||
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
File "C:\Users\Chenwu\AppData\Roaming\Python\Python314\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 797, in _handle_exception
|
||||
raise translated_error from error
|
||||
sqlalchemy.exc.InterfaceError: (sqlalchemy.dialects.postgresql.asyncpg.InterfaceError) <class 'asyncpg.exceptions._base.InterfaceError'>: connection is closed
|
||||
[SQL: INSERT INTO system_logs (event_type, message, level, created_at) VALUES ($1::VARCHAR, $2::VARCHAR, $3::VARCHAR, $4::TIMESTAMP WITHOUT TIME ZONE) RETURNING system_logs.id]
|
||||
[parameters: ('pipeline_start', '\u6bcf\u65e5\u6d41\u6c34\u7ebf\u542f\u52a8', 'INFO', datetime.datetime(2026, 5, 26, 22, 0, 0, 12142))]
|
||||
(Background on this error at: https://sqlalche.me/e/20/rvf5)
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:61914 - "GET /api/news?page_size=1&date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 58.37.56.82:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-26 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-26&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 149.112.116.74:0 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:61458 - "GET /api/news/featured?date=2026-05-27 HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:65226 - "GET /api/news/dates HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:61459 - "GET /api/news?date=2026-05-27&page=1 HTTP/1.1" 200 OK
|
||||
37
backend/alembic.ini
Normal file
37
backend/alembic.ini
Normal file
@@ -0,0 +1,37 @@
|
||||
[alembic]
|
||||
script_location = alembic
|
||||
sqlalchemy.url = postgresql+asyncpg://ai_news:PrDTEr6tGcyWX6G2@chenwuzhu.cn:5432/ai_news
|
||||
|
||||
[loggers]
|
||||
keys = root,sqlalchemy,alembic
|
||||
|
||||
[handlers]
|
||||
keys = console
|
||||
|
||||
[formatters]
|
||||
keys = generic
|
||||
|
||||
[logger_root]
|
||||
level = WARN
|
||||
handlers = console
|
||||
qualname =
|
||||
|
||||
[logger_sqlalchemy]
|
||||
level = WARN
|
||||
handlers =
|
||||
qualname = sqlalchemy.engine
|
||||
|
||||
[logger_alembic]
|
||||
level = INFO
|
||||
handlers =
|
||||
qualname = alembic
|
||||
|
||||
[handler_console]
|
||||
class = StreamHandler
|
||||
args = (sys.stderr,)
|
||||
level = NOTSET
|
||||
formatter = generic
|
||||
|
||||
[formatter_generic]
|
||||
format = %(levelname)-5.5s [%(name)s] %(message)s
|
||||
datefmt = %H:%M:%S
|
||||
BIN
backend/alembic/__pycache__/env.cpython-314.pyc
Normal file
BIN
backend/alembic/__pycache__/env.cpython-314.pyc
Normal file
Binary file not shown.
55
backend/alembic/env.py
Normal file
55
backend/alembic/env.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import asyncio
|
||||
from logging.config import fileConfig
|
||||
|
||||
from sqlalchemy import pool
|
||||
from sqlalchemy.ext.asyncio import async_engine_from_config
|
||||
|
||||
from alembic import context
|
||||
|
||||
config = context.config
|
||||
|
||||
if config.config_file_name is not None:
|
||||
fileConfig(config.config_file_name)
|
||||
|
||||
# Import all models so Alembic can detect schema changes
|
||||
from app.models.news import Base # noqa: E402
|
||||
target_metadata = Base.metadata
|
||||
|
||||
|
||||
def run_migrations_offline() -> None:
|
||||
url = config.get_main_option("sqlalchemy.url")
|
||||
context.configure(
|
||||
url=url,
|
||||
target_metadata=target_metadata,
|
||||
literal_binds=True,
|
||||
dialect_opts={"paramstyle": "named"},
|
||||
)
|
||||
with context.begin_transaction():
|
||||
context.run_migrations()
|
||||
|
||||
|
||||
def do_run_migrations(connection):
|
||||
context.configure(connection=connection, target_metadata=target_metadata)
|
||||
with context.begin_transaction():
|
||||
context.run_migrations()
|
||||
|
||||
|
||||
async def run_async_migrations() -> None:
|
||||
connectable = async_engine_from_config(
|
||||
config.get_section(config.config_ini_section, {}),
|
||||
prefix="sqlalchemy.",
|
||||
poolclass=pool.NullPool,
|
||||
)
|
||||
async with connectable.connect() as connection:
|
||||
await connection.run_sync(do_run_migrations)
|
||||
await connectable.dispose()
|
||||
|
||||
|
||||
def run_migrations_online() -> None:
|
||||
asyncio.run(run_async_migrations())
|
||||
|
||||
|
||||
if context.is_offline_mode():
|
||||
run_migrations_offline()
|
||||
else:
|
||||
run_migrations_online()
|
||||
25
backend/alembic/script.py.mako
Normal file
25
backend/alembic/script.py.mako
Normal file
@@ -0,0 +1,25 @@
|
||||
"""${message}
|
||||
|
||||
Revision ID: ${up_revision}
|
||||
Revises: ${down_revision | comma,n}
|
||||
Create Date: ${create_date}
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
${imports if imports else ""}
|
||||
|
||||
revision: str = ${repr(up_revision)}
|
||||
down_revision: Union[str, None] = ${repr(down_revision)}
|
||||
branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
|
||||
depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
${upgrades if upgrades else "pass"}
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
${downgrades if downgrades else "pass"}
|
||||
95
backend/alembic/versions/0001_initial_schema.py
Normal file
95
backend/alembic/versions/0001_initial_schema.py
Normal file
@@ -0,0 +1,95 @@
|
||||
"""initial schema
|
||||
|
||||
Revision ID: 0001
|
||||
Revises:
|
||||
Create Date: 2026-05-26
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
revision: str = "0001"
|
||||
down_revision: Union[str, None] = None
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.create_table(
|
||||
"news_sources",
|
||||
sa.Column("id", sa.Integer(), primary_key=True),
|
||||
sa.Column("name", sa.String(100), nullable=False),
|
||||
sa.Column("url", sa.String(500), nullable=False),
|
||||
sa.Column("source_type", sa.String(20), nullable=False, server_default="rss"),
|
||||
sa.Column("language", sa.String(5), nullable=False, server_default="zh"),
|
||||
sa.Column("category", sa.String(50), nullable=True),
|
||||
sa.Column("is_active", sa.Boolean(), nullable=False, server_default="true"),
|
||||
sa.Column("created_at", sa.DateTime(), nullable=False),
|
||||
)
|
||||
|
||||
op.create_table(
|
||||
"raw_news",
|
||||
sa.Column("id", sa.Integer(), primary_key=True),
|
||||
sa.Column("source_id", sa.Integer(), sa.ForeignKey("news_sources.id"), nullable=True),
|
||||
sa.Column("title", sa.String(500), nullable=False),
|
||||
sa.Column("url", sa.String(1000), nullable=False, unique=True),
|
||||
sa.Column("raw_content", sa.Text(), nullable=True),
|
||||
sa.Column("published_at", sa.DateTime(), nullable=True),
|
||||
sa.Column("crawled_at", sa.DateTime(), nullable=False),
|
||||
sa.Column("status", sa.String(20), nullable=False, server_default="pending"),
|
||||
)
|
||||
|
||||
op.create_table(
|
||||
"processed_news",
|
||||
sa.Column("id", sa.Integer(), primary_key=True),
|
||||
sa.Column("raw_news_id", sa.Integer(), sa.ForeignKey("raw_news.id"), nullable=False),
|
||||
sa.Column("title_zh", sa.String(500), nullable=False),
|
||||
sa.Column("summary", sa.Text(), nullable=False),
|
||||
sa.Column("opinion", sa.Text(), nullable=True),
|
||||
sa.Column("keywords", postgresql.ARRAY(sa.String()), nullable=True),
|
||||
sa.Column("importance_score", sa.Float(), nullable=False, server_default="5.0"),
|
||||
sa.Column("importance_reason", sa.Text(), nullable=True),
|
||||
sa.Column("category", sa.String(50), nullable=False, server_default="行业动态"),
|
||||
sa.Column("is_featured", sa.Boolean(), nullable=False, server_default="false"),
|
||||
sa.Column("featured_rank", sa.Integer(), nullable=True),
|
||||
sa.Column("source_name", sa.String(200), nullable=True),
|
||||
sa.Column("source_url", sa.String(1000), nullable=True),
|
||||
sa.Column("published_at", sa.DateTime(), nullable=True),
|
||||
sa.Column("processed_at", sa.DateTime(), nullable=False),
|
||||
)
|
||||
|
||||
op.create_table(
|
||||
"llm_config",
|
||||
sa.Column("id", sa.Integer(), primary_key=True),
|
||||
sa.Column("name", sa.String(100), nullable=False),
|
||||
sa.Column("provider", sa.String(50), nullable=False),
|
||||
sa.Column("api_key", sa.String(500), nullable=False),
|
||||
sa.Column("base_url", sa.String(500), nullable=False),
|
||||
sa.Column("model_name", sa.String(200), nullable=False),
|
||||
sa.Column("is_active", sa.Boolean(), nullable=False, server_default="true"),
|
||||
sa.Column("created_at", sa.DateTime(), nullable=False),
|
||||
)
|
||||
|
||||
op.create_table(
|
||||
"system_logs",
|
||||
sa.Column("id", sa.Integer(), primary_key=True),
|
||||
sa.Column("event_type", sa.String(50), nullable=False),
|
||||
sa.Column("message", sa.Text(), nullable=False),
|
||||
sa.Column("level", sa.String(20), nullable=False, server_default="INFO"),
|
||||
sa.Column("created_at", sa.DateTime(), nullable=False),
|
||||
)
|
||||
|
||||
op.create_index("ix_raw_news_status", "raw_news", ["status"])
|
||||
op.create_index("ix_processed_news_processed_at", "processed_news", ["processed_at"])
|
||||
op.create_index("ix_processed_news_is_featured", "processed_news", ["is_featured"])
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_table("system_logs")
|
||||
op.drop_table("llm_config")
|
||||
op.drop_table("processed_news")
|
||||
op.drop_table("raw_news")
|
||||
op.drop_table("news_sources")
|
||||
26
backend/alembic/versions/0002_add_image_url.py
Normal file
26
backend/alembic/versions/0002_add_image_url.py
Normal file
@@ -0,0 +1,26 @@
|
||||
"""add image_url to raw_news and processed_news
|
||||
|
||||
Revision ID: 0002
|
||||
Revises: 0001
|
||||
Create Date: 2026-05-27
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
revision: str = "0002"
|
||||
down_revision: Union[str, None] = "0001"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.add_column("raw_news", sa.Column("image_url", sa.String(2000), nullable=True))
|
||||
op.add_column("processed_news", sa.Column("image_url", sa.String(2000), nullable=True))
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_column("processed_news", "image_url")
|
||||
op.drop_column("raw_news", "image_url")
|
||||
Binary file not shown.
Binary file not shown.
BIN
backend/app/__pycache__/__init__.cpython-314.pyc
Normal file
BIN
backend/app/__pycache__/__init__.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/__pycache__/config.cpython-314.pyc
Normal file
BIN
backend/app/__pycache__/config.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/__pycache__/database.cpython-314.pyc
Normal file
BIN
backend/app/__pycache__/database.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/__pycache__/main.cpython-314.pyc
Normal file
BIN
backend/app/__pycache__/main.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/__pycache__/scheduler.cpython-314.pyc
Normal file
BIN
backend/app/__pycache__/scheduler.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/ai/__pycache__/__init__.cpython-314.pyc
Normal file
BIN
backend/app/ai/__pycache__/__init__.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/ai/__pycache__/llm_client.cpython-314.pyc
Normal file
BIN
backend/app/ai/__pycache__/llm_client.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/ai/__pycache__/processor.cpython-314.pyc
Normal file
BIN
backend/app/ai/__pycache__/processor.cpython-314.pyc
Normal file
Binary file not shown.
@@ -25,18 +25,20 @@ ANALYSIS_PROMPT = """分析以下新闻,返回严格的 JSON 格式结果,
|
||||
"summary": "中文摘要(100-150字,客观陈述核心内容)",
|
||||
"opinion": "核心观点或行业影响(50-100字,分析性语言,点明实际意义)",
|
||||
"keywords": ["关键词1", "关键词2", "关键词3", "关键词4", "关键词5"],
|
||||
"importance_score": 8.5,
|
||||
"importance_score": 85,
|
||||
"importance_reason": "评分理由(30字内)",
|
||||
"category": "药品监管"
|
||||
}}
|
||||
|
||||
category 只能是以下四个之一:药品监管 / 临床研究 / 行业动态 / 政策法规
|
||||
|
||||
importance_score 评分标准(1-10):
|
||||
9-10:重大监管决定 / 突破性研究 / 影响整个行业的政策
|
||||
7-8 :行业重要动态,有明显商业或学术价值
|
||||
5-6 :常规行业新闻,有一定参考价值
|
||||
1-4 :普通资讯,信息价值有限
|
||||
importance_score 评分标准(1-100整数):
|
||||
90-100:重大监管决定 / 突破性研究 / 影响整个行业的政策
|
||||
70-89 :行业重要动态,有明显商业或学术价值
|
||||
50-69 :常规行业新闻,有一定参考价值
|
||||
1-49 :普通资讯,信息价值有限
|
||||
|
||||
注意:只有 85 分及以上的新闻才有资格进入每日精选,请严格区分。
|
||||
"""
|
||||
|
||||
|
||||
@@ -70,7 +72,8 @@ async def _analyze_article(client: LLMClient, title: str, content: str, language
|
||||
|
||||
|
||||
async def _select_top_10(db: AsyncSession, target: date):
|
||||
"""Reset featured flags and elect TOP 10 with category diversity."""
|
||||
"""Reset featured flags and elect TOP 10 with category diversity.
|
||||
Only news with importance_score >= 85 is eligible for 精选."""
|
||||
result = await db.execute(
|
||||
select(ProcessedNews)
|
||||
.where(func.date(ProcessedNews.processed_at) == target)
|
||||
@@ -78,25 +81,28 @@ async def _select_top_10(db: AsyncSession, target: date):
|
||||
)
|
||||
all_news = result.scalars().all()
|
||||
|
||||
# Reset
|
||||
# Reset all
|
||||
for n in all_news:
|
||||
n.is_featured = False
|
||||
n.featured_rank = None
|
||||
|
||||
# Only candidates with score >= 85
|
||||
candidates = [n for n in all_news if n.importance_score >= 85]
|
||||
|
||||
categories = ["药品监管", "临床研究", "行业动态", "政策法规"]
|
||||
selected: list[ProcessedNews] = []
|
||||
seen_cats: set[str] = set()
|
||||
|
||||
# First pass: one guaranteed per category
|
||||
# First pass: one guaranteed per category (from high-score candidates)
|
||||
for cat in categories:
|
||||
for n in all_news:
|
||||
for n in candidates:
|
||||
if n.category == cat and cat not in seen_cats and n not in selected:
|
||||
selected.append(n)
|
||||
seen_cats.add(cat)
|
||||
break
|
||||
|
||||
# Second pass: fill up to 10 by score
|
||||
for n in all_news:
|
||||
# Second pass: fill up to 10 by score (still from candidates only)
|
||||
for n in candidates:
|
||||
if len(selected) >= 10:
|
||||
break
|
||||
if n not in selected:
|
||||
@@ -141,6 +147,7 @@ async def run_daily_pipeline(db: AsyncSession):
|
||||
title=item["title"],
|
||||
url=item["url"],
|
||||
raw_content=item["content"],
|
||||
image_url=item.get("image_url"),
|
||||
published_at=item["published_at"],
|
||||
))
|
||||
raw_added += 1
|
||||
@@ -170,11 +177,12 @@ async def run_daily_pipeline(db: AsyncSession):
|
||||
summary=analysis.get("summary", ""),
|
||||
opinion=analysis.get("opinion"),
|
||||
keywords=analysis.get("keywords", []),
|
||||
importance_score=float(analysis.get("importance_score", 5.0)),
|
||||
importance_score=float(analysis.get("importance_score", 50.0)),
|
||||
importance_reason=analysis.get("importance_reason"),
|
||||
category=analysis.get("category", "行业动态"),
|
||||
source_name=raw.source.name if raw.source else "",
|
||||
source_url=raw.url,
|
||||
image_url=raw.image_url,
|
||||
published_at=raw.published_at,
|
||||
))
|
||||
raw.status = "processed"
|
||||
|
||||
BIN
backend/app/api/__pycache__/__init__.cpython-314.pyc
Normal file
BIN
backend/app/api/__pycache__/__init__.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/api/__pycache__/admin.cpython-314.pyc
Normal file
BIN
backend/app/api/__pycache__/admin.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/api/__pycache__/news.cpython-314.pyc
Normal file
BIN
backend/app/api/__pycache__/news.cpython-314.pyc
Normal file
Binary file not shown.
@@ -1,17 +1,16 @@
|
||||
from datetime import date, datetime
|
||||
from datetime import date
|
||||
from typing import Optional
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from sqlalchemy import select, func, distinct
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from sqlalchemy import select, func
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from ..database import get_db
|
||||
from ..models.news import ProcessedNews, RawNews
|
||||
from ..models.news import ProcessedNews
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
def _serialize(n: ProcessedNews) -> dict:
|
||||
raw = n.raw_news
|
||||
return {
|
||||
"id": n.id,
|
||||
"title_zh": n.title_zh,
|
||||
@@ -23,8 +22,9 @@ def _serialize(n: ProcessedNews) -> dict:
|
||||
"category": n.category,
|
||||
"is_featured": n.is_featured,
|
||||
"featured_rank": n.featured_rank,
|
||||
"source_name": n.source_name or (raw.source.name if raw and raw.source else ""),
|
||||
"source_url": n.source_url or (raw.url if raw else ""),
|
||||
"source_name": n.source_name or "",
|
||||
"source_url": n.source_url or "",
|
||||
"image_url": n.image_url or None,
|
||||
"published_at": n.published_at.isoformat() if n.published_at else None,
|
||||
"processed_at": n.processed_at.isoformat() if n.processed_at else None,
|
||||
}
|
||||
@@ -38,7 +38,6 @@ async def get_featured(
|
||||
target = date.fromisoformat(news_date) if news_date else date.today()
|
||||
stmt = (
|
||||
select(ProcessedNews)
|
||||
.join(ProcessedNews.raw_news)
|
||||
.where(ProcessedNews.is_featured == True)
|
||||
.where(func.date(ProcessedNews.processed_at) == target)
|
||||
.order_by(ProcessedNews.featured_rank)
|
||||
@@ -57,11 +56,7 @@ async def get_news(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
target = date.fromisoformat(news_date) if news_date else date.today()
|
||||
stmt = (
|
||||
select(ProcessedNews)
|
||||
.join(ProcessedNews.raw_news)
|
||||
.where(func.date(ProcessedNews.processed_at) == target)
|
||||
)
|
||||
stmt = select(ProcessedNews).where(func.date(ProcessedNews.processed_at) == target)
|
||||
if category:
|
||||
stmt = stmt.where(ProcessedNews.category == category)
|
||||
|
||||
@@ -87,10 +82,9 @@ async def get_dates(db: AsyncSession = Depends(get_db)):
|
||||
|
||||
@router.get("/{news_id}")
|
||||
async def get_news_detail(news_id: int, db: AsyncSession = Depends(get_db)):
|
||||
stmt = select(ProcessedNews).join(ProcessedNews.raw_news).where(ProcessedNews.id == news_id)
|
||||
stmt = select(ProcessedNews).where(ProcessedNews.id == news_id)
|
||||
result = await db.execute(stmt)
|
||||
news = result.scalar_one_or_none()
|
||||
if not news:
|
||||
from fastapi import HTTPException
|
||||
raise HTTPException(status_code=404, detail="Not found")
|
||||
return _serialize(news)
|
||||
|
||||
@@ -2,7 +2,7 @@ from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
database_url: str = "postgresql+asyncpg://pharma:pharma123@localhost/pharma_news"
|
||||
database_url: str = "postgresql+asyncpg://ai_news:PrDTEr6tGcyWX6G2@chenwuzhu.cn:5432/ai_news"
|
||||
admin_token: str = "change-me-admin-token"
|
||||
|
||||
initial_llm_provider: str = "deepseek"
|
||||
|
||||
BIN
backend/app/crawler/__pycache__/__init__.cpython-314.pyc
Normal file
BIN
backend/app/crawler/__pycache__/__init__.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/crawler/__pycache__/rss_fetcher.cpython-314.pyc
Normal file
BIN
backend/app/crawler/__pycache__/rss_fetcher.cpython-314.pyc
Normal file
Binary file not shown.
@@ -25,6 +25,31 @@ def _parse_date(raw: str) -> Optional[datetime]:
|
||||
return None
|
||||
|
||||
|
||||
def _extract_image(entry) -> Optional[str]:
|
||||
"""Try to pull an image URL from common RSS media extensions."""
|
||||
# <media:thumbnail>
|
||||
thumbnails = getattr(entry, "media_thumbnail", [])
|
||||
if thumbnails:
|
||||
url = thumbnails[0].get("url", "").strip()
|
||||
if url:
|
||||
return url
|
||||
# <media:content medium="image">
|
||||
for mc in getattr(entry, "media_content", []):
|
||||
mc_type = mc.get("type", "")
|
||||
mc_medium = mc.get("medium", "")
|
||||
if mc_medium == "image" or mc_type.startswith("image/"):
|
||||
url = mc.get("url", "").strip()
|
||||
if url:
|
||||
return url
|
||||
# <enclosure type="image/...">
|
||||
for enc in getattr(entry, "enclosures", []):
|
||||
if enc.get("type", "").startswith("image/"):
|
||||
url = (enc.get("href") or enc.get("url") or "").strip()
|
||||
if url:
|
||||
return url
|
||||
return None
|
||||
|
||||
|
||||
async def fetch_rss(url: str, max_items: int = 30) -> list[dict]:
|
||||
try:
|
||||
async with httpx.AsyncClient(headers=HEADERS, timeout=30, follow_redirects=True) as client:
|
||||
@@ -54,20 +79,22 @@ async def fetch_rss(url: str, max_items: int = 30) -> list[dict]:
|
||||
"url": link,
|
||||
"content": content[:3000],
|
||||
"published_at": _parse_date(published_raw),
|
||||
"image_url": _extract_image(entry),
|
||||
})
|
||||
|
||||
logger.info(f"RSS {url}: got {len(items)} items")
|
||||
return items
|
||||
|
||||
|
||||
# 默认新闻源(管理页可增删)
|
||||
# 默认新闻源(管理页可增删)— URLs 经过验证可用
|
||||
DEFAULT_SOURCES = [
|
||||
# 中文
|
||||
{"name": "国家药监局", "url": "https://www.nmpa.gov.cn/rss/yaopinxinxi.xml", "language": "zh", "category": "药品监管"},
|
||||
{"name": "丁香园", "url": "https://www.dxy.cn/bbs/feed.xml", "language": "zh", "category": "临床研究"},
|
||||
{"name": "医学界", "url": "https://www.yxj.org.cn/rss.xml", "language": "zh", "category": "行业动态"},
|
||||
{"name": "中国新闻网·健康", "url": "https://www.chinanews.com.cn/rss/health.xml", "language": "zh", "category": "行业动态"},
|
||||
# 英文
|
||||
{"name": "STAT News", "url": "https://www.statnews.com/feed/", "language": "en", "category": "临床研究"},
|
||||
{"name": "FiercePharma", "url": "https://www.fiercepharma.com/rss/xml", "language": "en", "category": "行业动态"},
|
||||
{"name": "FDA News", "url": "https://www.fda.gov/about-fda/contact-fda/stay-informed/rss-feeds/fda-news-feed/rss.xml", "language": "en", "category": "药品监管"},
|
||||
{"name": "FierceBiotech", "url": "https://www.fiercebiotech.com/rss/xml", "language": "en", "category": "临床研究"},
|
||||
{"name": "FDA MedWatch", "url": "https://www.fda.gov/about-fda/contact-fda/stay-informed/rss-feeds/medwatch/rss.xml", "language": "en", "category": "药品监管"},
|
||||
{"name": "FDA Press Releases", "url": "https://www.fda.gov/about-fda/contact-fda/stay-informed/rss-feeds/press-releases/rss.xml", "language": "en", "category": "药品监管"},
|
||||
{"name": "Nature Medicine", "url": "https://www.nature.com/nm.rss", "language": "en", "category": "临床研究"},
|
||||
]
|
||||
|
||||
@@ -6,18 +6,38 @@ from .database import create_tables, AsyncSessionLocal
|
||||
from .scheduler import start_scheduler, shutdown_scheduler
|
||||
from .api import news, admin
|
||||
from .config import settings
|
||||
from .models.news import LLMConfig
|
||||
from .models.news import LLMConfig, NewsSource
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
await create_tables()
|
||||
await seed_initial_llm_config()
|
||||
await seed_default_sources()
|
||||
start_scheduler()
|
||||
yield
|
||||
shutdown_scheduler()
|
||||
|
||||
|
||||
async def seed_default_sources():
|
||||
"""Insert default news sources on first run if the table is empty."""
|
||||
from .crawler.rss_fetcher import DEFAULT_SOURCES
|
||||
from sqlalchemy import select
|
||||
async with AsyncSessionLocal() as db:
|
||||
result = await db.execute(select(NewsSource).limit(1))
|
||||
if result.scalar_one_or_none():
|
||||
return
|
||||
for src in DEFAULT_SOURCES:
|
||||
db.add(NewsSource(
|
||||
name=src["name"],
|
||||
url=src["url"],
|
||||
source_type="rss",
|
||||
language=src["language"],
|
||||
category=src["category"],
|
||||
))
|
||||
await db.commit()
|
||||
|
||||
|
||||
async def seed_initial_llm_config():
|
||||
"""Insert default LLM config on first run if none exists."""
|
||||
from sqlalchemy import select
|
||||
|
||||
BIN
backend/app/models/__pycache__/__init__.cpython-314.pyc
Normal file
BIN
backend/app/models/__pycache__/__init__.cpython-314.pyc
Normal file
Binary file not shown.
BIN
backend/app/models/__pycache__/news.cpython-314.pyc
Normal file
BIN
backend/app/models/__pycache__/news.cpython-314.pyc
Normal file
Binary file not shown.
@@ -28,6 +28,7 @@ class RawNews(Base):
|
||||
title: Mapped[str] = mapped_column(String(500))
|
||||
url: Mapped[str] = mapped_column(String(1000), unique=True)
|
||||
raw_content: Mapped[Optional[str]] = mapped_column(Text)
|
||||
image_url: Mapped[Optional[str]] = mapped_column(String(2000))
|
||||
published_at: Mapped[Optional[datetime]] = mapped_column(DateTime)
|
||||
crawled_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
status: Mapped[str] = mapped_column(String(20), default="pending") # pending|processed|skipped|error
|
||||
@@ -52,6 +53,7 @@ class ProcessedNews(Base):
|
||||
featured_rank: Mapped[Optional[int]] = mapped_column(Integer)
|
||||
source_name: Mapped[Optional[str]] = mapped_column(String(200))
|
||||
source_url: Mapped[Optional[str]] = mapped_column(String(1000))
|
||||
image_url: Mapped[Optional[str]] = mapped_column(String(2000))
|
||||
published_at: Mapped[Optional[datetime]] = mapped_column(DateTime)
|
||||
processed_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
|
||||
|
||||
1
frontend/dist/assets/index-DuApBvfc.css
vendored
Normal file
1
frontend/dist/assets/index-DuApBvfc.css
vendored
Normal file
File diff suppressed because one or more lines are too long
87
frontend/dist/assets/index-DzAkVrZs.js
vendored
Normal file
87
frontend/dist/assets/index-DzAkVrZs.js
vendored
Normal file
File diff suppressed because one or more lines are too long
16
frontend/dist/index.html
vendored
Normal file
16
frontend/dist/index.html
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>医药情报</title>
|
||||
<!-- 国内可将 Google Fonts 替换为 fonts.loli.net 镜像 -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<script type="module" crossorigin src="/assets/index-DzAkVrZs.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-DuApBvfc.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
0
frontend/frontend.dev.err.log
Normal file
0
frontend/frontend.dev.err.log
Normal file
63
frontend/frontend.dev.out.log
Normal file
63
frontend/frontend.dev.out.log
Normal file
@@ -0,0 +1,63 @@
|
||||
|
||||
> pharma-intel-frontend@1.0.0 dev
|
||||
> vite --host 0.0.0.0
|
||||
|
||||
Port 5173 is in use, trying another one...
|
||||
|
||||
[32m[1mVITE[22m v6.4.2[39m [2mready in [0m[1m360[22m[2m[0m ms[22m
|
||||
|
||||
[32m➜[39m [1mLocal[22m: [36mhttp://localhost:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://198.18.0.1:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://100.106.241.41:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://172.19.112.1:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://10.119.18.252:[1m5174[22m/[39m
|
||||
[2m6:31:24 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m6:31:31 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m6:31:37 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m6:32:13 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m6:32:21 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m6:42:38 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m6:42:50 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m6:42:54 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m6:55:03 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m6:55:23 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m6:55:33 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:15:11 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mpage reload [39m[2mindex.html[22m
|
||||
[2m8:16:10 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles/theme.css[22m
|
||||
[2m8:16:21 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/components/ThemeControls.vue, /src/components/ThemeControls.vue?vue&type=style&index=0&scoped=c6bc2c52&lang.css[22m
|
||||
[2m8:16:42 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/components/NewsCard.vue, /src/components/NewsCard.vue?vue&type=style&index=0&scoped=1d5294f0&lang.css[22m
|
||||
[2m8:17:18 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:17:59 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:18:14 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:18:47 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:18:59 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:19:18 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:19:43 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:20:10 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:20:31 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:40:02 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m8:40:53 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:41:13 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m8:59:15 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m8:59:28 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m9:00:23 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m9:00:35 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m10:33:14 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles/theme.css[22m
|
||||
[2m10:33:20 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles/theme.css[22m
|
||||
[2m10:33:26 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles/theme.css[22m
|
||||
[2m10:33:31 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/styles/theme.css[22m
|
||||
[2m10:33:36 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m10:33:43 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m10:33:48 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m10:33:54 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m10:34:00 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m10:34:08 PM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/components/NewsCard.vue?vue&type=style&index=0&scoped=1d5294f0&lang.css[22m
|
||||
[2m12:42:07 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/components/NewsCard.vue[22m
|
||||
[2m12:42:13 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/components/NewsCard.vue[22m
|
||||
[2m12:42:19 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/components/NewsCard.vue?vue&type=style&index=0&scoped=1d5294f0&lang.css[22m
|
||||
[2m12:42:25 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m12:42:31 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m12:42:39 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m12:42:46 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
[2m12:42:54 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue?vue&type=style&index=0&scoped=94478ee1&lang.css[22m
|
||||
[2m12:43:13 AM[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/views/NewsReader.vue[22m
|
||||
@@ -4,9 +4,9 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>医药情报</title>
|
||||
<!-- 国内可将 Google Fonts 替换为 fonts.loli.net 镜像 -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
16
frontend/node_modules/.bin/esbuild
generated
vendored
Normal file
16
frontend/node_modules/.bin/esbuild
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../esbuild/bin/esbuild" "$@"
|
||||
else
|
||||
exec node "$basedir/../esbuild/bin/esbuild" "$@"
|
||||
fi
|
||||
17
frontend/node_modules/.bin/esbuild.cmd
generated
vendored
Normal file
17
frontend/node_modules/.bin/esbuild.cmd
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %*
|
||||
28
frontend/node_modules/.bin/esbuild.ps1
generated
vendored
Normal file
28
frontend/node_modules/.bin/esbuild.ps1
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../esbuild/bin/esbuild" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
frontend/node_modules/.bin/nanoid
generated
vendored
Normal file
16
frontend/node_modules/.bin/nanoid
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@"
|
||||
else
|
||||
exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@"
|
||||
fi
|
||||
17
frontend/node_modules/.bin/nanoid.cmd
generated
vendored
Normal file
17
frontend/node_modules/.bin/nanoid.cmd
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %*
|
||||
28
frontend/node_modules/.bin/nanoid.ps1
generated
vendored
Normal file
28
frontend/node_modules/.bin/nanoid.ps1
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
frontend/node_modules/.bin/parser
generated
vendored
Normal file
16
frontend/node_modules/.bin/parser
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../@babel/parser/bin/babel-parser.js" "$@"
|
||||
fi
|
||||
17
frontend/node_modules/.bin/parser.cmd
generated
vendored
Normal file
17
frontend/node_modules/.bin/parser.cmd
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@babel\parser\bin\babel-parser.js" %*
|
||||
28
frontend/node_modules/.bin/parser.ps1
generated
vendored
Normal file
28
frontend/node_modules/.bin/parser.ps1
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
frontend/node_modules/.bin/playwright
generated
vendored
Normal file
16
frontend/node_modules/.bin/playwright
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../playwright/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../playwright/cli.js" "$@"
|
||||
fi
|
||||
16
frontend/node_modules/.bin/playwright-core
generated
vendored
Normal file
16
frontend/node_modules/.bin/playwright-core
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../playwright-core/cli.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../playwright-core/cli.js" "$@"
|
||||
fi
|
||||
17
frontend/node_modules/.bin/playwright-core.cmd
generated
vendored
Normal file
17
frontend/node_modules/.bin/playwright-core.cmd
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\playwright-core\cli.js" %*
|
||||
28
frontend/node_modules/.bin/playwright-core.ps1
generated
vendored
Normal file
28
frontend/node_modules/.bin/playwright-core.ps1
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../playwright-core/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../playwright-core/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../playwright-core/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../playwright-core/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
17
frontend/node_modules/.bin/playwright.cmd
generated
vendored
Normal file
17
frontend/node_modules/.bin/playwright.cmd
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\playwright\cli.js" %*
|
||||
28
frontend/node_modules/.bin/playwright.ps1
generated
vendored
Normal file
28
frontend/node_modules/.bin/playwright.ps1
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../playwright/cli.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../playwright/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../playwright/cli.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../playwright/cli.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
frontend/node_modules/.bin/rollup
generated
vendored
Normal file
16
frontend/node_modules/.bin/rollup
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../rollup/dist/bin/rollup" "$@"
|
||||
else
|
||||
exec node "$basedir/../rollup/dist/bin/rollup" "$@"
|
||||
fi
|
||||
17
frontend/node_modules/.bin/rollup.cmd
generated
vendored
Normal file
17
frontend/node_modules/.bin/rollup.cmd
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %*
|
||||
28
frontend/node_modules/.bin/rollup.ps1
generated
vendored
Normal file
28
frontend/node_modules/.bin/rollup.ps1
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../rollup/dist/bin/rollup" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
16
frontend/node_modules/.bin/vite
generated
vendored
Normal file
16
frontend/node_modules/.bin/vite
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||
|
||||
case `uname` in
|
||||
*CYGWIN*|*MINGW*|*MSYS*)
|
||||
if command -v cygpath > /dev/null 2>&1; then
|
||||
basedir=`cygpath -w "$basedir"`
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -x "$basedir/node" ]; then
|
||||
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
|
||||
else
|
||||
exec node "$basedir/../vite/bin/vite.js" "$@"
|
||||
fi
|
||||
17
frontend/node_modules/.bin/vite.cmd
generated
vendored
Normal file
17
frontend/node_modules/.bin/vite.cmd
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
@ECHO off
|
||||
GOTO start
|
||||
:find_dp0
|
||||
SET dp0=%~dp0
|
||||
EXIT /b
|
||||
:start
|
||||
SETLOCAL
|
||||
CALL :find_dp0
|
||||
|
||||
IF EXIST "%dp0%\node.exe" (
|
||||
SET "_prog=%dp0%\node.exe"
|
||||
) ELSE (
|
||||
SET "_prog=node"
|
||||
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||
)
|
||||
|
||||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %*
|
||||
28
frontend/node_modules/.bin/vite.ps1
generated
vendored
Normal file
28
frontend/node_modules/.bin/vite.ps1
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env pwsh
|
||||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||
|
||||
$exe=""
|
||||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||
# Fix case when both the Windows and Linux builds of Node
|
||||
# are installed in the same directory
|
||||
$exe=".exe"
|
||||
}
|
||||
$ret=0
|
||||
if (Test-Path "$basedir/node$exe") {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args
|
||||
} else {
|
||||
& "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
} else {
|
||||
# Support pipeline input
|
||||
if ($MyInvocation.ExpectingInput) {
|
||||
$input | & "node$exe" "$basedir/../vite/bin/vite.js" $args
|
||||
} else {
|
||||
& "node$exe" "$basedir/../vite/bin/vite.js" $args
|
||||
}
|
||||
$ret=$LASTEXITCODE
|
||||
}
|
||||
exit $ret
|
||||
796
frontend/node_modules/.package-lock.json
generated
vendored
Normal file
796
frontend/node_modules/.package-lock.json
generated
vendored
Normal file
@@ -0,0 +1,796 @@
|
||||
{
|
||||
"name": "pharma-intel-frontend",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
|
||||
"integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
|
||||
"integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
|
||||
"integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.29.7"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.29.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
|
||||
"integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.29.7",
|
||||
"@babel/helper-validator-identifier": "^7.29.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ctrl/tinycolor": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz",
|
||||
"integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/@element-plus/icons-vue": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz",
|
||||
"integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"vue": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/core": {
|
||||
"version": "1.7.5",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz",
|
||||
"integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@floating-ui/utils": "^0.2.11"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/dom": {
|
||||
"version": "1.7.6",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz",
|
||||
"integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@floating-ui/core": "^1.7.5",
|
||||
"@floating-ui/utils": "^0.2.11"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/utils": {
|
||||
"version": "0.2.11",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz",
|
||||
"integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"name": "@sxzz/popperjs-es",
|
||||
"version": "2.11.8",
|
||||
"resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.8.tgz",
|
||||
"integrity": "sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/popperjs"
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-gnu": {
|
||||
"version": "4.60.4",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz",
|
||||
"integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||
"version": "4.60.4",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz",
|
||||
"integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
]
|
||||
},
|
||||
"node_modules/@types/estree": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
||||
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/lodash": {
|
||||
"version": "4.17.24",
|
||||
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz",
|
||||
"integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/lodash-es": {
|
||||
"version": "4.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
|
||||
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/lodash": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/web-bluetooth": {
|
||||
"version": "0.0.21",
|
||||
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz",
|
||||
"integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@vitejs/plugin-vue": {
|
||||
"version": "5.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
|
||||
"integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^18.0.0 || >=20.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vite": "^5.0.0 || ^6.0.0",
|
||||
"vue": "^3.2.25"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.34.tgz",
|
||||
"integrity": "sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.29.3",
|
||||
"@vue/shared": "3.5.34",
|
||||
"entities": "^7.0.1",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.34.tgz",
|
||||
"integrity": "sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.5.34",
|
||||
"@vue/shared": "3.5.34"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.34.tgz",
|
||||
"integrity": "sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.29.3",
|
||||
"@vue/compiler-core": "3.5.34",
|
||||
"@vue/compiler-dom": "3.5.34",
|
||||
"@vue/compiler-ssr": "3.5.34",
|
||||
"@vue/shared": "3.5.34",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.30.21",
|
||||
"postcss": "^8.5.14",
|
||||
"source-map-js": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.34.tgz",
|
||||
"integrity": "sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.34",
|
||||
"@vue/shared": "3.5.34"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/devtools-api": {
|
||||
"version": "6.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
|
||||
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.34.tgz",
|
||||
"integrity": "sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.34"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.34.tgz",
|
||||
"integrity": "sha512-mKeBYvu8tcMSLhypAHBmriUFfWXKTCF/23Z4jiCoYK3UtWepkliViNLuR90V9XOyD62mUxs9p1jsrpK3CCGIzw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.34",
|
||||
"@vue/shared": "3.5.34"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.34.tgz",
|
||||
"integrity": "sha512-e8kZzERmCwUnBRVsgSQlAfrfU2rGoy0FFKPBXSlfEjc/O3KfA7QP0t1/2ZylrbchjmIKB4dPTd07A6WPr0eOrg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.34",
|
||||
"@vue/runtime-core": "3.5.34",
|
||||
"@vue/shared": "3.5.34",
|
||||
"csstype": "^3.2.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.34.tgz",
|
||||
"integrity": "sha512-nHxmJoTrKsmrkbILRhkC9gY1G3moZbJTqCzDd7DOOzG5KH9oeJ0Unqrff5f9v0pW//jES05ZkJcNtfE8JjOIew==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.5.34",
|
||||
"@vue/shared": "3.5.34"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.5.34"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.34.tgz",
|
||||
"integrity": "sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@vueuse/core": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.3.0.tgz",
|
||||
"integrity": "sha512-aHfz47g0ZhMtTVHmIzMVpJy8ePhhOy68GY5bv110+5DVtZ+W7BsOx+m61UNQqfrWyPztIHIanWa3E2tib3NFIw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/web-bluetooth": "^0.0.21",
|
||||
"@vueuse/metadata": "14.3.0",
|
||||
"@vueuse/shared": "14.3.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/antfu"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "^3.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/metadata": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.3.0.tgz",
|
||||
"integrity": "sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/antfu"
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/shared": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.3.0.tgz",
|
||||
"integrity": "sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/antfu"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "^3.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/async-validator": {
|
||||
"version": "4.2.5",
|
||||
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
|
||||
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/csstype": {
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
|
||||
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/dayjs": {
|
||||
"version": "1.11.20",
|
||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz",
|
||||
"integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/element-plus": {
|
||||
"version": "2.14.0",
|
||||
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.14.0.tgz",
|
||||
"integrity": "sha512-POgH+TtoreaEKWqYYAVQyE6i8rQMEFqAEublyF29dBA5yASWPLKY6EzfeqBTr2Uv26mPss4vSrMrNPyaK7LX5w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ctrl/tinycolor": "^4.2.0",
|
||||
"@element-plus/icons-vue": "^2.3.2",
|
||||
"@floating-ui/dom": "^1.0.1",
|
||||
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.8",
|
||||
"@types/lodash": "^4.17.24",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@vueuse/core": "14.3.0",
|
||||
"async-validator": "^4.2.5",
|
||||
"dayjs": "^1.11.20",
|
||||
"lodash": "^4.18.1",
|
||||
"lodash-es": "^4.18.1",
|
||||
"lodash-unified": "^1.0.3",
|
||||
"memoize-one": "^6.0.0",
|
||||
"normalize-wheel-es": "^1.2.0",
|
||||
"vue-component-type-helpers": "^3.2.8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "^3.3.7"
|
||||
}
|
||||
},
|
||||
"node_modules/entities": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
|
||||
"integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
|
||||
"license": "BSD-2-Clause",
|
||||
"engines": {
|
||||
"node": ">=0.12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
|
||||
"integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"esbuild": "bin/esbuild"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/aix-ppc64": "0.25.12",
|
||||
"@esbuild/android-arm": "0.25.12",
|
||||
"@esbuild/android-arm64": "0.25.12",
|
||||
"@esbuild/android-x64": "0.25.12",
|
||||
"@esbuild/darwin-arm64": "0.25.12",
|
||||
"@esbuild/darwin-x64": "0.25.12",
|
||||
"@esbuild/freebsd-arm64": "0.25.12",
|
||||
"@esbuild/freebsd-x64": "0.25.12",
|
||||
"@esbuild/linux-arm": "0.25.12",
|
||||
"@esbuild/linux-arm64": "0.25.12",
|
||||
"@esbuild/linux-ia32": "0.25.12",
|
||||
"@esbuild/linux-loong64": "0.25.12",
|
||||
"@esbuild/linux-mips64el": "0.25.12",
|
||||
"@esbuild/linux-ppc64": "0.25.12",
|
||||
"@esbuild/linux-riscv64": "0.25.12",
|
||||
"@esbuild/linux-s390x": "0.25.12",
|
||||
"@esbuild/linux-x64": "0.25.12",
|
||||
"@esbuild/netbsd-arm64": "0.25.12",
|
||||
"@esbuild/netbsd-x64": "0.25.12",
|
||||
"@esbuild/openbsd-arm64": "0.25.12",
|
||||
"@esbuild/openbsd-x64": "0.25.12",
|
||||
"@esbuild/openharmony-arm64": "0.25.12",
|
||||
"@esbuild/sunos-x64": "0.25.12",
|
||||
"@esbuild/win32-arm64": "0.25.12",
|
||||
"@esbuild/win32-ia32": "0.25.12",
|
||||
"@esbuild/win32-x64": "0.25.12"
|
||||
}
|
||||
},
|
||||
"node_modules/estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fdir": {
|
||||
"version": "6.5.0",
|
||||
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
|
||||
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"picomatch": "^3 || ^4"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"picomatch": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/lodash": {
|
||||
"version": "4.18.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
|
||||
"integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash-es": {
|
||||
"version": "4.18.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
|
||||
"integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash-unified": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
|
||||
"integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@types/lodash-es": "*",
|
||||
"lodash": "*",
|
||||
"lodash-es": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.30.21",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
|
||||
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.5.5"
|
||||
}
|
||||
},
|
||||
"node_modules/memoize-one": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
|
||||
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.12",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
|
||||
"integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"nanoid": "bin/nanoid.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-wheel-es": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
|
||||
"integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==",
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
|
||||
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/playwright": {
|
||||
"version": "1.60.0",
|
||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz",
|
||||
"integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"playwright-core": "1.60.0"
|
||||
},
|
||||
"bin": {
|
||||
"playwright": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/playwright-core": {
|
||||
"version": "1.60.0",
|
||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz",
|
||||
"integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"playwright-core": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.5.15",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz",
|
||||
"integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.12",
|
||||
"picocolors": "^1.1.1",
|
||||
"source-map-js": "^1.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "4.60.4",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz",
|
||||
"integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/estree": "1.0.8"
|
||||
},
|
||||
"bin": {
|
||||
"rollup": "dist/bin/rollup"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0",
|
||||
"npm": ">=8.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rollup/rollup-android-arm-eabi": "4.60.4",
|
||||
"@rollup/rollup-android-arm64": "4.60.4",
|
||||
"@rollup/rollup-darwin-arm64": "4.60.4",
|
||||
"@rollup/rollup-darwin-x64": "4.60.4",
|
||||
"@rollup/rollup-freebsd-arm64": "4.60.4",
|
||||
"@rollup/rollup-freebsd-x64": "4.60.4",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.60.4",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.60.4",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.60.4",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.60.4",
|
||||
"@rollup/rollup-linux-loong64-gnu": "4.60.4",
|
||||
"@rollup/rollup-linux-loong64-musl": "4.60.4",
|
||||
"@rollup/rollup-linux-ppc64-gnu": "4.60.4",
|
||||
"@rollup/rollup-linux-ppc64-musl": "4.60.4",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.60.4",
|
||||
"@rollup/rollup-linux-riscv64-musl": "4.60.4",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.60.4",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.60.4",
|
||||
"@rollup/rollup-linux-x64-musl": "4.60.4",
|
||||
"@rollup/rollup-openbsd-x64": "4.60.4",
|
||||
"@rollup/rollup-openharmony-arm64": "4.60.4",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.60.4",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.60.4",
|
||||
"@rollup/rollup-win32-x64-gnu": "4.60.4",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.60.4",
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||
"license": "BSD-3-Clause",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tinyglobby": {
|
||||
"version": "0.2.16",
|
||||
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
|
||||
"integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fdir": "^6.5.0",
|
||||
"picomatch": "^4.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/SuperchupuDev"
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "6.4.2",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz",
|
||||
"integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"esbuild": "^0.25.0",
|
||||
"fdir": "^6.4.4",
|
||||
"picomatch": "^4.0.2",
|
||||
"postcss": "^8.5.3",
|
||||
"rollup": "^4.34.9",
|
||||
"tinyglobby": "^0.2.13"
|
||||
},
|
||||
"bin": {
|
||||
"vite": "bin/vite.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/vitejs/vite?sponsor=1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "~2.3.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
|
||||
"jiti": ">=1.21.0",
|
||||
"less": "*",
|
||||
"lightningcss": "^1.21.0",
|
||||
"sass": "*",
|
||||
"sass-embedded": "*",
|
||||
"stylus": "*",
|
||||
"sugarss": "*",
|
||||
"terser": "^5.16.0",
|
||||
"tsx": "^4.8.1",
|
||||
"yaml": "^2.4.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/node": {
|
||||
"optional": true
|
||||
},
|
||||
"jiti": {
|
||||
"optional": true
|
||||
},
|
||||
"less": {
|
||||
"optional": true
|
||||
},
|
||||
"lightningcss": {
|
||||
"optional": true
|
||||
},
|
||||
"sass": {
|
||||
"optional": true
|
||||
},
|
||||
"sass-embedded": {
|
||||
"optional": true
|
||||
},
|
||||
"stylus": {
|
||||
"optional": true
|
||||
},
|
||||
"sugarss": {
|
||||
"optional": true
|
||||
},
|
||||
"terser": {
|
||||
"optional": true
|
||||
},
|
||||
"tsx": {
|
||||
"optional": true
|
||||
},
|
||||
"yaml": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.5.34",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.34.tgz",
|
||||
"integrity": "sha512-WdLBG9gm02OgJIG9axd5Hpx0TFLdzVgfG2evFFu8Rur5O/IoGc5cMjnjh3tPL6GnRGsYvUhBSKVPYVcxRKpMCA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.34",
|
||||
"@vue/compiler-sfc": "3.5.34",
|
||||
"@vue/runtime-dom": "3.5.34",
|
||||
"@vue/server-renderer": "3.5.34",
|
||||
"@vue/shared": "3.5.34"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/vue-component-type-helpers": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.3.2.tgz",
|
||||
"integrity": "sha512-l4Z2Y34m7nFMlx8vrslJaVtXxUpzgDMSESC7TakG/c5kwjYT/do+E0NcT2/vWDzaoIhsShg/2OKwX7Q4nbzC0g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/vue-router": {
|
||||
"version": "4.6.4",
|
||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz",
|
||||
"integrity": "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/devtools-api": "^6.6.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/posva"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "^3.5.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
592
frontend/node_modules/.vite/deps/@element-plus_icons-vue.js
generated
vendored
Normal file
592
frontend/node_modules/.vite/deps/@element-plus_icons-vue.js
generated
vendored
Normal file
@@ -0,0 +1,592 @@
|
||||
import {
|
||||
add_location_default,
|
||||
aim_default,
|
||||
alarm_clock_default,
|
||||
apple_default,
|
||||
arrow_down_bold_default,
|
||||
arrow_down_default,
|
||||
arrow_left_bold_default,
|
||||
arrow_left_default,
|
||||
arrow_right_bold_default,
|
||||
arrow_right_default,
|
||||
arrow_up_bold_default,
|
||||
arrow_up_default,
|
||||
avatar_default,
|
||||
back_default,
|
||||
baseball_default,
|
||||
basketball_default,
|
||||
bell_default,
|
||||
bell_filled_default,
|
||||
bicycle_default,
|
||||
bottom_default,
|
||||
bottom_left_default,
|
||||
bottom_right_default,
|
||||
bowl_default,
|
||||
box_default,
|
||||
briefcase_default,
|
||||
brush_default,
|
||||
brush_filled_default,
|
||||
burger_default,
|
||||
calendar_default,
|
||||
camera_default,
|
||||
camera_filled_default,
|
||||
caret_bottom_default,
|
||||
caret_left_default,
|
||||
caret_right_default,
|
||||
caret_top_default,
|
||||
cellphone_default,
|
||||
chat_dot_round_default,
|
||||
chat_dot_square_default,
|
||||
chat_line_round_default,
|
||||
chat_line_square_default,
|
||||
chat_round_default,
|
||||
chat_square_default,
|
||||
check_default,
|
||||
checked_default,
|
||||
cherry_default,
|
||||
chicken_default,
|
||||
chrome_filled_default,
|
||||
circle_check_default,
|
||||
circle_check_filled_default,
|
||||
circle_close_default,
|
||||
circle_close_filled_default,
|
||||
circle_plus_default,
|
||||
circle_plus_filled_default,
|
||||
clock_default,
|
||||
close_bold_default,
|
||||
close_default,
|
||||
cloudy_default,
|
||||
coffee_cup_default,
|
||||
coffee_default,
|
||||
coin_default,
|
||||
cold_drink_default,
|
||||
collection_default,
|
||||
collection_tag_default,
|
||||
comment_default,
|
||||
compass_default,
|
||||
connection_default,
|
||||
coordinate_default,
|
||||
copy_document_default,
|
||||
cpu_default,
|
||||
credit_card_default,
|
||||
crop_default,
|
||||
d_arrow_left_default,
|
||||
d_arrow_right_default,
|
||||
d_caret_default,
|
||||
data_analysis_default,
|
||||
data_board_default,
|
||||
data_line_default,
|
||||
delete_default,
|
||||
delete_filled_default,
|
||||
delete_location_default,
|
||||
dessert_default,
|
||||
discount_default,
|
||||
dish_default,
|
||||
dish_dot_default,
|
||||
document_add_default,
|
||||
document_checked_default,
|
||||
document_copy_default,
|
||||
document_default,
|
||||
document_delete_default,
|
||||
document_remove_default,
|
||||
download_default,
|
||||
drizzling_default,
|
||||
edit_default,
|
||||
edit_pen_default,
|
||||
eleme_default,
|
||||
eleme_filled_default,
|
||||
element_plus_default,
|
||||
expand_default,
|
||||
failed_default,
|
||||
female_default,
|
||||
files_default,
|
||||
film_default,
|
||||
filter_default,
|
||||
finished_default,
|
||||
first_aid_kit_default,
|
||||
flag_default,
|
||||
fold_default,
|
||||
folder_add_default,
|
||||
folder_checked_default,
|
||||
folder_default,
|
||||
folder_delete_default,
|
||||
folder_opened_default,
|
||||
folder_remove_default,
|
||||
food_default,
|
||||
football_default,
|
||||
fork_spoon_default,
|
||||
fries_default,
|
||||
full_screen_default,
|
||||
goblet_default,
|
||||
goblet_full_default,
|
||||
goblet_square_default,
|
||||
goblet_square_full_default,
|
||||
gold_medal_default,
|
||||
goods_default,
|
||||
goods_filled_default,
|
||||
grape_default,
|
||||
grid_default,
|
||||
guide_default,
|
||||
handbag_default,
|
||||
headset_default,
|
||||
help_default,
|
||||
help_filled_default,
|
||||
hide_default,
|
||||
histogram_default,
|
||||
home_filled_default,
|
||||
hot_water_default,
|
||||
house_default,
|
||||
ice_cream_default,
|
||||
ice_cream_round_default,
|
||||
ice_cream_square_default,
|
||||
ice_drink_default,
|
||||
ice_tea_default,
|
||||
info_filled_default,
|
||||
iphone_default,
|
||||
key_default,
|
||||
knife_fork_default,
|
||||
lightning_default,
|
||||
link_default,
|
||||
list_default,
|
||||
loading_default,
|
||||
location_default,
|
||||
location_filled_default,
|
||||
location_information_default,
|
||||
lock_default,
|
||||
lollipop_default,
|
||||
magic_stick_default,
|
||||
magnet_default,
|
||||
male_default,
|
||||
management_default,
|
||||
map_location_default,
|
||||
medal_default,
|
||||
memo_default,
|
||||
menu_default,
|
||||
message_box_default,
|
||||
message_default,
|
||||
mic_default,
|
||||
microphone_default,
|
||||
milk_tea_default,
|
||||
minus_default,
|
||||
money_default,
|
||||
monitor_default,
|
||||
moon_default,
|
||||
moon_night_default,
|
||||
more_default,
|
||||
more_filled_default,
|
||||
mostly_cloudy_default,
|
||||
mouse_default,
|
||||
mug_default,
|
||||
mute_default,
|
||||
mute_notification_default,
|
||||
no_smoking_default,
|
||||
notebook_default,
|
||||
notification_default,
|
||||
odometer_default,
|
||||
office_building_default,
|
||||
open_default,
|
||||
operation_default,
|
||||
opportunity_default,
|
||||
orange_default,
|
||||
paperclip_default,
|
||||
partly_cloudy_default,
|
||||
pear_default,
|
||||
phone_default,
|
||||
phone_filled_default,
|
||||
picture_default,
|
||||
picture_filled_default,
|
||||
picture_rounded_default,
|
||||
pie_chart_default,
|
||||
place_default,
|
||||
platform_default,
|
||||
plus_default,
|
||||
pointer_default,
|
||||
position_default,
|
||||
postcard_default,
|
||||
pouring_default,
|
||||
present_default,
|
||||
price_tag_default,
|
||||
printer_default,
|
||||
promotion_default,
|
||||
quartz_watch_default,
|
||||
question_filled_default,
|
||||
rank_default,
|
||||
reading_default,
|
||||
reading_lamp_default,
|
||||
refresh_default,
|
||||
refresh_left_default,
|
||||
refresh_right_default,
|
||||
refrigerator_default,
|
||||
remove_default,
|
||||
remove_filled_default,
|
||||
right_default,
|
||||
scale_to_original_default,
|
||||
school_default,
|
||||
scissor_default,
|
||||
search_default,
|
||||
select_default,
|
||||
sell_default,
|
||||
semi_select_default,
|
||||
service_default,
|
||||
set_up_default,
|
||||
setting_default,
|
||||
share_default,
|
||||
ship_default,
|
||||
shop_default,
|
||||
shopping_bag_default,
|
||||
shopping_cart_default,
|
||||
shopping_cart_full_default,
|
||||
shopping_trolley_default,
|
||||
smoking_default,
|
||||
soccer_default,
|
||||
sold_out_default,
|
||||
sort_default,
|
||||
sort_down_default,
|
||||
sort_up_default,
|
||||
stamp_default,
|
||||
star_default,
|
||||
star_filled_default,
|
||||
stopwatch_default,
|
||||
success_filled_default,
|
||||
sugar_default,
|
||||
suitcase_default,
|
||||
suitcase_line_default,
|
||||
sunny_default,
|
||||
sunrise_default,
|
||||
sunset_default,
|
||||
switch_button_default,
|
||||
switch_default,
|
||||
switch_filled_default,
|
||||
takeaway_box_default,
|
||||
ticket_default,
|
||||
tickets_default,
|
||||
timer_default,
|
||||
toilet_paper_default,
|
||||
tools_default,
|
||||
top_default,
|
||||
top_left_default,
|
||||
top_right_default,
|
||||
trend_charts_default,
|
||||
trophy_base_default,
|
||||
trophy_default,
|
||||
turn_off_default,
|
||||
umbrella_default,
|
||||
unlock_default,
|
||||
upload_default,
|
||||
upload_filled_default,
|
||||
user_default,
|
||||
user_filled_default,
|
||||
van_default,
|
||||
video_camera_default,
|
||||
video_camera_filled_default,
|
||||
video_pause_default,
|
||||
video_play_default,
|
||||
view_default,
|
||||
wallet_default,
|
||||
wallet_filled_default,
|
||||
warn_triangle_filled_default,
|
||||
warning_default,
|
||||
warning_filled_default,
|
||||
watch_default,
|
||||
watermelon_default,
|
||||
wind_power_default,
|
||||
zoom_in_default,
|
||||
zoom_out_default
|
||||
} from "./chunk-XKDVN4EU.js";
|
||||
import "./chunk-LUSDXJEL.js";
|
||||
import "./chunk-5WRI5ZAA.js";
|
||||
export {
|
||||
add_location_default as AddLocation,
|
||||
aim_default as Aim,
|
||||
alarm_clock_default as AlarmClock,
|
||||
apple_default as Apple,
|
||||
arrow_down_default as ArrowDown,
|
||||
arrow_down_bold_default as ArrowDownBold,
|
||||
arrow_left_default as ArrowLeft,
|
||||
arrow_left_bold_default as ArrowLeftBold,
|
||||
arrow_right_default as ArrowRight,
|
||||
arrow_right_bold_default as ArrowRightBold,
|
||||
arrow_up_default as ArrowUp,
|
||||
arrow_up_bold_default as ArrowUpBold,
|
||||
avatar_default as Avatar,
|
||||
back_default as Back,
|
||||
baseball_default as Baseball,
|
||||
basketball_default as Basketball,
|
||||
bell_default as Bell,
|
||||
bell_filled_default as BellFilled,
|
||||
bicycle_default as Bicycle,
|
||||
bottom_default as Bottom,
|
||||
bottom_left_default as BottomLeft,
|
||||
bottom_right_default as BottomRight,
|
||||
bowl_default as Bowl,
|
||||
box_default as Box,
|
||||
briefcase_default as Briefcase,
|
||||
brush_default as Brush,
|
||||
brush_filled_default as BrushFilled,
|
||||
burger_default as Burger,
|
||||
calendar_default as Calendar,
|
||||
camera_default as Camera,
|
||||
camera_filled_default as CameraFilled,
|
||||
caret_bottom_default as CaretBottom,
|
||||
caret_left_default as CaretLeft,
|
||||
caret_right_default as CaretRight,
|
||||
caret_top_default as CaretTop,
|
||||
cellphone_default as Cellphone,
|
||||
chat_dot_round_default as ChatDotRound,
|
||||
chat_dot_square_default as ChatDotSquare,
|
||||
chat_line_round_default as ChatLineRound,
|
||||
chat_line_square_default as ChatLineSquare,
|
||||
chat_round_default as ChatRound,
|
||||
chat_square_default as ChatSquare,
|
||||
check_default as Check,
|
||||
checked_default as Checked,
|
||||
cherry_default as Cherry,
|
||||
chicken_default as Chicken,
|
||||
chrome_filled_default as ChromeFilled,
|
||||
circle_check_default as CircleCheck,
|
||||
circle_check_filled_default as CircleCheckFilled,
|
||||
circle_close_default as CircleClose,
|
||||
circle_close_filled_default as CircleCloseFilled,
|
||||
circle_plus_default as CirclePlus,
|
||||
circle_plus_filled_default as CirclePlusFilled,
|
||||
clock_default as Clock,
|
||||
close_default as Close,
|
||||
close_bold_default as CloseBold,
|
||||
cloudy_default as Cloudy,
|
||||
coffee_default as Coffee,
|
||||
coffee_cup_default as CoffeeCup,
|
||||
coin_default as Coin,
|
||||
cold_drink_default as ColdDrink,
|
||||
collection_default as Collection,
|
||||
collection_tag_default as CollectionTag,
|
||||
comment_default as Comment,
|
||||
compass_default as Compass,
|
||||
connection_default as Connection,
|
||||
coordinate_default as Coordinate,
|
||||
copy_document_default as CopyDocument,
|
||||
cpu_default as Cpu,
|
||||
credit_card_default as CreditCard,
|
||||
crop_default as Crop,
|
||||
d_arrow_left_default as DArrowLeft,
|
||||
d_arrow_right_default as DArrowRight,
|
||||
d_caret_default as DCaret,
|
||||
data_analysis_default as DataAnalysis,
|
||||
data_board_default as DataBoard,
|
||||
data_line_default as DataLine,
|
||||
delete_default as Delete,
|
||||
delete_filled_default as DeleteFilled,
|
||||
delete_location_default as DeleteLocation,
|
||||
dessert_default as Dessert,
|
||||
discount_default as Discount,
|
||||
dish_default as Dish,
|
||||
dish_dot_default as DishDot,
|
||||
document_default as Document,
|
||||
document_add_default as DocumentAdd,
|
||||
document_checked_default as DocumentChecked,
|
||||
document_copy_default as DocumentCopy,
|
||||
document_delete_default as DocumentDelete,
|
||||
document_remove_default as DocumentRemove,
|
||||
download_default as Download,
|
||||
drizzling_default as Drizzling,
|
||||
edit_default as Edit,
|
||||
edit_pen_default as EditPen,
|
||||
eleme_default as Eleme,
|
||||
eleme_filled_default as ElemeFilled,
|
||||
element_plus_default as ElementPlus,
|
||||
expand_default as Expand,
|
||||
failed_default as Failed,
|
||||
female_default as Female,
|
||||
files_default as Files,
|
||||
film_default as Film,
|
||||
filter_default as Filter,
|
||||
finished_default as Finished,
|
||||
first_aid_kit_default as FirstAidKit,
|
||||
flag_default as Flag,
|
||||
fold_default as Fold,
|
||||
folder_default as Folder,
|
||||
folder_add_default as FolderAdd,
|
||||
folder_checked_default as FolderChecked,
|
||||
folder_delete_default as FolderDelete,
|
||||
folder_opened_default as FolderOpened,
|
||||
folder_remove_default as FolderRemove,
|
||||
food_default as Food,
|
||||
football_default as Football,
|
||||
fork_spoon_default as ForkSpoon,
|
||||
fries_default as Fries,
|
||||
full_screen_default as FullScreen,
|
||||
goblet_default as Goblet,
|
||||
goblet_full_default as GobletFull,
|
||||
goblet_square_default as GobletSquare,
|
||||
goblet_square_full_default as GobletSquareFull,
|
||||
gold_medal_default as GoldMedal,
|
||||
goods_default as Goods,
|
||||
goods_filled_default as GoodsFilled,
|
||||
grape_default as Grape,
|
||||
grid_default as Grid,
|
||||
guide_default as Guide,
|
||||
handbag_default as Handbag,
|
||||
headset_default as Headset,
|
||||
help_default as Help,
|
||||
help_filled_default as HelpFilled,
|
||||
hide_default as Hide,
|
||||
histogram_default as Histogram,
|
||||
home_filled_default as HomeFilled,
|
||||
hot_water_default as HotWater,
|
||||
house_default as House,
|
||||
ice_cream_default as IceCream,
|
||||
ice_cream_round_default as IceCreamRound,
|
||||
ice_cream_square_default as IceCreamSquare,
|
||||
ice_drink_default as IceDrink,
|
||||
ice_tea_default as IceTea,
|
||||
info_filled_default as InfoFilled,
|
||||
iphone_default as Iphone,
|
||||
key_default as Key,
|
||||
knife_fork_default as KnifeFork,
|
||||
lightning_default as Lightning,
|
||||
link_default as Link,
|
||||
list_default as List,
|
||||
loading_default as Loading,
|
||||
location_default as Location,
|
||||
location_filled_default as LocationFilled,
|
||||
location_information_default as LocationInformation,
|
||||
lock_default as Lock,
|
||||
lollipop_default as Lollipop,
|
||||
magic_stick_default as MagicStick,
|
||||
magnet_default as Magnet,
|
||||
male_default as Male,
|
||||
management_default as Management,
|
||||
map_location_default as MapLocation,
|
||||
medal_default as Medal,
|
||||
memo_default as Memo,
|
||||
menu_default as Menu,
|
||||
message_default as Message,
|
||||
message_box_default as MessageBox,
|
||||
mic_default as Mic,
|
||||
microphone_default as Microphone,
|
||||
milk_tea_default as MilkTea,
|
||||
minus_default as Minus,
|
||||
money_default as Money,
|
||||
monitor_default as Monitor,
|
||||
moon_default as Moon,
|
||||
moon_night_default as MoonNight,
|
||||
more_default as More,
|
||||
more_filled_default as MoreFilled,
|
||||
mostly_cloudy_default as MostlyCloudy,
|
||||
mouse_default as Mouse,
|
||||
mug_default as Mug,
|
||||
mute_default as Mute,
|
||||
mute_notification_default as MuteNotification,
|
||||
no_smoking_default as NoSmoking,
|
||||
notebook_default as Notebook,
|
||||
notification_default as Notification,
|
||||
odometer_default as Odometer,
|
||||
office_building_default as OfficeBuilding,
|
||||
open_default as Open,
|
||||
operation_default as Operation,
|
||||
opportunity_default as Opportunity,
|
||||
orange_default as Orange,
|
||||
paperclip_default as Paperclip,
|
||||
partly_cloudy_default as PartlyCloudy,
|
||||
pear_default as Pear,
|
||||
phone_default as Phone,
|
||||
phone_filled_default as PhoneFilled,
|
||||
picture_default as Picture,
|
||||
picture_filled_default as PictureFilled,
|
||||
picture_rounded_default as PictureRounded,
|
||||
pie_chart_default as PieChart,
|
||||
place_default as Place,
|
||||
platform_default as Platform,
|
||||
plus_default as Plus,
|
||||
pointer_default as Pointer,
|
||||
position_default as Position,
|
||||
postcard_default as Postcard,
|
||||
pouring_default as Pouring,
|
||||
present_default as Present,
|
||||
price_tag_default as PriceTag,
|
||||
printer_default as Printer,
|
||||
promotion_default as Promotion,
|
||||
quartz_watch_default as QuartzWatch,
|
||||
question_filled_default as QuestionFilled,
|
||||
rank_default as Rank,
|
||||
reading_default as Reading,
|
||||
reading_lamp_default as ReadingLamp,
|
||||
refresh_default as Refresh,
|
||||
refresh_left_default as RefreshLeft,
|
||||
refresh_right_default as RefreshRight,
|
||||
refrigerator_default as Refrigerator,
|
||||
remove_default as Remove,
|
||||
remove_filled_default as RemoveFilled,
|
||||
right_default as Right,
|
||||
scale_to_original_default as ScaleToOriginal,
|
||||
school_default as School,
|
||||
scissor_default as Scissor,
|
||||
search_default as Search,
|
||||
select_default as Select,
|
||||
sell_default as Sell,
|
||||
semi_select_default as SemiSelect,
|
||||
service_default as Service,
|
||||
set_up_default as SetUp,
|
||||
setting_default as Setting,
|
||||
share_default as Share,
|
||||
ship_default as Ship,
|
||||
shop_default as Shop,
|
||||
shopping_bag_default as ShoppingBag,
|
||||
shopping_cart_default as ShoppingCart,
|
||||
shopping_cart_full_default as ShoppingCartFull,
|
||||
shopping_trolley_default as ShoppingTrolley,
|
||||
smoking_default as Smoking,
|
||||
soccer_default as Soccer,
|
||||
sold_out_default as SoldOut,
|
||||
sort_default as Sort,
|
||||
sort_down_default as SortDown,
|
||||
sort_up_default as SortUp,
|
||||
stamp_default as Stamp,
|
||||
star_default as Star,
|
||||
star_filled_default as StarFilled,
|
||||
stopwatch_default as Stopwatch,
|
||||
success_filled_default as SuccessFilled,
|
||||
sugar_default as Sugar,
|
||||
suitcase_default as Suitcase,
|
||||
suitcase_line_default as SuitcaseLine,
|
||||
sunny_default as Sunny,
|
||||
sunrise_default as Sunrise,
|
||||
sunset_default as Sunset,
|
||||
switch_default as Switch,
|
||||
switch_button_default as SwitchButton,
|
||||
switch_filled_default as SwitchFilled,
|
||||
takeaway_box_default as TakeawayBox,
|
||||
ticket_default as Ticket,
|
||||
tickets_default as Tickets,
|
||||
timer_default as Timer,
|
||||
toilet_paper_default as ToiletPaper,
|
||||
tools_default as Tools,
|
||||
top_default as Top,
|
||||
top_left_default as TopLeft,
|
||||
top_right_default as TopRight,
|
||||
trend_charts_default as TrendCharts,
|
||||
trophy_default as Trophy,
|
||||
trophy_base_default as TrophyBase,
|
||||
turn_off_default as TurnOff,
|
||||
umbrella_default as Umbrella,
|
||||
unlock_default as Unlock,
|
||||
upload_default as Upload,
|
||||
upload_filled_default as UploadFilled,
|
||||
user_default as User,
|
||||
user_filled_default as UserFilled,
|
||||
van_default as Van,
|
||||
video_camera_default as VideoCamera,
|
||||
video_camera_filled_default as VideoCameraFilled,
|
||||
video_pause_default as VideoPause,
|
||||
video_play_default as VideoPlay,
|
||||
view_default as View,
|
||||
wallet_default as Wallet,
|
||||
wallet_filled_default as WalletFilled,
|
||||
warn_triangle_filled_default as WarnTriangleFilled,
|
||||
warning_default as Warning,
|
||||
warning_filled_default as WarningFilled,
|
||||
watch_default as Watch,
|
||||
watermelon_default as Watermelon,
|
||||
wind_power_default as WindPower,
|
||||
zoom_in_default as ZoomIn,
|
||||
zoom_out_default as ZoomOut
|
||||
};
|
||||
7
frontend/node_modules/.vite/deps/@element-plus_icons-vue.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps/@element-plus_icons-vue.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
49
frontend/node_modules/.vite/deps/_metadata.json
generated
vendored
Normal file
49
frontend/node_modules/.vite/deps/_metadata.json
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"hash": "187c331d",
|
||||
"configHash": "ff158d0e",
|
||||
"lockfileHash": "e7335740",
|
||||
"browserHash": "fe802c0a",
|
||||
"optimized": {
|
||||
"@element-plus/icons-vue": {
|
||||
"src": "../../@element-plus/icons-vue/dist/index.js",
|
||||
"file": "@element-plus_icons-vue.js",
|
||||
"fileHash": "1032631a",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus": {
|
||||
"src": "../../element-plus/es/index.mjs",
|
||||
"file": "element-plus.js",
|
||||
"fileHash": "fc4340fd",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/locale/lang/zh-cn": {
|
||||
"src": "../../element-plus/es/locale/lang/zh-cn.mjs",
|
||||
"file": "element-plus_es_locale_lang_zh-cn.js",
|
||||
"fileHash": "c539d4b0",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue": {
|
||||
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "f550d9ec",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue-router": {
|
||||
"src": "../../vue-router/dist/vue-router.mjs",
|
||||
"file": "vue-router.js",
|
||||
"fileHash": "7622c1c3",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"chunk-XKDVN4EU": {
|
||||
"file": "chunk-XKDVN4EU.js"
|
||||
},
|
||||
"chunk-LUSDXJEL": {
|
||||
"file": "chunk-LUSDXJEL.js"
|
||||
},
|
||||
"chunk-5WRI5ZAA": {
|
||||
"file": "chunk-5WRI5ZAA.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
30
frontend/node_modules/.vite/deps/chunk-5WRI5ZAA.js
generated
vendored
Normal file
30
frontend/node_modules/.vite/deps/chunk-5WRI5ZAA.js
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __commonJS = (cb, mod) => function __require() {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||||
// If the importer is in node compatibility mode or this is not an ESM
|
||||
// file that has been converted to a CommonJS file using a Babel-
|
||||
// compatible transform (i.e. "__esModule" has not been set), then set
|
||||
// "default" to the CommonJS "module.exports" for node compatibility.
|
||||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||||
mod
|
||||
));
|
||||
|
||||
export {
|
||||
__commonJS,
|
||||
__toESM
|
||||
};
|
||||
7
frontend/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
13045
frontend/node_modules/.vite/deps/chunk-LUSDXJEL.js
generated
vendored
Normal file
13045
frontend/node_modules/.vite/deps/chunk-LUSDXJEL.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
frontend/node_modules/.vite/deps/chunk-LUSDXJEL.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps/chunk-LUSDXJEL.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
5472
frontend/node_modules/.vite/deps/chunk-XKDVN4EU.js
generated
vendored
Normal file
5472
frontend/node_modules/.vite/deps/chunk-XKDVN4EU.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
frontend/node_modules/.vite/deps/chunk-XKDVN4EU.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps/chunk-XKDVN4EU.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
67050
frontend/node_modules/.vite/deps/element-plus.js
generated
vendored
Normal file
67050
frontend/node_modules/.vite/deps/element-plus.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
frontend/node_modules/.vite/deps/element-plus.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps/element-plus.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
187
frontend/node_modules/.vite/deps/element-plus_es_locale_lang_zh-cn.js
generated
vendored
Normal file
187
frontend/node_modules/.vite/deps/element-plus_es_locale_lang_zh-cn.js
generated
vendored
Normal file
@@ -0,0 +1,187 @@
|
||||
import "./chunk-5WRI5ZAA.js";
|
||||
|
||||
// node_modules/element-plus/es/locale/lang/zh-cn.mjs
|
||||
var zh_cn_default = {
|
||||
name: "zh-cn",
|
||||
el: {
|
||||
breadcrumb: { label: "面包屑" },
|
||||
colorpicker: {
|
||||
confirm: "确定",
|
||||
clear: "清空",
|
||||
defaultLabel: "颜色选择器",
|
||||
description: "当前颜色 {color},按 Enter 键选择新颜色",
|
||||
alphaLabel: "选择透明度的值",
|
||||
alphaDescription: "透明度 {alpha}, 当前颜色 {color}",
|
||||
hueLabel: "选择色相值",
|
||||
hueDescription: "色相 {hue}, 当前颜色 {color}",
|
||||
svLabel: "选择饱和度与明度的值",
|
||||
svDescription: "饱和度 {saturation}, 明度 {brightness}, 当前颜色 {color}",
|
||||
predefineDescription: "选择 {value} 作为颜色"
|
||||
},
|
||||
datepicker: {
|
||||
now: "此刻",
|
||||
today: "今天",
|
||||
cancel: "取消",
|
||||
clear: "清空",
|
||||
confirm: "确定",
|
||||
dateTablePrompt: "使用方向键与 Enter 键可选择日期",
|
||||
monthTablePrompt: "使用方向键与 Enter 键可选择月份",
|
||||
yearTablePrompt: "使用方向键与 Enter 键可选择年份",
|
||||
selectedDate: "已选日期",
|
||||
selectDate: "选择日期",
|
||||
selectTime: "选择时间",
|
||||
startDate: "开始日期",
|
||||
startTime: "开始时间",
|
||||
endDate: "结束日期",
|
||||
endTime: "结束时间",
|
||||
prevYear: "前一年",
|
||||
nextYear: "后一年",
|
||||
prevMonth: "上个月",
|
||||
nextMonth: "下个月",
|
||||
year: "年",
|
||||
month1: "1 月",
|
||||
month2: "2 月",
|
||||
month3: "3 月",
|
||||
month4: "4 月",
|
||||
month5: "5 月",
|
||||
month6: "6 月",
|
||||
month7: "7 月",
|
||||
month8: "8 月",
|
||||
month9: "9 月",
|
||||
month10: "10 月",
|
||||
month11: "11 月",
|
||||
month12: "12 月",
|
||||
weeks: {
|
||||
sun: "日",
|
||||
mon: "一",
|
||||
tue: "二",
|
||||
wed: "三",
|
||||
thu: "四",
|
||||
fri: "五",
|
||||
sat: "六"
|
||||
},
|
||||
weeksFull: {
|
||||
sun: "星期日",
|
||||
mon: "星期一",
|
||||
tue: "星期二",
|
||||
wed: "星期三",
|
||||
thu: "星期四",
|
||||
fri: "星期五",
|
||||
sat: "星期六"
|
||||
},
|
||||
months: {
|
||||
jan: "一月",
|
||||
feb: "二月",
|
||||
mar: "三月",
|
||||
apr: "四月",
|
||||
may: "五月",
|
||||
jun: "六月",
|
||||
jul: "七月",
|
||||
aug: "八月",
|
||||
sep: "九月",
|
||||
oct: "十月",
|
||||
nov: "十一月",
|
||||
dec: "十二月"
|
||||
}
|
||||
},
|
||||
inputNumber: {
|
||||
decrease: "减少数值",
|
||||
increase: "增加数值"
|
||||
},
|
||||
select: {
|
||||
loading: "加载中",
|
||||
noMatch: "无匹配数据",
|
||||
noData: "无数据",
|
||||
placeholder: "请选择"
|
||||
},
|
||||
mention: { loading: "加载中" },
|
||||
dropdown: { toggleDropdown: "切换下拉选项" },
|
||||
cascader: {
|
||||
noMatch: "无匹配数据",
|
||||
loading: "加载中",
|
||||
placeholder: "请选择",
|
||||
noData: "暂无数据"
|
||||
},
|
||||
pagination: {
|
||||
goto: "前往",
|
||||
pagesize: "条/页",
|
||||
total: "共 {total} 条",
|
||||
pageClassifier: "页",
|
||||
page: "页",
|
||||
prev: "上一页",
|
||||
next: "下一页",
|
||||
currentPage: "第 {pager} 页",
|
||||
prevPages: "向前 {pager} 页",
|
||||
nextPages: "向后 {pager} 页",
|
||||
deprecationWarning: "你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档"
|
||||
},
|
||||
dialog: { close: "关闭此对话框" },
|
||||
drawer: { close: "关闭此对话框" },
|
||||
messagebox: {
|
||||
title: "提示",
|
||||
confirm: "确定",
|
||||
cancel: "取消",
|
||||
error: "输入的数据不合法!",
|
||||
close: "关闭此对话框"
|
||||
},
|
||||
upload: {
|
||||
deleteTip: "按 Delete 键可删除",
|
||||
delete: "删除",
|
||||
preview: "查看图片",
|
||||
continue: "继续上传"
|
||||
},
|
||||
slider: {
|
||||
defaultLabel: "滑块介于 {min} 至 {max}",
|
||||
defaultRangeStartLabel: "选择起始值",
|
||||
defaultRangeEndLabel: "选择结束值"
|
||||
},
|
||||
table: {
|
||||
emptyText: "暂无数据",
|
||||
confirmFilter: "筛选",
|
||||
resetFilter: "重置",
|
||||
clearFilter: "全部",
|
||||
sumText: "合计",
|
||||
selectAllLabel: "选择所有行",
|
||||
selectRowLabel: "选择当前行",
|
||||
expandRowLabel: "展开当前行",
|
||||
collapseRowLabel: "收起当前行",
|
||||
sortLabel: "按 {column} 排序",
|
||||
filterLabel: "按 {column} 过滤"
|
||||
},
|
||||
tag: { close: "关闭此标签" },
|
||||
tour: {
|
||||
next: "下一步",
|
||||
previous: "上一步",
|
||||
finish: "结束导览",
|
||||
close: "关闭此对话框"
|
||||
},
|
||||
tree: { emptyText: "暂无数据" },
|
||||
transfer: {
|
||||
noMatch: "无匹配数据",
|
||||
noData: "无数据",
|
||||
titles: ["列表 1", "列表 2"],
|
||||
filterPlaceholder: "请输入搜索内容",
|
||||
noCheckedFormat: "共 {total} 项",
|
||||
hasCheckedFormat: "已选 {checked}/{total} 项"
|
||||
},
|
||||
image: { error: "加载失败" },
|
||||
pageHeader: { title: "返回" },
|
||||
popconfirm: {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消"
|
||||
},
|
||||
carousel: {
|
||||
leftArrow: "上一张幻灯片",
|
||||
rightArrow: "下一张幻灯片",
|
||||
indicator: "幻灯片切换至索引 {index}"
|
||||
},
|
||||
inputOTP: {
|
||||
groupLabel: "一次性密码输入框",
|
||||
defaultLabel: "请输入第 {index} 位 OTP 字符"
|
||||
}
|
||||
}
|
||||
};
|
||||
export {
|
||||
zh_cn_default as default
|
||||
};
|
||||
//# sourceMappingURL=element-plus_es_locale_lang_zh-cn.js.map
|
||||
7
frontend/node_modules/.vite/deps/element-plus_es_locale_lang_zh-cn.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps/element-plus_es_locale_lang_zh-cn.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
3
frontend/node_modules/.vite/deps/package.json
generated
vendored
Normal file
3
frontend/node_modules/.vite/deps/package.json
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
2396
frontend/node_modules/.vite/deps/vue-router.js
generated
vendored
Normal file
2396
frontend/node_modules/.vite/deps/vue-router.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
frontend/node_modules/.vite/deps/vue-router.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps/vue-router.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
347
frontend/node_modules/.vite/deps/vue.js
generated
vendored
Normal file
347
frontend/node_modules/.vite/deps/vue.js
generated
vendored
Normal file
@@ -0,0 +1,347 @@
|
||||
import {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
Comment,
|
||||
DeprecationTypes,
|
||||
EffectScope,
|
||||
ErrorCodes,
|
||||
ErrorTypeStrings,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
TrackOpTypes,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
TriggerOpTypes,
|
||||
VueElement,
|
||||
assertNumber,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
compile,
|
||||
computed,
|
||||
createApp,
|
||||
createBaseVNode,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineModel,
|
||||
defineOptions,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
defineSlots,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getCurrentWatcher,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hasInjectionContext,
|
||||
hydrate,
|
||||
hydrateOnIdle,
|
||||
hydrateOnInteraction,
|
||||
hydrateOnMediaQuery,
|
||||
hydrateOnVisible,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeModels,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
nodeOps,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
onWatcherCleanup,
|
||||
openBlock,
|
||||
patchProp,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useHost,
|
||||
useId,
|
||||
useModel,
|
||||
useSSRContext,
|
||||
useShadowRoot,
|
||||
useSlots,
|
||||
useTemplateRef,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
} from "./chunk-LUSDXJEL.js";
|
||||
import "./chunk-5WRI5ZAA.js";
|
||||
export {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
Comment,
|
||||
DeprecationTypes,
|
||||
EffectScope,
|
||||
ErrorCodes,
|
||||
ErrorTypeStrings,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
TrackOpTypes,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
TriggerOpTypes,
|
||||
VueElement,
|
||||
assertNumber,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
compile,
|
||||
computed,
|
||||
createApp,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createBaseVNode as createElementVNode,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineModel,
|
||||
defineOptions,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
defineSlots,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getCurrentWatcher,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hasInjectionContext,
|
||||
hydrate,
|
||||
hydrateOnIdle,
|
||||
hydrateOnInteraction,
|
||||
hydrateOnMediaQuery,
|
||||
hydrateOnVisible,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeModels,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
nodeOps,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
onWatcherCleanup,
|
||||
openBlock,
|
||||
patchProp,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useHost,
|
||||
useId,
|
||||
useModel,
|
||||
useSSRContext,
|
||||
useShadowRoot,
|
||||
useSlots,
|
||||
useTemplateRef,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
};
|
||||
7
frontend/node_modules/.vite/deps/vue.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps/vue.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
22
frontend/node_modules/@babel/helper-string-parser/LICENSE
generated
vendored
Normal file
22
frontend/node_modules/@babel/helper-string-parser/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
19
frontend/node_modules/@babel/helper-string-parser/README.md
generated
vendored
Normal file
19
frontend/node_modules/@babel/helper-string-parser/README.md
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# @babel/helper-string-parser
|
||||
|
||||
> A utility package to parse strings
|
||||
|
||||
See our website [@babel/helper-string-parser](https://babeljs.io/docs/babel-helper-string-parser) for more information.
|
||||
|
||||
## Install
|
||||
|
||||
Using npm:
|
||||
|
||||
```sh
|
||||
npm install --save @babel/helper-string-parser
|
||||
```
|
||||
|
||||
or using yarn:
|
||||
|
||||
```sh
|
||||
yarn add @babel/helper-string-parser
|
||||
```
|
||||
295
frontend/node_modules/@babel/helper-string-parser/lib/index.js
generated
vendored
Normal file
295
frontend/node_modules/@babel/helper-string-parser/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,295 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.readCodePoint = readCodePoint;
|
||||
exports.readInt = readInt;
|
||||
exports.readStringContents = readStringContents;
|
||||
var _isDigit = function isDigit(code) {
|
||||
return code >= 48 && code <= 57;
|
||||
};
|
||||
const forbiddenNumericSeparatorSiblings = {
|
||||
decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
|
||||
hex: new Set([46, 88, 95, 120])
|
||||
};
|
||||
const isAllowedNumericSeparatorSibling = {
|
||||
bin: ch => ch === 48 || ch === 49,
|
||||
oct: ch => ch >= 48 && ch <= 55,
|
||||
dec: ch => ch >= 48 && ch <= 57,
|
||||
hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102
|
||||
};
|
||||
function readStringContents(type, input, pos, lineStart, curLine, errors) {
|
||||
const initialPos = pos;
|
||||
const initialLineStart = lineStart;
|
||||
const initialCurLine = curLine;
|
||||
let out = "";
|
||||
let firstInvalidLoc = null;
|
||||
let chunkStart = pos;
|
||||
const {
|
||||
length
|
||||
} = input;
|
||||
for (;;) {
|
||||
if (pos >= length) {
|
||||
errors.unterminated(initialPos, initialLineStart, initialCurLine);
|
||||
out += input.slice(chunkStart, pos);
|
||||
break;
|
||||
}
|
||||
const ch = input.charCodeAt(pos);
|
||||
if (isStringEnd(type, ch, input, pos)) {
|
||||
out += input.slice(chunkStart, pos);
|
||||
break;
|
||||
}
|
||||
if (ch === 92) {
|
||||
out += input.slice(chunkStart, pos);
|
||||
const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
|
||||
if (res.ch === null && !firstInvalidLoc) {
|
||||
firstInvalidLoc = {
|
||||
pos,
|
||||
lineStart,
|
||||
curLine
|
||||
};
|
||||
} else {
|
||||
out += res.ch;
|
||||
}
|
||||
({
|
||||
pos,
|
||||
lineStart,
|
||||
curLine
|
||||
} = res);
|
||||
chunkStart = pos;
|
||||
} else if (ch === 8232 || ch === 8233) {
|
||||
++pos;
|
||||
++curLine;
|
||||
lineStart = pos;
|
||||
} else if (ch === 10 || ch === 13) {
|
||||
if (type === "template") {
|
||||
out += input.slice(chunkStart, pos) + "\n";
|
||||
++pos;
|
||||
if (ch === 13 && input.charCodeAt(pos) === 10) {
|
||||
++pos;
|
||||
}
|
||||
++curLine;
|
||||
chunkStart = lineStart = pos;
|
||||
} else {
|
||||
errors.unterminated(initialPos, initialLineStart, initialCurLine);
|
||||
}
|
||||
} else {
|
||||
++pos;
|
||||
}
|
||||
}
|
||||
return {
|
||||
pos,
|
||||
str: out,
|
||||
firstInvalidLoc,
|
||||
lineStart,
|
||||
curLine,
|
||||
containsInvalid: !!firstInvalidLoc
|
||||
};
|
||||
}
|
||||
function isStringEnd(type, ch, input, pos) {
|
||||
if (type === "template") {
|
||||
return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
|
||||
}
|
||||
return ch === (type === "double" ? 34 : 39);
|
||||
}
|
||||
function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
|
||||
const throwOnInvalid = !inTemplate;
|
||||
pos++;
|
||||
const res = ch => ({
|
||||
pos,
|
||||
ch,
|
||||
lineStart,
|
||||
curLine
|
||||
});
|
||||
const ch = input.charCodeAt(pos++);
|
||||
switch (ch) {
|
||||
case 110:
|
||||
return res("\n");
|
||||
case 114:
|
||||
return res("\r");
|
||||
case 120:
|
||||
{
|
||||
let code;
|
||||
({
|
||||
code,
|
||||
pos
|
||||
} = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));
|
||||
return res(code === null ? null : String.fromCharCode(code));
|
||||
}
|
||||
case 117:
|
||||
{
|
||||
let code;
|
||||
({
|
||||
code,
|
||||
pos
|
||||
} = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));
|
||||
return res(code === null ? null : String.fromCodePoint(code));
|
||||
}
|
||||
case 116:
|
||||
return res("\t");
|
||||
case 98:
|
||||
return res("\b");
|
||||
case 118:
|
||||
return res("\u000b");
|
||||
case 102:
|
||||
return res("\f");
|
||||
case 13:
|
||||
if (input.charCodeAt(pos) === 10) {
|
||||
++pos;
|
||||
}
|
||||
case 10:
|
||||
lineStart = pos;
|
||||
++curLine;
|
||||
case 8232:
|
||||
case 8233:
|
||||
return res("");
|
||||
case 56:
|
||||
case 57:
|
||||
if (inTemplate) {
|
||||
return res(null);
|
||||
} else {
|
||||
errors.strictNumericEscape(pos - 1, lineStart, curLine);
|
||||
}
|
||||
default:
|
||||
if (ch >= 48 && ch <= 55) {
|
||||
const startPos = pos - 1;
|
||||
const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
|
||||
let octalStr = match[0];
|
||||
let octal = parseInt(octalStr, 8);
|
||||
if (octal > 255) {
|
||||
octalStr = octalStr.slice(0, -1);
|
||||
octal = parseInt(octalStr, 8);
|
||||
}
|
||||
pos += octalStr.length - 1;
|
||||
const next = input.charCodeAt(pos);
|
||||
if (octalStr !== "0" || next === 56 || next === 57) {
|
||||
if (inTemplate) {
|
||||
return res(null);
|
||||
} else {
|
||||
errors.strictNumericEscape(startPos, lineStart, curLine);
|
||||
}
|
||||
}
|
||||
return res(String.fromCharCode(octal));
|
||||
}
|
||||
return res(String.fromCharCode(ch));
|
||||
}
|
||||
}
|
||||
function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
|
||||
const initialPos = pos;
|
||||
let n;
|
||||
({
|
||||
n,
|
||||
pos
|
||||
} = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));
|
||||
if (n === null) {
|
||||
if (throwOnInvalid) {
|
||||
errors.invalidEscapeSequence(initialPos, lineStart, curLine);
|
||||
} else {
|
||||
pos = initialPos - 1;
|
||||
}
|
||||
}
|
||||
return {
|
||||
code: n,
|
||||
pos
|
||||
};
|
||||
}
|
||||
function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
|
||||
const start = pos;
|
||||
const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
|
||||
const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
|
||||
let invalid = false;
|
||||
let total = 0;
|
||||
for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
|
||||
const code = input.charCodeAt(pos);
|
||||
let val;
|
||||
if (code === 95 && allowNumSeparator !== "bail") {
|
||||
const prev = input.charCodeAt(pos - 1);
|
||||
const next = input.charCodeAt(pos + 1);
|
||||
if (!allowNumSeparator) {
|
||||
if (bailOnError) return {
|
||||
n: null,
|
||||
pos
|
||||
};
|
||||
errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
|
||||
} else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
|
||||
if (bailOnError) return {
|
||||
n: null,
|
||||
pos
|
||||
};
|
||||
errors.unexpectedNumericSeparator(pos, lineStart, curLine);
|
||||
}
|
||||
++pos;
|
||||
continue;
|
||||
}
|
||||
if (code >= 97) {
|
||||
val = code - 97 + 10;
|
||||
} else if (code >= 65) {
|
||||
val = code - 65 + 10;
|
||||
} else if (_isDigit(code)) {
|
||||
val = code - 48;
|
||||
} else {
|
||||
val = Infinity;
|
||||
}
|
||||
if (val >= radix) {
|
||||
if (val <= 9 && bailOnError) {
|
||||
return {
|
||||
n: null,
|
||||
pos
|
||||
};
|
||||
} else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
|
||||
val = 0;
|
||||
} else if (forceLen) {
|
||||
val = 0;
|
||||
invalid = true;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
++pos;
|
||||
total = total * radix + val;
|
||||
}
|
||||
if (pos === start || len != null && pos - start !== len || invalid) {
|
||||
return {
|
||||
n: null,
|
||||
pos
|
||||
};
|
||||
}
|
||||
return {
|
||||
n: total,
|
||||
pos
|
||||
};
|
||||
}
|
||||
function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
|
||||
const ch = input.charCodeAt(pos);
|
||||
let code;
|
||||
if (ch === 123) {
|
||||
++pos;
|
||||
({
|
||||
code,
|
||||
pos
|
||||
} = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors));
|
||||
++pos;
|
||||
if (code !== null && code > 0x10ffff) {
|
||||
if (throwOnInvalid) {
|
||||
errors.invalidCodePoint(pos, lineStart, curLine);
|
||||
} else {
|
||||
return {
|
||||
code: null,
|
||||
pos
|
||||
};
|
||||
}
|
||||
}
|
||||
} else {
|
||||
({
|
||||
code,
|
||||
pos
|
||||
} = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));
|
||||
}
|
||||
return {
|
||||
code,
|
||||
pos
|
||||
};
|
||||
}
|
||||
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
frontend/node_modules/@babel/helper-string-parser/lib/index.js.map
generated
vendored
Normal file
1
frontend/node_modules/@babel/helper-string-parser/lib/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
31
frontend/node_modules/@babel/helper-string-parser/package.json
generated
vendored
Normal file
31
frontend/node_modules/@babel/helper-string-parser/package.json
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "@babel/helper-string-parser",
|
||||
"version": "7.29.7",
|
||||
"description": "A utility package to parse strings",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/babel/babel.git",
|
||||
"directory": "packages/babel-helper-string-parser"
|
||||
},
|
||||
"homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser",
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"main": "./lib/index.js",
|
||||
"devDependencies": {
|
||||
"charcodes": "^0.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"author": "The Babel Team (https://babel.dev/team)",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./lib/index.d.ts",
|
||||
"default": "./lib/index.js"
|
||||
},
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"type": "commonjs"
|
||||
}
|
||||
22
frontend/node_modules/@babel/helper-validator-identifier/LICENSE
generated
vendored
Normal file
22
frontend/node_modules/@babel/helper-validator-identifier/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2014-present Sebastian McKenzie and other contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
19
frontend/node_modules/@babel/helper-validator-identifier/README.md
generated
vendored
Normal file
19
frontend/node_modules/@babel/helper-validator-identifier/README.md
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# @babel/helper-validator-identifier
|
||||
|
||||
> Validate identifier/keywords name
|
||||
|
||||
See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/babel-helper-validator-identifier) for more information.
|
||||
|
||||
## Install
|
||||
|
||||
Using npm:
|
||||
|
||||
```sh
|
||||
npm install --save @babel/helper-validator-identifier
|
||||
```
|
||||
|
||||
or using yarn:
|
||||
|
||||
```sh
|
||||
yarn add @babel/helper-validator-identifier
|
||||
```
|
||||
70
frontend/node_modules/@babel/helper-validator-identifier/lib/identifier.js
generated
vendored
Normal file
70
frontend/node_modules/@babel/helper-validator-identifier/lib/identifier.js
generated
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.isIdentifierChar = isIdentifierChar;
|
||||
exports.isIdentifierName = isIdentifierName;
|
||||
exports.isIdentifierStart = isIdentifierStart;
|
||||
let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
|
||||
let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
|
||||
const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
|
||||
const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
|
||||
nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
|
||||
const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];
|
||||
const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
|
||||
function isInAstralSet(code, set) {
|
||||
let pos = 0x10000;
|
||||
for (let i = 0, length = set.length; i < length; i += 2) {
|
||||
pos += set[i];
|
||||
if (pos > code) return false;
|
||||
pos += set[i + 1];
|
||||
if (pos >= code) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function isIdentifierStart(code) {
|
||||
if (code < 65) return code === 36;
|
||||
if (code <= 90) return true;
|
||||
if (code < 97) return code === 95;
|
||||
if (code <= 122) return true;
|
||||
if (code <= 0xffff) {
|
||||
return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
|
||||
}
|
||||
return isInAstralSet(code, astralIdentifierStartCodes);
|
||||
}
|
||||
function isIdentifierChar(code) {
|
||||
if (code < 48) return code === 36;
|
||||
if (code < 58) return true;
|
||||
if (code < 65) return false;
|
||||
if (code <= 90) return true;
|
||||
if (code < 97) return code === 95;
|
||||
if (code <= 122) return true;
|
||||
if (code <= 0xffff) {
|
||||
return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
|
||||
}
|
||||
return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
|
||||
}
|
||||
function isIdentifierName(name) {
|
||||
let isFirst = true;
|
||||
for (let i = 0; i < name.length; i++) {
|
||||
let cp = name.charCodeAt(i);
|
||||
if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
|
||||
const trail = name.charCodeAt(++i);
|
||||
if ((trail & 0xfc00) === 0xdc00) {
|
||||
cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
|
||||
}
|
||||
}
|
||||
if (isFirst) {
|
||||
isFirst = false;
|
||||
if (!isIdentifierStart(cp)) {
|
||||
return false;
|
||||
}
|
||||
} else if (!isIdentifierChar(cp)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return !isFirst;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=identifier.js.map
|
||||
1
frontend/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
generated
vendored
Normal file
1
frontend/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
57
frontend/node_modules/@babel/helper-validator-identifier/lib/index.js
generated
vendored
Normal file
57
frontend/node_modules/@babel/helper-validator-identifier/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
Object.defineProperty(exports, "isIdentifierChar", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _identifier.isIdentifierChar;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "isIdentifierName", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _identifier.isIdentifierName;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "isIdentifierStart", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _identifier.isIdentifierStart;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "isKeyword", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _keyword.isKeyword;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "isReservedWord", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _keyword.isReservedWord;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _keyword.isStrictBindOnlyReservedWord;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "isStrictBindReservedWord", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _keyword.isStrictBindReservedWord;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(exports, "isStrictReservedWord", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _keyword.isStrictReservedWord;
|
||||
}
|
||||
});
|
||||
var _identifier = require("./identifier.js");
|
||||
var _keyword = require("./keyword.js");
|
||||
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
frontend/node_modules/@babel/helper-validator-identifier/lib/index.js.map
generated
vendored
Normal file
1
frontend/node_modules/@babel/helper-validator-identifier/lib/index.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]}
|
||||
35
frontend/node_modules/@babel/helper-validator-identifier/lib/keyword.js
generated
vendored
Normal file
35
frontend/node_modules/@babel/helper-validator-identifier/lib/keyword.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.isKeyword = isKeyword;
|
||||
exports.isReservedWord = isReservedWord;
|
||||
exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
|
||||
exports.isStrictBindReservedWord = isStrictBindReservedWord;
|
||||
exports.isStrictReservedWord = isStrictReservedWord;
|
||||
const reservedWords = {
|
||||
keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
|
||||
strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
|
||||
strictBind: ["eval", "arguments"]
|
||||
};
|
||||
const keywords = new Set(reservedWords.keyword);
|
||||
const reservedWordsStrictSet = new Set(reservedWords.strict);
|
||||
const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
|
||||
function isReservedWord(word, inModule) {
|
||||
return inModule && word === "await" || word === "enum";
|
||||
}
|
||||
function isStrictReservedWord(word, inModule) {
|
||||
return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
|
||||
}
|
||||
function isStrictBindOnlyReservedWord(word) {
|
||||
return reservedWordsStrictBindSet.has(word);
|
||||
}
|
||||
function isStrictBindReservedWord(word, inModule) {
|
||||
return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
|
||||
}
|
||||
function isKeyword(word) {
|
||||
return keywords.has(word);
|
||||
}
|
||||
|
||||
//# sourceMappingURL=keyword.js.map
|
||||
1
frontend/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
generated
vendored
Normal file
1
frontend/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B","ignoreList":[]}
|
||||
31
frontend/node_modules/@babel/helper-validator-identifier/package.json
generated
vendored
Normal file
31
frontend/node_modules/@babel/helper-validator-identifier/package.json
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "@babel/helper-validator-identifier",
|
||||
"version": "7.29.7",
|
||||
"description": "Validate identifier/keywords name",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/babel/babel.git",
|
||||
"directory": "packages/babel-helper-validator-identifier"
|
||||
},
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"main": "./lib/index.js",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./lib/index.d.ts",
|
||||
"default": "./lib/index.js"
|
||||
},
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@unicode/unicode-17.0.0": "^1.6.10",
|
||||
"charcodes": "^0.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"author": "The Babel Team (https://babel.dev/team)",
|
||||
"type": "commonjs"
|
||||
}
|
||||
1073
frontend/node_modules/@babel/parser/CHANGELOG.md
generated
vendored
Normal file
1073
frontend/node_modules/@babel/parser/CHANGELOG.md
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19
frontend/node_modules/@babel/parser/LICENSE
generated
vendored
Normal file
19
frontend/node_modules/@babel/parser/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (C) 2012-2014 by various contributors (see AUTHORS)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
19
frontend/node_modules/@babel/parser/README.md
generated
vendored
Normal file
19
frontend/node_modules/@babel/parser/README.md
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# @babel/parser
|
||||
|
||||
> A JavaScript parser
|
||||
|
||||
See our website [@babel/parser](https://babeljs.io/docs/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%22+is%3Aopen) associated with this package.
|
||||
|
||||
## Install
|
||||
|
||||
Using npm:
|
||||
|
||||
```sh
|
||||
npm install --save-dev @babel/parser
|
||||
```
|
||||
|
||||
or using yarn:
|
||||
|
||||
```sh
|
||||
yarn add @babel/parser --dev
|
||||
```
|
||||
15
frontend/node_modules/@babel/parser/bin/babel-parser.js
generated
vendored
Normal file
15
frontend/node_modules/@babel/parser/bin/babel-parser.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env node
|
||||
/* eslint-disable no-var, unicorn/prefer-node-protocol */
|
||||
|
||||
var parser = require("..");
|
||||
var fs = require("fs");
|
||||
|
||||
var filename = process.argv[2];
|
||||
if (!filename) {
|
||||
console.error("no filename specified");
|
||||
} else {
|
||||
var file = fs.readFileSync(filename, "utf8");
|
||||
var ast = parser.parse(file);
|
||||
|
||||
console.log(JSON.stringify(ast, null, " "));
|
||||
}
|
||||
14599
frontend/node_modules/@babel/parser/lib/index.js
generated
vendored
Normal file
14599
frontend/node_modules/@babel/parser/lib/index.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
frontend/node_modules/@babel/parser/lib/index.js.map
generated
vendored
Normal file
1
frontend/node_modules/@babel/parser/lib/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user