Spaces:
Runtime error
Runtime error
Upload folder using huggingface_hub
Browse files- ARCHITECTURE.md +144 -66
- README.md +18 -13
- frontend/AGENTS.md +0 -9
- frontend/CLAUDE.md +0 -1
- frontend/package-lock.json +1284 -127
- frontend/package.json +1 -0
- frontend/src/app/architecture/page.tsx +116 -0
- frontend/src/components/Mermaid.tsx +34 -0
ARCHITECTURE.md
CHANGED
|
@@ -1,77 +1,155 @@
|
|
| 1 |
-
# HeartFlow OS
|
| 2 |
|
| 3 |
-
|
| 4 |
|
| 5 |
-
|
| 6 |
|
| 7 |
-
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
B -->|Remove| C[Patient Number, Alert Flags]
|
| 13 |
-
B --> D[Sanitize Encodings]
|
| 14 |
-
D -->|Fix \ufffd -> °| E[Feature Engineering]
|
| 15 |
-
E -->|Create Risk_Severity| F[Risk_Severity = HR > 105 + SpO2 < 94]
|
| 16 |
-
F --> G[Imputation]
|
| 17 |
-
G -->|SimpleImputer: Mean| H[Scaling]
|
| 18 |
-
H -->|StandardScaler| I[Clean Feature Matrix]
|
| 19 |
-
I --> J[Train / Test Split 80:20]
|
| 20 |
-
```
|
| 21 |
|
| 22 |
-
|
| 23 |
|
| 24 |
```mermaid
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
B --> C[Background Thread: train_models]
|
| 28 |
-
C --> D[Preprocess Data & Fit Transformers]
|
| 29 |
-
D --> E[Train 5 Models: KNN, SVM, LogReg, RF, MLP]
|
| 30 |
-
E --> F[Calculate Weighted F1 Score]
|
| 31 |
-
F --> G{Is F1 > Active Version?}
|
| 32 |
-
G -->|Yes| H[Save .pkl files, Update registry.json]
|
| 33 |
-
G -->|No| I[Rollback, Discard Models]
|
| 34 |
-
H --> J[Hot-Reload Live Inference Pipeline]
|
| 35 |
-
```
|
| 36 |
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
```
|
| 50 |
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
##
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
###
|
| 62 |
-
|
| 63 |
-
- **
|
| 64 |
-
- **
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Architecture: HeartFlow OS
|
| 2 |
|
| 3 |
+
## 1. System Overview and Goals
|
| 4 |
|
| 5 |
+
HeartFlow OS is a distributed Edge AI platform engineered to bridge the gap between high-level Python MLOps and resource-constrained embedded systems (ESP32/Arduino).
|
| 6 |
|
| 7 |
+
**Core Architectural Objectives:**
|
| 8 |
+
- **Real-Time Telemetry:** Deliver a fault-tolerant, low-latency dashboard for live cardiovascular monitoring via WebSockets.
|
| 9 |
+
- **Automated MLOps (CI/CD for ML):** Enable seamless background model retraining, validation, and hot-swapping without interrupting active clinical inference.
|
| 10 |
+
- **Bare-Metal Edge Deployment:** Transpile trained Scikit-Learn ensembles into highly optimized, zero-dependency C++ code tailored for microcontrollers.
|
| 11 |
|
| 12 |
+
---
|
| 13 |
+
|
| 14 |
+
## 2. System Flow and Component Topology
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
|
| 16 |
+
The following diagram illustrates the boundaries and data flow between the client interfaces, API orchestration layer, ML pipelines, and data stores.
|
| 17 |
|
| 18 |
```mermaid
|
| 19 |
+
%% Generated by https://gitdiagram.com/idkhowtocodefr/heartflow_os
|
| 20 |
+
flowchart TD
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
|
| 22 |
+
subgraph group_client["Telemetry interface (Next.js)"]
|
| 23 |
+
node_dashboard["Live dashboard<br/>[page.tsx]"]
|
| 24 |
+
node_telemetry_context["Telemetry context"]
|
| 25 |
+
node_history_ui["History view<br/>[page.tsx]"]
|
| 26 |
+
node_analytics["Analytics view<br/>[page.tsx]"]
|
| 27 |
+
node_simulator_ui["Simulator view<br/>[page.tsx]"]
|
| 28 |
+
node_mlops_ui["MLOps view<br/>[page.tsx]"]
|
| 29 |
+
node_edge_ui["Edge export view<br/>[page.tsx]"]
|
| 30 |
+
node_architecture_ui["Architecture view<br/>[page.tsx]"]
|
| 31 |
+
node_shap_chart["SHAP chart<br/>[ShapChart.tsx]"]
|
| 32 |
+
end
|
| 33 |
|
| 34 |
+
subgraph group_api["API orchestration (FastAPI)"]
|
| 35 |
+
node_api["FastAPI routes<br/>[main.py]"]
|
| 36 |
+
node_simulator["Vitals simulator<br/>[simulator.py]"]
|
| 37 |
+
end
|
| 38 |
+
|
| 39 |
+
subgraph group_ml["Prediction and MLOps"]
|
| 40 |
+
node_inference["Inference pipeline<br/>[inference.py]"]
|
| 41 |
+
node_preprocessing["Feature preprocessing<br/>[preprocessing.py]"]
|
| 42 |
+
node_ensemble["Soft-voting ensemble<br/>[ensemble.py]"]
|
| 43 |
+
node_training["Model training<br/>[models.py]"]
|
| 44 |
+
node_export["C code exporter<br/>[export.py]"]
|
| 45 |
+
node_model_files["Trained model files"]
|
| 46 |
+
node_dataset["Patient dataset"]
|
| 47 |
+
end
|
| 48 |
+
|
| 49 |
+
subgraph group_state["Persistence and sync"]
|
| 50 |
+
node_database[("Prediction history<br/>[database.py]")]
|
| 51 |
+
node_sqlite[("SQLite history store<br/>[patient_history.db]")]
|
| 52 |
+
end
|
| 53 |
+
|
| 54 |
+
node_clinician(("Clinical user"))
|
| 55 |
+
node_hub["Hugging Face Hub"]
|
| 56 |
+
|
| 57 |
+
node_clinician -.->|"monitors"| node_dashboard
|
| 58 |
+
node_clinician -.->|"reviews"| node_history_ui
|
| 59 |
+
node_clinician -.->|"explores"| node_analytics
|
| 60 |
+
node_clinician -.->|"uses"| node_simulator_ui
|
| 61 |
+
node_clinician -.->|"manages"| node_mlops_ui
|
| 62 |
+
node_clinician -.->|"exports"| node_edge_ui
|
| 63 |
+
node_clinician -.->|"views"| node_architecture_ui
|
| 64 |
+
node_dashboard -->|"uses"| node_telemetry_context
|
| 65 |
+
node_clinician -.->|"submits vitals"| node_api
|
| 66 |
+
node_dashboard -.->|"streams telemetry"| node_api
|
| 67 |
+
node_history_ui -.->|"requests history"| node_api
|
| 68 |
+
node_analytics -.->|"requests data"| node_api
|
| 69 |
+
node_mlops_ui -.->|"uploads retraining data"| node_api
|
| 70 |
+
node_edge_ui -.->|"requests C export"| node_api
|
| 71 |
+
node_api -->|"initializes and queries"| node_database
|
| 72 |
+
node_api -->|"streams generated vitals"| node_simulator
|
| 73 |
+
node_api -->|"evaluates vitals"| node_inference
|
| 74 |
+
node_api -->|"prepares explanations"| node_preprocessing
|
| 75 |
+
node_api -->|"generates C code"| node_export
|
| 76 |
+
node_api -->|"loads and refreshes"| node_ensemble
|
| 77 |
+
node_api -->|"starts background retraining"| node_training
|
| 78 |
+
node_inference -->|"transforms features"| node_preprocessing
|
| 79 |
+
node_inference -.->|"predicts probabilities"| node_ensemble
|
| 80 |
+
node_ensemble -->|"resolves model directory"| node_preprocessing
|
| 81 |
+
node_training -->|"splits and transforms data"| node_preprocessing
|
| 82 |
+
node_training -->|"reads training data"| node_dataset
|
| 83 |
+
node_training -->|"writes trained models"| node_model_files
|
| 84 |
+
node_ensemble -->|"loads model artifacts"| node_model_files
|
| 85 |
+
node_database -->|"reads and writes"| node_sqlite
|
| 86 |
+
node_database -->|"syncs history"| node_hub
|
| 87 |
+
|
| 88 |
+
classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
|
| 89 |
+
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
|
| 90 |
+
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
|
| 91 |
+
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
|
| 92 |
+
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
|
| 93 |
+
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
|
| 94 |
+
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
|
| 95 |
+
|
| 96 |
+
click node_dashboard "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/dashboard/page.tsx"
|
| 97 |
+
click node_telemetry_context "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/context/TelemetryContext.tsx"
|
| 98 |
+
click node_history_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/history/page.tsx"
|
| 99 |
+
click node_analytics "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/analytics/page.tsx"
|
| 100 |
+
click node_simulator_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/simulator/page.tsx"
|
| 101 |
+
click node_mlops_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/mlops/page.tsx"
|
| 102 |
+
click node_edge_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/edge/page.tsx"
|
| 103 |
+
click node_architecture_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/architecture/page.tsx"
|
| 104 |
+
click node_shap_chart "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/components/ShapChart.tsx"
|
| 105 |
+
click node_api "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/main.py"
|
| 106 |
+
click node_simulator "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/simulator.py"
|
| 107 |
+
click node_inference "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/inference.py"
|
| 108 |
+
click node_preprocessing "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/preprocessing.py"
|
| 109 |
+
click node_ensemble "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/ensemble.py"
|
| 110 |
+
click node_training "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/models.py"
|
| 111 |
+
click node_export "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/export.py"
|
| 112 |
+
click node_model_files "https://github.com/idkhowtocodefr/heartflow_os/tree/main/model"
|
| 113 |
+
click node_dataset "https://github.com/idkhowtocodefr/heartflow_os/blob/main/data/patient_dataset.csv"
|
| 114 |
+
click node_database "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/database.py"
|
| 115 |
+
click node_sqlite "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/patient_history.db"
|
| 116 |
+
|
| 117 |
+
class node_dashboard,node_telemetry_context,node_history_ui,node_analytics,node_simulator_ui,node_mlops_ui,node_edge_ui,node_architecture_ui,node_shap_chart,node_clinician toneBlue
|
| 118 |
+
class node_api,node_simulator toneAmber
|
| 119 |
+
class node_inference,node_preprocessing,node_ensemble,node_training,node_export,node_model_files,node_dataset toneMint
|
| 120 |
+
class node_database,node_sqlite toneRose
|
| 121 |
+
class node_hub toneIndigo
|
| 122 |
```
|
| 123 |
|
| 124 |
+
---
|
| 125 |
+
|
| 126 |
+
## 3. Component Architecture
|
| 127 |
+
|
| 128 |
+
### 3.1 Client Layer (Frontend)
|
| 129 |
+
Built entirely on **Next.js 16** and **React 19**, the client provides specialized views for distinct clinical and engineering workflows.
|
| 130 |
+
- **Telemetry (`/dashboard`)**: Consumes high-frequency WebSocket streams. The `TelemetryContext` implements connection pooling and exponential backoff to recover gracefully from network interruptions.
|
| 131 |
+
- **MLOps Control (`/mlops`)**: Exposes the training pipeline to clinicians. Accepts batch CSV uploads and triggers asynchronous retraining tasks on the backend.
|
| 132 |
+
- **Hardware Export (`/edge`)**: Provides an interface for hardware engineers to retrieve transpiled C++ inference headers for immediate flashing.
|
| 133 |
+
|
| 134 |
+
### 3.2 API & Orchestration (Backend)
|
| 135 |
+
Powered by **FastAPI** on Python 3.10.
|
| 136 |
+
- **WebSocket Router (`main.py`)**: Manages active clinical sessions. Ensures that long-running operations (like retraining) do not block the ASGI event loop, guaranteeing uninterrupted telemetry.
|
| 137 |
+
- **Vitals Simulator (`simulator.py`)**: A fallback data generator that produces synthetic, clinically realistic cardiovascular data (Heart Rate, SpO2) when physical ESP32 hardware is disconnected.
|
| 138 |
+
|
| 139 |
+
### 3.3 Machine Learning & Inference Pipeline
|
| 140 |
+
To maximize accuracy and prevent edge hallucinations, the system relies on a robust ensemble rather than a single algorithm.
|
| 141 |
+
- **Preprocessing (`preprocessing.py`)**: Handles data sanitization, `SimpleImputer` mean-filling, and `StandardScaler` normalization. Synthesizes non-linear risk indicators (e.g., combining HR and SpO2 thresholds).
|
| 142 |
+
- **Soft-Voting Ensemble (`ensemble.py`)**: Aggregates predictions across five distinct models (KNN, SVM, LogReg, RF, MLP). By averaging probability vectors rather than relying on hard class votes, the system yields higher confidence diagnoses.
|
| 143 |
+
- **Fault-Tolerant Retraining (`models.py`)**: Model updates execute in background threads. New models are evaluated against a 20% holdout set. The system enforces an **Automated Rollback**: `.pkl` weights are only hot-swapped into memory if the new weighted F1-Score strictly exceeds the active version.
|
| 144 |
+
|
| 145 |
+
### 3.4 TinyML Edge Compiler
|
| 146 |
+
The most critical architectural component, closing the loop between cloud intelligence and bare-metal execution.
|
| 147 |
+
- **AST Transpilation (`export.py`)**: Parses the internal Abstract Syntax Tree (AST) of the active Scikit-Learn Random Forest model.
|
| 148 |
+
- **INT8 Quantization**: Downscales `float64` node boundaries into 8-bit integers, effectively slashing the memory footprint by up to 75% for resource-starved microcontrollers.
|
| 149 |
+
- **Zero-Malloc Generation**: The output is a pure C++ header (`model.h`) consisting exclusively of static `if/else` branching. By strictly forbidding dynamic memory allocation (`malloc`/`free`), the exported firmware is mathematically guaranteed to be immune to heap fragmentation crashes—a mandatory requirement for medical IoT devices.
|
| 150 |
+
|
| 151 |
+
---
|
| 152 |
+
|
| 153 |
+
## 4. Data Persistence Strategy
|
| 154 |
+
- **SQLite Event Store (`database.py`)**: Telemetry events, anomaly flags, and clinical interventions are logged to a local, file-based SQLite database (`patient_history.db`) for high-speed read/write access without the overhead of a dedicated RDBMS.
|
| 155 |
+
- **Hugging Face Hub**: Serves as the off-site model registry and backup layer. Periodically syncs versioned models, preprocessing transformers, and historical datasets to ensure state recovery in the event of local hardware failure.```
|
README.md
CHANGED
|
@@ -33,7 +33,11 @@ pinned: false
|
|
| 33 |
|
| 34 |
HeartFlow OS streams cardiovascular vitals, predicts anomalies using a soft-voting ensemble, and exports models to highly-constrained edge devices (ESP32/Arduino).
|
| 35 |
|
| 36 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
| Domain | Tech | Details |
|
| 39 |
| :--- | :--- | :--- |
|
|
@@ -43,24 +47,24 @@ HeartFlow OS streams cardiovascular vitals, predicts anomalies using a soft-voti
|
|
| 43 |
| **Edge Compiler** | Custom AST Transpiler | Exports trained ensembles to zero-dependency, INT8 quantized C headers. |
|
| 44 |
| **Firmware** | PlatformIO, C++ | Ready-to-deploy hardware wrapper for ESP32/Arduino execution. |
|
| 45 |
|
| 46 |
-
## Core
|
| 47 |
|
| 48 |
-
- **Fault-Tolerant Telemetry**: Streams data via WebSockets to the React dashboard with
|
| 49 |
-
- **Automated MLOps Registry**: Upload batch CSV data to `/retrain`. The system evaluates
|
| 50 |
-
- **Edge Compilation (TinyML)**: Converts trained models into standalone C code (`model.h`)
|
| 51 |
-
- **Cross-Language Assurance**:
|
| 52 |
|
| 53 |
-
## Quickstart
|
| 54 |
|
| 55 |
### Option 1: Docker Compose (Recommended)
|
| 56 |
|
| 57 |
-
Run the entire full-stack platform (Frontend + Backend)
|
| 58 |
|
| 59 |
```bash
|
| 60 |
docker compose up --build
|
| 61 |
```
|
| 62 |
-
- UI
|
| 63 |
-
- API Docs
|
| 64 |
|
| 65 |
### Option 2: Manual Local Setup
|
| 66 |
|
|
@@ -83,14 +87,15 @@ npm run dev
|
|
| 83 |
|
| 84 |
### Option 3: Hardware Firmware (Edge Deployment)
|
| 85 |
|
| 86 |
-
Once you export your `model.h` from the UI or API, deploy to your microcontroller:
|
| 87 |
|
| 88 |
```bash
|
| 89 |
cd firmware
|
| 90 |
-
# Copy your exported model.h to firmware/src/model.h
|
|
|
|
| 91 |
pio run -t upload
|
| 92 |
```
|
| 93 |
|
| 94 |
## License
|
| 95 |
|
| 96 |
-
MIT License. See `LICENSE`.
|
|
|
|
| 33 |
|
| 34 |
HeartFlow OS streams cardiovascular vitals, predicts anomalies using a soft-voting ensemble, and exports models to highly-constrained edge devices (ESP32/Arduino).
|
| 35 |
|
| 36 |
+
## Architecture
|
| 37 |
+
|
| 38 |
+
To see the complete pipeline and component structure, check out the **[Architecture Documentation](ARCHITECTURE.md)**.
|
| 39 |
+
|
| 40 |
+
### System Overview
|
| 41 |
|
| 42 |
| Domain | Tech | Details |
|
| 43 |
| :--- | :--- | :--- |
|
|
|
|
| 47 |
| **Edge Compiler** | Custom AST Transpiler | Exports trained ensembles to zero-dependency, INT8 quantized C headers. |
|
| 48 |
| **Firmware** | PlatformIO, C++ | Ready-to-deploy hardware wrapper for ESP32/Arduino execution. |
|
| 49 |
|
| 50 |
+
## Core Capabilities
|
| 51 |
|
| 52 |
+
- **Fault-Tolerant Telemetry**: Streams data via WebSockets to the React dashboard with UI-level auto-reconnection.
|
| 53 |
+
- **Automated MLOps Registry**: Upload batch CSV data to `/retrain`. The system evaluates new models against a test set and rolls back if performance degrades.
|
| 54 |
+
- **Edge Compilation (TinyML)**: Converts trained models into standalone C code (`model.h`) without dynamic memory allocation (`malloc`-free).
|
| 55 |
+
- **Cross-Language Assurance**: Test pipelines verify that the exported C logic matches the Python models before flashing to hardware.
|
| 56 |
|
| 57 |
+
## Quickstart Guide
|
| 58 |
|
| 59 |
### Option 1: Docker Compose (Recommended)
|
| 60 |
|
| 61 |
+
Run the entire full-stack platform (Frontend + Backend):
|
| 62 |
|
| 63 |
```bash
|
| 64 |
docker compose up --build
|
| 65 |
```
|
| 66 |
+
- **UI**: `http://localhost:3000`
|
| 67 |
+
- **API Docs**: `http://localhost:8000/docs`
|
| 68 |
|
| 69 |
### Option 2: Manual Local Setup
|
| 70 |
|
|
|
|
| 87 |
|
| 88 |
### Option 3: Hardware Firmware (Edge Deployment)
|
| 89 |
|
| 90 |
+
Once you export your `model.h` from the UI or API, deploy it to your microcontroller:
|
| 91 |
|
| 92 |
```bash
|
| 93 |
cd firmware
|
| 94 |
+
# 1. Copy your exported model.h to firmware/src/model.h
|
| 95 |
+
# 2. Upload to the connected ESP32/Arduino
|
| 96 |
pio run -t upload
|
| 97 |
```
|
| 98 |
|
| 99 |
## License
|
| 100 |
|
| 101 |
+
MIT License. See `LICENSE` for more information.
|
frontend/AGENTS.md
DELETED
|
@@ -1,9 +0,0 @@
|
|
| 1 |
-
<!-- BEGIN:nextjs-agent-rules -->
|
| 2 |
-
|
| 3 |
-
# This is NOT the Next.js you know
|
| 4 |
-
|
| 5 |
-
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.
|
| 6 |
-
|
| 7 |
-
This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
|
| 8 |
-
|
| 9 |
-
<!-- END:nextjs-agent-rules -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frontend/CLAUDE.md
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
@AGENTS.md
|
|
|
|
|
|
frontend/package-lock.json
CHANGED
|
@@ -10,6 +10,7 @@
|
|
| 10 |
"dependencies": {
|
| 11 |
"framer-motion": "^13.4.4",
|
| 12 |
"lucide-react": "^1.48.0",
|
|
|
|
| 13 |
"next": "16.3.6",
|
| 14 |
"react": "19.2.8",
|
| 15 |
"react-dom": "19.2.8"
|
|
@@ -38,6 +39,19 @@
|
|
| 38 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 39 |
}
|
| 40 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
"node_modules/@babel/code-frame": {
|
| 42 |
"version": "7.29.7",
|
| 43 |
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
|
|
@@ -278,6 +292,49 @@
|
|
| 278 |
"node": ">=6.9.0"
|
| 279 |
}
|
| 280 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 281 |
"node_modules/@emnapi/core": {
|
| 282 |
"version": "1.10.0",
|
| 283 |
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
|
|
@@ -521,6 +578,23 @@
|
|
| 521 |
"url": "https://github.com/sponsors/nzakas"
|
| 522 |
}
|
| 523 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 524 |
"node_modules/@img/colour": {
|
| 525 |
"version": "1.1.0",
|
| 526 |
"resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
|
|
@@ -1120,6 +1194,18 @@
|
|
| 1120 |
"@jridgewell/sourcemap-codec": "^1.4.14"
|
| 1121 |
}
|
| 1122 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1123 |
"node_modules/@napi-rs/wasm-runtime": {
|
| 1124 |
"version": "1.2.4",
|
| 1125 |
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz",
|
|
@@ -1689,6 +1775,259 @@
|
|
| 1689 |
"tslib": "^2.4.0"
|
| 1690 |
}
|
| 1691 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1692 |
"node_modules/@types/estree": {
|
| 1693 |
"version": "1.0.9",
|
| 1694 |
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
|
|
@@ -1696,6 +2035,12 @@
|
|
| 1696 |
"dev": true,
|
| 1697 |
"license": "MIT"
|
| 1698 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1699 |
"node_modules/@types/json-schema": {
|
| 1700 |
"version": "7.0.15",
|
| 1701 |
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
|
|
@@ -1740,6 +2085,13 @@
|
|
| 1740 |
"@types/react": "^19.3.0"
|
| 1741 |
}
|
| 1742 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1743 |
"node_modules/@typescript-eslint/eslint-plugin": {
|
| 1744 |
"version": "8.70.1",
|
| 1745 |
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.70.1.tgz",
|
|
@@ -2389,6 +2741,16 @@
|
|
| 2389 |
"win32"
|
| 2390 |
]
|
| 2391 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2392 |
"node_modules/acorn": {
|
| 2393 |
"version": "8.18.0",
|
| 2394 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
|
|
@@ -2749,168 +3111,701 @@
|
|
| 2749 |
"browserslist": "cli.js"
|
| 2750 |
},
|
| 2751 |
"engines": {
|
| 2752 |
-
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2753 |
}
|
| 2754 |
},
|
| 2755 |
-
"node_modules/
|
| 2756 |
-
"version": "
|
| 2757 |
-
"resolved": "https://registry.npmjs.org/
|
| 2758 |
-
"integrity": "sha512-
|
| 2759 |
-
"
|
| 2760 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2761 |
"dependencies": {
|
| 2762 |
-
"
|
| 2763 |
-
"es-define-property": "^1.0.1",
|
| 2764 |
-
"get-intrinsic": "^1.3.0",
|
| 2765 |
-
"set-function-length": "^1.2.2"
|
| 2766 |
},
|
| 2767 |
"engines": {
|
| 2768 |
-
"node": ">=
|
| 2769 |
-
},
|
| 2770 |
-
"funding": {
|
| 2771 |
-
"url": "https://github.com/sponsors/ljharb"
|
| 2772 |
}
|
| 2773 |
},
|
| 2774 |
-
"node_modules/
|
| 2775 |
-
"version": "1.0
|
| 2776 |
-
"resolved": "https://registry.npmjs.org/
|
| 2777 |
-
"integrity": "sha512-
|
| 2778 |
-
"
|
| 2779 |
-
"license": "MIT",
|
| 2780 |
"dependencies": {
|
| 2781 |
-
"
|
| 2782 |
-
"function-bind": "^1.1.2"
|
| 2783 |
},
|
| 2784 |
"engines": {
|
| 2785 |
-
"node": ">=
|
| 2786 |
}
|
| 2787 |
},
|
| 2788 |
-
"node_modules/
|
| 2789 |
-
"version": "1.0
|
| 2790 |
-
"resolved": "https://registry.npmjs.org/
|
| 2791 |
-
"integrity": "sha512-
|
| 2792 |
-
"
|
| 2793 |
-
"license": "MIT",
|
| 2794 |
"dependencies": {
|
| 2795 |
-
"
|
| 2796 |
-
"get-intrinsic": "^1.3.0"
|
| 2797 |
},
|
| 2798 |
"engines": {
|
| 2799 |
-
"node": ">=
|
| 2800 |
-
},
|
| 2801 |
-
"funding": {
|
| 2802 |
-
"url": "https://github.com/sponsors/ljharb"
|
| 2803 |
}
|
| 2804 |
},
|
| 2805 |
-
"node_modules/
|
| 2806 |
-
"version": "3.
|
| 2807 |
-
"resolved": "https://registry.npmjs.org/
|
| 2808 |
-
"integrity": "sha512-
|
| 2809 |
-
"
|
| 2810 |
-
"license": "MIT",
|
| 2811 |
"engines": {
|
| 2812 |
-
"node": ">=
|
| 2813 |
}
|
| 2814 |
},
|
| 2815 |
-
"node_modules/
|
| 2816 |
-
"version": "
|
| 2817 |
-
"resolved": "https://registry.npmjs.org/
|
| 2818 |
-
"integrity": "sha512-
|
| 2819 |
-
"
|
| 2820 |
-
{
|
| 2821 |
-
"type": "opencollective",
|
| 2822 |
-
"url": "https://opencollective.com/browserslist"
|
| 2823 |
-
},
|
| 2824 |
-
{
|
| 2825 |
-
"type": "tidelift",
|
| 2826 |
-
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
|
| 2827 |
-
},
|
| 2828 |
-
{
|
| 2829 |
-
"type": "github",
|
| 2830 |
-
"url": "https://github.com/sponsors/ai"
|
| 2831 |
-
}
|
| 2832 |
-
],
|
| 2833 |
-
"license": "CC-BY-4.0"
|
| 2834 |
-
},
|
| 2835 |
-
"node_modules/chalk": {
|
| 2836 |
-
"version": "4.1.2",
|
| 2837 |
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
| 2838 |
-
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
| 2839 |
-
"dev": true,
|
| 2840 |
-
"license": "MIT",
|
| 2841 |
"dependencies": {
|
| 2842 |
-
"
|
| 2843 |
-
"
|
|
|
|
|
|
|
|
|
|
| 2844 |
},
|
| 2845 |
"engines": {
|
| 2846 |
-
"node": ">=
|
| 2847 |
},
|
| 2848 |
-
"
|
| 2849 |
-
"
|
| 2850 |
}
|
| 2851 |
},
|
| 2852 |
-
"node_modules/
|
| 2853 |
-
"version": "
|
| 2854 |
-
"resolved": "https://registry.npmjs.org/
|
| 2855 |
-
"integrity": "sha512-
|
| 2856 |
-
"license": "
|
| 2857 |
-
},
|
| 2858 |
-
"node_modules/color-convert": {
|
| 2859 |
-
"version": "2.0.1",
|
| 2860 |
-
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
| 2861 |
-
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
| 2862 |
-
"dev": true,
|
| 2863 |
-
"license": "MIT",
|
| 2864 |
"dependencies": {
|
| 2865 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2866 |
},
|
| 2867 |
"engines": {
|
| 2868 |
-
"node": ">=
|
| 2869 |
}
|
| 2870 |
},
|
| 2871 |
-
"node_modules/
|
| 2872 |
-
"version": "
|
| 2873 |
-
"resolved": "https://registry.npmjs.org/
|
| 2874 |
-
"integrity": "sha512-
|
| 2875 |
-
"dev": true,
|
| 2876 |
-
"license": "MIT"
|
| 2877 |
-
},
|
| 2878 |
-
"node_modules/concat-map": {
|
| 2879 |
-
"version": "0.0.1",
|
| 2880 |
-
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
| 2881 |
-
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
| 2882 |
-
"dev": true,
|
| 2883 |
-
"license": "MIT"
|
| 2884 |
-
},
|
| 2885 |
-
"node_modules/convert-source-map": {
|
| 2886 |
-
"version": "2.0.0",
|
| 2887 |
-
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
|
| 2888 |
-
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
| 2889 |
-
"dev": true,
|
| 2890 |
-
"license": "MIT"
|
| 2891 |
-
},
|
| 2892 |
-
"node_modules/cross-spawn": {
|
| 2893 |
-
"version": "7.0.6",
|
| 2894 |
-
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
| 2895 |
-
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
| 2896 |
-
"dev": true,
|
| 2897 |
"license": "MIT",
|
| 2898 |
"dependencies": {
|
| 2899 |
-
"
|
| 2900 |
-
"
|
| 2901 |
-
"which": "^2.0.1"
|
| 2902 |
-
},
|
| 2903 |
-
"engines": {
|
| 2904 |
-
"node": ">= 8"
|
| 2905 |
}
|
| 2906 |
},
|
| 2907 |
-
"node_modules/csstype": {
|
| 2908 |
-
"version": "3.2.3",
|
| 2909 |
-
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
|
| 2910 |
-
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
| 2911 |
-
"dev": true,
|
| 2912 |
-
"license": "MIT"
|
| 2913 |
-
},
|
| 2914 |
"node_modules/damerau-levenshtein": {
|
| 2915 |
"version": "1.0.8",
|
| 2916 |
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
|
|
@@ -2972,6 +3867,12 @@
|
|
| 2972 |
"url": "https://github.com/sponsors/ljharb"
|
| 2973 |
}
|
| 2974 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2975 |
"node_modules/debug": {
|
| 2976 |
"version": "4.4.3",
|
| 2977 |
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
|
@@ -3033,6 +3934,15 @@
|
|
| 3033 |
"url": "https://github.com/sponsors/ljharb"
|
| 3034 |
}
|
| 3035 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3036 |
"node_modules/detect-libc": {
|
| 3037 |
"version": "2.1.2",
|
| 3038 |
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
|
@@ -3056,6 +3966,15 @@
|
|
| 3056 |
"node": ">=0.10.0"
|
| 3057 |
}
|
| 3058 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3059 |
"node_modules/dunder-proto": {
|
| 3060 |
"version": "1.0.1",
|
| 3061 |
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
@@ -3078,6 +3997,12 @@
|
|
| 3078 |
"dev": true,
|
| 3079 |
"license": "ISC"
|
| 3080 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3081 |
"node_modules/emoji-regex": {
|
| 3082 |
"version": "9.2.2",
|
| 3083 |
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
|
|
@@ -3298,6 +4223,18 @@
|
|
| 3298 |
"url": "https://github.com/sponsors/ljharb"
|
| 3299 |
}
|
| 3300 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3301 |
"node_modules/escalade": {
|
| 3302 |
"version": "3.2.0",
|
| 3303 |
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
|
@@ -4089,6 +5026,12 @@
|
|
| 4089 |
"dev": true,
|
| 4090 |
"license": "ISC"
|
| 4091 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4092 |
"node_modules/has-bigints": {
|
| 4093 |
"version": "1.1.0",
|
| 4094 |
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
|
|
@@ -4200,6 +5143,18 @@
|
|
| 4200 |
"hermes-estree": "0.25.1"
|
| 4201 |
}
|
| 4202 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4203 |
"node_modules/ignore": {
|
| 4204 |
"version": "5.3.2",
|
| 4205 |
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
|
|
@@ -4227,6 +5182,16 @@
|
|
| 4227 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 4228 |
}
|
| 4229 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4230 |
"node_modules/imurmurhash": {
|
| 4231 |
"version": "0.1.4",
|
| 4232 |
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
|
@@ -4252,6 +5217,15 @@
|
|
| 4252 |
"node": ">= 0.4"
|
| 4253 |
}
|
| 4254 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4255 |
"node_modules/is-array-buffer": {
|
| 4256 |
"version": "3.0.5",
|
| 4257 |
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
|
|
@@ -4818,6 +5792,31 @@
|
|
| 4818 |
"node": ">=4.0"
|
| 4819 |
}
|
| 4820 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4821 |
"node_modules/keyv": {
|
| 4822 |
"version": "4.5.4",
|
| 4823 |
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
|
|
@@ -4828,6 +5827,11 @@
|
|
| 4828 |
"json-buffer": "3.0.1"
|
| 4829 |
}
|
| 4830 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4831 |
"node_modules/language-subtag-registry": {
|
| 4832 |
"version": "0.3.23",
|
| 4833 |
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
|
|
@@ -4848,6 +5852,12 @@
|
|
| 4848 |
"node": ">=0.10"
|
| 4849 |
}
|
| 4850 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4851 |
"node_modules/levn": {
|
| 4852 |
"version": "0.4.1",
|
| 4853 |
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
|
@@ -5151,6 +6161,12 @@
|
|
| 5151 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 5152 |
}
|
| 5153 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5154 |
"node_modules/lodash.merge": {
|
| 5155 |
"version": "4.6.2",
|
| 5156 |
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
|
@@ -5200,6 +6216,18 @@
|
|
| 5200 |
"@jridgewell/sourcemap-codec": "^1.5.5"
|
| 5201 |
}
|
| 5202 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5203 |
"node_modules/math-intrinsics": {
|
| 5204 |
"version": "1.1.0",
|
| 5205 |
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
|
@@ -5220,6 +6248,40 @@
|
|
| 5220 |
"node": ">= 8"
|
| 5221 |
}
|
| 5222 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5223 |
"node_modules/micromatch": {
|
| 5224 |
"version": "4.0.8",
|
| 5225 |
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
|
@@ -5622,6 +6684,12 @@
|
|
| 5622 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 5623 |
}
|
| 5624 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5625 |
"node_modules/parent-module": {
|
| 5626 |
"version": "1.0.1",
|
| 5627 |
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
|
@@ -5635,6 +6703,12 @@
|
|
| 5635 |
"node": ">=6"
|
| 5636 |
}
|
| 5637 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5638 |
"node_modules/path-exists": {
|
| 5639 |
"version": "4.0.0",
|
| 5640 |
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
@@ -5681,6 +6755,22 @@
|
|
| 5681 |
"url": "https://github.com/sponsors/jonschlinkert"
|
| 5682 |
}
|
| 5683 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5684 |
"node_modules/possible-typed-array-names": {
|
| 5685 |
"version": "1.1.0",
|
| 5686 |
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
|
|
@@ -5900,6 +6990,24 @@
|
|
| 5900 |
"node": ">=0.10.0"
|
| 5901 |
}
|
| 5902 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5903 |
"node_modules/run-parallel": {
|
| 5904 |
"version": "1.2.0",
|
| 5905 |
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
|
@@ -5924,6 +7032,12 @@
|
|
| 5924 |
"queue-microtask": "^1.2.2"
|
| 5925 |
}
|
| 5926 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5927 |
"node_modules/safe-array-concat": {
|
| 5928 |
"version": "1.1.4",
|
| 5929 |
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz",
|
|
@@ -5979,6 +7093,12 @@
|
|
| 5979 |
"url": "https://github.com/sponsors/ljharb"
|
| 5980 |
}
|
| 5981 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5982 |
"node_modules/scheduler": {
|
| 5983 |
"version": "0.27.0",
|
| 5984 |
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
|
|
@@ -6396,6 +7516,12 @@
|
|
| 6396 |
}
|
| 6397 |
}
|
| 6398 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6399 |
"node_modules/supports-color": {
|
| 6400 |
"version": "7.2.0",
|
| 6401 |
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
|
@@ -6443,6 +7569,15 @@
|
|
| 6443 |
"url": "https://opencollective.com/webpack"
|
| 6444 |
}
|
| 6445 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6446 |
"node_modules/tinyglobby": {
|
| 6447 |
"version": "0.2.17",
|
| 6448 |
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
|
|
@@ -6517,6 +7652,15 @@
|
|
| 6517 |
"typescript": ">=4.8.4"
|
| 6518 |
}
|
| 6519 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6520 |
"node_modules/tsconfig-paths": {
|
| 6521 |
"version": "3.15.0",
|
| 6522 |
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
|
|
@@ -6782,6 +7926,19 @@
|
|
| 6782 |
"punycode": "^2.1.0"
|
| 6783 |
}
|
| 6784 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6785 |
"node_modules/which": {
|
| 6786 |
"version": "2.0.2",
|
| 6787 |
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
|
|
|
| 10 |
"dependencies": {
|
| 11 |
"framer-motion": "^13.4.4",
|
| 12 |
"lucide-react": "^1.48.0",
|
| 13 |
+
"mermaid": "^12.1.0",
|
| 14 |
"next": "16.3.6",
|
| 15 |
"react": "19.2.8",
|
| 16 |
"react-dom": "19.2.8"
|
|
|
|
| 39 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 40 |
}
|
| 41 |
},
|
| 42 |
+
"node_modules/@antfu/install-pkg": {
|
| 43 |
+
"version": "2.1.0",
|
| 44 |
+
"resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-2.1.0.tgz",
|
| 45 |
+
"integrity": "sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==",
|
| 46 |
+
"license": "MIT",
|
| 47 |
+
"dependencies": {
|
| 48 |
+
"package-manager-detector": "^1.8.0",
|
| 49 |
+
"tinyexec": "^1.3.1"
|
| 50 |
+
},
|
| 51 |
+
"funding": {
|
| 52 |
+
"url": "https://github.com/sponsors/antfu"
|
| 53 |
+
}
|
| 54 |
+
},
|
| 55 |
"node_modules/@babel/code-frame": {
|
| 56 |
"version": "7.29.7",
|
| 57 |
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
|
|
|
|
| 292 |
"node": ">=6.9.0"
|
| 293 |
}
|
| 294 |
},
|
| 295 |
+
"node_modules/@braintree/sanitize-url": {
|
| 296 |
+
"version": "7.1.2",
|
| 297 |
+
"resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz",
|
| 298 |
+
"integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==",
|
| 299 |
+
"license": "MIT"
|
| 300 |
+
},
|
| 301 |
+
"node_modules/@chevrotain/cst-dts-gen": {
|
| 302 |
+
"version": "13.2.0",
|
| 303 |
+
"resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-13.2.0.tgz",
|
| 304 |
+
"integrity": "sha512-bA9dvWlhAUcHkNwU+8w9yiUxJPlj/Lm3VqS7MD+NbIR/7LmpNLuK/AWNFdCo/T3SK5ND0/UHf3IJvl/Jn/i6yg==",
|
| 305 |
+
"license": "Apache-2.0",
|
| 306 |
+
"dependencies": {
|
| 307 |
+
"@chevrotain/gast": "13.2.0",
|
| 308 |
+
"@chevrotain/types": "13.2.0"
|
| 309 |
+
}
|
| 310 |
+
},
|
| 311 |
+
"node_modules/@chevrotain/gast": {
|
| 312 |
+
"version": "13.2.0",
|
| 313 |
+
"resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-13.2.0.tgz",
|
| 314 |
+
"integrity": "sha512-bCARdAsG+eEbOveSXcOAC7pVxA04I1ionzeMOwIYf5NX7SaS7zgn4Dgug2BSqoL+iyKeMNSorQjsFSHJHsCNwg==",
|
| 315 |
+
"license": "Apache-2.0",
|
| 316 |
+
"dependencies": {
|
| 317 |
+
"@chevrotain/types": "13.2.0"
|
| 318 |
+
}
|
| 319 |
+
},
|
| 320 |
+
"node_modules/@chevrotain/regexp-to-ast": {
|
| 321 |
+
"version": "13.2.0",
|
| 322 |
+
"resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-13.2.0.tgz",
|
| 323 |
+
"integrity": "sha512-kxpUkLtiaK09ph+dib+Yvm+3sWSnuwlo25gqfKRgTPNmF6H7uW4gVkMjaRdtnN783S9sM6vUNWh9CsxYX4QwKw==",
|
| 324 |
+
"license": "Apache-2.0"
|
| 325 |
+
},
|
| 326 |
+
"node_modules/@chevrotain/types": {
|
| 327 |
+
"version": "13.2.0",
|
| 328 |
+
"resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-13.2.0.tgz",
|
| 329 |
+
"integrity": "sha512-7qrYHRlKfWf2AvBfJi5eVOrKAkbxvMFsy/iIHTGIiApNcEecCaVIdR+mIQhyCBsTDJxBz4JWXHMo6krbhR9hVg==",
|
| 330 |
+
"license": "Apache-2.0"
|
| 331 |
+
},
|
| 332 |
+
"node_modules/@chevrotain/utils": {
|
| 333 |
+
"version": "13.2.0",
|
| 334 |
+
"resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-13.2.0.tgz",
|
| 335 |
+
"integrity": "sha512-SzKYY68rseOrb9KILVzPsl6SjkQtdWw01SRGB5aCVI5kFcHltQsOYV3JB0Ffst72DgkvHCyDQ0NLwxtmCCf97Q==",
|
| 336 |
+
"license": "Apache-2.0"
|
| 337 |
+
},
|
| 338 |
"node_modules/@emnapi/core": {
|
| 339 |
"version": "1.10.0",
|
| 340 |
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
|
|
|
|
| 578 |
"url": "https://github.com/sponsors/nzakas"
|
| 579 |
}
|
| 580 |
},
|
| 581 |
+
"node_modules/@iconify/types": {
|
| 582 |
+
"version": "2.0.0",
|
| 583 |
+
"resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
|
| 584 |
+
"integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
|
| 585 |
+
"license": "MIT"
|
| 586 |
+
},
|
| 587 |
+
"node_modules/@iconify/utils": {
|
| 588 |
+
"version": "3.1.7",
|
| 589 |
+
"resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.7.tgz",
|
| 590 |
+
"integrity": "sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==",
|
| 591 |
+
"license": "MIT",
|
| 592 |
+
"dependencies": {
|
| 593 |
+
"@antfu/install-pkg": "^2.0.1",
|
| 594 |
+
"@iconify/types": "^2.0.0",
|
| 595 |
+
"import-meta-resolve": "^4.2.0"
|
| 596 |
+
}
|
| 597 |
+
},
|
| 598 |
"node_modules/@img/colour": {
|
| 599 |
"version": "1.1.0",
|
| 600 |
"resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
|
|
|
|
| 1194 |
"@jridgewell/sourcemap-codec": "^1.4.14"
|
| 1195 |
}
|
| 1196 |
},
|
| 1197 |
+
"node_modules/@mermaid-js/parser": {
|
| 1198 |
+
"version": "2.0.1",
|
| 1199 |
+
"resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.1.tgz",
|
| 1200 |
+
"integrity": "sha512-j37dj/h6p6pots1L7pLPPNuABEEu9WP4OYg9pW1g+nYG331j0+3canE9OagtYdytYvdSAMG+2fKU5cxep6LgjA==",
|
| 1201 |
+
"license": "MIT",
|
| 1202 |
+
"dependencies": {
|
| 1203 |
+
"@chevrotain/types": "~13.2.0"
|
| 1204 |
+
},
|
| 1205 |
+
"engines": {
|
| 1206 |
+
"node": ">=22.12.0"
|
| 1207 |
+
}
|
| 1208 |
+
},
|
| 1209 |
"node_modules/@napi-rs/wasm-runtime": {
|
| 1210 |
"version": "1.2.4",
|
| 1211 |
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz",
|
|
|
|
| 1775 |
"tslib": "^2.4.0"
|
| 1776 |
}
|
| 1777 |
},
|
| 1778 |
+
"node_modules/@types/d3": {
|
| 1779 |
+
"version": "7.4.3",
|
| 1780 |
+
"resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
|
| 1781 |
+
"integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
|
| 1782 |
+
"license": "MIT",
|
| 1783 |
+
"dependencies": {
|
| 1784 |
+
"@types/d3-array": "*",
|
| 1785 |
+
"@types/d3-axis": "*",
|
| 1786 |
+
"@types/d3-brush": "*",
|
| 1787 |
+
"@types/d3-chord": "*",
|
| 1788 |
+
"@types/d3-color": "*",
|
| 1789 |
+
"@types/d3-contour": "*",
|
| 1790 |
+
"@types/d3-delaunay": "*",
|
| 1791 |
+
"@types/d3-dispatch": "*",
|
| 1792 |
+
"@types/d3-drag": "*",
|
| 1793 |
+
"@types/d3-dsv": "*",
|
| 1794 |
+
"@types/d3-ease": "*",
|
| 1795 |
+
"@types/d3-fetch": "*",
|
| 1796 |
+
"@types/d3-force": "*",
|
| 1797 |
+
"@types/d3-format": "*",
|
| 1798 |
+
"@types/d3-geo": "*",
|
| 1799 |
+
"@types/d3-hierarchy": "*",
|
| 1800 |
+
"@types/d3-interpolate": "*",
|
| 1801 |
+
"@types/d3-path": "*",
|
| 1802 |
+
"@types/d3-polygon": "*",
|
| 1803 |
+
"@types/d3-quadtree": "*",
|
| 1804 |
+
"@types/d3-random": "*",
|
| 1805 |
+
"@types/d3-scale": "*",
|
| 1806 |
+
"@types/d3-scale-chromatic": "*",
|
| 1807 |
+
"@types/d3-selection": "*",
|
| 1808 |
+
"@types/d3-shape": "*",
|
| 1809 |
+
"@types/d3-time": "*",
|
| 1810 |
+
"@types/d3-time-format": "*",
|
| 1811 |
+
"@types/d3-timer": "*",
|
| 1812 |
+
"@types/d3-transition": "*",
|
| 1813 |
+
"@types/d3-zoom": "*"
|
| 1814 |
+
}
|
| 1815 |
+
},
|
| 1816 |
+
"node_modules/@types/d3-array": {
|
| 1817 |
+
"version": "3.2.2",
|
| 1818 |
+
"resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz",
|
| 1819 |
+
"integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==",
|
| 1820 |
+
"license": "MIT"
|
| 1821 |
+
},
|
| 1822 |
+
"node_modules/@types/d3-axis": {
|
| 1823 |
+
"version": "3.0.6",
|
| 1824 |
+
"resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
|
| 1825 |
+
"integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
|
| 1826 |
+
"license": "MIT",
|
| 1827 |
+
"dependencies": {
|
| 1828 |
+
"@types/d3-selection": "*"
|
| 1829 |
+
}
|
| 1830 |
+
},
|
| 1831 |
+
"node_modules/@types/d3-brush": {
|
| 1832 |
+
"version": "3.0.6",
|
| 1833 |
+
"resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
|
| 1834 |
+
"integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
|
| 1835 |
+
"license": "MIT",
|
| 1836 |
+
"dependencies": {
|
| 1837 |
+
"@types/d3-selection": "*"
|
| 1838 |
+
}
|
| 1839 |
+
},
|
| 1840 |
+
"node_modules/@types/d3-chord": {
|
| 1841 |
+
"version": "3.0.6",
|
| 1842 |
+
"resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
|
| 1843 |
+
"integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==",
|
| 1844 |
+
"license": "MIT"
|
| 1845 |
+
},
|
| 1846 |
+
"node_modules/@types/d3-color": {
|
| 1847 |
+
"version": "3.1.3",
|
| 1848 |
+
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
|
| 1849 |
+
"integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
|
| 1850 |
+
"license": "MIT"
|
| 1851 |
+
},
|
| 1852 |
+
"node_modules/@types/d3-contour": {
|
| 1853 |
+
"version": "3.0.6",
|
| 1854 |
+
"resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
|
| 1855 |
+
"integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
|
| 1856 |
+
"license": "MIT",
|
| 1857 |
+
"dependencies": {
|
| 1858 |
+
"@types/d3-array": "*",
|
| 1859 |
+
"@types/geojson": "*"
|
| 1860 |
+
}
|
| 1861 |
+
},
|
| 1862 |
+
"node_modules/@types/d3-delaunay": {
|
| 1863 |
+
"version": "6.0.4",
|
| 1864 |
+
"resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
|
| 1865 |
+
"integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
|
| 1866 |
+
"license": "MIT"
|
| 1867 |
+
},
|
| 1868 |
+
"node_modules/@types/d3-dispatch": {
|
| 1869 |
+
"version": "3.0.7",
|
| 1870 |
+
"resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz",
|
| 1871 |
+
"integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==",
|
| 1872 |
+
"license": "MIT"
|
| 1873 |
+
},
|
| 1874 |
+
"node_modules/@types/d3-drag": {
|
| 1875 |
+
"version": "3.0.7",
|
| 1876 |
+
"resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
|
| 1877 |
+
"integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
|
| 1878 |
+
"license": "MIT",
|
| 1879 |
+
"dependencies": {
|
| 1880 |
+
"@types/d3-selection": "*"
|
| 1881 |
+
}
|
| 1882 |
+
},
|
| 1883 |
+
"node_modules/@types/d3-dsv": {
|
| 1884 |
+
"version": "3.0.7",
|
| 1885 |
+
"resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
|
| 1886 |
+
"integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
|
| 1887 |
+
"license": "MIT"
|
| 1888 |
+
},
|
| 1889 |
+
"node_modules/@types/d3-ease": {
|
| 1890 |
+
"version": "3.0.2",
|
| 1891 |
+
"resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
|
| 1892 |
+
"integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
|
| 1893 |
+
"license": "MIT"
|
| 1894 |
+
},
|
| 1895 |
+
"node_modules/@types/d3-fetch": {
|
| 1896 |
+
"version": "3.0.7",
|
| 1897 |
+
"resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
|
| 1898 |
+
"integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
|
| 1899 |
+
"license": "MIT",
|
| 1900 |
+
"dependencies": {
|
| 1901 |
+
"@types/d3-dsv": "*"
|
| 1902 |
+
}
|
| 1903 |
+
},
|
| 1904 |
+
"node_modules/@types/d3-force": {
|
| 1905 |
+
"version": "3.0.10",
|
| 1906 |
+
"resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz",
|
| 1907 |
+
"integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==",
|
| 1908 |
+
"license": "MIT"
|
| 1909 |
+
},
|
| 1910 |
+
"node_modules/@types/d3-format": {
|
| 1911 |
+
"version": "3.0.4",
|
| 1912 |
+
"resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
|
| 1913 |
+
"integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
|
| 1914 |
+
"license": "MIT"
|
| 1915 |
+
},
|
| 1916 |
+
"node_modules/@types/d3-geo": {
|
| 1917 |
+
"version": "3.1.1",
|
| 1918 |
+
"resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.1.tgz",
|
| 1919 |
+
"integrity": "sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w==",
|
| 1920 |
+
"license": "MIT",
|
| 1921 |
+
"dependencies": {
|
| 1922 |
+
"@types/geojson": "*"
|
| 1923 |
+
}
|
| 1924 |
+
},
|
| 1925 |
+
"node_modules/@types/d3-hierarchy": {
|
| 1926 |
+
"version": "3.1.7",
|
| 1927 |
+
"resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz",
|
| 1928 |
+
"integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==",
|
| 1929 |
+
"license": "MIT"
|
| 1930 |
+
},
|
| 1931 |
+
"node_modules/@types/d3-interpolate": {
|
| 1932 |
+
"version": "3.0.4",
|
| 1933 |
+
"resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
|
| 1934 |
+
"integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
|
| 1935 |
+
"license": "MIT",
|
| 1936 |
+
"dependencies": {
|
| 1937 |
+
"@types/d3-color": "*"
|
| 1938 |
+
}
|
| 1939 |
+
},
|
| 1940 |
+
"node_modules/@types/d3-path": {
|
| 1941 |
+
"version": "3.1.1",
|
| 1942 |
+
"resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz",
|
| 1943 |
+
"integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==",
|
| 1944 |
+
"license": "MIT"
|
| 1945 |
+
},
|
| 1946 |
+
"node_modules/@types/d3-polygon": {
|
| 1947 |
+
"version": "3.0.2",
|
| 1948 |
+
"resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
|
| 1949 |
+
"integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
|
| 1950 |
+
"license": "MIT"
|
| 1951 |
+
},
|
| 1952 |
+
"node_modules/@types/d3-quadtree": {
|
| 1953 |
+
"version": "3.0.6",
|
| 1954 |
+
"resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
|
| 1955 |
+
"integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
|
| 1956 |
+
"license": "MIT"
|
| 1957 |
+
},
|
| 1958 |
+
"node_modules/@types/d3-random": {
|
| 1959 |
+
"version": "3.0.4",
|
| 1960 |
+
"resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.4.tgz",
|
| 1961 |
+
"integrity": "sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==",
|
| 1962 |
+
"license": "MIT"
|
| 1963 |
+
},
|
| 1964 |
+
"node_modules/@types/d3-scale": {
|
| 1965 |
+
"version": "4.0.9",
|
| 1966 |
+
"resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz",
|
| 1967 |
+
"integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==",
|
| 1968 |
+
"license": "MIT",
|
| 1969 |
+
"dependencies": {
|
| 1970 |
+
"@types/d3-time": "*"
|
| 1971 |
+
}
|
| 1972 |
+
},
|
| 1973 |
+
"node_modules/@types/d3-scale-chromatic": {
|
| 1974 |
+
"version": "3.1.0",
|
| 1975 |
+
"resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
|
| 1976 |
+
"integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==",
|
| 1977 |
+
"license": "MIT"
|
| 1978 |
+
},
|
| 1979 |
+
"node_modules/@types/d3-selection": {
|
| 1980 |
+
"version": "3.0.12",
|
| 1981 |
+
"resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.12.tgz",
|
| 1982 |
+
"integrity": "sha512-Qe/KWYhEiIIxGs7HrAAjMfShxKldx19SJtr5zu53f3afPsdZNz7HHtdTLXo/kqeiWNXVycI24kSnfzBYkTzpgw==",
|
| 1983 |
+
"license": "MIT"
|
| 1984 |
+
},
|
| 1985 |
+
"node_modules/@types/d3-shape": {
|
| 1986 |
+
"version": "3.2.0",
|
| 1987 |
+
"resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.2.0.tgz",
|
| 1988 |
+
"integrity": "sha512-kVd74ta9eof3eJOvbNd1vGKS/XERRyQbT26Og63hIsvDO84cjD5gEOhsXf26w3FSoNlPVz84DOFcKv/oou+fMw==",
|
| 1989 |
+
"license": "MIT",
|
| 1990 |
+
"dependencies": {
|
| 1991 |
+
"@types/d3-path": "*"
|
| 1992 |
+
}
|
| 1993 |
+
},
|
| 1994 |
+
"node_modules/@types/d3-time": {
|
| 1995 |
+
"version": "3.0.4",
|
| 1996 |
+
"resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz",
|
| 1997 |
+
"integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==",
|
| 1998 |
+
"license": "MIT"
|
| 1999 |
+
},
|
| 2000 |
+
"node_modules/@types/d3-time-format": {
|
| 2001 |
+
"version": "4.0.3",
|
| 2002 |
+
"resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
|
| 2003 |
+
"integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
|
| 2004 |
+
"license": "MIT"
|
| 2005 |
+
},
|
| 2006 |
+
"node_modules/@types/d3-timer": {
|
| 2007 |
+
"version": "3.0.2",
|
| 2008 |
+
"resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
|
| 2009 |
+
"integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
|
| 2010 |
+
"license": "MIT"
|
| 2011 |
+
},
|
| 2012 |
+
"node_modules/@types/d3-transition": {
|
| 2013 |
+
"version": "3.0.9",
|
| 2014 |
+
"resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz",
|
| 2015 |
+
"integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==",
|
| 2016 |
+
"license": "MIT",
|
| 2017 |
+
"dependencies": {
|
| 2018 |
+
"@types/d3-selection": "*"
|
| 2019 |
+
}
|
| 2020 |
+
},
|
| 2021 |
+
"node_modules/@types/d3-zoom": {
|
| 2022 |
+
"version": "3.0.9",
|
| 2023 |
+
"resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.9.tgz",
|
| 2024 |
+
"integrity": "sha512-0sE1406XBYJGiqD3AusTl9ZqC//2mIXix51tbom25gDCA8ri4xnSZg28CaSE8Srl6FClqABUKfsn0qghgdepMA==",
|
| 2025 |
+
"license": "MIT",
|
| 2026 |
+
"dependencies": {
|
| 2027 |
+
"@types/d3-interpolate": "*",
|
| 2028 |
+
"@types/d3-selection": "*"
|
| 2029 |
+
}
|
| 2030 |
+
},
|
| 2031 |
"node_modules/@types/estree": {
|
| 2032 |
"version": "1.0.9",
|
| 2033 |
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
|
|
|
|
| 2035 |
"dev": true,
|
| 2036 |
"license": "MIT"
|
| 2037 |
},
|
| 2038 |
+
"node_modules/@types/geojson": {
|
| 2039 |
+
"version": "7946.0.16",
|
| 2040 |
+
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz",
|
| 2041 |
+
"integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==",
|
| 2042 |
+
"license": "MIT"
|
| 2043 |
+
},
|
| 2044 |
"node_modules/@types/json-schema": {
|
| 2045 |
"version": "7.0.15",
|
| 2046 |
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
|
|
|
|
| 2085 |
"@types/react": "^19.3.0"
|
| 2086 |
}
|
| 2087 |
},
|
| 2088 |
+
"node_modules/@types/trusted-types": {
|
| 2089 |
+
"version": "2.0.7",
|
| 2090 |
+
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
|
| 2091 |
+
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
| 2092 |
+
"license": "MIT",
|
| 2093 |
+
"optional": true
|
| 2094 |
+
},
|
| 2095 |
"node_modules/@typescript-eslint/eslint-plugin": {
|
| 2096 |
"version": "8.70.1",
|
| 2097 |
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.70.1.tgz",
|
|
|
|
| 2741 |
"win32"
|
| 2742 |
]
|
| 2743 |
},
|
| 2744 |
+
"node_modules/@upsetjs/venn.js": {
|
| 2745 |
+
"version": "2.0.0",
|
| 2746 |
+
"resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz",
|
| 2747 |
+
"integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==",
|
| 2748 |
+
"license": "MIT",
|
| 2749 |
+
"optionalDependencies": {
|
| 2750 |
+
"d3-selection": "^3.0.0",
|
| 2751 |
+
"d3-transition": "^3.0.1"
|
| 2752 |
+
}
|
| 2753 |
+
},
|
| 2754 |
"node_modules/acorn": {
|
| 2755 |
"version": "8.18.0",
|
| 2756 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
|
|
|
|
| 3111 |
"browserslist": "cli.js"
|
| 3112 |
},
|
| 3113 |
"engines": {
|
| 3114 |
+
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
| 3115 |
+
}
|
| 3116 |
+
},
|
| 3117 |
+
"node_modules/call-bind": {
|
| 3118 |
+
"version": "1.0.9",
|
| 3119 |
+
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz",
|
| 3120 |
+
"integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==",
|
| 3121 |
+
"dev": true,
|
| 3122 |
+
"license": "MIT",
|
| 3123 |
+
"dependencies": {
|
| 3124 |
+
"call-bind-apply-helpers": "^1.0.2",
|
| 3125 |
+
"es-define-property": "^1.0.1",
|
| 3126 |
+
"get-intrinsic": "^1.3.0",
|
| 3127 |
+
"set-function-length": "^1.2.2"
|
| 3128 |
+
},
|
| 3129 |
+
"engines": {
|
| 3130 |
+
"node": ">= 0.4"
|
| 3131 |
+
},
|
| 3132 |
+
"funding": {
|
| 3133 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 3134 |
+
}
|
| 3135 |
+
},
|
| 3136 |
+
"node_modules/call-bind-apply-helpers": {
|
| 3137 |
+
"version": "1.0.2",
|
| 3138 |
+
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
| 3139 |
+
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
| 3140 |
+
"dev": true,
|
| 3141 |
+
"license": "MIT",
|
| 3142 |
+
"dependencies": {
|
| 3143 |
+
"es-errors": "^1.3.0",
|
| 3144 |
+
"function-bind": "^1.1.2"
|
| 3145 |
+
},
|
| 3146 |
+
"engines": {
|
| 3147 |
+
"node": ">= 0.4"
|
| 3148 |
+
}
|
| 3149 |
+
},
|
| 3150 |
+
"node_modules/call-bound": {
|
| 3151 |
+
"version": "1.0.4",
|
| 3152 |
+
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
|
| 3153 |
+
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
|
| 3154 |
+
"dev": true,
|
| 3155 |
+
"license": "MIT",
|
| 3156 |
+
"dependencies": {
|
| 3157 |
+
"call-bind-apply-helpers": "^1.0.2",
|
| 3158 |
+
"get-intrinsic": "^1.3.0"
|
| 3159 |
+
},
|
| 3160 |
+
"engines": {
|
| 3161 |
+
"node": ">= 0.4"
|
| 3162 |
+
},
|
| 3163 |
+
"funding": {
|
| 3164 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 3165 |
+
}
|
| 3166 |
+
},
|
| 3167 |
+
"node_modules/callsites": {
|
| 3168 |
+
"version": "3.1.0",
|
| 3169 |
+
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
| 3170 |
+
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
| 3171 |
+
"dev": true,
|
| 3172 |
+
"license": "MIT",
|
| 3173 |
+
"engines": {
|
| 3174 |
+
"node": ">=6"
|
| 3175 |
+
}
|
| 3176 |
+
},
|
| 3177 |
+
"node_modules/caniuse-lite": {
|
| 3178 |
+
"version": "1.0.30001812",
|
| 3179 |
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001812.tgz",
|
| 3180 |
+
"integrity": "sha512-qN+QNNBr93TCmFrmte0bBCjSDMuRvt78VlHT99qIGPszm4QsqCX8lnyWUFkHi8B7ZBAPq8SH+UqyXNy/odMdng==",
|
| 3181 |
+
"funding": [
|
| 3182 |
+
{
|
| 3183 |
+
"type": "opencollective",
|
| 3184 |
+
"url": "https://opencollective.com/browserslist"
|
| 3185 |
+
},
|
| 3186 |
+
{
|
| 3187 |
+
"type": "tidelift",
|
| 3188 |
+
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
|
| 3189 |
+
},
|
| 3190 |
+
{
|
| 3191 |
+
"type": "github",
|
| 3192 |
+
"url": "https://github.com/sponsors/ai"
|
| 3193 |
+
}
|
| 3194 |
+
],
|
| 3195 |
+
"license": "CC-BY-4.0"
|
| 3196 |
+
},
|
| 3197 |
+
"node_modules/chalk": {
|
| 3198 |
+
"version": "4.1.2",
|
| 3199 |
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
| 3200 |
+
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
| 3201 |
+
"dev": true,
|
| 3202 |
+
"license": "MIT",
|
| 3203 |
+
"dependencies": {
|
| 3204 |
+
"ansi-styles": "^4.1.0",
|
| 3205 |
+
"supports-color": "^7.1.0"
|
| 3206 |
+
},
|
| 3207 |
+
"engines": {
|
| 3208 |
+
"node": ">=10"
|
| 3209 |
+
},
|
| 3210 |
+
"funding": {
|
| 3211 |
+
"url": "https://github.com/chalk/chalk?sponsor=1"
|
| 3212 |
+
}
|
| 3213 |
+
},
|
| 3214 |
+
"node_modules/chevrotain": {
|
| 3215 |
+
"version": "13.2.0",
|
| 3216 |
+
"resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-13.2.0.tgz",
|
| 3217 |
+
"integrity": "sha512-GTouk5YzgBxlTPCaDn5q0q2EJKkrYmnPF+HmF8v0Qo4r3iyPG7HJivkN1wthCXZcm3sIcZFpGTRovLPNdJNRCA==",
|
| 3218 |
+
"license": "Apache-2.0",
|
| 3219 |
+
"dependencies": {
|
| 3220 |
+
"@chevrotain/cst-dts-gen": "13.2.0",
|
| 3221 |
+
"@chevrotain/gast": "13.2.0",
|
| 3222 |
+
"@chevrotain/regexp-to-ast": "13.2.0",
|
| 3223 |
+
"@chevrotain/types": "13.2.0",
|
| 3224 |
+
"@chevrotain/utils": "13.2.0"
|
| 3225 |
+
},
|
| 3226 |
+
"engines": {
|
| 3227 |
+
"node": ">=22.0.0"
|
| 3228 |
+
}
|
| 3229 |
+
},
|
| 3230 |
+
"node_modules/client-only": {
|
| 3231 |
+
"version": "0.0.1",
|
| 3232 |
+
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
|
| 3233 |
+
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
|
| 3234 |
+
"license": "MIT"
|
| 3235 |
+
},
|
| 3236 |
+
"node_modules/color-convert": {
|
| 3237 |
+
"version": "2.0.1",
|
| 3238 |
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
| 3239 |
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
| 3240 |
+
"dev": true,
|
| 3241 |
+
"license": "MIT",
|
| 3242 |
+
"dependencies": {
|
| 3243 |
+
"color-name": "~1.1.4"
|
| 3244 |
+
},
|
| 3245 |
+
"engines": {
|
| 3246 |
+
"node": ">=7.0.0"
|
| 3247 |
+
}
|
| 3248 |
+
},
|
| 3249 |
+
"node_modules/color-name": {
|
| 3250 |
+
"version": "1.1.4",
|
| 3251 |
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
| 3252 |
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
| 3253 |
+
"dev": true,
|
| 3254 |
+
"license": "MIT"
|
| 3255 |
+
},
|
| 3256 |
+
"node_modules/commander": {
|
| 3257 |
+
"version": "7.2.0",
|
| 3258 |
+
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
|
| 3259 |
+
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
|
| 3260 |
+
"license": "MIT",
|
| 3261 |
+
"engines": {
|
| 3262 |
+
"node": ">= 10"
|
| 3263 |
+
}
|
| 3264 |
+
},
|
| 3265 |
+
"node_modules/concat-map": {
|
| 3266 |
+
"version": "0.0.1",
|
| 3267 |
+
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
| 3268 |
+
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
| 3269 |
+
"dev": true,
|
| 3270 |
+
"license": "MIT"
|
| 3271 |
+
},
|
| 3272 |
+
"node_modules/convert-source-map": {
|
| 3273 |
+
"version": "2.0.0",
|
| 3274 |
+
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
|
| 3275 |
+
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
| 3276 |
+
"dev": true,
|
| 3277 |
+
"license": "MIT"
|
| 3278 |
+
},
|
| 3279 |
+
"node_modules/cose-base": {
|
| 3280 |
+
"version": "1.0.3",
|
| 3281 |
+
"resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
|
| 3282 |
+
"integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
|
| 3283 |
+
"license": "MIT",
|
| 3284 |
+
"dependencies": {
|
| 3285 |
+
"layout-base": "^1.0.0"
|
| 3286 |
+
}
|
| 3287 |
+
},
|
| 3288 |
+
"node_modules/cross-spawn": {
|
| 3289 |
+
"version": "7.0.6",
|
| 3290 |
+
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
| 3291 |
+
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
| 3292 |
+
"dev": true,
|
| 3293 |
+
"license": "MIT",
|
| 3294 |
+
"dependencies": {
|
| 3295 |
+
"path-key": "^3.1.0",
|
| 3296 |
+
"shebang-command": "^2.0.0",
|
| 3297 |
+
"which": "^2.0.1"
|
| 3298 |
+
},
|
| 3299 |
+
"engines": {
|
| 3300 |
+
"node": ">= 8"
|
| 3301 |
+
}
|
| 3302 |
+
},
|
| 3303 |
+
"node_modules/csstype": {
|
| 3304 |
+
"version": "3.2.3",
|
| 3305 |
+
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
|
| 3306 |
+
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
| 3307 |
+
"dev": true,
|
| 3308 |
+
"license": "MIT"
|
| 3309 |
+
},
|
| 3310 |
+
"node_modules/cytoscape": {
|
| 3311 |
+
"version": "3.34.3",
|
| 3312 |
+
"resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.34.3.tgz",
|
| 3313 |
+
"integrity": "sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==",
|
| 3314 |
+
"license": "MIT",
|
| 3315 |
+
"engines": {
|
| 3316 |
+
"node": ">=0.10"
|
| 3317 |
+
}
|
| 3318 |
+
},
|
| 3319 |
+
"node_modules/cytoscape-cose-bilkent": {
|
| 3320 |
+
"version": "4.1.0",
|
| 3321 |
+
"resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
|
| 3322 |
+
"integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
|
| 3323 |
+
"license": "MIT",
|
| 3324 |
+
"dependencies": {
|
| 3325 |
+
"cose-base": "^1.0.0"
|
| 3326 |
+
},
|
| 3327 |
+
"peerDependencies": {
|
| 3328 |
+
"cytoscape": "^3.2.0"
|
| 3329 |
+
}
|
| 3330 |
+
},
|
| 3331 |
+
"node_modules/cytoscape-fcose": {
|
| 3332 |
+
"version": "2.2.0",
|
| 3333 |
+
"resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz",
|
| 3334 |
+
"integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==",
|
| 3335 |
+
"license": "MIT",
|
| 3336 |
+
"dependencies": {
|
| 3337 |
+
"cose-base": "^2.2.0"
|
| 3338 |
+
},
|
| 3339 |
+
"peerDependencies": {
|
| 3340 |
+
"cytoscape": "^3.2.0"
|
| 3341 |
+
}
|
| 3342 |
+
},
|
| 3343 |
+
"node_modules/cytoscape-fcose/node_modules/cose-base": {
|
| 3344 |
+
"version": "2.2.0",
|
| 3345 |
+
"resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz",
|
| 3346 |
+
"integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==",
|
| 3347 |
+
"license": "MIT",
|
| 3348 |
+
"dependencies": {
|
| 3349 |
+
"layout-base": "^2.0.0"
|
| 3350 |
+
}
|
| 3351 |
+
},
|
| 3352 |
+
"node_modules/cytoscape-fcose/node_modules/layout-base": {
|
| 3353 |
+
"version": "2.0.1",
|
| 3354 |
+
"resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz",
|
| 3355 |
+
"integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==",
|
| 3356 |
+
"license": "MIT"
|
| 3357 |
+
},
|
| 3358 |
+
"node_modules/d3": {
|
| 3359 |
+
"version": "7.9.0",
|
| 3360 |
+
"resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz",
|
| 3361 |
+
"integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
|
| 3362 |
+
"license": "ISC",
|
| 3363 |
+
"dependencies": {
|
| 3364 |
+
"d3-array": "3",
|
| 3365 |
+
"d3-axis": "3",
|
| 3366 |
+
"d3-brush": "3",
|
| 3367 |
+
"d3-chord": "3",
|
| 3368 |
+
"d3-color": "3",
|
| 3369 |
+
"d3-contour": "4",
|
| 3370 |
+
"d3-delaunay": "6",
|
| 3371 |
+
"d3-dispatch": "3",
|
| 3372 |
+
"d3-drag": "3",
|
| 3373 |
+
"d3-dsv": "3",
|
| 3374 |
+
"d3-ease": "3",
|
| 3375 |
+
"d3-fetch": "3",
|
| 3376 |
+
"d3-force": "3",
|
| 3377 |
+
"d3-format": "3",
|
| 3378 |
+
"d3-geo": "3",
|
| 3379 |
+
"d3-hierarchy": "3",
|
| 3380 |
+
"d3-interpolate": "3",
|
| 3381 |
+
"d3-path": "3",
|
| 3382 |
+
"d3-polygon": "3",
|
| 3383 |
+
"d3-quadtree": "3",
|
| 3384 |
+
"d3-random": "3",
|
| 3385 |
+
"d3-scale": "4",
|
| 3386 |
+
"d3-scale-chromatic": "3",
|
| 3387 |
+
"d3-selection": "3",
|
| 3388 |
+
"d3-shape": "3",
|
| 3389 |
+
"d3-time": "3",
|
| 3390 |
+
"d3-time-format": "4",
|
| 3391 |
+
"d3-timer": "3",
|
| 3392 |
+
"d3-transition": "3",
|
| 3393 |
+
"d3-zoom": "3"
|
| 3394 |
+
},
|
| 3395 |
+
"engines": {
|
| 3396 |
+
"node": ">=12"
|
| 3397 |
+
}
|
| 3398 |
+
},
|
| 3399 |
+
"node_modules/d3-array": {
|
| 3400 |
+
"version": "3.2.4",
|
| 3401 |
+
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
|
| 3402 |
+
"integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
|
| 3403 |
+
"license": "ISC",
|
| 3404 |
+
"dependencies": {
|
| 3405 |
+
"internmap": "1 - 2"
|
| 3406 |
+
},
|
| 3407 |
+
"engines": {
|
| 3408 |
+
"node": ">=12"
|
| 3409 |
+
}
|
| 3410 |
+
},
|
| 3411 |
+
"node_modules/d3-axis": {
|
| 3412 |
+
"version": "3.0.0",
|
| 3413 |
+
"resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
|
| 3414 |
+
"integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
|
| 3415 |
+
"license": "ISC",
|
| 3416 |
+
"engines": {
|
| 3417 |
+
"node": ">=12"
|
| 3418 |
+
}
|
| 3419 |
+
},
|
| 3420 |
+
"node_modules/d3-brush": {
|
| 3421 |
+
"version": "3.0.0",
|
| 3422 |
+
"resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
|
| 3423 |
+
"integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
|
| 3424 |
+
"license": "ISC",
|
| 3425 |
+
"dependencies": {
|
| 3426 |
+
"d3-dispatch": "1 - 3",
|
| 3427 |
+
"d3-drag": "2 - 3",
|
| 3428 |
+
"d3-interpolate": "1 - 3",
|
| 3429 |
+
"d3-selection": "3",
|
| 3430 |
+
"d3-transition": "3"
|
| 3431 |
+
},
|
| 3432 |
+
"engines": {
|
| 3433 |
+
"node": ">=12"
|
| 3434 |
+
}
|
| 3435 |
+
},
|
| 3436 |
+
"node_modules/d3-chord": {
|
| 3437 |
+
"version": "3.0.1",
|
| 3438 |
+
"resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
|
| 3439 |
+
"integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
|
| 3440 |
+
"license": "ISC",
|
| 3441 |
+
"dependencies": {
|
| 3442 |
+
"d3-path": "1 - 3"
|
| 3443 |
+
},
|
| 3444 |
+
"engines": {
|
| 3445 |
+
"node": ">=12"
|
| 3446 |
+
}
|
| 3447 |
+
},
|
| 3448 |
+
"node_modules/d3-color": {
|
| 3449 |
+
"version": "3.1.0",
|
| 3450 |
+
"resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
|
| 3451 |
+
"integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
|
| 3452 |
+
"license": "ISC",
|
| 3453 |
+
"engines": {
|
| 3454 |
+
"node": ">=12"
|
| 3455 |
+
}
|
| 3456 |
+
},
|
| 3457 |
+
"node_modules/d3-contour": {
|
| 3458 |
+
"version": "4.0.2",
|
| 3459 |
+
"resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
|
| 3460 |
+
"integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
|
| 3461 |
+
"license": "ISC",
|
| 3462 |
+
"dependencies": {
|
| 3463 |
+
"d3-array": "^3.2.0"
|
| 3464 |
+
},
|
| 3465 |
+
"engines": {
|
| 3466 |
+
"node": ">=12"
|
| 3467 |
+
}
|
| 3468 |
+
},
|
| 3469 |
+
"node_modules/d3-delaunay": {
|
| 3470 |
+
"version": "6.0.4",
|
| 3471 |
+
"resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
|
| 3472 |
+
"integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
|
| 3473 |
+
"license": "ISC",
|
| 3474 |
+
"dependencies": {
|
| 3475 |
+
"delaunator": "5"
|
| 3476 |
+
},
|
| 3477 |
+
"engines": {
|
| 3478 |
+
"node": ">=12"
|
| 3479 |
+
}
|
| 3480 |
+
},
|
| 3481 |
+
"node_modules/d3-dispatch": {
|
| 3482 |
+
"version": "3.0.1",
|
| 3483 |
+
"resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
|
| 3484 |
+
"integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
|
| 3485 |
+
"license": "ISC",
|
| 3486 |
+
"engines": {
|
| 3487 |
+
"node": ">=12"
|
| 3488 |
+
}
|
| 3489 |
+
},
|
| 3490 |
+
"node_modules/d3-drag": {
|
| 3491 |
+
"version": "3.0.0",
|
| 3492 |
+
"resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
|
| 3493 |
+
"integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
|
| 3494 |
+
"license": "ISC",
|
| 3495 |
+
"dependencies": {
|
| 3496 |
+
"d3-dispatch": "1 - 3",
|
| 3497 |
+
"d3-selection": "3"
|
| 3498 |
+
},
|
| 3499 |
+
"engines": {
|
| 3500 |
+
"node": ">=12"
|
| 3501 |
+
}
|
| 3502 |
+
},
|
| 3503 |
+
"node_modules/d3-dsv": {
|
| 3504 |
+
"version": "3.0.1",
|
| 3505 |
+
"resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
|
| 3506 |
+
"integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
|
| 3507 |
+
"license": "ISC",
|
| 3508 |
+
"dependencies": {
|
| 3509 |
+
"commander": "7",
|
| 3510 |
+
"iconv-lite": "0.6",
|
| 3511 |
+
"rw": "1"
|
| 3512 |
+
},
|
| 3513 |
+
"bin": {
|
| 3514 |
+
"csv2json": "bin/dsv2json.js",
|
| 3515 |
+
"csv2tsv": "bin/dsv2dsv.js",
|
| 3516 |
+
"dsv2dsv": "bin/dsv2dsv.js",
|
| 3517 |
+
"dsv2json": "bin/dsv2json.js",
|
| 3518 |
+
"json2csv": "bin/json2dsv.js",
|
| 3519 |
+
"json2dsv": "bin/json2dsv.js",
|
| 3520 |
+
"json2tsv": "bin/json2dsv.js",
|
| 3521 |
+
"tsv2csv": "bin/dsv2dsv.js",
|
| 3522 |
+
"tsv2json": "bin/dsv2json.js"
|
| 3523 |
+
},
|
| 3524 |
+
"engines": {
|
| 3525 |
+
"node": ">=12"
|
| 3526 |
+
}
|
| 3527 |
+
},
|
| 3528 |
+
"node_modules/d3-ease": {
|
| 3529 |
+
"version": "3.0.1",
|
| 3530 |
+
"resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
|
| 3531 |
+
"integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
|
| 3532 |
+
"license": "BSD-3-Clause",
|
| 3533 |
+
"engines": {
|
| 3534 |
+
"node": ">=12"
|
| 3535 |
+
}
|
| 3536 |
+
},
|
| 3537 |
+
"node_modules/d3-fetch": {
|
| 3538 |
+
"version": "3.0.1",
|
| 3539 |
+
"resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
|
| 3540 |
+
"integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
|
| 3541 |
+
"license": "ISC",
|
| 3542 |
+
"dependencies": {
|
| 3543 |
+
"d3-dsv": "1 - 3"
|
| 3544 |
+
},
|
| 3545 |
+
"engines": {
|
| 3546 |
+
"node": ">=12"
|
| 3547 |
+
}
|
| 3548 |
+
},
|
| 3549 |
+
"node_modules/d3-force": {
|
| 3550 |
+
"version": "3.0.0",
|
| 3551 |
+
"resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
|
| 3552 |
+
"integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
|
| 3553 |
+
"license": "ISC",
|
| 3554 |
+
"dependencies": {
|
| 3555 |
+
"d3-dispatch": "1 - 3",
|
| 3556 |
+
"d3-quadtree": "1 - 3",
|
| 3557 |
+
"d3-timer": "1 - 3"
|
| 3558 |
+
},
|
| 3559 |
+
"engines": {
|
| 3560 |
+
"node": ">=12"
|
| 3561 |
+
}
|
| 3562 |
+
},
|
| 3563 |
+
"node_modules/d3-format": {
|
| 3564 |
+
"version": "3.1.2",
|
| 3565 |
+
"resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz",
|
| 3566 |
+
"integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==",
|
| 3567 |
+
"license": "ISC",
|
| 3568 |
+
"engines": {
|
| 3569 |
+
"node": ">=12"
|
| 3570 |
+
}
|
| 3571 |
+
},
|
| 3572 |
+
"node_modules/d3-geo": {
|
| 3573 |
+
"version": "3.1.1",
|
| 3574 |
+
"resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
|
| 3575 |
+
"integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
|
| 3576 |
+
"license": "ISC",
|
| 3577 |
+
"dependencies": {
|
| 3578 |
+
"d3-array": "2.5.0 - 3"
|
| 3579 |
+
},
|
| 3580 |
+
"engines": {
|
| 3581 |
+
"node": ">=12"
|
| 3582 |
+
}
|
| 3583 |
+
},
|
| 3584 |
+
"node_modules/d3-hierarchy": {
|
| 3585 |
+
"version": "3.1.2",
|
| 3586 |
+
"resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
|
| 3587 |
+
"integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
|
| 3588 |
+
"license": "ISC",
|
| 3589 |
+
"engines": {
|
| 3590 |
+
"node": ">=12"
|
| 3591 |
+
}
|
| 3592 |
+
},
|
| 3593 |
+
"node_modules/d3-interpolate": {
|
| 3594 |
+
"version": "3.0.1",
|
| 3595 |
+
"resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
|
| 3596 |
+
"integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
|
| 3597 |
+
"license": "ISC",
|
| 3598 |
+
"dependencies": {
|
| 3599 |
+
"d3-color": "1 - 3"
|
| 3600 |
+
},
|
| 3601 |
+
"engines": {
|
| 3602 |
+
"node": ">=12"
|
| 3603 |
+
}
|
| 3604 |
+
},
|
| 3605 |
+
"node_modules/d3-path": {
|
| 3606 |
+
"version": "3.1.0",
|
| 3607 |
+
"resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
|
| 3608 |
+
"integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
|
| 3609 |
+
"license": "ISC",
|
| 3610 |
+
"engines": {
|
| 3611 |
+
"node": ">=12"
|
| 3612 |
+
}
|
| 3613 |
+
},
|
| 3614 |
+
"node_modules/d3-polygon": {
|
| 3615 |
+
"version": "3.0.1",
|
| 3616 |
+
"resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
|
| 3617 |
+
"integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
|
| 3618 |
+
"license": "ISC",
|
| 3619 |
+
"engines": {
|
| 3620 |
+
"node": ">=12"
|
| 3621 |
+
}
|
| 3622 |
+
},
|
| 3623 |
+
"node_modules/d3-quadtree": {
|
| 3624 |
+
"version": "3.0.1",
|
| 3625 |
+
"resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
|
| 3626 |
+
"integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
|
| 3627 |
+
"license": "ISC",
|
| 3628 |
+
"engines": {
|
| 3629 |
+
"node": ">=12"
|
| 3630 |
+
}
|
| 3631 |
+
},
|
| 3632 |
+
"node_modules/d3-random": {
|
| 3633 |
+
"version": "3.0.1",
|
| 3634 |
+
"resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
|
| 3635 |
+
"integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
|
| 3636 |
+
"license": "ISC",
|
| 3637 |
+
"engines": {
|
| 3638 |
+
"node": ">=12"
|
| 3639 |
+
}
|
| 3640 |
+
},
|
| 3641 |
+
"node_modules/d3-sankey": {
|
| 3642 |
+
"version": "0.12.3",
|
| 3643 |
+
"resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz",
|
| 3644 |
+
"integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==",
|
| 3645 |
+
"license": "BSD-3-Clause",
|
| 3646 |
+
"dependencies": {
|
| 3647 |
+
"d3-array": "1 - 2",
|
| 3648 |
+
"d3-shape": "^1.2.0"
|
| 3649 |
+
}
|
| 3650 |
+
},
|
| 3651 |
+
"node_modules/d3-sankey/node_modules/d3-array": {
|
| 3652 |
+
"version": "2.12.1",
|
| 3653 |
+
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
|
| 3654 |
+
"integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
|
| 3655 |
+
"license": "BSD-3-Clause",
|
| 3656 |
+
"dependencies": {
|
| 3657 |
+
"internmap": "^1.0.0"
|
| 3658 |
+
}
|
| 3659 |
+
},
|
| 3660 |
+
"node_modules/d3-sankey/node_modules/d3-path": {
|
| 3661 |
+
"version": "1.0.9",
|
| 3662 |
+
"resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
|
| 3663 |
+
"integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==",
|
| 3664 |
+
"license": "BSD-3-Clause"
|
| 3665 |
+
},
|
| 3666 |
+
"node_modules/d3-sankey/node_modules/d3-shape": {
|
| 3667 |
+
"version": "1.3.7",
|
| 3668 |
+
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
|
| 3669 |
+
"integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
|
| 3670 |
+
"license": "BSD-3-Clause",
|
| 3671 |
+
"dependencies": {
|
| 3672 |
+
"d3-path": "1"
|
| 3673 |
+
}
|
| 3674 |
+
},
|
| 3675 |
+
"node_modules/d3-sankey/node_modules/internmap": {
|
| 3676 |
+
"version": "1.0.1",
|
| 3677 |
+
"resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
|
| 3678 |
+
"integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==",
|
| 3679 |
+
"license": "ISC"
|
| 3680 |
+
},
|
| 3681 |
+
"node_modules/d3-scale": {
|
| 3682 |
+
"version": "4.0.2",
|
| 3683 |
+
"resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
|
| 3684 |
+
"integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
|
| 3685 |
+
"license": "ISC",
|
| 3686 |
+
"dependencies": {
|
| 3687 |
+
"d3-array": "2.10.0 - 3",
|
| 3688 |
+
"d3-format": "1 - 3",
|
| 3689 |
+
"d3-interpolate": "1.2.0 - 3",
|
| 3690 |
+
"d3-time": "2.1.1 - 3",
|
| 3691 |
+
"d3-time-format": "2 - 4"
|
| 3692 |
+
},
|
| 3693 |
+
"engines": {
|
| 3694 |
+
"node": ">=12"
|
| 3695 |
+
}
|
| 3696 |
+
},
|
| 3697 |
+
"node_modules/d3-scale-chromatic": {
|
| 3698 |
+
"version": "3.1.0",
|
| 3699 |
+
"resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
|
| 3700 |
+
"integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
|
| 3701 |
+
"license": "ISC",
|
| 3702 |
+
"dependencies": {
|
| 3703 |
+
"d3-color": "1 - 3",
|
| 3704 |
+
"d3-interpolate": "1 - 3"
|
| 3705 |
+
},
|
| 3706 |
+
"engines": {
|
| 3707 |
+
"node": ">=12"
|
| 3708 |
}
|
| 3709 |
},
|
| 3710 |
+
"node_modules/d3-selection": {
|
| 3711 |
+
"version": "3.0.0",
|
| 3712 |
+
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
|
| 3713 |
+
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
|
| 3714 |
+
"license": "ISC",
|
| 3715 |
+
"engines": {
|
| 3716 |
+
"node": ">=12"
|
| 3717 |
+
}
|
| 3718 |
+
},
|
| 3719 |
+
"node_modules/d3-shape": {
|
| 3720 |
+
"version": "3.2.0",
|
| 3721 |
+
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
|
| 3722 |
+
"integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
|
| 3723 |
+
"license": "ISC",
|
| 3724 |
"dependencies": {
|
| 3725 |
+
"d3-path": "^3.1.0"
|
|
|
|
|
|
|
|
|
|
| 3726 |
},
|
| 3727 |
"engines": {
|
| 3728 |
+
"node": ">=12"
|
|
|
|
|
|
|
|
|
|
| 3729 |
}
|
| 3730 |
},
|
| 3731 |
+
"node_modules/d3-time": {
|
| 3732 |
+
"version": "3.1.0",
|
| 3733 |
+
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
|
| 3734 |
+
"integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
|
| 3735 |
+
"license": "ISC",
|
|
|
|
| 3736 |
"dependencies": {
|
| 3737 |
+
"d3-array": "2 - 3"
|
|
|
|
| 3738 |
},
|
| 3739 |
"engines": {
|
| 3740 |
+
"node": ">=12"
|
| 3741 |
}
|
| 3742 |
},
|
| 3743 |
+
"node_modules/d3-time-format": {
|
| 3744 |
+
"version": "4.1.0",
|
| 3745 |
+
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
|
| 3746 |
+
"integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
|
| 3747 |
+
"license": "ISC",
|
|
|
|
| 3748 |
"dependencies": {
|
| 3749 |
+
"d3-time": "1 - 3"
|
|
|
|
| 3750 |
},
|
| 3751 |
"engines": {
|
| 3752 |
+
"node": ">=12"
|
|
|
|
|
|
|
|
|
|
| 3753 |
}
|
| 3754 |
},
|
| 3755 |
+
"node_modules/d3-timer": {
|
| 3756 |
+
"version": "3.0.1",
|
| 3757 |
+
"resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
|
| 3758 |
+
"integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
|
| 3759 |
+
"license": "ISC",
|
|
|
|
| 3760 |
"engines": {
|
| 3761 |
+
"node": ">=12"
|
| 3762 |
}
|
| 3763 |
},
|
| 3764 |
+
"node_modules/d3-transition": {
|
| 3765 |
+
"version": "3.0.1",
|
| 3766 |
+
"resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
|
| 3767 |
+
"integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
|
| 3768 |
+
"license": "ISC",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3769 |
"dependencies": {
|
| 3770 |
+
"d3-color": "1 - 3",
|
| 3771 |
+
"d3-dispatch": "1 - 3",
|
| 3772 |
+
"d3-ease": "1 - 3",
|
| 3773 |
+
"d3-interpolate": "1 - 3",
|
| 3774 |
+
"d3-timer": "1 - 3"
|
| 3775 |
},
|
| 3776 |
"engines": {
|
| 3777 |
+
"node": ">=12"
|
| 3778 |
},
|
| 3779 |
+
"peerDependencies": {
|
| 3780 |
+
"d3-selection": "2 - 3"
|
| 3781 |
}
|
| 3782 |
},
|
| 3783 |
+
"node_modules/d3-zoom": {
|
| 3784 |
+
"version": "3.0.0",
|
| 3785 |
+
"resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
|
| 3786 |
+
"integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
|
| 3787 |
+
"license": "ISC",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3788 |
"dependencies": {
|
| 3789 |
+
"d3-dispatch": "1 - 3",
|
| 3790 |
+
"d3-drag": "2 - 3",
|
| 3791 |
+
"d3-interpolate": "1 - 3",
|
| 3792 |
+
"d3-selection": "2 - 3",
|
| 3793 |
+
"d3-transition": "2 - 3"
|
| 3794 |
},
|
| 3795 |
"engines": {
|
| 3796 |
+
"node": ">=12"
|
| 3797 |
}
|
| 3798 |
},
|
| 3799 |
+
"node_modules/dagre-d3-es": {
|
| 3800 |
+
"version": "7.0.14",
|
| 3801 |
+
"resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz",
|
| 3802 |
+
"integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3803 |
"license": "MIT",
|
| 3804 |
"dependencies": {
|
| 3805 |
+
"d3": "^7.9.0",
|
| 3806 |
+
"lodash-es": "^4.17.21"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3807 |
}
|
| 3808 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3809 |
"node_modules/damerau-levenshtein": {
|
| 3810 |
"version": "1.0.8",
|
| 3811 |
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
|
|
|
|
| 3867 |
"url": "https://github.com/sponsors/ljharb"
|
| 3868 |
}
|
| 3869 |
},
|
| 3870 |
+
"node_modules/dayjs": {
|
| 3871 |
+
"version": "1.11.23",
|
| 3872 |
+
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz",
|
| 3873 |
+
"integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==",
|
| 3874 |
+
"license": "MIT"
|
| 3875 |
+
},
|
| 3876 |
"node_modules/debug": {
|
| 3877 |
"version": "4.4.3",
|
| 3878 |
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
|
|
|
| 3934 |
"url": "https://github.com/sponsors/ljharb"
|
| 3935 |
}
|
| 3936 |
},
|
| 3937 |
+
"node_modules/delaunator": {
|
| 3938 |
+
"version": "5.1.0",
|
| 3939 |
+
"resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz",
|
| 3940 |
+
"integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==",
|
| 3941 |
+
"license": "ISC",
|
| 3942 |
+
"dependencies": {
|
| 3943 |
+
"robust-predicates": "^3.0.2"
|
| 3944 |
+
}
|
| 3945 |
+
},
|
| 3946 |
"node_modules/detect-libc": {
|
| 3947 |
"version": "2.1.2",
|
| 3948 |
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
|
|
|
| 3966 |
"node": ">=0.10.0"
|
| 3967 |
}
|
| 3968 |
},
|
| 3969 |
+
"node_modules/dompurify": {
|
| 3970 |
+
"version": "3.4.16",
|
| 3971 |
+
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.16.tgz",
|
| 3972 |
+
"integrity": "sha512-sqo+pNp3qRhCIpbgRi1y8Tgk27Bo2Ry7w0dC1NBeNTdZChWjz9Xb/KOoZbRP/R6pQZ80Qw8YhXw13hWWBbMRnQ==",
|
| 3973 |
+
"license": "(MPL-2.0 OR Apache-2.0)",
|
| 3974 |
+
"optionalDependencies": {
|
| 3975 |
+
"@types/trusted-types": "^2.0.7"
|
| 3976 |
+
}
|
| 3977 |
+
},
|
| 3978 |
"node_modules/dunder-proto": {
|
| 3979 |
"version": "1.0.1",
|
| 3980 |
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
|
|
| 3997 |
"dev": true,
|
| 3998 |
"license": "ISC"
|
| 3999 |
},
|
| 4000 |
+
"node_modules/elkjs": {
|
| 4001 |
+
"version": "0.9.3",
|
| 4002 |
+
"resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz",
|
| 4003 |
+
"integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==",
|
| 4004 |
+
"license": "EPL-2.0"
|
| 4005 |
+
},
|
| 4006 |
"node_modules/emoji-regex": {
|
| 4007 |
"version": "9.2.2",
|
| 4008 |
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
|
|
|
|
| 4223 |
"url": "https://github.com/sponsors/ljharb"
|
| 4224 |
}
|
| 4225 |
},
|
| 4226 |
+
"node_modules/es-toolkit": {
|
| 4227 |
+
"version": "1.52.0",
|
| 4228 |
+
"resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.52.0.tgz",
|
| 4229 |
+
"integrity": "sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==",
|
| 4230 |
+
"license": "MIT",
|
| 4231 |
+
"workspaces": [
|
| 4232 |
+
"docs",
|
| 4233 |
+
"benchmarks",
|
| 4234 |
+
"tests/types",
|
| 4235 |
+
"tests/browser-compat"
|
| 4236 |
+
]
|
| 4237 |
+
},
|
| 4238 |
"node_modules/escalade": {
|
| 4239 |
"version": "3.2.0",
|
| 4240 |
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
|
|
|
| 5026 |
"dev": true,
|
| 5027 |
"license": "ISC"
|
| 5028 |
},
|
| 5029 |
+
"node_modules/hachure-fill": {
|
| 5030 |
+
"version": "0.5.2",
|
| 5031 |
+
"resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz",
|
| 5032 |
+
"integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==",
|
| 5033 |
+
"license": "MIT"
|
| 5034 |
+
},
|
| 5035 |
"node_modules/has-bigints": {
|
| 5036 |
"version": "1.1.0",
|
| 5037 |
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
|
|
|
|
| 5143 |
"hermes-estree": "0.25.1"
|
| 5144 |
}
|
| 5145 |
},
|
| 5146 |
+
"node_modules/iconv-lite": {
|
| 5147 |
+
"version": "0.6.3",
|
| 5148 |
+
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
|
| 5149 |
+
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
|
| 5150 |
+
"license": "MIT",
|
| 5151 |
+
"dependencies": {
|
| 5152 |
+
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
| 5153 |
+
},
|
| 5154 |
+
"engines": {
|
| 5155 |
+
"node": ">=0.10.0"
|
| 5156 |
+
}
|
| 5157 |
+
},
|
| 5158 |
"node_modules/ignore": {
|
| 5159 |
"version": "5.3.2",
|
| 5160 |
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
|
|
|
|
| 5182 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 5183 |
}
|
| 5184 |
},
|
| 5185 |
+
"node_modules/import-meta-resolve": {
|
| 5186 |
+
"version": "4.2.0",
|
| 5187 |
+
"resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
|
| 5188 |
+
"integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
|
| 5189 |
+
"license": "MIT",
|
| 5190 |
+
"funding": {
|
| 5191 |
+
"type": "github",
|
| 5192 |
+
"url": "https://github.com/sponsors/wooorm"
|
| 5193 |
+
}
|
| 5194 |
+
},
|
| 5195 |
"node_modules/imurmurhash": {
|
| 5196 |
"version": "0.1.4",
|
| 5197 |
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
|
|
|
| 5217 |
"node": ">= 0.4"
|
| 5218 |
}
|
| 5219 |
},
|
| 5220 |
+
"node_modules/internmap": {
|
| 5221 |
+
"version": "2.0.3",
|
| 5222 |
+
"resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
|
| 5223 |
+
"integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
|
| 5224 |
+
"license": "ISC",
|
| 5225 |
+
"engines": {
|
| 5226 |
+
"node": ">=12"
|
| 5227 |
+
}
|
| 5228 |
+
},
|
| 5229 |
"node_modules/is-array-buffer": {
|
| 5230 |
"version": "3.0.5",
|
| 5231 |
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
|
|
|
|
| 5792 |
"node": ">=4.0"
|
| 5793 |
}
|
| 5794 |
},
|
| 5795 |
+
"node_modules/katex": {
|
| 5796 |
+
"version": "0.16.47",
|
| 5797 |
+
"resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz",
|
| 5798 |
+
"integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==",
|
| 5799 |
+
"funding": [
|
| 5800 |
+
"https://opencollective.com/katex",
|
| 5801 |
+
"https://github.com/sponsors/katex"
|
| 5802 |
+
],
|
| 5803 |
+
"license": "MIT",
|
| 5804 |
+
"dependencies": {
|
| 5805 |
+
"commander": "^8.3.0"
|
| 5806 |
+
},
|
| 5807 |
+
"bin": {
|
| 5808 |
+
"katex": "cli.js"
|
| 5809 |
+
}
|
| 5810 |
+
},
|
| 5811 |
+
"node_modules/katex/node_modules/commander": {
|
| 5812 |
+
"version": "8.3.0",
|
| 5813 |
+
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
|
| 5814 |
+
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
|
| 5815 |
+
"license": "MIT",
|
| 5816 |
+
"engines": {
|
| 5817 |
+
"node": ">= 12"
|
| 5818 |
+
}
|
| 5819 |
+
},
|
| 5820 |
"node_modules/keyv": {
|
| 5821 |
"version": "4.5.4",
|
| 5822 |
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
|
|
|
|
| 5827 |
"json-buffer": "3.0.1"
|
| 5828 |
}
|
| 5829 |
},
|
| 5830 |
+
"node_modules/khroma": {
|
| 5831 |
+
"version": "2.1.0",
|
| 5832 |
+
"resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz",
|
| 5833 |
+
"integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
|
| 5834 |
+
},
|
| 5835 |
"node_modules/language-subtag-registry": {
|
| 5836 |
"version": "0.3.23",
|
| 5837 |
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
|
|
|
|
| 5852 |
"node": ">=0.10"
|
| 5853 |
}
|
| 5854 |
},
|
| 5855 |
+
"node_modules/layout-base": {
|
| 5856 |
+
"version": "1.0.2",
|
| 5857 |
+
"resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz",
|
| 5858 |
+
"integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==",
|
| 5859 |
+
"license": "MIT"
|
| 5860 |
+
},
|
| 5861 |
"node_modules/levn": {
|
| 5862 |
"version": "0.4.1",
|
| 5863 |
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
|
|
|
| 6161 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 6162 |
}
|
| 6163 |
},
|
| 6164 |
+
"node_modules/lodash-es": {
|
| 6165 |
+
"version": "4.18.1",
|
| 6166 |
+
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
|
| 6167 |
+
"integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
|
| 6168 |
+
"license": "MIT"
|
| 6169 |
+
},
|
| 6170 |
"node_modules/lodash.merge": {
|
| 6171 |
"version": "4.6.2",
|
| 6172 |
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
|
|
|
| 6216 |
"@jridgewell/sourcemap-codec": "^1.5.5"
|
| 6217 |
}
|
| 6218 |
},
|
| 6219 |
+
"node_modules/marked": {
|
| 6220 |
+
"version": "16.4.2",
|
| 6221 |
+
"resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz",
|
| 6222 |
+
"integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==",
|
| 6223 |
+
"license": "MIT",
|
| 6224 |
+
"bin": {
|
| 6225 |
+
"marked": "bin/marked.js"
|
| 6226 |
+
},
|
| 6227 |
+
"engines": {
|
| 6228 |
+
"node": ">= 20"
|
| 6229 |
+
}
|
| 6230 |
+
},
|
| 6231 |
"node_modules/math-intrinsics": {
|
| 6232 |
"version": "1.1.0",
|
| 6233 |
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
|
|
|
| 6248 |
"node": ">= 8"
|
| 6249 |
}
|
| 6250 |
},
|
| 6251 |
+
"node_modules/mermaid": {
|
| 6252 |
+
"version": "12.1.0",
|
| 6253 |
+
"resolved": "https://registry.npmjs.org/mermaid/-/mermaid-12.1.0.tgz",
|
| 6254 |
+
"integrity": "sha512-wlVCp+8eTupfCeeFvoZNNiTuHrvag0P2jz/ILgb/f/6jkVokUefOcujefi8qUe/j2asHiSePncVsz/xzzA80LQ==",
|
| 6255 |
+
"license": "MIT",
|
| 6256 |
+
"dependencies": {
|
| 6257 |
+
"@braintree/sanitize-url": "^7.1.2",
|
| 6258 |
+
"@iconify/utils": "^3.0.2",
|
| 6259 |
+
"@mermaid-js/parser": "^2.0.1",
|
| 6260 |
+
"@types/d3": "^7.4.3",
|
| 6261 |
+
"@upsetjs/venn.js": "^2.0.0",
|
| 6262 |
+
"chevrotain": "~13.2.0",
|
| 6263 |
+
"cytoscape": "^3.34.0",
|
| 6264 |
+
"cytoscape-cose-bilkent": "^4.1.0",
|
| 6265 |
+
"cytoscape-fcose": "^2.2.0",
|
| 6266 |
+
"d3": "^7.9.0",
|
| 6267 |
+
"d3-sankey": "^0.12.3",
|
| 6268 |
+
"dagre-d3-es": "7.0.14",
|
| 6269 |
+
"dayjs": "^1.11.21",
|
| 6270 |
+
"dompurify": "^3.4.12",
|
| 6271 |
+
"elkjs": "^0.9.3",
|
| 6272 |
+
"es-toolkit": "^1.45.1",
|
| 6273 |
+
"katex": "^0.16.47",
|
| 6274 |
+
"khroma": "^2.1.0",
|
| 6275 |
+
"marked": "^16.3.0",
|
| 6276 |
+
"roughjs": "^4.6.6",
|
| 6277 |
+
"stylis": "^4.3.6",
|
| 6278 |
+
"ts-dedent": "^2.2.0",
|
| 6279 |
+
"uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0"
|
| 6280 |
+
},
|
| 6281 |
+
"engines": {
|
| 6282 |
+
"node": ">=22.12.0"
|
| 6283 |
+
}
|
| 6284 |
+
},
|
| 6285 |
"node_modules/micromatch": {
|
| 6286 |
"version": "4.0.8",
|
| 6287 |
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
|
|
|
| 6684 |
"url": "https://github.com/sponsors/sindresorhus"
|
| 6685 |
}
|
| 6686 |
},
|
| 6687 |
+
"node_modules/package-manager-detector": {
|
| 6688 |
+
"version": "1.9.0",
|
| 6689 |
+
"resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.9.0.tgz",
|
| 6690 |
+
"integrity": "sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==",
|
| 6691 |
+
"license": "MIT"
|
| 6692 |
+
},
|
| 6693 |
"node_modules/parent-module": {
|
| 6694 |
"version": "1.0.1",
|
| 6695 |
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
|
|
|
| 6703 |
"node": ">=6"
|
| 6704 |
}
|
| 6705 |
},
|
| 6706 |
+
"node_modules/path-data-parser": {
|
| 6707 |
+
"version": "0.1.0",
|
| 6708 |
+
"resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz",
|
| 6709 |
+
"integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==",
|
| 6710 |
+
"license": "MIT"
|
| 6711 |
+
},
|
| 6712 |
"node_modules/path-exists": {
|
| 6713 |
"version": "4.0.0",
|
| 6714 |
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
|
|
| 6755 |
"url": "https://github.com/sponsors/jonschlinkert"
|
| 6756 |
}
|
| 6757 |
},
|
| 6758 |
+
"node_modules/points-on-curve": {
|
| 6759 |
+
"version": "0.2.0",
|
| 6760 |
+
"resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz",
|
| 6761 |
+
"integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==",
|
| 6762 |
+
"license": "MIT"
|
| 6763 |
+
},
|
| 6764 |
+
"node_modules/points-on-path": {
|
| 6765 |
+
"version": "0.2.1",
|
| 6766 |
+
"resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz",
|
| 6767 |
+
"integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==",
|
| 6768 |
+
"license": "MIT",
|
| 6769 |
+
"dependencies": {
|
| 6770 |
+
"path-data-parser": "0.1.0",
|
| 6771 |
+
"points-on-curve": "0.2.0"
|
| 6772 |
+
}
|
| 6773 |
+
},
|
| 6774 |
"node_modules/possible-typed-array-names": {
|
| 6775 |
"version": "1.1.0",
|
| 6776 |
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
|
|
|
|
| 6990 |
"node": ">=0.10.0"
|
| 6991 |
}
|
| 6992 |
},
|
| 6993 |
+
"node_modules/robust-predicates": {
|
| 6994 |
+
"version": "3.0.3",
|
| 6995 |
+
"resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",
|
| 6996 |
+
"integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==",
|
| 6997 |
+
"license": "Unlicense"
|
| 6998 |
+
},
|
| 6999 |
+
"node_modules/roughjs": {
|
| 7000 |
+
"version": "4.6.6",
|
| 7001 |
+
"resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz",
|
| 7002 |
+
"integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==",
|
| 7003 |
+
"license": "MIT",
|
| 7004 |
+
"dependencies": {
|
| 7005 |
+
"hachure-fill": "^0.5.2",
|
| 7006 |
+
"path-data-parser": "^0.1.0",
|
| 7007 |
+
"points-on-curve": "^0.2.0",
|
| 7008 |
+
"points-on-path": "^0.2.1"
|
| 7009 |
+
}
|
| 7010 |
+
},
|
| 7011 |
"node_modules/run-parallel": {
|
| 7012 |
"version": "1.2.0",
|
| 7013 |
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
|
|
|
| 7032 |
"queue-microtask": "^1.2.2"
|
| 7033 |
}
|
| 7034 |
},
|
| 7035 |
+
"node_modules/rw": {
|
| 7036 |
+
"version": "1.3.3",
|
| 7037 |
+
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
|
| 7038 |
+
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
|
| 7039 |
+
"license": "BSD-3-Clause"
|
| 7040 |
+
},
|
| 7041 |
"node_modules/safe-array-concat": {
|
| 7042 |
"version": "1.1.4",
|
| 7043 |
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz",
|
|
|
|
| 7093 |
"url": "https://github.com/sponsors/ljharb"
|
| 7094 |
}
|
| 7095 |
},
|
| 7096 |
+
"node_modules/safer-buffer": {
|
| 7097 |
+
"version": "2.1.2",
|
| 7098 |
+
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
| 7099 |
+
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
| 7100 |
+
"license": "MIT"
|
| 7101 |
+
},
|
| 7102 |
"node_modules/scheduler": {
|
| 7103 |
"version": "0.27.0",
|
| 7104 |
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
|
|
|
|
| 7516 |
}
|
| 7517 |
}
|
| 7518 |
},
|
| 7519 |
+
"node_modules/stylis": {
|
| 7520 |
+
"version": "4.4.0",
|
| 7521 |
+
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz",
|
| 7522 |
+
"integrity": "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==",
|
| 7523 |
+
"license": "MIT"
|
| 7524 |
+
},
|
| 7525 |
"node_modules/supports-color": {
|
| 7526 |
"version": "7.2.0",
|
| 7527 |
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
|
|
|
| 7569 |
"url": "https://opencollective.com/webpack"
|
| 7570 |
}
|
| 7571 |
},
|
| 7572 |
+
"node_modules/tinyexec": {
|
| 7573 |
+
"version": "1.3.1",
|
| 7574 |
+
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz",
|
| 7575 |
+
"integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==",
|
| 7576 |
+
"license": "MIT",
|
| 7577 |
+
"engines": {
|
| 7578 |
+
"node": ">=18"
|
| 7579 |
+
}
|
| 7580 |
+
},
|
| 7581 |
"node_modules/tinyglobby": {
|
| 7582 |
"version": "0.2.17",
|
| 7583 |
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
|
|
|
|
| 7652 |
"typescript": ">=4.8.4"
|
| 7653 |
}
|
| 7654 |
},
|
| 7655 |
+
"node_modules/ts-dedent": {
|
| 7656 |
+
"version": "2.3.0",
|
| 7657 |
+
"resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.3.0.tgz",
|
| 7658 |
+
"integrity": "sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==",
|
| 7659 |
+
"license": "MIT",
|
| 7660 |
+
"engines": {
|
| 7661 |
+
"node": ">=6.10"
|
| 7662 |
+
}
|
| 7663 |
+
},
|
| 7664 |
"node_modules/tsconfig-paths": {
|
| 7665 |
"version": "3.15.0",
|
| 7666 |
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
|
|
|
|
| 7926 |
"punycode": "^2.1.0"
|
| 7927 |
}
|
| 7928 |
},
|
| 7929 |
+
"node_modules/uuid": {
|
| 7930 |
+
"version": "14.0.2",
|
| 7931 |
+
"resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.2.tgz",
|
| 7932 |
+
"integrity": "sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==",
|
| 7933 |
+
"funding": [
|
| 7934 |
+
"https://github.com/sponsors/broofa",
|
| 7935 |
+
"https://github.com/sponsors/ctavan"
|
| 7936 |
+
],
|
| 7937 |
+
"license": "MIT",
|
| 7938 |
+
"bin": {
|
| 7939 |
+
"uuid": "dist-node/bin/uuid"
|
| 7940 |
+
}
|
| 7941 |
+
},
|
| 7942 |
"node_modules/which": {
|
| 7943 |
"version": "2.0.2",
|
| 7944 |
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
frontend/package.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
| 11 |
"dependencies": {
|
| 12 |
"framer-motion": "^13.4.4",
|
| 13 |
"lucide-react": "^1.48.0",
|
|
|
|
| 14 |
"next": "16.3.6",
|
| 15 |
"react": "19.2.8",
|
| 16 |
"react-dom": "19.2.8"
|
|
|
|
| 11 |
"dependencies": {
|
| 12 |
"framer-motion": "^13.4.4",
|
| 13 |
"lucide-react": "^1.48.0",
|
| 14 |
+
"mermaid": "^12.1.0",
|
| 15 |
"next": "16.3.6",
|
| 16 |
"react": "19.2.8",
|
| 17 |
"react-dom": "19.2.8"
|
frontend/src/app/architecture/page.tsx
CHANGED
|
@@ -1,6 +1,113 @@
|
|
| 1 |
"use client";
|
| 2 |
|
| 3 |
import { motion } from "framer-motion";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
const easeFluid: [number, number, number, number] = [0.16, 1, 0.3, 1];
|
| 6 |
|
|
@@ -169,6 +276,15 @@ export default function Architecture() {
|
|
| 169 |
</div>
|
| 170 |
|
| 171 |
</motion.div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 172 |
</div>
|
| 173 |
</main>
|
| 174 |
);
|
|
|
|
| 1 |
"use client";
|
| 2 |
|
| 3 |
import { motion } from "framer-motion";
|
| 4 |
+
import Mermaid from "@/components/Mermaid";
|
| 5 |
+
|
| 6 |
+
const flowchartData = `
|
| 7 |
+
%% Generated by https://gitdiagram.com/idkhowtocodefr/heartflow_os
|
| 8 |
+
flowchart TD
|
| 9 |
+
|
| 10 |
+
subgraph group_client["Telemetry interface (Next.js)"]
|
| 11 |
+
node_dashboard["Live dashboard<br/>[page.tsx]"]
|
| 12 |
+
node_telemetry_context["Telemetry context"]
|
| 13 |
+
node_history_ui["History view<br/>[page.tsx]"]
|
| 14 |
+
node_analytics["Analytics view<br/>[page.tsx]"]
|
| 15 |
+
node_simulator_ui["Simulator view<br/>[page.tsx]"]
|
| 16 |
+
node_mlops_ui["MLOps view<br/>[page.tsx]"]
|
| 17 |
+
node_edge_ui["Edge export view<br/>[page.tsx]"]
|
| 18 |
+
node_architecture_ui["Architecture view<br/>[page.tsx]"]
|
| 19 |
+
node_shap_chart["SHAP chart<br/>[ShapChart.tsx]"]
|
| 20 |
+
end
|
| 21 |
+
|
| 22 |
+
subgraph group_api["API orchestration (FastAPI)"]
|
| 23 |
+
node_api["FastAPI routes<br/>[main.py]"]
|
| 24 |
+
node_simulator["Vitals simulator<br/>[simulator.py]"]
|
| 25 |
+
end
|
| 26 |
+
|
| 27 |
+
subgraph group_ml["Prediction and MLOps"]
|
| 28 |
+
node_inference["Inference pipeline<br/>[inference.py]"]
|
| 29 |
+
node_preprocessing["Feature preprocessing<br/>[preprocessing.py]"]
|
| 30 |
+
node_ensemble["Soft-voting ensemble<br/>[ensemble.py]"]
|
| 31 |
+
node_training["Model training<br/>[models.py]"]
|
| 32 |
+
node_export["C code exporter<br/>[export.py]"]
|
| 33 |
+
node_model_files["Trained model files"]
|
| 34 |
+
node_dataset["Patient dataset"]
|
| 35 |
+
end
|
| 36 |
+
|
| 37 |
+
subgraph group_state["Persistence and sync"]
|
| 38 |
+
node_database[("Prediction history<br/>[database.py]")]
|
| 39 |
+
node_sqlite[("SQLite history store<br/>[patient_history.db]")]
|
| 40 |
+
end
|
| 41 |
+
|
| 42 |
+
node_clinician(("Clinical user"))
|
| 43 |
+
node_hub["Hugging Face Hub"]
|
| 44 |
+
|
| 45 |
+
node_clinician -.->|"monitors"| node_dashboard
|
| 46 |
+
node_clinician -.->|"reviews"| node_history_ui
|
| 47 |
+
node_clinician -.->|"explores"| node_analytics
|
| 48 |
+
node_clinician -.->|"uses"| node_simulator_ui
|
| 49 |
+
node_clinician -.->|"manages"| node_mlops_ui
|
| 50 |
+
node_clinician -.->|"exports"| node_edge_ui
|
| 51 |
+
node_clinician -.->|"views"| node_architecture_ui
|
| 52 |
+
node_dashboard -->|"uses"| node_telemetry_context
|
| 53 |
+
node_clinician -.->|"submits vitals"| node_api
|
| 54 |
+
node_dashboard -.->|"streams telemetry"| node_api
|
| 55 |
+
node_history_ui -.->|"requests history"| node_api
|
| 56 |
+
node_analytics -.->|"requests data"| node_api
|
| 57 |
+
node_mlops_ui -.->|"uploads retraining data"| node_api
|
| 58 |
+
node_edge_ui -.->|"requests C export"| node_api
|
| 59 |
+
node_api -->|"initializes and queries"| node_database
|
| 60 |
+
node_api -->|"streams generated vitals"| node_simulator
|
| 61 |
+
node_api -->|"evaluates vitals"| node_inference
|
| 62 |
+
node_api -->|"prepares explanations"| node_preprocessing
|
| 63 |
+
node_api -->|"generates C code"| node_export
|
| 64 |
+
node_api -->|"loads and refreshes"| node_ensemble
|
| 65 |
+
node_api -->|"starts background retraining"| node_training
|
| 66 |
+
node_inference -->|"transforms features"| node_preprocessing
|
| 67 |
+
node_inference -.->|"predicts probabilities"| node_ensemble
|
| 68 |
+
node_ensemble -->|"resolves model directory"| node_preprocessing
|
| 69 |
+
node_training -->|"splits and transforms data"| node_preprocessing
|
| 70 |
+
node_training -->|"reads training data"| node_dataset
|
| 71 |
+
node_training -->|"writes trained models"| node_model_files
|
| 72 |
+
node_ensemble -->|"loads model artifacts"| node_model_files
|
| 73 |
+
node_database -->|"reads and writes"| node_sqlite
|
| 74 |
+
node_database -->|"syncs history"| node_hub
|
| 75 |
+
|
| 76 |
+
click node_dashboard "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/dashboard/page.tsx"
|
| 77 |
+
click node_telemetry_context "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/context/TelemetryContext.tsx"
|
| 78 |
+
click node_history_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/history/page.tsx"
|
| 79 |
+
click node_analytics "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/analytics/page.tsx"
|
| 80 |
+
click node_simulator_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/simulator/page.tsx"
|
| 81 |
+
click node_mlops_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/mlops/page.tsx"
|
| 82 |
+
click node_edge_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/edge/page.tsx"
|
| 83 |
+
click node_architecture_ui "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/app/architecture/page.tsx"
|
| 84 |
+
click node_shap_chart "https://github.com/idkhowtocodefr/heartflow_os/blob/main/frontend/src/components/ShapChart.tsx"
|
| 85 |
+
click node_api "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/main.py"
|
| 86 |
+
click node_simulator "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/simulator.py"
|
| 87 |
+
click node_inference "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/inference.py"
|
| 88 |
+
click node_preprocessing "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/preprocessing.py"
|
| 89 |
+
click node_ensemble "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/ensemble.py"
|
| 90 |
+
click node_training "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/models.py"
|
| 91 |
+
click node_export "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/export.py"
|
| 92 |
+
click node_model_files "https://github.com/idkhowtocodefr/heartflow_os/tree/main/model"
|
| 93 |
+
click node_dataset "https://github.com/idkhowtocodefr/heartflow_os/blob/main/data/patient_dataset.csv"
|
| 94 |
+
click node_database "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/database.py"
|
| 95 |
+
click node_sqlite "https://github.com/idkhowtocodefr/heartflow_os/blob/main/backend/patient_history.db"
|
| 96 |
+
|
| 97 |
+
classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
|
| 98 |
+
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
|
| 99 |
+
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
|
| 100 |
+
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
|
| 101 |
+
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
|
| 102 |
+
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
|
| 103 |
+
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
|
| 104 |
+
|
| 105 |
+
class node_dashboard,node_telemetry_context,node_history_ui,node_analytics,node_simulator_ui,node_mlops_ui,node_edge_ui,node_architecture_ui,node_shap_chart,node_clinician toneBlue
|
| 106 |
+
class node_api,node_simulator toneAmber
|
| 107 |
+
class node_inference,node_preprocessing,node_ensemble,node_training,node_export,node_model_files,node_dataset toneMint
|
| 108 |
+
class node_database,node_sqlite toneRose
|
| 109 |
+
class node_hub toneIndigo
|
| 110 |
+
`;
|
| 111 |
|
| 112 |
const easeFluid: [number, number, number, number] = [0.16, 1, 0.3, 1];
|
| 113 |
|
|
|
|
| 276 |
</div>
|
| 277 |
|
| 278 |
</motion.div>
|
| 279 |
+
|
| 280 |
+
{/* FLOWCHART */}
|
| 281 |
+
<motion.div initial="hidden" animate="show" variants={fadeUp} className="w-full flex flex-col gap-8 mb-16">
|
| 282 |
+
<div>
|
| 283 |
+
<div className="text-[10px] text-hazard font-bold tracking-[0.15em] mb-2 uppercase">CHART_01</div>
|
| 284 |
+
<h2 className="text-[24px] font-sans font-black tracking-[-0.02em] uppercase text-ink leading-tight">SYSTEM TOPOLOGY GRAPH</h2>
|
| 285 |
+
</div>
|
| 286 |
+
<Mermaid chart={flowchartData} />
|
| 287 |
+
</motion.div>
|
| 288 |
</div>
|
| 289 |
</main>
|
| 290 |
);
|
frontend/src/components/Mermaid.tsx
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"use client";
|
| 2 |
+
|
| 3 |
+
import React, { useEffect, useState } from "react";
|
| 4 |
+
|
| 5 |
+
export default function Mermaid({ chart }: { chart: string }) {
|
| 6 |
+
const [svgContent, setSvgContent] = useState<string>("");
|
| 7 |
+
|
| 8 |
+
useEffect(() => {
|
| 9 |
+
const renderChart = async () => {
|
| 10 |
+
try {
|
| 11 |
+
const mermaid = (await import("mermaid")).default;
|
| 12 |
+
mermaid.initialize({
|
| 13 |
+
startOnLoad: false,
|
| 14 |
+
theme: "base",
|
| 15 |
+
themeVariables: {
|
| 16 |
+
fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",
|
| 17 |
+
},
|
| 18 |
+
});
|
| 19 |
+
const { svg } = await mermaid.render("mermaid-svg-" + Math.random().toString(36).substring(7), chart);
|
| 20 |
+
setSvgContent(svg);
|
| 21 |
+
} catch (e) {
|
| 22 |
+
console.error("Mermaid parsing error", e);
|
| 23 |
+
}
|
| 24 |
+
};
|
| 25 |
+
renderChart();
|
| 26 |
+
}, [chart]);
|
| 27 |
+
|
| 28 |
+
return (
|
| 29 |
+
<div
|
| 30 |
+
className="w-full overflow-x-auto p-8 bg-canvas-cream border-4 border-ink flex justify-center items-center [&_svg]:max-w-full [&_svg]:h-auto"
|
| 31 |
+
dangerouslySetInnerHTML={{ __html: svgContent }}
|
| 32 |
+
/>
|
| 33 |
+
);
|
| 34 |
+
}
|