Epss (#261)
* add epss api logic * update: dependencies * improve: PinnedPages component responsiveness * add: EpssScore api/types * update: app theme store * add: VulnerabilityEpss component * precommit fixes --------- Co-authored-by: Davide Di Modica <webmaster.ddm@gmail.com>
taylor_socfortress committed
Jun 28, 2024 at 08:44 UTC
031ea3767822885b3bd3e1e1dd440f1ba0a4c3c7
21 files changed
+1219
-402
backend/app/routers/threat_intel.py
+7
@@ -1,5 +1,6 @@
1
from fastapi import APIRouter
2
3
+from app.threat_intel.routes.epss import threat_intel_epss_router
4
from app.threat_intel.routes.socfortress import threat_intel_socfortress_router
5
6
# Instantiate the APIRouter
@@ -11,3 +12,9 @@ router.include_router(
12
prefix="/threat_intel",
13
tags=["Threat Intel"],
14
)
15
+
16
+router.include_router(
17
+ threat_intel_epss_router,
18
+ prefix="/threat_intel",
19
+ tags=["Threat Intel"],
20
+)
backend/app/threat_intel/routes/epss.py
new
+38
@@ -0,0 +1,38 @@
1
+from fastapi import APIRouter
2
+from fastapi import Security
3
+from loguru import logger
4
+
5
+from app.auth.utils import AuthHandler
6
+from app.threat_intel.schema.epss import EpssThreatIntelRequest
7
+from app.threat_intel.schema.epss import EpssThreatIntelResponse
8
+from app.threat_intel.services.epss import collect_epss_score
9
+
10
+# App specific imports
11
+
12
+threat_intel_epss_router = APIRouter()
13
+
14
+
15
+@threat_intel_epss_router.post(
16
+ "/epss",
17
+ response_model=EpssThreatIntelResponse,
18
+ description="Threat Intel EPSS Score",
19
+ dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
20
+)
21
+async def threat_intel_epss(
22
+ request: EpssThreatIntelRequest,
23
+):
24
+ """
25
+ Endpoint for SocFortress Threat Intel.
26
+
27
+ This endpoint allows authorized users with 'admin' or 'analyst' scope to perform SocFortress threat intelligence lookup.
28
+
29
+ Parameters:
30
+ - request: SocfortressThreatIntelRequest - The request payload containing the necessary information for the lookup.
31
+ - session: AsyncSession (optional) - The database session to use for the lookup.
32
+ - _key_exists: bool (optional) - A dependency to ensure the API key exists.
33
+
34
+ Returns:
35
+ - IoCResponse: The response model containing the results of the SocFortress threat intelligence lookup.
36
+ """
37
+ logger.info(f"Received request for EPSS score: {request}")
38
+ return await collect_epss_score(request)
backend/app/threat_intel/schema/epss.py
new
+44
@@ -0,0 +1,44 @@
1
+from typing import List
2
+from typing import Optional
3
+
4
+from pydantic import BaseModel
5
+from pydantic import Field
6
+
7
+
8
+class EpssThreatIntelRequest(BaseModel):
9
+ cve: str = Field(
10
+ ...,
11
+ description="The CVE to evaluate.",
12
+ )
13
+
14
+
15
+class EpssData(BaseModel):
16
+ cve: str
17
+ epss: str
18
+ percentile: str
19
+ date: str
20
+
21
+
22
+class EpssApiResponse(BaseModel):
23
+ status: str
24
+ status_code: int
25
+ version: str
26
+ access_control_allow_headers: Optional[str]
27
+ access: str
28
+ total: int
29
+ offset: int
30
+ limit: int
31
+ data: List[EpssData]
32
+
33
+ def to_dict(self):
34
+ return self.dict()
35
+
36
+
37
+class EpssThreatIntelResponse(BaseModel):
38
+ data: Optional[List[EpssData]] = Field(None, description="The data for the IoC")
39
+ success: bool = Field(..., description="Indicates if it was successful")
40
+ message: str = Field(None, description="Message about the IoC")
41
+ the_epss_model: str = Field(
42
+ "https://www.first.org/epss/model",
43
+ description="The EPSS model description",
44
+ )
backend/app/threat_intel/services/epss.py
new
+62
@@ -0,0 +1,62 @@
1
+import httpx
2
+from fastapi import HTTPException
3
+from loguru import logger
4
+
5
+from app.threat_intel.schema.epss import EpssData
6
+from app.threat_intel.schema.epss import EpssThreatIntelRequest
7
+from app.threat_intel.schema.epss import EpssThreatIntelResponse
8
+
9
+
10
+async def invoke_epss_api(
11
+ url: str,
12
+ request: EpssThreatIntelRequest,
13
+) -> dict:
14
+ """
15
+ Invokes the Socfortress Process Analysis API with the provided API key, URL, and request parameters.
16
+
17
+ Args:
18
+ api_key (str): The API key for authentication.
19
+ url (str): The URL of the Socfortress Intel URL
20
+ request (SocfortressProcessNameAnalysisRequest): The request object containing the Process Name
21
+
22
+ Returns:
23
+ dict: The JSON response from the Process Name Analysis API.
24
+
25
+ Raises:
26
+ httpx.HTTPStatusError: If the API request fails with a non-successful status code.
27
+ """
28
+ headers = {"content-type": "application/json"}
29
+ params = {"cve": f"{request.cve}"}
30
+ logger.info(f"Invoking EPSS with params: {params} and headers: {headers} and url: {url}")
31
+ async with httpx.AsyncClient() as client:
32
+ response = await client.get(url, headers=headers, params=params)
33
+ return response.json()
34
+
35
+
36
+async def collect_epss_score(
37
+ request: EpssThreatIntelRequest,
38
+) -> EpssThreatIntelResponse:
39
+ """
40
+ Retrieves IoC response from Socfortress Threat Intel API.
41
+
42
+ Args:
43
+ request (SocfortressProcessNameAnalysisRequest): The request object containing the IoC data.
44
+ session (AsyncSession): The async session object for making HTTP requests.
45
+
46
+ Returns:
47
+ SocfortressProcessNameAnalysisResponse: The response object containing the IoC data and success status.
48
+ """
49
+ url = "https://api.first.org/data/v1/epss"
50
+ response_data = await invoke_epss_api(url, request)
51
+
52
+ # If status-code is not 200, raise an HTTPException
53
+ if response_data.get("status-code") != 200:
54
+ raise HTTPException(
55
+ status_code=500,
56
+ detail="Failed to retrieve EPSS score",
57
+ )
58
+
59
+ # Using .get() with default values
60
+ data = [EpssData(**item) for item in response_data.get("data", [])]
61
+
62
+ return EpssThreatIntelResponse(data=data, success=True, message="EPSS score retrieved successfully")
backend/app/threat_intel/services/socfortress.py
-1
@@ -227,7 +227,6 @@ async def get_process_analysis_response(
227
228
# Using .get() with default values
229
data = response_data.get("data", {})
230
- logger.info(f"Data {data}")
230
success = response_data.get("success", False)
231
message = response_data.get("message", "No message provided")
232
frontend/package-lock.json
+782
-266
@@ -14,19 +14,19 @@
14
"@fontsource/lexend": "^5.0.20",
15
"@fontsource/public-sans": "^5.0.18",
16
"@popperjs/core": "^2.11.8",
17
- "@shikijs/markdown-it": "^1.9.0",
17
+ "@shikijs/markdown-it": "^1.9.1",
18
"@vueuse/components": "^10.11.0",
19
"@vueuse/core": "^10.11.0",
20
- "apexcharts": "^3.49.1",
20
+ "apexcharts": "^3.49.2",
21
"bytes": "^3.1.2",
22
"colord": "^2.9.3",
23
"crypto-js": "^4.2.0",
24
"dayjs": "^1.11.11",
25
"detect-touch-device": "^1.1.6",
26
- "echarts": "^5.5.0",
26
+ "echarts": "^5.5.1",
27
"file-saver": "^2.0.5",
28
"html-entities": "^2.5.2",
29
- "jose": "^5.4.1",
29
+ "jose": "^5.6.2",
30
"js-md5": "^0.8.3",
31
"lodash": "^4.17.21",
32
"mitt": "^3.0.1",
@@ -35,9 +35,9 @@
35
"pinia": "^2.1.7",
36
"pinia-plugin-persistedstate": "^3.2.1",
37
"secure-ls": "^2.0.0",
38
- "shiki": "^1.9.0",
38
+ "shiki": "^1.9.1",
39
"validator": "^13.12.0",
40
- "vue": "^3.4.30",
40
+ "vue": "^3.4.31",
41
"vue-advanced-cropper": "^2.8.9",
42
"vue-highlight-words": "^3.0.1",
43
"vue-i18n": "^9.13.1",
@@ -56,8 +56,8 @@
56
"@types/fs-extra": "^11.0.4",
57
"@types/inquirer": "^9.0.7",
58
"@types/jsdom": "^21.1.7",
59
- "@types/lodash": "^4.17.5",
60
- "@types/node": "^20.14.8",
59
+ "@types/lodash": "^4.17.6",
60
+ "@types/node": "^20.14.9",
61
"@types/validator": "^13.12.0",
62
"@vitejs/plugin-vue": "^5.0.5",
63
"@vitejs/plugin-vue-jsx": "^4.0.0",
@@ -83,10 +83,10 @@
83
"start-server-and-test": "^2.0.4",
84
"tailwind-config-viewer": "^2.0.4",
85
"tailwindcss": "^3.4.4",
86
- "taze": "^0.13.8",
86
+ "taze": "^0.13.9",
87
"type-fest": "^4.20.1",
88
- "unplugin-vue-components": "^0.27.0",
89
- "vite": "^5.3.1",
88
+ "unplugin-vue-components": "^0.27.2",
89
+ "vite": "^5.3.2",
90
"vite-bundle-analyzer": "^0.10.3",
91
"vite-bundle-visualizer": "^1.2.1",
92
"vite-plugin-vue-devtools": "^7.3.4",
@@ -150,9 +150,9 @@
150
}
151
},
152
"node_modules/@antfu/utils": {
153
- "version": "0.7.8",
154
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.8.tgz",
155
- "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==",
153
+ "version": "0.7.10",
154
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz",
155
+ "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==",
156
"funding": {
157
"url": "https://github.com/sponsors/antfu"
158
}
@@ -729,6 +729,7 @@
729
},
730
"node_modules/@clack/prompts/node_modules/is-unicode-supported": {
731
"version": "1.3.0",
732
+ "dev": true,
733
"inBundle": true,
734
"license": "MIT",
735
"engines": {
@@ -1200,9 +1201,9 @@
1201
}
1202
},
1203
"node_modules/@eslint-community/regexpp": {
1203
- "version": "4.10.1",
1204
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz",
1205
- "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==",
1204
+ "version": "4.11.0",
1205
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
1206
+ "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
1207
"engines": {
1208
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
1209
}
@@ -2045,26 +2046,26 @@
2046
]
2047
},
2048
"node_modules/@shikijs/core": {
2048
- "version": "1.9.0",
2049
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.9.0.tgz",
2050
- "integrity": "sha512-cbSoY8P/jgGByG8UOl3jnP/CWg/Qk+1q+eAKWtcrU3pNoILF8wTsLB0jT44qUBV8Ce1SvA9uqcM9Xf+u3fJFBw=="
2049
+ "version": "1.9.1",
2050
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.9.1.tgz",
2051
+ "integrity": "sha512-EmUful2MQtY8KgCF1OkBtOuMcvaZEvmdubhW0UHCGXi21O9dRLeADVCj+k6ZS+de7Mz9d2qixOXJ+GLhcK3pXg=="
2052
},
2053
"node_modules/@shikijs/markdown-it": {
2053
- "version": "1.9.0",
2054
- "resolved": "https://registry.npmjs.org/@shikijs/markdown-it/-/markdown-it-1.9.0.tgz",
2055
- "integrity": "sha512-y1DUEL0wf0UZ30dW1NBx4L9uQs2RN4x5gEZpM7t2/LmMGbJ7d2Hr8mzBlSU9+RWxqSirWX7e6av0tJLhcmd/Hw==",
2054
+ "version": "1.9.1",
2055
+ "resolved": "https://registry.npmjs.org/@shikijs/markdown-it/-/markdown-it-1.9.1.tgz",
2056
+ "integrity": "sha512-0f5Lfwx+e6t6lQPZAX2BZxlhzN6aBhB83FfgmC2yegx4Id7YGCsi3/aaipDZT2nityqiNEY+Mmdg2Fr4++EJWg==",
2057
"dependencies": {
2057
- "@shikijs/transformers": "1.9.0",
2058
+ "@shikijs/transformers": "1.9.1",
2059
"markdown-it": "^14.1.0",
2059
- "shiki": "1.9.0"
2060
+ "shiki": "1.9.1"
2061
}
2062
},
2063
"node_modules/@shikijs/transformers": {
2063
- "version": "1.9.0",
2064
- "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.9.0.tgz",
2065
- "integrity": "sha512-wo8dNbZtFtVhKtw8BnXIT/FDTGMwEdWcQSIRa78ou14JGkMYxSCBN942W5+IRUifP5BwVUWgkXBYX/M3FUFkeg==",
2064
+ "version": "1.9.1",
2065
+ "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.9.1.tgz",
2066
+ "integrity": "sha512-wPrGTpBURQ95IKPIhPQE3bGsANpPPtea1+aVHZp0aYtgxfL5UM3QbJ5rNdCuhcyjz/JNp5ZvSItOr+ayJxebJQ==",
2067
"dependencies": {
2067
- "shiki": "1.9.0"
2068
+ "shiki": "1.9.1"
2069
}
2070
},
2071
"node_modules/@sideway/address": {
@@ -2178,9 +2179,9 @@
2179
"integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="
2180
},
2181
"node_modules/@types/lodash": {
2181
- "version": "4.17.5",
2182
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.5.tgz",
2183
- "integrity": "sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw=="
2182
+ "version": "4.17.6",
2183
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.6.tgz",
2184
+ "integrity": "sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA=="
2185
},
2186
"node_modules/@types/lodash-es": {
2187
"version": "4.17.12",
@@ -2191,9 +2192,9 @@
2192
}
2193
},
2194
"node_modules/@types/node": {
2194
- "version": "20.14.8",
2195
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz",
2196
- "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==",
2195
+ "version": "20.14.9",
2196
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
2197
+ "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
2198
"dev": true,
2199
"dependencies": {
2200
"undici-types": "~5.26.4"
@@ -2253,16 +2254,16 @@
2254
}
2255
},
2256
"node_modules/@typescript-eslint/eslint-plugin": {
2256
- "version": "7.13.0",
2257
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.0.tgz",
2258
- "integrity": "sha512-FX1X6AF0w8MdVFLSdqwqN/me2hyhuQg4ykN6ZpVhh1ij/80pTvDKclX1sZB9iqex8SjQfVhwMKs3JtnnMLzG9w==",
2257
+ "version": "7.14.1",
2258
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz",
2259
+ "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==",
2260
"dev": true,
2261
"dependencies": {
2262
"@eslint-community/regexpp": "^4.10.0",
2262
- "@typescript-eslint/scope-manager": "7.13.0",
2263
- "@typescript-eslint/type-utils": "7.13.0",
2264
- "@typescript-eslint/utils": "7.13.0",
2265
- "@typescript-eslint/visitor-keys": "7.13.0",
2263
+ "@typescript-eslint/scope-manager": "7.14.1",
2264
+ "@typescript-eslint/type-utils": "7.14.1",
2265
+ "@typescript-eslint/utils": "7.14.1",
2266
+ "@typescript-eslint/visitor-keys": "7.14.1",
2267
"graphemer": "^1.4.0",
2268
"ignore": "^5.3.1",
2269
"natural-compare": "^1.4.0",
@@ -2286,13 +2287,13 @@
2287
}
2288
},
2289
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
2289
- "version": "7.13.0",
2290
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz",
2291
- "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==",
2290
+ "version": "7.14.1",
2291
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz",
2292
+ "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==",
2293
"dev": true,
2294
"dependencies": {
2294
- "@typescript-eslint/types": "7.13.0",
2295
- "@typescript-eslint/visitor-keys": "7.13.0"
2295
+ "@typescript-eslint/types": "7.14.1",
2296
+ "@typescript-eslint/visitor-keys": "7.14.1"
2297
},
2298
"engines": {
2299
"node": "^18.18.0 || >=20.0.0"
@@ -2303,9 +2304,9 @@
2304
}
2305
},
2306
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
2306
- "version": "7.13.0",
2307
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz",
2308
- "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==",
2307
+ "version": "7.14.1",
2308
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz",
2309
+ "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==",
2310
"dev": true,
2311
"engines": {
2312
"node": "^18.18.0 || >=20.0.0"
@@ -2316,13 +2317,13 @@
2317
}
2318
},
2319
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": {
2319
- "version": "7.13.0",
2320
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz",
2321
- "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==",
2320
+ "version": "7.14.1",
2321
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz",
2322
+ "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==",
2323
"dev": true,
2324
"dependencies": {
2324
- "@typescript-eslint/types": "7.13.0",
2325
- "@typescript-eslint/visitor-keys": "7.13.0",
2325
+ "@typescript-eslint/types": "7.14.1",
2326
+ "@typescript-eslint/visitor-keys": "7.14.1",
2327
"debug": "^4.3.4",
2328
"globby": "^11.1.0",
2329
"is-glob": "^4.0.3",
@@ -2344,15 +2345,15 @@
2345
}
2346
},
2347
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
2347
- "version": "7.13.0",
2348
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.0.tgz",
2349
- "integrity": "sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==",
2348
+ "version": "7.14.1",
2349
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz",
2350
+ "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==",
2351
"dev": true,
2352
"dependencies": {
2353
"@eslint-community/eslint-utils": "^4.4.0",
2353
- "@typescript-eslint/scope-manager": "7.13.0",
2354
- "@typescript-eslint/types": "7.13.0",
2355
- "@typescript-eslint/typescript-estree": "7.13.0"
2354
+ "@typescript-eslint/scope-manager": "7.14.1",
2355
+ "@typescript-eslint/types": "7.14.1",
2356
+ "@typescript-eslint/typescript-estree": "7.14.1"
2357
},
2358
"engines": {
2359
"node": "^18.18.0 || >=20.0.0"
@@ -2366,12 +2367,12 @@
2367
}
2368
},
2369
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
2369
- "version": "7.13.0",
2370
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz",
2371
- "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==",
2370
+ "version": "7.14.1",
2371
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz",
2372
+ "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==",
2373
"dev": true,
2374
"dependencies": {
2374
- "@typescript-eslint/types": "7.13.0",
2375
+ "@typescript-eslint/types": "7.14.1",
2376
"eslint-visitor-keys": "^3.4.3"
2377
},
2378
"engines": {
@@ -2383,9 +2384,9 @@
2384
}
2385
},
2386
"node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": {
2386
- "version": "9.0.4",
2387
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
2388
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
2387
+ "version": "9.0.5",
2388
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
2389
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
2390
"dev": true,
2391
"dependencies": {
2392
"brace-expansion": "^2.0.1"
@@ -2398,15 +2399,15 @@
2399
}
2400
},
2401
"node_modules/@typescript-eslint/parser": {
2401
- "version": "7.13.0",
2402
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.0.tgz",
2403
- "integrity": "sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==",
2402
+ "version": "7.14.1",
2403
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz",
2404
+ "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==",
2405
"dev": true,
2406
"dependencies": {
2406
- "@typescript-eslint/scope-manager": "7.13.0",
2407
- "@typescript-eslint/types": "7.13.0",
2408
- "@typescript-eslint/typescript-estree": "7.13.0",
2409
- "@typescript-eslint/visitor-keys": "7.13.0",
2407
+ "@typescript-eslint/scope-manager": "7.14.1",
2408
+ "@typescript-eslint/types": "7.14.1",
2409
+ "@typescript-eslint/typescript-estree": "7.14.1",
2410
+ "@typescript-eslint/visitor-keys": "7.14.1",
2411
"debug": "^4.3.4"
2412
},
2413
"engines": {
@@ -2426,13 +2427,13 @@
2427
}
2428
},
2429
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
2429
- "version": "7.13.0",
2430
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz",
2431
- "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==",
2430
+ "version": "7.14.1",
2431
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz",
2432
+ "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==",
2433
"dev": true,
2434
"dependencies": {
2434
- "@typescript-eslint/types": "7.13.0",
2435
- "@typescript-eslint/visitor-keys": "7.13.0"
2435
+ "@typescript-eslint/types": "7.14.1",
2436
+ "@typescript-eslint/visitor-keys": "7.14.1"
2437
},
2438
"engines": {
2439
"node": "^18.18.0 || >=20.0.0"
@@ -2443,9 +2444,9 @@
2444
}
2445
},
2446
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
2446
- "version": "7.13.0",
2447
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz",
2448
- "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==",
2447
+ "version": "7.14.1",
2448
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz",
2449
+ "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==",
2450
"dev": true,
2451
"engines": {
2452
"node": "^18.18.0 || >=20.0.0"
@@ -2456,13 +2457,13 @@
2457
}
2458
},
2459
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
2459
- "version": "7.13.0",
2460
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz",
2461
- "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==",
2460
+ "version": "7.14.1",
2461
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz",
2462
+ "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==",
2463
"dev": true,
2464
"dependencies": {
2464
- "@typescript-eslint/types": "7.13.0",
2465
- "@typescript-eslint/visitor-keys": "7.13.0",
2465
+ "@typescript-eslint/types": "7.14.1",
2466
+ "@typescript-eslint/visitor-keys": "7.14.1",
2467
"debug": "^4.3.4",
2468
"globby": "^11.1.0",
2469
"is-glob": "^4.0.3",
@@ -2484,12 +2485,12 @@
2485
}
2486
},
2487
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
2487
- "version": "7.13.0",
2488
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz",
2489
- "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==",
2488
+ "version": "7.14.1",
2489
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz",
2490
+ "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==",
2491
"dev": true,
2492
"dependencies": {
2492
- "@typescript-eslint/types": "7.13.0",
2493
+ "@typescript-eslint/types": "7.14.1",
2494
"eslint-visitor-keys": "^3.4.3"
2495
},
2496
"engines": {
@@ -2501,9 +2502,9 @@
2502
}
2503
},
2504
"node_modules/@typescript-eslint/parser/node_modules/minimatch": {
2504
- "version": "9.0.4",
2505
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
2506
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
2505
+ "version": "9.0.5",
2506
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
2507
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
2508
"dev": true,
2509
"dependencies": {
2510
"brace-expansion": "^2.0.1"
@@ -2532,13 +2533,13 @@
2533
}
2534
},
2535
"node_modules/@typescript-eslint/type-utils": {
2535
- "version": "7.13.0",
2536
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.0.tgz",
2537
- "integrity": "sha512-xMEtMzxq9eRkZy48XuxlBFzpVMDurUAfDu5Rz16GouAtXm0TaAoTFzqWUFPPuQYXI/CDaH/Bgx/fk/84t/Bc9A==",
2536
+ "version": "7.14.1",
2537
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz",
2538
+ "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==",
2539
"dev": true,
2540
"dependencies": {
2540
- "@typescript-eslint/typescript-estree": "7.13.0",
2541
- "@typescript-eslint/utils": "7.13.0",
2541
+ "@typescript-eslint/typescript-estree": "7.14.1",
2542
+ "@typescript-eslint/utils": "7.14.1",
2543
"debug": "^4.3.4",
2544
"ts-api-utils": "^1.3.0"
2545
},
@@ -2559,13 +2560,13 @@
2560
}
2561
},
2562
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": {
2562
- "version": "7.13.0",
2563
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz",
2564
- "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==",
2563
+ "version": "7.14.1",
2564
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz",
2565
+ "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==",
2566
"dev": true,
2567
"dependencies": {
2567
- "@typescript-eslint/types": "7.13.0",
2568
- "@typescript-eslint/visitor-keys": "7.13.0"
2568
+ "@typescript-eslint/types": "7.14.1",
2569
+ "@typescript-eslint/visitor-keys": "7.14.1"
2570
},
2571
"engines": {
2572
"node": "^18.18.0 || >=20.0.0"
@@ -2576,9 +2577,9 @@
2577
}
2578
},
2579
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
2579
- "version": "7.13.0",
2580
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz",
2581
- "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==",
2580
+ "version": "7.14.1",
2581
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz",
2582
+ "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==",
2583
"dev": true,
2584
"engines": {
2585
"node": "^18.18.0 || >=20.0.0"
@@ -2589,13 +2590,13 @@
2590
}
2591
},
2592
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
2592
- "version": "7.13.0",
2593
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz",
2594
- "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==",
2593
+ "version": "7.14.1",
2594
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz",
2595
+ "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==",
2596
"dev": true,
2597
"dependencies": {
2597
- "@typescript-eslint/types": "7.13.0",
2598
- "@typescript-eslint/visitor-keys": "7.13.0",
2598
+ "@typescript-eslint/types": "7.14.1",
2599
+ "@typescript-eslint/visitor-keys": "7.14.1",
2600
"debug": "^4.3.4",
2601
"globby": "^11.1.0",
2602
"is-glob": "^4.0.3",
@@ -2617,15 +2618,15 @@
2618
}
2619
},
2620
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": {
2620
- "version": "7.13.0",
2621
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.0.tgz",
2622
- "integrity": "sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==",
2621
+ "version": "7.14.1",
2622
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz",
2623
+ "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==",
2624
"dev": true,
2625
"dependencies": {
2626
"@eslint-community/eslint-utils": "^4.4.0",
2626
- "@typescript-eslint/scope-manager": "7.13.0",
2627
- "@typescript-eslint/types": "7.13.0",
2628
- "@typescript-eslint/typescript-estree": "7.13.0"
2627
+ "@typescript-eslint/scope-manager": "7.14.1",
2628
+ "@typescript-eslint/types": "7.14.1",
2629
+ "@typescript-eslint/typescript-estree": "7.14.1"
2630
},
2631
"engines": {
2632
"node": "^18.18.0 || >=20.0.0"
@@ -2639,12 +2640,12 @@
2640
}
2641
},
2642
"node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
2642
- "version": "7.13.0",
2643
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz",
2644
- "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==",
2643
+ "version": "7.14.1",
2644
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz",
2645
+ "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==",
2646
"dev": true,
2647
"dependencies": {
2647
- "@typescript-eslint/types": "7.13.0",
2648
+ "@typescript-eslint/types": "7.14.1",
2649
"eslint-visitor-keys": "^3.4.3"
2650
},
2651
"engines": {
@@ -2656,9 +2657,9 @@
2657
}
2658
},
2659
"node_modules/@typescript-eslint/type-utils/node_modules/minimatch": {
2659
- "version": "9.0.4",
2660
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
2661
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
2660
+ "version": "9.0.5",
2661
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
2662
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
2663
"dev": true,
2664
"dependencies": {
2665
"brace-expansion": "^2.0.1"
@@ -2941,27 +2942,27 @@
2942
}
2943
},
2944
"node_modules/@volar/language-core": {
2944
- "version": "2.3.3",
2945
- "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.3.tgz",
2946
- "integrity": "sha512-Blu4NQaRszEsgK/QvWFRSQPRAhPDbYef+peFV9Gb86swxRCs01q7h673/HYstaPsTbjh/F5mXjozoOFxQ8tLYw==",
2945
+ "version": "2.3.4",
2946
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.4.tgz",
2947
+ "integrity": "sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==",
2948
"dev": true,
2949
"dependencies": {
2949
- "@volar/source-map": "2.3.3"
2950
+ "@volar/source-map": "2.3.4"
2951
}
2952
},
2953
"node_modules/@volar/source-map": {
2953
- "version": "2.3.3",
2954
- "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.3.tgz",
2955
- "integrity": "sha512-eFRHA13hxiGPt+Xa0EX3yNd50ozctnW5KzQj/IllKmSK/KuBEkSAsIhBdOxCpv1YhV4GmI3iKG9peOs6k9LtnA==",
2954
+ "version": "2.3.4",
2955
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.4.tgz",
2956
+ "integrity": "sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==",
2957
"dev": true
2958
},
2959
"node_modules/@volar/typescript": {
2959
- "version": "2.3.3",
2960
- "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.3.tgz",
2961
- "integrity": "sha512-cwGMSwqIR54Hngu5dYmUJPHFpo6KGj7BlpwT2G9WTKwEjFlH4g/0IPeq064428DAi/VMP42vqAQSBiEHi5Gc4A==",
2960
+ "version": "2.3.4",
2961
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.4.tgz",
2962
+ "integrity": "sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==",
2963
"dev": true,
2964
"dependencies": {
2964
- "@volar/language-core": "2.3.3",
2965
+ "@volar/language-core": "2.3.4",
2966
"path-browserify": "^1.0.1",
2967
"vscode-uri": "^3.0.8"
2968
}
@@ -3040,36 +3041,36 @@
3041
}
3042
},
3043
"node_modules/@vue/compiler-core": {
3043
- "version": "3.4.30",
3044
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.30.tgz",
3045
- "integrity": "sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==",
3044
+ "version": "3.4.31",
3045
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.31.tgz",
3046
+ "integrity": "sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==",
3047
"dependencies": {
3048
"@babel/parser": "^7.24.7",
3048
- "@vue/shared": "3.4.30",
3049
+ "@vue/shared": "3.4.31",
3050
"entities": "^4.5.0",
3051
"estree-walker": "^2.0.2",
3052
"source-map-js": "^1.2.0"
3053
}
3054
},
3055
"node_modules/@vue/compiler-dom": {
3055
- "version": "3.4.30",
3056
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.30.tgz",
3057
- "integrity": "sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==",
3056
+ "version": "3.4.31",
3057
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.31.tgz",
3058
+ "integrity": "sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==",
3059
"dependencies": {
3059
- "@vue/compiler-core": "3.4.30",
3060
- "@vue/shared": "3.4.30"
3060
+ "@vue/compiler-core": "3.4.31",
3061
+ "@vue/shared": "3.4.31"
3062
}
3063
},
3064
"node_modules/@vue/compiler-sfc": {
3064
- "version": "3.4.30",
3065
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.30.tgz",
3066
- "integrity": "sha512-8vElKklHn/UY8+FgUFlQrYAPbtiSB2zcgeRKW7HkpSRn/JjMRmZvuOtwDx036D1aqKNSTtXkWRfqx53Qb+HmMg==",
3065
+ "version": "3.4.31",
3066
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.31.tgz",
3067
+ "integrity": "sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==",
3068
"dependencies": {
3069
"@babel/parser": "^7.24.7",
3069
- "@vue/compiler-core": "3.4.30",
3070
- "@vue/compiler-dom": "3.4.30",
3071
- "@vue/compiler-ssr": "3.4.30",
3072
- "@vue/shared": "3.4.30",
3070
+ "@vue/compiler-core": "3.4.31",
3071
+ "@vue/compiler-dom": "3.4.31",
3072
+ "@vue/compiler-ssr": "3.4.31",
3073
+ "@vue/shared": "3.4.31",
3074
"estree-walker": "^2.0.2",
3075
"magic-string": "^0.30.10",
3076
"postcss": "^8.4.38",
@@ -3077,12 +3078,12 @@
3078
}
3079
},
3080
"node_modules/@vue/compiler-ssr": {
3080
- "version": "3.4.30",
3081
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.30.tgz",
3082
- "integrity": "sha512-ZJ56YZGXJDd6jky4mmM0rNaNP6kIbQu9LTKZDhcpddGe/3QIalB1WHHmZ6iZfFNyj5mSypTa4+qDJa5VIuxMSg==",
3081
+ "version": "3.4.31",
3082
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.31.tgz",
3083
+ "integrity": "sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==",
3084
"dependencies": {
3084
- "@vue/compiler-dom": "3.4.30",
3085
- "@vue/shared": "3.4.30"
3085
+ "@vue/compiler-dom": "3.4.31",
3086
+ "@vue/shared": "3.4.31"
3087
}
3088
},
3089
"node_modules/@vue/devtools-api": {
@@ -3194,49 +3195,49 @@
3195
}
3196
},
3197
"node_modules/@vue/reactivity": {
3197
- "version": "3.4.30",
3198
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.30.tgz",
3199
- "integrity": "sha512-bVJurnCe3LS0JII8PPoAA63Zd2MBzcKrEzwdQl92eHCcxtIbxD2fhNwJpa+KkM3Y/A4T5FUnmdhgKwOf6BfbcA==",
3198
+ "version": "3.4.31",
3199
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.31.tgz",
3200
+ "integrity": "sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==",
3201
"dependencies": {
3201
- "@vue/shared": "3.4.30"
3202
+ "@vue/shared": "3.4.31"
3203
}
3204
},
3205
"node_modules/@vue/runtime-core": {
3205
- "version": "3.4.30",
3206
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.30.tgz",
3207
- "integrity": "sha512-qaFEbnNpGz+tlnkaualomogzN8vBLkgzK55uuWjYXbYn039eOBZrWxyXWq/7qh9Bz2FPifZqGjVDl/FXiq9L2g==",
3206
+ "version": "3.4.31",
3207
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.31.tgz",
3208
+ "integrity": "sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==",
3209
"dependencies": {
3209
- "@vue/reactivity": "3.4.30",
3210
- "@vue/shared": "3.4.30"
3210
+ "@vue/reactivity": "3.4.31",
3211
+ "@vue/shared": "3.4.31"
3212
}
3213
},
3214
"node_modules/@vue/runtime-dom": {
3214
- "version": "3.4.30",
3215
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.30.tgz",
3216
- "integrity": "sha512-tV6B4YiZRj5QsaJgw2THCy5C1H+2UeywO9tqgWEc21tn85qHEERndHN/CxlyXvSBFrpmlexCIdnqPuR9RM9thw==",
3215
+ "version": "3.4.31",
3216
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.31.tgz",
3217
+ "integrity": "sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==",
3218
"dependencies": {
3218
- "@vue/reactivity": "3.4.30",
3219
- "@vue/runtime-core": "3.4.30",
3220
- "@vue/shared": "3.4.30",
3219
+ "@vue/reactivity": "3.4.31",
3220
+ "@vue/runtime-core": "3.4.31",
3221
+ "@vue/shared": "3.4.31",
3222
"csstype": "^3.1.3"
3223
}
3224
},
3225
"node_modules/@vue/server-renderer": {
3225
- "version": "3.4.30",
3226
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.30.tgz",
3227
- "integrity": "sha512-TBD3eqR1DeDc0cMrXS/vEs/PWzq1uXxnvjoqQuDGFIEHFIwuDTX/KWAQKIBjyMWLFHEeTDGYVsYci85z2UbTDg==",
3226
+ "version": "3.4.31",
3227
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.31.tgz",
3228
+ "integrity": "sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==",
3229
"dependencies": {
3229
- "@vue/compiler-ssr": "3.4.30",
3230
- "@vue/shared": "3.4.30"
3230
+ "@vue/compiler-ssr": "3.4.31",
3231
+ "@vue/shared": "3.4.31"
3232
},
3233
"peerDependencies": {
3233
- "vue": "3.4.30"
3234
+ "vue": "3.4.31"
3235
}
3236
},
3237
"node_modules/@vue/shared": {
3237
- "version": "3.4.30",
3238
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.30.tgz",
3239
- "integrity": "sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg=="
3238
+ "version": "3.4.31",
3239
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.31.tgz",
3240
+ "integrity": "sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA=="
3241
},
3242
"node_modules/@vue/test-utils": {
3243
"version": "2.4.6",
@@ -3546,9 +3547,9 @@
3547
}
3548
},
3549
"node_modules/apexcharts": {
3549
- "version": "3.49.1",
3550
- "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.1.tgz",
3551
- "integrity": "sha512-MqGtlq/KQuO8j0BBsUJYlRG8VBctKwYdwuBtajHgHTmSgUU3Oai+8oYN/rKCXwXzrUlYA+GiMgotAIbXY2BCGw==",
3550
+ "version": "3.49.2",
3551
+ "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.2.tgz",
3552
+ "integrity": "sha512-vBB8KgwfD9rSObA7s4kY2rU6DeaN67gTR3JN7r32ztgKVf8lKkdFQ6iUhk6oIHrV7W8PoHhr5EwKymn0z5Fz6A==",
3553
"dependencies": {
3554
"@yr/monotone-cubic-spline": "^1.0.3",
3555
"svg.draggable.js": "^2.2.2",
@@ -3914,6 +3915,21 @@
3915
"url": "https://github.com/sponsors/sindresorhus"
3916
}
3917
},
3918
+ "node_modules/bundle-require": {
3919
+ "version": "5.0.0",
3920
+ "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.0.0.tgz",
3921
+ "integrity": "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==",
3922
+ "dev": true,
3923
+ "dependencies": {
3924
+ "load-tsconfig": "^0.2.3"
3925
+ },
3926
+ "engines": {
3927
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
3928
+ },
3929
+ "peerDependencies": {
3930
+ "esbuild": ">=0.18"
3931
+ }
3932
+ },
3933
"node_modules/bytes": {
3934
"version": "3.1.2",
3935
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -4008,9 +4024,9 @@
4024
}
4025
},
4026
"node_modules/caniuse-lite": {
4011
- "version": "1.0.30001634",
4012
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz",
4013
- "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==",
4027
+ "version": "1.0.30001638",
4028
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001638.tgz",
4029
+ "integrity": "sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==",
4030
"dev": true,
4031
"funding": [
4032
{
@@ -5067,12 +5083,12 @@
5083
}
5084
},
5085
"node_modules/echarts": {
5070
- "version": "5.5.0",
5071
- "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz",
5072
- "integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==",
5086
+ "version": "5.5.1",
5087
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz",
5088
+ "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
5089
"dependencies": {
5090
"tslib": "2.3.0",
5075
- "zrender": "5.5.0"
5091
+ "zrender": "5.6.0"
5092
}
5093
},
5094
"node_modules/editorconfig": {
@@ -5124,9 +5140,9 @@
5140
"dev": true
5141
},
5142
"node_modules/electron-to-chromium": {
5127
- "version": "1.4.802",
5128
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.802.tgz",
5129
- "integrity": "sha512-TnTMUATbgNdPXVSHsxvNVSG0uEd6cSZsANjm8c9HbvflZVVn1yTRcmVXYT1Ma95/ssB/Dcd30AHweH2TE+dNpA==",
5143
+ "version": "1.4.814",
5144
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.814.tgz",
5145
+ "integrity": "sha512-GVulpHjFu1Y9ZvikvbArHmAhZXtm3wHlpjTMcXNGKl4IQ4jMQjlnz8yMQYYqdLHKi/jEL2+CBC2akWVCoIGUdw==",
5146
"dev": true
5147
},
5148
"node_modules/emoji-regex": {
@@ -5605,11 +5621,11 @@
5621
}
5622
},
5623
"node_modules/espree": {
5608
- "version": "10.0.1",
5609
- "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz",
5610
- "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==",
5624
+ "version": "10.1.0",
5625
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
5626
+ "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
5627
"dependencies": {
5612
- "acorn": "^8.11.3",
5628
+ "acorn": "^8.12.0",
5629
"acorn-jsx": "^5.3.2",
5630
"eslint-visitor-keys": "^4.0.0"
5631
},
@@ -5947,9 +5963,9 @@
5963
}
5964
},
5965
"node_modules/foreground-child": {
5950
- "version": "3.2.0",
5951
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz",
5952
- "integrity": "sha512-CrWQNaEl1/6WeZoarcM9LHupTo3RpZO2Pdk1vktwzPiQTsJnAKJmm3TACKeG5UZbWDfaH2AbvYxzP96y0MT7fA==",
5966
+ "version": "3.2.1",
5967
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
5968
+ "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
5969
"dev": true,
5970
"dependencies": {
5971
"cross-spawn": "^7.0.0",
@@ -6129,6 +6145,18 @@
6145
"url": "https://github.com/sponsors/sindresorhus"
6146
}
6147
},
6148
+ "node_modules/get-tsconfig": {
6149
+ "version": "4.7.5",
6150
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz",
6151
+ "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==",
6152
+ "dev": true,
6153
+ "dependencies": {
6154
+ "resolve-pkg-maps": "^1.0.0"
6155
+ },
6156
+ "funding": {
6157
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
6158
+ }
6159
+ },
6160
"node_modules/getos": {
6161
"version": "3.2.1",
6162
"resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz",
@@ -6148,15 +6176,16 @@
6176
}
6177
},
6178
"node_modules/glob": {
6151
- "version": "10.4.1",
6152
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
6153
- "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
6179
+ "version": "10.4.2",
6180
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz",
6181
+ "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==",
6182
"dev": true,
6183
"dependencies": {
6184
"foreground-child": "^3.1.0",
6185
"jackspeak": "^3.1.2",
6186
"minimatch": "^9.0.4",
6187
"minipass": "^7.1.2",
6188
+ "package-json-from-dist": "^1.0.0",
6189
"path-scurry": "^1.11.1"
6190
},
6191
"bin": {
@@ -6181,9 +6210,9 @@
6210
}
6211
},
6212
"node_modules/glob/node_modules/minimatch": {
6184
- "version": "9.0.4",
6185
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
6186
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
6213
+ "version": "9.0.5",
6214
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
6215
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
6216
"dev": true,
6217
"dependencies": {
6218
"brace-expansion": "^2.0.1"
@@ -6494,9 +6523,9 @@
6523
}
6524
},
6525
"node_modules/https-proxy-agent": {
6497
- "version": "7.0.4",
6498
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
6499
- "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
6526
+ "version": "7.0.5",
6527
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
6528
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
6529
"dev": true,
6530
"dependencies": {
6531
"agent-base": "^7.0.2",
@@ -6599,6 +6628,430 @@
6628
"url": "https://github.com/sponsors/wooorm"
6629
}
6630
},
6631
+ "node_modules/importx": {
6632
+ "version": "0.3.7",
6633
+ "resolved": "https://registry.npmjs.org/importx/-/importx-0.3.7.tgz",
6634
+ "integrity": "sha512-K2+4GWH3ftMEbwLUK4IVC1qmk5POIofYb+2dHua1Szl5hQexSKv/QfwruTMzROqFWXnPUDJml5CnRiyk1YAesg==",
6635
+ "dev": true,
6636
+ "dependencies": {
6637
+ "bundle-require": "^5.0.0",
6638
+ "debug": "^4.3.5",
6639
+ "esbuild": "^0.20.2",
6640
+ "jiti": "^1.21.6",
6641
+ "pathe": "^1.1.2",
6642
+ "pkg-types": "^1.1.1",
6643
+ "tsx": "^4.15.6"
6644
+ },
6645
+ "funding": {
6646
+ "url": "https://github.com/sponsors/antfu"
6647
+ }
6648
+ },
6649
+ "node_modules/importx/node_modules/@esbuild/aix-ppc64": {
6650
+ "version": "0.20.2",
6651
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
6652
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
6653
+ "cpu": [
6654
+ "ppc64"
6655
+ ],
6656
+ "dev": true,
6657
+ "optional": true,
6658
+ "os": [
6659
+ "aix"
6660
+ ],
6661
+ "engines": {
6662
+ "node": ">=12"
6663
+ }
6664
+ },
6665
+ "node_modules/importx/node_modules/@esbuild/android-arm": {
6666
+ "version": "0.20.2",
6667
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
6668
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
6669
+ "cpu": [
6670
+ "arm"
6671
+ ],
6672
+ "dev": true,
6673
+ "optional": true,
6674
+ "os": [
6675
+ "android"
6676
+ ],
6677
+ "engines": {
6678
+ "node": ">=12"
6679
+ }
6680
+ },
6681
+ "node_modules/importx/node_modules/@esbuild/android-arm64": {
6682
+ "version": "0.20.2",
6683
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
6684
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
6685
+ "cpu": [
6686
+ "arm64"
6687
+ ],
6688
+ "dev": true,
6689
+ "optional": true,
6690
+ "os": [
6691
+ "android"
6692
+ ],
6693
+ "engines": {
6694
+ "node": ">=12"
6695
+ }
6696
+ },
6697
+ "node_modules/importx/node_modules/@esbuild/android-x64": {
6698
+ "version": "0.20.2",
6699
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
6700
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
6701
+ "cpu": [
6702
+ "x64"
6703
+ ],
6704
+ "dev": true,
6705
+ "optional": true,
6706
+ "os": [
6707
+ "android"
6708
+ ],
6709
+ "engines": {
6710
+ "node": ">=12"
6711
+ }
6712
+ },
6713
+ "node_modules/importx/node_modules/@esbuild/darwin-arm64": {
6714
+ "version": "0.20.2",
6715
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
6716
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
6717
+ "cpu": [
6718
+ "arm64"
6719
+ ],
6720
+ "dev": true,
6721
+ "optional": true,
6722
+ "os": [
6723
+ "darwin"
6724
+ ],
6725
+ "engines": {
6726
+ "node": ">=12"
6727
+ }
6728
+ },
6729
+ "node_modules/importx/node_modules/@esbuild/darwin-x64": {
6730
+ "version": "0.20.2",
6731
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
6732
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
6733
+ "cpu": [
6734
+ "x64"
6735
+ ],
6736
+ "dev": true,
6737
+ "optional": true,
6738
+ "os": [
6739
+ "darwin"
6740
+ ],
6741
+ "engines": {
6742
+ "node": ">=12"
6743
+ }
6744
+ },
6745
+ "node_modules/importx/node_modules/@esbuild/freebsd-arm64": {
6746
+ "version": "0.20.2",
6747
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
6748
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
6749
+ "cpu": [
6750
+ "arm64"
6751
+ ],
6752
+ "dev": true,
6753
+ "optional": true,
6754
+ "os": [
6755
+ "freebsd"
6756
+ ],
6757
+ "engines": {
6758
+ "node": ">=12"
6759
+ }
6760
+ },
6761
+ "node_modules/importx/node_modules/@esbuild/freebsd-x64": {
6762
+ "version": "0.20.2",
6763
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
6764
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
6765
+ "cpu": [
6766
+ "x64"
6767
+ ],
6768
+ "dev": true,
6769
+ "optional": true,
6770
+ "os": [
6771
+ "freebsd"
6772
+ ],
6773
+ "engines": {
6774
+ "node": ">=12"
6775
+ }
6776
+ },
6777
+ "node_modules/importx/node_modules/@esbuild/linux-arm": {
6778
+ "version": "0.20.2",
6779
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
6780
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
6781
+ "cpu": [
6782
+ "arm"
6783
+ ],
6784
+ "dev": true,
6785
+ "optional": true,
6786
+ "os": [
6787
+ "linux"
6788
+ ],
6789
+ "engines": {
6790
+ "node": ">=12"
6791
+ }
6792
+ },
6793
+ "node_modules/importx/node_modules/@esbuild/linux-arm64": {
6794
+ "version": "0.20.2",
6795
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
6796
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
6797
+ "cpu": [
6798
+ "arm64"
6799
+ ],
6800
+ "dev": true,
6801
+ "optional": true,
6802
+ "os": [
6803
+ "linux"
6804
+ ],
6805
+ "engines": {
6806
+ "node": ">=12"
6807
+ }
6808
+ },
6809
+ "node_modules/importx/node_modules/@esbuild/linux-ia32": {
6810
+ "version": "0.20.2",
6811
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
6812
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
6813
+ "cpu": [
6814
+ "ia32"
6815
+ ],
6816
+ "dev": true,
6817
+ "optional": true,
6818
+ "os": [
6819
+ "linux"
6820
+ ],
6821
+ "engines": {
6822
+ "node": ">=12"
6823
+ }
6824
+ },
6825
+ "node_modules/importx/node_modules/@esbuild/linux-loong64": {
6826
+ "version": "0.20.2",
6827
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
6828
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
6829
+ "cpu": [
6830
+ "loong64"
6831
+ ],
6832
+ "dev": true,
6833
+ "optional": true,
6834
+ "os": [
6835
+ "linux"
6836
+ ],
6837
+ "engines": {
6838
+ "node": ">=12"
6839
+ }
6840
+ },
6841
+ "node_modules/importx/node_modules/@esbuild/linux-mips64el": {
6842
+ "version": "0.20.2",
6843
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
6844
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
6845
+ "cpu": [
6846
+ "mips64el"
6847
+ ],
6848
+ "dev": true,
6849
+ "optional": true,
6850
+ "os": [
6851
+ "linux"
6852
+ ],
6853
+ "engines": {
6854
+ "node": ">=12"
6855
+ }
6856
+ },
6857
+ "node_modules/importx/node_modules/@esbuild/linux-ppc64": {
6858
+ "version": "0.20.2",
6859
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
6860
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
6861
+ "cpu": [
6862
+ "ppc64"
6863
+ ],
6864
+ "dev": true,
6865
+ "optional": true,
6866
+ "os": [
6867
+ "linux"
6868
+ ],
6869
+ "engines": {
6870
+ "node": ">=12"
6871
+ }
6872
+ },
6873
+ "node_modules/importx/node_modules/@esbuild/linux-riscv64": {
6874
+ "version": "0.20.2",
6875
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
6876
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
6877
+ "cpu": [
6878
+ "riscv64"
6879
+ ],
6880
+ "dev": true,
6881
+ "optional": true,
6882
+ "os": [
6883
+ "linux"
6884
+ ],
6885
+ "engines": {
6886
+ "node": ">=12"
6887
+ }
6888
+ },
6889
+ "node_modules/importx/node_modules/@esbuild/linux-s390x": {
6890
+ "version": "0.20.2",
6891
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
6892
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
6893
+ "cpu": [
6894
+ "s390x"
6895
+ ],
6896
+ "dev": true,
6897
+ "optional": true,
6898
+ "os": [
6899
+ "linux"
6900
+ ],
6901
+ "engines": {
6902
+ "node": ">=12"
6903
+ }
6904
+ },
6905
+ "node_modules/importx/node_modules/@esbuild/linux-x64": {
6906
+ "version": "0.20.2",
6907
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
6908
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
6909
+ "cpu": [
6910
+ "x64"
6911
+ ],
6912
+ "dev": true,
6913
+ "optional": true,
6914
+ "os": [
6915
+ "linux"
6916
+ ],
6917
+ "engines": {
6918
+ "node": ">=12"
6919
+ }
6920
+ },
6921
+ "node_modules/importx/node_modules/@esbuild/netbsd-x64": {
6922
+ "version": "0.20.2",
6923
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
6924
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
6925
+ "cpu": [
6926
+ "x64"
6927
+ ],
6928
+ "dev": true,
6929
+ "optional": true,
6930
+ "os": [
6931
+ "netbsd"
6932
+ ],
6933
+ "engines": {
6934
+ "node": ">=12"
6935
+ }
6936
+ },
6937
+ "node_modules/importx/node_modules/@esbuild/openbsd-x64": {
6938
+ "version": "0.20.2",
6939
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
6940
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
6941
+ "cpu": [
6942
+ "x64"
6943
+ ],
6944
+ "dev": true,
6945
+ "optional": true,
6946
+ "os": [
6947
+ "openbsd"
6948
+ ],
6949
+ "engines": {
6950
+ "node": ">=12"
6951
+ }
6952
+ },
6953
+ "node_modules/importx/node_modules/@esbuild/sunos-x64": {
6954
+ "version": "0.20.2",
6955
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
6956
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
6957
+ "cpu": [
6958
+ "x64"
6959
+ ],
6960
+ "dev": true,
6961
+ "optional": true,
6962
+ "os": [
6963
+ "sunos"
6964
+ ],
6965
+ "engines": {
6966
+ "node": ">=12"
6967
+ }
6968
+ },
6969
+ "node_modules/importx/node_modules/@esbuild/win32-arm64": {
6970
+ "version": "0.20.2",
6971
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
6972
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
6973
+ "cpu": [
6974
+ "arm64"
6975
+ ],
6976
+ "dev": true,
6977
+ "optional": true,
6978
+ "os": [
6979
+ "win32"
6980
+ ],
6981
+ "engines": {
6982
+ "node": ">=12"
6983
+ }
6984
+ },
6985
+ "node_modules/importx/node_modules/@esbuild/win32-ia32": {
6986
+ "version": "0.20.2",
6987
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
6988
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
6989
+ "cpu": [
6990
+ "ia32"
6991
+ ],
6992
+ "dev": true,
6993
+ "optional": true,
6994
+ "os": [
6995
+ "win32"
6996
+ ],
6997
+ "engines": {
6998
+ "node": ">=12"
6999
+ }
7000
+ },
7001
+ "node_modules/importx/node_modules/@esbuild/win32-x64": {
7002
+ "version": "0.20.2",
7003
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
7004
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
7005
+ "cpu": [
7006
+ "x64"
7007
+ ],
7008
+ "dev": true,
7009
+ "optional": true,
7010
+ "os": [
7011
+ "win32"
7012
+ ],
7013
+ "engines": {
7014
+ "node": ">=12"
7015
+ }
7016
+ },
7017
+ "node_modules/importx/node_modules/esbuild": {
7018
+ "version": "0.20.2",
7019
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
7020
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
7021
+ "dev": true,
7022
+ "hasInstallScript": true,
7023
+ "bin": {
7024
+ "esbuild": "bin/esbuild"
7025
+ },
7026
+ "engines": {
7027
+ "node": ">=12"
7028
+ },
7029
+ "optionalDependencies": {
7030
+ "@esbuild/aix-ppc64": "0.20.2",
7031
+ "@esbuild/android-arm": "0.20.2",
7032
+ "@esbuild/android-arm64": "0.20.2",
7033
+ "@esbuild/android-x64": "0.20.2",
7034
+ "@esbuild/darwin-arm64": "0.20.2",
7035
+ "@esbuild/darwin-x64": "0.20.2",
7036
+ "@esbuild/freebsd-arm64": "0.20.2",
7037
+ "@esbuild/freebsd-x64": "0.20.2",
7038
+ "@esbuild/linux-arm": "0.20.2",
7039
+ "@esbuild/linux-arm64": "0.20.2",
7040
+ "@esbuild/linux-ia32": "0.20.2",
7041
+ "@esbuild/linux-loong64": "0.20.2",
7042
+ "@esbuild/linux-mips64el": "0.20.2",
7043
+ "@esbuild/linux-ppc64": "0.20.2",
7044
+ "@esbuild/linux-riscv64": "0.20.2",
7045
+ "@esbuild/linux-s390x": "0.20.2",
7046
+ "@esbuild/linux-x64": "0.20.2",
7047
+ "@esbuild/netbsd-x64": "0.20.2",
7048
+ "@esbuild/openbsd-x64": "0.20.2",
7049
+ "@esbuild/sunos-x64": "0.20.2",
7050
+ "@esbuild/win32-arm64": "0.20.2",
7051
+ "@esbuild/win32-ia32": "0.20.2",
7052
+ "@esbuild/win32-x64": "0.20.2"
7053
+ }
7054
+ },
7055
"node_modules/imurmurhash": {
7056
"version": "0.1.4",
7057
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -6667,12 +7120,15 @@
7120
}
7121
},
7122
"node_modules/is-core-module": {
6670
- "version": "2.13.1",
6671
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
6672
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
7123
+ "version": "2.14.0",
7124
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
7125
+ "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
7126
"dev": true,
7127
"dependencies": {
6675
- "hasown": "^2.0.0"
7128
+ "hasown": "^2.0.2"
7129
+ },
7130
+ "engines": {
7131
+ "node": ">= 0.4"
7132
},
7133
"funding": {
7134
"url": "https://github.com/sponsors/ljharb"
@@ -6899,9 +7355,9 @@
7355
}
7356
},
7357
"node_modules/joi": {
6902
- "version": "17.13.1",
6903
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz",
6904
- "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==",
7358
+ "version": "17.13.3",
7359
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
7360
+ "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
7361
"dev": true,
7362
"dependencies": {
7363
"@hapi/hoek": "^9.3.0",
@@ -6912,9 +7368,9 @@
7368
}
7369
},
7370
"node_modules/jose": {
6915
- "version": "5.4.1",
6916
- "resolved": "https://registry.npmjs.org/jose/-/jose-5.4.1.tgz",
6917
- "integrity": "sha512-U6QajmpV/nhL9SyfAewo000fkiRQ+Yd2H0lBxJJ9apjpOgkOcBQJWOrMo917lxLptdS/n/o/xPzMkXhF46K8hQ==",
7371
+ "version": "5.6.2",
7372
+ "resolved": "https://registry.npmjs.org/jose/-/jose-5.6.2.tgz",
7373
+ "integrity": "sha512-F1t1/WZJ4JdmCE/XoMYw1dPOW5g8JF0xGm6Ox2fwaCAPlCzt+4Bh0EWP59iQuZNHHauDkCdjx+kCZSh5z/PGow==",
7374
"funding": {
7375
"url": "https://github.com/sponsors/panva"
7376
}
@@ -7440,6 +7896,15 @@
7896
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
7897
}
7898
},
7899
+ "node_modules/load-tsconfig": {
7900
+ "version": "0.2.5",
7901
+ "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz",
7902
+ "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==",
7903
+ "dev": true,
7904
+ "engines": {
7905
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
7906
+ }
7907
+ },
7908
"node_modules/local-pkg": {
7909
"version": "0.5.0",
7910
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
@@ -8094,10 +8559,13 @@
8559
}
8560
},
8561
"node_modules/object-inspect": {
8097
- "version": "1.13.1",
8098
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
8099
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
8562
+ "version": "1.13.2",
8563
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
8564
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
8565
"dev": true,
8566
+ "engines": {
8567
+ "node": ">= 0.4"
8568
+ },
8569
"funding": {
8570
"url": "https://github.com/sponsors/ljharb"
8571
}
@@ -8225,6 +8693,12 @@
8693
"url": "https://github.com/sponsors/sindresorhus"
8694
}
8695
},
8696
+ "node_modules/package-json-from-dist": {
8697
+ "version": "1.0.0",
8698
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
8699
+ "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
8700
+ "dev": true
8701
+ },
8702
"node_modules/parent-module": {
8703
"version": "1.0.1",
8704
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -8319,9 +8793,9 @@
8793
}
8794
},
8795
"node_modules/path-scurry/node_modules/lru-cache": {
8322
- "version": "10.2.2",
8323
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
8324
- "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
8796
+ "version": "10.3.0",
8797
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz",
8798
+ "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==",
8799
"dev": true,
8800
"engines": {
8801
"node": "14 || >=16.14"
@@ -9151,6 +9625,15 @@
9625
"node": ">= 0.6"
9626
}
9627
},
9628
+ "node_modules/resolve-pkg-maps": {
9629
+ "version": "1.0.0",
9630
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
9631
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
9632
+ "dev": true,
9633
+ "funding": {
9634
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
9635
+ }
9636
+ },
9637
"node_modules/restore-cursor": {
9638
"version": "3.1.0",
9639
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
@@ -9441,11 +9924,11 @@
9924
}
9925
},
9926
"node_modules/shiki": {
9444
- "version": "1.9.0",
9445
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.9.0.tgz",
9446
- "integrity": "sha512-i6//Lqgn7+7nZA0qVjoYH0085YdNk4MC+tJV4bo+HgjgRMJ0JmkLZzFAuvVioJqLkcGDK5GAMpghZEZkCnwxpQ==",
9927
+ "version": "1.9.1",
9928
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.9.1.tgz",
9929
+ "integrity": "sha512-8PDkgb5ja3nfujTjvC4VytL6wGOGCtFAClUb2r3QROevYXxcq+/shVJK5s6gy0HZnjaJgFxd6BpPqpRfqne5rA==",
9930
"dependencies": {
9448
- "@shikijs/core": "1.9.0"
9931
+ "@shikijs/core": "1.9.1"
9932
}
9933
},
9934
"node_modules/side-channel": {
@@ -10114,9 +10597,9 @@
10597
}
10598
},
10599
"node_modules/taze": {
10117
- "version": "0.13.8",
10118
- "resolved": "https://registry.npmjs.org/taze/-/taze-0.13.8.tgz",
10119
- "integrity": "sha512-FaHz2S04VTaAuqfhkA9XXj+GQH4Qq7lhpie0xqE4q8tJTPwHkZki41eKKOpbe2dtHwoIlLLG3MDtoOQwhOnD9A==",
10600
+ "version": "0.13.9",
10601
+ "resolved": "https://registry.npmjs.org/taze/-/taze-0.13.9.tgz",
10602
+ "integrity": "sha512-qBKfViatIEkw7GNlHU8wV28MtRbdrpwxjcZbcqtCi6gHv2X0JAZ9+K8cp4O5UfVjEvFiafw5iSosBlKM7Fb4XA==",
10603
"dev": true,
10604
"dependencies": {
10605
"@antfu/ni": "^0.21.12",
@@ -10124,10 +10607,10 @@
10607
"cli-progress": "^3.12.0",
10608
"deepmerge": "^4.3.1",
10609
"detect-indent": "^7.0.1",
10127
- "picocolors": "^1.0.0",
10610
+ "picocolors": "^1.0.1",
10611
"prompts": "^2.4.2",
10612
"ufo": "^1.5.3",
10130
- "unconfig": "^0.3.13",
10613
+ "unconfig": "^0.4.4",
10614
"yargs": "^17.7.2"
10615
},
10616
"bin": {
@@ -10137,6 +10620,20 @@
10620
"url": "https://github.com/sponsors/antfu"
10621
}
10622
},
10623
+ "node_modules/taze/node_modules/unconfig": {
10624
+ "version": "0.4.4",
10625
+ "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.4.4.tgz",
10626
+ "integrity": "sha512-Dmz2VZAnx5yxANZ5koy5u6bLd/GJ8dgr0y6/78+40obWIsnvZdTIxLMIx6qBqsabzGTB4yUiMRIOV4hwwVM2pQ==",
10627
+ "dev": true,
10628
+ "dependencies": {
10629
+ "@antfu/utils": "^0.7.8",
10630
+ "defu": "^6.1.4",
10631
+ "importx": "^0.3.6"
10632
+ },
10633
+ "funding": {
10634
+ "url": "https://github.com/sponsors/antfu"
10635
+ }
10636
+ },
10637
"node_modules/text-table": {
10638
"version": "0.2.0",
10639
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -10321,6 +10818,25 @@
10818
"node": ">=0.6.x"
10819
}
10820
},
10821
+ "node_modules/tsx": {
10822
+ "version": "4.15.7",
10823
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.15.7.tgz",
10824
+ "integrity": "sha512-u3H0iSFDZM3za+VxkZ1kywdCeHCn+8/qHQS1MNoO2sONDgD95HlWtt8aB23OzeTmFP9IU4/8bZUdg58Uu5J4cg==",
10825
+ "dev": true,
10826
+ "dependencies": {
10827
+ "esbuild": "~0.21.4",
10828
+ "get-tsconfig": "^4.7.5"
10829
+ },
10830
+ "bin": {
10831
+ "tsx": "dist/cli.mjs"
10832
+ },
10833
+ "engines": {
10834
+ "node": ">=18.0.0"
10835
+ },
10836
+ "optionalDependencies": {
10837
+ "fsevents": "~2.3.3"
10838
+ }
10839
+ },
10840
"node_modules/tunnel-agent": {
10841
"version": "0.6.0",
10842
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -10385,9 +10901,9 @@
10901
}
10902
},
10903
"node_modules/typescript": {
10388
- "version": "5.4.5",
10389
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
10390
- "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
10904
+ "version": "5.5.2",
10905
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz",
10906
+ "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==",
10907
"peer": true,
10908
"bin": {
10909
"tsc": "bin/tsc",
@@ -10452,20 +10968,20 @@
10968
}
10969
},
10970
"node_modules/unplugin-vue-components": {
10455
- "version": "0.27.0",
10456
- "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.27.0.tgz",
10457
- "integrity": "sha512-77eTEy23sQ0UpzGWnZ9I2mY3cnmXwklz4ITcn3JfxjCoX643ghImkiZ4nFm58sxbdVcc4Fo/o4LIoFnlqEqsSg==",
10971
+ "version": "0.27.2",
10972
+ "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.27.2.tgz",
10973
+ "integrity": "sha512-YifnsmslMRNt+JRQiCG4ZX1+xUQuubUZm76K7Qtg8dmchZJkHIDxZSyfZb5/jqrLWMTm/TUjGJ3ZDlzO6SFnSQ==",
10974
"dev": true,
10975
"dependencies": {
10460
- "@antfu/utils": "^0.7.7",
10976
+ "@antfu/utils": "^0.7.10",
10977
"@rollup/pluginutils": "^5.1.0",
10978
"chokidar": "^3.6.0",
10463
- "debug": "^4.3.4",
10979
+ "debug": "^4.3.5",
10980
"fast-glob": "^3.3.2",
10981
"local-pkg": "^0.5.0",
10982
"magic-string": "^0.30.10",
10467
- "minimatch": "^9.0.4",
10468
- "resolve": "^1.22.8",
10983
+ "minimatch": "^9.0.5",
10984
+ "mlly": "^1.7.1",
10985
"unplugin": "^1.10.1"
10986
},
10987
"engines": {
@@ -10489,9 +11005,9 @@
11005
}
11006
},
11007
"node_modules/unplugin-vue-components/node_modules/minimatch": {
10492
- "version": "9.0.4",
10493
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
10494
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
11008
+ "version": "9.0.5",
11009
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
11010
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
11011
"dev": true,
11012
"dependencies": {
11013
"brace-expansion": "^2.0.1"
@@ -10617,9 +11133,9 @@
11133
}
11134
},
11135
"node_modules/vite": {
10620
- "version": "5.3.1",
10621
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz",
10622
- "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==",
11136
+ "version": "5.3.2",
11137
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.2.tgz",
11138
+ "integrity": "sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==",
11139
"dev": true,
11140
"dependencies": {
11141
"esbuild": "^0.21.3",
@@ -11212,15 +11728,15 @@
11728
"dev": true
11729
},
11730
"node_modules/vue": {
11215
- "version": "3.4.30",
11216
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.30.tgz",
11217
- "integrity": "sha512-NcxtKCwkdf1zPsr7Y8+QlDBCGqxvjLXF2EX+yi76rV5rrz90Y6gK1cq0olIhdWGgrlhs9ElHuhi9t3+W5sG5Xw==",
11731
+ "version": "3.4.31",
11732
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.31.tgz",
11733
+ "integrity": "sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==",
11734
"dependencies": {
11219
- "@vue/compiler-dom": "3.4.30",
11220
- "@vue/compiler-sfc": "3.4.30",
11221
- "@vue/runtime-dom": "3.4.30",
11222
- "@vue/server-renderer": "3.4.30",
11223
- "@vue/shared": "3.4.30"
11735
+ "@vue/compiler-dom": "3.4.31",
11736
+ "@vue/compiler-sfc": "3.4.31",
11737
+ "@vue/runtime-dom": "3.4.31",
11738
+ "@vue/server-renderer": "3.4.31",
11739
+ "@vue/shared": "3.4.31"
11740
},
11741
"peerDependencies": {
11742
"typescript": "*"
@@ -11249,9 +11765,9 @@
11765
}
11766
},
11767
"node_modules/vue-component-type-helpers": {
11252
- "version": "2.0.21",
11253
- "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.0.21.tgz",
11254
- "integrity": "sha512-3NaicyZ7N4B6cft4bfb7dOnPbE9CjLcx+6wZWAg5zwszfO4qXRh+U52dN5r5ZZfc6iMaxKCEcoH9CmxxoFZHLg==",
11768
+ "version": "2.0.22",
11769
+ "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.0.22.tgz",
11770
+ "integrity": "sha512-gPr2Ba7efUwy/Vfbuf735bHSVdN4ycoZUCHfypkI33M9DUH+ieRblLLVM2eImccFYaWNWwEzURx02EgoXDBmaQ==",
11771
"dev": true
11772
},
11773
"node_modules/vue-eslint-parser": {
@@ -11827,9 +12343,9 @@
12343
}
12344
},
12345
"node_modules/zrender": {
11830
- "version": "5.5.0",
11831
- "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.5.0.tgz",
11832
- "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==",
12346
+ "version": "5.6.0",
12347
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz",
12348
+ "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
12349
"dependencies": {
12350
"tslib": "2.3.0"
12351
}
frontend/package.json
+11
-11
@@ -36,19 +36,19 @@
36
"@fontsource/lexend": "^5.0.20",
37
"@fontsource/public-sans": "^5.0.18",
38
"@popperjs/core": "^2.11.8",
39
- "@shikijs/markdown-it": "^1.9.0",
39
+ "@shikijs/markdown-it": "^1.9.1",
40
"@vueuse/components": "^10.11.0",
41
"@vueuse/core": "^10.11.0",
42
- "apexcharts": "^3.49.1",
42
+ "apexcharts": "^3.49.2",
43
"bytes": "^3.1.2",
44
"colord": "^2.9.3",
45
"crypto-js": "^4.2.0",
46
"dayjs": "^1.11.11",
47
"detect-touch-device": "^1.1.6",
48
- "echarts": "^5.5.0",
48
+ "echarts": "^5.5.1",
49
"file-saver": "^2.0.5",
50
"html-entities": "^2.5.2",
51
- "jose": "^5.4.1",
51
+ "jose": "^5.6.2",
52
"js-md5": "^0.8.3",
53
"lodash": "^4.17.21",
54
"mitt": "^3.0.1",
@@ -57,9 +57,9 @@
57
"pinia": "^2.1.7",
58
"pinia-plugin-persistedstate": "^3.2.1",
59
"secure-ls": "^2.0.0",
60
- "shiki": "^1.9.0",
60
+ "shiki": "^1.9.1",
61
"validator": "^13.12.0",
62
- "vue": "^3.4.30",
62
+ "vue": "^3.4.31",
63
"vue-advanced-cropper": "^2.8.9",
64
"vue-highlight-words": "^3.0.1",
65
"vue-i18n": "^9.13.1",
@@ -78,8 +78,8 @@
78
"@types/fs-extra": "^11.0.4",
79
"@types/inquirer": "^9.0.7",
80
"@types/jsdom": "^21.1.7",
81
- "@types/lodash": "^4.17.5",
82
- "@types/node": "^20.14.8",
81
+ "@types/lodash": "^4.17.6",
82
+ "@types/node": "^20.14.9",
83
"@types/validator": "^13.12.0",
84
"@vitejs/plugin-vue": "^5.0.5",
85
"@vitejs/plugin-vue-jsx": "^4.0.0",
@@ -105,10 +105,10 @@
105
"start-server-and-test": "^2.0.4",
106
"tailwind-config-viewer": "^2.0.4",
107
"tailwindcss": "^3.4.4",
108
- "taze": "^0.13.8",
108
+ "taze": "^0.13.9",
109
"type-fest": "^4.20.1",
110
- "unplugin-vue-components": "^0.27.0",
111
- "vite": "^5.3.1",
110
+ "unplugin-vue-components": "^0.27.2",
111
+ "vite": "^5.3.2",
112
"vite-bundle-analyzer": "^0.10.3",
113
"vite-bundle-visualizer": "^1.2.1",
114
"vite-plugin-vue-devtools": "^7.3.4",
frontend/src/api/threatIntel.ts
+10
-1
@@ -1,6 +1,6 @@
1
import { HttpClient } from "./httpClient"
2
import type { FlaskBaseResponse } from "@/types/flask.d"
3
-import type { EvaluationData, ThreatIntelResponse } from "@/types/threatIntel.d"
3
+import type { EpssScore, EvaluationData, ThreatIntelResponse } from "@/types/threatIntel.d"
4
5
export default {
6
create(iocValue: string) {
@@ -14,5 +14,14 @@ export default {
14
process_name: processName
15
}
16
return HttpClient.post<FlaskBaseResponse & { data: EvaluationData }>(`/threat_intel/process_name`, body)
17
+ },
18
+ epssScore(cve: string) {
19
+ const body = {
20
+ cve
21
+ }
22
+ return HttpClient.post<FlaskBaseResponse & { data: EpssScore[]; the_epss_model: string }>(
23
+ `/threat_intel/epss`,
24
+ body
25
+ )
26
}
27
}
frontend/src/components/agents/vulnerabilities/VulnerabilityCard.vue
+6
@@ -86,6 +86,11 @@
86
</ul>
87
</div>
88
</n-tab-pane>
89
+ <n-tab-pane name="EPSS Score" tab="EPSS Score" display-directive="show:lazy">
90
+ <div class="p-7 pt-2">
91
+ <VulnerabilityEpss :cve="vulnerability.cve" />
92
+ </div>
93
+ </n-tab-pane>
94
</n-tabs>
95
</n-modal>
96
</div>
@@ -101,6 +106,7 @@ import Icon from "@/components/common/Icon.vue"
106
import KVCard from "@/components/common/KVCard.vue"
107
import { useSettingsStore } from "@/stores/settings"
108
import _truncate from "lodash/truncate"
109
+import VulnerabilityEpss from "./VulnerabilityEpss.vue"
110
111
const props = defineProps<{
112
vulnerability: AgentVulnerabilities
frontend/src/components/agents/vulnerabilities/VulnerabilityEpss.vue
new
+103
@@ -0,0 +1,103 @@
1
+<template>
2
+ <n-spin :show="loading" content-class="min-h-32">
3
+ <div class="mb-4">
4
+ <KVCard>
5
+ <template #key>cve</template>
6
+ <template #value>{{ cve }}</template>
7
+ </KVCard>
8
+ </div>
9
+ <div class="flex flex-col gap-3" v-if="epssList.length">
10
+ <n-card
11
+ content-class="bg-secondary-color"
12
+ class="overflow-hidden item-appear item-appear-bottom item-appear-005"
13
+ v-for="item of epssList"
14
+ :key="item.___id"
15
+ >
16
+ <div class="flex justify-between gap-8 xs:!flex-row flex-col">
17
+ <n-statistic class="grow" label="Date">
18
+ <span class="stats-value whitespace-nowrap">
19
+ {{ formatDate(item.date, dFormats.date) }}
20
+ </span>
21
+ </n-statistic>
22
+ <n-statistic class="grow" label="EPSS">
23
+ <span class="stats-value">
24
+ {{ item.epss }}
25
+ </span>
26
+ </n-statistic>
27
+ <n-statistic class="grow" label="Percentile">
28
+ <span class="stats-value">
29
+ {{ item.percentile }}
30
+ </span>
31
+ </n-statistic>
32
+ </div>
33
+ </n-card>
34
+ <p v-if="epssModelLink" class="w-full text-right">
35
+ EPSS Model:
36
+ <a :href="epssModelLink" target="_blank">{{ epssModelLink }}</a>
37
+ </p>
38
+ </div>
39
+ <template v-else>
40
+ <n-empty description="No items found" class="justify-center h-48" v-if="!loading" />
41
+ </template>
42
+ </n-spin>
43
+</template>
44
+
45
+<script setup lang="ts">
46
+import { ref, onBeforeMount } from "vue"
47
+import { useMessage, NSpin, NEmpty, NCard, NStatistic } from "naive-ui"
48
+import Api from "@/api"
49
+import type { EpssScore } from "@/types/threatIntel.d"
50
+import { formatDate } from "@/utils"
51
+import KVCard from "@/components/common/KVCard.vue"
52
+import { nanoid } from "nanoid"
53
+import { useSettingsStore } from "@/stores/settings"
54
+
55
+interface EpssScoreExt extends EpssScore {
56
+ ___id?: string
57
+}
58
+
59
+const { cve } = defineProps<{
60
+ cve: string
61
+}>()
62
+
63
+const dFormats = useSettingsStore().dateFormat
64
+const message = useMessage()
65
+const loading = ref(false)
66
+const epssList = ref<EpssScoreExt[]>([])
67
+const epssModelLink = ref<string | null>(null)
68
+
69
+function getData() {
70
+ loading.value = true
71
+
72
+ Api.threatIntel
73
+ .epssScore(cve)
74
+ .then(res => {
75
+ if (res.data.success) {
76
+ epssList.value = ((res.data.data as EpssScoreExt[]) || []).map(o => {
77
+ o.___id = nanoid()
78
+ return o
79
+ })
80
+ epssModelLink.value = res.data.the_epss_model
81
+ } else {
82
+ message.warning(res.data?.message || "An error occurred. Please try again later.")
83
+ }
84
+ })
85
+ .catch(err => {
86
+ message.error(err.response?.data?.message || "An error occurred. Please try again later.")
87
+ })
88
+ .finally(() => {
89
+ loading.value = false
90
+ })
91
+}
92
+
93
+onBeforeMount(() => {
94
+ getData()
95
+})
96
+</script>
97
+
98
+<style lang="scss" scoped>
99
+.stats-value {
100
+ font-family: var(--font-family-mono);
101
+ font-size: clamp(18px, 2.3vw, var(--n-value-font-size));
102
+}
103
+</style>
frontend/src/components/common/CardStatsIcon.vue
+1
-1
@@ -27,7 +27,7 @@ const { boxed, boxSize, iconSize, iconName, color } = toRefs(props)
27
28
const style = computed(() => useThemeStore().style)
29
30
-const iconColor = computed(() => color?.value || style.value["--primary-color"])
30
+const iconColor = computed(() => color?.value || style.value["primary-color"])
31
const iconBoxedSize = computed(() => (boxSize.value / 100) * 45)
32
const iconFinalSize = computed(() => (boxed?.value ? iconBoxedSize.value : iconSize.value))
33
</script>
frontend/src/components/common/ListPercentage.vue
+3
-3
@@ -17,9 +17,9 @@
17
type="line"
18
:percentage="parseInt(item[percentageKey as keyof typeof item], 10)"
19
:indicator-placement="'inside'"
20
- :indicator-text-color="style['--bg-color']"
21
- :color="style['--fg-color']"
22
- :rail-color="style['--divider-020-color']"
20
+ :indicator-text-color="style['bg-color']"
21
+ :color="style['fg-color']"
22
+ :rail-color="style['divider-020-color']"
23
class="font-mono font-bold"
24
/>
25
</div>
frontend/src/components/graylog/Metrics/UncommittedEntries.vue
+2
-2
@@ -94,7 +94,7 @@ function getOptions() {
94
xaxis: {
95
type: "datetime"
96
},
97
- colors: [style.value["--primary-color"]],
97
+ colors: [style.value["primary-color"]],
98
tooltip: {
99
x: {
100
formatter: (time: number) => {
@@ -107,7 +107,7 @@ function getOptions() {
107
}
108
},
109
style: {
110
- fontFamily: style.value["--font-family-mono"]
110
+ fontFamily: style.value["font-family-mono"]
111
},
112
theme: isThemeDark.value ? "dark" : "light"
113
}
frontend/src/components/indices/Marquee.vue
+1
-1
@@ -58,7 +58,7 @@ watch(indices, val => {
58
59
const message = useMessage()
60
const style = computed(() => useThemeStore().style)
61
-const gradientColor = computed(() => style.value["--bg-color-rgb"].split(", "))
61
+const gradientColor = computed(() => style.value["bg-color-rgb"].split(", "))
62
const loading = computed(() => !list?.value || list.value === null)
63
64
function getIndices() {
frontend/src/components/indices/TopIndices.vue
+9
-9
@@ -63,10 +63,10 @@ function getOptions() {
63
left: "left",
64
type: "scroll",
65
textStyle: {
66
- color: style.value["--fg-color"]
66
+ color: style.value["fg-color"]
67
},
68
pageTextStyle: {
69
- color: style.value["--fg-color"]
69
+ color: style.value["fg-color"]
70
}
71
},
72
grid: {
@@ -86,13 +86,13 @@ function getOptions() {
86
show: false
87
},
88
itemStyle: {
89
- borderColor: style.value["--bg-color"],
89
+ borderColor: style.value["bg-color"],
90
borderWidth: 2
91
},
92
data: [
93
- { value: green, name: "Green", itemStyle: { color: style.value["--success-color"] } },
94
- { value: yellow, name: "Yellow", itemStyle: { color: style.value["--warning-color"] } },
95
- { value: red, name: "Red", itemStyle: { color: style.value["--error-color"] } }
93
+ { value: green, name: "Green", itemStyle: { color: style.value["success-color"] } },
94
+ { value: yellow, name: "Yellow", itemStyle: { color: style.value["warning-color"] } },
95
+ { value: red, name: "Red", itemStyle: { color: style.value["error-color"] } }
96
]
97
},
98
{
@@ -139,13 +139,13 @@ function getOptions() {
139
//alignTo: "edge",
140
rich: {
141
name: {
142
- color: style.value["--fg-color"],
142
+ color: style.value["fg-color"],
143
fontSize: window.innerWidth > 1000 ? 13 : 11
144
},
145
per: {
146
fontSize: window.innerWidth > 1000 ? 13 : 11,
147
fontWeight: "bold",
148
- color: style.value["--fg-color"]
148
+ color: style.value["fg-color"]
149
}
150
}
151
},
@@ -165,7 +165,7 @@ function getOptions() {
165
}
166
},
167
itemStyle: {
168
- borderColor: style.value["--bg-color"],
168
+ borderColor: style.value["bg-color"],
169
borderWidth: 1
170
},
171
data: sizeData
frontend/src/components/overview/HealthcheckCard.vue
+1
-1
@@ -16,7 +16,7 @@
16
:iconName="HealthcheckIcon"
17
boxed
18
:boxSize="30"
19
- :color="criticalTotal ? style['--warning-color'] : undefined"
19
+ :color="criticalTotal ? style['warning-color'] : undefined"
20
></CardStatsIcon>
21
</template>
22
</CardStatsDouble>
frontend/src/layouts/common/FooterEL.vue
+1
-1
@@ -3,7 +3,7 @@
3
<div class="wrap flex items-center justify-end gap-3">
4
<div class="copy">
5
Made with
6
- <Icon :size="22" :color="style['--primary-color']" class="mx-1">
6
+ <Icon :size="22" :color="style['primary-color']" class="mx-1">
7
<BrainIcon />
8
</Icon>
9
By
frontend/src/layouts/common/Provider.vue
+1
-1
@@ -66,7 +66,7 @@ function setGlobalVars() {
66
const html = document.children[0] as HTMLElement
67
const { style: htmlStyle } = html
68
for (const key in style.value) {
69
- htmlStyle.setProperty(key, style.value[key])
69
+ htmlStyle.setProperty("--" + key, style.value[key])
70
}
71
}
72
frontend/src/layouts/common/Toolbar/PinnedPages.vue
+37
-14
@@ -20,28 +20,36 @@
20
</n-tag>
21
</TransitionGroup>
22
23
- <Transition name="anim" tag="div" class="flex items-center">
23
+ <Transition name="anim" tag="div" class="flex items-center shortcuts-container">
24
<div v-if="pinned.length" class="flex items-center">
25
- <n-popover :show-arrow="false" placement="bottom-end" trigger="hover">
25
+ <n-popover :show-arrow="false" placement="bottom-end" trigger="hover" class="!p-1">
26
<template #trigger>
27
<n-button size="small" class="!h-8">
28
<span class="flex items-center gap-3">
29
Shortcuts
30
- <n-badge :value="pinned.length" :color="style['--divider-030-color']" />
30
+ <n-badge :value="pinned.length" :color="style['divider-030-color']" />
31
</span>
32
</n-button>
33
</template>
34
- <div class="flex flex-col gap-3 py-2 pr-1">
35
- <div class="flex gap-2 items-center" v-for="page of pinned" :key="page.name">
36
- <n-button size="small" text @click="removePinnedPage(page.name)">
37
- <template #icon>
38
- <Icon :size="20" :name="CloseIcon" class="opacity-55"></Icon>
39
- </template>
40
- </n-button>
41
- <n-button size="small" text @click="gotoPage(page.name)" :title="page.title">
42
- {{ page.title }}
43
- </n-button>
44
- </div>
34
+ <div class="flex flex-col">
35
+ <n-button
36
+ size="small"
37
+ quaternary
38
+ @click="gotoPage(page.name)"
39
+ v-for="page of pinned"
40
+ :key="page.name"
41
+ class="!justify-start"
42
+ >
43
+ <template #icon>
44
+ <Icon
45
+ :size="20"
46
+ :name="CloseIcon"
47
+ class="opacity-50 hover:text-red-500 hover:opacity-100"
48
+ @click.stop="removePinnedPage(page.name)"
49
+ ></Icon>
50
+ </template>
51
+ {{ page.title }}
52
+ </n-button>
53
</div>
54
</n-popover>
55
</div>
@@ -126,6 +134,9 @@ router.afterEach(route => {
134
position: relative;
135
overflow: hidden;
136
padding: 8px 0;
137
+ container-type: inline-size;
138
+ justify-content: flex-end;
139
+ width: 100%;
140
141
:deep() {
142
.n-tag {
@@ -207,5 +218,17 @@ router.afterEach(route => {
218
.anim-leave-active {
219
position: absolute;
220
}
221
+
222
+ @container (max-width: 460px) {
223
+ .latest-list {
224
+ display: none;
225
+ }
226
+ }
227
+
228
+ @container (max-width: 140px) {
229
+ .shortcuts-container {
230
+ display: none;
231
+ }
232
+ }
233
}
234
</style>
frontend/src/stores/theme.ts
+90
-90
@@ -362,96 +362,96 @@ export const useThemeStore = defineStore("theme", {
362
const secondary4RGB = hex2rgb(secondary4).join(", ")
363
364
return {
365
- "--bg-sidebar": `${bgSidebar}`,
366
- "--bg-body": `${bgBody}`,
367
- "--bg-body-rgb": `${bgBodyRGB}`,
368
-
369
- "--fg-color": `${fgColor}`,
370
- "--fg-secondary-color": `${fgSecondaryColor}`,
371
- "--bg-color": `${bgColor}`,
372
- "--bg-secondary-color": `${bgSecondaryColor}`,
373
- "--bg-color-rgb": `${bgColorRGB}`,
374
-
375
- "--border-color": `${borderColor}`,
376
- "--bezier-ease": `${bezierEase}`,
377
- "--router-transition-duration": `${routerTransitionDuration}s`,
378
- "--sidebar-anim-ease": `${sidebarAnimEase}`,
379
- "--sidebar-anim-duration": `${sidebarAnimDuration}s`,
380
- "--sidebar-open-width": `${sidebarOpenWidth}px`,
381
- "--sidebar-close-width": `${sidebarCloseWidth}px`,
382
- "--boxed-width": `${boxedWidth}px`,
383
- "--toolbar-height": `${toolbarHeight}px`,
384
- "--header-bar-height": `${headerBarHeight}px`,
385
- "--view-padding": `${viewPadding}px`,
386
- "--border-radius": `${borderRadius}`,
387
- "--border-radius-small": `${borderRadiusSmall}`,
388
- "--font-family": `${fontFamily}`,
389
- "--font-family-display": `${fontFamilyDisplay}`,
390
- "--font-family-mono": `${fontFamilyMono}`,
391
- "--code-color": `${codeColor}`,
392
- "--primary-color": `${primaryColor}`,
393
- "--tab-color": `${tabColor}`,
394
- "--tab-color-active": `${tabColorActive}`,
395
- "--tab-fg-color-active": `${tabFgColorActive}`,
396
- "--modal-color": `${modalColor}`,
397
- "--modal-color-rgb": `${modalColorRGB}`,
398
-
399
- "--button-color-secondary": `${buttonColorSecondary}`,
400
- "--button-color-secondary-hover": `${buttonColorSecondaryHover}`,
401
- "--button-color-secondary-pressed": `${buttonColorSecondaryPressed}`,
402
-
403
- "--primary-005-color": `${primary005}`,
404
- "--primary-010-color": `${primary010}`,
405
- "--primary-015-color": `${primary015}`,
406
- "--primary-020-color": `${primary020}`,
407
- "--primary-030-color": `${primary030}`,
408
- "--primary-040-color": `${primary040}`,
409
- "--primary-050-color": `${primary050}`,
410
- "--primary-060-color": `${primary060}`,
411
-
412
- "--hover-005-color": `${hover005}`,
413
- "--hover-010-color": `${hover010}`,
414
- "--hover-050-color": `${hover050}`,
415
-
416
- "--divider-005-color": `${divider005}`,
417
- "--divider-010-color": `${divider010}`,
418
- "--divider-020-color": `${divider020}`,
419
- "--divider-030-color": `${divider030}`,
420
-
421
- "--success-color": `${successColor}`,
422
- "--error-color": `${errorColor}`,
423
- "--warning-color": `${warningColor}`,
424
- "--info-color": `${infoColor}`,
425
- "--success-005-color": `${success005}`,
426
- "--error-005-color": `${error005}`,
427
- "--warning-005-color": `${warning005}`,
428
- "--info-005-color": `${info005}`,
429
-
430
- "--secondary1-color": `${secondary1}`,
431
- "--secondary1-color-rgb": `${secondary1RGB}`,
432
- "--secondary2-color": `${secondary2}`,
433
- "--secondary2-color-rgb": `${secondary2RGB}`,
434
- "--secondary3-color": `${secondary3}`,
435
- "--secondary3-color-rgb": `${secondary3RGB}`,
436
- "--secondary4-color": `${secondary4}`,
437
- "--secondary4-color-rgb": `${secondary4RGB}`,
438
-
439
- "--secondary1-opacity-005-color": `${secondary1Opacity005}`,
440
- "--secondary1-opacity-010-color": `${secondary1Opacity010}`,
441
- "--secondary1-opacity-020-color": `${secondary1Opacity020}`,
442
- "--secondary1-opacity-030-color": `${secondary1Opacity030}`,
443
- "--secondary2-opacity-005-color": `${secondary2Opacity005}`,
444
- "--secondary2-opacity-010-color": `${secondary2Opacity010}`,
445
- "--secondary2-opacity-020-color": `${secondary2Opacity020}`,
446
- "--secondary2-opacity-030-color": `${secondary2Opacity030}`,
447
- "--secondary3-opacity-005-color": `${secondary3Opacity005}`,
448
- "--secondary3-opacity-010-color": `${secondary3Opacity010}`,
449
- "--secondary3-opacity-020-color": `${secondary3Opacity020}`,
450
- "--secondary3-opacity-030-color": `${secondary3Opacity030}`,
451
- "--secondary4-opacity-005-color": `${secondary4Opacity005}`,
452
- "--secondary4-opacity-010-color": `${secondary4Opacity010}`,
453
- "--secondary4-opacity-020-color": `${secondary4Opacity020}`,
454
- "--secondary4-opacity-030-color": `${secondary4Opacity030}`
365
+ "bg-sidebar": `${bgSidebar}`,
366
+ "bg-body": `${bgBody}`,
367
+ "bg-body-rgb": `${bgBodyRGB}`,
368
+
369
+ "fg-color": `${fgColor}`,
370
+ "fg-secondary-color": `${fgSecondaryColor}`,
371
+ "bg-color": `${bgColor}`,
372
+ "bg-secondary-color": `${bgSecondaryColor}`,
373
+ "bg-color-rgb": `${bgColorRGB}`,
374
+
375
+ "border-color": `${borderColor}`,
376
+ "bezier-ease": `${bezierEase}`,
377
+ "router-transition-duration": `${routerTransitionDuration}s`,
378
+ "sidebar-anim-ease": `${sidebarAnimEase}`,
379
+ "sidebar-anim-duration": `${sidebarAnimDuration}s`,
380
+ "sidebar-open-width": `${sidebarOpenWidth}px`,
381
+ "sidebar-close-width": `${sidebarCloseWidth}px`,
382
+ "boxed-width": `${boxedWidth}px`,
383
+ "toolbar-height": `${toolbarHeight}px`,
384
+ "header-bar-height": `${headerBarHeight}px`,
385
+ "view-padding": `${viewPadding}px`,
386
+ "border-radius": `${borderRadius}`,
387
+ "border-radius-small": `${borderRadiusSmall}`,
388
+ "font-family": `${fontFamily}`,
389
+ "font-family-display": `${fontFamilyDisplay}`,
390
+ "font-family-mono": `${fontFamilyMono}`,
391
+ "code-color": `${codeColor}`,
392
+ "primary-color": `${primaryColor}`,
393
+ "tab-color": `${tabColor}`,
394
+ "tab-color-active": `${tabColorActive}`,
395
+ "tab-fg-color-active": `${tabFgColorActive}`,
396
+ "modal-color": `${modalColor}`,
397
+ "modal-color-rgb": `${modalColorRGB}`,
398
+
399
+ "button-color-secondary": `${buttonColorSecondary}`,
400
+ "button-color-secondary-hover": `${buttonColorSecondaryHover}`,
401
+ "button-color-secondary-pressed": `${buttonColorSecondaryPressed}`,
402
+
403
+ "primary-005-color": `${primary005}`,
404
+ "primary-010-color": `${primary010}`,
405
+ "primary-015-color": `${primary015}`,
406
+ "primary-020-color": `${primary020}`,
407
+ "primary-030-color": `${primary030}`,
408
+ "primary-040-color": `${primary040}`,
409
+ "primary-050-color": `${primary050}`,
410
+ "primary-060-color": `${primary060}`,
411
+
412
+ "hover-005-color": `${hover005}`,
413
+ "hover-010-color": `${hover010}`,
414
+ "hover-050-color": `${hover050}`,
415
+
416
+ "divider-005-color": `${divider005}`,
417
+ "divider-010-color": `${divider010}`,
418
+ "divider-020-color": `${divider020}`,
419
+ "divider-030-color": `${divider030}`,
420
+
421
+ "success-color": `${successColor}`,
422
+ "error-color": `${errorColor}`,
423
+ "warning-color": `${warningColor}`,
424
+ "info-color": `${infoColor}`,
425
+ "success-005-color": `${success005}`,
426
+ "error-005-color": `${error005}`,
427
+ "warning-005-color": `${warning005}`,
428
+ "info-005-color": `${info005}`,
429
+
430
+ "secondary1-color": `${secondary1}`,
431
+ "secondary1-color-rgb": `${secondary1RGB}`,
432
+ "secondary2-color": `${secondary2}`,
433
+ "secondary2-color-rgb": `${secondary2RGB}`,
434
+ "secondary3-color": `${secondary3}`,
435
+ "secondary3-color-rgb": `${secondary3RGB}`,
436
+ "secondary4-color": `${secondary4}`,
437
+ "secondary4-color-rgb": `${secondary4RGB}`,
438
+
439
+ "secondary1-opacity-005-color": `${secondary1Opacity005}`,
440
+ "secondary1-opacity-010-color": `${secondary1Opacity010}`,
441
+ "secondary1-opacity-020-color": `${secondary1Opacity020}`,
442
+ "secondary1-opacity-030-color": `${secondary1Opacity030}`,
443
+ "secondary2-opacity-005-color": `${secondary2Opacity005}`,
444
+ "secondary2-opacity-010-color": `${secondary2Opacity010}`,
445
+ "secondary2-opacity-020-color": `${secondary2Opacity020}`,
446
+ "secondary2-opacity-030-color": `${secondary2Opacity030}`,
447
+ "secondary3-opacity-005-color": `${secondary3Opacity005}`,
448
+ "secondary3-opacity-010-color": `${secondary3Opacity010}`,
449
+ "secondary3-opacity-020-color": `${secondary3Opacity020}`,
450
+ "secondary3-opacity-030-color": `${secondary3Opacity030}`,
451
+ "secondary4-opacity-005-color": `${secondary4Opacity005}`,
452
+ "secondary4-opacity-010-color": `${secondary4Opacity010}`,
453
+ "secondary4-opacity-020-color": `${secondary4Opacity020}`,
454
+ "secondary4-opacity-030-color": `${secondary4Opacity030}`
455
}
456
},
457
isThemeDark(state): boolean {
frontend/src/types/threatIntel.d.ts
+10
@@ -9,6 +9,16 @@ export interface ThreatIntelResponse {
9
virustotal_url: string | null
10
}
11
12
+export interface EpssScore {
13
+ cve: string
14
+ /** a float (0.000680000) */
15
+ epss: string
16
+ /** a float (0.299330000) */
17
+ percentile: string
18
+ /** a date (2024-06-27) */
19
+ date: string | Date
20
+}
21
+
22
export interface EvaluationData {
23
rank: number
24
host_prev: string