@cryptotaxi247 / CoPilot / commits / d578e6d3

Incident management improvements (#304)

* feat: Add multiple filters for listing alerts * add asset_name and status to multiple filters search * feat: Add asset_name and status filters to multiple filters search * refactor: update precommit order * chore: update dependencies in frontend * chore: add pnpm lock file * refactor: remove package.json from backend * chore: update precommit * refactor: update badge component style * feat: add badge style on alert asset component * feat: add assets badges on alert card * refactor: sigma actions box style * added tags to multiple filters * feat: add new alerts filters handler * feat: add new alert filters api * feat: update alerts filters handler * add distinct to sql queries * removed commented out code * refactor: incident-management alert types * feat: improvements on DX and UX * feat: now list info-bar is clickable * refactor: lint and format * precommit fixes --------- Co-authored-by: Davide Di Modica <webmaster.ddm@gmail.com>

taylor_socfortress committed Sep 24, 2024 at 13:14 UTC d578e6d3c4ad58295635375850d5e2fe5fc90da8
31 files changed +13975 -1740
.pre-commit-config.yaml
-5
@@ -45,11 +45,6 @@ repos:
45 - id: flake8
46 name: Check project styling
47
48 - - repo: https://github.com/pre-commit/mirrors-prettier
49 - rev: "v3.0.0"
50 - hooks:
51 - - id: prettier
52 -
48 - repo: https://github.com/pre-commit/mirrors-eslint
49 rev: v9.11.0
50 hooks:
backend/app/incidents/routes/db_operations.py
+44
@@ -1,4 +1,5 @@
1 import io
2 +from typing import List
3 from typing import Optional
4
5 from fastapi import APIRouter
@@ -604,17 +605,48 @@ async def list_alerts_multiple_filters_endpoint(
605 alert_title: Optional[str] = Query(None),
606 customer_code: Optional[str] = Query(None),
607 source: Optional[str] = Query(None),
608 + asset_name: Optional[str] = Query(None),
609 + status: Optional[str] = Query(None),
610 + tags: Optional[List[str]] = Query(None),
611 page: int = Query(1, ge=1),
612 page_size: int = Query(25, ge=1),
613 order: str = Query("desc", regex="^(asc|desc)$"),
614 db: AsyncSession = Depends(get_db),
615 ):
616 + """
617 + Endpoint to list alerts with multiple filters.
618 +
619 + Parameters:
620 + - assigned_to (str, optional): Filter by assigned user.
621 + - alert_title (str, optional): Filter by alert title.
622 + - customer_code (str, optional): Filter by customer code.
623 + - source (str, optional): Filter by source.
624 + - asset_name (str, optional): Filter by asset name.
625 + - status (str, optional): Filter by status.
626 + - tags (List[str], optional): Filter by tags.
627 + - page (int, default=1): Page number.
628 + - page_size (int, default=25): Number of alerts per page.
629 + - order (str, default='desc'): Sorting order ('asc' or 'desc').
630 + - db (AsyncSession): Database session.
631 +
632 + Returns:
633 + - alerts (List[AlertOut]): List of alerts matching the filters.
634 + - total (int): Total number of alerts matching the filters.
635 + - open (int): Number of open alerts matching the filters.
636 + - in_progress (int): Number of alerts in progress matching the filters.
637 + - closed (int): Number of closed alerts matching the filters.
638 + - success (bool): Indicates if the operation was successful.
639 + - message (str): Success message.
640 + """
641 return AlertOutResponse(
642 alerts=await list_alerts_multiple_filters(
643 assigned_to=assigned_to,
644 alert_title=alert_title,
645 customer_code=customer_code,
646 source=source,
647 + asset_name=asset_name,
648 + status=status,
649 + tags=tags,
650 db=db,
651 page=page,
652 page_size=page_size,
@@ -625,6 +657,9 @@ async def list_alerts_multiple_filters_endpoint(
657 alert_title=alert_title,
658 customer_code=customer_code,
659 source=source,
660 + asset_name=asset_name,
661 + status=status,
662 + tags=tags,
663 db=db,
664 ),
665 open=await alerts_open_multiple_filters(
@@ -632,6 +667,9 @@ async def list_alerts_multiple_filters_endpoint(
667 alert_title=alert_title,
668 customer_code=customer_code,
669 source=source,
670 + asset_name=asset_name,
671 + status=status,
672 + tags=tags,
673 db=db,
674 ),
675 in_progress=await alerts_in_progress_multiple_filters(
@@ -639,6 +677,9 @@ async def list_alerts_multiple_filters_endpoint(
677 alert_title=alert_title,
678 customer_code=customer_code,
679 source=source,
680 + asset_name=asset_name,
681 + status=status,
682 + tags=tags,
683 db=db,
684 ),
685 closed=await alerts_closed_multiple_filters(
@@ -646,6 +687,9 @@ async def list_alerts_multiple_filters_endpoint(
687 alert_title=alert_title,
688 customer_code=customer_code,
689 source=source,
690 + asset_name=asset_name,
691 + status=status,
692 + tags=tags,
693 db=db,
694 ),
695 success=True,
backend/app/incidents/services/db_operations.py
+82 -4
@@ -9,6 +9,7 @@ from loguru import logger
9 from sqlalchemy import asc
10 from sqlalchemy import delete
11 from sqlalchemy import desc
12 +from sqlalchemy import distinct
13 from sqlalchemy import func
14 from sqlalchemy.exc import IntegrityError
15 from sqlalchemy.ext.asyncio import AsyncSession
@@ -194,6 +195,9 @@ async def alerts_total_multiple_filters(
195 alert_title: Optional[str] = None,
196 customer_code: Optional[str] = None,
197 source: Optional[str] = None,
198 + asset_name: Optional[str] = None,
199 + status: Optional[str] = None,
200 + tags: Optional[List[str]] = None,
201 ) -> int:
202 # Build dynamic filters
203 filters = []
@@ -205,9 +209,22 @@ async def alerts_total_multiple_filters(
209 filters.append(Alert.customer_code == customer_code)
210 if source:
211 filters.append(Alert.source == source)
212 + if asset_name:
213 + filters.append(Asset.asset_name == asset_name)
214 + if status:
215 + filters.append(Alert.status == status)
216 + if tags:
217 + filters.append(AlertTag.tag.in_(tags))
218
219 # Build the query
210 - query = select(func.count()).select_from(Alert).where(*filters)
220 + query = (
221 + select(func.count(distinct(Alert.id)))
222 + .select_from(Alert)
223 + .join(Asset, isouter=True)
224 + .join(AlertToTag, isouter=True)
225 + .join(AlertTag, AlertToTag.tag_id == AlertTag.id, isouter=True)
226 + .where(*filters)
227 + )
228
229 result = await db.execute(query)
230 total = result.scalar_one()
@@ -220,6 +237,9 @@ async def alerts_closed_multiple_filters(
237 alert_title: Optional[str] = None,
238 customer_code: Optional[str] = None,
239 source: Optional[str] = None,
240 + asset_name: Optional[str] = None,
241 + status: Optional[str] = None,
242 + tags: Optional[List[str]] = None,
243 ) -> int:
244 # Include the status filter
245 filters = [Alert.status == "CLOSED"]
@@ -231,8 +251,21 @@ async def alerts_closed_multiple_filters(
251 filters.append(Alert.customer_code == customer_code)
252 if source:
253 filters.append(Alert.source == source)
254 + if asset_name:
255 + filters.append(Asset.asset_name == asset_name)
256 + if status:
257 + filters.append(Alert.status == status)
258 + if tags:
259 + filters.append(AlertTag.tag.in_(tags))
260
235 - query = select(func.count()).select_from(Alert).where(*filters)
261 + query = (
262 + select(func.count(distinct(Alert.id)))
263 + .select_from(Alert)
264 + .join(Asset, isouter=True)
265 + .join(AlertToTag, isouter=True)
266 + .join(AlertTag, AlertToTag.tag_id == AlertTag.id, isouter=True)
267 + .where(*filters)
268 + )
269
270 result = await db.execute(query)
271 closed_count = result.scalar_one()
@@ -245,6 +278,9 @@ async def alerts_in_progress_multiple_filters(
278 alert_title: Optional[str] = None,
279 customer_code: Optional[str] = None,
280 source: Optional[str] = None,
281 + asset_name: Optional[str] = None,
282 + status: Optional[str] = None,
283 + tags: Optional[List[str]] = None,
284 ) -> int:
285 filters = [Alert.status == "IN_PROGRESS"]
286 if assigned_to:
@@ -255,8 +291,21 @@ async def alerts_in_progress_multiple_filters(
291 filters.append(Alert.customer_code == customer_code)
292 if source:
293 filters.append(Alert.source == source)
294 + if asset_name:
295 + filters.append(Asset.asset_name == asset_name)
296 + if status:
297 + filters.append(Alert.status == status)
298 + if tags:
299 + filters.append(AlertTag.tag.in_(tags))
300
259 - query = select(func.count()).select_from(Alert).where(*filters)
301 + query = (
302 + select(func.count(distinct(Alert.id)))
303 + .select_from(Alert)
304 + .join(Asset, isouter=True)
305 + .join(AlertToTag, isouter=True)
306 + .join(AlertTag, AlertToTag.tag_id == AlertTag.id, isouter=True)
307 + .where(*filters)
308 + )
309
310 result = await db.execute(query)
311 in_progress_count = result.scalar_one()
@@ -269,6 +318,9 @@ async def alerts_open_multiple_filters(
318 alert_title: Optional[str] = None,
319 customer_code: Optional[str] = None,
320 source: Optional[str] = None,
321 + asset_name: Optional[str] = None,
322 + status: Optional[str] = None,
323 + tags: Optional[List[str]] = None,
324 ) -> int:
325 filters = [Alert.status == "OPEN"]
326 if assigned_to:
@@ -279,8 +331,21 @@ async def alerts_open_multiple_filters(
331 filters.append(Alert.customer_code == customer_code)
332 if source:
333 filters.append(Alert.source == source)
334 + if asset_name:
335 + filters.append(Asset.asset_name == asset_name)
336 + if status:
337 + filters.append(Alert.status == status)
338 + if tags:
339 + filters.append(AlertTag.tag.in_(tags))
340
283 - query = select(func.count()).select_from(Alert).where(*filters)
341 + query = (
342 + select(func.count(distinct(Alert.id)))
343 + .select_from(Alert)
344 + .join(Asset, isouter=True)
345 + .join(AlertToTag, isouter=True)
346 + .join(AlertTag, AlertToTag.tag_id == AlertTag.id, isouter=True)
347 + .where(*filters)
348 + )
349
350 result = await db.execute(query)
351 open_count = result.scalar_one()
@@ -1475,6 +1540,9 @@ async def list_alerts_multiple_filters(
1540 alert_title: Optional[str] = None,
1541 customer_code: Optional[str] = None,
1542 source: Optional[str] = None,
1543 + asset_name: Optional[str] = None,
1544 + status: Optional[str] = None,
1545 + tags: Optional[List[str]] = None,
1546 page: int = 1,
1547 page_size: int = 25,
1548 order: str = "desc",
@@ -1492,10 +1560,20 @@ async def list_alerts_multiple_filters(
1560 filters.append(Alert.customer_code == customer_code)
1561 if source:
1562 filters.append(Alert.source == source)
1563 + if asset_name:
1564 + filters.append(Asset.asset_name == asset_name)
1565 + if status:
1566 + filters.append(Alert.status == status)
1567 + if tags:
1568 + filters.append(AlertTag.tag.in_(tags))
1569
1570 # Build the query with dynamic filters
1571 query = (
1572 select(Alert)
1573 + .distinct(Alert.id)
1574 + .join(Asset, isouter=True) # Join with Asset table
1575 + .join(AlertToTag, isouter=True) # Join with AlertToTag table
1576 + .join(AlertTag, AlertToTag.tag_id == AlertTag.id, isouter=True) # Join with AlertTag table
1577 .where(*filters)
1578 .options(
1579 selectinload(Alert.comments),
backend/package-lock.json deleted
-1328
@@ -1,1328 +0,0 @@
1 -{
2 - "name": "backend",
3 - "lockfileVersion": 3,
4 - "requires": true,
5 - "packages": {
6 - "": {
7 - "devDependencies": {
8 - "eslint-plugin-vue": "^9.28.0"
9 - }
10 - },
11 - "node_modules/@eslint-community/eslint-utils": {
12 - "version": "4.4.0",
13 - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
14 - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
15 - "dev": true,
16 - "dependencies": {
17 - "eslint-visitor-keys": "^3.3.0"
18 - },
19 - "engines": {
20 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
21 - },
22 - "peerDependencies": {
23 - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
24 - }
25 - },
26 - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
27 - "version": "3.4.3",
28 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
29 - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
30 - "dev": true,
31 - "engines": {
32 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
33 - },
34 - "funding": {
35 - "url": "https://opencollective.com/eslint"
36 - }
37 - },
38 - "node_modules/@eslint-community/regexpp": {
39 - "version": "4.11.1",
40 - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
41 - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
42 - "dev": true,
43 - "peer": true,
44 - "engines": {
45 - "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
46 - }
47 - },
48 - "node_modules/@eslint/config-array": {
49 - "version": "0.18.0",
50 - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
51 - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
52 - "dev": true,
53 - "peer": true,
54 - "dependencies": {
55 - "@eslint/object-schema": "^2.1.4",
56 - "debug": "^4.3.1",
57 - "minimatch": "^3.1.2"
58 - },
59 - "engines": {
60 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
61 - }
62 - },
63 - "node_modules/@eslint/eslintrc": {
64 - "version": "3.1.0",
65 - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
66 - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
67 - "dev": true,
68 - "peer": true,
69 - "dependencies": {
70 - "ajv": "^6.12.4",
71 - "debug": "^4.3.2",
72 - "espree": "^10.0.1",
73 - "globals": "^14.0.0",
74 - "ignore": "^5.2.0",
75 - "import-fresh": "^3.2.1",
76 - "js-yaml": "^4.1.0",
77 - "minimatch": "^3.1.2",
78 - "strip-json-comments": "^3.1.1"
79 - },
80 - "engines": {
81 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
82 - },
83 - "funding": {
84 - "url": "https://opencollective.com/eslint"
85 - }
86 - },
87 - "node_modules/@eslint/js": {
88 - "version": "9.11.0",
89 - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.11.0.tgz",
90 - "integrity": "sha512-LPkkenkDqyzTFauZLLAPhIb48fj6drrfMvRGSL9tS3AcZBSVTllemLSNyCvHNNL2t797S/6DJNSIwRwXgMO/eQ==",
91 - "dev": true,
92 - "peer": true,
93 - "engines": {
94 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
95 - }
96 - },
97 - "node_modules/@eslint/object-schema": {
98 - "version": "2.1.4",
99 - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
100 - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
101 - "dev": true,
102 - "peer": true,
103 - "engines": {
104 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
105 - }
106 - },
107 - "node_modules/@eslint/plugin-kit": {
108 - "version": "0.2.0",
109 - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz",
110 - "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==",
111 - "dev": true,
112 - "peer": true,
113 - "dependencies": {
114 - "levn": "^0.4.1"
115 - },
116 - "engines": {
117 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
118 - }
119 - },
120 - "node_modules/@humanwhocodes/module-importer": {
121 - "version": "1.0.1",
122 - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
123 - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
124 - "dev": true,
125 - "peer": true,
126 - "engines": {
127 - "node": ">=12.22"
128 - },
129 - "funding": {
130 - "type": "github",
131 - "url": "https://github.com/sponsors/nzakas"
132 - }
133 - },
134 - "node_modules/@humanwhocodes/retry": {
135 - "version": "0.3.0",
136 - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz",
137 - "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==",
138 - "dev": true,
139 - "peer": true,
140 - "engines": {
141 - "node": ">=18.18"
142 - },
143 - "funding": {
144 - "type": "github",
145 - "url": "https://github.com/sponsors/nzakas"
146 - }
147 - },
148 - "node_modules/@nodelib/fs.scandir": {
149 - "version": "2.1.5",
150 - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
151 - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
152 - "dev": true,
153 - "peer": true,
154 - "dependencies": {
155 - "@nodelib/fs.stat": "2.0.5",
156 - "run-parallel": "^1.1.9"
157 - },
158 - "engines": {
159 - "node": ">= 8"
160 - }
161 - },
162 - "node_modules/@nodelib/fs.stat": {
163 - "version": "2.0.5",
164 - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
165 - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
166 - "dev": true,
167 - "peer": true,
168 - "engines": {
169 - "node": ">= 8"
170 - }
171 - },
172 - "node_modules/@nodelib/fs.walk": {
173 - "version": "1.2.8",
174 - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
175 - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
176 - "dev": true,
177 - "peer": true,
178 - "dependencies": {
179 - "@nodelib/fs.scandir": "2.1.5",
180 - "fastq": "^1.6.0"
181 - },
182 - "engines": {
183 - "node": ">= 8"
184 - }
185 - },
186 - "node_modules/acorn": {
187 - "version": "8.12.1",
188 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
189 - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
190 - "dev": true,
191 - "bin": {
192 - "acorn": "bin/acorn"
193 - },
194 - "engines": {
195 - "node": ">=0.4.0"
196 - }
197 - },
198 - "node_modules/acorn-jsx": {
199 - "version": "5.3.2",
200 - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
201 - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
202 - "dev": true,
203 - "peerDependencies": {
204 - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
205 - }
206 - },
207 - "node_modules/ajv": {
208 - "version": "6.12.6",
209 - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
210 - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
211 - "dev": true,
212 - "peer": true,
213 - "dependencies": {
214 - "fast-deep-equal": "^3.1.1",
215 - "fast-json-stable-stringify": "^2.0.0",
216 - "json-schema-traverse": "^0.4.1",
217 - "uri-js": "^4.2.2"
218 - },
219 - "funding": {
220 - "type": "github",
221 - "url": "https://github.com/sponsors/epoberezkin"
222 - }
223 - },
224 - "node_modules/ansi-regex": {
225 - "version": "5.0.1",
226 - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
227 - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
228 - "dev": true,
229 - "peer": true,
230 - "engines": {
231 - "node": ">=8"
232 - }
233 - },
234 - "node_modules/ansi-styles": {
235 - "version": "4.3.0",
236 - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
237 - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
238 - "dev": true,
239 - "peer": true,
240 - "dependencies": {
241 - "color-convert": "^2.0.1"
242 - },
243 - "engines": {
244 - "node": ">=8"
245 - },
246 - "funding": {
247 - "url": "https://github.com/chalk/ansi-styles?sponsor=1"
248 - }
249 - },
250 - "node_modules/argparse": {
251 - "version": "2.0.1",
252 - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
253 - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
254 - "dev": true,
255 - "peer": true
256 - },
257 - "node_modules/balanced-match": {
258 - "version": "1.0.2",
259 - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
260 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
261 - "dev": true,
262 - "peer": true
263 - },
264 - "node_modules/boolbase": {
265 - "version": "1.0.0",
266 - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
267 - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
268 - "dev": true
269 - },
270 - "node_modules/brace-expansion": {
271 - "version": "1.1.11",
272 - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
273 - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
274 - "dev": true,
275 - "peer": true,
276 - "dependencies": {
277 - "balanced-match": "^1.0.0",
278 - "concat-map": "0.0.1"
279 - }
280 - },
281 - "node_modules/callsites": {
282 - "version": "3.1.0",
283 - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
284 - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
285 - "dev": true,
286 - "peer": true,
287 - "engines": {
288 - "node": ">=6"
289 - }
290 - },
291 - "node_modules/chalk": {
292 - "version": "4.1.2",
293 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
294 - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
295 - "dev": true,
296 - "peer": true,
297 - "dependencies": {
298 - "ansi-styles": "^4.1.0",
299 - "supports-color": "^7.1.0"
300 - },
301 - "engines": {
302 - "node": ">=10"
303 - },
304 - "funding": {
305 - "url": "https://github.com/chalk/chalk?sponsor=1"
306 - }
307 - },
308 - "node_modules/color-convert": {
309 - "version": "2.0.1",
310 - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
311 - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
312 - "dev": true,
313 - "peer": true,
314 - "dependencies": {
315 - "color-name": "~1.1.4"
316 - },
317 - "engines": {
318 - "node": ">=7.0.0"
319 - }
320 - },
321 - "node_modules/color-name": {
322 - "version": "1.1.4",
323 - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
324 - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
325 - "dev": true,
326 - "peer": true
327 - },
328 - "node_modules/concat-map": {
329 - "version": "0.0.1",
330 - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
331 - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
332 - "dev": true,
333 - "peer": true
334 - },
335 - "node_modules/cross-spawn": {
336 - "version": "7.0.3",
337 - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
338 - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
339 - "dev": true,
340 - "peer": true,
341 - "dependencies": {
342 - "path-key": "^3.1.0",
343 - "shebang-command": "^2.0.0",
344 - "which": "^2.0.1"
345 - },
346 - "engines": {
347 - "node": ">= 8"
348 - }
349 - },
350 - "node_modules/cssesc": {
351 - "version": "3.0.0",
352 - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
353 - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
354 - "dev": true,
355 - "bin": {
356 - "cssesc": "bin/cssesc"
357 - },
358 - "engines": {
359 - "node": ">=4"
360 - }
361 - },
362 - "node_modules/debug": {
363 - "version": "4.3.7",
364 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
365 - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
366 - "dev": true,
367 - "dependencies": {
368 - "ms": "^2.1.3"
369 - },
370 - "engines": {
371 - "node": ">=6.0"
372 - },
373 - "peerDependenciesMeta": {
374 - "supports-color": {
375 - "optional": true
376 - }
377 - }
378 - },
379 - "node_modules/deep-is": {
380 - "version": "0.1.4",
381 - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
382 - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
383 - "dev": true,
384 - "peer": true
385 - },
386 - "node_modules/escape-string-regexp": {
387 - "version": "4.0.0",
388 - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
389 - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
390 - "dev": true,
391 - "peer": true,
392 - "engines": {
393 - "node": ">=10"
394 - },
395 - "funding": {
396 - "url": "https://github.com/sponsors/sindresorhus"
397 - }
398 - },
399 - "node_modules/eslint": {
400 - "version": "9.11.0",
401 - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.11.0.tgz",
402 - "integrity": "sha512-yVS6XODx+tMFMDFcG4+Hlh+qG7RM6cCJXtQhCKLSsr3XkLvWggHjCqjfh0XsPPnt1c56oaT6PMgW9XWQQjdHXA==",
403 - "dev": true,
404 - "peer": true,
405 - "dependencies": {
406 - "@eslint-community/eslint-utils": "^4.2.0",
407 - "@eslint-community/regexpp": "^4.11.0",
408 - "@eslint/config-array": "^0.18.0",
409 - "@eslint/eslintrc": "^3.1.0",
410 - "@eslint/js": "9.11.0",
411 - "@eslint/plugin-kit": "^0.2.0",
412 - "@humanwhocodes/module-importer": "^1.0.1",
413 - "@humanwhocodes/retry": "^0.3.0",
414 - "@nodelib/fs.walk": "^1.2.8",
415 - "ajv": "^6.12.4",
416 - "chalk": "^4.0.0",
417 - "cross-spawn": "^7.0.2",
418 - "debug": "^4.3.2",
419 - "escape-string-regexp": "^4.0.0",
420 - "eslint-scope": "^8.0.2",
421 - "eslint-visitor-keys": "^4.0.0",
422 - "espree": "^10.1.0",
423 - "esquery": "^1.5.0",
424 - "esutils": "^2.0.2",
425 - "fast-deep-equal": "^3.1.3",
426 - "file-entry-cache": "^8.0.0",
427 - "find-up": "^5.0.0",
428 - "glob-parent": "^6.0.2",
429 - "ignore": "^5.2.0",
430 - "imurmurhash": "^0.1.4",
431 - "is-glob": "^4.0.0",
432 - "is-path-inside": "^3.0.3",
433 - "json-stable-stringify-without-jsonify": "^1.0.1",
434 - "lodash.merge": "^4.6.2",
435 - "minimatch": "^3.1.2",
436 - "natural-compare": "^1.4.0",
437 - "optionator": "^0.9.3",
438 - "strip-ansi": "^6.0.1",
439 - "text-table": "^0.2.0"
440 - },
441 - "bin": {
442 - "eslint": "bin/eslint.js"
443 - },
444 - "engines": {
445 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
446 - },
447 - "funding": {
448 - "url": "https://eslint.org/donate"
449 - },
450 - "peerDependencies": {
451 - "jiti": "*"
452 - },
453 - "peerDependenciesMeta": {
454 - "jiti": {
455 - "optional": true
456 - }
457 - }
458 - },
459 - "node_modules/eslint-plugin-vue": {
460 - "version": "9.28.0",
461 - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz",
462 - "integrity": "sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==",
463 - "dev": true,
464 - "dependencies": {
465 - "@eslint-community/eslint-utils": "^4.4.0",
466 - "globals": "^13.24.0",
467 - "natural-compare": "^1.4.0",
468 - "nth-check": "^2.1.1",
469 - "postcss-selector-parser": "^6.0.15",
470 - "semver": "^7.6.3",
471 - "vue-eslint-parser": "^9.4.3",
472 - "xml-name-validator": "^4.0.0"
473 - },
474 - "engines": {
475 - "node": "^14.17.0 || >=16.0.0"
476 - },
477 - "peerDependencies": {
478 - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
479 - }
480 - },
481 - "node_modules/eslint-plugin-vue/node_modules/globals": {
482 - "version": "13.24.0",
483 - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
484 - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
485 - "dev": true,
486 - "dependencies": {
487 - "type-fest": "^0.20.2"
488 - },
489 - "engines": {
490 - "node": ">=8"
491 - },
492 - "funding": {
493 - "url": "https://github.com/sponsors/sindresorhus"
494 - }
495 - },
496 - "node_modules/eslint-scope": {
497 - "version": "8.0.2",
498 - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz",
499 - "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==",
500 - "dev": true,
501 - "peer": true,
502 - "dependencies": {
503 - "esrecurse": "^4.3.0",
504 - "estraverse": "^5.2.0"
505 - },
506 - "engines": {
507 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
508 - },
509 - "funding": {
510 - "url": "https://opencollective.com/eslint"
511 - }
512 - },
513 - "node_modules/eslint-visitor-keys": {
514 - "version": "4.0.0",
515 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
516 - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
517 - "dev": true,
518 - "peer": true,
519 - "engines": {
520 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
521 - },
522 - "funding": {
523 - "url": "https://opencollective.com/eslint"
524 - }
525 - },
526 - "node_modules/espree": {
527 - "version": "10.1.0",
528 - "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
529 - "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
530 - "dev": true,
531 - "peer": true,
532 - "dependencies": {
533 - "acorn": "^8.12.0",
534 - "acorn-jsx": "^5.3.2",
535 - "eslint-visitor-keys": "^4.0.0"
536 - },
537 - "engines": {
538 - "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
539 - },
540 - "funding": {
541 - "url": "https://opencollective.com/eslint"
542 - }
543 - },
544 - "node_modules/esquery": {
545 - "version": "1.6.0",
546 - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
547 - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
548 - "dev": true,
549 - "dependencies": {
550 - "estraverse": "^5.1.0"
551 - },
552 - "engines": {
553 - "node": ">=0.10"
554 - }
555 - },
556 - "node_modules/esrecurse": {
557 - "version": "4.3.0",
558 - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
559 - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
560 - "dev": true,
561 - "dependencies": {
562 - "estraverse": "^5.2.0"
563 - },
564 - "engines": {
565 - "node": ">=4.0"
566 - }
567 - },
568 - "node_modules/estraverse": {
569 - "version": "5.3.0",
570 - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
571 - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
572 - "dev": true,
573 - "engines": {
574 - "node": ">=4.0"
575 - }
576 - },
577 - "node_modules/esutils": {
578 - "version": "2.0.3",
579 - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
580 - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
581 - "dev": true,
582 - "peer": true,
583 - "engines": {
584 - "node": ">=0.10.0"
585 - }
586 - },
587 - "node_modules/fast-deep-equal": {
588 - "version": "3.1.3",
589 - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
590 - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
591 - "dev": true,
592 - "peer": true
593 - },
594 - "node_modules/fast-json-stable-stringify": {
595 - "version": "2.1.0",
596 - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
597 - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
598 - "dev": true,
599 - "peer": true
600 - },
601 - "node_modules/fast-levenshtein": {
602 - "version": "2.0.6",
603 - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
604 - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
605 - "dev": true,
606 - "peer": true
607 - },
608 - "node_modules/fastq": {
609 - "version": "1.17.1",
610 - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
611 - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
612 - "dev": true,
613 - "peer": true,
614 - "dependencies": {
615 - "reusify": "^1.0.4"
616 - }
617 - },
618 - "node_modules/file-entry-cache": {
619 - "version": "8.0.0",
620 - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
621 - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
622 - "dev": true,
623 - "peer": true,
624 - "dependencies": {
625 - "flat-cache": "^4.0.0"
626 - },
627 - "engines": {
628 - "node": ">=16.0.0"
629 - }
630 - },
631 - "node_modules/find-up": {
632 - "version": "5.0.0",
633 - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
634 - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
635 - "dev": true,
636 - "peer": true,
637 - "dependencies": {
638 - "locate-path": "^6.0.0",
639 - "path-exists": "^4.0.0"
640 - },
641 - "engines": {
642 - "node": ">=10"
643 - },
644 - "funding": {
645 - "url": "https://github.com/sponsors/sindresorhus"
646 - }
647 - },
648 - "node_modules/flat-cache": {
649 - "version": "4.0.1",
650 - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
651 - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
652 - "dev": true,
653 - "peer": true,
654 - "dependencies": {
655 - "flatted": "^3.2.9",
656 - "keyv": "^4.5.4"
657 - },
658 - "engines": {
659 - "node": ">=16"
660 - }
661 - },
662 - "node_modules/flatted": {
663 - "version": "3.3.1",
664 - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
665 - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
666 - "dev": true,
667 - "peer": true
668 - },
669 - "node_modules/glob-parent": {
670 - "version": "6.0.2",
671 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
672 - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
673 - "dev": true,
674 - "peer": true,
675 - "dependencies": {
676 - "is-glob": "^4.0.3"
677 - },
678 - "engines": {
679 - "node": ">=10.13.0"
680 - }
681 - },
682 - "node_modules/globals": {
683 - "version": "14.0.0",
684 - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
685 - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
686 - "dev": true,
687 - "peer": true,
688 - "engines": {
689 - "node": ">=18"
690 - },
691 - "funding": {
692 - "url": "https://github.com/sponsors/sindresorhus"
693 - }
694 - },
695 - "node_modules/has-flag": {
696 - "version": "4.0.0",
697 - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
698 - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
699 - "dev": true,
700 - "peer": true,
701 - "engines": {
702 - "node": ">=8"
703 - }
704 - },
705 - "node_modules/ignore": {
706 - "version": "5.3.2",
707 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
708 - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
709 - "dev": true,
710 - "peer": true,
711 - "engines": {
712 - "node": ">= 4"
713 - }
714 - },
715 - "node_modules/import-fresh": {
716 - "version": "3.3.0",
717 - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
718 - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
719 - "dev": true,
720 - "peer": true,
721 - "dependencies": {
722 - "parent-module": "^1.0.0",
723 - "resolve-from": "^4.0.0"
724 - },
725 - "engines": {
726 - "node": ">=6"
727 - },
728 - "funding": {
729 - "url": "https://github.com/sponsors/sindresorhus"
730 - }
731 - },
732 - "node_modules/imurmurhash": {
733 - "version": "0.1.4",
734 - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
735 - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
736 - "dev": true,
737 - "peer": true,
738 - "engines": {
739 - "node": ">=0.8.19"
740 - }
741 - },
742 - "node_modules/is-extglob": {
743 - "version": "2.1.1",
744 - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
745 - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
746 - "dev": true,
747 - "peer": true,
748 - "engines": {
749 - "node": ">=0.10.0"
750 - }
751 - },
752 - "node_modules/is-glob": {
753 - "version": "4.0.3",
754 - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
755 - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
756 - "dev": true,
757 - "peer": true,
758 - "dependencies": {
759 - "is-extglob": "^2.1.1"
760 - },
761 - "engines": {
762 - "node": ">=0.10.0"
763 - }
764 - },
765 - "node_modules/is-path-inside": {
766 - "version": "3.0.3",
767 - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
768 - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
769 - "dev": true,
770 - "peer": true,
771 - "engines": {
772 - "node": ">=8"
773 - }
774 - },
775 - "node_modules/isexe": {
776 - "version": "2.0.0",
777 - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
778 - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
779 - "dev": true,
780 - "peer": true
781 - },
782 - "node_modules/js-yaml": {
783 - "version": "4.1.0",
784 - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
785 - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
786 - "dev": true,
787 - "peer": true,
788 - "dependencies": {
789 - "argparse": "^2.0.1"
790 - },
791 - "bin": {
792 - "js-yaml": "bin/js-yaml.js"
793 - }
794 - },
795 - "node_modules/json-buffer": {
796 - "version": "3.0.1",
797 - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
798 - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
799 - "dev": true,
800 - "peer": true
801 - },
802 - "node_modules/json-schema-traverse": {
803 - "version": "0.4.1",
804 - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
805 - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
806 - "dev": true,
807 - "peer": true
808 - },
809 - "node_modules/json-stable-stringify-without-jsonify": {
810 - "version": "1.0.1",
811 - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
812 - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
813 - "dev": true,
814 - "peer": true
815 - },
816 - "node_modules/keyv": {
817 - "version": "4.5.4",
818 - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
819 - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
820 - "dev": true,
821 - "peer": true,
822 - "dependencies": {
823 - "json-buffer": "3.0.1"
824 - }
825 - },
826 - "node_modules/levn": {
827 - "version": "0.4.1",
828 - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
829 - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
830 - "dev": true,
831 - "peer": true,
832 - "dependencies": {
833 - "prelude-ls": "^1.2.1",
834 - "type-check": "~0.4.0"
835 - },
836 - "engines": {
837 - "node": ">= 0.8.0"
838 - }
839 - },
840 - "node_modules/locate-path": {
841 - "version": "6.0.0",
842 - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
843 - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
844 - "dev": true,
845 - "peer": true,
846 - "dependencies": {
847 - "p-locate": "^5.0.0"
848 - },
849 - "engines": {
850 - "node": ">=10"
851 - },
852 - "funding": {
853 - "url": "https://github.com/sponsors/sindresorhus"
854 - }
855 - },
856 - "node_modules/lodash": {
857 - "version": "4.17.21",
858 - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
859 - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
860 - "dev": true
861 - },
862 - "node_modules/lodash.merge": {
863 - "version": "4.6.2",
864 - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
865 - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
866 - "dev": true,
867 - "peer": true
868 - },
869 - "node_modules/minimatch": {
870 - "version": "3.1.2",
871 - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
872 - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
873 - "dev": true,
874 - "peer": true,
875 - "dependencies": {
876 - "brace-expansion": "^1.1.7"
877 - },
878 - "engines": {
879 - "node": "*"
880 - }
881 - },
882 - "node_modules/ms": {
883 - "version": "2.1.3",
884 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
885 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
886 - "dev": true
887 - },
888 - "node_modules/natural-compare": {
889 - "version": "1.4.0",
890 - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
891 - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
892 - "dev": true
893 - },
894 - "node_modules/nth-check": {
895 - "version": "2.1.1",
896 - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
897 - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
898 - "dev": true,
899 - "dependencies": {
900 - "boolbase": "^1.0.0"
901 - },
902 - "funding": {
903 - "url": "https://github.com/fb55/nth-check?sponsor=1"
904 - }
905 - },
906 - "node_modules/optionator": {
907 - "version": "0.9.4",
908 - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
909 - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
910 - "dev": true,
911 - "peer": true,
912 - "dependencies": {
913 - "deep-is": "^0.1.3",
914 - "fast-levenshtein": "^2.0.6",
915 - "levn": "^0.4.1",
916 - "prelude-ls": "^1.2.1",
917 - "type-check": "^0.4.0",
918 - "word-wrap": "^1.2.5"
919 - },
920 - "engines": {
921 - "node": ">= 0.8.0"
922 - }
923 - },
924 - "node_modules/p-limit": {
925 - "version": "3.1.0",
926 - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
927 - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
928 - "dev": true,
929 - "peer": true,
930 - "dependencies": {
931 - "yocto-queue": "^0.1.0"
932 - },
933 - "engines": {
934 - "node": ">=10"
935 - },
936 - "funding": {
937 - "url": "https://github.com/sponsors/sindresorhus"
938 - }
939 - },
940 - "node_modules/p-locate": {
941 - "version": "5.0.0",
942 - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
943 - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
944 - "dev": true,
945 - "peer": true,
946 - "dependencies": {
947 - "p-limit": "^3.0.2"
948 - },
949 - "engines": {
950 - "node": ">=10"
951 - },
952 - "funding": {
953 - "url": "https://github.com/sponsors/sindresorhus"
954 - }
955 - },
956 - "node_modules/parent-module": {
957 - "version": "1.0.1",
958 - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
959 - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
960 - "dev": true,
961 - "peer": true,
962 - "dependencies": {
963 - "callsites": "^3.0.0"
964 - },
965 - "engines": {
966 - "node": ">=6"
967 - }
968 - },
969 - "node_modules/path-exists": {
970 - "version": "4.0.0",
971 - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
972 - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
973 - "dev": true,
974 - "peer": true,
975 - "engines": {
976 - "node": ">=8"
977 - }
978 - },
979 - "node_modules/path-key": {
980 - "version": "3.1.1",
981 - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
982 - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
983 - "dev": true,
984 - "peer": true,
985 - "engines": {
986 - "node": ">=8"
987 - }
988 - },
989 - "node_modules/postcss-selector-parser": {
990 - "version": "6.1.2",
991 - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
992 - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
993 - "dev": true,
994 - "dependencies": {
995 - "cssesc": "^3.0.0",
996 - "util-deprecate": "^1.0.2"
997 - },
998 - "engines": {
999 - "node": ">=4"
1000 - }
1001 - },
1002 - "node_modules/prelude-ls": {
1003 - "version": "1.2.1",
1004 - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
1005 - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
1006 - "dev": true,
1007 - "peer": true,
1008 - "engines": {
1009 - "node": ">= 0.8.0"
1010 - }
1011 - },
1012 - "node_modules/punycode": {
1013 - "version": "2.3.1",
1014 - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
1015 - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
1016 - "dev": true,
1017 - "peer": true,
1018 - "engines": {
1019 - "node": ">=6"
1020 - }
1021 - },
1022 - "node_modules/queue-microtask": {
1023 - "version": "1.2.3",
1024 - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1025 - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1026 - "dev": true,
1027 - "funding": [
1028 - {
1029 - "type": "github",
1030 - "url": "https://github.com/sponsors/feross"
1031 - },
1032 - {
1033 - "type": "patreon",
1034 - "url": "https://www.patreon.com/feross"
1035 - },
1036 - {
1037 - "type": "consulting",
1038 - "url": "https://feross.org/support"
1039 - }
1040 - ],
1041 - "peer": true
1042 - },
1043 - "node_modules/resolve-from": {
1044 - "version": "4.0.0",
1045 - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1046 - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1047 - "dev": true,
1048 - "peer": true,
1049 - "engines": {
1050 - "node": ">=4"
1051 - }
1052 - },
1053 - "node_modules/reusify": {
1054 - "version": "1.0.4",
1055 - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1056 - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1057 - "dev": true,
1058 - "peer": true,
1059 - "engines": {
1060 - "iojs": ">=1.0.0",
1061 - "node": ">=0.10.0"
1062 - }
1063 - },
1064 - "node_modules/run-parallel": {
1065 - "version": "1.2.0",
1066 - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1067 - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1068 - "dev": true,
1069 - "funding": [
1070 - {
1071 - "type": "github",
1072 - "url": "https://github.com/sponsors/feross"
1073 - },
1074 - {
1075 - "type": "patreon",
1076 - "url": "https://www.patreon.com/feross"
1077 - },
1078 - {
1079 - "type": "consulting",
1080 - "url": "https://feross.org/support"
1081 - }
1082 - ],
1083 - "peer": true,
1084 - "dependencies": {
1085 - "queue-microtask": "^1.2.2"
1086 - }
1087 - },
1088 - "node_modules/semver": {
1089 - "version": "7.6.3",
1090 - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
1091 - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
1092 - "dev": true,
1093 - "bin": {
1094 - "semver": "bin/semver.js"
1095 - },
1096 - "engines": {
1097 - "node": ">=10"
1098 - }
1099 - },
1100 - "node_modules/shebang-command": {
1101 - "version": "2.0.0",
1102 - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1103 - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1104 - "dev": true,
1105 - "peer": true,
1106 - "dependencies": {
1107 - "shebang-regex": "^3.0.0"
1108 - },
1109 - "engines": {
1110 - "node": ">=8"
1111 - }
1112 - },
1113 - "node_modules/shebang-regex": {
1114 - "version": "3.0.0",
1115 - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1116 - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1117 - "dev": true,
1118 - "peer": true,
1119 - "engines": {
1120 - "node": ">=8"
1121 - }
1122 - },
1123 - "node_modules/strip-ansi": {
1124 - "version": "6.0.1",
1125 - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1126 - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1127 - "dev": true,
1128 - "peer": true,
1129 - "dependencies": {
1130 - "ansi-regex": "^5.0.1"
1131 - },
1132 - "engines": {
1133 - "node": ">=8"
1134 - }
1135 - },
1136 - "node_modules/strip-json-comments": {
1137 - "version": "3.1.1",
1138 - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
1139 - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
1140 - "dev": true,
1141 - "peer": true,
1142 - "engines": {
1143 - "node": ">=8"
1144 - },
1145 - "funding": {
1146 - "url": "https://github.com/sponsors/sindresorhus"
1147 - }
1148 - },
1149 - "node_modules/supports-color": {
1150 - "version": "7.2.0",
1151 - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1152 - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1153 - "dev": true,
1154 - "peer": true,
1155 - "dependencies": {
1156 - "has-flag": "^4.0.0"
1157 - },
1158 - "engines": {
1159 - "node": ">=8"
1160 - }
1161 - },
1162 - "node_modules/text-table": {
1163 - "version": "0.2.0",
1164 - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1165 - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
1166 - "dev": true,
1167 - "peer": true
1168 - },
1169 - "node_modules/type-check": {
1170 - "version": "0.4.0",
1171 - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
1172 - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
1173 - "dev": true,
1174 - "peer": true,
1175 - "dependencies": {
1176 - "prelude-ls": "^1.2.1"
1177 - },
1178 - "engines": {
1179 - "node": ">= 0.8.0"
1180 - }
1181 - },
1182 - "node_modules/type-fest": {
1183 - "version": "0.20.2",
1184 - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
1185 - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
1186 - "dev": true,
1187 - "engines": {
1188 - "node": ">=10"
1189 - },
1190 - "funding": {
1191 - "url": "https://github.com/sponsors/sindresorhus"
1192 - }
1193 - },
1194 - "node_modules/uri-js": {
1195 - "version": "4.4.1",
1196 - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1197 - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1198 - "dev": true,
1199 - "peer": true,
1200 - "dependencies": {
1201 - "punycode": "^2.1.0"
1202 - }
1203 - },
1204 - "node_modules/util-deprecate": {
1205 - "version": "1.0.2",
1206 - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1207 - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1208 - "dev": true
1209 - },
1210 - "node_modules/vue-eslint-parser": {
1211 - "version": "9.4.3",
1212 - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
1213 - "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==",
1214 - "dev": true,
1215 - "dependencies": {
1216 - "debug": "^4.3.4",
1217 - "eslint-scope": "^7.1.1",
1218 - "eslint-visitor-keys": "^3.3.0",
1219 - "espree": "^9.3.1",
1220 - "esquery": "^1.4.0",
1221 - "lodash": "^4.17.21",
1222 - "semver": "^7.3.6"
1223 - },
1224 - "engines": {
1225 - "node": "^14.17.0 || >=16.0.0"
1226 - },
1227 - "funding": {
1228 - "url": "https://github.com/sponsors/mysticatea"
1229 - },
1230 - "peerDependencies": {
1231 - "eslint": ">=6.0.0"
1232 - }
1233 - },
1234 - "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
1235 - "version": "7.2.2",
1236 - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
1237 - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
1238 - "dev": true,
1239 - "dependencies": {
1240 - "esrecurse": "^4.3.0",
1241 - "estraverse": "^5.2.0"
1242 - },
1243 - "engines": {
1244 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1245 - },
1246 - "funding": {
1247 - "url": "https://opencollective.com/eslint"
1248 - }
1249 - },
1250 - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": {
1251 - "version": "3.4.3",
1252 - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
1253 - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
1254 - "dev": true,
1255 - "engines": {
1256 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1257 - },
1258 - "funding": {
1259 - "url": "https://opencollective.com/eslint"
1260 - }
1261 - },
1262 - "node_modules/vue-eslint-parser/node_modules/espree": {
1263 - "version": "9.6.1",
1264 - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
1265 - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
1266 - "dev": true,
1267 - "dependencies": {
1268 - "acorn": "^8.9.0",
1269 - "acorn-jsx": "^5.3.2",
1270 - "eslint-visitor-keys": "^3.4.1"
1271 - },
1272 - "engines": {
1273 - "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1274 - },
1275 - "funding": {
1276 - "url": "https://opencollective.com/eslint"
1277 - }
1278 - },
1279 - "node_modules/which": {
1280 - "version": "2.0.2",
1281 - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1282 - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1283 - "dev": true,
1284 - "peer": true,
1285 - "dependencies": {
1286 - "isexe": "^2.0.0"
1287 - },
1288 - "bin": {
1289 - "node-which": "bin/node-which"
1290 - },
1291 - "engines": {
1292 - "node": ">= 8"
1293 - }
1294 - },
1295 - "node_modules/word-wrap": {
1296 - "version": "1.2.5",
1297 - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
1298 - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
1299 - "dev": true,
1300 - "peer": true,
1301 - "engines": {
1302 - "node": ">=0.10.0"
1303 - }
1304 - },
1305 - "node_modules/xml-name-validator": {
1306 - "version": "4.0.0",
1307 - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
1308 - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
1309 - "dev": true,
1310 - "engines": {
1311 - "node": ">=12"
1312 - }
1313 - },
1314 - "node_modules/yocto-queue": {
1315 - "version": "0.1.0",
1316 - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
1317 - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
1318 - "dev": true,
1319 - "peer": true,
1320 - "engines": {
1321 - "node": ">=10"
1322 - },
1323 - "funding": {
1324 - "url": "https://github.com/sponsors/sindresorhus"
1325 - }
1326 - }
1327 - }
1328 -}
backend/package.json deleted
-5
@@ -1,5 +0,0 @@
1 -{
2 - "devDependencies": {
3 - "eslint-plugin-vue": "^9.28.0"
4 - }
5 -}
frontend/package-lock.json
+128 -97
@@ -27,7 +27,7 @@
27 "echarts": "^5.5.1",
28 "file-saver": "^2.0.5",
29 "html-entities": "^2.5.2",
30 - "jose": "^5.9.2",
30 + "jose": "^5.9.3",
31 "js-md5": "^0.8.3",
32 "lodash": "^4.17.21",
33 "mitt": "^3.0.1",
@@ -38,10 +38,10 @@
38 "secure-ls": "^2.0.0",
39 "shiki": "^1.18.0",
40 "validator": "^13.12.0",
41 - "vue": "^3.5.7",
41 + "vue": "^3.5.8",
42 "vue-advanced-cropper": "^2.8.9",
43 "vue-highlight-words": "^3.0.1",
44 - "vue-i18n": "^10.0.1",
44 + "vue-i18n": "^10.0.3",
45 "vue-router": "^4.4.5",
46 "vue-sjv": "^0.0.6",
47 "vue3-apexcharts": "^1.6.0",
@@ -71,7 +71,7 @@
71 "flourite": "^1.3.0",
72 "fs-extra": "^11.2.0",
73 "globals": "^15.9.0",
74 - "jsdom": "^25.0.0",
74 + "jsdom": "^25.0.1",
75 "json5": "^2.2.3",
76 "npm-run-all2": "^6.2.3",
77 "picocolors": "^1.1.0",
@@ -784,6 +784,7 @@
784 },
785 "node_modules/@clack/prompts/node_modules/is-unicode-supported": {
786 "version": "1.3.0",
787 + "dev": true,
788 "inBundle": true,
789 "license": "MIT",
790 "engines": {
@@ -1882,12 +1883,12 @@
1883 }
1884 },
1885 "node_modules/@intlify/core-base": {
1885 - "version": "10.0.1",
1886 - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-10.0.1.tgz",
1887 - "integrity": "sha512-6kpRGjhos95ph7QmEtP4tnWFTW102s71CLQAQwfsIGqOAcoJhzcYFpzIQ0gKXzqAIXsMD/hwM5qJ4ewqMHw3gg==",
1886 + "version": "10.0.3",
1887 + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-10.0.3.tgz",
1888 + "integrity": "sha512-ysJnTGDtuXPa6R2Ii4JIvfMVvDahUUny3aY8+P4r6/0TYHkblgzIMjV6cAn60em67AB0M7OWNAdcAVfWWeN8Qg==",
1889 "dependencies": {
1889 - "@intlify/message-compiler": "10.0.1",
1890 - "@intlify/shared": "10.0.1"
1890 + "@intlify/message-compiler": "10.0.3",
1891 + "@intlify/shared": "10.0.3"
1892 },
1893 "engines": {
1894 "node": ">= 16"
@@ -1897,11 +1898,11 @@
1898 }
1899 },
1900 "node_modules/@intlify/message-compiler": {
1900 - "version": "10.0.1",
1901 - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.1.tgz",
1902 - "integrity": "sha512-fPeykrcgVT5eOIlshTHiPCN8FV3AZyBOdMS3XaXzfQ6eL5wqfc29I/EdIv5YXVW5X8e/BgYeWjBC0Cuznsl/2g==",
1901 + "version": "10.0.3",
1902 + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.3.tgz",
1903 + "integrity": "sha512-KC2fG8nCzSYmXjHptEt6i/xM3k6S2szsPaHDCRgWKEYAbeHe6JFm6X4KRw3Csy112A8CxpavMi1dh3h7khwV5w==",
1904 "dependencies": {
1904 - "@intlify/shared": "10.0.1",
1905 + "@intlify/shared": "10.0.3",
1906 "source-map-js": "^1.0.2"
1907 },
1908 "engines": {
@@ -1912,9 +1913,9 @@
1913 }
1914 },
1915 "node_modules/@intlify/shared": {
1915 - "version": "10.0.1",
1916 - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.1.tgz",
1917 - "integrity": "sha512-b4h7IWdZl710DnAhET8lgfgZ4Y9A2IZx/gbli3Ec/zHtYCoPqLHmiM7kUNBrSZj7d/SSjcMMZHuz5I09x3PYZw==",
1916 + "version": "10.0.3",
1917 + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.3.tgz",
1918 + "integrity": "sha512-PWxrCb6fDlnoGLnXLlWu6d7o/HdWACB9TjRnpLro+9uyfqgWA9hvqg5vekcPRyraTieV5srCbTk/ldYw9V3LHw==",
1919 "engines": {
1920 "node": ">= 16"
1921 },
@@ -2180,9 +2181,9 @@
2181 }
2182 },
2183 "node_modules/@rollup/pluginutils": {
2183 - "version": "5.1.0",
2184 - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
2185 - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
2184 + "version": "5.1.1",
2185 + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.1.tgz",
2186 + "integrity": "sha512-bVRmQqBIyGD+VMihdEV2IBurfIrdW9tD9yzJUL3CBRDbyPBVzQnBSMSgyUZHl1E335rpMRj7r4o683fXLYw8iw==",
2187 "dependencies": {
2188 "@types/estree": "^1.0.0",
2189 "estree-walker": "^2.0.2",
@@ -3647,36 +3648,36 @@
3648 }
3649 },
3650 "node_modules/@vue/compiler-core": {
3650 - "version": "3.5.7",
3651 - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.7.tgz",
3652 - "integrity": "sha512-A0gay3lK71MddsSnGlBxRPOugIVdACze9L/rCo5X5srCyjQfZOfYtSFMJc3aOZCM+xN55EQpb4R97rYn/iEbSw==",
3651 + "version": "3.5.8",
3652 + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.8.tgz",
3653 + "integrity": "sha512-Uzlxp91EPjfbpeO5KtC0KnXPkuTfGsNDeaKQJxQN718uz+RqDYarEf7UhQJGK+ZYloD2taUbHTI2J4WrUaZQNA==",
3654 "dependencies": {
3655 "@babel/parser": "^7.25.3",
3655 - "@vue/shared": "3.5.7",
3656 + "@vue/shared": "3.5.8",
3657 "entities": "^4.5.0",
3658 "estree-walker": "^2.0.2",
3659 "source-map-js": "^1.2.0"
3660 }
3661 },
3662 "node_modules/@vue/compiler-dom": {
3662 - "version": "3.5.7",
3663 - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.7.tgz",
3664 - "integrity": "sha512-GYWl3+gO8/g0ZdYaJ18fYHdI/WVic2VuuUd1NsPp60DWXKy+XjdhFsDW7FbUto8siYYZcosBGn9yVBkjhq1M8Q==",
3663 + "version": "3.5.8",
3664 + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.8.tgz",
3665 + "integrity": "sha512-GUNHWvoDSbSa5ZSHT9SnV5WkStWfzJwwTd6NMGzilOE/HM5j+9EB9zGXdtu/fCNEmctBqMs6C9SvVPpVPuk1Eg==",
3666 "dependencies": {
3666 - "@vue/compiler-core": "3.5.7",
3667 - "@vue/shared": "3.5.7"
3667 + "@vue/compiler-core": "3.5.8",
3668 + "@vue/shared": "3.5.8"
3669 }
3670 },
3671 "node_modules/@vue/compiler-sfc": {
3671 - "version": "3.5.7",
3672 - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.7.tgz",
3673 - "integrity": "sha512-EjOJtCWJrC7HqoCEzOwpIYHm+JH7YmkxC1hG6VkqIukYRqj8KFUlTLK6hcT4nGgtVov2+ZfrdrRlcaqS78HnBA==",
3672 + "version": "3.5.8",
3673 + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.8.tgz",
3674 + "integrity": "sha512-taYpngQtSysrvO9GULaOSwcG5q821zCoIQBtQQSx7Uf7DxpR6CIHR90toPr9QfDD2mqHQPCSgoWBvJu0yV9zjg==",
3675 "dependencies": {
3676 "@babel/parser": "^7.25.3",
3676 - "@vue/compiler-core": "3.5.7",
3677 - "@vue/compiler-dom": "3.5.7",
3678 - "@vue/compiler-ssr": "3.5.7",
3679 - "@vue/shared": "3.5.7",
3677 + "@vue/compiler-core": "3.5.8",
3678 + "@vue/compiler-dom": "3.5.8",
3679 + "@vue/compiler-ssr": "3.5.8",
3680 + "@vue/shared": "3.5.8",
3681 "estree-walker": "^2.0.2",
3682 "magic-string": "^0.30.11",
3683 "postcss": "^8.4.47",
@@ -3684,12 +3685,12 @@
3685 }
3686 },
3687 "node_modules/@vue/compiler-ssr": {
3687 - "version": "3.5.7",
3688 - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.7.tgz",
3689 - "integrity": "sha512-oZx+jXP2k5arV/8Ly3TpQbfFyimMw2ANrRqvHJoKjPqtEzazxQGZjCLOfq8TnZ3wy2TOXdqfmVp4q7FyYeHV4g==",
3688 + "version": "3.5.8",
3689 + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.8.tgz",
3690 + "integrity": "sha512-W96PtryNsNG9u0ZnN5Q5j27Z/feGrFV6zy9q5tzJVyJaLiwYxvC0ek4IXClZygyhjm+XKM7WD9pdKi/wIRVC/Q==",
3691 "dependencies": {
3691 - "@vue/compiler-dom": "3.5.7",
3692 - "@vue/shared": "3.5.7"
3692 + "@vue/compiler-dom": "3.5.8",
3693 + "@vue/shared": "3.5.8"
3694 }
3695 },
3696 "node_modules/@vue/compiler-vue2": {
@@ -3773,49 +3774,49 @@
3774 }
3775 },
3776 "node_modules/@vue/reactivity": {
3776 - "version": "3.5.7",
3777 - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.7.tgz",
3778 - "integrity": "sha512-yF0EpokpOHRNXyn/h6abXc9JFIzfdAf0MJHIi92xxCWS0mqrXH6+2aZ+A6EbSrspGzX5MHTd5N8iBA28HnXu9g==",
3777 + "version": "3.5.8",
3778 + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.8.tgz",
3779 + "integrity": "sha512-mlgUyFHLCUZcAYkqvzYnlBRCh0t5ZQfLYit7nukn1GR96gc48Bp4B7OIcSfVSvlG1k3BPfD+p22gi1t2n9tsXg==",
3780 "dependencies": {
3780 - "@vue/shared": "3.5.7"
3781 + "@vue/shared": "3.5.8"
3782 }
3783 },
3784 "node_modules/@vue/runtime-core": {
3784 - "version": "3.5.7",
3785 - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.7.tgz",
3786 - "integrity": "sha512-OzLpBpKbZEaZVSNfd+hQbfBrDKux+b7Yl5hYhhWWWhHD7fEpF+CdI3Brm5k5GsufHEfvMcjruPxwQZuBN6nFYQ==",
3785 + "version": "3.5.8",
3786 + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.8.tgz",
3787 + "integrity": "sha512-fJuPelh64agZ8vKkZgp5iCkPaEqFJsYzxLk9vSC0X3G8ppknclNDr61gDc45yBGTaN5Xqc1qZWU3/NoaBMHcjQ==",
3788 "dependencies": {
3788 - "@vue/reactivity": "3.5.7",
3789 - "@vue/shared": "3.5.7"
3789 + "@vue/reactivity": "3.5.8",
3790 + "@vue/shared": "3.5.8"
3791 }
3792 },
3793 "node_modules/@vue/runtime-dom": {
3793 - "version": "3.5.7",
3794 - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.7.tgz",
3795 - "integrity": "sha512-fL7cETfE27U2jyTgqzE382IGFY6a6uyznErn27KbbEzNctzxxUWYDbaN3B55l9nXh0xW2LRWPuWKOvjtO2UewQ==",
3794 + "version": "3.5.8",
3795 + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.8.tgz",
3796 + "integrity": "sha512-DpAUz+PKjTZPUOB6zJgkxVI3GuYc2iWZiNeeHQUw53kdrparSTG6HeXUrYDjaam8dVsCdvQxDz6ZWxnyjccUjQ==",
3797 "dependencies": {
3797 - "@vue/reactivity": "3.5.7",
3798 - "@vue/runtime-core": "3.5.7",
3799 - "@vue/shared": "3.5.7",
3798 + "@vue/reactivity": "3.5.8",
3799 + "@vue/runtime-core": "3.5.8",
3800 + "@vue/shared": "3.5.8",
3801 "csstype": "^3.1.3"
3802 }
3803 },
3804 "node_modules/@vue/server-renderer": {
3804 - "version": "3.5.7",
3805 - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.7.tgz",
3806 - "integrity": "sha512-peRypij815eIDjpPpPXvYQGYqPH6QXwLJGWraJYPPn8JqWGl29A8QXnS7/Mh3TkMiOcdsJNhbFCoW2Agc2NgAQ==",
3805 + "version": "3.5.8",
3806 + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.8.tgz",
3807 + "integrity": "sha512-7AmC9/mEeV9mmXNVyUIm1a1AjUhyeeGNbkLh39J00E7iPeGks8OGRB5blJiMmvqSh8SkaS7jkLWSpXtxUCeagA==",
3808 "dependencies": {
3808 - "@vue/compiler-ssr": "3.5.7",
3809 - "@vue/shared": "3.5.7"
3809 + "@vue/compiler-ssr": "3.5.8",
3810 + "@vue/shared": "3.5.8"
3811 },
3812 "peerDependencies": {
3812 - "vue": "3.5.7"
3813 + "vue": "3.5.8"
3814 }
3815 },
3816 "node_modules/@vue/shared": {
3816 - "version": "3.5.7",
3817 - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.7.tgz",
3818 - "integrity": "sha512-NBE1PBIvzIedxIc2RZiKXvGbJkrZ2/hLf3h8GlS4/sP9xcXEZMFWOazFkNd6aGeUCMaproe5MHVYB3/4AW9q9g=="
3817 + "version": "3.5.8",
3818 + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.8.tgz",
3819 + "integrity": "sha512-mJleSWbAGySd2RJdX1RBtcrUBX6snyOc0qHpgk3lGi4l9/P/3ny3ELqFWqYdkXIwwNN/kdm8nD9ky8o6l/Lx2A=="
3820 },
3821 "node_modules/@vue/test-utils": {
3822 "version": "2.4.6",
@@ -4605,9 +4606,9 @@
4606 }
4607 },
4608 "node_modules/caniuse-lite": {
4608 - "version": "1.0.30001662",
4609 - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz",
4610 - "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==",
4609 + "version": "1.0.30001663",
4610 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz",
4611 + "integrity": "sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==",
4612 "funding": [
4613 {
4614 "type": "opencollective",
@@ -6252,9 +6253,9 @@
6253 }
6254 },
6255 "node_modules/eslint-plugin-import-x": {
6255 - "version": "4.2.1",
6256 - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.2.1.tgz",
6257 - "integrity": "sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==",
6256 + "version": "4.3.0",
6257 + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.3.0.tgz",
6258 + "integrity": "sha512-PxGzP7gAjF2DLeRnQtbYkkgZDg1intFyYr/XS1LgTYXUDrSXMHGkXx8++6i2eDv2jMs0jfeO6G6ykyeWxiFX7w==",
6259 "dev": true,
6260 "dependencies": {
6261 "@typescript-eslint/utils": "^8.1.0",
@@ -8294,9 +8295,9 @@
8295 }
8296 },
8297 "node_modules/jose": {
8297 - "version": "5.9.2",
8298 - "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.2.tgz",
8299 - "integrity": "sha512-ILI2xx/I57b20sd7rHZvgiiQrmp2mcotwsAH+5ajbpFQbrYVQdNHYlQhoA5cFb78CgtBOxtC05TeA+mcgkuCqQ==",
8298 + "version": "5.9.3",
8299 + "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.3.tgz",
8300 + "integrity": "sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==",
8301 "funding": {
8302 "url": "https://github.com/sponsors/panva"
8303 }
@@ -8368,12 +8369,12 @@
8369 }
8370 },
8371 "node_modules/jsdom": {
8371 - "version": "25.0.0",
8372 - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.0.tgz",
8373 - "integrity": "sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==",
8372 + "version": "25.0.1",
8373 + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz",
8374 + "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==",
8375 "dev": true,
8376 "dependencies": {
8376 - "cssstyle": "^4.0.1",
8377 + "cssstyle": "^4.1.0",
8378 "data-urls": "^5.0.0",
8379 "decimal.js": "^10.4.3",
8380 "form-data": "^4.0.0",
@@ -8386,7 +8387,7 @@
8387 "rrweb-cssom": "^0.7.1",
8388 "saxes": "^6.0.0",
8389 "symbol-tree": "^3.2.4",
8389 - "tough-cookie": "^4.1.4",
8390 + "tough-cookie": "^5.0.0",
8391 "w3c-xmlserializer": "^5.0.0",
8392 "webidl-conversions": "^7.0.0",
8393 "whatwg-encoding": "^3.1.1",
@@ -8407,6 +8408,18 @@
8408 }
8409 }
8410 },
8411 + "node_modules/jsdom/node_modules/tough-cookie": {
8412 + "version": "5.0.0",
8413 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz",
8414 + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==",
8415 + "dev": true,
8416 + "dependencies": {
8417 + "tldts": "^6.1.32"
8418 + },
8419 + "engines": {
8420 + "node": ">=16"
8421 + }
8422 + },
8423 "node_modules/jsdom/node_modules/xml-name-validator": {
8424 "version": "5.0.0",
8425 "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
@@ -12159,9 +12172,9 @@
12172 }
12173 },
12174 "node_modules/sass/node_modules/chokidar": {
12162 - "version": "4.0.0",
12163 - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.0.tgz",
12164 - "integrity": "sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==",
12175 + "version": "4.0.1",
12176 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
12177 + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
12178 "dev": true,
12179 "dependencies": {
12180 "readdirp": "^4.0.1"
@@ -13216,6 +13229,24 @@
13229 "node": ">=14.0.0"
13230 }
13231 },
13232 + "node_modules/tldts": {
13233 + "version": "6.1.47",
13234 + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.47.tgz",
13235 + "integrity": "sha512-R/K2tZ5MiY+mVrnSkNJkwqYT2vUv1lcT6wJvd2emGaMJ7PHUGRY4e3tUsdFCXgqxi2QgbHjL3yJgXCo40v9Hxw==",
13236 + "dev": true,
13237 + "dependencies": {
13238 + "tldts-core": "^6.1.47"
13239 + },
13240 + "bin": {
13241 + "tldts": "bin/cli.js"
13242 + }
13243 + },
13244 + "node_modules/tldts-core": {
13245 + "version": "6.1.47",
13246 + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.47.tgz",
13247 + "integrity": "sha512-6SWyFMnlst1fEt7GQVAAu16EGgFK0cLouH/2Mk6Ftlwhv3Ol40L0dlpGMcnnNiiOMyD2EV/aF3S+U2nKvvLvrA==",
13248 + "dev": true
13249 + },
13250 "node_modules/tmp": {
13251 "version": "0.2.3",
13252 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
@@ -14730,15 +14761,15 @@
14761 "dev": true
14762 },
14763 "node_modules/vue": {
14733 - "version": "3.5.7",
14734 - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.7.tgz",
14735 - "integrity": "sha512-JcFm0f5j8DQO9E07pZRxqZ/ZsNopMVzHYXpKvnfqXFcA4JTi+4YcrikRn9wkzWsdj0YsLzlLIsR0zzGxA2P6Wg==",
14764 + "version": "3.5.8",
14765 + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.8.tgz",
14766 + "integrity": "sha512-hvuvuCy51nP/1fSRvrrIqTLSvrSyz2Pq+KQ8S8SXCxTWVE0nMaOnSDnSOxV1eYmGfvK7mqiwvd1C59CEEz7dAQ==",
14767 "dependencies": {
14737 - "@vue/compiler-dom": "3.5.7",
14738 - "@vue/compiler-sfc": "3.5.7",
14739 - "@vue/runtime-dom": "3.5.7",
14740 - "@vue/server-renderer": "3.5.7",
14741 - "@vue/shared": "3.5.7"
14768 + "@vue/compiler-dom": "3.5.8",
14769 + "@vue/compiler-sfc": "3.5.8",
14770 + "@vue/runtime-dom": "3.5.8",
14771 + "@vue/server-renderer": "3.5.8",
14772 + "@vue/shared": "3.5.8"
14773 },
14774 "peerDependencies": {
14775 "typescript": "*"
@@ -14849,12 +14880,12 @@
14880 }
14881 },
14882 "node_modules/vue-i18n": {
14852 - "version": "10.0.1",
14853 - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-10.0.1.tgz",
14854 - "integrity": "sha512-SQVlSm/1S6AaG1wexvwq3ebXUrrkx75ZHD78UAs4/rYD/X3tsQxfm6ElpT4ZPegJQEgRtOJjGripqSrfqAENtg==",
14883 + "version": "10.0.3",
14884 + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-10.0.3.tgz",
14885 + "integrity": "sha512-8ul2S4Hy9orKs7eOlkw/zqnVu98GttUdyIMRyjoMpv6hFPxnybgBLdep/UCmdan5kUHyxqMnr2cGHTBuPBYJaw==",
14886 "dependencies": {
14856 - "@intlify/core-base": "10.0.1",
14857 - "@intlify/shared": "10.0.1",
14887 + "@intlify/core-base": "10.0.3",
14888 + "@intlify/shared": "10.0.3",
14889 "@vue/devtools-api": "^6.5.0"
14890 },
14891 "engines": {
@@ -14938,9 +14969,9 @@
14969 }
14970 },
14971 "node_modules/vueuc": {
14941 - "version": "0.4.58",
14942 - "resolved": "https://registry.npmjs.org/vueuc/-/vueuc-0.4.58.tgz",
14943 - "integrity": "sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==",
14972 + "version": "0.4.63",
14973 + "resolved": "https://registry.npmjs.org/vueuc/-/vueuc-0.4.63.tgz",
14974 + "integrity": "sha512-QJT0z9yYWXdKpUq6f6IrAgJ83e34iTYMCVHjcAP8lCjldG0JzHnDfJYMpPWkNuLB5SdBZCbYGmYTKnTR+ff7CQ==",
14975 "dependencies": {
14976 "@css-render/vue3-ssr": "^0.15.10",
14977 "@juggle/resize-observer": "^3.3.1",
frontend/package.json
+13 -4
@@ -54,7 +54,7 @@
54 "echarts": "^5.5.1",
55 "file-saver": "^2.0.5",
56 "html-entities": "^2.5.2",
57 - "jose": "^5.9.2",
57 + "jose": "^5.9.3",
58 "js-md5": "^0.8.3",
59 "lodash": "^4.17.21",
60 "mitt": "^3.0.1",
@@ -65,10 +65,10 @@
65 "secure-ls": "^2.0.0",
66 "shiki": "^1.18.0",
67 "validator": "^13.12.0",
68 - "vue": "^3.5.7",
68 + "vue": "^3.5.8",
69 "vue-advanced-cropper": "^2.8.9",
70 "vue-highlight-words": "^3.0.1",
71 - "vue-i18n": "^10.0.1",
71 + "vue-i18n": "^10.0.3",
72 "vue-router": "^4.4.5",
73 "vue-sjv": "^0.0.6",
74 "vue3-apexcharts": "^1.6.0",
@@ -101,7 +101,7 @@
101 "flourite": "^1.3.0",
102 "fs-extra": "^11.2.0",
103 "globals": "^15.9.0",
104 - "jsdom": "^25.0.0",
104 + "jsdom": "^25.0.1",
105 "json5": "^2.2.3",
106 "npm-run-all2": "^6.2.3",
107 "picocolors": "^1.1.0",
@@ -123,6 +123,15 @@
123 "vitest": "^2.1.1",
124 "vue-tsc": "^2.1.6"
125 },
126 + "pnpm": {
127 + "overrides": {
128 + "@typescript-eslint/eslint-plugin": "^8.6.0",
129 + "@typescript-eslint/eslint-plugin>eslint": "$eslint",
130 + "@typescript-eslint/parser": "^8.6.0",
131 + "@typescript-eslint/parser>eslint": "$eslint",
132 + "eslint": "$eslint"
133 + }
134 + },
135 "overrides": {
136 "@typescript-eslint/eslint-plugin": {
137 "eslint": "9.11.0"
frontend/pnpm-lock.yaml new
+13017
@@ -0,0 +1,13017 @@
1 +lockfileVersion: "9.0"
2 +
3 +settings:
4 + autoInstallPeers: true
5 + excludeLinksFromLockfile: false
6 +
7 +overrides:
8 + "@typescript-eslint/eslint-plugin": ^8.6.0
9 + "@typescript-eslint/eslint-plugin>eslint": ^9.11.0
10 + "@typescript-eslint/parser": ^8.6.0
11 + "@typescript-eslint/parser>eslint": ^9.11.0
12 + eslint: ^9.11.0
13 +
14 +importers:
15 + .:
16 + dependencies:
17 + "@ajoelp/json-to-formdata":
18 + specifier: ^1.5.0
19 + version: 1.5.0
20 + "@f3ve/vue-markdown-it":
21 + specifier: ^0.2.2
22 + version: 0.2.2(eslint@9.11.0(jiti@1.21.6))(prettier@3.3.3)(typescript@5.6.2)(vue@3.5.8(typescript@5.6.2))
23 + "@fontsource/jetbrains-mono":
24 + specifier: ^5.1.0
25 + version: 5.1.0
26 + "@fontsource/lexend":
27 + specifier: ^5.1.0
28 + version: 5.1.0
29 + "@fontsource/public-sans":
30 + specifier: ^5.1.0
31 + version: 5.1.0
32 + "@popperjs/core":
33 + specifier: ^2.11.8
34 + version: 2.11.8
35 + "@shikijs/markdown-it":
36 + specifier: ^1.18.0
37 + version: 1.18.0
38 + "@vueuse/components":
39 + specifier: ^11.1.0
40 + version: 11.1.0(vue@3.5.8(typescript@5.6.2))
41 + "@vueuse/core":
42 + specifier: ^11.1.0
43 + version: 11.1.0(vue@3.5.8(typescript@5.6.2))
44 + apexcharts:
45 + specifier: ^3.53.0
46 + version: 3.53.0
47 + axios:
48 + specifier: ^1.7.7
49 + version: 1.7.7(debug@4.3.7)
50 + bytes:
51 + specifier: ^3.1.2
52 + version: 3.1.2
53 + colord:
54 + specifier: ^2.9.3
55 + version: 2.9.3
56 + crypto-js:
57 + specifier: ^4.2.0
58 + version: 4.2.0
59 + dayjs:
60 + specifier: ^1.11.13
61 + version: 1.11.13
62 + detect-touch-device:
63 + specifier: ^1.1.6
64 + version: 1.1.6
65 + echarts:
66 + specifier: ^5.5.1
67 + version: 5.5.1
68 + file-saver:
69 + specifier: ^2.0.5
70 + version: 2.0.5
71 + html-entities:
72 + specifier: ^2.5.2
73 + version: 2.5.2
74 + jose:
75 + specifier: ^5.9.3
76 + version: 5.9.3
77 + js-md5:
78 + specifier: ^0.8.3
79 + version: 0.8.3
80 + lodash:
81 + specifier: ^4.17.21
82 + version: 4.17.21
83 + mitt:
84 + specifier: ^3.0.1
85 + version: 3.0.1
86 + naive-ui:
87 + specifier: ^2.39.0
88 + version: 2.39.0(vue@3.5.8(typescript@5.6.2))
89 + password-validator:
90 + specifier: ^5.3.0
91 + version: 5.3.0
92 + pinia:
93 + specifier: ^2.2.2
94 + version: 2.2.2(typescript@5.6.2)(vue@3.5.8(typescript@5.6.2))
95 + pinia-plugin-persistedstate:
96 + specifier: ^4.0.2
97 + version: 4.0.2(pinia@2.2.2(typescript@5.6.2)(vue@3.5.8(typescript@5.6.2)))(rollup@4.22.4)
98 + secure-ls:
99 + specifier: ^2.0.0
100 + version: 2.0.0
101 + shiki:
102 + specifier: ^1.18.0
103 + version: 1.18.0
104 + validator:
105 + specifier: ^13.12.0
106 + version: 13.12.0
107 + vue:
108 + specifier: ^3.5.8
109 + version: 3.5.8(typescript@5.6.2)
110 + vue-advanced-cropper:
111 + specifier: ^2.8.9
112 + version: 2.8.9(vue@3.5.8(typescript@5.6.2))
113 + vue-highlight-words:
114 + specifier: ^3.0.1
115 + version: 3.0.1(vue@3.5.8(typescript@5.6.2))
116 + vue-i18n:
117 + specifier: ^10.0.3
118 + version: 10.0.3(vue@3.5.8(typescript@5.6.2))
119 + vue-router:
120 + specifier: ^4.4.5
121 + version: 4.4.5(vue@3.5.8(typescript@5.6.2))
122 + vue-sjv:
123 + specifier: ^0.0.6
124 + version: 0.0.6(vue@3.5.8(typescript@5.6.2))
125 + vue3-apexcharts:
126 + specifier: ^1.6.0
127 + version: 1.6.0(apexcharts@3.53.0)(vue@3.5.8(typescript@5.6.2))
128 + vue3-marquee:
129 + specifier: ^4.2.2
130 + version: 4.2.2(vue@3.5.8(typescript@5.6.2))
131 + vuedraggable:
132 + specifier: ^4.1.0
133 + version: 4.1.0(vue@3.5.8(typescript@5.6.2))
134 + optionalDependencies:
135 + "@rollup/rollup-linux-x64-gnu":
136 + specifier: ^4.22.4
137 + version: 4.22.4
138 + devDependencies:
139 + "@antfu/eslint-config":
140 + specifier: ^3.7.1
141 + version: 3.7.1(@typescript-eslint/utils@8.6.0(eslint@9.11.0(jiti@1.21.6))(typescript@5.6.2))(@unocss/eslint-plugin@0.56.5(eslint@9.11.0(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.8)(eslint@9.11.0(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.5)(jsdom@25.0.1)(sass@1.79.3))
142 + "@clack/prompts":
143 + specifier: ^0.7.0
144 + version: 0.7.0
145 + "@iconify/vue":
146 + specifier: ^4.1.2
147 + version: 4.1.2(vue@3.5.8(typescript@5.6.2))
148 + "@tsconfig/node20":
149 + specifier: ^20.1.4
150 + version: 20.1.4
151 + "@types/bytes":
152 + specifier: ^3.1.4
153 + version: 3.1.4
154 + "@types/file-saver":
155 + specifier: ^2.0.7
156 + version: 2.0.7
157 + "@types/fs-extra":
158 + specifier: ^11.0.4
159 + version: 11.0.4
160 + "@types/inquirer":
161 + specifier: ^9.0.7
162 + version: 9.0.7
163 + "@types/jsdom":
164 + specifier: ^21.1.7
165 + version: 21.1.7
166 + "@types/lodash":
167 + specifier: ^4.17.7
168 + version: 4.17.7
169 + "@types/node":
170 + specifier: ^22.5.5
171 + version: 22.5.5
172 + "@types/validator":
173 + specifier: ^13.12.2
174 + version: 13.12.2
175 + "@vitejs/plugin-vue":
176 + specifier: ^5.1.4
177 + version: 5.1.4(vite@5.4.7(@types/node@22.5.5)(sass@1.79.3))(vue@3.5.8(typescript@5.6.2))
178 + "@vitejs/plugin-vue-jsx":
179 + specifier: ^4.0.1
180 + version: 4.0.1(vite@5.4.7(@types/node@22.5.5)(sass@1.79.3))(vue@3.5.8(typescript@5.6.2))
181 + "@vue/test-utils":
182 + specifier: ^2.4.6
183 + version: 2.4.6
184 + "@vue/tsconfig":
185 + specifier: ^0.5.1
186 + version: 0.5.1
187 + autoprefixer:
188 + specifier: ^10.4.20
189 + version: 10.4.20(postcss@8.4.47)
190 + cypress:
191 + specifier: ^13.14.2
192 + version: 13.14.2
193 + eslint:
194 + specifier: ^9.11.0
195 + version: 9.11.0(jiti@1.21.6)
196 + flourite:
197 + specifier: ^1.3.0
198 + version: 1.3.0
199 + fs-extra:
200 + specifier: ^11.2.0
201 + version: 11.2.0
202 + globals:
203 + specifier: ^15.9.0
204 + version: 15.9.0
205 + jsdom:
206 + specifier: ^25.0.1
207 + version: 25.0.1
208 + json5:
209 + specifier: ^2.2.3
210 + version: 2.2.3
211 + npm-run-all2:
212 + specifier: ^6.2.3
213 + version: 6.2.3
214 + picocolors:
215 + specifier: ^1.1.0
216 + version: 1.1.0
217 + postcss:
218 + specifier: ^8.4.47
219 + version: 8.4.47
220 + prettier:
221 + specifier: ^3.3.3
222 + version: 3.3.3
223 + sass:
224 + specifier: ^1.79.3
225 + version: 1.79.3
226 + start-server-and-test:
227 + specifier: ^2.0.8
228 + version: 2.0.8
229 + tailwind-config-viewer:
230 + specifier: ^2.0.4
231 + version: 2.0.4(tailwindcss@3.4.12)
232 + tailwindcss:
233 + specifier: ^3.4.12
234 + version: 3.4.12
235 + taze:
236 + specifier: ^0.16.9
237 + version: 0.16.9
238 + type-fest:
239 + specifier: ^4.26.1
240 + version: 4.26.1
241 + typescript:
242 + specifier: ~5.6.2
243 + version: 5.6.2
244 + unplugin-vue-components:
245 + specifier: ^0.27.4
246 + version: 0.27.4(@babel/parser@7.25.6)(@nuxt/kit@3.13.2(rollup@4.22.4))(rollup@4.22.4)(vue@3.5.8(typescript@5.6.2))
247 + vite:
248 + specifier: ^5.4.7
249 + version: 5.4.7(@types/node@22.5.5)(sass@1.79.3)
250 + vite-bundle-analyzer:
251 + specifier: ^0.11.1
252 + version: 0.11.1
253 + vite-bundle-visualizer:
254 + specifier: ^1.2.1
255 + version: 1.2.1(rollup@4.22.4)
256 + vite-plugin-vue-devtools:
257 + specifier: ^7.4.5
258 + version: 7.4.5(@nuxt/kit@3.13.2(rollup@4.22.4))(rollup@4.22.4)(vite@5.4.7(@types/node@22.5.5)(sass@1.79.3))(vue@3.5.8(typescript@5.6.2))
259 + vite-svg-loader:
260 + specifier: ^5.1.0
261 + version: 5.1.0(vue@3.5.8(typescript@5.6.2))
262 + vitest:
263 + specifier: ^2.1.1
264 + version: 2.1.1(@types/node@22.5.5)(jsdom@25.0.1)(sass@1.79.3)
265 + vue-tsc:
266 + specifier: ^2.1.6
267 + version: 2.1.6(typescript@5.6.2)
268 +
269 +packages:
270 + "@ajoelp/json-to-formdata@1.5.0":
271 + resolution:
272 + {
273 + integrity: sha512-nrlfeTSL0X0dtx5r2KpzPiqLSIQquiiJjUKsQAKzWaCmO2QoYZCyb5ENZwF3YoffKronOCJr25mxaD8JRJmK8w==
274 + }
275 +
276 + "@alloc/quick-lru@5.2.0":
277 + resolution:
278 + {
279 + integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
280 + }
281 + engines: { node: ">=10" }
282 +
283 + "@ampproject/remapping@2.3.0":
284 + resolution:
285 + {
286 + integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
287 + }
288 + engines: { node: ">=6.0.0" }
289 +
290 + "@antfu/eslint-config@3.7.1":
291 + resolution:
292 + {
293 + integrity: sha512-cDBAj+Le9XakAK83ZWVNxxyBJKeBfQ6H3VkUGnJPkXn/KJEzXC0fcHDtbu9k633hasLba5gXN5pjm4C70ik+Fg==
294 + }
295 + hasBin: true
296 + peerDependencies:
297 + "@eslint-react/eslint-plugin": ^1.5.8
298 + "@prettier/plugin-xml": ^3.4.1
299 + "@unocss/eslint-plugin": ">=0.50.0"
300 + astro-eslint-parser: ^1.0.2
301 + eslint: ^9.11.0
302 + eslint-plugin-astro: ^1.2.0
303 + eslint-plugin-format: ">=0.1.0"
304 + eslint-plugin-react-hooks: ^4.6.0
305 + eslint-plugin-react-refresh: ^0.4.4
306 + eslint-plugin-solid: ^0.14.3
307 + eslint-plugin-svelte: ">=2.35.1"
308 + prettier-plugin-astro: ^0.13.0
309 + prettier-plugin-slidev: ^1.0.5
310 + svelte-eslint-parser: ">=0.37.0"
311 + peerDependenciesMeta:
312 + "@eslint-react/eslint-plugin":
313 + optional: true
314 + "@prettier/plugin-xml":
315 + optional: true
316 + "@unocss/eslint-plugin":
317 + optional: true
318 + astro-eslint-parser:
319 + optional: true
320 + eslint-plugin-astro:
321 + optional: true
322 + eslint-plugin-format:
323 + optional: true
324 + eslint-plugin-react-hooks:
325 + optional: true
326 + eslint-plugin-react-refresh:
327 + optional: true
328 + eslint-plugin-solid:
329 + optional: true
330 + eslint-plugin-svelte:
331 + optional: true
332 + prettier-plugin-astro:
333 + optional: true
334 + prettier-plugin-slidev:
335 + optional: true
336 + svelte-eslint-parser:
337 + optional: true
338 +
339 + "@antfu/install-pkg@0.4.1":
340 + resolution:
341 + {
342 + integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==
343 + }
344 +
345 + "@antfu/ni@0.23.0":
346 + resolution:
347 + {
348 + integrity: sha512-R5/GkA3PfGewAXLzz6lN5XagunF6PKeDtWt8dbZQXvHfebLS0qEczV+Azg/d+tKgSh6kRBpxvu8oSjARdPtw0A==
349 + }
350 + hasBin: true
351 +
352 + "@antfu/utils@0.7.10":
353 + resolution:
354 + {
355 + integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==
356 + }
357 +
358 + "@babel/code-frame@7.24.7":
359 + resolution:
360 + {
361 + integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==
362 + }
363 + engines: { node: ">=6.9.0" }
364 +
365 + "@babel/compat-data@7.25.4":
366 + resolution:
367 + {
368 + integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==
369 + }
370 + engines: { node: ">=6.9.0" }
371 +
372 + "@babel/core@7.25.2":
373 + resolution:
374 + {
375 + integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==
376 + }
377 + engines: { node: ">=6.9.0" }
378 +
379 + "@babel/generator@7.25.6":
380 + resolution:
381 + {
382 + integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==
383 + }
384 + engines: { node: ">=6.9.0" }
385 +
386 + "@babel/helper-annotate-as-pure@7.24.7":
387 + resolution:
388 + {
389 + integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==
390 + }
391 + engines: { node: ">=6.9.0" }
392 +
393 + "@babel/helper-compilation-targets@7.25.2":
394 + resolution:
395 + {
396 + integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==
397 + }
398 + engines: { node: ">=6.9.0" }
399 +
400 + "@babel/helper-create-class-features-plugin@7.25.4":
401 + resolution:
402 + {
403 + integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==
404 + }
405 + engines: { node: ">=6.9.0" }
406 + peerDependencies:
407 + "@babel/core": ^7.0.0
408 +
409 + "@babel/helper-member-expression-to-functions@7.24.8":
410 + resolution:
411 + {
412 + integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==
413 + }
414 + engines: { node: ">=6.9.0" }
415 +
416 + "@babel/helper-module-imports@7.24.7":
417 + resolution:
418 + {
419 + integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==
420 + }
421 + engines: { node: ">=6.9.0" }
422 +
423 + "@babel/helper-module-transforms@7.25.2":
424 + resolution:
425 + {
426 + integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==
427 + }
428 + engines: { node: ">=6.9.0" }
429 + peerDependencies:
430 + "@babel/core": ^7.0.0
431 +
432 + "@babel/helper-optimise-call-expression@7.24.7":
433 + resolution:
434 + {
435 + integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==
436 + }
437 + engines: { node: ">=6.9.0" }
438 +
439 + "@babel/helper-plugin-utils@7.24.8":
440 + resolution:
441 + {
442 + integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==
443 + }
444 + engines: { node: ">=6.9.0" }
445 +
446 + "@babel/helper-replace-supers@7.25.0":
447 + resolution:
448 + {
449 + integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==
450 + }
451 + engines: { node: ">=6.9.0" }
452 + peerDependencies:
453 + "@babel/core": ^7.0.0
454 +
455 + "@babel/helper-simple-access@7.24.7":
456 + resolution:
457 + {
458 + integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==
459 + }
460 + engines: { node: ">=6.9.0" }
461 +
462 + "@babel/helper-skip-transparent-expression-wrappers@7.24.7":
463 + resolution:
464 + {
465 + integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==
466 + }
467 + engines: { node: ">=6.9.0" }
468 +
469 + "@babel/helper-string-parser@7.24.8":
470 + resolution:
471 + {
472 + integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==
473 + }
474 + engines: { node: ">=6.9.0" }
475 +
476 + "@babel/helper-validator-identifier@7.24.7":
477 + resolution:
478 + {
479 + integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==
480 + }
481 + engines: { node: ">=6.9.0" }
482 +
483 + "@babel/helper-validator-option@7.24.8":
484 + resolution:
485 + {
486 + integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==
487 + }
488 + engines: { node: ">=6.9.0" }
489 +
490 + "@babel/helpers@7.25.6":
491 + resolution:
492 + {
493 + integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==
494 + }
495 + engines: { node: ">=6.9.0" }
496 +
497 + "@babel/highlight@7.24.7":
498 + resolution:
499 + {
500 + integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==
501 + }
502 + engines: { node: ">=6.9.0" }
503 +
504 + "@babel/parser@7.25.6":
505 + resolution:
506 + {
507 + integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==
508 + }
509 + engines: { node: ">=6.0.0" }
510 + hasBin: true
511 +
512 + "@babel/plugin-proposal-decorators@7.24.7":
513 + resolution:
514 + {
515 + integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==
516 + }
517 + engines: { node: ">=6.9.0" }
518 + peerDependencies:
519 + "@babel/core": ^7.0.0-0
520 +
521 + "@babel/plugin-syntax-decorators@7.24.7":
522 + resolution:
523 + {
524 + integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==
525 + }
526 + engines: { node: ">=6.9.0" }
527 + peerDependencies:
528 + "@babel/core": ^7.0.0-0
529 +
530 + "@babel/plugin-syntax-import-attributes@7.25.6":
531 + resolution:
532 + {
533 + integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==
534 + }
535 + engines: { node: ">=6.9.0" }
536 + peerDependencies:
537 + "@babel/core": ^7.0.0-0
538 +
539 + "@babel/plugin-syntax-import-meta@7.10.4":
540 + resolution:
541 + {
542 + integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
543 + }
544 + peerDependencies:
545 + "@babel/core": ^7.0.0-0
546 +
547 + "@babel/plugin-syntax-jsx@7.24.7":
548 + resolution:
549 + {
550 + integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==
551 + }
552 + engines: { node: ">=6.9.0" }
553 + peerDependencies:
554 + "@babel/core": ^7.0.0-0
555 +
556 + "@babel/plugin-syntax-typescript@7.25.4":
557 + resolution:
558 + {
559 + integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==
560 + }
561 + engines: { node: ">=6.9.0" }
562 + peerDependencies:
563 + "@babel/core": ^7.0.0-0
564 +
565 + "@babel/plugin-transform-typescript@7.25.2":
566 + resolution:
567 + {
568 + integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==
569 + }
570 + engines: { node: ">=6.9.0" }
571 + peerDependencies:
572 + "@babel/core": ^7.0.0-0
573 +
574 + "@babel/runtime@7.25.6":
575 + resolution:
576 + {
577 + integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==
578 + }
579 + engines: { node: ">=6.9.0" }
580 +
581 + "@babel/standalone@7.25.6":
582 + resolution:
583 + {
584 + integrity: sha512-Kf2ZcZVqsKbtYhlA7sP0z5A3q5hmCVYMKMWRWNK/5OVwHIve3JY1djVRmIVAx8FMueLIfZGKQDIILK2w8zO4mg==
585 + }
586 + engines: { node: ">=6.9.0" }
587 +
588 + "@babel/template@7.25.0":
589 + resolution:
590 + {
591 + integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==
592 + }
593 + engines: { node: ">=6.9.0" }
594 +
595 + "@babel/traverse@7.25.6":
596 + resolution:
597 + {
598 + integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==
599 + }
600 + engines: { node: ">=6.9.0" }
601 +
602 + "@babel/types@7.25.6":
603 + resolution:
604 + {
605 + integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==
606 + }
607 + engines: { node: ">=6.9.0" }
608 +
609 + "@clack/core@0.3.4":
610 + resolution:
611 + {
612 + integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==
613 + }
614 +
615 + "@clack/prompts@0.7.0":
616 + resolution:
617 + {
618 + integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==
619 + }
620 + bundledDependencies:
621 + - is-unicode-supported
622 +
623 + "@colors/colors@1.5.0":
624 + resolution:
625 + {
626 + integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
627 + }
628 + engines: { node: ">=0.1.90" }
629 +
630 + "@css-render/plugin-bem@0.15.14":
631 + resolution:
632 + {
633 + integrity: sha512-QK513CJ7yEQxm/P3EwsI+d+ha8kSOcjGvD6SevM41neEMxdULE+18iuQK6tEChAWMOQNQPLG/Rw3Khb69r5neg==
634 + }
635 + peerDependencies:
636 + css-render: ~0.15.14
637 +
638 + "@css-render/vue3-ssr@0.15.14":
639 + resolution:
640 + {
641 + integrity: sha512-//8027GSbxE9n3QlD73xFY6z4ZbHbvrOVB7AO6hsmrEzGbg+h2A09HboUyDgu+xsmj7JnvJD39Irt+2D0+iV8g==
642 + }
643 + peerDependencies:
644 + vue: ^3.0.11
645 +
646 + "@cypress/request@3.0.5":
647 + resolution:
648 + {
649 + integrity: sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==
650 + }
651 + engines: { node: ">= 6" }
652 +
653 + "@cypress/xvfb@1.2.4":
654 + resolution:
655 + {
656 + integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==
657 + }
658 +
659 + "@emotion/hash@0.8.0":
660 + resolution:
661 + {
662 + integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
663 + }
664 +
665 + "@es-joy/jsdoccomment@0.48.0":
666 + resolution:
667 + {
668 + integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==
669 + }
670 + engines: { node: ">=16" }
671 +
672 + "@esbuild/aix-ppc64@0.21.5":
673 + resolution:
674 + {
675 + integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
676 + }
677 + engines: { node: ">=12" }
678 + cpu: [ppc64]
679 + os: [aix]
680 +
681 + "@esbuild/aix-ppc64@0.23.1":
682 + resolution:
683 + {
684 + integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==
685 + }
686 + engines: { node: ">=18" }
687 + cpu: [ppc64]
688 + os: [aix]
689 +
690 + "@esbuild/android-arm64@0.21.5":
691 + resolution:
692 + {
693 + integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
694 + }
695 + engines: { node: ">=12" }
696 + cpu: [arm64]
697 + os: [android]
698 +
699 + "@esbuild/android-arm64@0.23.1":
700 + resolution:
701 + {
702 + integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==
703 + }
704 + engines: { node: ">=18" }
705 + cpu: [arm64]
706 + os: [android]
707 +
708 + "@esbuild/android-arm@0.21.5":
709 + resolution:
710 + {
711 + integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
712 + }
713 + engines: { node: ">=12" }
714 + cpu: [arm]
715 + os: [android]
716 +
717 + "@esbuild/android-arm@0.23.1":
718 + resolution:
719 + {
720 + integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==
721 + }
722 + engines: { node: ">=18" }
723 + cpu: [arm]
724 + os: [android]
725 +
726 + "@esbuild/android-x64@0.21.5":
727 + resolution:
728 + {
729 + integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
730 + }
731 + engines: { node: ">=12" }
732 + cpu: [x64]
733 + os: [android]
734 +
735 + "@esbuild/android-x64@0.23.1":
736 + resolution:
737 + {
738 + integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==
739 + }
740 + engines: { node: ">=18" }
741 + cpu: [x64]
742 + os: [android]
743 +
744 + "@esbuild/darwin-arm64@0.21.5":
745 + resolution:
746 + {
747 + integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
748 + }
749 + engines: { node: ">=12" }
750 + cpu: [arm64]
751 + os: [darwin]
752 +
753 + "@esbuild/darwin-arm64@0.23.1":
754 + resolution:
755 + {
756 + integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==
757 + }
758 + engines: { node: ">=18" }
759 + cpu: [arm64]
760 + os: [darwin]
761 +
762 + "@esbuild/darwin-x64@0.21.5":
763 + resolution:
764 + {
765 + integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
766 + }
767 + engines: { node: ">=12" }
768 + cpu: [x64]
769 + os: [darwin]
770 +
771 + "@esbuild/darwin-x64@0.23.1":
772 + resolution:
773 + {
774 + integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==
775 + }
776 + engines: { node: ">=18" }
777 + cpu: [x64]
778 + os: [darwin]
779 +
780 + "@esbuild/freebsd-arm64@0.21.5":
781 + resolution:
782 + {
783 + integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
784 + }
785 + engines: { node: ">=12" }
786 + cpu: [arm64]
787 + os: [freebsd]
788 +
789 + "@esbuild/freebsd-arm64@0.23.1":
790 + resolution:
791 + {
792 + integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==
793 + }
794 + engines: { node: ">=18" }
795 + cpu: [arm64]
796 + os: [freebsd]
797 +
798 + "@esbuild/freebsd-x64@0.21.5":
799 + resolution:
800 + {
801 + integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
802 + }
803 + engines: { node: ">=12" }
804 + cpu: [x64]
805 + os: [freebsd]
806 +
807 + "@esbuild/freebsd-x64@0.23.1":
808 + resolution:
809 + {
810 + integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==
811 + }
812 + engines: { node: ">=18" }
813 + cpu: [x64]
814 + os: [freebsd]
815 +
816 + "@esbuild/linux-arm64@0.21.5":
817 + resolution:
818 + {
819 + integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
820 + }
821 + engines: { node: ">=12" }
822 + cpu: [arm64]
823 + os: [linux]
824 +
825 + "@esbuild/linux-arm64@0.23.1":
826 + resolution:
827 + {
828 + integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==
829 + }
830 + engines: { node: ">=18" }
831 + cpu: [arm64]
832 + os: [linux]
833 +
834 + "@esbuild/linux-arm@0.21.5":
835 + resolution:
836 + {
837 + integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
838 + }
839 + engines: { node: ">=12" }
840 + cpu: [arm]
841 + os: [linux]
842 +
843 + "@esbuild/linux-arm@0.23.1":
844 + resolution:
845 + {
846 + integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==
847 + }
848 + engines: { node: ">=18" }
849 + cpu: [arm]
850 + os: [linux]
851 +
852 + "@esbuild/linux-ia32@0.21.5":
853 + resolution:
854 + {
855 + integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
856 + }
857 + engines: { node: ">=12" }
858 + cpu: [ia32]
859 + os: [linux]
860 +
861 + "@esbuild/linux-ia32@0.23.1":
862 + resolution:
863 + {
864 + integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==
865 + }
866 + engines: { node: ">=18" }
867 + cpu: [ia32]
868 + os: [linux]
869 +
870 + "@esbuild/linux-loong64@0.21.5":
871 + resolution:
872 + {
873 + integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
874 + }
875 + engines: { node: ">=12" }
876 + cpu: [loong64]
877 + os: [linux]
878 +
879 + "@esbuild/linux-loong64@0.23.1":
880 + resolution:
881 + {
882 + integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==
883 + }
884 + engines: { node: ">=18" }
885 + cpu: [loong64]
886 + os: [linux]
887 +
888 + "@esbuild/linux-mips64el@0.21.5":
889 + resolution:
890 + {
891 + integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
892 + }
893 + engines: { node: ">=12" }
894 + cpu: [mips64el]
895 + os: [linux]
896 +
897 + "@esbuild/linux-mips64el@0.23.1":
898 + resolution:
899 + {
900 + integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==
901 + }
902 + engines: { node: ">=18" }
903 + cpu: [mips64el]
904 + os: [linux]
905 +
906 + "@esbuild/linux-ppc64@0.21.5":
907 + resolution:
908 + {
909 + integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
910 + }
911 + engines: { node: ">=12" }
912 + cpu: [ppc64]
913 + os: [linux]
914 +
915 + "@esbuild/linux-ppc64@0.23.1":
916 + resolution:
917 + {
918 + integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==
919 + }
920 + engines: { node: ">=18" }
921 + cpu: [ppc64]
922 + os: [linux]
923 +
924 + "@esbuild/linux-riscv64@0.21.5":
925 + resolution:
926 + {
927 + integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
928 + }
929 + engines: { node: ">=12" }
930 + cpu: [riscv64]
931 + os: [linux]
932 +
933 + "@esbuild/linux-riscv64@0.23.1":
934 + resolution:
935 + {
936 + integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==
937 + }
938 + engines: { node: ">=18" }
939 + cpu: [riscv64]
940 + os: [linux]
941 +
942 + "@esbuild/linux-s390x@0.21.5":
943 + resolution:
944 + {
945 + integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
946 + }
947 + engines: { node: ">=12" }
948 + cpu: [s390x]
949 + os: [linux]
950 +
951 + "@esbuild/linux-s390x@0.23.1":
952 + resolution:
953 + {
954 + integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==
955 + }
956 + engines: { node: ">=18" }
957 + cpu: [s390x]
958 + os: [linux]
959 +
960 + "@esbuild/linux-x64@0.21.5":
961 + resolution:
962 + {
963 + integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
964 + }
965 + engines: { node: ">=12" }
966 + cpu: [x64]
967 + os: [linux]
968 +
969 + "@esbuild/linux-x64@0.23.1":
970 + resolution:
971 + {
972 + integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==
973 + }
974 + engines: { node: ">=18" }
975 + cpu: [x64]
976 + os: [linux]
977 +
978 + "@esbuild/netbsd-x64@0.21.5":
979 + resolution:
980 + {
981 + integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
982 + }
983 + engines: { node: ">=12" }
984 + cpu: [x64]
985 + os: [netbsd]
986 +
987 + "@esbuild/netbsd-x64@0.23.1":
988 + resolution:
989 + {
990 + integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==
991 + }
992 + engines: { node: ">=18" }
993 + cpu: [x64]
994 + os: [netbsd]
995 +
996 + "@esbuild/openbsd-arm64@0.23.1":
997 + resolution:
998 + {
999 + integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==
1000 + }
1001 + engines: { node: ">=18" }
1002 + cpu: [arm64]
1003 + os: [openbsd]
1004 +
1005 + "@esbuild/openbsd-x64@0.21.5":
1006 + resolution:
1007 + {
1008 + integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
1009 + }
1010 + engines: { node: ">=12" }
1011 + cpu: [x64]
1012 + os: [openbsd]
1013 +
1014 + "@esbuild/openbsd-x64@0.23.1":
1015 + resolution:
1016 + {
1017 + integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==
1018 + }
1019 + engines: { node: ">=18" }
1020 + cpu: [x64]
1021 + os: [openbsd]
1022 +
1023 + "@esbuild/sunos-x64@0.21.5":
1024 + resolution:
1025 + {
1026 + integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
1027 + }
1028 + engines: { node: ">=12" }
1029 + cpu: [x64]
1030 + os: [sunos]
1031 +
1032 + "@esbuild/sunos-x64@0.23.1":
1033 + resolution:
1034 + {
1035 + integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==
1036 + }
1037 + engines: { node: ">=18" }
1038 + cpu: [x64]
1039 + os: [sunos]
1040 +
1041 + "@esbuild/win32-arm64@0.21.5":
1042 + resolution:
1043 + {
1044 + integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
1045 + }
1046 + engines: { node: ">=12" }
1047 + cpu: [arm64]
1048 + os: [win32]
1049 +
1050 + "@esbuild/win32-arm64@0.23.1":
1051 + resolution:
1052 + {
1053 + integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==
1054 + }
1055 + engines: { node: ">=18" }
1056 + cpu: [arm64]
1057 + os: [win32]
1058 +
1059 + "@esbuild/win32-ia32@0.21.5":
1060 + resolution:
1061 + {
1062 + integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
1063 + }
1064 + engines: { node: ">=12" }
1065 + cpu: [ia32]
1066 + os: [win32]
1067 +
1068 + "@esbuild/win32-ia32@0.23.1":
1069 + resolution:
1070 + {
1071 + integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==
1072 + }
1073 + engines: { node: ">=18" }
1074 + cpu: [ia32]
1075 + os: [win32]
1076 +
1077 + "@esbuild/win32-x64@0.21.5":
1078 + resolution:
1079 + {
1080 + integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
1081 + }
1082 + engines: { node: ">=12" }
1083 + cpu: [x64]
1084 + os: [win32]
1085 +
1086 + "@esbuild/win32-x64@0.23.1":
1087 + resolution:
1088 + {
1089 + integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==
1090 + }
1091 + engines: { node: ">=18" }
1092 + cpu: [x64]
1093 + os: [win32]
1094 +
1095 + "@eslint-community/eslint-plugin-eslint-comments@4.4.0":
1096 + resolution:
1097 + {
1098 + integrity: sha512-yljsWl5Qv3IkIRmJ38h3NrHXFCm4EUl55M8doGTF6hvzvFF8kRpextgSrg2dwHev9lzBZyafCr9RelGIyQm6fw==
1099 + }
1100 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
1101 + peerDependencies:
1102 + eslint: ^9.11.0
1103 +
1104 + "@eslint-community/eslint-utils@4.4.0":
1105 + resolution:
1106 + {
1107 + integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
1108 + }
1109 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
1110 + peerDependencies:
1111 + eslint: ^9.11.0
1112 +
1113 + "@eslint-community/regexpp@4.11.1":
1114 + resolution:
1115 + {
1116 + integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
1117 + }
1118 + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
1119 +
1120 + "@eslint/compat@1.1.1":
1121 + resolution:
1122 + {
1123 + integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==
1124 + }
1125 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1126 +
1127 + "@eslint/config-array@0.18.0":
1128 + resolution:
1129 + {
1130 + integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
1131 + }
1132 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1133 +
1134 + "@eslint/eslintrc@3.1.0":
1135 + resolution:
1136 + {
1137 + integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
1138 + }
1139 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1140 +
1141 + "@eslint/js@8.57.1":
1142 + resolution:
1143 + {
1144 + integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
1145 + }
1146 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
1147 +
1148 + "@eslint/js@9.11.0":
1149 + resolution:
1150 + {
1151 + integrity: sha512-LPkkenkDqyzTFauZLLAPhIb48fj6drrfMvRGSL9tS3AcZBSVTllemLSNyCvHNNL2t797S/6DJNSIwRwXgMO/eQ==
1152 + }
1153 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1154 +
1155 + "@eslint/markdown@6.1.0":
1156 + resolution:
1157 + {
1158 + integrity: sha512-cX1tyD+aIbhzKrCKe/9M5s2jZhldWGOR+cy7cIVpxG9RkoaN4XU+gG3dy6oEKtBFXjDx06GtP0OGO7jgbqa2DA==
1159 + }
1160 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1161 + peerDependencies:
1162 + eslint: ^9.11.0
1163 +
1164 + "@eslint/object-schema@2.1.4":
1165 + resolution:
1166 + {
1167 + integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
1168 + }
1169 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1170 +
1171 + "@eslint/plugin-kit@0.2.0":
1172 + resolution:
1173 + {
1174 + integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==
1175 + }
1176 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1177 +
1178 + "@f3ve/eslint-config@1.0.6":
1179 + resolution:
1180 + {
1181 + integrity: sha512-DVLPAVZskaOUY6Gu/1VFaL0gGyY3VhjZBVExZVde2siwwgdwt+8XDSupLll0arKqVv4bqO2fRK21QomN3jy2yg==
1182 + }
1183 + peerDependencies:
1184 + eslint: ^9.11.0
1185 +
1186 + "@f3ve/vue-markdown-it@0.2.2":
1187 + resolution:
1188 + {
1189 + integrity: sha512-0LVoa7bCI+pKuMRp8iap7DNNSVgXH51xkAxFmBWjdY6gd9yXBwD64P0p7o1NSYFUXaQCGR+cfOpsudJY7zjeBg==
1190 + }
1191 + peerDependencies:
1192 + vue: ^3.3.4
1193 +
1194 + "@fontsource/jetbrains-mono@5.1.0":
1195 + resolution:
1196 + {
1197 + integrity: sha512-YzWpGYY3PoqvmvwW2Hb4NwkN5C7LO0FmZugEGcFe6cNNE/cMgH9JhW5LI6hjG+1+nwgSHyJtKmblHNrUqlyhWg==
1198 + }
1199 +
1200 + "@fontsource/lexend@5.1.0":
1201 + resolution:
1202 + {
1203 + integrity: sha512-mqwRfsRobLoj4iHqkvMGMMiTYU7n0hbgGftGBKFGKGyedseQOQ3k7iCBVTAU9wIyfq02Rypd9BrLXChHwFvg0Q==
1204 + }
1205 +
1206 + "@fontsource/public-sans@5.1.0":
1207 + resolution:
1208 + {
1209 + integrity: sha512-94+468XL9dUxsZ5edw/AtBHLdIwkvqr3WBUMBD30LUQzJpHw/Fxd7VrgkXSIKRIwYi3pTuQ1Q2Vj3COGIwi58Q==
1210 + }
1211 +
1212 + "@hapi/hoek@9.3.0":
1213 + resolution:
1214 + {
1215 + integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==
1216 + }
1217 +
1218 + "@hapi/topo@5.1.0":
1219 + resolution:
1220 + {
1221 + integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==
1222 + }
1223 +
1224 + "@humanwhocodes/module-importer@1.0.1":
1225 + resolution:
1226 + {
1227 + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
1228 + }
1229 + engines: { node: ">=12.22" }
1230 +
1231 + "@humanwhocodes/retry@0.3.0":
1232 + resolution:
1233 + {
1234 + integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==
1235 + }
1236 + engines: { node: ">=18.18" }
1237 +
1238 + "@iconify/types@2.0.0":
1239 + resolution:
1240 + {
1241 + integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==
1242 + }
1243 +
1244 + "@iconify/vue@4.1.2":
1245 + resolution:
1246 + {
1247 + integrity: sha512-CQnYqLiQD5LOAaXhBrmj1mdL2/NCJvwcC4jtW2Z8ukhThiFkLDkutarTOV2trfc9EXqUqRs0KqXOL9pZ/IyysA==
1248 + }
1249 + peerDependencies:
1250 + vue: ">=3"
1251 +
1252 + "@intlify/core-base@10.0.3":
1253 + resolution:
1254 + {
1255 + integrity: sha512-ysJnTGDtuXPa6R2Ii4JIvfMVvDahUUny3aY8+P4r6/0TYHkblgzIMjV6cAn60em67AB0M7OWNAdcAVfWWeN8Qg==
1256 + }
1257 + engines: { node: ">= 16" }
1258 +
1259 + "@intlify/message-compiler@10.0.3":
1260 + resolution:
1261 + {
1262 + integrity: sha512-KC2fG8nCzSYmXjHptEt6i/xM3k6S2szsPaHDCRgWKEYAbeHe6JFm6X4KRw3Csy112A8CxpavMi1dh3h7khwV5w==
1263 + }
1264 + engines: { node: ">= 16" }
1265 +
1266 + "@intlify/shared@10.0.3":
1267 + resolution:
1268 + {
1269 + integrity: sha512-PWxrCb6fDlnoGLnXLlWu6d7o/HdWACB9TjRnpLro+9uyfqgWA9hvqg5vekcPRyraTieV5srCbTk/ldYw9V3LHw==
1270 + }
1271 + engines: { node: ">= 16" }
1272 +
1273 + "@isaacs/cliui@8.0.2":
1274 + resolution:
1275 + {
1276 + integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
1277 + }
1278 + engines: { node: ">=12" }
1279 +
1280 + "@jridgewell/gen-mapping@0.3.5":
1281 + resolution:
1282 + {
1283 + integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
1284 + }
1285 + engines: { node: ">=6.0.0" }
1286 +
1287 + "@jridgewell/resolve-uri@3.1.2":
1288 + resolution:
1289 + {
1290 + integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
1291 + }
1292 + engines: { node: ">=6.0.0" }
1293 +
1294 + "@jridgewell/set-array@1.2.1":
1295 + resolution:
1296 + {
1297 + integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
1298 + }
1299 + engines: { node: ">=6.0.0" }
1300 +
1301 + "@jridgewell/sourcemap-codec@1.5.0":
1302 + resolution:
1303 + {
1304 + integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
1305 + }
1306 +
1307 + "@jridgewell/trace-mapping@0.3.25":
1308 + resolution:
1309 + {
1310 + integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
1311 + }
1312 +
1313 + "@juggle/resize-observer@3.4.0":
1314 + resolution:
1315 + {
1316 + integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==
1317 + }
1318 +
1319 + "@koa/router@12.0.2":
1320 + resolution:
1321 + {
1322 + integrity: sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==
1323 + }
1324 + engines: { node: ">= 12" }
1325 +
1326 + "@nodelib/fs.scandir@2.1.5":
1327 + resolution:
1328 + {
1329 + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
1330 + }
1331 + engines: { node: ">= 8" }
1332 +
1333 + "@nodelib/fs.stat@2.0.5":
1334 + resolution:
1335 + {
1336 + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
1337 + }
1338 + engines: { node: ">= 8" }
1339 +
1340 + "@nodelib/fs.walk@1.2.8":
1341 + resolution:
1342 + {
1343 + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
1344 + }
1345 + engines: { node: ">= 8" }
1346 +
1347 + "@nuxt/kit@3.13.2":
1348 + resolution:
1349 + {
1350 + integrity: sha512-KvRw21zU//wdz25IeE1E5m/aFSzhJloBRAQtv+evcFeZvuroIxpIQuUqhbzuwznaUwpiWbmwlcsp5uOWmi4vwA==
1351 + }
1352 + engines: { node: ^14.18.0 || >=16.10.0 }
1353 +
1354 + "@nuxt/schema@3.13.2":
1355 + resolution:
1356 + {
1357 + integrity: sha512-CCZgpm+MkqtOMDEgF9SWgGPBXlQ01hV/6+2reDEpJuqFPGzV8HYKPBcIFvn7/z5ahtgutHLzjP71Na+hYcqSpw==
1358 + }
1359 + engines: { node: ^14.18.0 || >=16.10.0 }
1360 +
1361 + "@one-ini/wasm@0.1.1":
1362 + resolution:
1363 + {
1364 + integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==
1365 + }
1366 +
1367 + "@pkgjs/parseargs@0.11.0":
1368 + resolution:
1369 + {
1370 + integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
1371 + }
1372 + engines: { node: ">=14" }
1373 +
1374 + "@pkgr/core@0.1.1":
1375 + resolution:
1376 + {
1377 + integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
1378 + }
1379 + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 }
1380 +
1381 + "@polka/url@1.0.0-next.28":
1382 + resolution:
1383 + {
1384 + integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==
1385 + }
1386 +
1387 + "@popperjs/core@2.11.8":
1388 + resolution:
1389 + {
1390 + integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
1391 + }
1392 +
1393 + "@rollup/pluginutils@5.1.1":
1394 + resolution:
1395 + {
1396 + integrity: sha512-bVRmQqBIyGD+VMihdEV2IBurfIrdW9tD9yzJUL3CBRDbyPBVzQnBSMSgyUZHl1E335rpMRj7r4o683fXLYw8iw==
1397 + }
1398 + engines: { node: ">=14.0.0" }
1399 + peerDependencies:
1400 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
1401 + peerDependenciesMeta:
1402 + rollup:
1403 + optional: true
1404 +
1405 + "@rollup/rollup-android-arm-eabi@4.22.4":
1406 + resolution:
1407 + {
1408 + integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==
1409 + }
1410 + cpu: [arm]
1411 + os: [android]
1412 +
1413 + "@rollup/rollup-android-arm64@4.22.4":
1414 + resolution:
1415 + {
1416 + integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==
1417 + }
1418 + cpu: [arm64]
1419 + os: [android]
1420 +
1421 + "@rollup/rollup-darwin-arm64@4.22.4":
1422 + resolution:
1423 + {
1424 + integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==
1425 + }
1426 + cpu: [arm64]
1427 + os: [darwin]
1428 +
1429 + "@rollup/rollup-darwin-x64@4.22.4":
1430 + resolution:
1431 + {
1432 + integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==
1433 + }
1434 + cpu: [x64]
1435 + os: [darwin]
1436 +
1437 + "@rollup/rollup-linux-arm-gnueabihf@4.22.4":
1438 + resolution:
1439 + {
1440 + integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==
1441 + }
1442 + cpu: [arm]
1443 + os: [linux]
1444 +
1445 + "@rollup/rollup-linux-arm-musleabihf@4.22.4":
1446 + resolution:
1447 + {
1448 + integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==
1449 + }
1450 + cpu: [arm]
1451 + os: [linux]
1452 +
1453 + "@rollup/rollup-linux-arm64-gnu@4.22.4":
1454 + resolution:
1455 + {
1456 + integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==
1457 + }
1458 + cpu: [arm64]
1459 + os: [linux]
1460 +
1461 + "@rollup/rollup-linux-arm64-musl@4.22.4":
1462 + resolution:
1463 + {
1464 + integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==
1465 + }
1466 + cpu: [arm64]
1467 + os: [linux]
1468 +
1469 + "@rollup/rollup-linux-powerpc64le-gnu@4.22.4":
1470 + resolution:
1471 + {
1472 + integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==
1473 + }
1474 + cpu: [ppc64]
1475 + os: [linux]
1476 +
1477 + "@rollup/rollup-linux-riscv64-gnu@4.22.4":
1478 + resolution:
1479 + {
1480 + integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==
1481 + }
1482 + cpu: [riscv64]
1483 + os: [linux]
1484 +
1485 + "@rollup/rollup-linux-s390x-gnu@4.22.4":
1486 + resolution:
1487 + {
1488 + integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==
1489 + }
1490 + cpu: [s390x]
1491 + os: [linux]
1492 +
1493 + "@rollup/rollup-linux-x64-gnu@4.22.4":
1494 + resolution:
1495 + {
1496 + integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==
1497 + }
1498 + cpu: [x64]
1499 + os: [linux]
1500 +
1501 + "@rollup/rollup-linux-x64-musl@4.22.4":
1502 + resolution:
1503 + {
1504 + integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==
1505 + }
1506 + cpu: [x64]
1507 + os: [linux]
1508 +
1509 + "@rollup/rollup-win32-arm64-msvc@4.22.4":
1510 + resolution:
1511 + {
1512 + integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==
1513 + }
1514 + cpu: [arm64]
1515 + os: [win32]
1516 +
1517 + "@rollup/rollup-win32-ia32-msvc@4.22.4":
1518 + resolution:
1519 + {
1520 + integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==
1521 + }
1522 + cpu: [ia32]
1523 + os: [win32]
1524 +
1525 + "@rollup/rollup-win32-x64-msvc@4.22.4":
1526 + resolution:
1527 + {
1528 + integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==
1529 + }
1530 + cpu: [x64]
1531 + os: [win32]
1532 +
1533 + "@shikijs/core@1.18.0":
1534 + resolution:
1535 + {
1536 + integrity: sha512-VK4BNVCd2leY62Nm2JjyxtRLkyrZT/tv104O81eyaCjHq4Adceq2uJVFJJAIof6lT1mBwZrEo2qT/T+grv3MQQ==
1537 + }
1538 +
1539 + "@shikijs/engine-javascript@1.18.0":
1540 + resolution:
1541 + {
1542 + integrity: sha512-qoP/aO/ATNwYAUw1YMdaip/YVEstMZEgrwhePm83Ll9OeQPuxDZd48szZR8oSQNQBT8m8UlWxZv8EA3lFuyI5A==
1543 + }
1544 +
1545 + "@shikijs/engine-oniguruma@1.18.0":
1546 + resolution:
1547 + {
1548 + integrity: sha512-B9u0ZKI/cud+TcmF8Chyh+R4V5qQVvyDOqXC2l2a4x73PBSBc6sZ0JRAX3eqyJswqir6ktwApUUGBYePdKnMJg==
1549 + }
1550 +
1551 + "@shikijs/markdown-it@1.18.0":
1552 + resolution:
1553 + {
1554 + integrity: sha512-acU44AAYYk7cESJbpEmcmLP5KJzuIUBzuCHcVd4glJPRK1UYc7Pqfg/chKv0DFYsC0u5BdFT15Od959tPA3xJQ==
1555 + }
1556 +
1557 + "@shikijs/types@1.18.0":
1558 + resolution:
1559 + {
1560 + integrity: sha512-O9N36UEaGGrxv1yUrN2nye7gDLG5Uq0/c1LyfmxsvzNPqlHzWo9DI0A4+fhW2y3bGKuQu/fwS7EPdKJJCowcVA==
1561 + }
1562 +
1563 + "@shikijs/vscode-textmate@9.2.2":
1564 + resolution:
1565 + {
1566 + integrity: sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==
1567 + }
1568 +
1569 + "@sideway/address@4.1.5":
1570 + resolution:
1571 + {
1572 + integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==
1573 + }
1574 +
1575 + "@sideway/formula@3.0.1":
1576 + resolution:
1577 + {
1578 + integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==
1579 + }
1580 +
1581 + "@sideway/pinpoint@2.0.0":
1582 + resolution:
1583 + {
1584 + integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
1585 + }
1586 +
1587 + "@sindresorhus/merge-streams@2.3.0":
1588 + resolution:
1589 + {
1590 + integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==
1591 + }
1592 + engines: { node: ">=18" }
1593 +
1594 + "@stylistic/eslint-plugin@2.8.0":
1595 + resolution:
1596 + {
1597 + integrity: sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==
1598 + }
1599 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1600 + peerDependencies:
1601 + eslint: ^9.11.0
1602 +
1603 + "@trysound/sax@0.2.0":
1604 + resolution:
1605 + {
1606 + integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
1607 + }
1608 + engines: { node: ">=10.13.0" }
1609 +
1610 + "@tsconfig/node20@20.1.4":
1611 + resolution:
1612 + {
1613 + integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==
1614 + }
1615 +
1616 + "@types/bytes@3.1.4":
1617 + resolution:
1618 + {
1619 + integrity: sha512-A0uYgOj3zNc4hNjHc5lYUfJQ/HVyBXiUMKdXd7ysclaE6k9oJdavQzODHuwjpUu2/boCP8afjQYi8z/GtvNCWA==
1620 + }
1621 +
1622 + "@types/debug@4.1.12":
1623 + resolution:
1624 + {
1625 + integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
1626 + }
1627 +
1628 + "@types/estree@1.0.5":
1629 + resolution:
1630 + {
1631 + integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
1632 + }
1633 +
1634 + "@types/estree@1.0.6":
1635 + resolution:
1636 + {
1637 + integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
1638 + }
1639 +
1640 + "@types/file-saver@2.0.7":
1641 + resolution:
1642 + {
1643 + integrity: sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==
1644 + }
1645 +
1646 + "@types/fs-extra@11.0.4":
1647 + resolution:
1648 + {
1649 + integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==
1650 + }
1651 +
1652 + "@types/hast@3.0.4":
1653 + resolution:
1654 + {
1655 + integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==
1656 + }
1657 +
1658 + "@types/inquirer@9.0.7":
1659 + resolution:
1660 + {
1661 + integrity: sha512-Q0zyBupO6NxGRZut/JdmqYKOnN95Eg5V8Csg3PGKkP+FnvsUZx1jAyK7fztIszxxMuoBA6E3KXWvdZVXIpx60g==
1662 + }
1663 +
1664 + "@types/jsdom@21.1.7":
1665 + resolution:
1666 + {
1667 + integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==
1668 + }
1669 +
1670 + "@types/json-schema@7.0.15":
1671 + resolution:
1672 + {
1673 + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
1674 + }
1675 +
1676 + "@types/jsonfile@6.1.4":
1677 + resolution:
1678 + {
1679 + integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==
1680 + }
1681 +
1682 + "@types/katex@0.16.7":
1683 + resolution:
1684 + {
1685 + integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==
1686 + }
1687 +
1688 + "@types/lodash-es@4.17.12":
1689 + resolution:
1690 + {
1691 + integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==
1692 + }
1693 +
1694 + "@types/lodash@4.17.7":
1695 + resolution:
1696 + {
1697 + integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==
1698 + }
1699 +
1700 + "@types/mdast@4.0.4":
1701 + resolution:
1702 + {
1703 + integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==
1704 + }
1705 +
1706 + "@types/ms@0.7.34":
1707 + resolution:
1708 + {
1709 + integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==
1710 + }
1711 +
1712 + "@types/node@22.5.5":
1713 + resolution:
1714 + {
1715 + integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==
1716 + }
1717 +
1718 + "@types/normalize-package-data@2.4.4":
1719 + resolution:
1720 + {
1721 + integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
1722 + }
1723 +
1724 + "@types/semver@7.5.8":
1725 + resolution:
1726 + {
1727 + integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
1728 + }
1729 +
1730 + "@types/sinonjs__fake-timers@8.1.1":
1731 + resolution:
1732 + {
1733 + integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==
1734 + }
1735 +
1736 + "@types/sizzle@2.3.8":
1737 + resolution:
1738 + {
1739 + integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==
1740 + }
1741 +
1742 + "@types/through@0.0.33":
1743 + resolution:
1744 + {
1745 + integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==
1746 + }
1747 +
1748 + "@types/tough-cookie@4.0.5":
1749 + resolution:
1750 + {
1751 + integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==
1752 + }
1753 +
1754 + "@types/unist@3.0.3":
1755 + resolution:
1756 + {
1757 + integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==
1758 + }
1759 +
1760 + "@types/validator@13.12.2":
1761 + resolution:
1762 + {
1763 + integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==
1764 + }
1765 +
1766 + "@types/web-bluetooth@0.0.20":
1767 + resolution:
1768 + {
1769 + integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==
1770 + }
1771 +
1772 + "@types/yauzl@2.10.3":
1773 + resolution:
1774 + {
1775 + integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
1776 + }
1777 +
1778 + "@typescript-eslint/eslint-plugin@8.6.0":
1779 + resolution:
1780 + {
1781 + integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==
1782 + }
1783 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1784 + peerDependencies:
1785 + "@typescript-eslint/parser": ^8.6.0
1786 + eslint: ^9.11.0
1787 + typescript: "*"
1788 + peerDependenciesMeta:
1789 + typescript:
1790 + optional: true
1791 +
1792 + "@typescript-eslint/parser@8.6.0":
1793 + resolution:
1794 + {
1795 + integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==
1796 + }
1797 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1798 + peerDependencies:
1799 + eslint: ^9.11.0
1800 + typescript: "*"
1801 + peerDependenciesMeta:
1802 + typescript:
1803 + optional: true
1804 +
1805 + "@typescript-eslint/scope-manager@6.21.0":
1806 + resolution:
1807 + {
1808 + integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==
1809 + }
1810 + engines: { node: ^16.0.0 || >=18.0.0 }
1811 +
1812 + "@typescript-eslint/scope-manager@8.6.0":
1813 + resolution:
1814 + {
1815 + integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==
1816 + }
1817 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1818 +
1819 + "@typescript-eslint/type-utils@8.6.0":
1820 + resolution:
1821 + {
1822 + integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==
1823 + }
1824 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1825 + peerDependencies:
1826 + typescript: "*"
1827 + peerDependenciesMeta:
1828 + typescript:
1829 + optional: true
1830 +
1831 + "@typescript-eslint/types@6.21.0":
1832 + resolution:
1833 + {
1834 + integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==
1835 + }
1836 + engines: { node: ^16.0.0 || >=18.0.0 }
1837 +
1838 + "@typescript-eslint/types@8.6.0":
1839 + resolution:
1840 + {
1841 + integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==
1842 + }
1843 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1844 +
1845 + "@typescript-eslint/typescript-estree@6.21.0":
1846 + resolution:
1847 + {
1848 + integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==
1849 + }
1850 + engines: { node: ^16.0.0 || >=18.0.0 }
1851 + peerDependencies:
1852 + typescript: "*"
1853 + peerDependenciesMeta:
1854 + typescript:
1855 + optional: true
1856 +
1857 + "@typescript-eslint/typescript-estree@8.6.0":
1858 + resolution:
1859 + {
1860 + integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==
1861 + }
1862 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1863 + peerDependencies:
1864 + typescript: "*"
1865 + peerDependenciesMeta:
1866 + typescript:
1867 + optional: true
1868 +
1869 + "@typescript-eslint/utils@6.21.0":
1870 + resolution:
1871 + {
1872 + integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==
1873 + }
1874 + engines: { node: ^16.0.0 || >=18.0.0 }
1875 + peerDependencies:
1876 + eslint: ^9.11.0
1877 +
1878 + "@typescript-eslint/utils@8.6.0":
1879 + resolution:
1880 + {
1881 + integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==
1882 + }
1883 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1884 + peerDependencies:
1885 + eslint: ^9.11.0
1886 +
1887 + "@typescript-eslint/visitor-keys@6.21.0":
1888 + resolution:
1889 + {
1890 + integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==
1891 + }
1892 + engines: { node: ^16.0.0 || >=18.0.0 }
1893 +
1894 + "@typescript-eslint/visitor-keys@8.6.0":
1895 + resolution:
1896 + {
1897 + integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==
1898 + }
1899 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
1900 +
1901 + "@ungap/structured-clone@1.2.0":
1902 + resolution:
1903 + {
1904 + integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
1905 + }
1906 +
1907 + "@unocss/config@0.56.5":
1908 + resolution:
1909 + {
1910 + integrity: sha512-rscnFIYgUlN/0hXHdhANyjFcDjDutt3JO0ZRITdNLzoglh7GVNiDTURBJwUZejF/vGJ7IkMd3qOdNhPFuRY1Bg==
1911 + }
1912 + engines: { node: ">=14" }
1913 +
1914 + "@unocss/core@0.56.5":
1915 + resolution:
1916 + {
1917 + integrity: sha512-fx5VhOjSHn0HdV2D34pEwFMAHJcJQRTCp1xEE4GzxY1irXzaa+m2aYf5PZjmDxehiOC16IH7TO9FOWANXk1E0w==
1918 + }
1919 +
1920 + "@unocss/eslint-config@0.56.5":
1921 + resolution:
1922 + {
1923 + integrity: sha512-UP7EBTl4ORRO0yqptW7oUWxM0qNh1Nk+z4rufC0C2kI8vKc8yab+sWvlBSC8DeX3kzR7uJxvtUsHGcBcoqZujg==
1924 + }
1925 + engines: { node: ">=14" }
1926 +
1927 + "@unocss/eslint-plugin@0.56.5":
1928 + resolution:
1929 + {
1930 + integrity: sha512-nMVw/kc0sYU5i8UBU1rEahzKhZRPTUjCztpPzo2KUKFKLBPAbTv0gJAOmU/n2kV3YiGk5Tl6jmShxu1MHjk5rA==
1931 + }
1932 + engines: { node: ">=14" }
1933 +
1934 + "@vitejs/plugin-vue-jsx@4.0.1":
1935 + resolution:
1936 + {
1937 + integrity: sha512-7mg9HFGnFHMEwCdB6AY83cVK4A6sCqnrjFYF4WIlebYAQVVJ/sC/CiTruVdrRlhrFoeZ8rlMxY9wYpPTIRhhAg==
1938 + }
1939 + engines: { node: ^18.0.0 || >=20.0.0 }
1940 + peerDependencies:
1941 + vite: ^5.0.0
1942 + vue: ^3.0.0
1943 +
1944 + "@vitejs/plugin-vue@5.1.4":
1945 + resolution:
1946 + {
1947 + integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==
1948 + }
1949 + engines: { node: ^18.0.0 || >=20.0.0 }
1950 + peerDependencies:
1951 + vite: ^5.0.0
1952 + vue: ^3.2.25
1953 +
1954 + "@vitest/eslint-plugin@1.1.4":
1955 + resolution:
1956 + {
1957 + integrity: sha512-kudjgefmJJ7xQ2WfbUU6pZbm7Ou4gLYRaao/8Ynide3G0QhVKHd978sDyWX4KOH0CCMH9cyrGAkFd55eGzJ48Q==
1958 + }
1959 + peerDependencies:
1960 + "@typescript-eslint/utils": ">= 8.0"
1961 + eslint: ^9.11.0
1962 + typescript: ">= 5.0.0"
1963 + vitest: "*"
1964 + peerDependenciesMeta:
1965 + "@typescript-eslint/utils":
1966 + optional: true
1967 + typescript:
1968 + optional: true
1969 + vitest:
1970 + optional: true
1971 +
1972 + "@vitest/expect@2.1.1":
1973 + resolution:
1974 + {
1975 + integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==
1976 + }
1977 +
1978 + "@vitest/mocker@2.1.1":
1979 + resolution:
1980 + {
1981 + integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==
1982 + }
1983 + peerDependencies:
1984 + "@vitest/spy": 2.1.1
1985 + msw: ^2.3.5
1986 + vite: ^5.0.0
1987 + peerDependenciesMeta:
1988 + msw:
1989 + optional: true
1990 + vite:
1991 + optional: true
1992 +
1993 + "@vitest/pretty-format@2.1.1":
1994 + resolution:
1995 + {
1996 + integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==
1997 + }
1998 +
1999 + "@vitest/runner@2.1.1":
2000 + resolution:
2001 + {
2002 + integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==
2003 + }
2004 +
2005 + "@vitest/snapshot@2.1.1":
2006 + resolution:
2007 + {
2008 + integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==
2009 + }
2010 +
2011 + "@vitest/spy@2.1.1":
2012 + resolution:
2013 + {
2014 + integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==
2015 + }
2016 +
2017 + "@vitest/utils@2.1.1":
2018 + resolution:
2019 + {
2020 + integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==
2021 + }
2022 +
2023 + "@volar/language-core@2.4.5":
2024 + resolution:
2025 + {
2026 + integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==
2027 + }
2028 +
2029 + "@volar/source-map@2.4.5":
2030 + resolution:
2031 + {
2032 + integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==
2033 + }
2034 +
2035 + "@volar/typescript@2.4.5":
2036 + resolution:
2037 + {
2038 + integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==
2039 + }
2040 +
2041 + "@vue/babel-helper-vue-transform-on@1.2.5":
2042 + resolution:
2043 + {
2044 + integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==
2045 + }
2046 +
2047 + "@vue/babel-plugin-jsx@1.2.5":
2048 + resolution:
2049 + {
2050 + integrity: sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==
2051 + }
2052 + peerDependencies:
2053 + "@babel/core": ^7.0.0-0
2054 + peerDependenciesMeta:
2055 + "@babel/core":
2056 + optional: true
2057 +
2058 + "@vue/babel-plugin-resolve-type@1.2.5":
2059 + resolution:
2060 + {
2061 + integrity: sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==
2062 + }
2063 + peerDependencies:
2064 + "@babel/core": ^7.0.0-0
2065 +
2066 + "@vue/compiler-core@3.5.8":
2067 + resolution:
2068 + {
2069 + integrity: sha512-Uzlxp91EPjfbpeO5KtC0KnXPkuTfGsNDeaKQJxQN718uz+RqDYarEf7UhQJGK+ZYloD2taUbHTI2J4WrUaZQNA==
2070 + }
2071 +
2072 + "@vue/compiler-dom@3.5.8":
2073 + resolution:
2074 + {
2075 + integrity: sha512-GUNHWvoDSbSa5ZSHT9SnV5WkStWfzJwwTd6NMGzilOE/HM5j+9EB9zGXdtu/fCNEmctBqMs6C9SvVPpVPuk1Eg==
2076 + }
2077 +
2078 + "@vue/compiler-sfc@3.5.8":
2079 + resolution:
2080 + {
2081 + integrity: sha512-taYpngQtSysrvO9GULaOSwcG5q821zCoIQBtQQSx7Uf7DxpR6CIHR90toPr9QfDD2mqHQPCSgoWBvJu0yV9zjg==
2082 + }
2083 +
2084 + "@vue/compiler-ssr@3.5.8":
2085 + resolution:
2086 + {
2087 + integrity: sha512-W96PtryNsNG9u0ZnN5Q5j27Z/feGrFV6zy9q5tzJVyJaLiwYxvC0ek4IXClZygyhjm+XKM7WD9pdKi/wIRVC/Q==
2088 + }
2089 +
2090 + "@vue/compiler-vue2@2.7.16":
2091 + resolution:
2092 + {
2093 + integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==
2094 + }
2095 +
2096 + "@vue/devtools-api@6.6.4":
2097 + resolution:
2098 + {
2099 + integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
2100 + }
2101 +
2102 + "@vue/devtools-core@7.4.5":
2103 + resolution:
2104 + {
2105 + integrity: sha512-QwrgKYxwafJUJrKRvJGbzQLuGt0BC1P4qTr4qlEKgOOs+GV0n6zTry2oeHiwmj5H6pOkLoHnwFMOTB9rFtn9QQ==
2106 + }
2107 + peerDependencies:
2108 + vue: ^3.0.0
2109 +
2110 + "@vue/devtools-kit@7.4.5":
2111 + resolution:
2112 + {
2113 + integrity: sha512-Uuki4Z6Bc/ExvtlPkeDNGSAe4580R+HPcVABfTE9TF7BTz3Nntk7vxIRUyWblZkUEcB/x+wn2uofyt5i2LaUew==
2114 + }
2115 +
2116 + "@vue/devtools-shared@7.4.5":
2117 + resolution:
2118 + {
2119 + integrity: sha512-2XgUOkL/7QDmyYI9J7cm+rz/qBhcGv+W5+i1fhwdQ0HQ1RowhdK66F0QBuJSz/5k12opJY8eN6m03/XZMs7imQ==
2120 + }
2121 +
2122 + "@vue/language-core@2.1.6":
2123 + resolution:
2124 + {
2125 + integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==
2126 + }
2127 + peerDependencies:
2128 + typescript: "*"
2129 + peerDependenciesMeta:
2130 + typescript:
2131 + optional: true
2132 +
2133 + "@vue/reactivity@3.5.8":
2134 + resolution:
2135 + {
2136 + integrity: sha512-mlgUyFHLCUZcAYkqvzYnlBRCh0t5ZQfLYit7nukn1GR96gc48Bp4B7OIcSfVSvlG1k3BPfD+p22gi1t2n9tsXg==
2137 + }
2138 +
2139 + "@vue/runtime-core@3.5.8":
2140 + resolution:
2141 + {
2142 + integrity: sha512-fJuPelh64agZ8vKkZgp5iCkPaEqFJsYzxLk9vSC0X3G8ppknclNDr61gDc45yBGTaN5Xqc1qZWU3/NoaBMHcjQ==
2143 + }
2144 +
2145 + "@vue/runtime-dom@3.5.8":
2146 + resolution:
2147 + {
2148 + integrity: sha512-DpAUz+PKjTZPUOB6zJgkxVI3GuYc2iWZiNeeHQUw53kdrparSTG6HeXUrYDjaam8dVsCdvQxDz6ZWxnyjccUjQ==
2149 + }
2150 +
2151 + "@vue/server-renderer@3.5.8":
2152 + resolution:
2153 + {
2154 + integrity: sha512-7AmC9/mEeV9mmXNVyUIm1a1AjUhyeeGNbkLh39J00E7iPeGks8OGRB5blJiMmvqSh8SkaS7jkLWSpXtxUCeagA==
2155 + }
2156 + peerDependencies:
2157 + vue: 3.5.8
2158 +
2159 + "@vue/shared@3.5.8":
2160 + resolution:
2161 + {
2162 + integrity: sha512-mJleSWbAGySd2RJdX1RBtcrUBX6snyOc0qHpgk3lGi4l9/P/3ny3ELqFWqYdkXIwwNN/kdm8nD9ky8o6l/Lx2A==
2163 + }
2164 +
2165 + "@vue/test-utils@2.4.6":
2166 + resolution:
2167 + {
2168 + integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==
2169 + }
2170 +
2171 + "@vue/tsconfig@0.5.1":
2172 + resolution:
2173 + {
2174 + integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==
2175 + }
2176 +
2177 + "@vueuse/components@11.1.0":
2178 + resolution:
2179 + {
2180 + integrity: sha512-8CTbvH1rHfAlqsMdMg6G2OiIvHiHn8HRx0yyJ+Ri/C8J6cLylXAd7VESawoCAkRdAXT4ucPnj/uYHZqEb0JbBQ==
2181 + }
2182 +
2183 + "@vueuse/core@11.1.0":
2184 + resolution:
2185 + {
2186 + integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==
2187 + }
2188 +
2189 + "@vueuse/metadata@11.1.0":
2190 + resolution:
2191 + {
2192 + integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==
2193 + }
2194 +
2195 + "@vueuse/shared@11.1.0":
2196 + resolution:
2197 + {
2198 + integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==
2199 + }
2200 +
2201 + "@yr/monotone-cubic-spline@1.0.3":
2202 + resolution:
2203 + {
2204 + integrity: sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==
2205 + }
2206 +
2207 + abbrev@2.0.0:
2208 + resolution:
2209 + {
2210 + integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==
2211 + }
2212 + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
2213 +
2214 + accepts@1.3.8:
2215 + resolution:
2216 + {
2217 + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
2218 + }
2219 + engines: { node: ">= 0.6" }
2220 +
2221 + acorn-jsx@5.3.2:
2222 + resolution:
2223 + {
2224 + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
2225 + }
2226 + peerDependencies:
2227 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
2228 +
2229 + acorn@8.12.1:
2230 + resolution:
2231 + {
2232 + integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
2233 + }
2234 + engines: { node: ">=0.4.0" }
2235 + hasBin: true
2236 +
2237 + agent-base@7.1.1:
2238 + resolution:
2239 + {
2240 + integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==
2241 + }
2242 + engines: { node: ">= 14" }
2243 +
2244 + aggregate-error@3.1.0:
2245 + resolution:
2246 + {
2247 + integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
2248 + }
2249 + engines: { node: ">=8" }
2250 +
2251 + ajv@6.12.6:
2252 + resolution:
2253 + {
2254 + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
2255 + }
2256 +
2257 + ansi-colors@4.1.3:
2258 + resolution:
2259 + {
2260 + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
2261 + }
2262 + engines: { node: ">=6" }
2263 +
2264 + ansi-escapes@4.3.2:
2265 + resolution:
2266 + {
2267 + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
2268 + }
2269 + engines: { node: ">=8" }
2270 +
2271 + ansi-regex@5.0.1:
2272 + resolution:
2273 + {
2274 + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
2275 + }
2276 + engines: { node: ">=8" }
2277 +
2278 + ansi-regex@6.1.0:
2279 + resolution:
2280 + {
2281 + integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
2282 + }
2283 + engines: { node: ">=12" }
2284 +
2285 + ansi-styles@3.2.1:
2286 + resolution:
2287 + {
2288 + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
2289 + }
2290 + engines: { node: ">=4" }
2291 +
2292 + ansi-styles@4.3.0:
2293 + resolution:
2294 + {
2295 + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
2296 + }
2297 + engines: { node: ">=8" }
2298 +
2299 + ansi-styles@6.2.1:
2300 + resolution:
2301 + {
2302 + integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
2303 + }
2304 + engines: { node: ">=12" }
2305 +
2306 + any-promise@1.3.0:
2307 + resolution:
2308 + {
2309 + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
2310 + }
2311 +
2312 + anymatch@3.1.3:
2313 + resolution:
2314 + {
2315 + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
2316 + }
2317 + engines: { node: ">= 8" }
2318 +
2319 + apexcharts@3.53.0:
2320 + resolution:
2321 + {
2322 + integrity: sha512-QESZHZY3w9LPQ64PGh1gEdfjYjJ5Jp+Dfy0D/CLjsLOPTpXzdxwlNMqRj+vPbTcP0nAHgjWv1maDqcEq6u5olw==
2323 + }
2324 +
2325 + arch@2.2.0:
2326 + resolution:
2327 + {
2328 + integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
2329 + }
2330 +
2331 + are-docs-informative@0.0.2:
2332 + resolution:
2333 + {
2334 + integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==
2335 + }
2336 + engines: { node: ">=14" }
2337 +
2338 + arg@5.0.2:
2339 + resolution:
2340 + {
2341 + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
2342 + }
2343 +
2344 + argparse@2.0.1:
2345 + resolution:
2346 + {
2347 + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
2348 + }
2349 +
2350 + array-union@2.1.0:
2351 + resolution:
2352 + {
2353 + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
2354 + }
2355 + engines: { node: ">=8" }
2356 +
2357 + asn1@0.2.6:
2358 + resolution:
2359 + {
2360 + integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
2361 + }
2362 +
2363 + assert-plus@1.0.0:
2364 + resolution:
2365 + {
2366 + integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
2367 + }
2368 + engines: { node: ">=0.8" }
2369 +
2370 + assertion-error@2.0.1:
2371 + resolution:
2372 + {
2373 + integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==
2374 + }
2375 + engines: { node: ">=12" }
2376 +
2377 + astral-regex@2.0.0:
2378 + resolution:
2379 + {
2380 + integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
2381 + }
2382 + engines: { node: ">=8" }
2383 +
2384 + async-validator@4.2.5:
2385 + resolution:
2386 + {
2387 + integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
2388 + }
2389 +
2390 + async@2.6.4:
2391 + resolution:
2392 + {
2393 + integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
2394 + }
2395 +
2396 + async@3.2.6:
2397 + resolution:
2398 + {
2399 + integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
2400 + }
2401 +
2402 + asynckit@0.4.0:
2403 + resolution:
2404 + {
2405 + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
2406 + }
2407 +
2408 + at-least-node@1.0.0:
2409 + resolution:
2410 + {
2411 + integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
2412 + }
2413 + engines: { node: ">= 4.0.0" }
2414 +
2415 + autoprefixer@10.4.20:
2416 + resolution:
2417 + {
2418 + integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==
2419 + }
2420 + engines: { node: ^10 || ^12 || >=14 }
2421 + hasBin: true
2422 + peerDependencies:
2423 + postcss: ^8.1.0
2424 +
2425 + aws-sign2@0.7.0:
2426 + resolution:
2427 + {
2428 + integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
2429 + }
2430 +
2431 + aws4@1.13.2:
2432 + resolution:
2433 + {
2434 + integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==
2435 + }
2436 +
2437 + axios@1.7.7:
2438 + resolution:
2439 + {
2440 + integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==
2441 + }
2442 +
2443 + balanced-match@1.0.2:
2444 + resolution:
2445 + {
2446 + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
2447 + }
2448 +
2449 + base64-js@1.5.1:
2450 + resolution:
2451 + {
2452 + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
2453 + }
2454 +
2455 + bcrypt-pbkdf@1.0.2:
2456 + resolution:
2457 + {
2458 + integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
2459 + }
2460 +
2461 + binary-extensions@2.3.0:
2462 + resolution:
2463 + {
2464 + integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
2465 + }
2466 + engines: { node: ">=8" }
2467 +
2468 + birpc@0.2.17:
2469 + resolution:
2470 + {
2471 + integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==
2472 + }
2473 +
2474 + blob-util@2.0.2:
2475 + resolution:
2476 + {
2477 + integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==
2478 + }
2479 +
2480 + bluebird@3.7.2:
2481 + resolution:
2482 + {
2483 + integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
2484 + }
2485 +
2486 + boolbase@1.0.0:
2487 + resolution:
2488 + {
2489 + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
2490 + }
2491 +
2492 + brace-expansion@1.1.11:
2493 + resolution:
2494 + {
2495 + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
2496 + }
2497 +
2498 + brace-expansion@2.0.1:
2499 + resolution:
2500 + {
2501 + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
2502 + }
2503 +
2504 + braces@3.0.3:
2505 + resolution:
2506 + {
2507 + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
2508 + }
2509 + engines: { node: ">=8" }
2510 +
2511 + browserslist@4.23.3:
2512 + resolution:
2513 + {
2514 + integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
2515 + }
2516 + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
2517 + hasBin: true
2518 +
2519 + buffer-crc32@0.2.13:
2520 + resolution:
2521 + {
2522 + integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
2523 + }
2524 +
2525 + buffer@5.7.1:
2526 + resolution:
2527 + {
2528 + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
2529 + }
2530 +
2531 + builtin-modules@3.3.0:
2532 + resolution:
2533 + {
2534 + integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
2535 + }
2536 + engines: { node: ">=6" }
2537 +
2538 + bundle-name@4.1.0:
2539 + resolution:
2540 + {
2541 + integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==
2542 + }
2543 + engines: { node: ">=18" }
2544 +
2545 + bundle-require@5.0.0:
2546 + resolution:
2547 + {
2548 + integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==
2549 + }
2550 + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
2551 + peerDependencies:
2552 + esbuild: ">=0.18"
2553 +
2554 + bytes@3.1.2:
2555 + resolution:
2556 + {
2557 + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
2558 + }
2559 + engines: { node: ">= 0.8" }
2560 +
2561 + c12@1.11.2:
2562 + resolution:
2563 + {
2564 + integrity: sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==
2565 + }
2566 + peerDependencies:
2567 + magicast: ^0.3.4
2568 + peerDependenciesMeta:
2569 + magicast:
2570 + optional: true
2571 +
2572 + cac@6.7.14:
2573 + resolution:
2574 + {
2575 + integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
2576 + }
2577 + engines: { node: ">=8" }
2578 +
2579 + cache-content-type@1.0.1:
2580 + resolution:
2581 + {
2582 + integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==
2583 + }
2584 + engines: { node: ">= 6.0.0" }
2585 +
2586 + cachedir@2.4.0:
2587 + resolution:
2588 + {
2589 + integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==
2590 + }
2591 + engines: { node: ">=6" }
2592 +
2593 + call-bind@1.0.7:
2594 + resolution:
2595 + {
2596 + integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
2597 + }
2598 + engines: { node: ">= 0.4" }
2599 +
2600 + callsites@3.1.0:
2601 + resolution:
2602 + {
2603 + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
2604 + }
2605 + engines: { node: ">=6" }
2606 +
2607 + camelcase-css@2.0.1:
2608 + resolution:
2609 + {
2610 + integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
2611 + }
2612 + engines: { node: ">= 6" }
2613 +
2614 + caniuse-lite@1.0.30001663:
2615 + resolution:
2616 + {
2617 + integrity: sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==
2618 + }
2619 +
2620 + caseless@0.12.0:
2621 + resolution:
2622 + {
2623 + integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
2624 + }
2625 +
2626 + ccount@2.0.1:
2627 + resolution:
2628 + {
2629 + integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==
2630 + }
2631 +
2632 + chai@5.1.1:
2633 + resolution:
2634 + {
2635 + integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==
2636 + }
2637 + engines: { node: ">=12" }
2638 +
2639 + chalk@2.4.2:
2640 + resolution:
2641 + {
2642 + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
2643 + }
2644 + engines: { node: ">=4" }
2645 +
2646 + chalk@4.1.2:
2647 + resolution:
2648 + {
2649 + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
2650 + }
2651 + engines: { node: ">=10" }
2652 +
2653 + character-entities-html4@2.1.0:
2654 + resolution:
2655 + {
2656 + integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==
2657 + }
2658 +
2659 + character-entities-legacy@3.0.0:
2660 + resolution:
2661 + {
2662 + integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==
2663 + }
2664 +
2665 + character-entities@2.0.2:
2666 + resolution:
2667 + {
2668 + integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
2669 + }
2670 +
2671 + check-error@2.1.1:
2672 + resolution:
2673 + {
2674 + integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
2675 + }
2676 + engines: { node: ">= 16" }
2677 +
2678 + check-more-types@2.24.0:
2679 + resolution:
2680 + {
2681 + integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==
2682 + }
2683 + engines: { node: ">= 0.8.0" }
2684 +
2685 + chokidar@3.6.0:
2686 + resolution:
2687 + {
2688 + integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
2689 + }
2690 + engines: { node: ">= 8.10.0" }
2691 +
2692 + chokidar@4.0.1:
2693 + resolution:
2694 + {
2695 + integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
2696 + }
2697 + engines: { node: ">= 14.16.0" }
2698 +
2699 + chownr@2.0.0:
2700 + resolution:
2701 + {
2702 + integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
2703 + }
2704 + engines: { node: ">=10" }
2705 +
2706 + ci-info@3.9.0:
2707 + resolution:
2708 + {
2709 + integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
2710 + }
2711 + engines: { node: ">=8" }
2712 +
2713 + ci-info@4.0.0:
2714 + resolution:
2715 + {
2716 + integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==
2717 + }
2718 + engines: { node: ">=8" }
2719 +
2720 + citty@0.1.6:
2721 + resolution:
2722 + {
2723 + integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==
2724 + }
2725 +
2726 + classnames@2.5.1:
2727 + resolution:
2728 + {
2729 + integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
2730 + }
2731 +
2732 + clean-regexp@1.0.0:
2733 + resolution:
2734 + {
2735 + integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==
2736 + }
2737 + engines: { node: ">=4" }
2738 +
2739 + clean-stack@2.2.0:
2740 + resolution:
2741 + {
2742 + integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
2743 + }
2744 + engines: { node: ">=6" }
2745 +
2746 + cli-cursor@3.1.0:
2747 + resolution:
2748 + {
2749 + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
2750 + }
2751 + engines: { node: ">=8" }
2752 +
2753 + cli-table3@0.6.5:
2754 + resolution:
2755 + {
2756 + integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==
2757 + }
2758 + engines: { node: 10.* || >= 12.* }
2759 +
2760 + cli-truncate@2.1.0:
2761 + resolution:
2762 + {
2763 + integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
2764 + }
2765 + engines: { node: ">=8" }
2766 +
2767 + cliui@8.0.1:
2768 + resolution:
2769 + {
2770 + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
2771 + }
2772 + engines: { node: ">=12" }
2773 +
2774 + co@4.6.0:
2775 + resolution:
2776 + {
2777 + integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
2778 + }
2779 + engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" }
2780 +
2781 + color-convert@1.9.3:
2782 + resolution:
2783 + {
2784 + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
2785 + }
2786 +
2787 + color-convert@2.0.1:
2788 + resolution:
2789 + {
2790 + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
2791 + }
2792 + engines: { node: ">=7.0.0" }
2793 +
2794 + color-name@1.1.3:
2795 + resolution:
2796 + {
2797 + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
2798 + }
2799 +
2800 + color-name@1.1.4:
2801 + resolution:
2802 + {
2803 + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
2804 + }
2805 +
2806 + colord@2.9.3:
2807 + resolution:
2808 + {
2809 + integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
2810 + }
2811 +
2812 + colorette@2.0.20:
2813 + resolution:
2814 + {
2815 + integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
2816 + }
2817 +
2818 + combined-stream@1.0.8:
2819 + resolution:
2820 + {
2821 + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
2822 + }
2823 + engines: { node: ">= 0.8" }
2824 +
2825 + comma-separated-tokens@2.0.3:
2826 + resolution:
2827 + {
2828 + integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==
2829 + }
2830 +
2831 + commander@10.0.1:
2832 + resolution:
2833 + {
2834 + integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
2835 + }
2836 + engines: { node: ">=14" }
2837 +
2838 + commander@4.1.1:
2839 + resolution:
2840 + {
2841 + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
2842 + }
2843 + engines: { node: ">= 6" }
2844 +
2845 + commander@6.2.1:
2846 + resolution:
2847 + {
2848 + integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
2849 + }
2850 + engines: { node: ">= 6" }
2851 +
2852 + commander@7.2.0:
2853 + resolution:
2854 + {
2855 + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
2856 + }
2857 + engines: { node: ">= 10" }
2858 +
2859 + comment-parser@1.4.1:
2860 + resolution:
2861 + {
2862 + integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==
2863 + }
2864 + engines: { node: ">= 12.0.0" }
2865 +
2866 + common-tags@1.8.2:
2867 + resolution:
2868 + {
2869 + integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
2870 + }
2871 + engines: { node: ">=4.0.0" }
2872 +
2873 + compatx@0.1.8:
2874 + resolution:
2875 + {
2876 + integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==
2877 + }
2878 +
2879 + computeds@0.0.1:
2880 + resolution:
2881 + {
2882 + integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==
2883 + }
2884 +
2885 + concat-map@0.0.1:
2886 + resolution:
2887 + {
2888 + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
2889 + }
2890 +
2891 + confbox@0.1.7:
2892 + resolution:
2893 + {
2894 + integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==
2895 + }
2896 +
2897 + config-chain@1.1.13:
2898 + resolution:
2899 + {
2900 + integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
2901 + }
2902 +
2903 + consola@3.2.3:
2904 + resolution:
2905 + {
2906 + integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==
2907 + }
2908 + engines: { node: ^14.18.0 || >=16.10.0 }
2909 +
2910 + content-disposition@0.5.4:
2911 + resolution:
2912 + {
2913 + integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
2914 + }
2915 + engines: { node: ">= 0.6" }
2916 +
2917 + content-type@1.0.5:
2918 + resolution:
2919 + {
2920 + integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
2921 + }
2922 + engines: { node: ">= 0.6" }
2923 +
2924 + convert-source-map@2.0.0:
2925 + resolution:
2926 + {
2927 + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
2928 + }
2929 +
2930 + cookies@0.9.1:
2931 + resolution:
2932 + {
2933 + integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==
2934 + }
2935 + engines: { node: ">= 0.8" }
2936 +
2937 + copy-anything@3.0.5:
2938 + resolution:
2939 + {
2940 + integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==
2941 + }
2942 + engines: { node: ">=12.13" }
2943 +
2944 + core-js-compat@3.38.1:
2945 + resolution:
2946 + {
2947 + integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==
2948 + }
2949 +
2950 + core-util-is@1.0.2:
2951 + resolution:
2952 + {
2953 + integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
2954 + }
2955 +
2956 + cross-spawn@7.0.3:
2957 + resolution:
2958 + {
2959 + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
2960 + }
2961 + engines: { node: ">= 8" }
2962 +
2963 + crypto-js@4.2.0:
2964 + resolution:
2965 + {
2966 + integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==
2967 + }
2968 +
2969 + css-render@0.15.14:
2970 + resolution:
2971 + {
2972 + integrity: sha512-9nF4PdUle+5ta4W5SyZdLCCmFd37uVimSjg1evcTqKJCyvCEEj12WKzOSBNak6r4im4J4iYXKH1OWpUV5LBYFg==
2973 + }
2974 +
2975 + css-select@5.1.0:
2976 + resolution:
2977 + {
2978 + integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
2979 + }
2980 +
2981 + css-tree@2.2.1:
2982 + resolution:
2983 + {
2984 + integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==
2985 + }
2986 + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" }
2987 +
2988 + css-tree@2.3.1:
2989 + resolution:
2990 + {
2991 + integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==
2992 + }
2993 + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 }
2994 +
2995 + css-what@6.1.0:
2996 + resolution:
2997 + {
2998 + integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
2999 + }
3000 + engines: { node: ">= 6" }
3001 +
3002 + cssesc@3.0.0:
3003 + resolution:
3004 + {
3005 + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
3006 + }
3007 + engines: { node: ">=4" }
3008 + hasBin: true
3009 +
3010 + csso@5.0.5:
3011 + resolution:
3012 + {
3013 + integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==
3014 + }
3015 + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" }
3016 +
3017 + cssstyle@4.1.0:
3018 + resolution:
3019 + {
3020 + integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==
3021 + }
3022 + engines: { node: ">=18" }
3023 +
3024 + csstype@3.0.11:
3025 + resolution:
3026 + {
3027 + integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==
3028 + }
3029 +
3030 + csstype@3.1.3:
3031 + resolution:
3032 + {
3033 + integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
3034 + }
3035 +
3036 + cypress@13.14.2:
3037 + resolution:
3038 + {
3039 + integrity: sha512-lsiQrN17vHMB2fnvxIrKLAjOr9bPwsNbPZNrWf99s4u+DVmCY6U+w7O3GGG9FvP4EUVYaDu+guWeNLiUzBrqvA==
3040 + }
3041 + engines: { node: ^16.0.0 || ^18.0.0 || >=20.0.0 }
3042 + hasBin: true
3043 +
3044 + dashdash@1.14.1:
3045 + resolution:
3046 + {
3047 + integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
3048 + }
3049 + engines: { node: ">=0.10" }
3050 +
3051 + data-urls@5.0.0:
3052 + resolution:
3053 + {
3054 + integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==
3055 + }
3056 + engines: { node: ">=18" }
3057 +
3058 + date-fns-tz@2.0.1:
3059 + resolution:
3060 + {
3061 + integrity: sha512-fJCG3Pwx8HUoLhkepdsP7Z5RsucUi+ZBOxyM5d0ZZ6c4SdYustq0VMmOu6Wf7bli+yS/Jwp91TOCqn9jMcVrUA==
3062 + }
3063 + peerDependencies:
3064 + date-fns: 2.x
3065 +
3066 + date-fns@2.30.0:
3067 + resolution:
3068 + {
3069 + integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
3070 + }
3071 + engines: { node: ">=0.11" }
3072 +
3073 + dayjs@1.11.13:
3074 + resolution:
3075 + {
3076 + integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
3077 + }
3078 +
3079 + de-indent@1.0.2:
3080 + resolution:
3081 + {
3082 + integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
3083 + }
3084 +
3085 + debounce@1.2.1:
3086 + resolution:
3087 + {
3088 + integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
3089 + }
3090 +
3091 + debug@3.2.7:
3092 + resolution:
3093 + {
3094 + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
3095 + }
3096 + peerDependencies:
3097 + supports-color: "*"
3098 + peerDependenciesMeta:
3099 + supports-color:
3100 + optional: true
3101 +
3102 + debug@4.3.7:
3103 + resolution:
3104 + {
3105 + integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
3106 + }
3107 + engines: { node: ">=6.0" }
3108 + peerDependencies:
3109 + supports-color: "*"
3110 + peerDependenciesMeta:
3111 + supports-color:
3112 + optional: true
3113 +
3114 + decimal.js@10.4.3:
3115 + resolution:
3116 + {
3117 + integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
3118 + }
3119 +
3120 + decode-named-character-reference@1.0.2:
3121 + resolution:
3122 + {
3123 + integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==
3124 + }
3125 +
3126 + deep-eql@5.0.2:
3127 + resolution:
3128 + {
3129 + integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==
3130 + }
3131 + engines: { node: ">=6" }
3132 +
3133 + deep-equal@1.0.1:
3134 + resolution:
3135 + {
3136 + integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==
3137 + }
3138 +
3139 + deep-is@0.1.4:
3140 + resolution:
3141 + {
3142 + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
3143 + }
3144 +
3145 + deep-pick-omit@1.2.0:
3146 + resolution:
3147 + {
3148 + integrity: sha512-2CGvfTM2c+IP/MhdRZMpaHhTc6zIlgz3tQXJ/VGAkc7mjMrjqSU28qiI63yEcy+fcYfd/K+NNJcGRzap4M4bqw==
3149 + }
3150 +
3151 + default-browser-id@5.0.0:
3152 + resolution:
3153 + {
3154 + integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==
3155 + }
3156 + engines: { node: ">=18" }
3157 +
3158 + default-browser@5.2.1:
3159 + resolution:
3160 + {
3161 + integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==
3162 + }
3163 + engines: { node: ">=18" }
3164 +
3165 + define-data-property@1.1.4:
3166 + resolution:
3167 + {
3168 + integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
3169 + }
3170 + engines: { node: ">= 0.4" }
3171 +
3172 + define-lazy-prop@2.0.0:
3173 + resolution:
3174 + {
3175 + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
3176 + }
3177 + engines: { node: ">=8" }
3178 +
3179 + define-lazy-prop@3.0.0:
3180 + resolution:
3181 + {
3182 + integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==
3183 + }
3184 + engines: { node: ">=12" }
3185 +
3186 + defu@6.1.4:
3187 + resolution:
3188 + {
3189 + integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==
3190 + }
3191 +
3192 + delayed-stream@1.0.0:
3193 + resolution:
3194 + {
3195 + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
3196 + }
3197 + engines: { node: ">=0.4.0" }
3198 +
3199 + delegates@1.0.0:
3200 + resolution:
3201 + {
3202 + integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
3203 + }
3204 +
3205 + depd@1.1.2:
3206 + resolution:
3207 + {
3208 + integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
3209 + }
3210 + engines: { node: ">= 0.6" }
3211 +
3212 + depd@2.0.0:
3213 + resolution:
3214 + {
3215 + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
3216 + }
3217 + engines: { node: ">= 0.8" }
3218 +
3219 + dequal@2.0.3:
3220 + resolution:
3221 + {
3222 + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
3223 + }
3224 + engines: { node: ">=6" }
3225 +
3226 + destr@2.0.3:
3227 + resolution:
3228 + {
3229 + integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==
3230 + }
3231 +
3232 + destroy@1.2.0:
3233 + resolution:
3234 + {
3235 + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
3236 + }
3237 + engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 }
3238 +
3239 + detect-touch-device@1.1.6:
3240 + resolution:
3241 + {
3242 + integrity: sha512-9DYLJE05EFGI9f8m/GyJtWjw7aMZMBQM2QVy6bb7zX8uC3iorOE3Erdrk3TWCj5FVOlHTfinU0bATTE9GWYebw==
3243 + }
3244 +
3245 + devlop@1.1.0:
3246 + resolution:
3247 + {
3248 + integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==
3249 + }
3250 +
3251 + didyoumean@1.2.2:
3252 + resolution:
3253 + {
3254 + integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
3255 + }
3256 +
3257 + dir-glob@3.0.1:
3258 + resolution:
3259 + {
3260 + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
3261 + }
3262 + engines: { node: ">=8" }
3263 +
3264 + dlv@1.1.3:
3265 + resolution:
3266 + {
3267 + integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
3268 + }
3269 +
3270 + doctrine@3.0.0:
3271 + resolution:
3272 + {
3273 + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
3274 + }
3275 + engines: { node: ">=6.0.0" }
3276 +
3277 + dom-serializer@2.0.0:
3278 + resolution:
3279 + {
3280 + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
3281 + }
3282 +
3283 + domelementtype@2.3.0:
3284 + resolution:
3285 + {
3286 + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
3287 + }
3288 +
3289 + domhandler@5.0.3:
3290 + resolution:
3291 + {
3292 + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
3293 + }
3294 + engines: { node: ">= 4" }
3295 +
3296 + domutils@3.1.0:
3297 + resolution:
3298 + {
3299 + integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==
3300 + }
3301 +
3302 + dotenv@16.4.5:
3303 + resolution:
3304 + {
3305 + integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
3306 + }
3307 + engines: { node: ">=12" }
3308 +
3309 + duplexer@0.1.2:
3310 + resolution:
3311 + {
3312 + integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
3313 + }
3314 +
3315 + eastasianwidth@0.2.0:
3316 + resolution:
3317 + {
3318 + integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
3319 + }
3320 +
3321 + easy-bem@1.1.1:
3322 + resolution:
3323 + {
3324 + integrity: sha512-GJRqdiy2h+EXy6a8E6R+ubmqUM08BK0FWNq41k24fup6045biQ8NXxoXimiwegMQvFFV3t1emADdGNL1TlS61A==
3325 + }
3326 +
3327 + ecc-jsbn@0.1.2:
3328 + resolution:
3329 + {
3330 + integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
3331 + }
3332 +
3333 + echarts@5.5.1:
3334 + resolution:
3335 + {
3336 + integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==
3337 + }
3338 +
3339 + editorconfig@1.0.4:
3340 + resolution:
3341 + {
3342 + integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==
3343 + }
3344 + engines: { node: ">=14" }
3345 + hasBin: true
3346 +
3347 + ee-first@1.1.1:
3348 + resolution:
3349 + {
3350 + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
3351 + }
3352 +
3353 + electron-to-chromium@1.5.27:
3354 + resolution:
3355 + {
3356 + integrity: sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw==
3357 + }
3358 +
3359 + emoji-regex@8.0.0:
3360 + resolution:
3361 + {
3362 + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
3363 + }
3364 +
3365 + emoji-regex@9.2.2:
3366 + resolution:
3367 + {
3368 + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
3369 + }
3370 +
3371 + encodeurl@1.0.2:
3372 + resolution:
3373 + {
3374 + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
3375 + }
3376 + engines: { node: ">= 0.8" }
3377 +
3378 + end-of-stream@1.4.4:
3379 + resolution:
3380 + {
3381 + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
3382 + }
3383 +
3384 + enhanced-resolve@5.17.1:
3385 + resolution:
3386 + {
3387 + integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==
3388 + }
3389 + engines: { node: ">=10.13.0" }
3390 +
3391 + enquirer@2.4.1:
3392 + resolution:
3393 + {
3394 + integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==
3395 + }
3396 + engines: { node: ">=8.6" }
3397 +
3398 + entities@4.5.0:
3399 + resolution:
3400 + {
3401 + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
3402 + }
3403 + engines: { node: ">=0.12" }
3404 +
3405 + error-ex@1.3.2:
3406 + resolution:
3407 + {
3408 + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
3409 + }
3410 +
3411 + error-stack-parser-es@0.1.5:
3412 + resolution:
3413 + {
3414 + integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==
3415 + }
3416 +
3417 + es-define-property@1.0.0:
3418 + resolution:
3419 + {
3420 + integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
3421 + }
3422 + engines: { node: ">= 0.4" }
3423 +
3424 + es-errors@1.3.0:
3425 + resolution:
3426 + {
3427 + integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
3428 + }
3429 + engines: { node: ">= 0.4" }
3430 +
3431 + es-module-lexer@1.5.4:
3432 + resolution:
3433 + {
3434 + integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==
3435 + }
3436 +
3437 + esbuild@0.21.5:
3438 + resolution:
3439 + {
3440 + integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
3441 + }
3442 + engines: { node: ">=12" }
3443 + hasBin: true
3444 +
3445 + esbuild@0.23.1:
3446 + resolution:
3447 + {
3448 + integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==
3449 + }
3450 + engines: { node: ">=18" }
3451 + hasBin: true
3452 +
3453 + escalade@3.2.0:
3454 + resolution:
3455 + {
3456 + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
3457 + }
3458 + engines: { node: ">=6" }
3459 +
3460 + escape-html@1.0.3:
3461 + resolution:
3462 + {
3463 + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
3464 + }
3465 +
3466 + escape-string-regexp@1.0.5:
3467 + resolution:
3468 + {
3469 + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
3470 + }
3471 + engines: { node: ">=0.8.0" }
3472 +
3473 + escape-string-regexp@4.0.0:
3474 + resolution:
3475 + {
3476 + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
3477 + }
3478 + engines: { node: ">=10" }
3479 +
3480 + escape-string-regexp@5.0.0:
3481 + resolution:
3482 + {
3483 + integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
3484 + }
3485 + engines: { node: ">=12" }
3486 +
3487 + eslint-compat-utils@0.5.1:
3488 + resolution:
3489 + {
3490 + integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==
3491 + }
3492 + engines: { node: ">=12" }
3493 + peerDependencies:
3494 + eslint: ^9.11.0
3495 +
3496 + eslint-config-flat-gitignore@0.3.0:
3497 + resolution:
3498 + {
3499 + integrity: sha512-0Ndxo4qGhcewjTzw52TK06Mc00aDtHNTdeeW2JfONgDcLkRO/n/BteMRzNVpLQYxdCC/dFEilfM9fjjpGIJ9Og==
3500 + }
3501 + peerDependencies:
3502 + eslint: ^9.11.0
3503 +
3504 + eslint-config-prettier@9.1.0:
3505 + resolution:
3506 + {
3507 + integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
3508 + }
3509 + hasBin: true
3510 + peerDependencies:
3511 + eslint: ^9.11.0
3512 +
3513 + eslint-define-config@1.24.1:
3514 + resolution:
3515 + {
3516 + integrity: sha512-o36vBhPSWyIQlHoMqGhhcGmOOm2A2ccBVIdLTG/AWdm9YmjpsLpf+5ntf9LlHR6dduLREgxtGwvwPwSt7vnXJg==
3517 + }
3518 + engines: { node: ">=18.0.0", npm: ">=9.0.0", pnpm: ">= 8.6.0" }
3519 +
3520 + eslint-flat-config-utils@0.4.0:
3521 + resolution:
3522 + {
3523 + integrity: sha512-kfd5kQZC+BMO0YwTol6zxjKX1zAsk8JfSAopbKjKqmENTJcew+yBejuvccAg37cvOrN0Mh+DVbeyznuNWEjt4A==
3524 + }
3525 +
3526 + eslint-import-resolver-node@0.3.9:
3527 + resolution:
3528 + {
3529 + integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
3530 + }
3531 +
3532 + eslint-merge-processors@0.1.0:
3533 + resolution:
3534 + {
3535 + integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==
3536 + }
3537 + peerDependencies:
3538 + eslint: ^9.11.0
3539 +
3540 + eslint-plugin-antfu@2.7.0:
3541 + resolution:
3542 + {
3543 + integrity: sha512-gZM3jq3ouqaoHmUNszb1Zo2Ux7RckSvkGksjLWz9ipBYGSv1EwwBETN6AdiUXn+RpVHXTbEMPAPlXJazcA6+iA==
3544 + }
3545 + peerDependencies:
3546 + eslint: ^9.11.0
3547 +
3548 + eslint-plugin-command@0.2.5:
3549 + resolution:
3550 + {
3551 + integrity: sha512-mbCaSHD37MT8nVJnJUz2oeDfhz0wdOjfrqQVWkSpXuj3uU8m7/FK/niV2bL922af3M1js5x7Xcu3PwqWsrahfA==
3552 + }
3553 + peerDependencies:
3554 + eslint: ^9.11.0
3555 +
3556 + eslint-plugin-es-x@7.8.0:
3557 + resolution:
3558 + {
3559 + integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==
3560 + }
3561 + engines: { node: ^14.18.0 || >=16.0.0 }
3562 + peerDependencies:
3563 + eslint: ^9.11.0
3564 +
3565 + eslint-plugin-import-x@4.3.0:
3566 + resolution:
3567 + {
3568 + integrity: sha512-PxGzP7gAjF2DLeRnQtbYkkgZDg1intFyYr/XS1LgTYXUDrSXMHGkXx8++6i2eDv2jMs0jfeO6G6ykyeWxiFX7w==
3569 + }
3570 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
3571 + peerDependencies:
3572 + eslint: ^9.11.0
3573 +
3574 + eslint-plugin-jsdoc@50.2.4:
3575 + resolution:
3576 + {
3577 + integrity: sha512-020jA+dXaXdb+TML3ZJBvpPmzwbNROjnYuTYi/g6A5QEmEjhptz4oPJDKkOGMIByNxsPpdTLzSU1HYVqebOX1w==
3578 + }
3579 + engines: { node: ">=18" }
3580 + peerDependencies:
3581 + eslint: ^9.11.0
3582 +
3583 + eslint-plugin-jsonc@2.16.0:
3584 + resolution:
3585 + {
3586 + integrity: sha512-Af/ZL5mgfb8FFNleH6KlO4/VdmDuTqmM+SPnWcdoWywTetv7kq+vQe99UyQb9XO3b0OWLVuTH7H0d/PXYCMdSg==
3587 + }
3588 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
3589 + peerDependencies:
3590 + eslint: ^9.11.0
3591 +
3592 + eslint-plugin-n@17.10.3:
3593 + resolution:
3594 + {
3595 + integrity: sha512-ySZBfKe49nQZWR1yFaA0v/GsH6Fgp8ah6XV0WDz6CN8WO0ek4McMzb7A2xnf4DCYV43frjCygvb9f/wx7UUxRw==
3596 + }
3597 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
3598 + peerDependencies:
3599 + eslint: ^9.11.0
3600 +
3601 + eslint-plugin-no-only-tests@3.3.0:
3602 + resolution:
3603 + {
3604 + integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==
3605 + }
3606 + engines: { node: ">=5.0.0" }
3607 +
3608 + eslint-plugin-perfectionist@3.6.0:
3609 + resolution:
3610 + {
3611 + integrity: sha512-sA6ljy6dL/9cM5ruZ/pMqRVt0FQ4Z7mbQWlBYpyX9941LVfm65d2jl2k1ZbWD3ud9Wm+/NKgOvRnAatsKhMJbA==
3612 + }
3613 + engines: { node: ^18.0.0 || >=20.0.0 }
3614 + peerDependencies:
3615 + astro-eslint-parser: ^1.0.2
3616 + eslint: ^9.11.0
3617 + svelte: ">=3.0.0"
3618 + svelte-eslint-parser: ^0.41.1
3619 + vue-eslint-parser: ">=9.0.0"
3620 + peerDependenciesMeta:
3621 + astro-eslint-parser:
3622 + optional: true
3623 + svelte:
3624 + optional: true
3625 + svelte-eslint-parser:
3626 + optional: true
3627 + vue-eslint-parser:
3628 + optional: true
3629 +
3630 + eslint-plugin-prettier@5.2.1:
3631 + resolution:
3632 + {
3633 + integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==
3634 + }
3635 + engines: { node: ^14.18.0 || >=16.0.0 }
3636 + peerDependencies:
3637 + "@types/eslint": ">=8.0.0"
3638 + eslint: ^9.11.0
3639 + eslint-config-prettier: "*"
3640 + prettier: ">=3.0.0"
3641 + peerDependenciesMeta:
3642 + "@types/eslint":
3643 + optional: true
3644 + eslint-config-prettier:
3645 + optional: true
3646 +
3647 + eslint-plugin-regexp@2.6.0:
3648 + resolution:
3649 + {
3650 + integrity: sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==
3651 + }
3652 + engines: { node: ^18 || >=20 }
3653 + peerDependencies:
3654 + eslint: ^9.11.0
3655 +
3656 + eslint-plugin-toml@0.11.1:
3657 + resolution:
3658 + {
3659 + integrity: sha512-Y1WuMSzfZpeMIrmlP1nUh3kT8p96mThIq4NnHrYUhg10IKQgGfBZjAWnrg9fBqguiX4iFps/x/3Hb5TxBisfdw==
3660 + }
3661 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
3662 + peerDependencies:
3663 + eslint: ^9.11.0
3664 +
3665 + eslint-plugin-unicorn@55.0.0:
3666 + resolution:
3667 + {
3668 + integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==
3669 + }
3670 + engines: { node: ">=18.18" }
3671 + peerDependencies:
3672 + eslint: ^9.11.0
3673 +
3674 + eslint-plugin-unused-imports@4.1.4:
3675 + resolution:
3676 + {
3677 + integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==
3678 + }
3679 + peerDependencies:
3680 + "@typescript-eslint/eslint-plugin": ^8.6.0
3681 + eslint: ^9.11.0
3682 + peerDependenciesMeta:
3683 + "@typescript-eslint/eslint-plugin":
3684 + optional: true
3685 +
3686 + eslint-plugin-vue@9.28.0:
3687 + resolution:
3688 + {
3689 + integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==
3690 + }
3691 + engines: { node: ^14.17.0 || >=16.0.0 }
3692 + peerDependencies:
3693 + eslint: ^9.11.0
3694 +
3695 + eslint-plugin-yml@1.14.0:
3696 + resolution:
3697 + {
3698 + integrity: sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==
3699 + }
3700 + engines: { node: ^14.17.0 || >=16.0.0 }
3701 + peerDependencies:
3702 + eslint: ^9.11.0
3703 +
3704 + eslint-processor-vue-blocks@0.1.2:
3705 + resolution:
3706 + {
3707 + integrity: sha512-PfpJ4uKHnqeL/fXUnzYkOax3aIenlwewXRX8jFinA1a2yCFnLgMuiH3xvCgvHHUlV2xJWQHbCTdiJWGwb3NqpQ==
3708 + }
3709 + peerDependencies:
3710 + "@vue/compiler-sfc": ^3.3.0
3711 + eslint: ^9.11.0
3712 +
3713 + eslint-scope@7.2.2:
3714 + resolution:
3715 + {
3716 + integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
3717 + }
3718 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
3719 +
3720 + eslint-scope@8.0.2:
3721 + resolution:
3722 + {
3723 + integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==
3724 + }
3725 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
3726 +
3727 + eslint-visitor-keys@3.4.3:
3728 + resolution:
3729 + {
3730 + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
3731 + }
3732 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
3733 +
3734 + eslint-visitor-keys@4.0.0:
3735 + resolution:
3736 + {
3737 + integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
3738 + }
3739 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
3740 +
3741 + eslint@9.11.0:
3742 + resolution:
3743 + {
3744 + integrity: sha512-yVS6XODx+tMFMDFcG4+Hlh+qG7RM6cCJXtQhCKLSsr3XkLvWggHjCqjfh0XsPPnt1c56oaT6PMgW9XWQQjdHXA==
3745 + }
3746 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
3747 + hasBin: true
3748 + peerDependencies:
3749 + jiti: "*"
3750 + peerDependenciesMeta:
3751 + jiti:
3752 + optional: true
3753 +
3754 + espree@10.1.0:
3755 + resolution:
3756 + {
3757 + integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==
3758 + }
3759 + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 }
3760 +
3761 + espree@9.6.1:
3762 + resolution:
3763 + {
3764 + integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
3765 + }
3766 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
3767 +
3768 + esquery@1.6.0:
3769 + resolution:
3770 + {
3771 + integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
3772 + }
3773 + engines: { node: ">=0.10" }
3774 +
3775 + esrecurse@4.3.0:
3776 + resolution:
3777 + {
3778 + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
3779 + }
3780 + engines: { node: ">=4.0" }
3781 +
3782 + estraverse@5.3.0:
3783 + resolution:
3784 + {
3785 + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
3786 + }
3787 + engines: { node: ">=4.0" }
3788 +
3789 + estree-walker@2.0.2:
3790 + resolution:
3791 + {
3792 + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
3793 + }
3794 +
3795 + estree-walker@3.0.3:
3796 + resolution:
3797 + {
3798 + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==
3799 + }
3800 +
3801 + esutils@2.0.3:
3802 + resolution:
3803 + {
3804 + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
3805 + }
3806 + engines: { node: ">=0.10.0" }
3807 +
3808 + event-stream@3.3.4:
3809 + resolution:
3810 + {
3811 + integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==
3812 + }
3813 +
3814 + eventemitter2@6.4.7:
3815 + resolution:
3816 + {
3817 + integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==
3818 + }
3819 +
3820 + evtd@0.2.4:
3821 + resolution:
3822 + {
3823 + integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==
3824 + }
3825 +
3826 + execa@4.1.0:
3827 + resolution:
3828 + {
3829 + integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
3830 + }
3831 + engines: { node: ">=10" }
3832 +
3833 + execa@5.1.1:
3834 + resolution:
3835 + {
3836 + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
3837 + }
3838 + engines: { node: ">=10" }
3839 +
3840 + execa@8.0.1:
3841 + resolution:
3842 + {
3843 + integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==
3844 + }
3845 + engines: { node: ">=16.17" }
3846 +
3847 + executable@4.1.1:
3848 + resolution:
3849 + {
3850 + integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
3851 + }
3852 + engines: { node: ">=4" }
3853 +
3854 + extend@3.0.2:
3855 + resolution:
3856 + {
3857 + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
3858 + }
3859 +
3860 + extract-zip@2.0.1:
3861 + resolution:
3862 + {
3863 + integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
3864 + }
3865 + engines: { node: ">= 10.17.0" }
3866 + hasBin: true
3867 +
3868 + extsprintf@1.3.0:
3869 + resolution:
3870 + {
3871 + integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
3872 + }
3873 + engines: { "0": node >=0.6.0 }
3874 +
3875 + fast-deep-equal@3.1.3:
3876 + resolution:
3877 + {
3878 + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
3879 + }
3880 +
3881 + fast-diff@1.3.0:
3882 + resolution:
3883 + {
3884 + integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
3885 + }
3886 +
3887 + fast-glob@3.3.2:
3888 + resolution:
3889 + {
3890 + integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
3891 + }
3892 + engines: { node: ">=8.6.0" }
3893 +
3894 + fast-json-stable-stringify@2.1.0:
3895 + resolution:
3896 + {
3897 + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
3898 + }
3899 +
3900 + fast-levenshtein@2.0.6:
3901 + resolution:
3902 + {
3903 + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
3904 + }
3905 +
3906 + fastq@1.17.1:
3907 + resolution:
3908 + {
3909 + integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
3910 + }
3911 +
3912 + fd-slicer@1.1.0:
3913 + resolution:
3914 + {
3915 + integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
3916 + }
3917 +
3918 + figures@3.2.0:
3919 + resolution:
3920 + {
3921 + integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
3922 + }
3923 + engines: { node: ">=8" }
3924 +
3925 + file-entry-cache@8.0.0:
3926 + resolution:
3927 + {
3928 + integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
3929 + }
3930 + engines: { node: ">=16.0.0" }
3931 +
3932 + file-saver@2.0.5:
3933 + resolution:
3934 + {
3935 + integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==
3936 + }
3937 +
3938 + fill-range@7.1.1:
3939 + resolution:
3940 + {
3941 + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
3942 + }
3943 + engines: { node: ">=8" }
3944 +
3945 + find-up-simple@1.0.0:
3946 + resolution:
3947 + {
3948 + integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==
3949 + }
3950 + engines: { node: ">=18" }
3951 +
3952 + find-up@4.1.0:
3953 + resolution:
3954 + {
3955 + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
3956 + }
3957 + engines: { node: ">=8" }
3958 +
3959 + find-up@5.0.0:
3960 + resolution:
3961 + {
3962 + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
3963 + }
3964 + engines: { node: ">=10" }
3965 +
3966 + flat-cache@4.0.1:
3967 + resolution:
3968 + {
3969 + integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
3970 + }
3971 + engines: { node: ">=16" }
3972 +
3973 + flatted@3.3.1:
3974 + resolution:
3975 + {
3976 + integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
3977 + }
3978 +
3979 + flourite@1.3.0:
3980 + resolution:
3981 + {
3982 + integrity: sha512-iuhWXuX07QwHMnJ1Irh4sD1bk/QFMHg8jVgWsjSAqoIqgIyJtRPnUNKyZAPXrw7pQkDvxb5AIz2KPihEoyVcqw==
3983 + }
3984 + engines: { node: ">=16" }
3985 +
3986 + follow-redirects@1.15.9:
3987 + resolution:
3988 + {
3989 + integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
3990 + }
3991 + engines: { node: ">=4.0" }
3992 + peerDependencies:
3993 + debug: "*"
3994 + peerDependenciesMeta:
3995 + debug:
3996 + optional: true
3997 +
3998 + foreground-child@3.3.0:
3999 + resolution:
4000 + {
4001 + integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
4002 + }
4003 + engines: { node: ">=14" }
4004 +
4005 + forever-agent@0.6.1:
4006 + resolution:
4007 + {
4008 + integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
4009 + }
4010 +
4011 + form-data@4.0.0:
4012 + resolution:
4013 + {
4014 + integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
4015 + }
4016 + engines: { node: ">= 6" }
4017 +
4018 + fraction.js@4.3.7:
4019 + resolution:
4020 + {
4021 + integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
4022 + }
4023 +
4024 + fresh@0.5.2:
4025 + resolution:
4026 + {
4027 + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
4028 + }
4029 + engines: { node: ">= 0.6" }
4030 +
4031 + from@0.1.7:
4032 + resolution:
4033 + {
4034 + integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==
4035 + }
4036 +
4037 + fs-extra@11.2.0:
4038 + resolution:
4039 + {
4040 + integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
4041 + }
4042 + engines: { node: ">=14.14" }
4043 +
4044 + fs-extra@9.1.0:
4045 + resolution:
4046 + {
4047 + integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
4048 + }
4049 + engines: { node: ">=10" }
4050 +
4051 + fs-minipass@2.1.0:
4052 + resolution:
4053 + {
4054 + integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
4055 + }
4056 + engines: { node: ">= 8" }
4057 +
4058 + fs.realpath@1.0.0:
4059 + resolution:
4060 + {
4061 + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
4062 + }
4063 +
4064 + fsevents@2.3.3:
4065 + resolution:
4066 + {
4067 + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
4068 + }
4069 + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
4070 + os: [darwin]
4071 +
4072 + function-bind@1.1.2:
4073 + resolution:
4074 + {
4075 + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
4076 + }
4077 +
4078 + gensync@1.0.0-beta.2:
4079 + resolution:
4080 + {
4081 + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
4082 + }
4083 + engines: { node: ">=6.9.0" }
4084 +
4085 + get-caller-file@2.0.5:
4086 + resolution:
4087 + {
4088 + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
4089 + }
4090 + engines: { node: 6.* || 8.* || >= 10.* }
4091 +
4092 + get-func-name@2.0.2:
4093 + resolution:
4094 + {
4095 + integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
4096 + }
4097 +
4098 + get-intrinsic@1.2.4:
4099 + resolution:
4100 + {
4101 + integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
4102 + }
4103 + engines: { node: ">= 0.4" }
4104 +
4105 + get-stream@5.2.0:
4106 + resolution:
4107 + {
4108 + integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
4109 + }
4110 + engines: { node: ">=8" }
4111 +
4112 + get-stream@6.0.1:
4113 + resolution:
4114 + {
4115 + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
4116 + }
4117 + engines: { node: ">=10" }
4118 +
4119 + get-stream@8.0.1:
4120 + resolution:
4121 + {
4122 + integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
4123 + }
4124 + engines: { node: ">=16" }
4125 +
4126 + get-tsconfig@4.8.1:
4127 + resolution:
4128 + {
4129 + integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==
4130 + }
4131 +
4132 + getos@3.2.1:
4133 + resolution:
4134 + {
4135 + integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==
4136 + }
4137 +
4138 + getpass@0.1.7:
4139 + resolution:
4140 + {
4141 + integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
4142 + }
4143 +
4144 + giget@1.2.3:
4145 + resolution:
4146 + {
4147 + integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==
4148 + }
4149 + hasBin: true
4150 +
4151 + glob-parent@5.1.2:
4152 + resolution:
4153 + {
4154 + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
4155 + }
4156 + engines: { node: ">= 6" }
4157 +
4158 + glob-parent@6.0.2:
4159 + resolution:
4160 + {
4161 + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
4162 + }
4163 + engines: { node: ">=10.13.0" }
4164 +
4165 + glob@10.4.5:
4166 + resolution:
4167 + {
4168 + integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
4169 + }
4170 + hasBin: true
4171 +
4172 + glob@7.2.3:
4173 + resolution:
4174 + {
4175 + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
4176 + }
4177 + deprecated: Glob versions prior to v9 are no longer supported
4178 +
4179 + global-dirs@3.0.1:
4180 + resolution:
4181 + {
4182 + integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==
4183 + }
4184 + engines: { node: ">=10" }
4185 +
4186 + globals@11.12.0:
4187 + resolution:
4188 + {
4189 + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
4190 + }
4191 + engines: { node: ">=4" }
4192 +
4193 + globals@13.24.0:
4194 + resolution:
4195 + {
4196 + integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
4197 + }
4198 + engines: { node: ">=8" }
4199 +
4200 + globals@14.0.0:
4201 + resolution:
4202 + {
4203 + integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
4204 + }
4205 + engines: { node: ">=18" }
4206 +
4207 + globals@15.9.0:
4208 + resolution:
4209 + {
4210 + integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==
4211 + }
4212 + engines: { node: ">=18" }
4213 +
4214 + globby@11.1.0:
4215 + resolution:
4216 + {
4217 + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
4218 + }
4219 + engines: { node: ">=10" }
4220 +
4221 + globby@14.0.2:
4222 + resolution:
4223 + {
4224 + integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==
4225 + }
4226 + engines: { node: ">=18" }
4227 +
4228 + gopd@1.0.1:
4229 + resolution:
4230 + {
4231 + integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
4232 + }
4233 +
4234 + graceful-fs@4.2.11:
4235 + resolution:
4236 + {
4237 + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
4238 + }
4239 +
4240 + graphemer@1.4.0:
4241 + resolution:
4242 + {
4243 + integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
4244 + }
4245 +
4246 + has-flag@3.0.0:
4247 + resolution:
4248 + {
4249 + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
4250 + }
4251 + engines: { node: ">=4" }
4252 +
4253 + has-flag@4.0.0:
4254 + resolution:
4255 + {
4256 + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
4257 + }
4258 + engines: { node: ">=8" }
4259 +
4260 + has-property-descriptors@1.0.2:
4261 + resolution:
4262 + {
4263 + integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
4264 + }
4265 +
4266 + has-proto@1.0.3:
4267 + resolution:
4268 + {
4269 + integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
4270 + }
4271 + engines: { node: ">= 0.4" }
4272 +
4273 + has-symbols@1.0.3:
4274 + resolution:
4275 + {
4276 + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
4277 + }
4278 + engines: { node: ">= 0.4" }
4279 +
4280 + has-tostringtag@1.0.2:
4281 + resolution:
4282 + {
4283 + integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
4284 + }
4285 + engines: { node: ">= 0.4" }
4286 +
4287 + hash-sum@2.0.0:
4288 + resolution:
4289 + {
4290 + integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
4291 + }
4292 +
4293 + hasown@2.0.2:
4294 + resolution:
4295 + {
4296 + integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
4297 + }
4298 + engines: { node: ">= 0.4" }
4299 +
4300 + hast-util-to-html@9.0.3:
4301 + resolution:
4302 + {
4303 + integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==
4304 + }
4305 +
4306 + hast-util-whitespace@3.0.0:
4307 + resolution:
4308 + {
4309 + integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==
4310 + }
4311 +
4312 + he@1.2.0:
4313 + resolution:
4314 + {
4315 + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
4316 + }
4317 + hasBin: true
4318 +
4319 + highlight-words-core@1.2.2:
4320 + resolution:
4321 + {
4322 + integrity: sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==
4323 + }
4324 +
4325 + highlight.js@11.10.0:
4326 + resolution:
4327 + {
4328 + integrity: sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==
4329 + }
4330 + engines: { node: ">=12.0.0" }
4331 +
4332 + hookable@5.5.3:
4333 + resolution:
4334 + {
4335 + integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==
4336 + }
4337 +
4338 + hosted-git-info@2.8.9:
4339 + resolution:
4340 + {
4341 + integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
4342 + }
4343 +
4344 + html-encoding-sniffer@4.0.0:
4345 + resolution:
4346 + {
4347 + integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==
4348 + }
4349 + engines: { node: ">=18" }
4350 +
4351 + html-entities@2.5.2:
4352 + resolution:
4353 + {
4354 + integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==
4355 + }
4356 +
4357 + html-tags@3.3.1:
4358 + resolution:
4359 + {
4360 + integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
4361 + }
4362 + engines: { node: ">=8" }
4363 +
4364 + html-void-elements@3.0.0:
4365 + resolution:
4366 + {
4367 + integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==
4368 + }
4369 +
4370 + http-assert@1.5.0:
4371 + resolution:
4372 + {
4373 + integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==
4374 + }
4375 + engines: { node: ">= 0.8" }
4376 +
4377 + http-errors@1.6.3:
4378 + resolution:
4379 + {
4380 + integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
4381 + }
4382 + engines: { node: ">= 0.6" }
4383 +
4384 + http-errors@1.8.1:
4385 + resolution:
4386 + {
4387 + integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
4388 + }
4389 + engines: { node: ">= 0.6" }
4390 +
4391 + http-errors@2.0.0:
4392 + resolution:
4393 + {
4394 + integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
4395 + }
4396 + engines: { node: ">= 0.8" }
4397 +
4398 + http-proxy-agent@7.0.2:
4399 + resolution:
4400 + {
4401 + integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
4402 + }
4403 + engines: { node: ">= 14" }
4404 +
4405 + http-signature@1.4.0:
4406 + resolution:
4407 + {
4408 + integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==
4409 + }
4410 + engines: { node: ">=0.10" }
4411 +
4412 + https-proxy-agent@7.0.5:
4413 + resolution:
4414 + {
4415 + integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==
4416 + }
4417 + engines: { node: ">= 14" }
4418 +
4419 + human-signals@1.1.1:
4420 + resolution:
4421 + {
4422 + integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
4423 + }
4424 + engines: { node: ">=8.12.0" }
4425 +
4426 + human-signals@2.1.0:
4427 + resolution:
4428 + {
4429 + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
4430 + }
4431 + engines: { node: ">=10.17.0" }
4432 +
4433 + human-signals@5.0.0:
4434 + resolution:
4435 + {
4436 + integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
4437 + }
4438 + engines: { node: ">=16.17.0" }
4439 +
4440 + iconv-lite@0.6.3:
4441 + resolution:
4442 + {
4443 + integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
4444 + }
4445 + engines: { node: ">=0.10.0" }
4446 +
4447 + ieee754@1.2.1:
4448 + resolution:
4449 + {
4450 + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
4451 + }
4452 +
4453 + ignore@5.3.2:
4454 + resolution:
4455 + {
4456 + integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
4457 + }
4458 + engines: { node: ">= 4" }
4459 +
4460 + immutable@4.3.7:
4461 + resolution:
4462 + {
4463 + integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
4464 + }
4465 +
4466 + import-fresh@3.3.0:
4467 + resolution:
4468 + {
4469 + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
4470 + }
4471 + engines: { node: ">=6" }
4472 +
4473 + import-from-esm@1.3.4:
4474 + resolution:
4475 + {
4476 + integrity: sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==
4477 + }
4478 + engines: { node: ">=16.20" }
4479 +
4480 + import-meta-resolve@4.1.0:
4481 + resolution:
4482 + {
4483 + integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==
4484 + }
4485 +
4486 + importx@0.4.4:
4487 + resolution:
4488 + {
4489 + integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==
4490 + }
4491 +
4492 + imurmurhash@0.1.4:
4493 + resolution:
4494 + {
4495 + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
4496 + }
4497 + engines: { node: ">=0.8.19" }
4498 +
4499 + indent-string@4.0.0:
4500 + resolution:
4501 + {
4502 + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
4503 + }
4504 + engines: { node: ">=8" }
4505 +
4506 + inflight@1.0.6:
4507 + resolution:
4508 + {
4509 + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
4510 + }
4511 + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
4512 +
4513 + inherits@2.0.3:
4514 + resolution:
4515 + {
4516 + integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
4517 + }
4518 +
4519 + inherits@2.0.4:
4520 + resolution:
4521 + {
4522 + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
4523 + }
4524 +
4525 + ini@1.3.8:
4526 + resolution:
4527 + {
4528 + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
4529 + }
4530 +
4531 + ini@2.0.0:
4532 + resolution:
4533 + {
4534 + integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
4535 + }
4536 + engines: { node: ">=10" }
4537 +
4538 + is-arrayish@0.2.1:
4539 + resolution:
4540 + {
4541 + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
4542 + }
4543 +
4544 + is-binary-path@2.1.0:
4545 + resolution:
4546 + {
4547 + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
4548 + }
4549 + engines: { node: ">=8" }
4550 +
4551 + is-builtin-module@3.2.1:
4552 + resolution:
4553 + {
4554 + integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==
4555 + }
4556 + engines: { node: ">=6" }
4557 +
4558 + is-ci@3.0.1:
4559 + resolution:
4560 + {
4561 + integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==
4562 + }
4563 + hasBin: true
4564 +
4565 + is-core-module@2.15.1:
4566 + resolution:
4567 + {
4568 + integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
4569 + }
4570 + engines: { node: ">= 0.4" }
4571 +
4572 + is-docker@2.2.1:
4573 + resolution:
4574 + {
4575 + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
4576 + }
4577 + engines: { node: ">=8" }
4578 + hasBin: true
4579 +
4580 + is-docker@3.0.0:
4581 + resolution:
4582 + {
4583 + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==
4584 + }
4585 + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
4586 + hasBin: true
4587 +
4588 + is-extglob@2.1.1:
4589 + resolution:
4590 + {
4591 + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
4592 + }
4593 + engines: { node: ">=0.10.0" }
4594 +
4595 + is-fullwidth-code-point@3.0.0:
4596 + resolution:
4597 + {
4598 + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
4599 + }
4600 + engines: { node: ">=8" }
4601 +
4602 + is-generator-function@1.0.10:
4603 + resolution:
4604 + {
4605 + integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
4606 + }
4607 + engines: { node: ">= 0.4" }
4608 +
4609 + is-glob@4.0.3:
4610 + resolution:
4611 + {
4612 + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
4613 + }
4614 + engines: { node: ">=0.10.0" }
4615 +
4616 + is-inside-container@1.0.0:
4617 + resolution:
4618 + {
4619 + integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==
4620 + }
4621 + engines: { node: ">=14.16" }
4622 + hasBin: true
4623 +
4624 + is-installed-globally@0.4.0:
4625 + resolution:
4626 + {
4627 + integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
4628 + }
4629 + engines: { node: ">=10" }
4630 +
4631 + is-number@7.0.0:
4632 + resolution:
4633 + {
4634 + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
4635 + }
4636 + engines: { node: ">=0.12.0" }
4637 +
4638 + is-path-inside@3.0.3:
4639 + resolution:
4640 + {
4641 + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
4642 + }
4643 + engines: { node: ">=8" }
4644 +
4645 + is-potential-custom-element-name@1.0.1:
4646 + resolution:
4647 + {
4648 + integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
4649 + }
4650 +
4651 + is-stream@2.0.1:
4652 + resolution:
4653 + {
4654 + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
4655 + }
4656 + engines: { node: ">=8" }
4657 +
4658 + is-stream@3.0.0:
4659 + resolution:
4660 + {
4661 + integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
4662 + }
4663 + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
4664 +
4665 + is-typedarray@1.0.0:
4666 + resolution:
4667 + {
4668 + integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
4669 + }
4670 +
4671 + is-unicode-supported@0.1.0:
4672 + resolution:
4673 + {
4674 + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
4675 + }
4676 + engines: { node: ">=10" }
4677 +
4678 + is-what@4.1.16:
4679 + resolution:
4680 + {
4681 + integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==
4682 + }
4683 + engines: { node: ">=12.13" }
4684 +
4685 + is-wsl@2.2.0:
4686 + resolution:
4687 + {
4688 + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
4689 + }
4690 + engines: { node: ">=8" }
4691 +
4692 + is-wsl@3.1.0:
4693 + resolution:
4694 + {
4695 + integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==
4696 + }
4697 + engines: { node: ">=16" }
4698 +
4699 + isexe@2.0.0:
4700 + resolution:
4701 + {
4702 + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
4703 + }
4704 +
4705 + isstream@0.1.2:
4706 + resolution:
4707 + {
4708 + integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
4709 + }
4710 +
4711 + jackspeak@3.4.3:
4712 + resolution:
4713 + {
4714 + integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
4715 + }
4716 +
4717 + jiti@1.21.6:
4718 + resolution:
4719 + {
4720 + integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==
4721 + }
4722 + hasBin: true
4723 +
4724 + jiti@2.0.0-beta.3:
4725 + resolution:
4726 + {
4727 + integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==
4728 + }
4729 + hasBin: true
4730 +
4731 + joi@17.13.3:
4732 + resolution:
4733 + {
4734 + integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==
4735 + }
4736 +
4737 + jose@5.9.3:
4738 + resolution:
4739 + {
4740 + integrity: sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==
4741 + }
4742 +
4743 + js-beautify@1.15.1:
4744 + resolution:
4745 + {
4746 + integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==
4747 + }
4748 + engines: { node: ">=14" }
4749 + hasBin: true
4750 +
4751 + js-cookie@3.0.5:
4752 + resolution:
4753 + {
4754 + integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
4755 + }
4756 + engines: { node: ">=14" }
4757 +
4758 + js-md5@0.8.3:
4759 + resolution:
4760 + {
4761 + integrity: sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==
4762 + }
4763 +
4764 + js-tokens@4.0.0:
4765 + resolution:
4766 + {
4767 + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
4768 + }
4769 +
4770 + js-tokens@9.0.0:
4771 + resolution:
4772 + {
4773 + integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==
4774 + }
4775 +
4776 + js-yaml@4.1.0:
4777 + resolution:
4778 + {
4779 + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
4780 + }
4781 + hasBin: true
4782 +
4783 + jsbn@0.1.1:
4784 + resolution:
4785 + {
4786 + integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
4787 + }
4788 +
4789 + jsdoc-type-pratt-parser@4.1.0:
4790 + resolution:
4791 + {
4792 + integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==
4793 + }
4794 + engines: { node: ">=12.0.0" }
4795 +
4796 + jsdom@25.0.1:
4797 + resolution:
4798 + {
4799 + integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==
4800 + }
4801 + engines: { node: ">=18" }
4802 + peerDependencies:
4803 + canvas: ^2.11.2
4804 + peerDependenciesMeta:
4805 + canvas:
4806 + optional: true
4807 +
4808 + jsesc@0.5.0:
4809 + resolution:
4810 + {
4811 + integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
4812 + }
4813 + hasBin: true
4814 +
4815 + jsesc@2.5.2:
4816 + resolution:
4817 + {
4818 + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
4819 + }
4820 + engines: { node: ">=4" }
4821 + hasBin: true
4822 +
4823 + jsesc@3.0.2:
4824 + resolution:
4825 + {
4826 + integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
4827 + }
4828 + engines: { node: ">=6" }
4829 + hasBin: true
4830 +
4831 + json-buffer@3.0.1:
4832 + resolution:
4833 + {
4834 + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
4835 + }
4836 +
4837 + json-parse-even-better-errors@2.3.1:
4838 + resolution:
4839 + {
4840 + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
4841 + }
4842 +
4843 + json-parse-even-better-errors@3.0.2:
4844 + resolution:
4845 + {
4846 + integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==
4847 + }
4848 + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
4849 +
4850 + json-schema-traverse@0.4.1:
4851 + resolution:
4852 + {
4853 + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
4854 + }
4855 +
4856 + json-schema@0.4.0:
4857 + resolution:
4858 + {
4859 + integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
4860 + }
4861 +
4862 + json-stable-stringify-without-jsonify@1.0.1:
4863 + resolution:
4864 + {
4865 + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
4866 + }
4867 +
4868 + json-stringify-safe@5.0.1:
4869 + resolution:
4870 + {
4871 + integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
4872 + }
4873 +
4874 + json5@2.2.3:
4875 + resolution:
4876 + {
4877 + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
4878 + }
4879 + engines: { node: ">=6" }
4880 + hasBin: true
4881 +
4882 + jsonc-eslint-parser@2.4.0:
4883 + resolution:
4884 + {
4885 + integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==
4886 + }
4887 + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
4888 +
4889 + jsonfile@6.1.0:
4890 + resolution:
4891 + {
4892 + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
4893 + }
4894 +
4895 + jsprim@2.0.2:
4896 + resolution:
4897 + {
4898 + integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==
4899 + }
4900 + engines: { "0": node >=0.6.0 }
4901 +
4902 + keygrip@1.1.0:
4903 + resolution:
4904 + {
4905 + integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==
4906 + }
4907 + engines: { node: ">= 0.6" }
4908 +
4909 + keyv@4.5.4:
4910 + resolution:
4911 + {
4912 + integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
4913 + }
4914 +
4915 + klona@2.0.6:
4916 + resolution:
4917 + {
4918 + integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==
4919 + }
4920 + engines: { node: ">= 8" }
4921 +
4922 + knitwork@1.1.0:
4923 + resolution:
4924 + {
4925 + integrity: sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw==
4926 + }
4927 +
4928 + koa-compose@4.1.0:
4929 + resolution:
4930 + {
4931 + integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==
4932 + }
4933 +
4934 + koa-convert@2.0.0:
4935 + resolution:
4936 + {
4937 + integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==
4938 + }
4939 + engines: { node: ">= 10" }
4940 +
4941 + koa-send@5.0.1:
4942 + resolution:
4943 + {
4944 + integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==
4945 + }
4946 + engines: { node: ">= 8" }
4947 +
4948 + koa-static@5.0.0:
4949 + resolution:
4950 + {
4951 + integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==
4952 + }
4953 + engines: { node: ">= 7.6.0" }
4954 +
4955 + koa@2.15.3:
4956 + resolution:
4957 + {
4958 + integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==
4959 + }
4960 + engines: { node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4 }
4961 +
4962 + kolorist@1.8.0:
4963 + resolution:
4964 + {
4965 + integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==
4966 + }
4967 +
4968 + lazy-ass@1.6.0:
4969 + resolution:
4970 + {
4971 + integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==
4972 + }
4973 + engines: { node: "> 0.8" }
4974 +
4975 + levn@0.4.1:
4976 + resolution:
4977 + {
4978 + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
4979 + }
4980 + engines: { node: ">= 0.8.0" }
4981 +
4982 + lilconfig@2.1.0:
4983 + resolution:
4984 + {
4985 + integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
4986 + }
4987 + engines: { node: ">=10" }
4988 +
4989 + lilconfig@3.1.2:
4990 + resolution:
4991 + {
4992 + integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==
4993 + }
4994 + engines: { node: ">=14" }
4995 +
4996 + lines-and-columns@1.2.4:
4997 + resolution:
4998 + {
4999 + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==

This file is too large to show in full.

frontend/src/api/endpoints/incidentManagement.ts
+66 -28
@@ -4,6 +4,7 @@ import type {
4 AlertComment,
5 AlertContext,
6 AlertDetails,
7 + AlertsFilter,
8 AlertStatus,
9 AlertTag,
10 AlertTimeline
@@ -12,24 +13,21 @@ import type { Case, CaseDataStore, CasePayload, CaseStatus } from "@/types/incid
13 import type { IncidentNotification, IncidentNotificationPayload } from "@/types/incidentManagement/notifications.d"
14 import type { SourceConfiguration, SourceName } from "@/types/incidentManagement/sources.d"
15 import type { KeysOfUnion, UnionToIntersection } from "type-fest"
16 +import _castArray from "lodash/castArray"
17 import { HttpClient } from "../httpClient"
18
17 -export type AlertsFilter =
18 - | { status: AlertStatus }
19 - | { assetName: string }
20 - | { assignedTo: string }
21 - | { tag: string }
22 - | { title: string }
23 - | { customerCode: string }
24 - | { source: string }
25 -
19 +export type AlertsListFilterValue = string | string[] | AlertStatus | null
20 export type AlertsFilterTypes = KeysOfUnion<AlertsFilter>
21
22 export interface AlertsQuery {
23 page: number
24 pageSize: number
25 sort: "asc" | "desc"
32 - filters: Partial<UnionToIntersection<AlertsFilter>>
26 + filter: Partial<UnionToIntersection<AlertsFilter>>
27 + filters: {
28 + type: AlertsFilterTypes
29 + value: AlertsListFilterValue
30 + }[]
31 }
32
33 export type CasesFilter =
@@ -95,35 +93,75 @@ export default {
93 getAlertsList(args: Partial<AlertsQuery>, signal?: AbortSignal) {
94 let url = `/incidents/db_operations/alerts`
95
98 - if (args?.filters?.status) {
99 - url = `/incidents/db_operations/alerts/status/${args.filters.status}`
96 + if (args?.filter?.status) {
97 + url = `/incidents/db_operations/alerts/status/${args.filter.status}`
98 + }
99 + if (args?.filter?.assetName) {
100 + url = `/incidents/db_operations/alerts/asset/${args.filter.assetName}`
101 + }
102 + if (args?.filter?.assignedTo) {
103 + url = `/incidents/db_operations/alerts/assigned-to/${args.filter.assignedTo}`
104 }
101 - if (args?.filters?.assetName) {
102 - url = `/incidents/db_operations/alerts/asset/${args.filters.assetName}`
105 + if (args?.filter?.tag) {
106 + url = `/incidents/db_operations/alert/tag/${_castArray(args.filter.tag).join(",")}`
107 }
104 - if (args?.filters?.assignedTo) {
105 - url = `/incidents/db_operations/alerts/assigned-to/${args.filters.assignedTo}`
108 + if (args?.filter?.title) {
109 + url = `/incidents/db_operations/alerts/title/${args.filter.title}`
110 }
107 - if (args?.filters?.tag) {
108 - url = `/incidents/db_operations/alert/tag/${args.filters.tag}`
111 + if (args?.filter?.customerCode) {
112 + url = `/incidents/db_operations/alerts/customer/${args.filter.customerCode}`
113 }
110 - if (args?.filters?.title) {
111 - url = `/incidents/db_operations/alerts/title/${args.filters.title}`
114 + if (args?.filter?.source) {
115 + url = `/incidents/db_operations/alerts/source/${args.filter.source}`
116 }
113 - if (args?.filters?.customerCode) {
114 - url = `/incidents/db_operations/alerts/customer/${args.filters.customerCode}`
117 +
118 + const params: any = {
119 + page: args.page || 1,
120 + page_size: args.pageSize || 25,
121 + order: args.sort || "desc"
122 }
116 - if (args?.filters?.source) {
117 - url = `/incidents/db_operations/alerts/source/${args.filters.source}`
123 +
124 + if (args.filters?.length) {
125 + for (const filter of args.filters) {
126 + if (filter.value?.length) {
127 + switch (filter.type) {
128 + case "assignedTo":
129 + params.assigned_to = filter.value
130 + break
131 + case "title":
132 + params.alert_title = filter.value
133 + break
134 + case "customerCode":
135 + params.customer_code = filter.value
136 + break
137 + case "source":
138 + params.source = filter.value
139 + break
140 + case "assetName":
141 + params.asset_name = filter.value
142 + break
143 + case "status":
144 + params.status = filter.value
145 + break
146 + case "tag":
147 + params.tags = _castArray(filter.value)
148 + break
149 + default:
150 + params[filter.type] = filter.value
151 + break
152 + }
153 + }
154 + }
155 +
156 + url = `/incidents/db_operations/alerts/filter`
157 }
158
159 return HttpClient.get<
160 FlaskBaseResponse & { alerts: Alert[]; closed: number; in_progress: number; open: number; total: number }
161 >(url, {
123 - params: {
124 - page: args.page || 1,
125 - page_size: args.pageSize || 25,
126 - order: args.sort || "desc"
162 + params,
163 + paramsSerializer: {
164 + indexes: null // remove brackets in array types
165 },
166 signal
167 })
frontend/src/api/endpoints/soc.ts
+1 -1
@@ -138,7 +138,7 @@ export default {
138 time_unit: payload?.unit || "days"
139 }
140 /* eslint no-mixed-spaces-and-tabs: "off" */
141 - }
141 + }
142 : undefined
143 )
144 },
frontend/src/components/agents/agentFlow/AgentFlowItem.vue
+1 -1
@@ -85,7 +85,7 @@
85 {{ key }}
86 </template>
87 <template #value>
88 - {{ value === "" ? "-" : value ?? "-" }}
88 + {{ value === "" ? "-" : (value ?? "-") }}
89 </template>
90 </KVCard>
91 </div>
frontend/src/components/agents/agentFlow/AgentFlowQueryStat.vue
+1 -1
@@ -71,7 +71,7 @@
71 {{ key }}
72 </template>
73 <template #value>
74 - {{ value === "" ? "-" : value ?? "-" }}
74 + {{ value === "" ? "-" : (value ?? "-") }}
75 </template>
76 </KVCard>
77 </div>
frontend/src/components/agents/sca/ScaResultItemDetails.vue
+2 -2
@@ -11,8 +11,8 @@
11 data.result === 'failed'
12 ? 'text-error-color'
13 : data.result === 'not applicable'
14 - ? 'text-warning-color'
15 - : 'text-success-color'
14 + ? 'text-warning-color'
15 + : 'text-success-color'
16 "
17 >
18 {{ data.result }}
frontend/src/components/auth/AuthForm.vue
+2 -2
@@ -54,8 +54,8 @@ const title = computed<string>(() =>
54 typeRef.value === "signin"
55 ? "SOCFortress CoPilot"
56 : typeRef.value === "signup"
57 - ? "SOCFortress CoPilot"
58 - : "Forgot Password"
57 + ? "SOCFortress CoPilot"
58 + : "Forgot Password"
59 )
60
61 function gotoSignIn() {
frontend/src/components/cards/CardActions.vue
+2 -2
@@ -75,7 +75,7 @@ const menuOptions = computed(() =>
75 key: "reload",
76 icon: renderIcon(ReloadIcon)
77 }
78 - ]
78 + ]
79 : [
80 {
81 label: "Collapse",
@@ -87,7 +87,7 @@ const menuOptions = computed(() =>
87 key: "reload",
88 icon: renderIcon(ReloadIcon)
89 }
90 - ]
90 + ]
91 )
92
93 function menuSelect(key: string) {
frontend/src/components/common/Badge.vue
+2 -2
@@ -166,8 +166,8 @@ const { type, hintCursor, pointCursor, color, href, fluid } = defineProps<{
166 & > span {
167 &:last-child {
168 line-height: 1.1;
169 - padding-top: 5px;
170 - padding-bottom: 5px;
169 + padding-top: 2px;
170 + padding-bottom: 2px;
171 display: flex;
172 align-items: center;
173 }
frontend/src/components/incidentManagement/alerts/AlertAsset.vue
+40 -19
@@ -1,6 +1,11 @@
1 <template>
2 - <div class="alert-asset-item" :class="{ embedded }">
3 - <div class="flex flex-col cursor-pointer" @click="showDetails = true">
2 + <div class="alert-asset-item" :class="{ embedded, badge }">
3 + <code v-if="badge" @click="showDetails = true">
4 + <span>{{ asset.asset_name }}</span>
5 + <Icon :name="ViewIcon" :size="14" />
6 + </code>
7 +
8 + <div v-else class="flex flex-col cursor-pointer" @click="showDetails = true">
9 <div class="main-box flex flex-col gap-3 px-5 py-3">
10 <div class="content flex flex-col gap-1 grow">
11 <div class="title">
@@ -139,9 +144,10 @@ import Icon from "@/components/common/Icon.vue"
144 import { useGoto } from "@/composables/useGoto"
145 import _truncate from "lodash/truncate"
146 import { NCard, NModal, NSpin, NTabPane, NTabs, useMessage } from "naive-ui"
142 -import { computed, defineAsyncComponent, ref, toRefs, watch } from "vue"
147 +import { computed, defineAsyncComponent, ref, watch } from "vue"
148 +
149 +const { asset, embedded, badge } = defineProps<{ asset: AlertAsset; embedded?: boolean; badge?: boolean }>()
150
144 -const props = defineProps<{ asset: AlertAsset; embedded?: boolean }>()
151 const AlertAssetInfo = defineAsyncComponent(() => import("./AlertAssetInfo.vue"))
152 const AlertDetailTimeline = defineAsyncComponent(() => import("./AlertDetailTimeline.vue"))
153 const ArtifactRecommendation = defineAsyncComponent(() => import("@/components/artifacts/ArtifactRecommendation.vue"))
@@ -151,21 +157,20 @@ const ThreatIntelProcessEvaluationProvider = defineAsyncComponent(
157 const ArtifactsCollect = defineAsyncComponent(() => import("@/components/artifacts/ArtifactsCollect.vue"))
158 const CodeSource = defineAsyncComponent(() => import("@/components/common/CodeSource.vue"))
159
154 -const { asset, embedded } = toRefs(props)
155 -
160 +const ViewIcon = "iconoir:eye-alt"
161 const LinkIcon = "carbon:launch"
162 const { gotoAgent, gotoIndex } = useGoto()
163 const message = useMessage()
164 const loading = ref(false)
165 const showDetails = ref(false)
161 -const assetNameTruncated = computed(() => _truncate(asset.value.asset_name, { length: 50 }))
166 +const assetNameTruncated = computed(() => _truncate(asset.asset_name, { length: 50 }))
167 const alertContext = ref<AlertContext | null>(null)
168 const processNameList = computed<string[]>(() => alertContext.value?.context?.process_name || [])
169 const isInvestigationAvailable = computed(() => processNameList.value.length)
170
171 watch(showDetails, val => {
172 if (val && !alertContext.value) {
168 - getAlertContext(asset.value.alert_context_id)
173 + getAlertContext(asset.alert_context_id)
174 }
175 })
176
@@ -192,23 +197,39 @@ function getAlertContext(alertContextId: number) {
197
198 <style lang="scss" scoped>
199 .alert-asset-item {
195 - border-radius: var(--border-radius);
196 - background-color: var(--bg-color);
197 - transition: all 0.2s var(--bezier-ease);
198 - border: var(--border-small-050);
199 - overflow: hidden;
200 -
201 - .main-box {
202 - .content {
203 - word-break: break-word;
200 + &:not(.badge) {
201 + border-radius: var(--border-radius);
202 + background-color: var(--bg-color);
203 + transition: all 0.2s var(--bezier-ease);
204 + border: var(--border-small-050);
205 + overflow: hidden;
206 +
207 + &:hover {
208 + box-shadow: 0px 0px 0px 1px var(--primary-color);
209 + }
210 +
211 + .main-box {
212 + .content {
213 + word-break: break-word;
214 + }
215 }
216 }
217
218 &.embedded {
219 background-color: var(--bg-secondary-color);
220 }
210 - &:hover {
211 - box-shadow: 0px 0px 0px 1px var(--primary-color);
221 +
222 + &.badge {
223 + color: var(--primary-color);
224 + line-height: 1;
225 + cursor: pointer;
226 +
227 + code {
228 + display: flex;
229 + align-items: center;
230 + gap: 7px;
231 + padding: 2px 5px;
232 + }
233 }
234 }
235 </style>
frontend/src/components/incidentManagement/alerts/AlertAssetInfo.vue
+2 -2
@@ -34,7 +34,7 @@
34 </code>
35 </div>
36 <div v-else>
37 - {{ value === "" ? "-" : value ?? "-" }}
37 + {{ value === "" ? "-" : (value ?? "-") }}
38 </div>
39 </template>
40 </KVCard>
@@ -68,7 +68,7 @@
68 </code>
69 </div>
70 <div v-else>
71 - {{ value === "" ? "-" : value ?? "-" }}
71 + {{ value === "" ? "-" : (value ?? "-") }}
72 </div>
73 </template>
74 </KVCard>
frontend/src/components/incidentManagement/alerts/AlertDetailTimelineItem.vue
+1 -1
@@ -37,7 +37,7 @@
37 </code>
38 </div>
39 <div v-else>
40 - {{ value === "" ? "-" : value ?? "-" }}
40 + {{ value === "" ? "-" : (value ?? "-") }}
41 </div>
42 </template>
43 </KVCard>
frontend/src/components/incidentManagement/alerts/AlertItem.vue
+17 -5
@@ -54,8 +54,8 @@
54 alert.status === 'OPEN'
55 ? 'danger'
56 : alert.status === 'IN_PROGRESS'
57 - ? 'warning'
58 - : 'success'
57 + ? 'warning'
58 + : 'success'
59 "
60 >
61 <template #iconLeft>
@@ -96,8 +96,8 @@
96 alert.status === 'OPEN'
97 ? 'danger'
98 : alert.status === 'IN_PROGRESS'
99 - ? 'warning'
100 - : 'success'
99 + ? 'warning'
100 + : 'success'
101 "
102 >
103 <template #iconLeft>
@@ -159,6 +159,15 @@
159 </div>
160 </template>
161 </Badge>
162 +
163 + <Badge v-if="alert.assets?.length" type="splitted" fluid class="!hidden sm:!flex">
164 + <template #label>Assets</template>
165 + <template #value>
166 + <div class="flex flex-wrap gap-1">
167 + <AlertAssetItem v-for="asset of alert.assets" :key="asset.id" :asset badge />
168 + </div>
169 + </template>
170 + </Badge>
171 </div>
172 </div>
173
@@ -243,7 +252,7 @@ import { formatDate } from "@/utils"
252 import _clone from "lodash/cloneDeep"
253 import _truncate from "lodash/truncate"
254 import { NButton, NCard, NModal, NPopover, NSpin, NTooltip, useDialog, useMessage } from "naive-ui"
246 -import { computed, onBeforeMount, onMounted, ref, toRefs } from "vue"
255 +import { computed, defineAsyncComponent, onBeforeMount, onMounted, ref, toRefs } from "vue"
256 import AssigneeIcon from "../common/AssigneeIcon.vue"
257 import StatusIcon from "../common/StatusIcon.vue"
258 import AlertAssignUser from "./AlertAssignUser.vue"
@@ -260,12 +269,15 @@ const props = defineProps<{
269 detailsOnMounted?: boolean
270 highlight?: boolean
271 }>()
272 +
273 const emit = defineEmits<{
274 (e: "opened"): void
275 (e: "deleted"): void
276 (e: "updated", value: Alert): void
277 }>()
278
279 +const AlertAssetItem = defineAsyncComponent(() => import("./AlertAsset.vue"))
280 +
281 const { alertData, alertId, compact, embedded, detailsOnMounted, highlight } = toRefs(props)
282
283 const InfoIcon = "carbon:information"
frontend/src/components/incidentManagement/alerts/AlertsFilters.vue new
+365
@@ -0,0 +1,365 @@
1 +<template>
2 + <div class="alerts-filters flex flex-wrap gap-3">
3 + <div v-for="filter of filters" :key="filter.type">
4 + <n-input-group v-if="filter.type === 'status'">
5 + <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
6 + <n-select
7 + v-model:value="filter.value"
8 + size="small"
9 + :options="statusOptions"
10 + placeholder="Select..."
11 + class="!w-32"
12 + />
13 + <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
14 + <template #icon>
15 + <Icon :name="DelIcon" />
16 + </template>
17 + </n-button>
18 + </n-input-group>
19 +
20 + <n-input-group v-if="filter.type === 'assignedTo'">
21 + <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
22 + <n-select
23 + v-model:value="filter.value"
24 + :options="usersOptions"
25 + placeholder="Select..."
26 + size="small"
27 + filterable
28 + class="!w-40"
29 + :loading="loadingAvailableUsers || !usersOptions.length"
30 + />
31 + <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
32 + <template #icon>
33 + <Icon :name="DelIcon" />
34 + </template>
35 + </n-button>
36 + </n-input-group>
37 +
38 + <n-input-group v-if="filter.type === 'customerCode'">
39 + <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
40 + <n-select
41 + v-model:value="filter.value"
42 + :options="customersOptions"
43 + placeholder="Select..."
44 + size="small"
45 + filterable
46 + class="!w-56"
47 + :loading="loadingCustomers || !customersOptions.length"
48 + />
49 + <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
50 + <template #icon>
51 + <Icon :name="DelIcon" />
52 + </template>
53 + </n-button>
54 + </n-input-group>
55 +
56 + <n-input-group v-if="filter.type === 'source'">
57 + <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
58 + <n-select
59 + v-model:value="filter.value"
60 + :options="sourcesOptions"
61 + placeholder="Select..."
62 + size="small"
63 + filterable
64 + class="!w-44"
65 + :loading="loadingConfiguredSources || !sourcesOptions.length"
66 + />
67 + <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
68 + <template #icon>
69 + <Icon :name="DelIcon" />
70 + </template>
71 + </n-button>
72 + </n-input-group>
73 +
74 + <n-input-group v-if="filter.type === 'tag'">
75 + <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
76 + <n-select
77 + v-model:value="filter.value"
78 + filterable
79 + multiple
80 + tag
81 + size="small"
82 + autosize
83 + placeholder="Input, press enter to create"
84 + :show-arrow="false"
85 + :show="false"
86 + class="!min-w-64"
87 + />
88 + <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
89 + <template #icon>
90 + <Icon :name="DelIcon" />
91 + </template>
92 + </n-button>
93 + </n-input-group>
94 +
95 + <n-input-group
96 + v-if="filter.type === 'title' && (typeof filter.value === 'string' || filter.value === null)"
97 + >
98 + <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
99 + <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="!min-w-40" />
100 + <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
101 + <template #icon>
102 + <Icon :name="DelIcon" />
103 + </template>
104 + </n-button>
105 + </n-input-group>
106 +
107 + <n-input-group
108 + v-if="filter.type === 'assetName' && (typeof filter.value === 'string' || filter.value === null)"
109 + >
110 + <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
111 + <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="!min-w-40" />
112 + <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
113 + <template #icon>
114 + <Icon :name="DelIcon" />
115 + </template>
116 + </n-button>
117 + </n-input-group>
118 + </div>
119 +
120 + <n-dropdown
121 + v-if="availableFilters.length"
122 + placement="bottom-start"
123 + trigger="click"
124 + :options="availableFilters"
125 + @select="addFilter"
126 + >
127 + <n-button size="small" dashed @click="load()">
128 + <template #icon>
129 + <Icon :name="AddIcon" />
130 + </template>
131 + <span v-if="!filters.length">Add filter</span>
132 + </n-button>
133 + </n-dropdown>
134 +
135 + <n-button v-if="filters.length && isDirty" size="small" secondary type="primary" @click="submit()">
136 + Submit
137 + </n-button>
138 +
139 + <n-button v-if="filters.length" size="small" quaternary @click="reset()">Reset</n-button>
140 + </div>
141 +</template>
142 +
143 +<script setup lang="ts">
144 +import type { AlertsFilterTypes, AlertsListFilterValue } from "@/api/endpoints/incidentManagement"
145 +import type { Customer } from "@/types/customers.d"
146 +import type { AlertStatus } from "@/types/incidentManagement/alerts.d"
147 +import type { SourceName } from "@/types/incidentManagement/sources.d"
148 +import type { AlertsListFilter } from "./types.d"
149 +import Api from "@/api"
150 +import Icon from "@/components/common/Icon.vue"
151 +import _cloneDeep from "lodash/cloneDeep"
152 +import _isEqual from "lodash/isEqual"
153 +import { NButton, NDropdown, NInput, NInputGroup, NInputGroupLabel, NSelect, useMessage } from "naive-ui"
154 +import { computed, inject, onBeforeMount, onMounted, ref, type Ref } from "vue"
155 +import { useRoute, useRouter } from "vue-router"
156 +
157 +const { useQueryString, preset } = defineProps<{ useQueryString?: boolean; preset?: AlertsListFilter[] }>()
158 +
159 +const emit = defineEmits<{
160 + (e: "submit", value: AlertsListFilter[]): void
161 + (
162 + e: "mounted",
163 + value: {
164 + setFilter: (payload: AlertsListFilter[]) => void
165 + }
166 + ): void
167 +}>()
168 +
169 +const AddIcon = "carbon:add"
170 +const DelIcon = "carbon:delete"
171 +const router = useRouter()
172 +const route = useRoute()
173 +const message = useMessage()
174 +const loadingAvailableUsers = ref(false)
175 +const loadingConfiguredSources = ref(false)
176 +const loadingCustomers = ref(false)
177 +const availableUsers = inject<Ref<string[]>>("assignable-users", ref([]))
178 +const configuredSourcesList = ref<SourceName[]>([])
179 +const customersList = ref<Customer[]>([])
180 +const usersOptions = computed(() => availableUsers.value.map(o => ({ label: o, value: o })))
181 +const customersOptions = computed(() =>
182 + customersList.value.map(o => ({ label: `#${o.customer_code} - ${o.customer_name}`, value: o.customer_code }))
183 +)
184 +const sourcesOptions = computed(() => configuredSourcesList.value.map(o => ({ label: o, value: o })))
185 +const statusOptions: { label: string; value: AlertStatus }[] = [
186 + { label: "Open", value: "OPEN" },
187 + { label: "Closed", value: "CLOSED" },
188 + { label: "In progress", value: "IN_PROGRESS" }
189 +]
190 +const typeOptions: { label: string; value: AlertsFilterTypes }[] = [
191 + { label: "Status", value: "status" },
192 + { label: "Asset Name", value: "assetName" },
193 + { label: "Assigned To", value: "assignedTo" },
194 + { label: "Tag", value: "tag" },
195 + { label: "Title", value: "title" },
196 + { label: "Customer Code", value: "customerCode" },
197 + { label: "Source", value: "source" }
198 +]
199 +
200 +const filters = ref<AlertsListFilter[]>([])
201 +const lastFilters = ref<AlertsListFilter[]>([])
202 +
203 +const availableFilters = computed(() =>
204 + typeOptions
205 + .filter(o => !filters.value.map(f => f.type).includes(o.value))
206 + .map(t => ({ key: t.value, label: t.label }))
207 +)
208 +
209 +const isDirty = computed(() => !_isEqual(filters.value, lastFilters.value))
210 +
211 +function getFilterLabel(type: AlertsFilterTypes): string {
212 + return typeOptions.find(o => o.value === type)?.label || type
213 +}
214 +
215 +function addFilter(key: AlertsFilterTypes) {
216 + filters.value.push({ type: key, value: null })
217 +}
218 +
219 +function delFilter(key: AlertsFilterTypes) {
220 + filters.value = filters.value.filter(o => o.type !== key)
221 +}
222 +
223 +function setFilter(newFilters: AlertsListFilter[]) {
224 + for (const newFilter of newFilters) {
225 + const filterIndex = filters.value.findIndex(o => o.type === newFilter.type)
226 +
227 + if (filterIndex !== -1) {
228 + if (newFilter.value) {
229 + filters.value[filterIndex].value = newFilter.value
230 + } else {
231 + delFilter(newFilter.type)
232 + }
233 + } else if (newFilter.value) {
234 + filters.value.push(newFilter)
235 + }
236 + }
237 + submit()
238 +}
239 +
240 +function reset() {
241 + filters.value = []
242 + submit()
243 +}
244 +
245 +function submit() {
246 + lastFilters.value = _cloneDeep(filters.value)
247 + emit("submit", lastFilters.value)
248 + setQueryString()
249 +}
250 +
251 +function setQueryString() {
252 + if (!useQueryString) return
253 +
254 + const query = filters.value
255 + .filter(filter => filter.value)
256 + .reduce<Record<string, string | string[]>>((acc, filter) => {
257 + acc[filter.type] = filter.value as string | string[]
258 + return acc
259 + }, {})
260 +
261 + router.replace({ query })
262 +}
263 +
264 +function getQueryString() {
265 + if (useQueryString) {
266 + filters.value = Object.entries(route.query)
267 + .filter(o => !!o[0] && !!o[1])
268 + .map(o => ({
269 + type: o[0] as AlertsFilterTypes,
270 + label: typeOptions.find(t => t.value === o[0])?.label || o[0],
271 + value: o[1] as AlertsListFilterValue
272 + }))
273 + }
274 +}
275 +
276 +function getAvailableUsers() {
277 + loadingAvailableUsers.value = true
278 +
279 + Api.incidentManagement
280 + .getAvailableUsers()
281 + .then(res => {
282 + if (res.data.success) {
283 + availableUsers.value = res.data?.available_users || []
284 + } else {
285 + message.warning(res.data?.message || "An error occurred. Please try again later.")
286 + }
287 + })
288 + .catch(err => {
289 + message.error(err.response?.data?.message || "An error occurred. Please try again later.")
290 + })
291 + .finally(() => {
292 + loadingAvailableUsers.value = false
293 + })
294 +}
295 +
296 +function getCustomers() {
297 + loadingCustomers.value = true
298 +
299 + Api.customers
300 + .getCustomers()
301 + .then(res => {
302 + if (res.data.success) {
303 + customersList.value = res.data?.customers || []
304 + } else {
305 + message.warning(res.data?.message || "An error occurred. Please try again later.")
306 + }
307 + })
308 + .catch(err => {
309 + message.error(err.response?.data?.message || "An error occurred. Please try again later.")
310 + })
311 + .finally(() => {
312 + loadingCustomers.value = false
313 + })
314 +}
315 +
316 +function getConfiguredSources() {
317 + loadingConfiguredSources.value = true
318 +
319 + Api.incidentManagement
320 + .getConfiguredSources()
321 + .then(res => {
322 + if (res.data.success) {
323 + configuredSourcesList.value = res.data?.sources || []
324 + } else {
325 + message.warning(res.data?.message || "An error occurred. Please try again later.")
326 + }
327 + })
328 + .catch(err => {
329 + message.error(err.response?.data?.message || "An error occurred. Please try again later.")
330 + })
331 + .finally(() => {
332 + loadingConfiguredSources.value = false
333 + })
334 +}
335 +
336 +function load() {
337 + if (!availableUsers.value.length) {
338 + getAvailableUsers()
339 + }
340 + if (!customersList.value.length) {
341 + getCustomers()
342 + }
343 + if (!configuredSourcesList.value.length) {
344 + getConfiguredSources()
345 + }
346 +}
347 +
348 +onBeforeMount(() => {
349 + if (preset?.length) {
350 + filters.value = preset
351 + } else {
352 + getQueryString()
353 + }
354 +
355 + if ((useQueryString || preset?.length) && filters.value.length) {
356 + submit()
357 + }
358 +})
359 +
360 +onMounted(() => {
361 + emit("mounted", {
362 + setFilter
363 + })
364 +})
365 +</script>
frontend/src/components/incidentManagement/alerts/AlertsList.vue
+124 -211
@@ -32,18 +32,38 @@
32 </div>
33 </n-popover>
34 </div>
35 - <div class="info grow lg:flex gap-2 hidden text-sm">
36 - Total :
37 - <code>{{ total }}</code>
35 + <div class="info grow lg:flex gap-1 hidden text-sm items-center">
36 + <n-button quaternary size="small" @click="filtersCTX?.setFilter([{ type: 'status', value: null }])">
37 + <div class="flex items-center gap-2">
38 + <span>Total</span>
39 + <code class="py-1">{{ total }}</code>
40 + </div>
41 + </n-button>
42 <span>/</span>
39 - <span class="text-secondary-color">Open :</span>
40 - <code class="text-error-color">{{ statusOpenTotal }}</code>
43 + <n-button quaternary size="small" @click="filtersCTX?.setFilter([{ type: 'status', value: 'OPEN' }])">
44 + <div class="flex items-center gap-2">
45 + <span>Open</span>
46 + <code class="py-1 text-error-color">{{ statusOpenTotal }}</code>
47 + </div>
48 + </n-button>
49 <span>/</span>
42 - <span class="text-secondary-color">In Progress :</span>
43 - <code class="text-warning-color">{{ statusInProgressTotal }}</code>
50 + <n-button
51 + quaternary
52 + size="small"
53 + @click="filtersCTX?.setFilter([{ type: 'status', value: 'IN_PROGRESS' }])"
54 + >
55 + <div class="flex items-center gap-2">
56 + <span>In Progress</span>
57 + <code class="py-1 text-warning-color">{{ statusInProgressTotal }}</code>
58 + </div>
59 + </n-button>
60 <span>/</span>
45 - <span class="text-secondary-color">Close :</span>
46 - <code class="text-success-color">{{ statusCloseTotal }}</code>
61 + <n-button quaternary size="small" @click="filtersCTX?.setFilter([{ type: 'status', value: 'CLOSED' }])">
62 + <div class="flex items-center gap-2">
63 + <span>Close</span>
64 + <code class="py-1 text-success-color">{{ statusCloseTotal }}</code>
65 + </div>
66 + </n-button>
67 </div>
68 <n-pagination
69 v-model:page="currentPage"
@@ -62,92 +82,27 @@
82 class="max-w-20"
83 :disabled="loading"
84 />
65 - <n-popover v-if="!hideFilters" :show="showFilters" trigger="manual" overlap placement="right" class="!px-0">
66 - <template #trigger>
67 - <div class="bg-color border-radius">
68 - <n-badge :show="filtered" dot type="success" :offset="[-4, 0]">
69 - <n-button size="small" @click="showFilters = true">
70 - <template #icon>
71 - <Icon :name="FilterIcon"></Icon>
72 - </template>
73 - </n-button>
74 - </n-badge>
75 - </div>
76 - </template>
77 - <div class="py-1 flex flex-col gap-2">
78 - <div class="px-3">
79 - <n-input-group>
80 - <n-select
81 - v-model:value="filters.type"
82 - :options="typeOptions"
83 - placeholder="Filter by..."
84 - clearable
85 - class="!w-40"
86 - />
87 -
88 - <n-select
89 - v-if="filters.type === 'status'"
90 - v-model:value="filters.value"
91 - :options="statusOptions"
92 - placeholder="Value..."
93 - :disabled="!filters.type"
94 - clearable
95 - class="!w-56"
96 - />
97 - <n-select
98 - v-else-if="filters.type === 'assignedTo'"
99 - v-model:value="filters.value"
100 - :options="usersOptions"
101 - placeholder="Value..."
102 - :disabled="!filters.type"
103 - clearable
104 - filterable
105 - class="!w-56"
106 - />
107 - <n-select
108 - v-else-if="filters.type === 'customerCode'"
109 - v-model:value="filters.value"
110 - :options="customersOptions"
111 - placeholder="Value..."
112 - :disabled="!filters.type"
113 - clearable
114 - filterable
115 - class="!w-56"
116 - />
117 - <n-select
118 - v-else-if="filters.type === 'source'"
119 - v-model:value="filters.value"
120 - :options="sourcesOptions"
121 - placeholder="Value..."
122 - :disabled="!filters.type"
123 - clearable
124 - filterable
125 - class="!w-56"
126 - />
127 - <n-input
128 - v-else
129 - v-model:value="filters.value"
130 - placeholder="Value..."
131 - :disabled="!filters.type"
132 - clearable
133 - class="!w-56"
134 - />
135 - </n-input-group>
136 - </div>
137 - <div class="px-3 flex justify-between gap-2">
138 - <div class="flex justify-start gap-2">
139 - <n-button size="small" quaternary @click="showFilters = false">Close</n-button>
140 - </div>
141 - <div class="flex justify-end gap-2">
142 - <n-button size="small" secondary @click="resetFilters()">Reset</n-button>
143 - <n-button size="small" type="primary" secondary :loading @click="getData()">
144 - Submit
145 - </n-button>
146 - </div>
147 - </div>
148 - </div>
149 - </n-popover>
85 +
86 + <n-badge v-if="showFilters" :show="filtered" dot type="success" :offset="[-4, 0]">
87 + <n-button size="small" secondary @click="showFiltersView = !showFiltersView">
88 + <template #icon>
89 + <Icon :name="FilterIcon"></Icon>
90 + </template>
91 + </n-button>
92 + </n-badge>
93 + </div>
94 +
95 + <div v-if="showFilters" class="filters-box" :class="{ open: showFiltersView }">
96 + <n-card size="small" :bordered="false">
97 + <AlertsFilters
98 + :use-query-string="!preset?.length"
99 + :preset
100 + @submit="applyFilters"
101 + @mounted="filtersCTX = $event"
102 + />
103 + </n-card>
104 </div>
105 +
106 <n-spin :show="loading">
107 <div class="list flex flex-col gap-2 my-3">
108 <template v-if="alertsList.length">
@@ -181,50 +136,37 @@
136 </template>
137
138 <script setup lang="ts">
184 -import type { AlertsFilterTypes, AlertsQuery } from "@/api/endpoints/incidentManagement"
185 -import type { Customer } from "@/types/customers.d"
186 -import type { Alert, AlertStatus } from "@/types/incidentManagement/alerts.d"
139 +import type { AlertsQuery } from "@/api/endpoints/incidentManagement"
140 +import type { Alert } from "@/types/incidentManagement/alerts.d"
141 import type { Case } from "@/types/incidentManagement/cases.d"
188 -import type { SourceName } from "@/types/incidentManagement/sources.d"
142 +import type { AlertsListFilter } from "./types.d"
143 import Api from "@/api"
144 import Icon from "@/components/common/Icon.vue"
191 -import { useResizeObserver } from "@vueuse/core"
145 +import { useResizeObserver, useStorage } from "@vueuse/core"
146 import axios from "axios"
193 -import _cloneDeep from "lodash/cloneDeep"
147 import _orderBy from "lodash/orderBy"
195 -import {
196 - NBadge,
197 - NButton,
198 - NEmpty,
199 - NInput,
200 - NInputGroup,
201 - NPagination,
202 - NPopover,
203 - NSelect,
204 - NSpin,
205 - useMessage
206 -} from "naive-ui"
207 -import { computed, nextTick, onBeforeMount, provide, ref, toRefs, watch } from "vue"
148 +import { NBadge, NButton, NCard, NEmpty, NPagination, NPopover, NSelect, NSpin, useMessage } from "naive-ui"
149 +import { computed, nextTick, onBeforeMount, provide, ref, watch } from "vue"
150 import AlertItem from "./AlertItem.vue"
209 -
210 -export interface AlertsListFilter {
211 - type: AlertsFilterTypes
212 - value: string | AlertStatus
213 -}
214 -
215 -const props = defineProps<{ highlight?: string | null; preset?: AlertsListFilter; hideFilters?: boolean }>()
216 -const { highlight, preset, hideFilters } = toRefs(props)
151 +import AlertsFilters from "./AlertsFilters.vue"
152 +
153 +const { highlight, preset, showFilters } = withDefaults(
154 + defineProps<{
155 + highlight?: string | null
156 + preset?: AlertsListFilter[]
157 + showFilters?: boolean
158 + }>(),
159 + { showFilters: true }
160 +)
161
162 const FilterIcon = "carbon:filter-edit"
163 const InfoIcon = "carbon:information"
164
165 const message = useMessage()
166 const loading = ref(false)
223 -const showFilters = ref(false)
167 +const showFiltersView = useStorage<boolean>("incident-management-alerts-list-filters-view-state", false, localStorage)
168 const alertsList = ref<Alert[]>([])
169 const availableUsers = ref<string[]>([])
226 -const configuredSourcesList = ref<SourceName[]>([])
227 -const customersList = ref<Customer[]>([])
170 const linkableCases = ref<Case[]>([])
171 let abortController: AbortController | null = null
172
@@ -246,52 +188,15 @@ const statusOpenTotal = ref(0)
188 const statusInProgressTotal = ref(0)
189 const statusCloseTotal = ref(0)
190
249 -const filters = ref<Partial<AlertsListFilter>>({})
250 -const lastFilters = ref<Partial<AlertsListFilter>>({})
191 +const filtersCTX = ref<{ setFilter: (payload: AlertsListFilter[]) => void } | null>(null)
192 +const filters = ref<AlertsListFilter[]>([])
193
194 const filtered = computed<boolean>(() => {
253 - return !!filters.value.type && !!filters.value.value
195 + return !!filters.value.length
196 })
197
256 -const typeOptions: { label: string; value: AlertsFilterTypes }[] = [
257 - { label: "Status", value: "status" },
258 - { label: "Asset Name", value: "assetName" },
259 - { label: "Assigned To", value: "assignedTo" },
260 - { label: "Tag", value: "tag" },
261 - { label: "Title", value: "title" },
262 - { label: "Customer Code", value: "customerCode" },
263 - { label: "Source", value: "source" }
264 -]
265 -
266 -const statusOptions: { label: string; value: AlertStatus }[] = [
267 - { label: "Open", value: "OPEN" },
268 - { label: "Closed", value: "CLOSED" },
269 - { label: "In progress", value: "IN_PROGRESS" }
270 -]
271 -
272 -const usersOptions = computed(() => availableUsers.value.map(o => ({ label: o, value: o })))
273 -const customersOptions = computed(() =>
274 - customersList.value.map(o => ({ label: `#${o.customer_code} - ${o.customer_name}`, value: o.customer_code }))
275 -)
276 -const sourcesOptions = computed(() => configuredSourcesList.value.map(o => ({ label: o, value: o })))
277 -
278 -const highlightedItemFound = ref(!highlight.value)
279 -const highlightedItemOpened = ref(!highlight.value)
280 -
281 -watch(showFilters, val => {
282 - if (!val) {
283 - filters.value = _cloneDeep(lastFilters.value)
284 - }
285 -})
286 -
287 -watch(
288 - () => filters.value.type,
289 - () => {
290 - if (!preset.value) {
291 - filters.value.value = undefined
292 - }
293 - }
294 -)
198 +const highlightedItemFound = ref(!highlight)
199 +const highlightedItemOpened = ref(!highlight)
200
201 watch([currentPage, sort], () => {
202 getData()
@@ -310,7 +215,7 @@ watch(
215 () => {
216 if (
217 alertsList.value.length &&
313 - !alertsList.value.find(o => o.id.toString() === highlight.value) &&
218 + !alertsList.value.find(o => o.id.toString() === highlight) &&
219 currentPage.value < total.value &&
220 !highlightedItemFound.value
221 ) {
@@ -319,7 +224,7 @@ watch(
224 })
225 }
226
322 - if (alertsList.value.find(o => o.id.toString() === highlight.value)) {
227 + if (alertsList.value.find(o => o.id.toString() === highlight)) {
228 highlightedItemFound.value = true
229 }
230 },
@@ -330,10 +235,8 @@ provide("assignable-users", availableUsers)
235
236 provide("linkable-cases", linkableCases)
237
333 -function resetFilters() {
334 - filters.value.type = undefined
335 - filters.value.value = undefined
336 - showFilters.value = false
238 +function applyFilters(newFilters: AlertsListFilter[]) {
239 + filters.value = newFilters
240 getData()
241 }
242
@@ -348,9 +251,7 @@ function getData() {
251 abortController?.abort()
252 abortController = new AbortController()
253
351 - showFilters.value = false
254 loading.value = true
353 - lastFilters.value = _cloneDeep(filters.value)
255
256 const query: Partial<AlertsQuery> = {
257 page: currentPage.value,
@@ -359,8 +260,7 @@ function getData() {
260 }
261
262 if (filtered.value) {
362 - // @ts-expect-error filters properties infer are ignored
363 - query.filters = { [filters.value.type]: filters.value.value }
263 + query.filters = filters.value
264 }
265
266 Api.incidentManagement
@@ -402,36 +302,6 @@ function getAvailableUsers() {
302 })
303 }
304
405 -function getCustomers() {
406 - Api.customers
407 - .getCustomers()
408 - .then(res => {
409 - if (res.data.success) {
410 - customersList.value = res.data?.customers || []
411 - } else {
412 - message.warning(res.data?.message || "An error occurred. Please try again later.")
413 - }
414 - })
415 - .catch(err => {
416 - message.error(err.response?.data?.message || "An error occurred. Please try again later.")
417 - })
418 -}
419 -
420 -function getConfiguredSources() {
421 - Api.incidentManagement
422 - .getConfiguredSources()
423 - .then(res => {
424 - if (res.data.success) {
425 - configuredSourcesList.value = res.data?.sources || []
426 - } else {
427 - message.warning(res.data?.message || "An error occurred. Please try again later.")
428 - }
429 - })
430 - .catch(err => {
431 - message.error(err.response?.data?.message || "An error occurred. Please try again later.")
432 - })
433 -}
434 -
305 function getCases() {
306 Api.incidentManagement
307 .getCasesList()
@@ -456,16 +326,13 @@ useResizeObserver(header, entries => {
326 })
327
328 onBeforeMount(() => {
459 - if (preset.value?.type && preset.value.value) {
460 - filters.value.type = preset.value.type
461 - filters.value.value = preset.value.value
329 + if (!showFilters && preset?.length) {
330 + filters.value = preset
331 }
332
333 getData()
334 getAvailableUsers()
466 - getCustomers()
335 getCases()
468 - getConfiguredSources()
336 })
337 </script>
338
@@ -475,5 +342,51 @@ onBeforeMount(() => {
342 container-type: inline-size;
343 min-height: 200px;
344 }
345 +
346 + .filters-box {
347 + overflow: hidden;
348 + display: grid;
349 + grid-template-rows: 0fr;
350 + padding-top: 0px;
351 + opacity: 0;
352 + position: relative;
353 + transition:
354 + opacity var(--router-transition-duration) ease-out,
355 + grid-template-rows var(--router-transition-duration) ease-out,
356 + padding-top var(--router-transition-duration) ease-out;
357 +
358 + &::after {
359 + --size: 10px;
360 + content: "";
361 + width: 0;
362 + height: 0;
363 + border-left: var(--size) solid transparent;
364 + border-right: var(--size) solid transparent;
365 + border-bottom: var(--size) solid var(--bg-secondary-color);
366 + position: absolute;
367 + top: 2px;
368 + right: 8px;
369 + transform: rotateX(90deg);
370 + transform-origin: top center;
371 + transition:
372 + opacity var(--router-transition-duration) ease-out,
373 + transform var(--router-transition-duration) ease-out;
374 + }
375 +
376 + & > * {
377 + background-color: var(--bg-secondary-color);
378 + overflow: hidden;
379 + }
380 +
381 + &.open {
382 + grid-template-rows: 1fr;
383 + opacity: 1;
384 + @apply pt-3;
385 +
386 + &::after {
387 + transform: rotateX(0deg);
388 + }
389 + }
390 + }
391 }
392 </style>
frontend/src/components/incidentManagement/alerts/types.d.ts new
+6
@@ -0,0 +1,6 @@
1 +import type { AlertsFilterTypes, AlertsListFilterValue } from "@/api/endpoints/incidentManagement"
2 +
3 +export interface AlertsListFilter {
4 + type: AlertsFilterTypes
5 + value: AlertsListFilterValue
6 +}
frontend/src/components/incidentManagement/cases/CaseItem.vue
+8 -8
@@ -31,10 +31,10 @@
31 caseEntity.case_status === 'OPEN'
32 ? 'danger'
33 : caseEntity.case_status === 'IN_PROGRESS'
34 - ? 'warning'
35 - : caseEntity.case_status === 'CLOSED'
36 - ? 'success'
37 - : undefined
34 + ? 'warning'
35 + : caseEntity.case_status === 'CLOSED'
36 + ? 'success'
37 + : undefined
38 "
39 >
40 <template #iconLeft>
@@ -80,10 +80,10 @@
80 caseEntity.case_status === 'OPEN'
81 ? 'danger'
82 : caseEntity.case_status === 'IN_PROGRESS'
83 - ? 'warning'
84 - : caseEntity.case_status === 'CLOSED'
85 - ? 'success'
86 - : undefined
83 + ? 'warning'
84 + : caseEntity.case_status === 'CLOSED'
85 + ? 'success'
86 + : undefined
87 "
88 >
89 <template #iconLeft>
frontend/src/components/incidentManagement/cases/CaseOverview.vue
+4 -4
@@ -8,10 +8,10 @@
8 caseData.case_status === 'OPEN'
9 ? 'danger'
10 : caseData.case_status === 'IN_PROGRESS'
11 - ? 'warning'
12 - : caseData.case_status === 'CLOSED'
13 - ? 'success'
14 - : undefined
11 + ? 'warning'
12 + : caseData.case_status === 'CLOSED'
13 + ? 'success'
14 + : undefined
15 "
16 size="lg"
17 class="grow w-full"
frontend/src/components/incidentManagement/cases/CasesExport.vue
+1 -1
@@ -44,7 +44,7 @@ const customersOptions = computed(() => {
44 : customersList.value.map(o => ({
45 label: `#${o.customer_code} - ${o.customer_name}`,
46 key: o.customer_code
47 - }))
47 + }))
48 }
49 ]
50 })
frontend/src/components/incidentManagement/cases/CasesList.vue
+1 -1
@@ -29,7 +29,7 @@
29 Close :
30 <code>{{ statusCloseTotal }}</code>
31 </div>
32 - <div class="box text-success-color">
32 + <div class="box text-secondary-color">
33 N/D :
34 <code>{{ statusUndefinedTotal }}</code>
35 </div>
frontend/src/components/incidentManagement/common/StatusIcon.vue
+4 -4
@@ -4,10 +4,10 @@
4 status === 'OPEN'
5 ? WarningIcon
6 : status === 'IN_PROGRESS'
7 - ? ProgressIcon
8 - : status === 'CLOSED'
9 - ? CheckIcon
10 - : UnknownIcon
7 + ? ProgressIcon
8 + : status === 'CLOSED'
9 + ? CheckIcon
10 + : UnknownIcon
11 "
12 :size="size || 16"
13 />
frontend/src/components/sigma/QueriesList.vue
+30
@@ -34,6 +34,12 @@
34 <div class="flex items-center gap-2">
35 <Icon :name="ToolsIcon" :size="16"></Icon>
36 <span class="hidden xs:block">Actions</span>
37 + <Icon
38 + class="!hidden xs:!block transition-transform"
39 + :class="{ '!rotate-90': showActionsView }"
40 + :name="ChevronIcon"
41 + :size="16"
42 + ></Icon>
43 </div>
44 </n-button>
45 </div>
@@ -141,6 +147,7 @@ interface QueriesFilter {
147 const FilterIcon = "carbon:filter-edit"
148 const InfoIcon = "carbon:information"
149 const ToolsIcon = "carbon:tools"
150 +const ChevronIcon = "carbon:chevron-right"
151
152 const message = useMessage()
153 const loading = ref(false)
@@ -263,15 +270,38 @@ onBeforeMount(() => {
270 grid-template-rows: 0fr;
271 padding-top: 0px;
272 opacity: 0;
273 + position: relative;
274 transition:
275 opacity var(--router-transition-duration) ease-out,
276 grid-template-rows var(--router-transition-duration) ease-out,
277 padding-top var(--router-transition-duration) ease-out;
278
279 + &::after {
280 + --size: 10px;
281 + content: "";
282 + width: 0;
283 + height: 0;
284 + border-left: var(--size) solid transparent;
285 + border-right: var(--size) solid transparent;
286 + border-bottom: var(--size) solid var(--bg-secondary-color);
287 + position: absolute;
288 + top: 2px;
289 + left: 54px;
290 + transform: rotateX(90deg);
291 + transform-origin: top center;
292 + transition:
293 + opacity var(--router-transition-duration) ease-out,
294 + transform var(--router-transition-duration) ease-out;
295 + }
296 +
297 &.open {
298 grid-template-rows: 1fr;
299 opacity: 1;
300 @apply pt-3;
301 +
302 + &::after {
303 + transform: rotateX(0deg);
304 + }
305 }
306 }
307 }
frontend/src/types/incidentManagement/alerts.d.ts
+9
@@ -1,5 +1,14 @@
1 import type { Case } from "./cases.d"
2
3 +export type AlertsFilter =
4 + | { status: AlertStatus }
5 + | { assetName: string }
6 + | { assignedTo: string }
7 + | { tag: string | string[] }
8 + | { title: string }
9 + | { customerCode: string }
10 + | { source: string }
11 +
12 export interface Alert {
13 id: number
14 alert_creation_time: Date
frontend/src/views/agents/Overview.vue
+2 -2
@@ -96,8 +96,8 @@
96 <AlertsList
97 v-if="agent"
98 class="px-1"
99 - :preset="{ type: 'assetName', value: agent.hostname }"
100 - hide-filters
99 + :preset="[{ type: 'assetName', value: agent.hostname }]"
100 + :show-filters="false"
101 />
102 </div>
103 </n-tab-pane>