Spaces:
Sleeping
Sleeping
yassinekolsi commited on
Commit ·
de77cc2
1
Parent(s): 680788a
docs: Updated README
Browse files- README.md +132 -14
- ui/pnpm-lock.yaml +36 -0
README.md
CHANGED
|
@@ -1,27 +1,145 @@
|
|
| 1 |
-
|
| 2 |
|
| 3 |
-
|
| 4 |
|
| 5 |
-
|
|
|
|
|
|
|
|
|
|
| 6 |
|
| 7 |
-
|
| 8 |
|
| 9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
-
|
| 12 |
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
-
|
| 16 |
|
| 17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
python deeppurpose002.py
|
| 19 |
-
python prediction_test.py
|
| 20 |
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
-
|
| 24 |
|
| 25 |
-
|
| 26 |
|
| 27 |
-
|
|
|
|
| 1 |
+
# 🧬 Multimodal Biological Design & Discovery Intelligence
|
| 2 |
|
| 3 |
+
> Drug-Target Interaction prediction platform powered by DeepPurpose ML + Qdrant vector search + Next.js visualization
|
| 4 |
|
| 5 |
+

|
| 6 |
+

|
| 7 |
+

|
| 8 |
+

|
| 9 |
|
| 10 |
+
## 🎯 Overview
|
| 11 |
|
| 12 |
+
This platform enables **drug discovery** through:
|
| 13 |
+
- **Deep Learning** — Morgan fingerprints + CNN protein encoding (DeepPurpose)
|
| 14 |
+
- **Vector Search** — Similarity search via Qdrant embeddings
|
| 15 |
+
- **3D Visualization** — Real PCA projections of drug-target space
|
| 16 |
+
- **Interactive UI** — Next.js dashboard with Recharts
|
| 17 |
|
| 18 |
+
## 📊 Model Performance
|
| 19 |
|
| 20 |
+
| Dataset | Concordance Index | Pearson | MSE |
|
| 21 |
+
|---------|-------------------|---------|-----|
|
| 22 |
+
| **KIBA** | 0.7003 | 0.5219 | 0.0008 |
|
| 23 |
+
| **BindingDB_Kd** | 0.8083 | 0.7679 | 0.6668 |
|
| 24 |
+
| **DAVIS** | 0.7914 | 0.5446 | 0.4684 |
|
| 25 |
|
| 26 |
+
## 🏗️ Architecture
|
| 27 |
|
| 28 |
+
```
|
| 29 |
+
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
| 30 |
+
│ TDC Dataset │────▶│ DeepPurpose │────▶│ Qdrant │
|
| 31 |
+
│ (KIBA/DAVIS) │ │ Morgan + CNN │ │ 256D Vectors │
|
| 32 |
+
└─────────────────┘ └─────────────────┘ └────────┬────────┘
|
| 33 |
+
│
|
| 34 |
+
┌─────────────────┐ ┌─────────────────┐ │
|
| 35 |
+
│ Next.js UI │◀────│ FastAPI │◀─────────────┘
|
| 36 |
+
│ localhost:3000│ │ localhost:8001│ Similarity Search
|
| 37 |
+
└─────────────────┘ └─────────────────┘
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
## 🚀 Quick Start
|
| 41 |
+
|
| 42 |
+
### Prerequisites
|
| 43 |
+
- Python 3.10
|
| 44 |
+
- Node.js 18+
|
| 45 |
+
- Docker Desktop (for Qdrant)
|
| 46 |
+
- CUDA 11.8 (optional, for GPU)
|
| 47 |
+
|
| 48 |
+
### 1. Setup Python Environment
|
| 49 |
+
```bash
|
| 50 |
+
python -m venv .venv
|
| 51 |
+
.venv\Scripts\activate # Windows
|
| 52 |
+
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
|
| 53 |
+
pip install DeepPurpose qdrant-client fastapi uvicorn scikit-learn
|
| 54 |
+
```
|
| 55 |
+
|
| 56 |
+
### 2. Start Qdrant (Vector Database)
|
| 57 |
+
```bash
|
| 58 |
+
docker run -d --name qdrant -p 6333:6333 -p 6334:6334 qdrant/qdrant:latest
|
| 59 |
+
```
|
| 60 |
+
|
| 61 |
+
### 3. Ingest Data (One-time)
|
| 62 |
+
```bash
|
| 63 |
+
python ingest_qdrant.py
|
| 64 |
+
# Loads KIBA dataset, generates embeddings, uploads to Qdrant
|
| 65 |
+
# ~23,531 drug-target pairs indexed
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
### 4. Start API Server
|
| 69 |
+
```bash
|
| 70 |
+
python -m uvicorn server.api:app --host 0.0.0.0 --port 8001
|
| 71 |
+
```
|
| 72 |
+
|
| 73 |
+
### 5. Start Frontend
|
| 74 |
+
```bash
|
| 75 |
+
cd ui
|
| 76 |
+
pnpm install
|
| 77 |
+
pnpm dev
|
| 78 |
+
# Open http://localhost:3000
|
| 79 |
+
```
|
| 80 |
+
|
| 81 |
+
## 📁 Project Structure
|
| 82 |
+
|
| 83 |
+
```
|
| 84 |
+
├── config.py # Shared configuration (model paths, Qdrant settings)
|
| 85 |
+
├── ingest_qdrant.py # ETL: TDC → DeepPurpose → Qdrant
|
| 86 |
+
├── deeppurpose002.py # Model training script
|
| 87 |
+
├── server/
|
| 88 |
+
│ └── api.py # FastAPI backend (/health, /api/points, /api/search)
|
| 89 |
+
├── runs/
|
| 90 |
+
│ └── 20260125_104915_KIBA/ # Best model checkpoint
|
| 91 |
+
│ ├── model.pt
|
| 92 |
+
│ └── config.pkl
|
| 93 |
+
├── ui/ # Next.js 16 + Shadcn UI
|
| 94 |
+
│ ├── app/
|
| 95 |
+
│ │ ├── explorer/ # 3D scatter plot visualization
|
| 96 |
+
│ │ ├── discovery/ # Drug discovery interface
|
| 97 |
+
│ │ └── data/ # Data browser
|
| 98 |
+
│ └── lib/
|
| 99 |
+
│ └── explorer-service.ts # API client
|
| 100 |
+
└── data/
|
| 101 |
+
└── kiba.tab # Cached TDC dataset
|
| 102 |
+
```
|
| 103 |
+
|
| 104 |
+
## 🔌 API Endpoints
|
| 105 |
+
|
| 106 |
+
| Endpoint | Method | Description |
|
| 107 |
+
|----------|--------|-------------|
|
| 108 |
+
| `/health` | GET | Service health + metrics |
|
| 109 |
+
| `/api/points` | GET | Get 3D PCA points for visualization |
|
| 110 |
+
| `/api/search` | POST | Similarity search by SMILES/sequence |
|
| 111 |
+
|
| 112 |
+
### Example: Get Points
|
| 113 |
+
```bash
|
| 114 |
+
curl "http://localhost:8001/api/points?limit=100&view=combined"
|
| 115 |
+
```
|
| 116 |
+
|
| 117 |
+
### Example: Search Similar
|
| 118 |
+
```bash
|
| 119 |
+
curl -X POST "http://localhost:8001/api/search" \
|
| 120 |
+
-H "Content-Type: application/json" \
|
| 121 |
+
-d '{"smiles": "CC(=O)OC1=CC=CC=C1C(=O)O", "top_k": 10}'
|
| 122 |
+
```
|
| 123 |
+
|
| 124 |
+
## 🧪 Training New Models
|
| 125 |
+
|
| 126 |
+
```bash
|
| 127 |
+
# Edit deeppurpose002.py to change dataset/encoding
|
| 128 |
python deeppurpose002.py
|
|
|
|
| 129 |
|
| 130 |
+
# Re-ingest with new model
|
| 131 |
+
python ingest_qdrant.py
|
| 132 |
+
```
|
| 133 |
+
|
| 134 |
+
## 👥 Contributors
|
| 135 |
+
|
| 136 |
+
- **Hamza Sammoud** — ML Pipeline & Backend
|
| 137 |
+
- **Rami Troudi** — Frontend UI
|
| 138 |
+
|
| 139 |
+
## 📄 License
|
| 140 |
|
| 141 |
+
MIT License - See [LICENSE](LICENSE) for details.
|
| 142 |
|
| 143 |
+
---
|
| 144 |
|
| 145 |
+
*Built for Hackathon 2026* 🏆
|
ui/pnpm-lock.yaml
CHANGED
|
@@ -393,89 +393,105 @@ packages:
|
|
| 393 |
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
|
| 394 |
cpu: [arm64]
|
| 395 |
os: [linux]
|
|
|
|
| 396 |
|
| 397 |
'@img/sharp-libvips-linux-arm@1.2.4':
|
| 398 |
resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
|
| 399 |
cpu: [arm]
|
| 400 |
os: [linux]
|
|
|
|
| 401 |
|
| 402 |
'@img/sharp-libvips-linux-ppc64@1.2.4':
|
| 403 |
resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
|
| 404 |
cpu: [ppc64]
|
| 405 |
os: [linux]
|
|
|
|
| 406 |
|
| 407 |
'@img/sharp-libvips-linux-riscv64@1.2.4':
|
| 408 |
resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
|
| 409 |
cpu: [riscv64]
|
| 410 |
os: [linux]
|
|
|
|
| 411 |
|
| 412 |
'@img/sharp-libvips-linux-s390x@1.2.4':
|
| 413 |
resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
|
| 414 |
cpu: [s390x]
|
| 415 |
os: [linux]
|
|
|
|
| 416 |
|
| 417 |
'@img/sharp-libvips-linux-x64@1.2.4':
|
| 418 |
resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
|
| 419 |
cpu: [x64]
|
| 420 |
os: [linux]
|
|
|
|
| 421 |
|
| 422 |
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
|
| 423 |
resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
|
| 424 |
cpu: [arm64]
|
| 425 |
os: [linux]
|
|
|
|
| 426 |
|
| 427 |
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
|
| 428 |
resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
|
| 429 |
cpu: [x64]
|
| 430 |
os: [linux]
|
|
|
|
| 431 |
|
| 432 |
'@img/sharp-linux-arm64@0.34.5':
|
| 433 |
resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
|
| 434 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 435 |
cpu: [arm64]
|
| 436 |
os: [linux]
|
|
|
|
| 437 |
|
| 438 |
'@img/sharp-linux-arm@0.34.5':
|
| 439 |
resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
|
| 440 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 441 |
cpu: [arm]
|
| 442 |
os: [linux]
|
|
|
|
| 443 |
|
| 444 |
'@img/sharp-linux-ppc64@0.34.5':
|
| 445 |
resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
|
| 446 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 447 |
cpu: [ppc64]
|
| 448 |
os: [linux]
|
|
|
|
| 449 |
|
| 450 |
'@img/sharp-linux-riscv64@0.34.5':
|
| 451 |
resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
|
| 452 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 453 |
cpu: [riscv64]
|
| 454 |
os: [linux]
|
|
|
|
| 455 |
|
| 456 |
'@img/sharp-linux-s390x@0.34.5':
|
| 457 |
resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
|
| 458 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 459 |
cpu: [s390x]
|
| 460 |
os: [linux]
|
|
|
|
| 461 |
|
| 462 |
'@img/sharp-linux-x64@0.34.5':
|
| 463 |
resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
|
| 464 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 465 |
cpu: [x64]
|
| 466 |
os: [linux]
|
|
|
|
| 467 |
|
| 468 |
'@img/sharp-linuxmusl-arm64@0.34.5':
|
| 469 |
resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
|
| 470 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 471 |
cpu: [arm64]
|
| 472 |
os: [linux]
|
|
|
|
| 473 |
|
| 474 |
'@img/sharp-linuxmusl-x64@0.34.5':
|
| 475 |
resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
|
| 476 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 477 |
cpu: [x64]
|
| 478 |
os: [linux]
|
|
|
|
| 479 |
|
| 480 |
'@img/sharp-wasm32@0.34.5':
|
| 481 |
resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
|
|
@@ -599,24 +615,28 @@ packages:
|
|
| 599 |
engines: {node: '>= 10'}
|
| 600 |
cpu: [arm64]
|
| 601 |
os: [linux]
|
|
|
|
| 602 |
|
| 603 |
'@next/swc-linux-arm64-musl@16.1.4':
|
| 604 |
resolution: {integrity: sha512-3Wm0zGYVCs6qDFAiSSDL+Z+r46EdtCv/2l+UlIdMbAq9hPJBvGu/rZOeuvCaIUjbArkmXac8HnTyQPJFzFWA0Q==}
|
| 605 |
engines: {node: '>= 10'}
|
| 606 |
cpu: [arm64]
|
| 607 |
os: [linux]
|
|
|
|
| 608 |
|
| 609 |
'@next/swc-linux-x64-gnu@16.1.4':
|
| 610 |
resolution: {integrity: sha512-lWAYAezFinaJiD5Gv8HDidtsZdT3CDaCeqoPoJjeB57OqzvMajpIhlZFce5sCAH6VuX4mdkxCRqecCJFwfm2nQ==}
|
| 611 |
engines: {node: '>= 10'}
|
| 612 |
cpu: [x64]
|
| 613 |
os: [linux]
|
|
|
|
| 614 |
|
| 615 |
'@next/swc-linux-x64-musl@16.1.4':
|
| 616 |
resolution: {integrity: sha512-fHaIpT7x4gA6VQbdEpYUXRGyge/YbRrkG6DXM60XiBqDM2g2NcrsQaIuj375egnGFkJow4RHacgBOEsHfGbiUw==}
|
| 617 |
engines: {node: '>= 10'}
|
| 618 |
cpu: [x64]
|
| 619 |
os: [linux]
|
|
|
|
| 620 |
|
| 621 |
'@next/swc-win32-arm64-msvc@16.1.4':
|
| 622 |
resolution: {integrity: sha512-MCrXxrTSE7jPN1NyXJr39E+aNFBrQZtO154LoCz7n99FuKqJDekgxipoodLNWdQP7/DZ5tKMc/efybx1l159hw==}
|
|
@@ -1495,24 +1515,28 @@ packages:
|
|
| 1495 |
engines: {node: '>= 10'}
|
| 1496 |
cpu: [arm64]
|
| 1497 |
os: [linux]
|
|
|
|
| 1498 |
|
| 1499 |
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
|
| 1500 |
resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
|
| 1501 |
engines: {node: '>= 10'}
|
| 1502 |
cpu: [arm64]
|
| 1503 |
os: [linux]
|
|
|
|
| 1504 |
|
| 1505 |
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
|
| 1506 |
resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
|
| 1507 |
engines: {node: '>= 10'}
|
| 1508 |
cpu: [x64]
|
| 1509 |
os: [linux]
|
|
|
|
| 1510 |
|
| 1511 |
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
|
| 1512 |
resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
|
| 1513 |
engines: {node: '>= 10'}
|
| 1514 |
cpu: [x64]
|
| 1515 |
os: [linux]
|
|
|
|
| 1516 |
|
| 1517 |
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
|
| 1518 |
resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
|
|
@@ -1705,41 +1729,49 @@ packages:
|
|
| 1705 |
resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
|
| 1706 |
cpu: [arm64]
|
| 1707 |
os: [linux]
|
|
|
|
| 1708 |
|
| 1709 |
'@unrs/resolver-binding-linux-arm64-musl@1.11.1':
|
| 1710 |
resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
|
| 1711 |
cpu: [arm64]
|
| 1712 |
os: [linux]
|
|
|
|
| 1713 |
|
| 1714 |
'@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
|
| 1715 |
resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
|
| 1716 |
cpu: [ppc64]
|
| 1717 |
os: [linux]
|
|
|
|
| 1718 |
|
| 1719 |
'@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
|
| 1720 |
resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
|
| 1721 |
cpu: [riscv64]
|
| 1722 |
os: [linux]
|
|
|
|
| 1723 |
|
| 1724 |
'@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
|
| 1725 |
resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
|
| 1726 |
cpu: [riscv64]
|
| 1727 |
os: [linux]
|
|
|
|
| 1728 |
|
| 1729 |
'@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
|
| 1730 |
resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
|
| 1731 |
cpu: [s390x]
|
| 1732 |
os: [linux]
|
|
|
|
| 1733 |
|
| 1734 |
'@unrs/resolver-binding-linux-x64-gnu@1.11.1':
|
| 1735 |
resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
|
| 1736 |
cpu: [x64]
|
| 1737 |
os: [linux]
|
|
|
|
| 1738 |
|
| 1739 |
'@unrs/resolver-binding-linux-x64-musl@1.11.1':
|
| 1740 |
resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
|
| 1741 |
cpu: [x64]
|
| 1742 |
os: [linux]
|
|
|
|
| 1743 |
|
| 1744 |
'@unrs/resolver-binding-wasm32-wasi@1.11.1':
|
| 1745 |
resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
|
|
@@ -3008,24 +3040,28 @@ packages:
|
|
| 3008 |
engines: {node: '>= 12.0.0'}
|
| 3009 |
cpu: [arm64]
|
| 3010 |
os: [linux]
|
|
|
|
| 3011 |
|
| 3012 |
lightningcss-linux-arm64-musl@1.30.2:
|
| 3013 |
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
|
| 3014 |
engines: {node: '>= 12.0.0'}
|
| 3015 |
cpu: [arm64]
|
| 3016 |
os: [linux]
|
|
|
|
| 3017 |
|
| 3018 |
lightningcss-linux-x64-gnu@1.30.2:
|
| 3019 |
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
|
| 3020 |
engines: {node: '>= 12.0.0'}
|
| 3021 |
cpu: [x64]
|
| 3022 |
os: [linux]
|
|
|
|
| 3023 |
|
| 3024 |
lightningcss-linux-x64-musl@1.30.2:
|
| 3025 |
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
|
| 3026 |
engines: {node: '>= 12.0.0'}
|
| 3027 |
cpu: [x64]
|
| 3028 |
os: [linux]
|
|
|
|
| 3029 |
|
| 3030 |
lightningcss-win32-arm64-msvc@1.30.2:
|
| 3031 |
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
|
|
|
|
| 393 |
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
|
| 394 |
cpu: [arm64]
|
| 395 |
os: [linux]
|
| 396 |
+
libc: [glibc]
|
| 397 |
|
| 398 |
'@img/sharp-libvips-linux-arm@1.2.4':
|
| 399 |
resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
|
| 400 |
cpu: [arm]
|
| 401 |
os: [linux]
|
| 402 |
+
libc: [glibc]
|
| 403 |
|
| 404 |
'@img/sharp-libvips-linux-ppc64@1.2.4':
|
| 405 |
resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
|
| 406 |
cpu: [ppc64]
|
| 407 |
os: [linux]
|
| 408 |
+
libc: [glibc]
|
| 409 |
|
| 410 |
'@img/sharp-libvips-linux-riscv64@1.2.4':
|
| 411 |
resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
|
| 412 |
cpu: [riscv64]
|
| 413 |
os: [linux]
|
| 414 |
+
libc: [glibc]
|
| 415 |
|
| 416 |
'@img/sharp-libvips-linux-s390x@1.2.4':
|
| 417 |
resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
|
| 418 |
cpu: [s390x]
|
| 419 |
os: [linux]
|
| 420 |
+
libc: [glibc]
|
| 421 |
|
| 422 |
'@img/sharp-libvips-linux-x64@1.2.4':
|
| 423 |
resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
|
| 424 |
cpu: [x64]
|
| 425 |
os: [linux]
|
| 426 |
+
libc: [glibc]
|
| 427 |
|
| 428 |
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
|
| 429 |
resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
|
| 430 |
cpu: [arm64]
|
| 431 |
os: [linux]
|
| 432 |
+
libc: [musl]
|
| 433 |
|
| 434 |
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
|
| 435 |
resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
|
| 436 |
cpu: [x64]
|
| 437 |
os: [linux]
|
| 438 |
+
libc: [musl]
|
| 439 |
|
| 440 |
'@img/sharp-linux-arm64@0.34.5':
|
| 441 |
resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
|
| 442 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 443 |
cpu: [arm64]
|
| 444 |
os: [linux]
|
| 445 |
+
libc: [glibc]
|
| 446 |
|
| 447 |
'@img/sharp-linux-arm@0.34.5':
|
| 448 |
resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
|
| 449 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 450 |
cpu: [arm]
|
| 451 |
os: [linux]
|
| 452 |
+
libc: [glibc]
|
| 453 |
|
| 454 |
'@img/sharp-linux-ppc64@0.34.5':
|
| 455 |
resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
|
| 456 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 457 |
cpu: [ppc64]
|
| 458 |
os: [linux]
|
| 459 |
+
libc: [glibc]
|
| 460 |
|
| 461 |
'@img/sharp-linux-riscv64@0.34.5':
|
| 462 |
resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
|
| 463 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 464 |
cpu: [riscv64]
|
| 465 |
os: [linux]
|
| 466 |
+
libc: [glibc]
|
| 467 |
|
| 468 |
'@img/sharp-linux-s390x@0.34.5':
|
| 469 |
resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
|
| 470 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 471 |
cpu: [s390x]
|
| 472 |
os: [linux]
|
| 473 |
+
libc: [glibc]
|
| 474 |
|
| 475 |
'@img/sharp-linux-x64@0.34.5':
|
| 476 |
resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
|
| 477 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 478 |
cpu: [x64]
|
| 479 |
os: [linux]
|
| 480 |
+
libc: [glibc]
|
| 481 |
|
| 482 |
'@img/sharp-linuxmusl-arm64@0.34.5':
|
| 483 |
resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
|
| 484 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 485 |
cpu: [arm64]
|
| 486 |
os: [linux]
|
| 487 |
+
libc: [musl]
|
| 488 |
|
| 489 |
'@img/sharp-linuxmusl-x64@0.34.5':
|
| 490 |
resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
|
| 491 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
| 492 |
cpu: [x64]
|
| 493 |
os: [linux]
|
| 494 |
+
libc: [musl]
|
| 495 |
|
| 496 |
'@img/sharp-wasm32@0.34.5':
|
| 497 |
resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
|
|
|
|
| 615 |
engines: {node: '>= 10'}
|
| 616 |
cpu: [arm64]
|
| 617 |
os: [linux]
|
| 618 |
+
libc: [glibc]
|
| 619 |
|
| 620 |
'@next/swc-linux-arm64-musl@16.1.4':
|
| 621 |
resolution: {integrity: sha512-3Wm0zGYVCs6qDFAiSSDL+Z+r46EdtCv/2l+UlIdMbAq9hPJBvGu/rZOeuvCaIUjbArkmXac8HnTyQPJFzFWA0Q==}
|
| 622 |
engines: {node: '>= 10'}
|
| 623 |
cpu: [arm64]
|
| 624 |
os: [linux]
|
| 625 |
+
libc: [musl]
|
| 626 |
|
| 627 |
'@next/swc-linux-x64-gnu@16.1.4':
|
| 628 |
resolution: {integrity: sha512-lWAYAezFinaJiD5Gv8HDidtsZdT3CDaCeqoPoJjeB57OqzvMajpIhlZFce5sCAH6VuX4mdkxCRqecCJFwfm2nQ==}
|
| 629 |
engines: {node: '>= 10'}
|
| 630 |
cpu: [x64]
|
| 631 |
os: [linux]
|
| 632 |
+
libc: [glibc]
|
| 633 |
|
| 634 |
'@next/swc-linux-x64-musl@16.1.4':
|
| 635 |
resolution: {integrity: sha512-fHaIpT7x4gA6VQbdEpYUXRGyge/YbRrkG6DXM60XiBqDM2g2NcrsQaIuj375egnGFkJow4RHacgBOEsHfGbiUw==}
|
| 636 |
engines: {node: '>= 10'}
|
| 637 |
cpu: [x64]
|
| 638 |
os: [linux]
|
| 639 |
+
libc: [musl]
|
| 640 |
|
| 641 |
'@next/swc-win32-arm64-msvc@16.1.4':
|
| 642 |
resolution: {integrity: sha512-MCrXxrTSE7jPN1NyXJr39E+aNFBrQZtO154LoCz7n99FuKqJDekgxipoodLNWdQP7/DZ5tKMc/efybx1l159hw==}
|
|
|
|
| 1515 |
engines: {node: '>= 10'}
|
| 1516 |
cpu: [arm64]
|
| 1517 |
os: [linux]
|
| 1518 |
+
libc: [glibc]
|
| 1519 |
|
| 1520 |
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
|
| 1521 |
resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
|
| 1522 |
engines: {node: '>= 10'}
|
| 1523 |
cpu: [arm64]
|
| 1524 |
os: [linux]
|
| 1525 |
+
libc: [musl]
|
| 1526 |
|
| 1527 |
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
|
| 1528 |
resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
|
| 1529 |
engines: {node: '>= 10'}
|
| 1530 |
cpu: [x64]
|
| 1531 |
os: [linux]
|
| 1532 |
+
libc: [glibc]
|
| 1533 |
|
| 1534 |
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
|
| 1535 |
resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
|
| 1536 |
engines: {node: '>= 10'}
|
| 1537 |
cpu: [x64]
|
| 1538 |
os: [linux]
|
| 1539 |
+
libc: [musl]
|
| 1540 |
|
| 1541 |
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
|
| 1542 |
resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
|
|
|
|
| 1729 |
resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
|
| 1730 |
cpu: [arm64]
|
| 1731 |
os: [linux]
|
| 1732 |
+
libc: [glibc]
|
| 1733 |
|
| 1734 |
'@unrs/resolver-binding-linux-arm64-musl@1.11.1':
|
| 1735 |
resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
|
| 1736 |
cpu: [arm64]
|
| 1737 |
os: [linux]
|
| 1738 |
+
libc: [musl]
|
| 1739 |
|
| 1740 |
'@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
|
| 1741 |
resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
|
| 1742 |
cpu: [ppc64]
|
| 1743 |
os: [linux]
|
| 1744 |
+
libc: [glibc]
|
| 1745 |
|
| 1746 |
'@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
|
| 1747 |
resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
|
| 1748 |
cpu: [riscv64]
|
| 1749 |
os: [linux]
|
| 1750 |
+
libc: [glibc]
|
| 1751 |
|
| 1752 |
'@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
|
| 1753 |
resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
|
| 1754 |
cpu: [riscv64]
|
| 1755 |
os: [linux]
|
| 1756 |
+
libc: [musl]
|
| 1757 |
|
| 1758 |
'@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
|
| 1759 |
resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
|
| 1760 |
cpu: [s390x]
|
| 1761 |
os: [linux]
|
| 1762 |
+
libc: [glibc]
|
| 1763 |
|
| 1764 |
'@unrs/resolver-binding-linux-x64-gnu@1.11.1':
|
| 1765 |
resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
|
| 1766 |
cpu: [x64]
|
| 1767 |
os: [linux]
|
| 1768 |
+
libc: [glibc]
|
| 1769 |
|
| 1770 |
'@unrs/resolver-binding-linux-x64-musl@1.11.1':
|
| 1771 |
resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
|
| 1772 |
cpu: [x64]
|
| 1773 |
os: [linux]
|
| 1774 |
+
libc: [musl]
|
| 1775 |
|
| 1776 |
'@unrs/resolver-binding-wasm32-wasi@1.11.1':
|
| 1777 |
resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
|
|
|
|
| 3040 |
engines: {node: '>= 12.0.0'}
|
| 3041 |
cpu: [arm64]
|
| 3042 |
os: [linux]
|
| 3043 |
+
libc: [glibc]
|
| 3044 |
|
| 3045 |
lightningcss-linux-arm64-musl@1.30.2:
|
| 3046 |
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
|
| 3047 |
engines: {node: '>= 12.0.0'}
|
| 3048 |
cpu: [arm64]
|
| 3049 |
os: [linux]
|
| 3050 |
+
libc: [musl]
|
| 3051 |
|
| 3052 |
lightningcss-linux-x64-gnu@1.30.2:
|
| 3053 |
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
|
| 3054 |
engines: {node: '>= 12.0.0'}
|
| 3055 |
cpu: [x64]
|
| 3056 |
os: [linux]
|
| 3057 |
+
libc: [glibc]
|
| 3058 |
|
| 3059 |
lightningcss-linux-x64-musl@1.30.2:
|
| 3060 |
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
|
| 3061 |
engines: {node: '>= 12.0.0'}
|
| 3062 |
cpu: [x64]
|
| 3063 |
os: [linux]
|
| 3064 |
+
libc: [musl]
|
| 3065 |
|
| 3066 |
lightningcss-win32-arm64-msvc@1.30.2:
|
| 3067 |
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
|