362 ability to have binaries sent to virus total andor joesandboxcom (#464)
* Add VirusTotal file submission and analysis endpoints with corresponding schemas * chore: update frontend dependencies * feat: added virus total form * lint * precommit fixes --------- Co-authored-by: Davide Di Modica <webmaster.ddm@gmail.com>
taylor_socfortress committed
Jun 30, 2025 at 08:58 UTC
7cb287054d92c436f2d4272d1ed907bc47b36917
10 files changed
+1693
-871
backend/app/threat_intel/routes/socfortress.py
+199
@@ -2,8 +2,11 @@ from datetime import datetime
2
3
from fastapi import APIRouter
4
from fastapi import Depends
5
+from fastapi import File
6
+from fastapi import Form
7
from fastapi import HTTPException
8
from fastapi import Security
9
+from fastapi import UploadFile
10
from loguru import logger
11
from sqlalchemy.ext.asyncio import AsyncSession
12
@@ -33,6 +36,10 @@ from app.threat_intel.schema.socfortress import (
36
VelociraptorArtifactRecommendationResponse,
37
)
38
from app.threat_intel.schema.socfortress import VirusTotalThreatIntelRequest
39
+from app.threat_intel.schema.virustotal import FileAnalysisResponse
40
+from app.threat_intel.schema.virustotal import FileReportResponse
41
+from app.threat_intel.schema.virustotal import FileSubmissionRequest
42
+from app.threat_intel.schema.virustotal import FileSubmissionResponse
43
from app.threat_intel.schema.virustotal import VirusTotalRouteResponse
44
from app.threat_intel.services.socfortress import invoke_virustotal_api
45
from app.threat_intel.services.socfortress import socfortress_ai_alert_lookup
@@ -44,6 +51,10 @@ from app.threat_intel.services.socfortress import (
51
from app.threat_intel.services.socfortress import (
52
socfortress_wazuh_exclusion_rule_lookup,
53
)
54
+from app.threat_intel.services.virustotal_file import get_file_analysis_status
55
+from app.threat_intel.services.virustotal_file import get_file_report
56
+from app.threat_intel.services.virustotal_file import submit_and_wait_for_analysis
57
+from app.threat_intel.services.virustotal_file import submit_file_to_virustotal
58
from app.utils import get_connector_attribute
59
60
# App specific imports
@@ -79,6 +90,51 @@ async def ensure_api_key_exists(session: AsyncSession = Depends(get_db)) -> bool
90
return True
91
92
93
+async def ensure_virustotal_connector(session: AsyncSession = Depends(get_db)) -> dict:
94
+ """
95
+ Ensures that the VirusTotal connector is properly configured.
96
+
97
+ Args:
98
+ session (AsyncSession): The database session dependency
99
+
100
+ Returns:
101
+ dict: Dictionary containing API key and URL
102
+
103
+ Raises:
104
+ HTTPException: If connector is not configured or verified
105
+ """
106
+ # Check if the connector is verified
107
+ if not await get_connector_attribute(
108
+ connector_name="VirusTotal",
109
+ column_name="connector_verified",
110
+ session=session,
111
+ ):
112
+ raise HTTPException(
113
+ status_code=500,
114
+ detail="VirusTotal connector is not verified.",
115
+ )
116
+
117
+ api_key = await get_connector_attribute(
118
+ connector_name="VirusTotal",
119
+ column_name="connector_api_key",
120
+ session=session,
121
+ )
122
+
123
+ url = await get_connector_attribute(
124
+ connector_name="VirusTotal",
125
+ column_name="connector_url",
126
+ session=session,
127
+ )
128
+
129
+ if not api_key:
130
+ raise HTTPException(
131
+ status_code=500,
132
+ detail="VirusTotal API key not found in the database.",
133
+ )
134
+
135
+ return {"api_key": api_key, "url": url}
136
+
137
+
138
@threat_intel_socfortress_router.post(
139
"/socfortress",
140
response_model=IoCResponse,
@@ -169,6 +225,149 @@ async def threat_intel_virustotal(
225
)
226
227
228
+@threat_intel_socfortress_router.post(
229
+ "/virustotal/file/submit",
230
+ response_model=FileSubmissionResponse,
231
+ description="Submit a file to VirusTotal for analysis",
232
+ dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
233
+)
234
+async def submit_file_for_analysis(
235
+ file: UploadFile = File(..., description="File to analyze (max 32MB for free API)"),
236
+ password: str = Form(None, description="Password for encrypted files"),
237
+ vt_config: dict = Depends(ensure_virustotal_connector),
238
+):
239
+ """
240
+ Submit a file to VirusTotal for malware analysis.
241
+
242
+ This endpoint allows authorized users to upload files for analysis.
243
+ The file will be submitted to VirusTotal and an analysis ID will be returned.
244
+
245
+ Parameters:
246
+ - file: UploadFile - The file to be analyzed
247
+ - password: str (optional) - Password for encrypted files
248
+ - vt_config: dict - VirusTotal connector configuration (injected dependency)
249
+
250
+ Returns:
251
+ - FileSubmissionResponse: Contains the analysis ID for tracking
252
+ """
253
+ logger.info(f"Submitting file {file.filename} to VirusTotal for analysis")
254
+
255
+ # Validate file size (32MB limit for free API)
256
+ if file.size and file.size > 32 * 1024 * 1024: # 32MB
257
+ raise HTTPException(status_code=413, detail="File too large. Maximum file size is 32MB for free API keys.")
258
+
259
+ # Create request object
260
+ request = FileSubmissionRequest(password=password)
261
+
262
+ # Submit the file
263
+ return await submit_file_to_virustotal(api_key=vt_config["api_key"], file=file, request=request)
264
+
265
+
266
+@threat_intel_socfortress_router.get(
267
+ "/virustotal/analysis/{analysis_id}",
268
+ response_model=FileAnalysisResponse,
269
+ description="Get the status of a file analysis",
270
+ dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
271
+)
272
+async def get_analysis_status(
273
+ analysis_id: str,
274
+ vt_config: dict = Depends(ensure_virustotal_connector),
275
+):
276
+ """
277
+ Get the current status of a file analysis.
278
+
279
+ Parameters:
280
+ - analysis_id: str - The analysis ID returned from file submission
281
+ - vt_config: dict - VirusTotal connector configuration (injected dependency)
282
+
283
+ Returns:
284
+ - FileAnalysisResponse: Current analysis status and results
285
+ """
286
+ logger.info(f"Getting analysis status for ID: {analysis_id}")
287
+
288
+ return await get_file_analysis_status(api_key=vt_config["api_key"], analysis_id=analysis_id)
289
+
290
+
291
+@threat_intel_socfortress_router.get(
292
+ "/virustotal/file/{file_id}",
293
+ response_model=FileReportResponse,
294
+ description="Get detailed analysis report for a file",
295
+ dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
296
+)
297
+async def get_file_analysis_report(
298
+ file_id: str,
299
+ vt_config: dict = Depends(ensure_virustotal_connector),
300
+):
301
+ """
302
+ Get the detailed analysis report for a file.
303
+
304
+ Parameters:
305
+ - file_id: str - The file ID (hash) to get the report for
306
+ - vt_config: dict - VirusTotal connector configuration (injected dependency)
307
+
308
+ Returns:
309
+ - FileReportResponse: Detailed analysis report
310
+ """
311
+ logger.info(f"Getting file report for ID: {file_id}")
312
+
313
+ return await get_file_report(api_key=vt_config["api_key"], file_id=file_id)
314
+
315
+
316
+@threat_intel_socfortress_router.post(
317
+ "/virustotal/file/analyze",
318
+ response_model=FileReportResponse,
319
+ description="Submit a file and wait for analysis completion",
320
+ dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
321
+)
322
+async def analyze_file_complete(
323
+ file: UploadFile = File(..., description="File to analyze (max 32MB for free API)"),
324
+ password: str = Form(None, description="Password for encrypted files"),
325
+ max_wait_time: int = Form(300, description="Maximum wait time in seconds (default: 300)"),
326
+ poll_interval: int = Form(10, description="Polling interval in seconds (default: 10)"),
327
+ vt_config: dict = Depends(ensure_virustotal_connector),
328
+):
329
+ """
330
+ Submit a file to VirusTotal and wait for the analysis to complete.
331
+
332
+ This endpoint combines file submission and result retrieval into a single call.
333
+ It will wait for the analysis to complete before returning the results.
334
+
335
+ Parameters:
336
+ - file: UploadFile - The file to be analyzed
337
+ - password: str (optional) - Password for encrypted files
338
+ - max_wait_time: int - Maximum time to wait for analysis completion (seconds)
339
+ - poll_interval: int - Time between status checks (seconds)
340
+ - vt_config: dict - VirusTotal connector configuration (injected dependency)
341
+
342
+ Returns:
343
+ - FileReportResponse: Complete analysis report
344
+ """
345
+ logger.info(f"Starting complete analysis for file {file.filename}")
346
+
347
+ # Validate file size
348
+ if file.size and file.size > 32 * 1024 * 1024: # 32MB
349
+ raise HTTPException(status_code=413, detail="File too large. Maximum file size is 32MB for free API keys.")
350
+
351
+ # Validate wait time parameters
352
+ if max_wait_time < 30 or max_wait_time > 600: # 30 seconds to 10 minutes
353
+ raise HTTPException(status_code=400, detail="max_wait_time must be between 30 and 600 seconds")
354
+
355
+ if poll_interval < 5 or poll_interval > 60: # 5 seconds to 1 minute
356
+ raise HTTPException(status_code=400, detail="poll_interval must be between 5 and 60 seconds")
357
+
358
+ # Create request object
359
+ request = FileSubmissionRequest(password=password)
360
+
361
+ # Submit and wait for analysis
362
+ return await submit_and_wait_for_analysis(
363
+ api_key=vt_config["api_key"],
364
+ file=file,
365
+ request=request,
366
+ max_wait_time=max_wait_time,
367
+ poll_interval=poll_interval,
368
+ )
369
+
370
+
371
@threat_intel_socfortress_router.post(
372
"/process_name",
373
response_model=SocfortressProcessNameAnalysisResponse,
backend/app/threat_intel/schema/virustotal.py
+105
@@ -77,3 +77,108 @@ class VirusTotalRouteResponse(BaseModel):
77
data: VirusTotalResponse
78
success: bool
79
message: str
80
+
81
+
82
+# New schemas for file submission
83
+class FileSubmissionRequest(BaseModel):
84
+ password: Optional[str] = Field(default=None, description="Password for encrypted files")
85
+
86
+ class Config:
87
+ extra = Extra.allow
88
+
89
+
90
+class FileSubmissionData(BaseModel):
91
+ type: str
92
+ id: str
93
+
94
+ class Config:
95
+ extra = Extra.allow
96
+
97
+
98
+class FileSubmissionResponse(BaseModel):
99
+ data: FileSubmissionData
100
+ success: bool
101
+ message: str
102
+
103
+ class Config:
104
+ extra = Extra.allow
105
+
106
+
107
+class FileAnalysisStats(BaseModel):
108
+ harmless: int = 0
109
+ malicious: int = 0
110
+ suspicious: int = 0
111
+ undetected: int = 0
112
+ timeout: int = 0
113
+ confirmed_timeout: int = 0
114
+ failure: int = 0
115
+ type_unsupported: int = 0
116
+
117
+ class Config:
118
+ extra = Extra.allow
119
+
120
+
121
+class FileAnalysisAttributes(BaseModel):
122
+ date: int
123
+ status: str
124
+ stats: FileAnalysisStats
125
+
126
+ class Config:
127
+ extra = Extra.allow
128
+
129
+
130
+class FileAnalysisData(BaseModel):
131
+ type: str
132
+ id: str
133
+ attributes: FileAnalysisAttributes
134
+
135
+ class Config:
136
+ extra = Extra.allow
137
+
138
+
139
+class FileAnalysisResponse(BaseModel):
140
+ data: FileAnalysisData
141
+ success: bool
142
+ message: str
143
+
144
+ class Config:
145
+ extra = Extra.allow
146
+
147
+
148
+class FileReportAttributes(BaseModel):
149
+ md5: Optional[str] = None
150
+ sha1: Optional[str] = None
151
+ sha256: Optional[str] = None
152
+ size: Optional[int] = None
153
+ type_description: Optional[str] = None
154
+ type_tag: Optional[str] = None
155
+ creation_date: Optional[int] = None
156
+ first_submission_date: Optional[int] = None
157
+ last_submission_date: Optional[int] = None
158
+ last_analysis_date: Optional[int] = None
159
+ last_analysis_stats: Optional[FileAnalysisStats] = None
160
+ last_analysis_results: Optional[Dict[str, AnalysisResult]] = None
161
+ reputation: Optional[int] = None
162
+ times_submitted: Optional[int] = None
163
+ total_votes: Optional[TotalVotes] = None
164
+
165
+ class Config:
166
+ extra = Extra.allow
167
+
168
+
169
+class FileReportData(BaseModel):
170
+ type: str
171
+ id: str
172
+ attributes: FileReportAttributes
173
+
174
+ class Config:
175
+ extra = Extra.allow
176
+
177
+
178
+class FileReportResponse(BaseModel):
179
+ data: FileReportData
180
+ success: bool
181
+ message: str
182
+
183
+ class Config:
184
+ extra = Extra.allow
backend/app/threat_intel/services/virustotal_file.py
new
+243
@@ -0,0 +1,243 @@
1
+import asyncio
2
+
3
+import httpx
4
+from fastapi import HTTPException
5
+from fastapi import UploadFile
6
+from loguru import logger
7
+
8
+from app.threat_intel.schema.virustotal import FileAnalysisResponse
9
+from app.threat_intel.schema.virustotal import FileReportResponse
10
+from app.threat_intel.schema.virustotal import FileSubmissionRequest
11
+from app.threat_intel.schema.virustotal import FileSubmissionResponse
12
+
13
+
14
+async def submit_file_to_virustotal(
15
+ api_key: str,
16
+ file: UploadFile,
17
+ request: FileSubmissionRequest,
18
+) -> FileSubmissionResponse:
19
+ """
20
+ Submit a file to VirusTotal for analysis.
21
+
22
+ Args:
23
+ api_key (str): The VirusTotal API key
24
+ file (UploadFile): The file to be analyzed
25
+ request (FileSubmissionRequest): Additional parameters for submission
26
+
27
+ Returns:
28
+ FileSubmissionResponse: Response containing submission ID
29
+
30
+ Raises:
31
+ HTTPException: If the submission fails
32
+ """
33
+ url = "https://www.virustotal.com/api/v3/files"
34
+
35
+ # Headers - exactly match the working example
36
+ headers = {"accept": "application/json", "x-apikey": api_key}
37
+
38
+ # Prepare the file for upload
39
+ file_content = await file.read()
40
+
41
+ # Reset file pointer for potential reuse
42
+ await file.seek(0)
43
+
44
+ # Prepare the files dictionary - exactly match the working pattern
45
+ files = {"file": (file.filename, file_content, "application/octet-stream")}
46
+
47
+ # Prepare form data if password is provided
48
+ data = {}
49
+ if request.password:
50
+ data["password"] = request.password
51
+
52
+ logger.info(f"Submitting file {file.filename} to VirusTotal (size: {len(file_content)} bytes)")
53
+
54
+ try:
55
+ async with httpx.AsyncClient(timeout=300.0) as client: # 5 minute timeout for file uploads
56
+ response = await client.post(url, headers=headers, files=files, data=data if data else None)
57
+
58
+ # Log the actual request headers for debugging
59
+ logger.info(f"Request headers sent: {response.request.headers}")
60
+ logger.info(f"Response status: {response.status_code}")
61
+
62
+ response.raise_for_status()
63
+ response_data = response.json()
64
+
65
+ return FileSubmissionResponse(
66
+ data=response_data["data"],
67
+ success=True,
68
+ message=f"File {file.filename} submitted successfully for analysis",
69
+ )
70
+
71
+ except httpx.HTTPStatusError as e:
72
+ logger.error(f"HTTP error submitting file to VirusTotal: {e.response.status_code} - {e.response.text}")
73
+
74
+ # Parse the error response to provide better error messages
75
+ try:
76
+ error_data = e.response.json()
77
+ error_message = error_data.get("error", {}).get("message", str(e.response.text))
78
+ except (ValueError, KeyError):
79
+ error_message = str(e.response.text)
80
+
81
+ if e.response.status_code == 400:
82
+ # Handle specific 400 errors
83
+ if "Invalid zip file" in error_message:
84
+ raise HTTPException(
85
+ status_code=400,
86
+ detail="File format not supported or corrupted. VirusTotal accepts executables, documents, archives, and other common file types.",
87
+ )
88
+ elif "File too large" in error_message:
89
+ raise HTTPException(
90
+ status_code=413,
91
+ detail="File too large. Maximum file size is 32MB for free API keys, 650MB for premium.",
92
+ )
93
+ elif "missing" in error_message.lower():
94
+ raise HTTPException(
95
+ status_code=400,
96
+ detail="File upload failed. Please ensure the file is properly formatted and try again.",
97
+ )
98
+ else:
99
+ raise HTTPException(status_code=400, detail=f"Bad request: {error_message}")
100
+ elif e.response.status_code == 429:
101
+ raise HTTPException(status_code=429, detail="Rate limit exceeded. Please try again later.")
102
+ elif e.response.status_code == 413:
103
+ raise HTTPException(status_code=413, detail="File too large. Maximum file size is 32MB for free API keys.")
104
+ else:
105
+ raise HTTPException(status_code=e.response.status_code, detail=f"Failed to submit file: {error_message}")
106
+ except httpx.RequestError as e:
107
+ logger.error(f"Request error submitting file to VirusTotal: {e}")
108
+ raise HTTPException(status_code=500, detail=f"Network error occurred: {str(e)}")
109
+ except Exception as e:
110
+ logger.error(f"Unexpected error submitting file to VirusTotal: {e}")
111
+ raise HTTPException(status_code=500, detail=f"Unexpected error occurred: {str(e)}")
112
+
113
+
114
+async def get_file_analysis_status(
115
+ api_key: str,
116
+ analysis_id: str,
117
+) -> FileAnalysisResponse:
118
+ """
119
+ Get the status of a file analysis.
120
+
121
+ Args:
122
+ api_key (str): The VirusTotal API key
123
+ analysis_id (str): The analysis ID returned from file submission
124
+
125
+ Returns:
126
+ FileAnalysisResponse: Current analysis status
127
+
128
+ Raises:
129
+ HTTPException: If the request fails
130
+ """
131
+ url = f"https://www.virustotal.com/api/v3/analyses/{analysis_id}"
132
+ headers = {"x-apikey": api_key}
133
+
134
+ logger.info(f"Checking analysis status for ID: {analysis_id}")
135
+
136
+ try:
137
+ async with httpx.AsyncClient(timeout=30.0) as client:
138
+ response = await client.get(url, headers=headers)
139
+ response.raise_for_status()
140
+ response_data = response.json()
141
+
142
+ return FileAnalysisResponse(data=response_data["data"], success=True, message="Analysis status retrieved successfully")
143
+
144
+ except httpx.HTTPStatusError as e:
145
+ logger.error(f"HTTP error getting analysis status: {e.response.status_code} - {e.response.text}")
146
+ raise HTTPException(status_code=e.response.status_code, detail=f"Failed to get analysis status: {e.response.text}")
147
+ except httpx.RequestError as e:
148
+ logger.error(f"Request error getting analysis status: {e}")
149
+ raise HTTPException(status_code=500, detail=f"Network error occurred: {str(e)}")
150
+
151
+
152
+async def get_file_report(
153
+ api_key: str,
154
+ file_id: str,
155
+) -> FileReportResponse:
156
+ """
157
+ Get the detailed analysis report for a file.
158
+
159
+ Args:
160
+ api_key (str): The VirusTotal API key
161
+ file_id (str): The file ID (hash) to get report for
162
+
163
+ Returns:
164
+ FileReportResponse: Detailed analysis report
165
+
166
+ Raises:
167
+ HTTPException: If the request fails
168
+ """
169
+ url = f"https://www.virustotal.com/api/v3/files/{file_id}"
170
+ headers = {"x-apikey": api_key}
171
+
172
+ logger.info(f"Getting file report for ID: {file_id}")
173
+
174
+ try:
175
+ async with httpx.AsyncClient(timeout=30.0) as client:
176
+ response = await client.get(url, headers=headers)
177
+ response.raise_for_status()
178
+ response_data = response.json()
179
+
180
+ return FileReportResponse(data=response_data["data"], success=True, message="File report retrieved successfully")
181
+
182
+ except httpx.HTTPStatusError as e:
183
+ logger.error(f"HTTP error getting file report: {e.response.status_code} - {e.response.text}")
184
+ if e.response.status_code == 404:
185
+ raise HTTPException(status_code=404, detail="File not found or not yet analyzed")
186
+ raise HTTPException(status_code=e.response.status_code, detail=f"Failed to get file report: {e.response.text}")
187
+ except httpx.RequestError as e:
188
+ logger.error(f"Request error getting file report: {e}")
189
+ raise HTTPException(status_code=500, detail=f"Network error occurred: {str(e)}")
190
+
191
+
192
+async def submit_and_wait_for_analysis(
193
+ api_key: str,
194
+ file: UploadFile,
195
+ request: FileSubmissionRequest,
196
+ max_wait_time: int = 300, # 5 minutes
197
+ poll_interval: int = 10, # 10 seconds
198
+) -> FileReportResponse:
199
+ """
200
+ Submit a file and wait for analysis to complete, then return the report.
201
+
202
+ Args:
203
+ api_key (str): The VirusTotal API key
204
+ file (UploadFile): The file to be analyzed
205
+ request (FileSubmissionRequest): Additional parameters for submission
206
+ max_wait_time (int): Maximum time to wait in seconds
207
+ poll_interval (int): Time between status checks in seconds
208
+
209
+ Returns:
210
+ FileReportResponse: Complete analysis report
211
+
212
+ Raises:
213
+ HTTPException: If submission fails or analysis times out
214
+ """
215
+ # Submit the file
216
+ submission_response = await submit_file_to_virustotal(api_key, file, request)
217
+ analysis_id = submission_response.data.id
218
+
219
+ logger.info(f"File submitted, analysis ID: {analysis_id}. Waiting for completion...")
220
+
221
+ # Wait for analysis to complete
222
+ waited_time = 0
223
+ while waited_time < max_wait_time:
224
+ status_response = await get_file_analysis_status(api_key, analysis_id)
225
+
226
+ if status_response.data.attributes.status == "completed":
227
+ # Analysis is complete, get the file hash from the analysis ID
228
+ # The analysis ID format is usually base64 encoded, but we can extract file hash from response
229
+ logger.info("Analysis completed, retrieving detailed report...")
230
+
231
+ # For now, we'll return the analysis status response
232
+ # In a real implementation, you might want to extract the file hash and get the full report
233
+ return FileReportResponse(data=status_response.data, success=True, message="File analysis completed successfully")
234
+
235
+ logger.info(f"Analysis status: {status_response.data.attributes.status}. Waiting {poll_interval} seconds...")
236
+ await asyncio.sleep(poll_interval)
237
+ waited_time += poll_interval
238
+
239
+ # If we get here, the analysis timed out
240
+ raise HTTPException(
241
+ status_code=408,
242
+ detail=f"Analysis did not complete within {max_wait_time} seconds. You can check the status later using analysis ID: {analysis_id}",
243
+ )
frontend/package.json
+9
-8
@@ -3,7 +3,7 @@
3
"type": "module",
4
"version": "1.0.0",
5
"private": true,
6
- "packageManager": "pnpm@10.12.2+sha512.a32540185b964ee30bb4e979e405adc6af59226b438ee4cc19f9e8773667a66d302f5bfee60a39d3cac69e35e4b96e708a71dd002b7e9359c4112a1722ac323f",
6
+ "packageManager": "pnpm@10.12.4+sha512.5ea8b0deed94ed68691c9bad4c955492705c5eeb8a87ef86bc62c74a26b037b08ff9570f108b2e4dbd1dd1a9186fea925e527f141c648e85af45631074680184",
7
"engines": {
8
"node": ">=18.0.0"
9
},
@@ -47,6 +47,7 @@
47
"@fontsource/public-sans": "^5.2.6",
48
"@shikijs/markdown-it": "^3.7.0",
49
"@singulio/app-auth-search": "^0.0.3",
50
+ "@types/codemirror": "^5.60.16",
51
"@vueuse/core": "^13.4.0",
52
"@vueuse/motion": "^3.0.3",
53
"axios": "^1.10.0",
@@ -83,7 +84,7 @@
84
"vuedraggable": "^4.1.0"
85
},
86
"optionalDependencies": {
86
- "@rollup/rollup-linux-x64-gnu": "^4.44.0",
87
+ "@rollup/rollup-linux-x64-gnu": "^4.44.1",
88
"treemate": "^0.3.11",
89
"vueuc": "^0.4.64"
90
},
@@ -91,15 +92,15 @@
92
"@antfu/eslint-config": "^4.16.1",
93
"@clack/prompts": "^0.11.0",
94
"@iconify/vue": "^5.0.0",
94
- "@tailwindcss/vite": "^4.1.10",
95
+ "@tailwindcss/vite": "^4.1.11",
96
"@tsconfig/node20": "^20.1.6",
97
"@types/bytes": "^3.1.5",
98
"@types/file-saver": "^2.0.7",
99
"@types/fs-extra": "^11.0.4",
100
"@types/jsdom": "^21.1.7",
100
- "@types/lodash": "^4.17.18",
101
+ "@types/lodash": "^4.17.19",
102
"@types/markdown-it": "^14.1.2",
102
- "@types/node": "^24.0.3",
103
+ "@types/node": "^24.0.6",
104
"@types/validator": "^13.15.2",
105
"@vitejs/plugin-vue": "^5.2.4",
106
"@vitejs/plugin-vue-jsx": "^4.2.0",
@@ -107,16 +108,16 @@
108
"@vue/tsconfig": "^0.7.0",
109
"cypress": "^14.5.0",
110
"depcheck": "^1.4.7",
110
- "eslint": "^9.29.0",
111
+ "eslint": "^9.30.0",
112
"flourite": "^1.3.0",
113
"fs-extra": "^11.3.0",
114
"jsdom": "^26.1.0",
115
"npm-run-all2": "^8.0.4",
115
- "prettier": "^3.6.0",
116
+ "prettier": "^3.6.2",
117
"prettier-plugin-tailwindcss": "^0.6.13",
118
"sass": "^1.89.2",
119
"start-server-and-test": "^2.0.12",
119
- "tailwindcss": "^4.1.10",
120
+ "tailwindcss": "^4.1.11",
121
"taze": "^19.1.0",
122
"type-fest": "^4.41.0",
123
"typescript": "~5.8.3",
frontend/pnpm-lock.yaml
+735
-858
@@ -41,6 +41,9 @@ importers:
41
'@singulio/app-auth-search':
42
specifier: ^0.0.3
43
version: 0.0.3
44
+ '@types/codemirror':
45
+ specifier: ^5.60.16
46
+ version: 5.60.16
47
'@vueuse/core':
48
specifier: ^13.4.0
49
version: 13.4.0(vue@3.5.17(typescript@5.8.3))
@@ -109,7 +112,7 @@ importers:
112
version: 3.7.0
113
thememirror:
114
specifier: ^2.0.1
112
- version: 2.0.1(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.8)
115
+ version: 2.0.1(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.0)
116
validator:
117
specifier: ^13.15.15
118
version: 13.15.15
@@ -146,7 +149,7 @@ importers:
149
devDependencies:
150
'@antfu/eslint-config':
151
specifier: ^4.16.1
149
- version: 4.16.1(@vue/compiler-sfc@3.5.17)(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.3)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
152
+ version: 4.16.1(@vue/compiler-sfc@3.5.17)(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.6)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
153
'@clack/prompts':
154
specifier: ^0.11.0
155
version: 0.11.0
@@ -154,8 +157,8 @@ importers:
157
specifier: ^5.0.0
158
version: 5.0.0(vue@3.5.17(typescript@5.8.3))
159
'@tailwindcss/vite':
157
- specifier: ^4.1.10
158
- version: 4.1.10(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
160
+ specifier: ^4.1.11
161
+ version: 4.1.11(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
162
'@tsconfig/node20':
163
specifier: ^20.1.6
164
version: 20.1.6
@@ -172,23 +175,23 @@ importers:
175
specifier: ^21.1.7
176
version: 21.1.7
177
'@types/lodash':
175
- specifier: ^4.17.18
176
- version: 4.17.18
178
+ specifier: ^4.17.19
179
+ version: 4.17.19
180
'@types/markdown-it':
181
specifier: ^14.1.2
182
version: 14.1.2
183
'@types/node':
181
- specifier: ^24.0.3
182
- version: 24.0.3
184
+ specifier: ^24.0.6
185
+ version: 24.0.6
186
'@types/validator':
187
specifier: ^13.15.2
188
version: 13.15.2
189
'@vitejs/plugin-vue':
190
specifier: ^5.2.4
188
- version: 5.2.4(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))
191
+ version: 5.2.4(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))
192
'@vitejs/plugin-vue-jsx':
193
specifier: ^4.2.0
191
- version: 4.2.0(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))
194
+ version: 4.2.0(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))
195
'@vue/test-utils':
196
specifier: ^2.4.6
197
version: 2.4.6
@@ -202,8 +205,8 @@ importers:
205
specifier: ^1.4.7
206
version: 1.4.7
207
eslint:
205
- specifier: ^9.29.0
206
- version: 9.29.0(jiti@2.4.2)
208
+ specifier: ^9.30.0
209
+ version: 9.30.0(jiti@2.4.2)
210
flourite:
211
specifier: ^1.3.0
212
version: 1.3.0
@@ -217,11 +220,11 @@ importers:
220
specifier: ^8.0.4
221
version: 8.0.4
222
prettier:
220
- specifier: ^3.6.0
221
- version: 3.6.0
223
+ specifier: ^3.6.2
224
+ version: 3.6.2
225
prettier-plugin-tailwindcss:
226
specifier: ^0.6.13
224
- version: 0.6.13(prettier@3.6.0)
227
+ version: 0.6.13(prettier@3.6.2)
228
sass:
229
specifier: ^1.89.2
230
version: 1.89.2
@@ -229,8 +232,8 @@ importers:
232
specifier: ^2.0.12
233
version: 2.0.12
234
tailwindcss:
232
- specifier: ^4.1.10
233
- version: 4.1.10
235
+ specifier: ^4.1.11
236
+ version: 4.1.11
237
taze:
238
specifier: ^19.1.0
239
version: 19.1.0
@@ -242,26 +245,26 @@ importers:
245
version: 5.8.3
246
vite:
247
specifier: ^6.3.5
245
- version: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
248
+ version: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
249
vite-bundle-visualizer:
250
specifier: ^1.2.1
248
- version: 1.2.1(rollup@4.41.1)
251
+ version: 1.2.1(rollup@4.44.1)
252
vite-plugin-vue-devtools:
253
specifier: ^7.7.7
251
- version: 7.7.7(rollup@4.41.1)(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))
254
+ version: 7.7.7(rollup@4.44.1)(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))
255
vite-svg-loader:
256
specifier: ^5.1.0
257
version: 5.1.0(vue@3.5.17(typescript@5.8.3))
258
vitest:
259
specifier: ^3.2.4
257
- version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.3)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
260
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.6)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
261
vue-tsc:
262
specifier: ^2.2.10
263
version: 2.2.10(typescript@5.8.3)
264
optionalDependencies:
265
'@rollup/rollup-linux-x64-gnu':
263
- specifier: ^4.44.0
264
- version: 4.44.0
266
+ specifier: ^4.44.1
267
+ version: 4.44.1
268
treemate:
269
specifier: ^0.3.11
270
version: 0.3.11
@@ -396,16 +399,16 @@ packages:
399
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
400
engines: {node: '>=6.9.0'}
401
399
- '@babel/compat-data@7.27.3':
400
- resolution: {integrity: sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==}
402
+ '@babel/compat-data@7.27.7':
403
+ resolution: {integrity: sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==}
404
engines: {node: '>=6.9.0'}
405
403
- '@babel/core@7.27.3':
404
- resolution: {integrity: sha512-hyrN8ivxfvJ4i0fIJuV4EOlV0WDMz5Ui4StRTgVaAvWeiRCilXgwVvxJKtFQ3TKtHgJscB2YiXKGNJuVwhQMtA==}
406
+ '@babel/core@7.27.7':
407
+ resolution: {integrity: sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==}
408
engines: {node: '>=6.9.0'}
409
407
- '@babel/generator@7.27.3':
408
- resolution: {integrity: sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==}
410
+ '@babel/generator@7.27.5':
411
+ resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==}
412
engines: {node: '>=6.9.0'}
413
414
'@babel/helper-annotate-as-pure@7.27.3':
@@ -466,17 +469,12 @@ packages:
469
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
470
engines: {node: '>=6.9.0'}
471
469
- '@babel/helpers@7.27.3':
470
- resolution: {integrity: sha512-h/eKy9agOya1IGuLaZ9tEUgz+uIRXcbtOhRtUyyMf8JFmn1iT13vnl/IGVWSkdOCG/pC57U4S1jnAabAavTMwg==}
472
+ '@babel/helpers@7.27.6':
473
+ resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==}
474
engines: {node: '>=6.9.0'}
475
473
- '@babel/parser@7.27.3':
474
- resolution: {integrity: sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==}
475
- engines: {node: '>=6.0.0'}
476
- hasBin: true
477
-
478
- '@babel/parser@7.27.5':
479
- resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==}
476
+ '@babel/parser@7.27.7':
477
+ resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==}
478
engines: {node: '>=6.0.0'}
479
hasBin: true
480
@@ -525,12 +523,12 @@ packages:
523
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
524
engines: {node: '>=6.9.0'}
525
528
- '@babel/traverse@7.27.3':
529
- resolution: {integrity: sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ==}
526
+ '@babel/traverse@7.27.7':
527
+ resolution: {integrity: sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==}
528
engines: {node: '>=6.9.0'}
529
532
- '@babel/types@7.27.3':
533
- resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==}
530
+ '@babel/types@7.27.7':
531
+ resolution: {integrity: sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==}
532
engines: {node: '>=6.9.0'}
533
534
'@clack/core@0.5.0':
@@ -551,8 +549,8 @@ packages:
549
'@codemirror/lang-xml@6.1.0':
550
resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==}
551
554
- '@codemirror/language@6.11.0':
555
- resolution: {integrity: sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==}
552
+ '@codemirror/language@6.11.2':
553
+ resolution: {integrity: sha512-p44TsNArL4IVXDTbapUmEkAlvWs2CFQbcfc0ymDsis1kH2wh0gcY96AS29c/vp2d0y2Tquk1EDSaawpzilUiAw==}
554
555
'@codemirror/lint@6.8.5':
556
resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==}
@@ -566,8 +564,8 @@ packages:
564
'@codemirror/theme-one-dark@6.1.3':
565
resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==}
566
569
- '@codemirror/view@6.36.8':
570
- resolution: {integrity: sha512-yoRo4f+FdnD01fFt4XpfpMCcCAo9QvZOtbrXExn4SqzH32YC6LgzqxfLZw/r6Ge65xyY03mK/UfUqrVw1gFiFg==}
567
+ '@codemirror/view@6.38.0':
568
+ resolution: {integrity: sha512-yvSchUwHOdupXkd7xJ0ob36jdsSR/I+/C+VbY0ffBiL5NiSTEBDfB1ZGWbbIlDd5xgdUkody+lukAdOxYrOBeg==}
569
570
'@css-render/plugin-bem@0.15.14':
571
resolution: {integrity: sha512-QK513CJ7yEQxm/P3EwsI+d+ha8kSOcjGvD6SevM41neEMxdULE+18iuQK6tEChAWMOQNQPLG/Rw3Khb69r5neg==}
@@ -791,21 +789,21 @@ packages:
789
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
790
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
791
794
- '@eslint/compat@1.2.9':
795
- resolution: {integrity: sha512-gCdSY54n7k+driCadyMNv8JSPzYLeDVM/ikZRtvtROBpRdFSkS8W9A82MqsaY7lZuwL0wiapgD0NT1xT0hyJsA==}
792
+ '@eslint/compat@1.3.1':
793
+ resolution: {integrity: sha512-k8MHony59I5EPic6EQTCNOuPoVBnoYXkP+20xvwFjN7t0qI3ImyvyBgg+hIVPwC8JaxVjjUZld+cLfBLFDLucg==}
794
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
795
peerDependencies:
798
- eslint: ^9.10.0
796
+ eslint: ^8.40 || 9
797
peerDependenciesMeta:
798
eslint:
799
optional: true
800
803
- '@eslint/config-array@0.20.1':
804
- resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==}
801
+ '@eslint/config-array@0.21.0':
802
+ resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==}
803
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
804
807
- '@eslint/config-helpers@0.2.2':
808
- resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==}
805
+ '@eslint/config-helpers@0.3.0':
806
+ resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==}
807
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
808
809
'@eslint/core@0.13.0':
@@ -816,12 +814,16 @@ packages:
814
resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==}
815
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
816
817
+ '@eslint/core@0.15.1':
818
+ resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==}
819
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
820
+
821
'@eslint/eslintrc@3.3.1':
822
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
823
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
824
823
- '@eslint/js@9.29.0':
824
- resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==}
825
+ '@eslint/js@9.30.0':
826
+ resolution: {integrity: sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww==}
827
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
828
829
'@eslint/markdown@6.6.0':
@@ -836,8 +838,8 @@ packages:
838
resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==}
839
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
840
839
- '@eslint/plugin-kit@0.3.1':
840
- resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==}
841
+ '@eslint/plugin-kit@0.3.3':
842
+ resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==}
843
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
844
845
'@f3ve/vue-markdown-it@0.2.3':
@@ -959,8 +961,8 @@ packages:
961
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
962
engines: {node: '>= 8'}
963
962
- '@nuxt/kit@3.17.4':
963
- resolution: {integrity: sha512-l+hY8sy2XFfg3PigZj+PTu6+KIJzmbACTRimn1ew/gtCz+F38f6KTF4sMRTN5CUxiB8TRENgEonASmkAWfpO9Q==}
964
+ '@nuxt/kit@3.17.5':
965
+ resolution: {integrity: sha512-NdCepmA+S/SzgcaL3oYUeSlXGYO6BXGr9K/m1D0t0O9rApF8CSq/QQ+ja5KYaYMO1kZAEWH4s2XVcE3uPrrAVg==}
966
engines: {node: '>=18.12.0'}
967
968
'@one-ini/wasm@0.1.1':
@@ -1052,8 +1054,8 @@ packages:
1054
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
1055
engines: {node: '>=14'}
1056
1055
- '@pkgr/core@0.2.4':
1056
- resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==}
1057
+ '@pkgr/core@0.2.7':
1058
+ resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==}
1059
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
1060
1061
'@polka/url@1.0.0-next.29':
@@ -1063,11 +1065,11 @@ packages:
1065
resolution: {integrity: sha512-G0OnZbMWEs5LhDyqy2UL17vGhSVHkQIfVojMtEWVenvj0V5S84VBgy86kJIuNsGDp2p7sTKlpSIpBUWdC35OKg==}
1066
engines: {node: '>=20.0.0'}
1067
1066
- '@rolldown/pluginutils@1.0.0-beta.10':
1067
- resolution: {integrity: sha512-FeISF1RUTod5Kvt3yUXByrAPk5EfDWo/1BPv1ARBZ07weqx888SziPuWS6HUJU0YroGyQURjdIrkjWJP2zBFDQ==}
1068
+ '@rolldown/pluginutils@1.0.0-beta.21':
1069
+ resolution: {integrity: sha512-OTjWr7XYqRZaSzi6dTe0fP25EEsYEQ2H04xIedXG3D0Hrs+Bpe3V5L48R6y+R5ohTygp1ijC09mbrd7vlslpzA==}
1070
1069
- '@rollup/pluginutils@5.1.4':
1070
- resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
1071
+ '@rollup/pluginutils@5.2.0':
1072
+ resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==}
1073
engines: {node: '>=14.0.0'}
1074
peerDependencies:
1075
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
@@ -1075,108 +1077,103 @@ packages:
1077
rollup:
1078
optional: true
1079
1078
- '@rollup/rollup-android-arm-eabi@4.41.1':
1079
- resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==}
1080
+ '@rollup/rollup-android-arm-eabi@4.44.1':
1081
+ resolution: {integrity: sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==}
1082
cpu: [arm]
1083
os: [android]
1084
1083
- '@rollup/rollup-android-arm64@4.41.1':
1084
- resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==}
1085
+ '@rollup/rollup-android-arm64@4.44.1':
1086
+ resolution: {integrity: sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==}
1087
cpu: [arm64]
1088
os: [android]
1089
1088
- '@rollup/rollup-darwin-arm64@4.41.1':
1089
- resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==}
1090
+ '@rollup/rollup-darwin-arm64@4.44.1':
1091
+ resolution: {integrity: sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==}
1092
cpu: [arm64]
1093
os: [darwin]
1094
1093
- '@rollup/rollup-darwin-x64@4.41.1':
1094
- resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==}
1095
+ '@rollup/rollup-darwin-x64@4.44.1':
1096
+ resolution: {integrity: sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==}
1097
cpu: [x64]
1098
os: [darwin]
1099
1098
- '@rollup/rollup-freebsd-arm64@4.41.1':
1099
- resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==}
1100
+ '@rollup/rollup-freebsd-arm64@4.44.1':
1101
+ resolution: {integrity: sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==}
1102
cpu: [arm64]
1103
os: [freebsd]
1104
1103
- '@rollup/rollup-freebsd-x64@4.41.1':
1104
- resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==}
1105
+ '@rollup/rollup-freebsd-x64@4.44.1':
1106
+ resolution: {integrity: sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==}
1107
cpu: [x64]
1108
os: [freebsd]
1109
1108
- '@rollup/rollup-linux-arm-gnueabihf@4.41.1':
1109
- resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==}
1110
+ '@rollup/rollup-linux-arm-gnueabihf@4.44.1':
1111
+ resolution: {integrity: sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==}
1112
cpu: [arm]
1113
os: [linux]
1114
1113
- '@rollup/rollup-linux-arm-musleabihf@4.41.1':
1114
- resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==}
1115
+ '@rollup/rollup-linux-arm-musleabihf@4.44.1':
1116
+ resolution: {integrity: sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==}
1117
cpu: [arm]
1118
os: [linux]
1119
1118
- '@rollup/rollup-linux-arm64-gnu@4.41.1':
1119
- resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==}
1120
+ '@rollup/rollup-linux-arm64-gnu@4.44.1':
1121
+ resolution: {integrity: sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==}
1122
cpu: [arm64]
1123
os: [linux]
1124
1123
- '@rollup/rollup-linux-arm64-musl@4.41.1':
1124
- resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==}
1125
+ '@rollup/rollup-linux-arm64-musl@4.44.1':
1126
+ resolution: {integrity: sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==}
1127
cpu: [arm64]
1128
os: [linux]
1129
1128
- '@rollup/rollup-linux-loongarch64-gnu@4.41.1':
1129
- resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==}
1130
+ '@rollup/rollup-linux-loongarch64-gnu@4.44.1':
1131
+ resolution: {integrity: sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==}
1132
cpu: [loong64]
1133
os: [linux]
1134
1133
- '@rollup/rollup-linux-powerpc64le-gnu@4.41.1':
1134
- resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==}
1135
+ '@rollup/rollup-linux-powerpc64le-gnu@4.44.1':
1136
+ resolution: {integrity: sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==}
1137
cpu: [ppc64]
1138
os: [linux]
1139
1138
- '@rollup/rollup-linux-riscv64-gnu@4.41.1':
1139
- resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==}
1140
+ '@rollup/rollup-linux-riscv64-gnu@4.44.1':
1141
+ resolution: {integrity: sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==}
1142
cpu: [riscv64]
1143
os: [linux]
1144
1143
- '@rollup/rollup-linux-riscv64-musl@4.41.1':
1144
- resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==}
1145
+ '@rollup/rollup-linux-riscv64-musl@4.44.1':
1146
+ resolution: {integrity: sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==}
1147
cpu: [riscv64]
1148
os: [linux]
1149
1148
- '@rollup/rollup-linux-s390x-gnu@4.41.1':
1149
- resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==}
1150
+ '@rollup/rollup-linux-s390x-gnu@4.44.1':
1151
+ resolution: {integrity: sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==}
1152
cpu: [s390x]
1153
os: [linux]
1154
1153
- '@rollup/rollup-linux-x64-gnu@4.41.1':
1154
- resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==}
1155
- cpu: [x64]
1156
- os: [linux]
1157
-
1158
- '@rollup/rollup-linux-x64-gnu@4.44.0':
1159
- resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==}
1155
+ '@rollup/rollup-linux-x64-gnu@4.44.1':
1156
+ resolution: {integrity: sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==}
1157
cpu: [x64]
1158
os: [linux]
1159
1163
- '@rollup/rollup-linux-x64-musl@4.41.1':
1164
- resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==}
1160
+ '@rollup/rollup-linux-x64-musl@4.44.1':
1161
+ resolution: {integrity: sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==}
1162
cpu: [x64]
1163
os: [linux]
1164
1168
- '@rollup/rollup-win32-arm64-msvc@4.41.1':
1169
- resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==}
1165
+ '@rollup/rollup-win32-arm64-msvc@4.44.1':
1166
+ resolution: {integrity: sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==}
1167
cpu: [arm64]
1168
os: [win32]
1169
1173
- '@rollup/rollup-win32-ia32-msvc@4.41.1':
1174
- resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==}
1170
+ '@rollup/rollup-win32-ia32-msvc@4.44.1':
1171
+ resolution: {integrity: sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==}
1172
cpu: [ia32]
1173
os: [win32]
1174
1178
- '@rollup/rollup-win32-x64-msvc@4.41.1':
1179
- resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==}
1175
+ '@rollup/rollup-win32-x64-msvc@4.44.1':
1176
+ resolution: {integrity: sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==}
1177
cpu: [x64]
1178
os: [win32]
1179
@@ -1259,65 +1256,65 @@ packages:
1256
peerDependencies:
1257
'@svgdotjs/svg.js': ^3.2.4
1258
1262
- '@tailwindcss/node@4.1.10':
1263
- resolution: {integrity: sha512-2ACf1znY5fpRBwRhMgj9ZXvb2XZW8qs+oTfotJ2C5xR0/WNL7UHZ7zXl6s+rUqedL1mNi+0O+WQr5awGowS3PQ==}
1259
+ '@tailwindcss/node@4.1.11':
1260
+ resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==}
1261
1265
- '@tailwindcss/oxide-android-arm64@4.1.10':
1266
- resolution: {integrity: sha512-VGLazCoRQ7rtsCzThaI1UyDu/XRYVyH4/EWiaSX6tFglE+xZB5cvtC5Omt0OQ+FfiIVP98su16jDVHDEIuH4iQ==}
1262
+ '@tailwindcss/oxide-android-arm64@4.1.11':
1263
+ resolution: {integrity: sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==}
1264
engines: {node: '>= 10'}
1265
cpu: [arm64]
1266
os: [android]
1267
1271
- '@tailwindcss/oxide-darwin-arm64@4.1.10':
1272
- resolution: {integrity: sha512-ZIFqvR1irX2yNjWJzKCqTCcHZbgkSkSkZKbRM3BPzhDL/18idA8uWCoopYA2CSDdSGFlDAxYdU2yBHwAwx8euQ==}
1268
+ '@tailwindcss/oxide-darwin-arm64@4.1.11':
1269
+ resolution: {integrity: sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==}
1270
engines: {node: '>= 10'}
1271
cpu: [arm64]
1272
os: [darwin]
1273
1277
- '@tailwindcss/oxide-darwin-x64@4.1.10':
1278
- resolution: {integrity: sha512-eCA4zbIhWUFDXoamNztmS0MjXHSEJYlvATzWnRiTqJkcUteSjO94PoRHJy1Xbwp9bptjeIxxBHh+zBWFhttbrQ==}
1274
+ '@tailwindcss/oxide-darwin-x64@4.1.11':
1275
+ resolution: {integrity: sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==}
1276
engines: {node: '>= 10'}
1277
cpu: [x64]
1278
os: [darwin]
1279
1283
- '@tailwindcss/oxide-freebsd-x64@4.1.10':
1284
- resolution: {integrity: sha512-8/392Xu12R0cc93DpiJvNpJ4wYVSiciUlkiOHOSOQNH3adq9Gi/dtySK7dVQjXIOzlpSHjeCL89RUUI8/GTI6g==}
1280
+ '@tailwindcss/oxide-freebsd-x64@4.1.11':
1281
+ resolution: {integrity: sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==}
1282
engines: {node: '>= 10'}
1283
cpu: [x64]
1284
os: [freebsd]
1285
1289
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.10':
1290
- resolution: {integrity: sha512-t9rhmLT6EqeuPT+MXhWhlRYIMSfh5LZ6kBrC4FS6/+M1yXwfCtp24UumgCWOAJVyjQwG+lYva6wWZxrfvB+NhQ==}
1286
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11':
1287
+ resolution: {integrity: sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==}
1288
engines: {node: '>= 10'}
1289
cpu: [arm]
1290
os: [linux]
1291
1295
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.10':
1296
- resolution: {integrity: sha512-3oWrlNlxLRxXejQ8zImzrVLuZ/9Z2SeKoLhtCu0hpo38hTO2iL86eFOu4sVR8cZc6n3z7eRXXqtHJECa6mFOvA==}
1292
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.11':
1293
+ resolution: {integrity: sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==}
1294
engines: {node: '>= 10'}
1295
cpu: [arm64]
1296
os: [linux]
1297
1301
- '@tailwindcss/oxide-linux-arm64-musl@4.1.10':
1302
- resolution: {integrity: sha512-saScU0cmWvg/Ez4gUmQWr9pvY9Kssxt+Xenfx1LG7LmqjcrvBnw4r9VjkFcqmbBb7GCBwYNcZi9X3/oMda9sqQ==}
1298
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.11':
1299
+ resolution: {integrity: sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==}
1300
engines: {node: '>= 10'}
1301
cpu: [arm64]
1302
os: [linux]
1303
1307
- '@tailwindcss/oxide-linux-x64-gnu@4.1.10':
1308
- resolution: {integrity: sha512-/G3ao/ybV9YEEgAXeEg28dyH6gs1QG8tvdN9c2MNZdUXYBaIY/Gx0N6RlJzfLy/7Nkdok4kaxKPHKJUlAaoTdA==}
1304
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.11':
1305
+ resolution: {integrity: sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==}
1306
engines: {node: '>= 10'}
1307
cpu: [x64]
1308
os: [linux]
1309
1313
- '@tailwindcss/oxide-linux-x64-musl@4.1.10':
1314
- resolution: {integrity: sha512-LNr7X8fTiKGRtQGOerSayc2pWJp/9ptRYAa4G+U+cjw9kJZvkopav1AQc5HHD+U364f71tZv6XamaHKgrIoVzA==}
1310
+ '@tailwindcss/oxide-linux-x64-musl@4.1.11':
1311
+ resolution: {integrity: sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==}
1312
engines: {node: '>= 10'}
1313
cpu: [x64]
1314
os: [linux]
1315
1319
- '@tailwindcss/oxide-wasm32-wasi@4.1.10':
1320
- resolution: {integrity: sha512-d6ekQpopFQJAcIK2i7ZzWOYGZ+A6NzzvQ3ozBvWFdeyqfOZdYHU66g5yr+/HC4ipP1ZgWsqa80+ISNILk+ae/Q==}
1316
+ '@tailwindcss/oxide-wasm32-wasi@4.1.11':
1317
+ resolution: {integrity: sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==}
1318
engines: {node: '>=14.0.0'}
1319
cpu: [wasm32]
1320
bundledDependencies:
@@ -1328,26 +1325,26 @@ packages:
1325
- '@emnapi/wasi-threads'
1326
- tslib
1327
1331
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.10':
1332
- resolution: {integrity: sha512-i1Iwg9gRbwNVOCYmnigWCCgow8nDWSFmeTUU5nbNx3rqbe4p0kRbEqLwLJbYZKmSSp23g4N6rCDmm7OuPBXhDA==}
1328
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.11':
1329
+ resolution: {integrity: sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==}
1330
engines: {node: '>= 10'}
1331
cpu: [arm64]
1332
os: [win32]
1333
1337
- '@tailwindcss/oxide-win32-x64-msvc@4.1.10':
1338
- resolution: {integrity: sha512-sGiJTjcBSfGq2DVRtaSljq5ZgZS2SDHSIfhOylkBvHVjwOsodBhnb3HdmiKkVuUGKD0I7G63abMOVaskj1KpOA==}
1334
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.11':
1335
+ resolution: {integrity: sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==}
1336
engines: {node: '>= 10'}
1337
cpu: [x64]
1338
os: [win32]
1339
1343
- '@tailwindcss/oxide@4.1.10':
1344
- resolution: {integrity: sha512-v0C43s7Pjw+B9w21htrQwuFObSkio2aV/qPx/mhrRldbqxbWJK6KizM+q7BF1/1CmuLqZqX3CeYF7s7P9fbA8Q==}
1340
+ '@tailwindcss/oxide@4.1.11':
1341
+ resolution: {integrity: sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==}
1342
engines: {node: '>= 10'}
1343
1347
- '@tailwindcss/vite@4.1.10':
1348
- resolution: {integrity: sha512-QWnD5HDY2IADv+vYR82lOhqOlS1jSCUUAmfem52cXAhRTKxpDh3ARX8TTXJTCCO7Rv7cD2Nlekabv02bwP3a2A==}
1344
+ '@tailwindcss/vite@4.1.11':
1345
+ resolution: {integrity: sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw==}
1346
peerDependencies:
1350
- vite: ^5.2.0 || ^6
1347
+ vite: ^5.2.0 || ^6 || ^7
1348
1349
'@trysound/sax@0.2.0':
1350
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
@@ -1362,15 +1359,15 @@ packages:
1359
'@types/chai@5.2.2':
1360
resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
1361
1362
+ '@types/codemirror@5.60.16':
1363
+ resolution: {integrity: sha512-V/yHdamffSS075jit+fDxaOAmdP2liok8NSNJnAZfDJErzOheuygHZEhAJrfmk5TEyM32MhkZjwo/idX791yxw==}
1364
+
1365
'@types/debug@4.1.12':
1366
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
1367
1368
'@types/deep-eql@4.0.2':
1369
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
1370
1371
- '@types/estree@1.0.7':
1372
- resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
1373
-
1371
'@types/estree@1.0.8':
1372
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
1373
@@ -1401,8 +1398,8 @@ packages:
1398
'@types/lodash-es@4.17.12':
1399
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
1400
1404
- '@types/lodash@4.17.18':
1405
- resolution: {integrity: sha512-KJ65INaxqxmU6EoCiJmRPZC9H9RVWCRd349tXM2M3O5NA7cY6YL7c0bHAHQ93NOfTObEQ004kd2QVHs/r0+m4g==}
1401
+ '@types/lodash@4.17.19':
1402
+ resolution: {integrity: sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==}
1403
1404
'@types/markdown-it@14.1.2':
1405
resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
@@ -1419,8 +1416,8 @@ packages:
1416
'@types/ms@2.1.0':
1417
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
1418
1422
- '@types/node@24.0.3':
1423
- resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==}
1419
+ '@types/node@24.0.6':
1420
+ resolution: {integrity: sha512-ZOyn+gOs749xU7ovp+Ibj0g1o3dFRqsfPnT22C2t5JzcRvgsEDpGawPbCISGKLudJk9Y0wiu9sYd6kUh0pc9TA==}
1421
1422
'@types/parse-json@4.0.2':
1423
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -1431,6 +1428,9 @@ packages:
1428
'@types/sizzle@2.3.9':
1429
resolution: {integrity: sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==}
1430
1431
+ '@types/tern@0.23.9':
1432
+ resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==}
1433
+
1434
'@types/tough-cookie@4.0.5':
1435
resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
1436
@@ -1446,63 +1446,63 @@ packages:
1446
'@types/yauzl@2.10.3':
1447
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
1448
1449
- '@typescript-eslint/eslint-plugin@8.34.1':
1450
- resolution: {integrity: sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==}
1449
+ '@typescript-eslint/eslint-plugin@8.35.0':
1450
+ resolution: {integrity: sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==}
1451
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1452
peerDependencies:
1453
- '@typescript-eslint/parser': ^8.34.1
1453
+ '@typescript-eslint/parser': ^8.35.0
1454
eslint: ^8.57.0 || ^9.0.0
1455
typescript: '>=4.8.4 <5.9.0'
1456
1457
- '@typescript-eslint/parser@8.34.1':
1458
- resolution: {integrity: sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==}
1457
+ '@typescript-eslint/parser@8.35.0':
1458
+ resolution: {integrity: sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==}
1459
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1460
peerDependencies:
1461
eslint: ^8.57.0 || ^9.0.0
1462
typescript: '>=4.8.4 <5.9.0'
1463
1464
- '@typescript-eslint/project-service@8.34.1':
1465
- resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==}
1464
+ '@typescript-eslint/project-service@8.35.0':
1465
+ resolution: {integrity: sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==}
1466
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1467
peerDependencies:
1468
typescript: '>=4.8.4 <5.9.0'
1469
1470
- '@typescript-eslint/scope-manager@8.34.1':
1471
- resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==}
1470
+ '@typescript-eslint/scope-manager@8.35.0':
1471
+ resolution: {integrity: sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==}
1472
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1473
1474
- '@typescript-eslint/tsconfig-utils@8.34.1':
1475
- resolution: {integrity: sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==}
1474
+ '@typescript-eslint/tsconfig-utils@8.35.0':
1475
+ resolution: {integrity: sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==}
1476
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1477
peerDependencies:
1478
typescript: '>=4.8.4 <5.9.0'
1479
1480
- '@typescript-eslint/type-utils@8.34.1':
1481
- resolution: {integrity: sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==}
1480
+ '@typescript-eslint/type-utils@8.35.0':
1481
+ resolution: {integrity: sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==}
1482
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1483
peerDependencies:
1484
eslint: ^8.57.0 || ^9.0.0
1485
typescript: '>=4.8.4 <5.9.0'
1486
1487
- '@typescript-eslint/types@8.34.1':
1488
- resolution: {integrity: sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==}
1487
+ '@typescript-eslint/types@8.35.0':
1488
+ resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==}
1489
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1490
1491
- '@typescript-eslint/typescript-estree@8.34.1':
1492
- resolution: {integrity: sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==}
1491
+ '@typescript-eslint/typescript-estree@8.35.0':
1492
+ resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==}
1493
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1494
peerDependencies:
1495
typescript: '>=4.8.4 <5.9.0'
1496
1497
- '@typescript-eslint/utils@8.34.1':
1498
- resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==}
1497
+ '@typescript-eslint/utils@8.35.0':
1498
+ resolution: {integrity: sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==}
1499
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1500
peerDependencies:
1501
eslint: ^8.57.0 || ^9.0.0
1502
typescript: '>=4.8.4 <5.9.0'
1503
1504
- '@typescript-eslint/visitor-keys@8.34.1':
1505
- resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==}
1504
+ '@typescript-eslint/visitor-keys@8.35.0':
1505
+ resolution: {integrity: sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==}
1506
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1507
1508
'@ungap/structured-clone@1.3.0':
@@ -1522,8 +1522,8 @@ packages:
1522
vite: ^5.0.0 || ^6.0.0
1523
vue: ^3.2.25
1524
1525
- '@vitest/eslint-plugin@1.2.7':
1526
- resolution: {integrity: sha512-7WHcGZo6uXsE4SsSnpGDqKyGrd6NfOMM52WKoHSpTRZLbjMuDyHfA5P7m8yrr73tpqYjsiAdSjSerOnx8uEhpA==}
1525
+ '@vitest/eslint-plugin@1.3.3':
1526
+ resolution: {integrity: sha512-zOB4T5f80JXfP5DC2yQl7azRYq8PmGqYle3uxh3a0NnbKc+EaSYSpEcrVAh2r5W97pi3BVv7oRb5NdEQy0cCXA==}
1527
peerDependencies:
1528
eslint: '>= 8.57.0'
1529
typescript: '>= 5.0.0'
@@ -1563,14 +1563,14 @@ packages:
1563
'@vitest/utils@3.2.4':
1564
resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
1565
1566
- '@volar/language-core@2.4.14':
1567
- resolution: {integrity: sha512-X6beusV0DvuVseaOEy7GoagS4rYHgDHnTrdOj5jeUb49fW5ceQyP9Ej5rBhqgz2wJggl+2fDbbojq1XKaxDi6w==}
1566
+ '@volar/language-core@2.4.15':
1567
+ resolution: {integrity: sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==}
1568
1569
- '@volar/source-map@2.4.14':
1570
- resolution: {integrity: sha512-5TeKKMh7Sfxo8021cJfmBzcjfY1SsXsPMMjMvjY7ivesdnybqqS+GxGAoXHAOUawQTwtdUxgP65Im+dEmvWtYQ==}
1569
+ '@volar/source-map@2.4.15':
1570
+ resolution: {integrity: sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==}
1571
1572
- '@volar/typescript@2.4.14':
1573
- resolution: {integrity: sha512-p8Z6f/bZM3/HyCdRNFZOEEzts51uV8WHeN8Tnfnm2EBv6FDB2TQLzfVx7aJvnl8ofKAOnS64B2O8bImBFaauRw==}
1572
+ '@volar/typescript@2.4.15':
1573
+ resolution: {integrity: sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==}
1574
1575
'@vue/babel-helper-vue-transform-on@1.4.0':
1576
resolution: {integrity: sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==}
@@ -1588,33 +1588,15 @@ packages:
1588
peerDependencies:
1589
'@babel/core': ^7.0.0-0
1590
1591
- '@vue/compiler-core@3.5.15':
1592
- resolution: {integrity: sha512-nGRc6YJg/kxNqbv/7Tg4juirPnjHvuVdhcmDvQWVZXlLHjouq7VsKmV1hIxM/8yKM0VUfwT/Uzc0lO510ltZqw==}
1593
-
1594
- '@vue/compiler-core@3.5.16':
1595
- resolution: {integrity: sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==}
1596
-
1591
'@vue/compiler-core@3.5.17':
1592
resolution: {integrity: sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==}
1593
1600
- '@vue/compiler-dom@3.5.15':
1601
- resolution: {integrity: sha512-ZelQd9n+O/UCBdL00rlwCrsArSak+YLZpBVuNDio1hN3+wrCshYZEDUO3khSLAzPbF1oQS2duEoMDUHScUlYjA==}
1602
-
1603
- '@vue/compiler-dom@3.5.16':
1604
- resolution: {integrity: sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==}
1605
-
1594
'@vue/compiler-dom@3.5.17':
1595
resolution: {integrity: sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==}
1596
1609
- '@vue/compiler-sfc@3.5.15':
1610
- resolution: {integrity: sha512-3zndKbxMsOU6afQWer75Zot/aydjtxNj0T2KLg033rAFaQUn2PGuE32ZRe4iMhflbTcAxL0yEYsRWFxtPro8RQ==}
1611
-
1597
'@vue/compiler-sfc@3.5.17':
1598
resolution: {integrity: sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==}
1599
1615
- '@vue/compiler-ssr@3.5.15':
1616
- resolution: {integrity: sha512-gShn8zRREZbrXqTtmLSCffgZXDWv8nHc/GhsW+mbwBfNZL5pI96e7IWcIq8XGQe1TLtVbu7EV9gFIVSmfyarPg==}
1617
-
1600
'@vue/compiler-ssr@3.5.17':
1601
resolution: {integrity: sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==}
1602
@@ -1624,23 +1606,17 @@ packages:
1606
'@vue/devtools-api@6.6.4':
1607
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
1608
1627
- '@vue/devtools-api@7.7.6':
1628
- resolution: {integrity: sha512-b2Xx0KvXZObePpXPYHvBRRJLDQn5nhKjXh7vUhMEtWxz1AYNFOVIsh5+HLP8xDGL7sy+Q7hXeUxPHB/KgbtsPw==}
1609
+ '@vue/devtools-api@7.7.7':
1610
+ resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==}
1611
1612
'@vue/devtools-core@7.7.7':
1613
resolution: {integrity: sha512-9z9TLbfC+AjAi1PQyWX+OErjIaJmdFlbDHcD+cAMYKY6Bh5VlsAtCeGyRMrXwIlMEQPukvnWt3gZBLwTAIMKzQ==}
1614
peerDependencies:
1615
vue: ^3.0.0
1616
1635
- '@vue/devtools-kit@7.7.6':
1636
- resolution: {integrity: sha512-geu7ds7tem2Y7Wz+WgbnbZ6T5eadOvozHZ23Atk/8tksHMFOFylKi1xgGlQlVn0wlkEf4hu+vd5ctj1G4kFtwA==}
1637
-
1617
'@vue/devtools-kit@7.7.7':
1618
resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==}
1619
1641
- '@vue/devtools-shared@7.7.6':
1642
- resolution: {integrity: sha512-yFEgJZ/WblEsojQQceuyK6FzpFDx4kqrz2ohInxNj5/DnhoX023upTv4OD6lNPLAA5LLkbwPVb10o/7b+Y4FVA==}
1643
-
1620
'@vue/devtools-shared@7.7.7':
1621
resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==}
1622
@@ -1666,12 +1642,6 @@ packages:
1642
peerDependencies:
1643
vue: 3.5.17
1644
1669
- '@vue/shared@3.5.15':
1670
- resolution: {integrity: sha512-bKvgFJJL1ZX9KxMCTQY6xD9Dhe3nusd1OhyOb1cJYGqvAr0Vg8FIjHPMOEVbJ9GDT9HG+Bjdn4oS8ohKP8EvoA==}
1671
-
1672
- '@vue/shared@3.5.16':
1673
- resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==}
1674
-
1645
'@vue/shared@3.5.17':
1646
resolution: {integrity: sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==}
1647
@@ -1702,11 +1672,6 @@ packages:
1672
peerDependencies:
1673
vue: '>=3.0.0'
1674
1705
- '@vueuse/shared@13.3.0':
1706
- resolution: {integrity: sha512-L1QKsF0Eg9tiZSFXTgodYnu0Rsa2P0En2LuLrIs/jgrkyiDuJSsPZK+tx+wU0mMsYHUYEjNsuE41uqqkuR8VhA==}
1707
- peerDependencies:
1708
- vue: ^3.5.0
1709
-
1675
'@vueuse/shared@13.4.0':
1676
resolution: {integrity: sha512-+AxuKbw8R1gYy5T21V5yhadeNM7rJqb4cPaRI9DdGnnNl3uqXh+unvQ3uCaA2DjYLbNr1+l7ht/B4qEsRegX6A==}
1677
peerDependencies:
@@ -1724,11 +1689,6 @@ packages:
1689
peerDependencies:
1690
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
1691
1727
- acorn@8.14.1:
1728
- resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
1729
- engines: {node: '>=0.4.0'}
1730
- hasBin: true
1731
-
1692
acorn@8.15.0:
1693
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
1694
engines: {node: '>=0.4.0'}
@@ -1776,10 +1736,6 @@ packages:
1736
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
1737
engines: {node: '>=12'}
1738
1779
- ansis@4.0.0:
1780
- resolution: {integrity: sha512-P8nrHI1EyW9OfBt1X7hMSwGN2vwRuqHSKJAT1gbLWZRzDa24oHjYwGHvEgHeBepupzk878yS/HBZ0NMPYtbolw==}
1781
- engines: {node: '>=14'}
1782
-
1739
ansis@4.1.0:
1740
resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==}
1741
engines: {node: '>=14'}
@@ -1861,8 +1817,8 @@ packages:
1817
bcrypt-pbkdf@1.0.2:
1818
resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
1819
1864
- birpc@2.3.0:
1865
- resolution: {integrity: sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==}
1820
+ birpc@2.4.0:
1821
+ resolution: {integrity: sha512-5IdNxTyhXHv2UlgnPHQ0h+5ypVmkrYHzL8QT+DwFZ//2N/oNV8Ch+BCRmTJ3x6/z9Axo/cXYBc9eprsUVK/Jsg==}
1822
1823
blob-util@2.0.2:
1824
resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==}
@@ -1873,18 +1829,18 @@ packages:
1829
boolbase@1.0.0:
1830
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
1831
1876
- brace-expansion@1.1.11:
1877
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
1832
+ brace-expansion@1.1.12:
1833
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
1834
1879
- brace-expansion@2.0.1:
1880
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
1835
+ brace-expansion@2.0.2:
1836
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
1837
1838
braces@3.0.3:
1839
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
1840
engines: {node: '>=8'}
1841
1886
- browserslist@4.24.5:
1887
- resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==}
1842
+ browserslist@4.25.1:
1843
+ resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==}
1844
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
1845
hasBin: true
1846
@@ -1941,8 +1897,8 @@ packages:
1897
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
1898
engines: {node: '>=10'}
1899
1944
- caniuse-lite@1.0.30001718:
1945
- resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==}
1900
+ caniuse-lite@1.0.30001726:
1901
+ resolution: {integrity: sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==}
1902
1903
caseless@0.12.0:
1904
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@@ -2090,8 +2046,8 @@ packages:
2046
resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
2047
engines: {node: '>=12.13'}
2048
2093
- core-js-compat@3.42.0:
2094
- resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==}
2049
+ core-js-compat@3.43.0:
2050
+ resolution: {integrity: sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==}
2051
2052
core-util-is@1.0.2:
2053
resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
@@ -2137,8 +2093,8 @@ packages:
2093
resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
2094
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
2095
2140
- cssstyle@4.3.1:
2141
- resolution: {integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==}
2096
+ cssstyle@4.6.0:
2097
+ resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==}
2098
engines: {node: '>=18'}
2099
2100
csstype@3.0.11:
@@ -2197,8 +2153,8 @@ packages:
2153
decimal.js@10.5.0:
2154
resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
2155
2200
- decode-named-character-reference@1.1.0:
2201
- resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==}
2156
+ decode-named-character-reference@1.2.0:
2157
+ resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
2158
2159
deep-eql@5.0.2:
2160
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
@@ -2280,8 +2236,8 @@ packages:
2236
domutils@3.2.2:
2237
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
2238
2283
- dotenv@16.5.0:
2284
- resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==}
2239
+ dotenv@16.6.1:
2240
+ resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
2241
engines: {node: '>=12'}
2242
2243
dunder-proto@1.0.1:
@@ -2308,8 +2264,8 @@ packages:
2264
engines: {node: '>=14'}
2265
hasBin: true
2266
2311
- electron-to-chromium@1.5.159:
2312
- resolution: {integrity: sha512-CEvHptWAMV5p6GJ0Lq8aheyvVbfzVrv5mmidu1D3pidoVNkB3tTBsTMVtPJ+rzRK5oV229mCLz9Zj/hNvU8GBA==}
2267
+ electron-to-chromium@1.5.177:
2268
+ resolution: {integrity: sha512-7EH2G59nLsEMj97fpDuvVcYi6lwTcM1xuWw3PssD8xzboAW7zj7iB3COEEEATUfjLHrs5uKBLQT03V/8URx06g==}
2269
2270
emoji-regex@8.0.0:
2271
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -2317,11 +2273,11 @@ packages:
2273
emoji-regex@9.2.2:
2274
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
2275
2320
- end-of-stream@1.4.4:
2321
- resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
2276
+ end-of-stream@1.4.5:
2277
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
2278
2323
- enhanced-resolve@5.18.1:
2324
- resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
2279
+ enhanced-resolve@5.18.2:
2280
+ resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==}
2281
engines: {node: '>=10.13.0'}
2282
2283
enquirer@2.4.1:
@@ -2332,8 +2288,8 @@ packages:
2288
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
2289
engines: {node: '>=0.12'}
2290
2335
- entities@6.0.0:
2336
- resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==}
2291
+ entities@6.0.1:
2292
+ resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
2293
engines: {node: '>=0.12'}
2294
2295
error-ex@1.3.2:
@@ -2447,8 +2403,8 @@ packages:
2403
typescript:
2404
optional: true
2405
2450
- eslint-plugin-jsdoc@51.2.1:
2451
- resolution: {integrity: sha512-iE2qpG/kaA9xXfEcTNSsxNvH5O8+o38VBGLwl2oZisQaM1JRGftTLJAGQrj7YZjSkp3n9VCrNTjOpo3ONhTApQ==}
2406
+ eslint-plugin-jsdoc@51.2.3:
2407
+ resolution: {integrity: sha512-pagzxFubOih+O6XSB1D8BkDkJjF4G4/v8s9pRg4FkXQJLu0e3QJg621ayhmnhyc5mNBpp3cYCNiUyeLQs7oz7w==}
2408
engines: {node: '>=20.11.0'}
2409
peerDependencies:
2410
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
@@ -2538,8 +2494,8 @@ packages:
2494
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
2495
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
2496
2541
- eslint@9.29.0:
2542
- resolution: {integrity: sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==}
2497
+ eslint@9.30.0:
2498
+ resolution: {integrity: sha512-iN/SiPxmQu6EVkf+m1qpBxzUhE12YqFLOSySuOyVLJLEF9nzTf+h/1AJYc1JWzCnktggeNrjvQGLngDzXirU6g==}
2499
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
2500
hasBin: true
2501
peerDependencies:
@@ -2616,8 +2572,8 @@ packages:
2572
resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==}
2573
engines: {node: '>=12.0.0'}
2574
2619
- exsolve@1.0.5:
2620
- resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==}
2575
+ exsolve@1.0.7:
2576
+ resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
2577
2578
extend@3.0.2:
2579
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -2653,8 +2609,8 @@ packages:
2609
fd-slicer@1.1.0:
2610
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
2611
2656
- fdir@6.4.5:
2657
- resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==}
2612
+ fdir@6.4.6:
2613
+ resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
2614
peerDependencies:
2615
picomatch: ^3 || ^4
2616
peerDependenciesMeta:
@@ -2719,8 +2675,8 @@ packages:
2675
forever-agent@0.6.1:
2676
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
2677
2722
- form-data@4.0.2:
2723
- resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
2678
+ form-data@4.0.3:
2679
+ resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==}
2680
engines: {node: '>= 6'}
2681
2682
format@0.2.2:
@@ -2938,12 +2894,12 @@ packages:
2894
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
2895
engines: {node: '>= 4'}
2896
2941
- ignore@7.0.4:
2942
- resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==}
2897
+ ignore@7.0.5:
2898
+ resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
2899
engines: {node: '>= 4'}
2900
2945
- immutable@5.1.2:
2946
- resolution: {integrity: sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==}
2901
+ immutable@5.1.3:
2902
+ resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==}
2903
2904
import-fresh@3.3.1:
2905
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
@@ -3311,9 +3267,6 @@ packages:
3267
longest-streak@3.1.0:
3268
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
3269
3314
- loupe@3.1.3:
3315
- resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
3316
-
3270
loupe@3.1.4:
3271
resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==}
3272
@@ -3751,8 +3704,8 @@ packages:
3704
pathe@2.0.3:
3705
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
3706
3754
- pathval@2.0.0:
3755
- resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
3707
+ pathval@2.0.1:
3708
+ resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
3709
engines: {node: '>= 14.16'}
3710
3711
pause-stream@0.0.11:
@@ -3810,8 +3763,8 @@ packages:
3763
pkg-types@1.3.1:
3764
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
3765
3813
- pkg-types@2.1.0:
3814
- resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==}
3766
+ pkg-types@2.1.1:
3767
+ resolution: {integrity: sha512-eY0QFb6eSwc9+0d/5D2lFFUq+A3n3QNGSy/X2Nvp+6MfzGw2u6EbA7S80actgjY1lkvvI0pqB+a4hioMh443Ew==}
3768
3769
please-upgrade-node@3.2.0:
3770
resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==}
@@ -3830,10 +3783,6 @@ packages:
3783
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
3784
engines: {node: '>=4'}
3785
3833
- postcss@8.5.3:
3834
- resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
3835
- engines: {node: ^10 || ^12 || >=14}
3836
-
3786
postcss@8.5.6:
3787
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
3788
engines: {node: ^10 || ^12 || >=14}
@@ -3897,8 +3846,8 @@ packages:
3846
prettier-plugin-svelte:
3847
optional: true
3848
3900
- prettier@3.6.0:
3901
- resolution: {integrity: sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==}
3849
+ prettier@3.6.2:
3850
+ resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
3851
engines: {node: '>=14'}
3852
hasBin: true
3853
@@ -3931,8 +3880,8 @@ packages:
3880
engines: {node: '>= 0.10'}
3881
hasBin: true
3882
3934
- pump@3.0.2:
3935
- resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
3883
+ pump@3.0.3:
3884
+ resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
3885
3886
punycode.js@2.3.1:
3887
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
@@ -4050,8 +3999,8 @@ packages:
3999
rollup:
4000
optional: true
4001
4053
- rollup@4.41.1:
4054
- resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==}
4002
+ rollup@4.44.1:
4003
+ resolution: {integrity: sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==}
4004
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
4005
hasBin: true
4006
@@ -4117,8 +4066,8 @@ packages:
4066
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
4067
engines: {node: '>=8'}
4068
4120
- shell-quote@1.8.2:
4121
- resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
4069
+ shell-quote@1.8.3:
4070
+ resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
4071
engines: {node: '>= 0.4'}
4072
4073
shiki@3.7.0:
@@ -4285,12 +4234,12 @@ packages:
4234
symbol-tree@3.2.4:
4235
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
4236
4288
- synckit@0.11.6:
4289
- resolution: {integrity: sha512-2pR2ubZSV64f/vqm9eLPz/KOvR9Dm+Co/5ChLgeHl0yEDRc6h5hXHoxEQH8Y5Ljycozd3p1k5TTSVdzYGkPvLw==}
4237
+ synckit@0.11.8:
4238
+ resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==}
4239
engines: {node: ^14.18.0 || >=16.0.0}
4240
4292
- tailwindcss@4.1.10:
4293
- resolution: {integrity: sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA==}
4241
+ tailwindcss@4.1.11:
4242
+ resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==}
4243
4244
tapable@2.2.2:
4245
resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==}
@@ -4554,10 +4503,10 @@ packages:
4503
peerDependencies:
4504
vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0
4505
4557
- vite-plugin-vue-inspector@5.3.1:
4558
- resolution: {integrity: sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==}
4506
+ vite-plugin-vue-inspector@5.3.2:
4507
+ resolution: {integrity: sha512-YvEKooQcSiBTAs0DoYLfefNja9bLgkFM7NI2b07bE2SruuvX0MEa9cMaxjKVMkeCp5Nz9FRIdcN1rOdFVBeL6Q==}
4508
peerDependencies:
4560
- vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0
4509
+ vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0
4510
4511
vite-svg-loader@5.1.0:
4512
resolution: {integrity: sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==}
@@ -4655,8 +4604,8 @@ packages:
4604
vue-component-type-helpers@2.2.10:
4605
resolution: {integrity: sha512-iDUO7uQK+Sab2tYuiP9D1oLujCWlhHELHMgV/cB13cuGbG4qwkLHvtfWb6FzvxrIOPDnU0oHsz2MlQjhYDeaHA==}
4606
4658
- vue-eslint-parser@10.1.3:
4659
- resolution: {integrity: sha512-dbCBnd2e02dYWsXoqX5yKUZlOt+ExIpq7hmHKPb5ZqKcjf++Eo0hMseFTZMLKThrUk61m+Uv6A2YSBve6ZvuDQ==}
4607
+ vue-eslint-parser@10.1.4:
4608
+ resolution: {integrity: sha512-EIZvCukIEMHEb3mxOKemtvWR1fcUAdWWAgkfyjmRHzvyhrZvBvH9oz69+thDIWhGiIQjZnPkCn8yHqvjM+a9eg==}
4609
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
4610
peerDependencies:
4611
eslint: ^8.57.0 || ^9.0.0
@@ -4955,44 +4904,44 @@ snapshots:
4904
'@jridgewell/gen-mapping': 0.3.8
4905
'@jridgewell/trace-mapping': 0.3.25
4906
4958
- '@antfu/eslint-config@4.16.1(@vue/compiler-sfc@3.5.17)(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.3)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))':
4907
+ '@antfu/eslint-config@4.16.1(@vue/compiler-sfc@3.5.17)(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.6)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))':
4908
dependencies:
4909
'@antfu/install-pkg': 1.1.0
4910
'@clack/prompts': 0.11.0
4962
- '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.29.0(jiti@2.4.2))
4911
+ '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.30.0(jiti@2.4.2))
4912
'@eslint/markdown': 6.6.0
4964
- '@stylistic/eslint-plugin': 5.0.0(eslint@9.29.0(jiti@2.4.2))
4965
- '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
4966
- '@typescript-eslint/parser': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
4967
- '@vitest/eslint-plugin': 1.2.7(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.3)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
4913
+ '@stylistic/eslint-plugin': 5.0.0(eslint@9.30.0(jiti@2.4.2))
4914
+ '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
4915
+ '@typescript-eslint/parser': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
4916
+ '@vitest/eslint-plugin': 1.3.3(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.6)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
4917
ansis: 4.1.0
4918
cac: 6.7.14
4970
- eslint: 9.29.0(jiti@2.4.2)
4971
- eslint-config-flat-gitignore: 2.1.0(eslint@9.29.0(jiti@2.4.2))
4919
+ eslint: 9.30.0(jiti@2.4.2)
4920
+ eslint-config-flat-gitignore: 2.1.0(eslint@9.30.0(jiti@2.4.2))
4921
eslint-flat-config-utils: 2.1.0
4973
- eslint-merge-processors: 2.0.0(eslint@9.29.0(jiti@2.4.2))
4974
- eslint-plugin-antfu: 3.1.1(eslint@9.29.0(jiti@2.4.2))
4975
- eslint-plugin-command: 3.3.1(eslint@9.29.0(jiti@2.4.2))
4976
- eslint-plugin-import-lite: 0.3.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
4977
- eslint-plugin-jsdoc: 51.2.1(eslint@9.29.0(jiti@2.4.2))
4978
- eslint-plugin-jsonc: 2.20.1(eslint@9.29.0(jiti@2.4.2))
4979
- eslint-plugin-n: 17.20.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
4922
+ eslint-merge-processors: 2.0.0(eslint@9.30.0(jiti@2.4.2))
4923
+ eslint-plugin-antfu: 3.1.1(eslint@9.30.0(jiti@2.4.2))
4924
+ eslint-plugin-command: 3.3.1(eslint@9.30.0(jiti@2.4.2))
4925
+ eslint-plugin-import-lite: 0.3.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
4926
+ eslint-plugin-jsdoc: 51.2.3(eslint@9.30.0(jiti@2.4.2))
4927
+ eslint-plugin-jsonc: 2.20.1(eslint@9.30.0(jiti@2.4.2))
4928
+ eslint-plugin-n: 17.20.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
4929
eslint-plugin-no-only-tests: 3.3.0
4981
- eslint-plugin-perfectionist: 4.15.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
4982
- eslint-plugin-pnpm: 0.3.1(eslint@9.29.0(jiti@2.4.2))
4983
- eslint-plugin-regexp: 2.9.0(eslint@9.29.0(jiti@2.4.2))
4984
- eslint-plugin-toml: 0.12.0(eslint@9.29.0(jiti@2.4.2))
4985
- eslint-plugin-unicorn: 59.0.1(eslint@9.29.0(jiti@2.4.2))
4986
- eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))
4987
- eslint-plugin-vue: 10.2.0(eslint@9.29.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.29.0(jiti@2.4.2)))
4988
- eslint-plugin-yml: 1.18.0(eslint@9.29.0(jiti@2.4.2))
4989
- eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.17)(eslint@9.29.0(jiti@2.4.2))
4930
+ eslint-plugin-perfectionist: 4.15.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
4931
+ eslint-plugin-pnpm: 0.3.1(eslint@9.30.0(jiti@2.4.2))
4932
+ eslint-plugin-regexp: 2.9.0(eslint@9.30.0(jiti@2.4.2))
4933
+ eslint-plugin-toml: 0.12.0(eslint@9.30.0(jiti@2.4.2))
4934
+ eslint-plugin-unicorn: 59.0.1(eslint@9.30.0(jiti@2.4.2))
4935
+ eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))
4936
+ eslint-plugin-vue: 10.2.0(eslint@9.30.0(jiti@2.4.2))(vue-eslint-parser@10.1.4(eslint@9.30.0(jiti@2.4.2)))
4937
+ eslint-plugin-yml: 1.18.0(eslint@9.30.0(jiti@2.4.2))
4938
+ eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.17)(eslint@9.30.0(jiti@2.4.2))
4939
globals: 16.2.0
4940
jsonc-eslint-parser: 2.4.0
4941
local-pkg: 1.1.1
4942
parse-gitignore: 2.0.0
4943
toml-eslint-parser: 0.10.0
4995
- vue-eslint-parser: 10.1.3(eslint@9.29.0(jiti@2.4.2))
4944
+ vue-eslint-parser: 10.1.4(eslint@9.30.0(jiti@2.4.2))
4945
yaml-eslint-parser: 1.3.0
4946
transitivePeerDependencies:
4947
- '@eslint/json'
@@ -5008,7 +4957,7 @@ snapshots:
4957
4958
'@antfu/ni@24.4.0':
4959
dependencies:
5011
- ansis: 4.0.0
4960
+ ansis: 4.1.0
4961
fzf: 0.5.2
4962
package-manager-detector: 1.3.0
4963
tinyexec: 1.0.1
@@ -5029,20 +4978,20 @@ snapshots:
4978
js-tokens: 4.0.0
4979
picocolors: 1.1.1
4980
5032
- '@babel/compat-data@7.27.3': {}
4981
+ '@babel/compat-data@7.27.7': {}
4982
5034
- '@babel/core@7.27.3':
4983
+ '@babel/core@7.27.7':
4984
dependencies:
4985
'@ampproject/remapping': 2.3.0
4986
'@babel/code-frame': 7.27.1
5038
- '@babel/generator': 7.27.3
4987
+ '@babel/generator': 7.27.5
4988
'@babel/helper-compilation-targets': 7.27.2
5040
- '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.3)
5041
- '@babel/helpers': 7.27.3
5042
- '@babel/parser': 7.27.3
4989
+ '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7)
4990
+ '@babel/helpers': 7.27.6
4991
+ '@babel/parser': 7.27.7
4992
'@babel/template': 7.27.2
5044
- '@babel/traverse': 7.27.3
5045
- '@babel/types': 7.27.3
4993
+ '@babel/traverse': 7.27.7
4994
+ '@babel/types': 7.27.7
4995
convert-source-map: 2.0.0
4996
debug: 4.4.1(supports-color@8.1.1)
4997
gensync: 1.0.0-beta.2
@@ -5051,81 +5000,81 @@ snapshots:
5000
transitivePeerDependencies:
5001
- supports-color
5002
5054
- '@babel/generator@7.27.3':
5003
+ '@babel/generator@7.27.5':
5004
dependencies:
5056
- '@babel/parser': 7.27.3
5057
- '@babel/types': 7.27.3
5005
+ '@babel/parser': 7.27.7
5006
+ '@babel/types': 7.27.7
5007
'@jridgewell/gen-mapping': 0.3.8
5008
'@jridgewell/trace-mapping': 0.3.25
5009
jsesc: 3.1.0
5010
5011
'@babel/helper-annotate-as-pure@7.27.3':
5012
dependencies:
5064
- '@babel/types': 7.27.3
5013
+ '@babel/types': 7.27.7
5014
5015
'@babel/helper-compilation-targets@7.27.2':
5016
dependencies:
5068
- '@babel/compat-data': 7.27.3
5017
+ '@babel/compat-data': 7.27.7
5018
'@babel/helper-validator-option': 7.27.1
5070
- browserslist: 4.24.5
5019
+ browserslist: 4.25.1
5020
lru-cache: 5.1.1
5021
semver: 6.3.1
5022
5074
- '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.3)':
5023
+ '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.7)':
5024
dependencies:
5076
- '@babel/core': 7.27.3
5025
+ '@babel/core': 7.27.7
5026
'@babel/helper-annotate-as-pure': 7.27.3
5027
'@babel/helper-member-expression-to-functions': 7.27.1
5028
'@babel/helper-optimise-call-expression': 7.27.1
5080
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.3)
5029
+ '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.7)
5030
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
5082
- '@babel/traverse': 7.27.3
5031
+ '@babel/traverse': 7.27.7
5032
semver: 6.3.1
5033
transitivePeerDependencies:
5034
- supports-color
5035
5036
'@babel/helper-member-expression-to-functions@7.27.1':
5037
dependencies:
5089
- '@babel/traverse': 7.27.3
5090
- '@babel/types': 7.27.3
5038
+ '@babel/traverse': 7.27.7
5039
+ '@babel/types': 7.27.7
5040
transitivePeerDependencies:
5041
- supports-color
5042
5043
'@babel/helper-module-imports@7.27.1':
5044
dependencies:
5096
- '@babel/traverse': 7.27.3
5097
- '@babel/types': 7.27.3
5045
+ '@babel/traverse': 7.27.7
5046
+ '@babel/types': 7.27.7
5047
transitivePeerDependencies:
5048
- supports-color
5049
5101
- '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.3)':
5050
+ '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.7)':
5051
dependencies:
5103
- '@babel/core': 7.27.3
5052
+ '@babel/core': 7.27.7
5053
'@babel/helper-module-imports': 7.27.1
5054
'@babel/helper-validator-identifier': 7.27.1
5106
- '@babel/traverse': 7.27.3
5055
+ '@babel/traverse': 7.27.7
5056
transitivePeerDependencies:
5057
- supports-color
5058
5059
'@babel/helper-optimise-call-expression@7.27.1':
5060
dependencies:
5112
- '@babel/types': 7.27.3
5061
+ '@babel/types': 7.27.7
5062
5063
'@babel/helper-plugin-utils@7.27.1': {}
5064
5116
- '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.3)':
5065
+ '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.7)':
5066
dependencies:
5118
- '@babel/core': 7.27.3
5067
+ '@babel/core': 7.27.7
5068
'@babel/helper-member-expression-to-functions': 7.27.1
5069
'@babel/helper-optimise-call-expression': 7.27.1
5121
- '@babel/traverse': 7.27.3
5070
+ '@babel/traverse': 7.27.7
5071
transitivePeerDependencies:
5072
- supports-color
5073
5074
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
5075
dependencies:
5127
- '@babel/traverse': 7.27.3
5128
- '@babel/types': 7.27.3
5076
+ '@babel/traverse': 7.27.7
5077
+ '@babel/types': 7.27.7
5078
transitivePeerDependencies:
5079
- supports-color
5080
@@ -5135,83 +5084,79 @@ snapshots:
5084
5085
'@babel/helper-validator-option@7.27.1': {}
5086
5138
- '@babel/helpers@7.27.3':
5087
+ '@babel/helpers@7.27.6':
5088
dependencies:
5089
'@babel/template': 7.27.2
5141
- '@babel/types': 7.27.3
5142
-
5143
- '@babel/parser@7.27.3':
5144
- dependencies:
5145
- '@babel/types': 7.27.3
5090
+ '@babel/types': 7.27.7
5091
5147
- '@babel/parser@7.27.5':
5092
+ '@babel/parser@7.27.7':
5093
dependencies:
5149
- '@babel/types': 7.27.3
5094
+ '@babel/types': 7.27.7
5095
5151
- '@babel/plugin-proposal-decorators@7.27.1(@babel/core@7.27.3)':
5096
+ '@babel/plugin-proposal-decorators@7.27.1(@babel/core@7.27.7)':
5097
dependencies:
5153
- '@babel/core': 7.27.3
5154
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.3)
5098
+ '@babel/core': 7.27.7
5099
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7)
5100
'@babel/helper-plugin-utils': 7.27.1
5156
- '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.27.3)
5101
+ '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.27.7)
5102
transitivePeerDependencies:
5103
- supports-color
5104
5160
- '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.27.3)':
5105
+ '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.27.7)':
5106
dependencies:
5162
- '@babel/core': 7.27.3
5107
+ '@babel/core': 7.27.7
5108
'@babel/helper-plugin-utils': 7.27.1
5109
5165
- '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.3)':
5110
+ '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.7)':
5111
dependencies:
5167
- '@babel/core': 7.27.3
5112
+ '@babel/core': 7.27.7
5113
'@babel/helper-plugin-utils': 7.27.1
5114
5170
- '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.3)':
5115
+ '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.7)':
5116
dependencies:
5172
- '@babel/core': 7.27.3
5117
+ '@babel/core': 7.27.7
5118
'@babel/helper-plugin-utils': 7.27.1
5119
5175
- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.3)':
5120
+ '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.7)':
5121
dependencies:
5177
- '@babel/core': 7.27.3
5122
+ '@babel/core': 7.27.7
5123
'@babel/helper-plugin-utils': 7.27.1
5124
5180
- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.3)':
5125
+ '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.7)':
5126
dependencies:
5182
- '@babel/core': 7.27.3
5127
+ '@babel/core': 7.27.7
5128
'@babel/helper-plugin-utils': 7.27.1
5129
5185
- '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.3)':
5130
+ '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.7)':
5131
dependencies:
5187
- '@babel/core': 7.27.3
5132
+ '@babel/core': 7.27.7
5133
'@babel/helper-annotate-as-pure': 7.27.3
5189
- '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.3)
5134
+ '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7)
5135
'@babel/helper-plugin-utils': 7.27.1
5136
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
5192
- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.3)
5137
+ '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.7)
5138
transitivePeerDependencies:
5139
- supports-color
5140
5141
'@babel/template@7.27.2':
5142
dependencies:
5143
'@babel/code-frame': 7.27.1
5199
- '@babel/parser': 7.27.3
5200
- '@babel/types': 7.27.3
5144
+ '@babel/parser': 7.27.7
5145
+ '@babel/types': 7.27.7
5146
5202
- '@babel/traverse@7.27.3':
5147
+ '@babel/traverse@7.27.7':
5148
dependencies:
5149
'@babel/code-frame': 7.27.1
5205
- '@babel/generator': 7.27.3
5206
- '@babel/parser': 7.27.3
5150
+ '@babel/generator': 7.27.5
5151
+ '@babel/parser': 7.27.7
5152
'@babel/template': 7.27.2
5208
- '@babel/types': 7.27.3
5153
+ '@babel/types': 7.27.7
5154
debug: 4.4.1(supports-color@8.1.1)
5155
globals: 11.12.0
5156
transitivePeerDependencies:
5157
- supports-color
5158
5214
- '@babel/types@7.27.3':
5159
+ '@babel/types@7.27.7':
5160
dependencies:
5161
'@babel/helper-string-parser': 7.27.1
5162
'@babel/helper-validator-identifier': 7.27.1
@@ -5229,41 +5174,41 @@ snapshots:
5174
5175
'@codemirror/autocomplete@6.18.6':
5176
dependencies:
5232
- '@codemirror/language': 6.11.0
5177
+ '@codemirror/language': 6.11.2
5178
'@codemirror/state': 6.5.2
5234
- '@codemirror/view': 6.36.8
5179
+ '@codemirror/view': 6.38.0
5180
'@lezer/common': 1.2.3
5181
5182
'@codemirror/commands@6.8.1':
5183
dependencies:
5239
- '@codemirror/language': 6.11.0
5184
+ '@codemirror/language': 6.11.2
5185
'@codemirror/state': 6.5.2
5241
- '@codemirror/view': 6.36.8
5186
+ '@codemirror/view': 6.38.0
5187
'@lezer/common': 1.2.3
5188
5189
'@codemirror/lang-javascript@6.2.4':
5190
dependencies:
5191
'@codemirror/autocomplete': 6.18.6
5247
- '@codemirror/language': 6.11.0
5192
+ '@codemirror/language': 6.11.2
5193
'@codemirror/lint': 6.8.5
5194
'@codemirror/state': 6.5.2
5250
- '@codemirror/view': 6.36.8
5195
+ '@codemirror/view': 6.38.0
5196
'@lezer/common': 1.2.3
5197
'@lezer/javascript': 1.5.1
5198
5199
'@codemirror/lang-xml@6.1.0':
5200
dependencies:
5201
'@codemirror/autocomplete': 6.18.6
5257
- '@codemirror/language': 6.11.0
5202
+ '@codemirror/language': 6.11.2
5203
'@codemirror/state': 6.5.2
5259
- '@codemirror/view': 6.36.8
5204
+ '@codemirror/view': 6.38.0
5205
'@lezer/common': 1.2.3
5206
'@lezer/xml': 1.0.6
5207
5263
- '@codemirror/language@6.11.0':
5208
+ '@codemirror/language@6.11.2':
5209
dependencies:
5210
'@codemirror/state': 6.5.2
5266
- '@codemirror/view': 6.36.8
5211
+ '@codemirror/view': 6.38.0
5212
'@lezer/common': 1.2.3
5213
'@lezer/highlight': 1.2.1
5214
'@lezer/lr': 1.4.2
@@ -5272,13 +5217,13 @@ snapshots:
5217
'@codemirror/lint@6.8.5':
5218
dependencies:
5219
'@codemirror/state': 6.5.2
5275
- '@codemirror/view': 6.36.8
5220
+ '@codemirror/view': 6.38.0
5221
crelt: 1.0.6
5222
5223
'@codemirror/search@6.5.11':
5224
dependencies:
5225
'@codemirror/state': 6.5.2
5281
- '@codemirror/view': 6.36.8
5226
+ '@codemirror/view': 6.38.0
5227
crelt: 1.0.6
5228
5229
'@codemirror/state@6.5.2':
@@ -5287,14 +5232,15 @@ snapshots:
5232
5233
'@codemirror/theme-one-dark@6.1.3':
5234
dependencies:
5290
- '@codemirror/language': 6.11.0
5235
+ '@codemirror/language': 6.11.2
5236
'@codemirror/state': 6.5.2
5292
- '@codemirror/view': 6.36.8
5237
+ '@codemirror/view': 6.38.0
5238
'@lezer/highlight': 1.2.1
5239
5295
- '@codemirror/view@6.36.8':
5240
+ '@codemirror/view@6.38.0':
5241
dependencies:
5242
'@codemirror/state': 6.5.2
5243
+ crelt: 1.0.6
5244
style-mod: 4.1.2
5245
w3c-keyname: 2.2.8
5246
@@ -5334,7 +5280,7 @@ snapshots:
5280
combined-stream: 1.0.8
5281
extend: 3.0.2
5282
forever-agent: 0.6.1
5337
- form-data: 4.0.2
5283
+ form-data: 4.0.3
5284
http-signature: 1.4.0
5285
is-typedarray: 1.0.0
5286
isstream: 0.1.2
@@ -5359,7 +5305,7 @@ snapshots:
5305
'@es-joy/jsdoccomment@0.50.2':
5306
dependencies:
5307
'@types/estree': 1.0.8
5362
- '@typescript-eslint/types': 8.34.1
5308
+ '@typescript-eslint/types': 8.35.0
5309
comment-parser: 1.4.1
5310
esquery: 1.6.0
5311
jsdoc-type-pratt-parser: 4.1.0
@@ -5367,7 +5313,7 @@ snapshots:
5313
'@es-joy/jsdoccomment@0.52.0':
5314
dependencies:
5315
'@types/estree': 1.0.8
5370
- '@typescript-eslint/types': 8.34.1
5316
+ '@typescript-eslint/types': 8.35.0
5317
comment-parser: 1.4.1
5318
esquery: 1.6.0
5319
jsdoc-type-pratt-parser: 4.1.0
@@ -5447,24 +5393,24 @@ snapshots:
5393
'@esbuild/win32-x64@0.25.5':
5394
optional: true
5395
5450
- '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.29.0(jiti@2.4.2))':
5396
+ '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.30.0(jiti@2.4.2))':
5397
dependencies:
5398
escape-string-regexp: 4.0.0
5453
- eslint: 9.29.0(jiti@2.4.2)
5399
+ eslint: 9.30.0(jiti@2.4.2)
5400
ignore: 5.3.2
5401
5456
- '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0(jiti@2.4.2))':
5402
+ '@eslint-community/eslint-utils@4.7.0(eslint@9.30.0(jiti@2.4.2))':
5403
dependencies:
5458
- eslint: 9.29.0(jiti@2.4.2)
5404
+ eslint: 9.30.0(jiti@2.4.2)
5405
eslint-visitor-keys: 3.4.3
5406
5407
'@eslint-community/regexpp@4.12.1': {}
5408
5463
- '@eslint/compat@1.2.9(eslint@9.29.0(jiti@2.4.2))':
5409
+ '@eslint/compat@1.3.1(eslint@9.30.0(jiti@2.4.2))':
5410
optionalDependencies:
5465
- eslint: 9.29.0(jiti@2.4.2)
5411
+ eslint: 9.30.0(jiti@2.4.2)
5412
5467
- '@eslint/config-array@0.20.1':
5413
+ '@eslint/config-array@0.21.0':
5414
dependencies:
5415
'@eslint/object-schema': 2.1.6
5416
debug: 4.4.1(supports-color@8.1.1)
@@ -5472,7 +5418,7 @@ snapshots:
5418
transitivePeerDependencies:
5419
- supports-color
5420
5475
- '@eslint/config-helpers@0.2.2': {}
5421
+ '@eslint/config-helpers@0.3.0': {}
5422
5423
'@eslint/core@0.13.0':
5424
dependencies:
@@ -5482,6 +5428,10 @@ snapshots:
5428
dependencies:
5429
'@types/json-schema': 7.0.15
5430
5431
+ '@eslint/core@0.15.1':
5432
+ dependencies:
5433
+ '@types/json-schema': 7.0.15
5434
+
5435
'@eslint/eslintrc@3.3.1':
5436
dependencies:
5437
ajv: 6.12.6
@@ -5496,12 +5446,12 @@ snapshots:
5446
transitivePeerDependencies:
5447
- supports-color
5448
5499
- '@eslint/js@9.29.0': {}
5449
+ '@eslint/js@9.30.0': {}
5450
5451
'@eslint/markdown@6.6.0':
5452
dependencies:
5453
'@eslint/core': 0.14.0
5504
- '@eslint/plugin-kit': 0.3.1
5454
+ '@eslint/plugin-kit': 0.3.3
5455
github-slugger: 2.0.0
5456
mdast-util-from-markdown: 2.0.2
5457
mdast-util-frontmatter: 2.0.1
@@ -5518,9 +5468,9 @@ snapshots:
5468
'@eslint/core': 0.13.0
5469
levn: 0.4.1
5470
5521
- '@eslint/plugin-kit@0.3.1':
5471
+ '@eslint/plugin-kit@0.3.3':
5472
dependencies:
5523
- '@eslint/core': 0.14.0
5473
+ '@eslint/core': 0.15.1
5474
levn: 0.4.1
5475
5476
'@f3ve/vue-markdown-it@0.2.3(vue@3.5.17(typescript@5.8.3))':
@@ -5640,22 +5590,22 @@ snapshots:
5590
'@nodelib/fs.scandir': 2.1.5
5591
fastq: 1.19.1
5592
5643
- '@nuxt/kit@3.17.4':
5593
+ '@nuxt/kit@3.17.5':
5594
dependencies:
5595
c12: 3.0.4
5596
consola: 3.4.2
5597
defu: 6.1.4
5598
destr: 2.0.5
5599
errx: 0.1.0
5650
- exsolve: 1.0.5
5651
- ignore: 7.0.4
5600
+ exsolve: 1.0.7
5601
+ ignore: 7.0.5
5602
jiti: 2.4.2
5603
klona: 2.0.6
5604
knitwork: 1.2.0
5605
mlly: 1.7.4
5606
ohash: 2.0.11
5607
pathe: 2.0.3
5658
- pkg-types: 2.1.0
5608
+ pkg-types: 2.1.1
5609
scule: 1.3.0
5610
semver: 7.7.2
5611
std-env: 3.9.0
@@ -5733,7 +5683,7 @@ snapshots:
5683
'@pkgjs/parseargs@0.11.0':
5684
optional: true
5685
5736
- '@pkgr/core@0.2.4': {}
5686
+ '@pkgr/core@0.2.7': {}
5687
5688
'@polka/url@1.0.0-next.29': {}
5689
@@ -5741,77 +5691,74 @@ snapshots:
5691
dependencies:
5692
quansync: 0.2.10
5693
5744
- '@rolldown/pluginutils@1.0.0-beta.10': {}
5694
+ '@rolldown/pluginutils@1.0.0-beta.21': {}
5695
5746
- '@rollup/pluginutils@5.1.4(rollup@4.41.1)':
5696
+ '@rollup/pluginutils@5.2.0(rollup@4.44.1)':
5697
dependencies:
5748
- '@types/estree': 1.0.7
5698
+ '@types/estree': 1.0.8
5699
estree-walker: 2.0.2
5700
picomatch: 4.0.2
5701
optionalDependencies:
5752
- rollup: 4.41.1
5702
+ rollup: 4.44.1
5703
5754
- '@rollup/rollup-android-arm-eabi@4.41.1':
5704
+ '@rollup/rollup-android-arm-eabi@4.44.1':
5705
optional: true
5706
5757
- '@rollup/rollup-android-arm64@4.41.1':
5707
+ '@rollup/rollup-android-arm64@4.44.1':
5708
optional: true
5709
5760
- '@rollup/rollup-darwin-arm64@4.41.1':
5710
+ '@rollup/rollup-darwin-arm64@4.44.1':
5711
optional: true
5712
5763
- '@rollup/rollup-darwin-x64@4.41.1':
5713
+ '@rollup/rollup-darwin-x64@4.44.1':
5714
optional: true
5715
5766
- '@rollup/rollup-freebsd-arm64@4.41.1':
5716
+ '@rollup/rollup-freebsd-arm64@4.44.1':
5717
optional: true
5718
5769
- '@rollup/rollup-freebsd-x64@4.41.1':
5719
+ '@rollup/rollup-freebsd-x64@4.44.1':
5720
optional: true
5721
5772
- '@rollup/rollup-linux-arm-gnueabihf@4.41.1':
5722
+ '@rollup/rollup-linux-arm-gnueabihf@4.44.1':
5723
optional: true
5724
5775
- '@rollup/rollup-linux-arm-musleabihf@4.41.1':
5725
+ '@rollup/rollup-linux-arm-musleabihf@4.44.1':
5726
optional: true
5727
5778
- '@rollup/rollup-linux-arm64-gnu@4.41.1':
5728
+ '@rollup/rollup-linux-arm64-gnu@4.44.1':
5729
optional: true
5730
5781
- '@rollup/rollup-linux-arm64-musl@4.41.1':
5731
+ '@rollup/rollup-linux-arm64-musl@4.44.1':
5732
optional: true
5733
5784
- '@rollup/rollup-linux-loongarch64-gnu@4.41.1':
5734
+ '@rollup/rollup-linux-loongarch64-gnu@4.44.1':
5735
optional: true
5736
5787
- '@rollup/rollup-linux-powerpc64le-gnu@4.41.1':
5737
+ '@rollup/rollup-linux-powerpc64le-gnu@4.44.1':
5738
optional: true
5739
5790
- '@rollup/rollup-linux-riscv64-gnu@4.41.1':
5740
+ '@rollup/rollup-linux-riscv64-gnu@4.44.1':
5741
optional: true
5742
5793
- '@rollup/rollup-linux-riscv64-musl@4.41.1':
5743
+ '@rollup/rollup-linux-riscv64-musl@4.44.1':
5744
optional: true
5745
5796
- '@rollup/rollup-linux-s390x-gnu@4.41.1':
5746
+ '@rollup/rollup-linux-s390x-gnu@4.44.1':
5747
optional: true
5748
5799
- '@rollup/rollup-linux-x64-gnu@4.41.1':
5749
+ '@rollup/rollup-linux-x64-gnu@4.44.1':
5750
optional: true
5751
5802
- '@rollup/rollup-linux-x64-gnu@4.44.0':
5752
+ '@rollup/rollup-linux-x64-musl@4.44.1':
5753
optional: true
5754
5805
- '@rollup/rollup-linux-x64-musl@4.41.1':
5755
+ '@rollup/rollup-win32-arm64-msvc@4.44.1':
5756
optional: true
5757
5808
- '@rollup/rollup-win32-arm64-msvc@4.41.1':
5758
+ '@rollup/rollup-win32-ia32-msvc@4.44.1':
5759
optional: true
5760
5811
- '@rollup/rollup-win32-ia32-msvc@4.41.1':
5812
- optional: true
5813
-
5814
- '@rollup/rollup-win32-x64-msvc@4.41.1':
5761
+ '@rollup/rollup-win32-x64-msvc@4.44.1':
5762
optional: true
5763
5764
'@sec-ant/readable-stream@0.4.1': {}
@@ -5868,11 +5815,11 @@ snapshots:
5815
dependencies:
5816
algoliasearch: 5.29.0
5817
5871
- '@stylistic/eslint-plugin@5.0.0(eslint@9.29.0(jiti@2.4.2))':
5818
+ '@stylistic/eslint-plugin@5.0.0(eslint@9.30.0(jiti@2.4.2))':
5819
dependencies:
5873
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
5874
- '@typescript-eslint/types': 8.34.1
5875
- eslint: 9.29.0(jiti@2.4.2)
5820
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
5821
+ '@typescript-eslint/types': 8.35.0
5822
+ eslint: 9.30.0(jiti@2.4.2)
5823
eslint-visitor-keys: 4.2.1
5824
espree: 10.4.0
5825
estraverse: 5.3.0
@@ -5897,76 +5844,76 @@ snapshots:
5844
dependencies:
5845
'@svgdotjs/svg.js': 3.2.4
5846
5900
- '@tailwindcss/node@4.1.10':
5847
+ '@tailwindcss/node@4.1.11':
5848
dependencies:
5849
'@ampproject/remapping': 2.3.0
5903
- enhanced-resolve: 5.18.1
5850
+ enhanced-resolve: 5.18.2
5851
jiti: 2.4.2
5852
lightningcss: 1.30.1
5853
magic-string: 0.30.17
5854
source-map-js: 1.2.1
5908
- tailwindcss: 4.1.10
5855
+ tailwindcss: 4.1.11
5856
5910
- '@tailwindcss/oxide-android-arm64@4.1.10':
5857
+ '@tailwindcss/oxide-android-arm64@4.1.11':
5858
optional: true
5859
5913
- '@tailwindcss/oxide-darwin-arm64@4.1.10':
5860
+ '@tailwindcss/oxide-darwin-arm64@4.1.11':
5861
optional: true
5862
5916
- '@tailwindcss/oxide-darwin-x64@4.1.10':
5863
+ '@tailwindcss/oxide-darwin-x64@4.1.11':
5864
optional: true
5865
5919
- '@tailwindcss/oxide-freebsd-x64@4.1.10':
5866
+ '@tailwindcss/oxide-freebsd-x64@4.1.11':
5867
optional: true
5868
5922
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.10':
5869
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11':
5870
optional: true
5871
5925
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.10':
5872
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.11':
5873
optional: true
5874
5928
- '@tailwindcss/oxide-linux-arm64-musl@4.1.10':
5875
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.11':
5876
optional: true
5877
5931
- '@tailwindcss/oxide-linux-x64-gnu@4.1.10':
5878
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.11':
5879
optional: true
5880
5934
- '@tailwindcss/oxide-linux-x64-musl@4.1.10':
5881
+ '@tailwindcss/oxide-linux-x64-musl@4.1.11':
5882
optional: true
5883
5937
- '@tailwindcss/oxide-wasm32-wasi@4.1.10':
5884
+ '@tailwindcss/oxide-wasm32-wasi@4.1.11':
5885
optional: true
5886
5940
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.10':
5887
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.11':
5888
optional: true
5889
5943
- '@tailwindcss/oxide-win32-x64-msvc@4.1.10':
5890
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.11':
5891
optional: true
5892
5946
- '@tailwindcss/oxide@4.1.10':
5893
+ '@tailwindcss/oxide@4.1.11':
5894
dependencies:
5895
detect-libc: 2.0.4
5896
tar: 7.4.3
5897
optionalDependencies:
5951
- '@tailwindcss/oxide-android-arm64': 4.1.10
5952
- '@tailwindcss/oxide-darwin-arm64': 4.1.10
5953
- '@tailwindcss/oxide-darwin-x64': 4.1.10
5954
- '@tailwindcss/oxide-freebsd-x64': 4.1.10
5955
- '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.10
5956
- '@tailwindcss/oxide-linux-arm64-gnu': 4.1.10
5957
- '@tailwindcss/oxide-linux-arm64-musl': 4.1.10
5958
- '@tailwindcss/oxide-linux-x64-gnu': 4.1.10
5959
- '@tailwindcss/oxide-linux-x64-musl': 4.1.10
5960
- '@tailwindcss/oxide-wasm32-wasi': 4.1.10
5961
- '@tailwindcss/oxide-win32-arm64-msvc': 4.1.10
5962
- '@tailwindcss/oxide-win32-x64-msvc': 4.1.10
5963
-
5964
- '@tailwindcss/vite@4.1.10(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))':
5965
- dependencies:
5966
- '@tailwindcss/node': 4.1.10
5967
- '@tailwindcss/oxide': 4.1.10
5968
- tailwindcss: 4.1.10
5969
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
5898
+ '@tailwindcss/oxide-android-arm64': 4.1.11
5899
+ '@tailwindcss/oxide-darwin-arm64': 4.1.11
5900
+ '@tailwindcss/oxide-darwin-x64': 4.1.11
5901
+ '@tailwindcss/oxide-freebsd-x64': 4.1.11
5902
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.11
5903
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.1.11
5904
+ '@tailwindcss/oxide-linux-arm64-musl': 4.1.11
5905
+ '@tailwindcss/oxide-linux-x64-gnu': 4.1.11
5906
+ '@tailwindcss/oxide-linux-x64-musl': 4.1.11
5907
+ '@tailwindcss/oxide-wasm32-wasi': 4.1.11
5908
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.1.11
5909
+ '@tailwindcss/oxide-win32-x64-msvc': 4.1.11
5910
+
5911
+ '@tailwindcss/vite@4.1.11(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))':
5912
+ dependencies:
5913
+ '@tailwindcss/node': 4.1.11
5914
+ '@tailwindcss/oxide': 4.1.11
5915
+ tailwindcss: 4.1.11
5916
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
5917
5918
'@trysound/sax@0.2.0': {}
5919
@@ -5978,14 +5925,16 @@ snapshots:
5925
dependencies:
5926
'@types/deep-eql': 4.0.2
5927
5928
+ '@types/codemirror@5.60.16':
5929
+ dependencies:
5930
+ '@types/tern': 0.23.9
5931
+
5932
'@types/debug@4.1.12':
5933
dependencies:
5934
'@types/ms': 2.1.0
5935
5936
'@types/deep-eql@4.0.2': {}
5937
5987
- '@types/estree@1.0.7': {}
5988
-
5938
'@types/estree@1.0.8': {}
5939
5940
'@types/file-saver@2.0.7': {}
@@ -5993,7 +5942,7 @@ snapshots:
5942
'@types/fs-extra@11.0.4':
5943
dependencies:
5944
'@types/jsonfile': 6.1.4
5996
- '@types/node': 24.0.3
5945
+ '@types/node': 24.0.6
5946
5947
'@types/hast@3.0.4':
5948
dependencies:
@@ -6001,7 +5950,7 @@ snapshots:
5950
5951
'@types/jsdom@21.1.7':
5952
dependencies:
6004
- '@types/node': 24.0.3
5953
+ '@types/node': 24.0.6
5954
'@types/tough-cookie': 4.0.5
5955
parse5: 7.3.0
5956
@@ -6009,7 +5958,7 @@ snapshots:
5958
5959
'@types/jsonfile@6.1.4':
5960
dependencies:
6012
- '@types/node': 24.0.3
5961
+ '@types/node': 24.0.6
5962
5963
'@types/katex@0.16.7': {}
5964
@@ -6017,9 +5966,9 @@ snapshots:
5966
5967
'@types/lodash-es@4.17.12':
5968
dependencies:
6020
- '@types/lodash': 4.17.18
5969
+ '@types/lodash': 4.17.19
5970
6022
- '@types/lodash@4.17.18': {}
5971
+ '@types/lodash@4.17.19': {}
5972
5973
'@types/markdown-it@14.1.2':
5974
dependencies:
@@ -6036,7 +5985,7 @@ snapshots:
5985
5986
'@types/ms@2.1.0': {}
5987
6039
- '@types/node@24.0.3':
5988
+ '@types/node@24.0.6':
5989
dependencies:
5990
undici-types: 7.8.0
5991
@@ -6046,6 +5995,10 @@ snapshots:
5995
5996
'@types/sizzle@2.3.9': {}
5997
5998
+ '@types/tern@0.23.9':
5999
+ dependencies:
6000
+ '@types/estree': 1.0.8
6001
+
6002
'@types/tough-cookie@4.0.5': {}
6003
6004
'@types/unist@3.0.3': {}
@@ -6056,75 +6009,75 @@ snapshots:
6009
6010
'@types/yauzl@2.10.3':
6011
dependencies:
6059
- '@types/node': 24.0.3
6012
+ '@types/node': 24.0.6
6013
optional: true
6014
6062
- '@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)':
6015
+ '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
6016
dependencies:
6017
'@eslint-community/regexpp': 4.12.1
6065
- '@typescript-eslint/parser': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
6066
- '@typescript-eslint/scope-manager': 8.34.1
6067
- '@typescript-eslint/type-utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
6068
- '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
6069
- '@typescript-eslint/visitor-keys': 8.34.1
6070
- eslint: 9.29.0(jiti@2.4.2)
6018
+ '@typescript-eslint/parser': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
6019
+ '@typescript-eslint/scope-manager': 8.35.0
6020
+ '@typescript-eslint/type-utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
6021
+ '@typescript-eslint/utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
6022
+ '@typescript-eslint/visitor-keys': 8.35.0
6023
+ eslint: 9.30.0(jiti@2.4.2)
6024
graphemer: 1.4.0
6072
- ignore: 7.0.4
6025
+ ignore: 7.0.5
6026
natural-compare: 1.4.0
6027
ts-api-utils: 2.1.0(typescript@5.8.3)
6028
typescript: 5.8.3
6029
transitivePeerDependencies:
6030
- supports-color
6031
6079
- '@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)':
6032
+ '@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
6033
dependencies:
6081
- '@typescript-eslint/scope-manager': 8.34.1
6082
- '@typescript-eslint/types': 8.34.1
6083
- '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3)
6084
- '@typescript-eslint/visitor-keys': 8.34.1
6034
+ '@typescript-eslint/scope-manager': 8.35.0
6035
+ '@typescript-eslint/types': 8.35.0
6036
+ '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3)
6037
+ '@typescript-eslint/visitor-keys': 8.35.0
6038
debug: 4.4.1(supports-color@8.1.1)
6086
- eslint: 9.29.0(jiti@2.4.2)
6039
+ eslint: 9.30.0(jiti@2.4.2)
6040
typescript: 5.8.3
6041
transitivePeerDependencies:
6042
- supports-color
6043
6091
- '@typescript-eslint/project-service@8.34.1(typescript@5.8.3)':
6044
+ '@typescript-eslint/project-service@8.35.0(typescript@5.8.3)':
6045
dependencies:
6093
- '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3)
6094
- '@typescript-eslint/types': 8.34.1
6046
+ '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3)
6047
+ '@typescript-eslint/types': 8.35.0
6048
debug: 4.4.1(supports-color@8.1.1)
6049
typescript: 5.8.3
6050
transitivePeerDependencies:
6051
- supports-color
6052
6100
- '@typescript-eslint/scope-manager@8.34.1':
6053
+ '@typescript-eslint/scope-manager@8.35.0':
6054
dependencies:
6102
- '@typescript-eslint/types': 8.34.1
6103
- '@typescript-eslint/visitor-keys': 8.34.1
6055
+ '@typescript-eslint/types': 8.35.0
6056
+ '@typescript-eslint/visitor-keys': 8.35.0
6057
6105
- '@typescript-eslint/tsconfig-utils@8.34.1(typescript@5.8.3)':
6058
+ '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.8.3)':
6059
dependencies:
6060
typescript: 5.8.3
6061
6109
- '@typescript-eslint/type-utils@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)':
6062
+ '@typescript-eslint/type-utils@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
6063
dependencies:
6111
- '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3)
6112
- '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
6064
+ '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3)
6065
+ '@typescript-eslint/utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
6066
debug: 4.4.1(supports-color@8.1.1)
6114
- eslint: 9.29.0(jiti@2.4.2)
6067
+ eslint: 9.30.0(jiti@2.4.2)
6068
ts-api-utils: 2.1.0(typescript@5.8.3)
6069
typescript: 5.8.3
6070
transitivePeerDependencies:
6071
- supports-color
6072
6120
- '@typescript-eslint/types@8.34.1': {}
6073
+ '@typescript-eslint/types@8.35.0': {}
6074
6122
- '@typescript-eslint/typescript-estree@8.34.1(typescript@5.8.3)':
6075
+ '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)':
6076
dependencies:
6124
- '@typescript-eslint/project-service': 8.34.1(typescript@5.8.3)
6125
- '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3)
6126
- '@typescript-eslint/types': 8.34.1
6127
- '@typescript-eslint/visitor-keys': 8.34.1
6077
+ '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3)
6078
+ '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3)
6079
+ '@typescript-eslint/types': 8.35.0
6080
+ '@typescript-eslint/visitor-keys': 8.35.0
6081
debug: 4.4.1(supports-color@8.1.1)
6082
fast-glob: 3.3.3
6083
is-glob: 4.0.3
@@ -6135,47 +6088,47 @@ snapshots:
6088
transitivePeerDependencies:
6089
- supports-color
6090
6138
- '@typescript-eslint/utils@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)':
6091
+ '@typescript-eslint/utils@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
6092
dependencies:
6140
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
6141
- '@typescript-eslint/scope-manager': 8.34.1
6142
- '@typescript-eslint/types': 8.34.1
6143
- '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3)
6144
- eslint: 9.29.0(jiti@2.4.2)
6093
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
6094
+ '@typescript-eslint/scope-manager': 8.35.0
6095
+ '@typescript-eslint/types': 8.35.0
6096
+ '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3)
6097
+ eslint: 9.30.0(jiti@2.4.2)
6098
typescript: 5.8.3
6099
transitivePeerDependencies:
6100
- supports-color
6101
6149
- '@typescript-eslint/visitor-keys@8.34.1':
6102
+ '@typescript-eslint/visitor-keys@8.35.0':
6103
dependencies:
6151
- '@typescript-eslint/types': 8.34.1
6104
+ '@typescript-eslint/types': 8.35.0
6105
eslint-visitor-keys: 4.2.1
6106
6107
'@ungap/structured-clone@1.3.0': {}
6108
6156
- '@vitejs/plugin-vue-jsx@4.2.0(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))':
6109
+ '@vitejs/plugin-vue-jsx@4.2.0(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))':
6110
dependencies:
6158
- '@babel/core': 7.27.3
6159
- '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.3)
6160
- '@rolldown/pluginutils': 1.0.0-beta.10
6161
- '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.27.3)
6162
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
6111
+ '@babel/core': 7.27.7
6112
+ '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.7)
6113
+ '@rolldown/pluginutils': 1.0.0-beta.21
6114
+ '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.27.7)
6115
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
6116
vue: 3.5.17(typescript@5.8.3)
6117
transitivePeerDependencies:
6118
- supports-color
6119
6167
- '@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))':
6120
+ '@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))':
6121
dependencies:
6169
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
6122
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
6123
vue: 3.5.17(typescript@5.8.3)
6124
6172
- '@vitest/eslint-plugin@1.2.7(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.3)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))':
6125
+ '@vitest/eslint-plugin@1.3.3(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.6)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))':
6126
dependencies:
6174
- '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
6175
- eslint: 9.29.0(jiti@2.4.2)
6127
+ '@typescript-eslint/utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
6128
+ eslint: 9.30.0(jiti@2.4.2)
6129
optionalDependencies:
6130
typescript: 5.8.3
6178
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.3)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
6131
+ vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.0.6)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
6132
transitivePeerDependencies:
6133
- supports-color
6134
@@ -6187,13 +6140,13 @@ snapshots:
6140
chai: 5.2.0
6141
tinyrainbow: 2.0.0
6142
6190
- '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))':
6143
+ '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))':
6144
dependencies:
6145
'@vitest/spy': 3.2.4
6146
estree-walker: 3.0.3
6147
magic-string: 0.30.17
6148
optionalDependencies:
6196
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
6149
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
6150
6151
'@vitest/pretty-format@3.2.4':
6152
dependencies:
@@ -6221,101 +6174,63 @@ snapshots:
6174
loupe: 3.1.4
6175
tinyrainbow: 2.0.0
6176
6224
- '@volar/language-core@2.4.14':
6177
+ '@volar/language-core@2.4.15':
6178
dependencies:
6226
- '@volar/source-map': 2.4.14
6179
+ '@volar/source-map': 2.4.15
6180
6228
- '@volar/source-map@2.4.14': {}
6181
+ '@volar/source-map@2.4.15': {}
6182
6230
- '@volar/typescript@2.4.14':
6183
+ '@volar/typescript@2.4.15':
6184
dependencies:
6232
- '@volar/language-core': 2.4.14
6185
+ '@volar/language-core': 2.4.15
6186
path-browserify: 1.0.1
6187
vscode-uri: 3.1.0
6188
6189
'@vue/babel-helper-vue-transform-on@1.4.0': {}
6190
6238
- '@vue/babel-plugin-jsx@1.4.0(@babel/core@7.27.3)':
6191
+ '@vue/babel-plugin-jsx@1.4.0(@babel/core@7.27.7)':
6192
dependencies:
6193
'@babel/helper-module-imports': 7.27.1
6194
'@babel/helper-plugin-utils': 7.27.1
6242
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.3)
6195
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7)
6196
'@babel/template': 7.27.2
6244
- '@babel/traverse': 7.27.3
6245
- '@babel/types': 7.27.3
6197
+ '@babel/traverse': 7.27.7
6198
+ '@babel/types': 7.27.7
6199
'@vue/babel-helper-vue-transform-on': 1.4.0
6247
- '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.27.3)
6248
- '@vue/shared': 3.5.15
6200
+ '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.27.7)
6201
+ '@vue/shared': 3.5.17
6202
optionalDependencies:
6250
- '@babel/core': 7.27.3
6203
+ '@babel/core': 7.27.7
6204
transitivePeerDependencies:
6205
- supports-color
6206
6254
- '@vue/babel-plugin-resolve-type@1.4.0(@babel/core@7.27.3)':
6207
+ '@vue/babel-plugin-resolve-type@1.4.0(@babel/core@7.27.7)':
6208
dependencies:
6209
'@babel/code-frame': 7.27.1
6257
- '@babel/core': 7.27.3
6210
+ '@babel/core': 7.27.7
6211
'@babel/helper-module-imports': 7.27.1
6212
'@babel/helper-plugin-utils': 7.27.1
6260
- '@babel/parser': 7.27.3
6261
- '@vue/compiler-sfc': 3.5.15
6213
+ '@babel/parser': 7.27.7
6214
+ '@vue/compiler-sfc': 3.5.17
6215
transitivePeerDependencies:
6216
- supports-color
6217
6265
- '@vue/compiler-core@3.5.15':
6266
- dependencies:
6267
- '@babel/parser': 7.27.3
6268
- '@vue/shared': 3.5.15
6269
- entities: 4.5.0
6270
- estree-walker: 2.0.2
6271
- source-map-js: 1.2.1
6272
-
6273
- '@vue/compiler-core@3.5.16':
6274
- dependencies:
6275
- '@babel/parser': 7.27.3
6276
- '@vue/shared': 3.5.16
6277
- entities: 4.5.0
6278
- estree-walker: 2.0.2
6279
- source-map-js: 1.2.1
6280
-
6218
'@vue/compiler-core@3.5.17':
6219
dependencies:
6283
- '@babel/parser': 7.27.5
6220
+ '@babel/parser': 7.27.7
6221
'@vue/shared': 3.5.17
6222
entities: 4.5.0
6223
estree-walker: 2.0.2
6224
source-map-js: 1.2.1
6225
6289
- '@vue/compiler-dom@3.5.15':
6290
- dependencies:
6291
- '@vue/compiler-core': 3.5.15
6292
- '@vue/shared': 3.5.15
6293
-
6294
- '@vue/compiler-dom@3.5.16':
6295
- dependencies:
6296
- '@vue/compiler-core': 3.5.16
6297
- '@vue/shared': 3.5.16
6298
-
6226
'@vue/compiler-dom@3.5.17':
6227
dependencies:
6228
'@vue/compiler-core': 3.5.17
6229
'@vue/shared': 3.5.17
6230
6304
- '@vue/compiler-sfc@3.5.15':
6305
- dependencies:
6306
- '@babel/parser': 7.27.3
6307
- '@vue/compiler-core': 3.5.15
6308
- '@vue/compiler-dom': 3.5.15
6309
- '@vue/compiler-ssr': 3.5.15
6310
- '@vue/shared': 3.5.15
6311
- estree-walker: 2.0.2
6312
- magic-string: 0.30.17
6313
- postcss: 8.5.3
6314
- source-map-js: 1.2.1
6315
-
6231
'@vue/compiler-sfc@3.5.17':
6232
dependencies:
6318
- '@babel/parser': 7.27.5
6233
+ '@babel/parser': 7.27.7
6234
'@vue/compiler-core': 3.5.17
6235
'@vue/compiler-dom': 3.5.17
6236
'@vue/compiler-ssr': 3.5.17
@@ -6325,11 +6240,6 @@ snapshots:
6240
postcss: 8.5.6
6241
source-map-js: 1.2.1
6242
6328
- '@vue/compiler-ssr@3.5.15':
6329
- dependencies:
6330
- '@vue/compiler-dom': 3.5.15
6331
- '@vue/shared': 3.5.15
6332
-
6243
'@vue/compiler-ssr@3.5.17':
6244
dependencies:
6245
'@vue/compiler-dom': 3.5.17
@@ -6342,56 +6252,42 @@ snapshots:
6252
6253
'@vue/devtools-api@6.6.4': {}
6254
6345
- '@vue/devtools-api@7.7.6':
6255
+ '@vue/devtools-api@7.7.7':
6256
dependencies:
6347
- '@vue/devtools-kit': 7.7.6
6257
+ '@vue/devtools-kit': 7.7.7
6258
6349
- '@vue/devtools-core@7.7.7(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))':
6259
+ '@vue/devtools-core@7.7.7(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))':
6260
dependencies:
6261
'@vue/devtools-kit': 7.7.7
6262
'@vue/devtools-shared': 7.7.7
6263
mitt: 3.0.1
6264
nanoid: 5.1.5
6265
pathe: 2.0.3
6356
- vite-hot-client: 2.0.4(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
6266
+ vite-hot-client: 2.0.4(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
6267
vue: 3.5.17(typescript@5.8.3)
6268
transitivePeerDependencies:
6269
- vite
6270
6361
- '@vue/devtools-kit@7.7.6':
6362
- dependencies:
6363
- '@vue/devtools-shared': 7.7.6
6364
- birpc: 2.3.0
6365
- hookable: 5.5.3
6366
- mitt: 3.0.1
6367
- perfect-debounce: 1.0.0
6368
- speakingurl: 14.0.1
6369
- superjson: 2.2.2
6370
-
6271
'@vue/devtools-kit@7.7.7':
6272
dependencies:
6273
'@vue/devtools-shared': 7.7.7
6374
- birpc: 2.3.0
6274
+ birpc: 2.4.0
6275
hookable: 5.5.3
6276
mitt: 3.0.1
6277
perfect-debounce: 1.0.0
6278
speakingurl: 14.0.1
6279
superjson: 2.2.2
6280
6381
- '@vue/devtools-shared@7.7.6':
6382
- dependencies:
6383
- rfdc: 1.4.1
6384
-
6281
'@vue/devtools-shared@7.7.7':
6282
dependencies:
6283
rfdc: 1.4.1
6284
6285
'@vue/language-core@2.2.10(typescript@5.8.3)':
6286
dependencies:
6391
- '@volar/language-core': 2.4.14
6392
- '@vue/compiler-dom': 3.5.15
6287
+ '@volar/language-core': 2.4.15
6288
+ '@vue/compiler-dom': 3.5.17
6289
'@vue/compiler-vue2': 2.7.16
6394
- '@vue/shared': 3.5.15
6290
+ '@vue/shared': 3.5.17
6291
alien-signals: 1.0.13
6292
minimatch: 9.0.5
6293
muggle-string: 0.4.1
@@ -6421,10 +6317,6 @@ snapshots:
6317
'@vue/shared': 3.5.17
6318
vue: 3.5.17(typescript@5.8.3)
6319
6424
- '@vue/shared@3.5.15': {}
6425
-
6426
- '@vue/shared@3.5.16': {}
6427
-
6320
'@vue/shared@3.5.17': {}
6321
6322
'@vue/test-utils@2.4.6':
@@ -6449,21 +6341,17 @@ snapshots:
6341
'@vueuse/motion@3.0.3(vue@3.5.17(typescript@5.8.3))':
6342
dependencies:
6343
'@vueuse/core': 13.4.0(vue@3.5.17(typescript@5.8.3))
6452
- '@vueuse/shared': 13.3.0(vue@3.5.17(typescript@5.8.3))
6344
+ '@vueuse/shared': 13.4.0(vue@3.5.17(typescript@5.8.3))
6345
defu: 6.1.4
6346
framesync: 6.1.2
6347
popmotion: 11.0.5
6348
style-value-types: 5.1.2
6349
vue: 3.5.17(typescript@5.8.3)
6350
optionalDependencies:
6459
- '@nuxt/kit': 3.17.4
6351
+ '@nuxt/kit': 3.17.5
6352
transitivePeerDependencies:
6353
- magicast
6354
6463
- '@vueuse/shared@13.3.0(vue@3.5.17(typescript@5.8.3))':
6464
- dependencies:
6465
- vue: 3.5.17(typescript@5.8.3)
6466
-
6355
'@vueuse/shared@13.4.0(vue@3.5.17(typescript@5.8.3))':
6356
dependencies:
6357
vue: 3.5.17(typescript@5.8.3)
@@ -6476,8 +6364,6 @@ snapshots:
6364
dependencies:
6365
acorn: 8.15.0
6366
6479
- acorn@8.14.1: {}
6480
-
6367
acorn@8.15.0: {}
6368
6369
agent-base@7.1.3: {}
@@ -6528,8 +6414,6 @@ snapshots:
6414
6415
ansi-styles@6.2.1: {}
6416
6531
- ansis@4.0.0: {}
6532
-
6417
ansis@4.1.0: {}
6418
6419
apexcharts@4.7.0:
@@ -6584,7 +6468,7 @@ snapshots:
6468
axios@1.10.0(debug@4.4.1):
6469
dependencies:
6470
follow-redirects: 1.15.9(debug@4.4.1)
6587
- form-data: 4.0.2
6471
+ form-data: 4.0.3
6472
proxy-from-env: 1.1.0
6473
transitivePeerDependencies:
6474
- debug
@@ -6597,7 +6481,7 @@ snapshots:
6481
dependencies:
6482
tweetnacl: 0.14.5
6483
6600
- birpc@2.3.0: {}
6484
+ birpc@2.4.0: {}
6485
6486
blob-util@2.0.2: {}
6487
@@ -6605,12 +6489,12 @@ snapshots:
6489
6490
boolbase@1.0.0: {}
6491
6608
- brace-expansion@1.1.11:
6492
+ brace-expansion@1.1.12:
6493
dependencies:
6494
balanced-match: 1.0.2
6495
concat-map: 0.0.1
6496
6613
- brace-expansion@2.0.1:
6497
+ brace-expansion@2.0.2:
6498
dependencies:
6499
balanced-match: 1.0.2
6500
@@ -6618,12 +6502,12 @@ snapshots:
6502
dependencies:
6503
fill-range: 7.1.1
6504
6621
- browserslist@4.24.5:
6505
+ browserslist@4.25.1:
6506
dependencies:
6623
- caniuse-lite: 1.0.30001718
6624
- electron-to-chromium: 1.5.159
6507
+ caniuse-lite: 1.0.30001726
6508
+ electron-to-chromium: 1.5.177
6509
node-releases: 2.0.19
6626
- update-browserslist-db: 1.1.3(browserslist@4.24.5)
6510
+ update-browserslist-db: 1.1.3(browserslist@4.25.1)
6511
6512
buffer-crc32@0.2.13: {}
6513
@@ -6645,14 +6529,14 @@ snapshots:
6529
chokidar: 4.0.3
6530
confbox: 0.2.2
6531
defu: 6.1.4
6648
- dotenv: 16.5.0
6649
- exsolve: 1.0.5
6532
+ dotenv: 16.6.1
6533
+ exsolve: 1.0.7
6534
giget: 2.0.0
6535
jiti: 2.4.2
6536
ohash: 2.0.11
6537
pathe: 2.0.3
6538
perfect-debounce: 1.0.0
6655
- pkg-types: 2.1.0
6539
+ pkg-types: 2.1.1
6540
rc9: 2.1.2
6541
6542
cac@6.7.14: {}
@@ -6675,7 +6559,7 @@ snapshots:
6559
6560
camelcase@6.3.0: {}
6561
6678
- caniuse-lite@1.0.30001718: {}
6562
+ caniuse-lite@1.0.30001726: {}
6563
6564
caseless@0.12.0: {}
6565
@@ -6686,8 +6570,8 @@ snapshots:
6570
assertion-error: 2.0.1
6571
check-error: 2.1.1
6572
deep-eql: 5.0.2
6689
- loupe: 3.1.3
6690
- pathval: 2.0.0
6573
+ loupe: 3.1.4
6574
+ pathval: 2.0.1
6575
6576
chalk@4.1.2:
6577
dependencies:
@@ -6755,11 +6639,11 @@ snapshots:
6639
dependencies:
6640
'@codemirror/autocomplete': 6.18.6
6641
'@codemirror/commands': 6.8.1
6758
- '@codemirror/language': 6.11.0
6642
+ '@codemirror/language': 6.11.2
6643
'@codemirror/lint': 6.8.5
6644
'@codemirror/search': 6.5.11
6645
'@codemirror/state': 6.5.2
6762
- '@codemirror/view': 6.36.8
6646
+ '@codemirror/view': 6.38.0
6647
6648
color-convert@2.0.1:
6649
dependencies:
@@ -6809,9 +6693,9 @@ snapshots:
6693
dependencies:
6694
is-what: 4.1.16
6695
6812
- core-js-compat@3.42.0:
6696
+ core-js-compat@3.43.0:
6697
dependencies:
6814
- browserslist: 4.24.5
6698
+ browserslist: 4.25.1
6699
6700
core-util-is@1.0.2: {}
6701
@@ -6864,7 +6748,7 @@ snapshots:
6748
dependencies:
6749
css-tree: 2.2.1
6750
6867
- cssstyle@4.3.1:
6751
+ cssstyle@4.6.0:
6752
dependencies:
6753
'@asamuzakjp/css-color': 3.2.0
6754
rrweb-cssom: 0.8.0
@@ -6955,7 +6839,7 @@ snapshots:
6839
6840
decimal.js@10.5.0: {}
6841
6958
- decode-named-character-reference@1.1.0:
6842
+ decode-named-character-reference@1.2.0:
6843
dependencies:
6844
character-entities: 2.0.2
6845
@@ -6982,9 +6866,9 @@ snapshots:
6866
6867
depcheck@1.4.7:
6868
dependencies:
6985
- '@babel/parser': 7.27.3
6986
- '@babel/traverse': 7.27.3
6987
- '@vue/compiler-sfc': 3.5.15
6869
+ '@babel/parser': 7.27.7
6870
+ '@babel/traverse': 7.27.7
6871
+ '@vue/compiler-sfc': 3.5.17
6872
callsite: 1.0.0
6873
camelcase: 6.3.0
6874
cosmiconfig: 7.1.0
@@ -7045,7 +6929,7 @@ snapshots:
6929
domelementtype: 2.3.0
6930
domhandler: 5.0.3
6931
7048
- dotenv@16.5.0: {}
6932
+ dotenv@16.6.1: {}
6933
6934
dunder-proto@1.0.1:
6935
dependencies:
@@ -7076,17 +6960,17 @@ snapshots:
6960
minimatch: 9.0.1
6961
semver: 7.7.2
6962
7079
- electron-to-chromium@1.5.159: {}
6963
+ electron-to-chromium@1.5.177: {}
6964
6965
emoji-regex@8.0.0: {}
6966
6967
emoji-regex@9.2.2: {}
6968
7085
- end-of-stream@1.4.4:
6969
+ end-of-stream@1.4.5:
6970
dependencies:
6971
once: 1.4.0
6972
7089
- enhanced-resolve@5.18.1:
6973
+ enhanced-resolve@5.18.2:
6974
dependencies:
6975
graceful-fs: 4.2.11
6976
tapable: 2.2.2
@@ -7098,7 +6982,7 @@ snapshots:
6982
6983
entities@4.5.0: {}
6984
7101
- entities@6.0.0: {}
6985
+ entities@6.0.1: {}
6986
6987
error-ex@1.3.2:
6988
dependencies:
@@ -7161,67 +7045,67 @@ snapshots:
7045
7046
escape-string-regexp@5.0.0: {}
7047
7164
- eslint-compat-utils@0.5.1(eslint@9.29.0(jiti@2.4.2)):
7048
+ eslint-compat-utils@0.5.1(eslint@9.30.0(jiti@2.4.2)):
7049
dependencies:
7166
- eslint: 9.29.0(jiti@2.4.2)
7050
+ eslint: 9.30.0(jiti@2.4.2)
7051
semver: 7.7.2
7052
7169
- eslint-compat-utils@0.6.5(eslint@9.29.0(jiti@2.4.2)):
7053
+ eslint-compat-utils@0.6.5(eslint@9.30.0(jiti@2.4.2)):
7054
dependencies:
7171
- eslint: 9.29.0(jiti@2.4.2)
7055
+ eslint: 9.30.0(jiti@2.4.2)
7056
semver: 7.7.2
7057
7174
- eslint-config-flat-gitignore@2.1.0(eslint@9.29.0(jiti@2.4.2)):
7058
+ eslint-config-flat-gitignore@2.1.0(eslint@9.30.0(jiti@2.4.2)):
7059
dependencies:
7176
- '@eslint/compat': 1.2.9(eslint@9.29.0(jiti@2.4.2))
7177
- eslint: 9.29.0(jiti@2.4.2)
7060
+ '@eslint/compat': 1.3.1(eslint@9.30.0(jiti@2.4.2))
7061
+ eslint: 9.30.0(jiti@2.4.2)
7062
7063
eslint-flat-config-utils@2.1.0:
7064
dependencies:
7065
pathe: 2.0.3
7066
7183
- eslint-json-compat-utils@0.2.1(eslint@9.29.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0):
7067
+ eslint-json-compat-utils@0.2.1(eslint@9.30.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0):
7068
dependencies:
7185
- eslint: 9.29.0(jiti@2.4.2)
7069
+ eslint: 9.30.0(jiti@2.4.2)
7070
esquery: 1.6.0
7071
jsonc-eslint-parser: 2.4.0
7072
7189
- eslint-merge-processors@2.0.0(eslint@9.29.0(jiti@2.4.2)):
7073
+ eslint-merge-processors@2.0.0(eslint@9.30.0(jiti@2.4.2)):
7074
dependencies:
7191
- eslint: 9.29.0(jiti@2.4.2)
7075
+ eslint: 9.30.0(jiti@2.4.2)
7076
7193
- eslint-plugin-antfu@3.1.1(eslint@9.29.0(jiti@2.4.2)):
7077
+ eslint-plugin-antfu@3.1.1(eslint@9.30.0(jiti@2.4.2)):
7078
dependencies:
7195
- eslint: 9.29.0(jiti@2.4.2)
7079
+ eslint: 9.30.0(jiti@2.4.2)
7080
7197
- eslint-plugin-command@3.3.1(eslint@9.29.0(jiti@2.4.2)):
7081
+ eslint-plugin-command@3.3.1(eslint@9.30.0(jiti@2.4.2)):
7082
dependencies:
7083
'@es-joy/jsdoccomment': 0.50.2
7200
- eslint: 9.29.0(jiti@2.4.2)
7084
+ eslint: 9.30.0(jiti@2.4.2)
7085
7202
- eslint-plugin-es-x@7.8.0(eslint@9.29.0(jiti@2.4.2)):
7086
+ eslint-plugin-es-x@7.8.0(eslint@9.30.0(jiti@2.4.2)):
7087
dependencies:
7204
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
7088
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
7089
'@eslint-community/regexpp': 4.12.1
7206
- eslint: 9.29.0(jiti@2.4.2)
7207
- eslint-compat-utils: 0.5.1(eslint@9.29.0(jiti@2.4.2))
7090
+ eslint: 9.30.0(jiti@2.4.2)
7091
+ eslint-compat-utils: 0.5.1(eslint@9.30.0(jiti@2.4.2))
7092
7209
- eslint-plugin-import-lite@0.3.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3):
7093
+ eslint-plugin-import-lite@0.3.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3):
7094
dependencies:
7211
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
7212
- '@typescript-eslint/types': 8.34.1
7213
- eslint: 9.29.0(jiti@2.4.2)
7095
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
7096
+ '@typescript-eslint/types': 8.35.0
7097
+ eslint: 9.30.0(jiti@2.4.2)
7098
optionalDependencies:
7099
typescript: 5.8.3
7100
7217
- eslint-plugin-jsdoc@51.2.1(eslint@9.29.0(jiti@2.4.2)):
7101
+ eslint-plugin-jsdoc@51.2.3(eslint@9.30.0(jiti@2.4.2)):
7102
dependencies:
7103
'@es-joy/jsdoccomment': 0.52.0
7104
are-docs-informative: 0.0.2
7105
comment-parser: 1.4.1
7106
debug: 4.4.1(supports-color@8.1.1)
7107
escape-string-regexp: 4.0.0
7224
- eslint: 9.29.0(jiti@2.4.2)
7108
+ eslint: 9.30.0(jiti@2.4.2)
7109
espree: 10.4.0
7110
esquery: 1.6.0
7111
parse-imports-exports: 0.2.4
@@ -7230,27 +7114,27 @@ snapshots:
7114
transitivePeerDependencies:
7115
- supports-color
7116
7233
- eslint-plugin-jsonc@2.20.1(eslint@9.29.0(jiti@2.4.2)):
7117
+ eslint-plugin-jsonc@2.20.1(eslint@9.30.0(jiti@2.4.2)):
7118
dependencies:
7235
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
7236
- eslint: 9.29.0(jiti@2.4.2)
7237
- eslint-compat-utils: 0.6.5(eslint@9.29.0(jiti@2.4.2))
7238
- eslint-json-compat-utils: 0.2.1(eslint@9.29.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0)
7119
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
7120
+ eslint: 9.30.0(jiti@2.4.2)
7121
+ eslint-compat-utils: 0.6.5(eslint@9.30.0(jiti@2.4.2))
7122
+ eslint-json-compat-utils: 0.2.1(eslint@9.30.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0)
7123
espree: 10.4.0
7124
graphemer: 1.4.0
7125
jsonc-eslint-parser: 2.4.0
7126
natural-compare: 1.4.0
7243
- synckit: 0.11.6
7127
+ synckit: 0.11.8
7128
transitivePeerDependencies:
7129
- '@eslint/json'
7130
7247
- eslint-plugin-n@17.20.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3):
7131
+ eslint-plugin-n@17.20.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3):
7132
dependencies:
7249
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
7250
- '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
7251
- enhanced-resolve: 5.18.1
7252
- eslint: 9.29.0(jiti@2.4.2)
7253
- eslint-plugin-es-x: 7.8.0(eslint@9.29.0(jiti@2.4.2))
7133
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
7134
+ '@typescript-eslint/utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
7135
+ enhanced-resolve: 5.18.2
7136
+ eslint: 9.30.0(jiti@2.4.2)
7137
+ eslint-plugin-es-x: 7.8.0(eslint@9.30.0(jiti@2.4.2))
7138
get-tsconfig: 4.10.1
7139
globals: 15.15.0
7140
ignore: 5.3.2
@@ -7263,19 +7147,19 @@ snapshots:
7147
7148
eslint-plugin-no-only-tests@3.3.0: {}
7149
7266
- eslint-plugin-perfectionist@4.15.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3):
7150
+ eslint-plugin-perfectionist@4.15.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3):
7151
dependencies:
7268
- '@typescript-eslint/types': 8.34.1
7269
- '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
7270
- eslint: 9.29.0(jiti@2.4.2)
7152
+ '@typescript-eslint/types': 8.35.0
7153
+ '@typescript-eslint/utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
7154
+ eslint: 9.30.0(jiti@2.4.2)
7155
natural-orderby: 5.0.0
7156
transitivePeerDependencies:
7157
- supports-color
7158
- typescript
7159
7276
- eslint-plugin-pnpm@0.3.1(eslint@9.29.0(jiti@2.4.2)):
7160
+ eslint-plugin-pnpm@0.3.1(eslint@9.30.0(jiti@2.4.2)):
7161
dependencies:
7278
- eslint: 9.29.0(jiti@2.4.2)
7162
+ eslint: 9.30.0(jiti@2.4.2)
7163
find-up-simple: 1.0.1
7164
jsonc-eslint-parser: 2.4.0
7165
pathe: 2.0.3
@@ -7283,36 +7167,36 @@ snapshots:
7167
tinyglobby: 0.2.14
7168
yaml-eslint-parser: 1.3.0
7169
7286
- eslint-plugin-regexp@2.9.0(eslint@9.29.0(jiti@2.4.2)):
7170
+ eslint-plugin-regexp@2.9.0(eslint@9.30.0(jiti@2.4.2)):
7171
dependencies:
7288
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
7172
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
7173
'@eslint-community/regexpp': 4.12.1
7174
comment-parser: 1.4.1
7291
- eslint: 9.29.0(jiti@2.4.2)
7175
+ eslint: 9.30.0(jiti@2.4.2)
7176
jsdoc-type-pratt-parser: 4.1.0
7177
refa: 0.12.1
7178
regexp-ast-analysis: 0.7.1
7179
scslre: 0.3.0
7180
7297
- eslint-plugin-toml@0.12.0(eslint@9.29.0(jiti@2.4.2)):
7181
+ eslint-plugin-toml@0.12.0(eslint@9.30.0(jiti@2.4.2)):
7182
dependencies:
7183
debug: 4.4.1(supports-color@8.1.1)
7300
- eslint: 9.29.0(jiti@2.4.2)
7301
- eslint-compat-utils: 0.6.5(eslint@9.29.0(jiti@2.4.2))
7184
+ eslint: 9.30.0(jiti@2.4.2)
7185
+ eslint-compat-utils: 0.6.5(eslint@9.30.0(jiti@2.4.2))
7186
lodash: 4.17.21
7187
toml-eslint-parser: 0.10.0
7188
transitivePeerDependencies:
7189
- supports-color
7190
7307
- eslint-plugin-unicorn@59.0.1(eslint@9.29.0(jiti@2.4.2)):
7191
+ eslint-plugin-unicorn@59.0.1(eslint@9.30.0(jiti@2.4.2)):
7192
dependencies:
7193
'@babel/helper-validator-identifier': 7.27.1
7310
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
7194
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
7195
'@eslint/plugin-kit': 0.2.8
7196
ci-info: 4.2.0
7197
clean-regexp: 1.0.0
7314
- core-js-compat: 3.42.0
7315
- eslint: 9.29.0(jiti@2.4.2)
7198
+ core-js-compat: 3.43.0
7199
+ eslint: 9.30.0(jiti@2.4.2)
7200
esquery: 1.6.0
7201
find-up-simple: 1.0.1
7202
globals: 16.2.0
@@ -7325,38 +7209,38 @@ snapshots:
7209
semver: 7.7.2
7210
strip-indent: 4.0.0
7211
7328
- eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2)):
7212
+ eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2)):
7213
dependencies:
7330
- eslint: 9.29.0(jiti@2.4.2)
7214
+ eslint: 9.30.0(jiti@2.4.2)
7215
optionalDependencies:
7332
- '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)
7216
+ '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
7217
7334
- eslint-plugin-vue@10.2.0(eslint@9.29.0(jiti@2.4.2))(vue-eslint-parser@10.1.3(eslint@9.29.0(jiti@2.4.2))):
7218
+ eslint-plugin-vue@10.2.0(eslint@9.30.0(jiti@2.4.2))(vue-eslint-parser@10.1.4(eslint@9.30.0(jiti@2.4.2))):
7219
dependencies:
7336
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
7337
- eslint: 9.29.0(jiti@2.4.2)
7220
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
7221
+ eslint: 9.30.0(jiti@2.4.2)
7222
natural-compare: 1.4.0
7223
nth-check: 2.1.1
7224
postcss-selector-parser: 6.1.2
7225
semver: 7.7.2
7342
- vue-eslint-parser: 10.1.3(eslint@9.29.0(jiti@2.4.2))
7226
+ vue-eslint-parser: 10.1.4(eslint@9.30.0(jiti@2.4.2))
7227
xml-name-validator: 4.0.0
7228
7345
- eslint-plugin-yml@1.18.0(eslint@9.29.0(jiti@2.4.2)):
7229
+ eslint-plugin-yml@1.18.0(eslint@9.30.0(jiti@2.4.2)):
7230
dependencies:
7231
debug: 4.4.1(supports-color@8.1.1)
7232
escape-string-regexp: 4.0.0
7349
- eslint: 9.29.0(jiti@2.4.2)
7350
- eslint-compat-utils: 0.6.5(eslint@9.29.0(jiti@2.4.2))
7233
+ eslint: 9.30.0(jiti@2.4.2)
7234
+ eslint-compat-utils: 0.6.5(eslint@9.30.0(jiti@2.4.2))
7235
natural-compare: 1.4.0
7236
yaml-eslint-parser: 1.3.0
7237
transitivePeerDependencies:
7238
- supports-color
7239
7356
- eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.17)(eslint@9.29.0(jiti@2.4.2)):
7240
+ eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.17)(eslint@9.30.0(jiti@2.4.2)):
7241
dependencies:
7242
'@vue/compiler-sfc': 3.5.17
7359
- eslint: 9.29.0(jiti@2.4.2)
7243
+ eslint: 9.30.0(jiti@2.4.2)
7244
7245
eslint-scope@8.4.0:
7246
dependencies:
@@ -7367,20 +7251,20 @@ snapshots:
7251
7252
eslint-visitor-keys@4.2.1: {}
7253
7370
- eslint@9.29.0(jiti@2.4.2):
7254
+ eslint@9.30.0(jiti@2.4.2):
7255
dependencies:
7372
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2))
7256
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
7257
'@eslint-community/regexpp': 4.12.1
7374
- '@eslint/config-array': 0.20.1
7375
- '@eslint/config-helpers': 0.2.2
7258
+ '@eslint/config-array': 0.21.0
7259
+ '@eslint/config-helpers': 0.3.0
7260
'@eslint/core': 0.14.0
7261
'@eslint/eslintrc': 3.3.1
7378
- '@eslint/js': 9.29.0
7379
- '@eslint/plugin-kit': 0.3.1
7262
+ '@eslint/js': 9.30.0
7263
+ '@eslint/plugin-kit': 0.3.3
7264
'@humanfs/node': 0.16.6
7265
'@humanwhocodes/module-importer': 1.0.1
7266
'@humanwhocodes/retry': 0.4.3
7383
- '@types/estree': 1.0.7
7267
+ '@types/estree': 1.0.8
7268
'@types/json-schema': 7.0.15
7269
ajv: 6.12.6
7270
chalk: 4.1.2
@@ -7437,7 +7321,7 @@ snapshots:
7321
7322
estree-walker@3.0.3:
7323
dependencies:
7440
- '@types/estree': 1.0.7
7324
+ '@types/estree': 1.0.8
7325
7326
esutils@2.0.3: {}
7327
@@ -7504,7 +7388,7 @@ snapshots:
7388
7389
expect-type@1.2.1: {}
7390
7507
- exsolve@1.0.5: {}
7391
+ exsolve@1.0.7: {}
7392
7393
extend@3.0.2: {}
7394
@@ -7546,7 +7430,7 @@ snapshots:
7430
dependencies:
7431
pend: 1.2.0
7432
7549
- fdir@6.4.5(picomatch@4.0.2):
7433
+ fdir@6.4.6(picomatch@4.0.2):
7434
optionalDependencies:
7435
picomatch: 4.0.2
7436
@@ -7602,11 +7486,12 @@ snapshots:
7486
7487
forever-agent@0.6.1: {}
7488
7605
- form-data@4.0.2:
7489
+ form-data@4.0.3:
7490
dependencies:
7491
asynckit: 0.4.0
7492
combined-stream: 1.0.8
7493
es-set-tostringtag: 2.1.0
7494
+ hasown: 2.0.2
7495
mime-types: 2.1.35
7496
7497
format@0.2.2: {}
@@ -7661,7 +7546,7 @@ snapshots:
7546
7547
get-stream@5.2.0:
7548
dependencies:
7664
- pump: 3.0.2
7549
+ pump: 3.0.3
7550
7551
get-stream@6.0.1: {}
7552
@@ -7833,9 +7718,9 @@ snapshots:
7718
7719
ignore@5.3.2: {}
7720
7836
- ignore@7.0.4: {}
7721
+ ignore@7.0.5: {}
7722
7838
- immutable@5.1.2: {}
7723
+ immutable@5.1.3: {}
7724
7725
import-fresh@3.3.1:
7726
dependencies:
@@ -7977,7 +7862,7 @@ snapshots:
7862
7863
jsdom@26.1.0:
7864
dependencies:
7980
- cssstyle: 4.3.1
7865
+ cssstyle: 4.6.0
7866
data-urls: 5.0.0
7867
decimal.js: 10.5.0
7868
html-encoding-sniffer: 4.0.0
@@ -8126,7 +8011,7 @@ snapshots:
8011
local-pkg@1.1.1:
8012
dependencies:
8013
mlly: 1.7.4
8129
- pkg-types: 2.1.0
8014
+ pkg-types: 2.1.1
8015
quansync: 0.2.10
8016
8017
locate-path@6.0.0:
@@ -8155,8 +8040,6 @@ snapshots:
8040
8041
longest-streak@3.1.0: {}
8042
8158
- loupe@3.1.3: {}
8159
-
8043
loupe@3.1.4: {}
8044
8045
lru-cache@10.4.3: {}
@@ -8197,7 +8080,7 @@ snapshots:
8080
dependencies:
8081
'@types/mdast': 4.0.4
8082
'@types/unist': 3.0.3
8200
- decode-named-character-reference: 1.1.0
8083
+ decode-named-character-reference: 1.2.0
8084
devlop: 1.1.0
8085
mdast-util-to-string: 4.0.0
8086
micromark: 4.0.2
@@ -8325,7 +8208,7 @@ snapshots:
8208
8209
micromark-core-commonmark@2.0.3:
8210
dependencies:
8328
- decode-named-character-reference: 1.1.0
8211
+ decode-named-character-reference: 1.2.0
8212
devlop: 1.1.0
8213
micromark-factory-destination: 2.0.1
8214
micromark-factory-label: 2.0.1
@@ -8465,7 +8348,7 @@ snapshots:
8348
8349
micromark-util-decode-string@2.0.1:
8350
dependencies:
8468
- decode-named-character-reference: 1.1.0
8351
+ decode-named-character-reference: 1.2.0
8352
micromark-util-character: 2.1.1
8353
micromark-util-decode-numeric-character-reference: 2.0.2
8354
micromark-util-symbol: 2.0.1
@@ -8503,7 +8386,7 @@ snapshots:
8386
dependencies:
8387
'@types/debug': 4.1.12
8388
debug: 4.4.1(supports-color@8.1.1)
8506
- decode-named-character-reference: 1.1.0
8389
+ decode-named-character-reference: 1.2.0
8390
devlop: 1.1.0
8391
micromark-core-commonmark: 2.0.3
8392
micromark-factory-space: 2.0.1
@@ -8540,19 +8423,19 @@ snapshots:
8423
8424
minimatch@3.1.2:
8425
dependencies:
8543
- brace-expansion: 1.1.11
8426
+ brace-expansion: 1.1.12
8427
8428
minimatch@7.4.6:
8429
dependencies:
8547
- brace-expansion: 2.0.1
8430
+ brace-expansion: 2.0.2
8431
8432
minimatch@9.0.1:
8433
dependencies:
8551
- brace-expansion: 2.0.1
8434
+ brace-expansion: 2.0.2
8435
8436
minimatch@9.0.5:
8437
dependencies:
8555
- brace-expansion: 2.0.1
8438
+ brace-expansion: 2.0.2
8439
8440
minimist@1.2.8: {}
8441
@@ -8568,7 +8451,7 @@ snapshots:
8451
8452
mlly@1.7.4:
8453
dependencies:
8571
- acorn: 8.14.1
8454
+ acorn: 8.15.0
8455
pathe: 2.0.3
8456
pkg-types: 1.3.1
8457
ufo: 1.6.1
@@ -8592,7 +8475,7 @@ snapshots:
8475
'@css-render/plugin-bem': 0.15.14(css-render@0.15.14)
8476
'@css-render/vue3-ssr': 0.15.14(vue@3.5.17(typescript@5.8.3))
8477
'@types/katex': 0.16.7
8595
- '@types/lodash': 4.17.18
8478
+ '@types/lodash': 4.17.19
8479
'@types/lodash-es': 4.17.12
8480
async-validator: 4.2.5
8481
css-render: 0.15.14
@@ -8639,7 +8522,7 @@ snapshots:
8522
picomatch: 4.0.2
8523
pidtree: 0.6.0
8524
read-package-json-fast: 4.0.0
8642
- shell-quote: 1.8.2
8525
+ shell-quote: 1.8.3
8526
which: 5.0.0
8527
8528
npm-run-path@4.0.1:
@@ -8662,7 +8545,7 @@ snapshots:
8545
citty: 0.1.6
8546
consola: 3.4.2
8547
pathe: 2.0.3
8665
- pkg-types: 2.1.0
8548
+ pkg-types: 2.1.1
8549
tinyexec: 0.3.2
8550
8551
object-inspect@1.13.4: {}
@@ -8760,7 +8643,7 @@ snapshots:
8643
8644
parse5@7.3.0:
8645
dependencies:
8763
- entities: 6.0.0
8646
+ entities: 6.0.1
8647
8648
password-validator@5.3.0: {}
8649
@@ -8783,7 +8666,7 @@ snapshots:
8666
8667
pathe@2.0.3: {}
8668
8786
- pathval@2.0.0: {}
8669
+ pathval@2.0.1: {}
8670
8671
pause-stream@0.0.11:
8672
dependencies:
@@ -8807,7 +8690,7 @@ snapshots:
8690
8691
pinia-plugin-persistedstate@4.3.0(pinia@3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3))):
8692
dependencies:
8810
- '@nuxt/kit': 3.17.4
8693
+ '@nuxt/kit': 3.17.5
8694
deep-pick-omit: 1.2.1
8695
defu: 6.1.4
8696
destr: 2.0.5
@@ -8818,7 +8701,7 @@ snapshots:
8701
8702
pinia@3.0.3(typescript@5.8.3)(vue@3.5.17(typescript@5.8.3)):
8703
dependencies:
8821
- '@vue/devtools-api': 7.7.6
8704
+ '@vue/devtools-api': 7.7.7
8705
vue: 3.5.17(typescript@5.8.3)
8706
optionalDependencies:
8707
typescript: 5.8.3
@@ -8829,10 +8712,10 @@ snapshots:
8712
mlly: 1.7.4
8713
pathe: 2.0.3
8714
8832
- pkg-types@2.1.0:
8715
+ pkg-types@2.1.1:
8716
dependencies:
8717
confbox: 0.2.2
8835
- exsolve: 1.0.5
8718
+ exsolve: 1.0.7
8719
pathe: 2.0.3
8720
8721
please-upgrade-node@3.2.0:
@@ -8857,12 +8740,6 @@ snapshots:
8740
cssesc: 3.0.0
8741
util-deprecate: 1.0.2
8742
8860
- postcss@8.5.3:
8861
- dependencies:
8862
- nanoid: 3.3.11
8863
- picocolors: 1.1.1
8864
- source-map-js: 1.2.1
8865
-
8743
postcss@8.5.6:
8744
dependencies:
8745
nanoid: 3.3.11
@@ -8871,11 +8748,11 @@ snapshots:
8748
8749
prelude-ls@1.2.1: {}
8750
8874
- prettier-plugin-tailwindcss@0.6.13(prettier@3.6.0):
8751
+ prettier-plugin-tailwindcss@0.6.13(prettier@3.6.2):
8752
dependencies:
8876
- prettier: 3.6.0
8753
+ prettier: 3.6.2
8754
8878
- prettier@3.6.0: {}
8755
+ prettier@3.6.2: {}
8756
8757
pretty-bytes@5.6.0: {}
8758
@@ -8897,9 +8774,9 @@ snapshots:
8774
dependencies:
8775
event-stream: 3.3.4
8776
8900
- pump@3.0.2:
8777
+ pump@3.0.3:
8778
dependencies:
8902
- end-of-stream: 1.4.4
8779
+ end-of-stream: 1.4.5
8780
once: 1.4.0
8781
8782
punycode.js@2.3.1: {}
@@ -8994,39 +8871,39 @@ snapshots:
8871
8872
rfdc@1.4.1: {}
8873
8997
- rollup-plugin-visualizer@5.14.0(rollup@4.41.1):
8874
+ rollup-plugin-visualizer@5.14.0(rollup@4.44.1):
8875
dependencies:
8876
open: 8.4.2
8877
picomatch: 4.0.2
8878
source-map: 0.7.4
8879
yargs: 17.7.2
8880
optionalDependencies:
9004
- rollup: 4.41.1
8881
+ rollup: 4.44.1
8882
9006
- rollup@4.41.1:
8883
+ rollup@4.44.1:
8884
dependencies:
9008
- '@types/estree': 1.0.7
8885
+ '@types/estree': 1.0.8
8886
optionalDependencies:
9010
- '@rollup/rollup-android-arm-eabi': 4.41.1
9011
- '@rollup/rollup-android-arm64': 4.41.1
9012
- '@rollup/rollup-darwin-arm64': 4.41.1
9013
- '@rollup/rollup-darwin-x64': 4.41.1
9014
- '@rollup/rollup-freebsd-arm64': 4.41.1
9015
- '@rollup/rollup-freebsd-x64': 4.41.1
9016
- '@rollup/rollup-linux-arm-gnueabihf': 4.41.1
9017
- '@rollup/rollup-linux-arm-musleabihf': 4.41.1
9018
- '@rollup/rollup-linux-arm64-gnu': 4.41.1
9019
- '@rollup/rollup-linux-arm64-musl': 4.41.1
9020
- '@rollup/rollup-linux-loongarch64-gnu': 4.41.1
9021
- '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1
9022
- '@rollup/rollup-linux-riscv64-gnu': 4.41.1
9023
- '@rollup/rollup-linux-riscv64-musl': 4.41.1
9024
- '@rollup/rollup-linux-s390x-gnu': 4.41.1
9025
- '@rollup/rollup-linux-x64-gnu': 4.41.1
9026
- '@rollup/rollup-linux-x64-musl': 4.41.1
9027
- '@rollup/rollup-win32-arm64-msvc': 4.41.1
9028
- '@rollup/rollup-win32-ia32-msvc': 4.41.1
9029
- '@rollup/rollup-win32-x64-msvc': 4.41.1
8887
+ '@rollup/rollup-android-arm-eabi': 4.44.1
8888
+ '@rollup/rollup-android-arm64': 4.44.1
8889
+ '@rollup/rollup-darwin-arm64': 4.44.1
8890
+ '@rollup/rollup-darwin-x64': 4.44.1
8891
+ '@rollup/rollup-freebsd-arm64': 4.44.1
8892
+ '@rollup/rollup-freebsd-x64': 4.44.1
8893
+ '@rollup/rollup-linux-arm-gnueabihf': 4.44.1
8894
+ '@rollup/rollup-linux-arm-musleabihf': 4.44.1
8895
+ '@rollup/rollup-linux-arm64-gnu': 4.44.1
8896
+ '@rollup/rollup-linux-arm64-musl': 4.44.1
8897
+ '@rollup/rollup-linux-loongarch64-gnu': 4.44.1
8898
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.44.1
8899
+ '@rollup/rollup-linux-riscv64-gnu': 4.44.1
8900
+ '@rollup/rollup-linux-riscv64-musl': 4.44.1
8901
+ '@rollup/rollup-linux-s390x-gnu': 4.44.1
8902
+ '@rollup/rollup-linux-x64-gnu': 4.44.1
8903
+ '@rollup/rollup-linux-x64-musl': 4.44.1
8904
+ '@rollup/rollup-win32-arm64-msvc': 4.44.1
8905
+ '@rollup/rollup-win32-ia32-msvc': 4.44.1
8906
+ '@rollup/rollup-win32-x64-msvc': 4.44.1
8907
fsevents: 2.3.3
8908
8909
rrweb-cssom@0.8.0: {}
@@ -9048,7 +8925,7 @@ snapshots:
8925
sass@1.89.2:
8926
dependencies:
8927
chokidar: 4.0.3
9051
- immutable: 5.1.2
8928
+ immutable: 5.1.3
8929
source-map-js: 1.2.1
8930
optionalDependencies:
8931
'@parcel/watcher': 2.5.1
@@ -9084,7 +8961,7 @@ snapshots:
8961
8962
shebang-regex@3.0.0: {}
8963
9087
- shell-quote@1.8.2: {}
8964
+ shell-quote@1.8.3: {}
8965
8966
shiki@3.7.0:
8967
dependencies:
@@ -9281,11 +9158,11 @@ snapshots:
9158
9159
symbol-tree@3.2.4: {}
9160
9284
- synckit@0.11.6:
9161
+ synckit@0.11.8:
9162
dependencies:
9286
- '@pkgr/core': 0.2.4
9163
+ '@pkgr/core': 0.2.7
9164
9288
- tailwindcss@4.1.10: {}
9165
+ tailwindcss@4.1.11: {}
9166
9167
tapable@2.2.2: {}
9168
@@ -9313,11 +9190,11 @@ snapshots:
9190
unconfig: 7.3.2
9191
yaml: 2.8.0
9192
9316
- thememirror@2.0.1(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.8):
9193
+ thememirror@2.0.1(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.0):
9194
dependencies:
9318
- '@codemirror/language': 6.11.0
9195
+ '@codemirror/language': 6.11.2
9196
'@codemirror/state': 6.5.2
9320
- '@codemirror/view': 6.36.8
9197
+ '@codemirror/view': 6.38.0
9198
9199
throttleit@1.0.1: {}
9200
@@ -9331,7 +9208,7 @@ snapshots:
9208
9209
tinyglobby@0.2.14:
9210
dependencies:
9334
- fdir: 6.4.5(picomatch@4.0.2)
9211
+ fdir: 6.4.6(picomatch@4.0.2)
9212
picomatch: 4.0.2
9213
9214
tinypool@1.1.1: {}
@@ -9418,7 +9295,7 @@ snapshots:
9295
9296
unctx@2.4.1:
9297
dependencies:
9421
- acorn: 8.14.1
9298
+ acorn: 8.15.0
9299
estree-walker: 3.0.3
9300
magic-string: 0.30.17
9301
unplugin: 2.3.5
@@ -9429,7 +9306,7 @@ snapshots:
9306
9307
unimport@5.0.1:
9308
dependencies:
9432
- acorn: 8.14.1
9309
+ acorn: 8.15.0
9310
escape-string-regexp: 5.0.0
9311
estree-walker: 3.0.3
9312
local-pkg: 1.1.1
@@ -9437,7 +9314,7 @@ snapshots:
9314
mlly: 1.7.4
9315
pathe: 2.0.3
9316
picomatch: 4.0.2
9440
- pkg-types: 2.1.0
9317
+ pkg-types: 2.1.1
9318
scule: 1.3.0
9319
strip-literal: 3.0.0
9320
tinyglobby: 0.2.14
@@ -9476,7 +9353,7 @@ snapshots:
9353
9354
unplugin@2.3.5:
9355
dependencies:
9479
- acorn: 8.14.1
9356
+ acorn: 8.15.0
9357
picomatch: 4.0.2
9358
webpack-virtual-modules: 0.6.2
9359
@@ -9490,9 +9367,9 @@ snapshots:
9367
knitwork: 1.2.0
9368
scule: 1.3.0
9369
9493
- update-browserslist-db@1.1.3(browserslist@4.24.5):
9370
+ update-browserslist-db@1.1.3(browserslist@4.25.1):
9371
dependencies:
9495
- browserslist: 4.24.5
9372
+ browserslist: 4.25.1
9373
escalade: 3.2.0
9374
picocolors: 1.1.1
9375
@@ -9527,28 +9404,28 @@ snapshots:
9404
'@types/unist': 3.0.3
9405
vfile-message: 4.0.2
9406
9530
- vite-bundle-visualizer@1.2.1(rollup@4.41.1):
9407
+ vite-bundle-visualizer@1.2.1(rollup@4.44.1):
9408
dependencies:
9409
cac: 6.7.14
9410
import-from-esm: 1.3.4
9534
- rollup-plugin-visualizer: 5.14.0(rollup@4.41.1)
9411
+ rollup-plugin-visualizer: 5.14.0(rollup@4.44.1)
9412
tmp: 0.2.3
9413
transitivePeerDependencies:
9414
- rolldown
9415
- rollup
9416
- supports-color
9417
9541
- vite-hot-client@2.0.4(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)):
9418
+ vite-hot-client@2.0.4(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)):
9419
dependencies:
9543
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9420
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9421
9545
- vite-node@3.2.4(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0):
9422
+ vite-node@3.2.4(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0):
9423
dependencies:
9424
cac: 6.7.14
9425
debug: 4.4.1(supports-color@8.1.1)
9426
es-module-lexer: 1.7.0
9427
pathe: 2.0.3
9551
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9428
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9429
transitivePeerDependencies:
9430
- '@types/node'
9431
- jiti
@@ -9563,10 +9440,10 @@ snapshots:
9440
- tsx
9441
- yaml
9442
9566
- vite-plugin-inspect@0.8.9(rollup@4.41.1)(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)):
9443
+ vite-plugin-inspect@0.8.9(rollup@4.44.1)(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)):
9444
dependencies:
9445
'@antfu/utils': 0.7.10
9569
- '@rollup/pluginutils': 5.1.4(rollup@4.41.1)
9446
+ '@rollup/pluginutils': 5.2.0(rollup@4.44.1)
9447
debug: 4.4.1(supports-color@8.1.1)
9448
error-stack-parser-es: 0.1.5
9449
fs-extra: 11.3.0
@@ -9574,39 +9451,39 @@ snapshots:
9451
perfect-debounce: 1.0.0
9452
picocolors: 1.1.1
9453
sirv: 3.0.1
9577
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9454
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9455
transitivePeerDependencies:
9456
- rollup
9457
- supports-color
9458
9582
- vite-plugin-vue-devtools@7.7.7(rollup@4.41.1)(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3)):
9459
+ vite-plugin-vue-devtools@7.7.7(rollup@4.44.1)(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3)):
9460
dependencies:
9584
- '@vue/devtools-core': 7.7.7(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))
9461
+ '@vue/devtools-core': 7.7.7(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))(vue@3.5.17(typescript@5.8.3))
9462
'@vue/devtools-kit': 7.7.7
9463
'@vue/devtools-shared': 7.7.7
9464
execa: 9.6.0
9465
sirv: 3.0.1
9589
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9590
- vite-plugin-inspect: 0.8.9(rollup@4.41.1)(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
9591
- vite-plugin-vue-inspector: 5.3.1(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
9466
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9467
+ vite-plugin-inspect: 0.8.9(rollup@4.44.1)(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
9468
+ vite-plugin-vue-inspector: 5.3.2(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
9469
transitivePeerDependencies:
9470
- '@nuxt/kit'
9471
- rollup
9472
- supports-color
9473
- vue
9474
9598
- vite-plugin-vue-inspector@5.3.1(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)):
9475
+ vite-plugin-vue-inspector@5.3.2(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)):
9476
dependencies:
9600
- '@babel/core': 7.27.3
9601
- '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.3)
9602
- '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.3)
9603
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.3)
9604
- '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.3)
9605
- '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.27.3)
9606
- '@vue/compiler-dom': 3.5.16
9477
+ '@babel/core': 7.27.7
9478
+ '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.7)
9479
+ '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.7)
9480
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.7)
9481
+ '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.7)
9482
+ '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.27.7)
9483
+ '@vue/compiler-dom': 3.5.17
9484
kolorist: 1.8.0
9485
magic-string: 0.30.17
9609
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9486
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9487
transitivePeerDependencies:
9488
- supports-color
9489
@@ -9615,27 +9492,27 @@ snapshots:
9492
svgo: 3.3.2
9493
vue: 3.5.17(typescript@5.8.3)
9494
9618
- vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0):
9495
+ vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0):
9496
dependencies:
9497
esbuild: 0.25.5
9621
- fdir: 6.4.5(picomatch@4.0.2)
9498
+ fdir: 6.4.6(picomatch@4.0.2)
9499
picomatch: 4.0.2
9623
- postcss: 8.5.3
9624
- rollup: 4.41.1
9500
+ postcss: 8.5.6
9501
+ rollup: 4.44.1
9502
tinyglobby: 0.2.14
9503
optionalDependencies:
9627
- '@types/node': 24.0.3
9504
+ '@types/node': 24.0.6
9505
fsevents: 2.3.3
9506
jiti: 2.4.2
9507
lightningcss: 1.30.1
9508
sass: 1.89.2
9509
yaml: 2.8.0
9510
9634
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.3)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0):
9511
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.0.6)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0):
9512
dependencies:
9513
'@types/chai': 5.2.2
9514
'@vitest/expect': 3.2.4
9638
- '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
9515
+ '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0))
9516
'@vitest/pretty-format': 3.2.4
9517
'@vitest/runner': 3.2.4
9518
'@vitest/snapshot': 3.2.4
@@ -9653,12 +9530,12 @@ snapshots:
9530
tinyglobby: 0.2.14
9531
tinypool: 1.1.1
9532
tinyrainbow: 2.0.0
9656
- vite: 6.3.5(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9657
- vite-node: 3.2.4(@types/node@24.0.3)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9533
+ vite: 6.3.5(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9534
+ vite-node: 3.2.4(@types/node@24.0.6)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(yaml@2.8.0)
9535
why-is-node-running: 2.3.0
9536
optionalDependencies:
9537
'@types/debug': 4.1.12
9661
- '@types/node': 24.0.3
9538
+ '@types/node': 24.0.6
9539
jsdom: 26.1.0
9540
transitivePeerDependencies:
9541
- jiti
@@ -9691,18 +9568,18 @@ snapshots:
9568
vue-codemirror@6.1.1(codemirror@6.0.2)(vue@3.5.17(typescript@5.8.3)):
9569
dependencies:
9570
'@codemirror/commands': 6.8.1
9694
- '@codemirror/language': 6.11.0
9571
+ '@codemirror/language': 6.11.2
9572
'@codemirror/state': 6.5.2
9696
- '@codemirror/view': 6.36.8
9573
+ '@codemirror/view': 6.38.0
9574
codemirror: 6.0.2
9575
vue: 3.5.17(typescript@5.8.3)
9576
9577
vue-component-type-helpers@2.2.10: {}
9578
9702
- vue-eslint-parser@10.1.3(eslint@9.29.0(jiti@2.4.2)):
9579
+ vue-eslint-parser@10.1.4(eslint@9.30.0(jiti@2.4.2)):
9580
dependencies:
9581
debug: 4.4.1(supports-color@8.1.1)
9705
- eslint: 9.29.0(jiti@2.4.2)
9582
+ eslint: 9.30.0(jiti@2.4.2)
9583
eslint-scope: 8.4.0
9584
eslint-visitor-keys: 4.2.1
9585
espree: 10.4.0
@@ -9735,7 +9612,7 @@ snapshots:
9612
9613
vue-tsc@2.2.10(typescript@5.8.3):
9614
dependencies:
9738
- '@volar/typescript': 2.4.14
9615
+ '@volar/typescript': 2.4.15
9616
'@vue/language-core': 2.2.10(typescript@5.8.3)
9617
typescript: 5.8.3
9618
frontend/src/api/endpoints/threatIntel.ts
+17
@@ -6,6 +6,8 @@ import type {
6
EpssScore,
7
EvaluationData,
8
ThreatIntelResponse,
9
+ VirusTotalAnalysis,
10
+ VirusTotalFileCheckResponse,
11
VirusTotalResponse
12
} from "@/types/threatIntel.d"
13
import { HttpClient } from "../httpClient"
@@ -74,5 +76,20 @@ export default {
76
return HttpClient.post<FlaskBaseResponse & VirusTotalResponse>(`/threat_intel/virustotal`, {
77
ioc_value: iocValue
78
})
79
+ },
80
+ virusTotalFileCheck(file: File) {
81
+ const form = new FormData()
82
+ form.append("file", new Blob([file], { type: file.type }), file.name)
83
+
84
+ return HttpClient.post<FlaskBaseResponse & { data: VirusTotalFileCheckResponse }>(
85
+ `/threat_intel/virustotal/file/submit`,
86
+ form
87
+ )
88
+ },
89
+ virusTotalAnalysis(id: string, signal?: AbortSignal) {
90
+ return HttpClient.get<FlaskBaseResponse & { data: VirusTotalAnalysis }>(
91
+ `/threat_intel/virustotal/analysis/${id}`,
92
+ signal ? { signal } : {}
93
+ )
94
}
95
}
frontend/src/components/threatIntel/ThreatIntelButton.vue
+17
-3
@@ -11,20 +11,32 @@
11
:width="500"
12
style="max-width: 90vw"
13
:trap-focus="false"
14
+ :close-on-esc="false"
15
+ :mask-closable="false"
16
display-directive="show"
17
>
16
- <n-drawer-content title="SOCFortress Threat Intel" closable :native-scrollbar="false">
17
- <ThreatIntelForm @mounted="threatIntelCTX = $event" />
18
+ <n-drawer-content title="Threat Intel" closable :native-scrollbar="false">
19
+ <div class="py-3">
20
+ <n-collapse default-expanded-names="1" accordion display-directive="show">
21
+ <n-collapse-item title="SOCFortress Threat Intel" name="1">
22
+ <ThreatIntelForm @mounted="threatIntelCTX = $event" />
23
+ </n-collapse-item>
24
+ <n-collapse-item title="Virus Total" name="2">
25
+ <VirusTotalForm @mounted="virusTotalCTX = $event" />
26
+ </n-collapse-item>
27
+ </n-collapse>
28
+ </div>
29
</n-drawer-content>
30
</n-drawer>
31
</template>
32
33
<script setup lang="ts">
34
import type { Size, Type } from "naive-ui/es/button/src/interface"
24
-import { NButton, NDrawer, NDrawerContent } from "naive-ui"
35
+import { NButton, NCollapse, NCollapseItem, NDrawer, NDrawerContent } from "naive-ui"
36
import { ref, watch } from "vue"
37
import Icon from "@/components/common/Icon.vue"
38
import ThreatIntelForm from "./ThreatIntelForm.vue"
39
+import VirusTotalForm from "./VirusTotalForm.vue"
40
41
const { type, size } = defineProps<{
42
size?: Size
@@ -34,8 +46,10 @@ const { type, size } = defineProps<{
46
const ThreatIcon = "mynaui:info-waves"
47
const showThreatIntelDrawer = ref(false)
48
const threatIntelCTX = ref<{ restore: () => void } | null>(null)
49
+const virusTotalCTX = ref<{ restore: () => void } | null>(null)
50
51
watch(showThreatIntelDrawer, () => {
52
threatIntelCTX.value?.restore()
53
+ virusTotalCTX.value?.restore()
54
})
55
</script>
frontend/src/components/threatIntel/ThreatIntelForm.vue
+2
-2
@@ -125,12 +125,12 @@ function create() {
125
message.success(res.data?.message || "SOCFortress Threat Intel submitted.")
126
} else {
127
error.value = res.data?.message || "An error occurred. Please try again later."
128
- message.warning(res.data?.message || "An error occurred. Please try again later.")
128
+ message.warning(error.value)
129
}
130
})
131
.catch(err => {
132
error.value = err.response?.data?.message || "An error occurred. Please try again later."
133
- message.error(err.response?.data?.message || "An error occurred. Please try again later.")
133
+ message.error(error.value)
134
})
135
.finally(() => {
136
loading.value = false
frontend/src/components/threatIntel/VirusTotalForm.vue
new
+322
@@ -0,0 +1,322 @@
1
+<template>
2
+ <n-spin :show="uploading">
3
+ <div class="flex flex-col gap-3">
4
+ <div class="flex flex-col gap-1">
5
+ <n-upload v-model:file-list="fileList" :max="1" :disabled="uploading">
6
+ <n-upload-dragger>
7
+ <div>
8
+ <Icon :name="UploadIcon" :size="28" :depth="3" />
9
+ </div>
10
+ <div class="font-medium">Click or drag a file to this area to upload</div>
11
+ </n-upload-dragger>
12
+ </n-upload>
13
+ </div>
14
+ <div class="mb-2 flex justify-end">
15
+ <n-button type="primary" :disabled="!isValid" :loading="uploading" @click="submit()">Submit</n-button>
16
+ </div>
17
+ <div v-if="error" class="response bg-secondary error">
18
+ <div class="px-4 py-2.5">
19
+ {{ error }}
20
+ </div>
21
+ </div>
22
+ <div v-else class="flex flex-col gap-3">
23
+ <div v-if="fileResponse" class="response bg-secondary p-4">
24
+ <div class="flex flex-col gap-4 text-sm">
25
+ <div class="font-semibold">
26
+ This link gives you access to the instance created from your uploaded file.
27
+ </div>
28
+ <n-alert type="warning">
29
+ <template #icon>
30
+ <Icon name="carbon:warning-alt" :size="14" />
31
+ </template>
32
+ <template #header>
33
+ <div class="text-xs">Please note</div>
34
+ </template>
35
+ <template #default>
36
+ <div class="text-xs">
37
+ Once you close this window, the link cannot be retrieved again. If you think you
38
+ might need it later, make sure to copy and save it.
39
+ </div>
40
+ </template>
41
+ </n-alert>
42
+ <div>
43
+ <a
44
+ :href="fileResponse.links.self"
45
+ target="_blank"
46
+ alt="references url"
47
+ rel="nofollow noopener noreferrer"
48
+ class="leading-6"
49
+ >
50
+ <span>
51
+ {{ fileResponse.links.self }}
52
+ </span>
53
+ <Icon :name="LinkIcon" :size="14" class="relative top-0.5 ml-2" />
54
+ </a>
55
+ </div>
56
+ <div v-if="isCopySupported" class="flex justify-end">
57
+ <n-tooltip :show="showCopyTooltip" trigger="manual">
58
+ <template #trigger>
59
+ <n-button size="small" secondary @click="copyLink()">
60
+ <template #icon>
61
+ <Icon name="carbon:copy" :size="14" />
62
+ </template>
63
+ Copy
64
+ </n-button>
65
+ </template>
66
+ <div class="text-xs">Copied!</div>
67
+ </n-tooltip>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ <div
72
+ v-if="fileResponse && !analysisResponse"
73
+ class="response bg-secondary flex flex-wrap items-center gap-2 p-4"
74
+ >
75
+ <Icon :name="LoadingIcon" :size="16" class="relative top-0.5" />
76
+ analyzing...
77
+ </div>
78
+ <n-spin v-if="analysisResponse" :show="loading">
79
+ <div class="response bg-secondary overflow-hidden">
80
+ <div class="bg-default flex items-center justify-between p-4">
81
+ <div>Analysis</div>
82
+ <n-button :loading secondary size="small" @click="analysis()">
83
+ <template #icon>
84
+ <Icon :name="RefreshIcon" :size="14" />
85
+ </template>
86
+ Reload
87
+ </n-button>
88
+ </div>
89
+ <div class="divide-border flex flex-col divide-y-2 text-sm">
90
+ <div class="flex flex-col gap-1 p-4">
91
+ <div class="text-secondary text-xs">status</div>
92
+ <div
93
+ class="flex items-center gap-1"
94
+ :class="{
95
+ 'text-success': analysisResponse.attributes.status === 'completed',
96
+ 'text-warning': analysisResponse.attributes.status === 'queued'
97
+ }"
98
+ >
99
+ <Icon
100
+ :name="
101
+ analysisResponse.attributes.status === 'completed'
102
+ ? 'carbon:checkmark-outline'
103
+ : 'carbon:hourglass'
104
+ "
105
+ :size="14"
106
+ />
107
+ {{ analysisResponse.attributes.status }}
108
+ </div>
109
+ </div>
110
+ <div v-if="!_isEmpty(analysisResponse.attributes.stats)" class="flex flex-col gap-1 p-4">
111
+ <div class="text-secondary text-xs">stats</div>
112
+ <div class="divide-border divide-y-1 flex flex-col gap-2">
113
+ <div
114
+ v-for="(val, key) of analysisResponse.attributes.stats"
115
+ :key="key"
116
+ class="flex items-end justify-between gap-4"
117
+ >
118
+ <div>{{ key }}</div>
119
+ <div class="text-right font-mono">{{ val }}</div>
120
+ </div>
121
+ </div>
122
+ </div>
123
+ <div
124
+ v-if="!_isEmpty(analysisResponse.attributes.results)"
125
+ class="flex flex-col gap-2 overflow-hidden p-4"
126
+ >
127
+ <div class="text-secondary flex items-center justify-between text-xs">
128
+ <div>results</div>
129
+ <n-button
130
+ size="tiny"
131
+ secondary
132
+ @click="analysisResultCollapsed = !analysisResultCollapsed"
133
+ >
134
+ <template #icon>
135
+ <Icon
136
+ :name="
137
+ analysisResultCollapsed
138
+ ? 'carbon:chevron-right'
139
+ : 'carbon:chevron-down'
140
+ "
141
+ :size="14"
142
+ />
143
+ </template>
144
+ {{ analysisResultCollapsed ? "expand" : "collapse" }}
145
+ </n-button>
146
+ </div>
147
+ <div v-if="!analysisResultCollapsed" class="flex flex-col gap-4">
148
+ <div
149
+ v-for="(resultVal, resultKey) of analysisResponse.attributes.results"
150
+ :key="resultKey"
151
+ class="border-default border"
152
+ >
153
+ <div class="px-2 py-1">{{ resultKey }}</div>
154
+ <div class="divide-border divide-y-1 bg-default flex flex-col gap-1">
155
+ <div
156
+ v-for="(val, key) of resultVal"
157
+ :key="key"
158
+ class="flex items-end justify-between gap-4 px-2 py-0.5"
159
+ >
160
+ <div>{{ key }}</div>
161
+ <div class="text-right font-mono">{{ val || "—" }}</div>
162
+ </div>
163
+ </div>
164
+ </div>
165
+ </div>
166
+ </div>
167
+ <div v-if="!_isEmpty(analysisResponse.links)" class="flex flex-col gap-1 p-4">
168
+ <div class="text-secondary text-xs">links</div>
169
+ <div class="divide-border divide-y-1 flex flex-col gap-2">
170
+ <div
171
+ v-for="(val, key) of analysisResponse.links"
172
+ :key="key"
173
+ class="flex items-end justify-between"
174
+ >
175
+ <a
176
+ :href="val"
177
+ target="_blank"
178
+ alt="references url"
179
+ rel="nofollow noopener noreferrer"
180
+ class="leading-6"
181
+ >
182
+ <span>
183
+ {{ val }}
184
+ </span>
185
+ <Icon :name="LinkIcon" :size="14" class="relative top-0.5 ml-2" />
186
+ </a>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ </div>
192
+ </n-spin>
193
+ </div>
194
+ </div>
195
+ </n-spin>
196
+</template>
197
+
198
+<script setup lang="ts">
199
+import type { UploadFileInfo } from "naive-ui"
200
+import type { VirusTotalAnalysis, VirusTotalFileCheckResponse } from "@/types/threatIntel.d"
201
+import { useClipboard } from "@vueuse/core"
202
+import _isEmpty from "lodash/isEmpty"
203
+import { NAlert, NButton, NSpin, NTooltip, NUpload, NUploadDragger, useMessage } from "naive-ui"
204
+import { computed, onMounted, ref } from "vue"
205
+import Api from "@/api"
206
+import Icon from "@/components/common/Icon.vue"
207
+
208
+const emit = defineEmits<{
209
+ (
210
+ e: "mounted",
211
+ value: {
212
+ restore: () => void
213
+ }
214
+ ): void
215
+}>()
216
+
217
+const LinkIcon = "carbon:launch"
218
+const RefreshIcon = "carbon:renew"
219
+const LoadingIcon = "eos-icons:loading"
220
+const UploadIcon = "carbon:cloud-upload"
221
+
222
+const message = useMessage()
223
+const loading = ref(false)
224
+const uploading = ref(false)
225
+const analysisResultCollapsed = ref(true)
226
+const fileResponse = ref<VirusTotalFileCheckResponse | null>(null)
227
+const analysisResponse = ref<VirusTotalAnalysis | null>(null)
228
+const error = ref<string>("")
229
+const fileList = ref<UploadFileInfo[]>([])
230
+const newFile = computed<File | null>(() => fileList.value?.[0]?.file || null)
231
+let abortController: AbortController | null = null
232
+
233
+const fileLink = computed(() => fileResponse.value?.links.self || "")
234
+const { copy: copyLink, copied: showCopyTooltip, isSupported: isCopySupported } = useClipboard({ source: fileLink })
235
+
236
+const isValid = computed(() => !!newFile.value)
237
+
238
+function restore() {
239
+ fileList.value = []
240
+ loading.value = false
241
+ uploading.value = false
242
+ fileResponse.value = null
243
+ analysisResponse.value = null
244
+ error.value = ""
245
+ abortController?.abort()
246
+}
247
+
248
+function submit() {
249
+ if (!newFile.value) return
250
+
251
+ uploading.value = true
252
+
253
+ Api.threatIntel
254
+ .virusTotalFileCheck(newFile.value)
255
+ .then(res => {
256
+ if (res.data.success) {
257
+ error.value = ""
258
+ fileResponse.value = res.data.data
259
+ analysisResponse.value = null
260
+
261
+ analysis()
262
+ message.success(res.data?.message || "File submitted successfully for analysis.")
263
+ } else {
264
+ error.value = res.data?.message || "An error occurred. Please try again later."
265
+ message.warning(error.value)
266
+ }
267
+ })
268
+ .catch(err => {
269
+ error.value = err.response?.data?.message || "An error occurred. Please try again later."
270
+ message.error(error.value)
271
+ })
272
+ .finally(() => {
273
+ uploading.value = false
274
+ })
275
+}
276
+
277
+function analysis() {
278
+ abortController?.abort()
279
+
280
+ if (!fileResponse.value?.id) return
281
+
282
+ loading.value = true
283
+ abortController = new AbortController()
284
+
285
+ Api.threatIntel
286
+ .virusTotalAnalysis(fileResponse.value.id, abortController.signal)
287
+ .then(res => {
288
+ if (res.data.success) {
289
+ error.value = ""
290
+ analysisResponse.value = res.data.data
291
+ message.success(res.data?.message || "Analysis status retrieved successfully.")
292
+ } else {
293
+ error.value = res.data?.message || "An error occurred. Please try again later."
294
+ message.warning(error.value)
295
+ }
296
+ })
297
+ .catch(err => {
298
+ error.value = err.response?.data?.message || "An error occurred. Please try again later."
299
+ message.error(error.value)
300
+ })
301
+ .finally(() => {
302
+ loading.value = false
303
+ })
304
+}
305
+
306
+onMounted(() => {
307
+ emit("mounted", {
308
+ restore
309
+ })
310
+})
311
+</script>
312
+
313
+<style scoped lang="scss">
314
+.response {
315
+ border-radius: var(--border-radius);
316
+ border: 1px solid var(--success-color);
317
+
318
+ &.error {
319
+ border-color: var(--error-color);
320
+ }
321
+}
322
+</style>
frontend/src/types/threatIntel.d.ts
+44
@@ -201,3 +201,47 @@ export interface VirusTotalLastHTTPSCertificateExtensions {
201
CA: boolean
202
"1.3.6.1.4.1.11129.2.4.2": string
203
}
204
+
205
+export interface VirusTotalAnalysis {
206
+ type: string
207
+ id: string
208
+ attributes: VirusTotalAnalysisAttributes
209
+ links: Record<string, string>
210
+}
211
+
212
+export interface VirusTotalAnalysisAttributes {
213
+ date: number
214
+ status: "queued" | "completed"
215
+ stats: VirusTotalAnalysisStats
216
+ results: { [key: string]: VirusTotalAnalysisResult }
217
+}
218
+
219
+export interface VirusTotalAnalysisResult {
220
+ method: string
221
+ engine_name: string
222
+ engine_version: null | string
223
+ engine_update: string
224
+ category: string
225
+ result: null | string
226
+}
227
+
228
+export interface VirusTotalAnalysisStats {
229
+ harmless: number
230
+ malicious: number
231
+ suspicious: number
232
+ undetected: number
233
+ timeout: number
234
+ confirmed_timeout: number
235
+ failure: number
236
+ type_unsupported: number
237
+ "confirmed-timeout": number
238
+ "type-unsupported": number
239
+}
240
+
241
+export interface VirusTotalFileCheckResponse {
242
+ type: string
243
+ id: string
244
+ links: {
245
+ self: string
246
+ }
247
+}