diff --git a/backend/Dockerfile.pe b/backend/Dockerfile.pe
index d40a383fd..100921e99 100644
--- a/backend/Dockerfile.pe
+++ b/backend/Dockerfile.pe
@@ -7,7 +7,7 @@ COPY ./package* ./
COPY src ./src
-RUN apt update && apt install git zlib1g-dev
+RUN apt update && apt install -y git zlib1g-dev
RUN apt-get update && apt-get install -y jq
diff --git a/backend/env.yml b/backend/env.yml
index 90d2f5996..bea8c6c46 100644
--- a/backend/env.yml
+++ b/backend/env.yml
@@ -6,6 +6,7 @@ dev:
REGION: us-east-1
staging-cd:
+ IS_DMZ: 1
REGION: us-east-1
ENDPOINT_TYPE: REGIONAL
COGNITO_URL: https://cognito-idp.us-east-1.amazonaws.com
@@ -24,6 +25,8 @@ staging-cd:
MDL_USERNAME: ${ssm:/crossfeed/staging/MDL_USERNAME}
MDL_PASSWORD: ${ssm:/crossfeed/staging/MDL_PASSWORD}
MDL_NAME: ${ssm:/crossfeed/staging/MDL_NAME}
+ POSTGRES_SCAN_USER: ${ssm:/crossfeed/staging/POSTGRES_SCAN_USER}
+ POSTGRES_SCAN_PASSWORD: ${ssm:/crossfeed/staging/POSTGRES_SCAN_PASSWORD}
MI_ACCOUNT_NAME: ${ssm:/readysetcyber/staging/MI_ACCOUNT_NAME}
MI_PASSWORD: ${ssm:/readysetcyber/staging/MI_ACCOUNT_PASSWORD}
PE_DB_NAME: ${ssm:/crossfeed/staging/PE_DB_NAME}
@@ -78,6 +81,7 @@ staging-cd:
REACT_APP_COGNITO_CALLBACK_URL: https://staging-cd.crossfeed.cyber.dhs.gov/okta-callback
integration:
+ IS_DMZ: 1
REGION: us-east-1
ENDPOINT_TYPE: REGIONAL
COGNITO_URL: https://cognito-idp.us-east-1.amazonaws.com
@@ -95,6 +99,8 @@ integration:
MDL_USERNAME: ${ssm:/crossfeed/integration/MDL_USERNAME}
MDL_PASSWORD: ${ssm:/crossfeed/integration/MDL_PASSWORD}
MDL_NAME: ${ssm:/crossfeed/integration/MDL_NAME}
+ POSTGRES_SCAN_USER: ${ssm:/crossfeed/integration/POSTGRES_SCAN_USER}
+ POSTGRES_SCAN_PASSWORD: ${ssm:/crossfeed/integration/POSTGRES_SCAN_PASSWORD}
MI_ACCOUNT_NAME: ${ssm:/readysetcyber/integration/MI_ACCOUNT_NAME}
MI_PASSWORD: ${ssm:/readysetcyber/integration/MI_ACCOUNT_PASSWORD}
JWT_SECRET: ${ssm:/crossfeed/integration/APP_JWT_SECRET}
@@ -142,6 +148,7 @@ integration:
ELASTICACHE_ENDPOINT: ${ssm:/crossfeed/integration/ELASTICACHE_ENDPOINT}
staging:
+ IS_DMZ: 0
REGION: us-gov-east-1
ENDPOINT_TYPE: PRIVATE
COGNITO_URL: https://cognito-idp.us-gov-west-1.amazonaws.com
@@ -157,6 +164,8 @@ staging:
DB_NAME: ${ssm:/crossfeed/staging/DATABASE_NAME}
DB_USERNAME: ${ssm:/crossfeed/staging/DATABASE_USER}
DB_PASSWORD: ${ssm:/crossfeed/staging/DATABASE_PASSWORD}
+ POSTGRES_SCAN_USER: ${ssm:/crossfeed/staging/POSTGRES_SCAN_USER}
+ POSTGRES_SCAN_PASSWORD: ${ssm:/crossfeed/staging/POSTGRES_SCAN_PASSWORD}
JWT_SECRET: ${ssm:/crossfeed/staging/APP_JWT_SECRET}
JWT_ALGORITHM: ${ssm:/crossfeed/staging/JWT_ALGORITHM}
JWT_TIMEOUT_HOURS: ${ssm:/crossfeed/staging/JWT_TIMEOUT_HOURS}
@@ -204,6 +213,7 @@ staging:
ELASTICACHE_ENDPOINT: ${ssm:/crossfeed/staging/ELASTICACHE_ENDPOINT}
prod:
+ IS_DMZ: 0
REGION: us-gov-east-1
ENDPOINT_TYPE: PRIVATE
COGNITO_URL: https://cognito-idp.us-gov-west-1.amazonaws.com
@@ -223,6 +233,8 @@ prod:
MDL_PASSWORD: ${ssm:/crossfeed/prod/MDL_PASSWORD}
DJANGO_SECRET: ${ssm:/crossfeed/prod/DJANGO_SECRECT}
MDL_NAME: ${ssm:/crossfeed/prod/MDL_NAME}
+ POSTGRES_SCAN_USER: ${ssm:/crossfeed/prod/POSTGRES_SCAN_USER}
+ POSTGRES_SCAN_PASSWORD: ${ssm:/crossfeed/prod/POSTGRES_SCAN_PASSWORD}
JWT_SECRET: ${ssm:/crossfeed/prod/APP_JWT_SECRET}
JWT_ALGORITHM: ${ssm:/crossfeed/prod/JWT_ALGORITHM}
JWT_TIMEOUT_HOURS: ${ssm:/crossfeed/prod/JWT_TIMEOUT_HOURS}
diff --git a/backend/scripts/populateCountiesCities/cities.py b/backend/scripts/populateCountiesCities/cities.py
index 8adc3c4ec..c497bdc5c 100644
--- a/backend/scripts/populateCountiesCities/cities.py
+++ b/backend/scripts/populateCountiesCities/cities.py
@@ -117,7 +117,7 @@ def pull_cities():
)
time.sleep(1)
except Exception as e:
- print(f"Error: {e}")
+ print("Error: {}".format(e))
pass
df = pd.DataFrame(holding_pen, columns=["State", "County", "City", "URL"])
diff --git a/backend/scripts/populateCountiesCities/counties.py b/backend/scripts/populateCountiesCities/counties.py
index 34823f8cf..1a96c0658 100644
--- a/backend/scripts/populateCountiesCities/counties.py
+++ b/backend/scripts/populateCountiesCities/counties.py
@@ -62,7 +62,7 @@ def pull_counties():
}
)
except Exception as e:
- print(f"Error: {e}")
+ print("Error: {}".format(e))
pass
time.sleep(1)
diff --git a/backend/serverless.yml b/backend/serverless.yml
index d7f578c09..6faf1f04f 100644
--- a/backend/serverless.yml
+++ b/backend/serverless.yml
@@ -59,7 +59,9 @@ custom:
Condition:
IpAddress:
aws:SourceIp:
- - ${file(env.yml):${self:provider.stage}.DMZ_CIDR, ''}
+ 'Fn::Split':
+ - ','
+ - ${file(env.yml):${self:provider.stage}.DMZ_CIDR, ''}
# Conditional logic for GovCloud vs
# non-GovCloud (Private endpoints require a VPC Endpoint)
diff --git a/backend/src/api/app.ts b/backend/src/api/app.ts
index e7499e723..c29041215 100644
--- a/backend/src/api/app.ts
+++ b/backend/src/api/app.ts
@@ -444,17 +444,17 @@ app.use(
// API Gateway isn't able to proxy fonts properly -- so we're using a CDN instead.
if (req.path === '/plugins/Morpheus/fonts/matomo.woff2') {
return res.redirect(
- 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@3.14.1/plugins/Morpheus/fonts/matomo.woff2'
+ 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@5.2.1/plugins/Morpheus/fonts/matomo.woff2'
);
}
if (req.path === '/plugins/Morpheus/fonts/matomo.woff') {
return res.redirect(
- 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@3.14.1/plugins/Morpheus/fonts/matomo.woff'
+ 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@5.2.1/plugins/Morpheus/fonts/matomo.woff'
);
}
if (req.path === '/plugins/Morpheus/fonts/matomo.ttf') {
return res.redirect(
- 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@3.14.1/plugins/Morpheus/fonts/matomo.ttf'
+ 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@5.2.1/plugins/Morpheus/fonts/matomo.ttf'
);
}
// Only allow global admins to access all other paths.
diff --git a/backend/src/api/users.ts b/backend/src/api/users.ts
index 91aaaf1cf..b91ee5c07 100644
--- a/backend/src/api/users.ts
+++ b/backend/src/api/users.ts
@@ -899,7 +899,9 @@ export const updateV2 = wrapHandler(async (event) => {
}
// Check if authorizer's region matches the user's
- if (!matchesUserRegion(event, user.regionId)) return Unauthorized;
+ // Allows new users to select their state without a region on initial account creation
+ if (user.invitePending === false && !matchesUserRegion(event, user.regionId))
+ return Unauthorized;
if (body.state) {
body.regionId = REGION_STATE_MAP[body.state];
diff --git a/backend/src/api/vulnerabilities.ts b/backend/src/api/vulnerabilities.ts
index 1e0cbe6ad..7e433a529 100644
--- a/backend/src/api/vulnerabilities.ts
+++ b/backend/src/api/vulnerabilities.ts
@@ -124,11 +124,12 @@ class VulnerabilitySearch {
if (this.filters?.severity) {
if (this.filters.severity === 'N/A') {
qs.andWhere(
- "vulnerability.severity IS NULL OR vulnerability.severity = ''"
+ "vulnerability.severity IS NULL OR vulnerability.severity = '' OR vulnerability.severity ILIKE 'N/A' OR vulnerability.severity ILIKE 'NULL'"
);
} else if (this.filters.severity === 'Other') {
qs.andWhere(
- `vulnerability.severity NOT ILIKE 'N/A' AND
+ `vulnerability.severity NOT ILIKE 'NULL' AND
+ vulnerability.severity NOT ILIKE 'N/A' AND
vulnerability.severity NOT ILIKE 'Low' AND
vulnerability.severity NOT ILIKE 'Medium' AND
vulnerability.severity NOT ILIKE 'High' AND
diff --git a/backend/src/tasks/functions.yml b/backend/src/tasks/functions.yml
index 53d739556..8a4d20511 100644
--- a/backend/src/tasks/functions.yml
+++ b/backend/src/tasks/functions.yml
@@ -12,6 +12,10 @@ syncdb:
timeout: 900
handler: src/xfd_django/xfd_api/tasks/run_syncdb.handler
+syncmdl:
+ timeout: 900
+ handler: src/xfd_django/xfd_api/tasks/run_syncmdl.handler
+
bastion:
timeout: 900
handler: src/xfd_django/xfd_api/tasks/bastion.handler
diff --git a/backend/src/xfd_django/xfd_api/api_methods/auth.py b/backend/src/xfd_django/xfd_api/api_methods/auth.py
index d8ea4c888..0b2db4ab0 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/auth.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/auth.py
@@ -8,20 +8,20 @@
async def handle_okta_callback(request):
"""POST API LOGIC."""
- print(f"Request from /auth/okta-callback: {str(request)}")
+ print("Request from /auth/okta-callback: {}".format(str(request)))
body = await request.json()
- print(f"Request json from callback: {str(request)}")
- print(f"Request json from callback: {body}")
- print(f"Body type: {type(body)}")
+ print("Request json from callback: {}".format(str(request)))
+ print("Request json from callback: {}".format(body))
+ print("Body type: {}".format(type(body)))
code = body.get("code")
- print(f"Code: {code}")
+ print("Code: {}".format(code))
if not code:
return HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="Code not found in request body",
)
jwt_data = await get_jwt_from_code(code)
- print(f"JWT Data: {jwt_data}")
+ print("JWT Data: {}".format(jwt_data))
if jwt_data is None:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
diff --git a/backend/src/xfd_django/xfd_api/api_methods/domain.py b/backend/src/xfd_django/xfd_api/api_methods/domain.py
index ff8f5d519..92d22b4ae 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/domain.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/domain.py
@@ -167,7 +167,7 @@ def export_domains(domain_search: DomainSearch, current_user):
for product in service.products.all():
if product.name:
product_entry = (
- f"{product.name} {product.version}"
+ "{} {}".format(product.name, product.version)
if product.version
else product.name
)
@@ -221,5 +221,5 @@ def export_domains(domain_search: DomainSearch, current_user):
except Exception as e:
# Log the exception for debugging (optional)
- print(f"Error exporting domains: {e}")
+ print("Error exporting domains: {}".format(e))
raise HTTPException(status_code=500, detail=str(e))
diff --git a/backend/src/xfd_django/xfd_api/api_methods/organization.py b/backend/src/xfd_django/xfd_api/api_methods/organization.py
index 96a486759..866cb47f2 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/organization.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/organization.py
@@ -250,7 +250,7 @@ def get_organization(organization_id, current_user):
raise http_exc
except Exception as e:
- print(f"An error occurred: {e}")
+ print("An error occurred: {}".format(e))
raise HTTPException(status_code=500, detail=str(e))
@@ -715,7 +715,7 @@ def delete_organization(org_id: str, current_user):
# Return success response
return {
"status": "success",
- "message": f"Organization {org_id} has been deleted successfully.",
+ "message": "Organization {} has been deleted successfully.".format(org_id),
}
except HTTPException as http_exc:
@@ -1064,7 +1064,7 @@ def search_organizations_task(search_body, current_user: User):
# Use match_all if searchTerm is empty
if search_body.searchTerm.strip():
query_body["query"]["bool"]["must"].append(
- {"wildcard": {"name": f"*{search_body.searchTerm}*"}}
+ {"wildcard": {"name": "*{}*".format(search_body.searchTerm)}}
)
else:
query_body["query"]["bool"]["must"].append({"match_all": {}})
@@ -1076,7 +1076,7 @@ def search_organizations_task(search_body, current_user: User):
)
# Log the query for debugging
- print(f"Query body: {query_body}")
+ print("Query body: {}".format(query_body))
# Execute the search
search_results = client.search_organizations(query_body)
diff --git a/backend/src/xfd_django/xfd_api/api_methods/proxy.py b/backend/src/xfd_django/xfd_api/api_methods/proxy.py
index 467924f22..526655e91 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/proxy.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/proxy.py
@@ -32,13 +32,13 @@ async def proxy_request(
if cookie_name:
cookies = manipulate_cookie(request, cookie_name)
if cookies:
- headers["Cookie"] = f"{cookie_name}={cookies[cookie_name]}"
+ headers["Cookie"] = "{}={}".format(cookie_name, cookies[cookie_name])
# Make the request to the target URL
async with httpx.AsyncClient() as client:
proxy_response = await client.request(
method=request.method,
- url=f"{target_url}/{path}",
+ url="{}/{}".format(target_url, path),
headers=headers,
params=request.query_params,
content=await request.body(),
diff --git a/backend/src/xfd_django/xfd_api/api_methods/saved_search.py b/backend/src/xfd_django/xfd_api/api_methods/saved_search.py
index caae0428e..1bd4a2134 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/saved_search.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/saved_search.py
@@ -235,7 +235,7 @@ def delete_saved_search(saved_search_id, user):
return JsonResponse(
{
"status": "success",
- "message": f"Saved search id:{saved_search_id} deleted.",
+ "message": "Saved search id:{} deleted.".format(saved_search_id),
}
)
except User.DoesNotExist:
diff --git a/backend/src/xfd_django/xfd_api/api_methods/scan.py b/backend/src/xfd_django/xfd_api/api_methods/scan.py
index 5241f8248..782484bd3 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/scan.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/scan.py
@@ -270,7 +270,10 @@ def delete_scan(scan_id: str, current_user):
scan.delete()
- return {"status": "success", "message": f"Scan {scan_id} deleted successfully."}
+ return {
+ "status": "success",
+ "message": "Scan {} deleted successfully.".format(scan_id),
+ }
except HTTPException as http_exc:
raise http_exc
@@ -297,7 +300,7 @@ def run_scan(scan_id: str, current_user):
scan.save()
return {
"status": "success",
- "message": f"Scan {scan_id} set to manualRunPending.",
+ "message": "Scan {} set to manualRunPending.".format(scan_id),
}
except HTTPException as http_exc:
@@ -320,7 +323,7 @@ async def invoke_scheduler(current_user):
lambda_client = LambdaClient()
# Form the lambda function name using environment variable
- lambda_function_name = f"{os.getenv('SLS_LAMBDA_PREFIX')}-scheduler"
+ lambda_function_name = "{}-scheduler".format(os.getenv("SLS_LAMBDA_PREFIX"))
print(lambda_function_name)
# Run the Lambda command
diff --git a/backend/src/xfd_django/xfd_api/api_methods/scan_tasks.py b/backend/src/xfd_django/xfd_api/api_methods/scan_tasks.py
index 9a251139d..bd169eb17 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/scan_tasks.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/scan_tasks.py
@@ -37,9 +37,9 @@ def list_scan_tasks(search_data: Optional[ScanTaskSearch], current_user):
# Determine the correct ordering based on the 'order' field
ordering_field = (
- f"-{search_data.sort}"
+ "-{}".format(search_data.sort)
if search_data.order and search_data.order.upper() == "DESC"
- else search_data.sort
+ else "{}".format(search_data.sort)
)
# Construct query based on filters
@@ -71,7 +71,7 @@ def list_scan_tasks(search_data: Optional[ScanTaskSearch], current_user):
for task in qs:
# Ensure scan is not None before accessing its properties
if task.scan is None:
- print(f"Warning: ScanTask {task.id} has no scan associated.")
+ print("Warning: ScanTask {} has no scan associated.".format(task.id))
scan_data = None
else:
scan_data = {
@@ -177,7 +177,7 @@ def kill_scan_task(scan_task_id, current_user):
utc_now = datetime.now(timezone.utc)
scan_task.status = "failed"
scan_task.finishedAt = utc_now
- scan_task.output = f"Manually stopped at {utc_now.isoformat()}"
+ scan_task.output = "Manually stopped at {}".format(utc_now.isoformat())
scan_task.save()
return {"statusCode": 200, "message": "ScanTask successfully marked as failed."}
diff --git a/backend/src/xfd_django/xfd_api/api_methods/search.py b/backend/src/xfd_django/xfd_api/api_methods/search.py
index 94b3e460e..fdf175bf7 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/search.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/search.py
@@ -67,7 +67,7 @@ async def fetch_all_results(
try:
response = client.search_domains(request)
except Exception as e:
- print(f"Elasticsearch error: {e}")
+ print("Elasticsearch error: {}".format(e))
raise HTTPException(status_code=500, detail="Error querying Elasticsearch.")
hits = response.get("hits", {}).get("hits", [])
@@ -97,9 +97,9 @@ def process_results(results: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
if "name" in product:
product_name = product["name"].lower()
product_version = product.get("version", "")
- products[
- product_name
- ] = f"{product['name']} {product_version}".strip()
+ products[product_name] = "{} {}".format(
+ product["name"], product_version
+ ).strip()
res["products"] = ", ".join(products.values())
processed_results.append(res)
@@ -204,7 +204,7 @@ async def search_export(search_body: DomainSearchBody, current_user) -> Dict[str
try:
csv_url = s3_client.save_csv(csv_content, "domains")
except Exception as e:
- print(f"S3 upload error: {e}")
+ print("S3 upload error: {}".format(e))
raise HTTPException(status_code=500, detail="Error uploading CSV to S3.")
return {"url": csv_url}
diff --git a/backend/src/xfd_django/xfd_api/api_methods/stats.py b/backend/src/xfd_django/xfd_api/api_methods/stats.py
index 3828a5a69..7d4a92420 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/stats.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/stats.py
@@ -22,7 +22,7 @@ async def safe_fetch(fetch_fn, *args, **kwargs):
try:
return await fetch_fn(*args, **kwargs)
except Exception as e:
- print(f"Error fetching stats with {fetch_fn.__name__}: {e}")
+ print("Error fetching stats with {}: {}".format(fetch_fn.__name__, e))
return []
filtered_org_ids = get_stats_org_ids(current_user, filter_data)
@@ -98,7 +98,7 @@ async def safe_fetch(fetch_fn, *args, **kwargs):
}
except Exception as e:
raise HTTPException(
- status_code=500, detail=f"An unexpected error occurred: {e}"
+ status_code=500, detail="An unexpected error occurred: {}".format(e)
)
@@ -130,11 +130,13 @@ async def get_user_services_count(
return services_data
except aioredis.RedisError as redis_error:
- raise HTTPException(status_code=500, detail=f"Redis error: {redis_error}")
+ raise HTTPException(
+ status_code=500, detail="Redis error: {}".format(redis_error)
+ )
except Exception as e:
raise HTTPException(
- status_code=500, detail=f"An unexpected error occurred: {e}"
+ status_code=500, detail="An unexpected error occurred: {}".format(e)
)
@@ -166,11 +168,13 @@ async def get_user_ports_count(
return ports_data
except aioredis.RedisError as redis_error:
- raise HTTPException(status_code=500, detail=f"Redis error: {redis_error}")
+ raise HTTPException(
+ status_code=500, detail="Redis error: {}".format(redis_error)
+ )
except Exception as e:
raise HTTPException(
- status_code=500, detail=f"An unexpected error occurred: {e}"
+ status_code=500, detail="An unexpected error occurred: {}".format(e)
)
@@ -200,11 +204,13 @@ async def get_num_vulns(filter_data, current_user, redis_client, filtered_org_id
return num_vulns_data
except aioredis.RedisError as redis_error:
- raise HTTPException(status_code=500, detail=f"Redis error: {redis_error}")
+ raise HTTPException(
+ status_code=500, detail="Redis error: {}".format(redis_error)
+ )
except Exception as e:
raise HTTPException(
- status_code=500, detail=f"An unexpected error occurred: {e}"
+ status_code=500, detail="An unexpected error occurred: {}".format(e)
)
@@ -236,11 +242,13 @@ async def get_severity_stats(
return severity_data
except aioredis.RedisError as redis_error:
- raise HTTPException(status_code=500, detail=f"Redis error: {redis_error}")
+ raise HTTPException(
+ status_code=500, detail="Redis error: {}".format(redis_error)
+ )
except Exception as e:
raise HTTPException(
- status_code=500, detail=f"An unexpected error occurred: {e}"
+ status_code=500, detail="An unexpected error occurred: {}".format(e)
)
@@ -265,7 +273,9 @@ async def stats_latest_vulns(
)
# Generate all Redis keys at once
- redis_keys = [f"latest_vulnerabilities:{org_id}" for org_id in filtered_org_ids]
+ redis_keys = [
+ "latest_vulnerabilities:{}".format(org_id) for org_id in filtered_org_ids
+ ]
# Use MGET to fetch all keys in a single operation
results = await safe_redis_mget(
@@ -293,12 +303,14 @@ async def stats_latest_vulns(
return vulnerabilities
except aioredis.RedisError as redis_error:
- raise HTTPException(status_code=500, detail=f"Redis error: {redis_error}")
+ raise HTTPException(
+ status_code=500, detail="Redis error: {}".format(redis_error)
+ )
except Exception as e:
raise HTTPException(
status_code=500,
- detail=f"An unexpected error occurred: {e}",
+ detail="An unexpected error occurred: {}".format(e),
)
@@ -324,7 +336,8 @@ async def stats_most_common_vulns(
# Generate all Redis keys at once
redis_keys = [
- f"most_common_vulnerabilities:{org_id}" for org_id in filtered_org_ids
+ "most_common_vulnerabilities:{}".format(org_id)
+ for org_id in filtered_org_ids
]
# Use MGET to fetch all keys in a single operation
@@ -347,12 +360,14 @@ async def stats_most_common_vulns(
return vulnerabilities
except aioredis.RedisError as redis_error:
- raise HTTPException(status_code=500, detail=f"Redis error: {redis_error}")
+ raise HTTPException(
+ status_code=500, detail="Redis error: {}".format(redis_error)
+ )
except Exception as e:
raise HTTPException(
status_code=500,
- detail=f"An unexpected error occurred: {e}",
+ detail="An unexpected error occurred: {}".format(e),
)
@@ -376,7 +391,7 @@ async def get_by_org_stats(
# Fetch data from Redis for each organization ID
for org_id in filtered_org_ids:
- redis_key = f"by_org_stats:{org_id}"
+ redis_key = "by_org_stats:{}".format(org_id)
org_stats = await redis_client.get(redis_key)
if org_stats:
by_org_data.append(
@@ -392,10 +407,12 @@ async def get_by_org_stats(
return by_org_data
except aioredis.RedisError as redis_error:
- raise HTTPException(status_code=500, detail=f"Redis error: {redis_error}")
+ raise HTTPException(
+ status_code=500, detail="Redis error: {}".format(redis_error)
+ )
except Exception as e:
raise HTTPException(
status_code=500,
- detail=f"An unexpected error occurred: {e}",
+ detail="An unexpected error occurred: {}".format(e),
)
diff --git a/backend/src/xfd_django/xfd_api/api_methods/user.py b/backend/src/xfd_django/xfd_api/api_methods/user.py
index 507501d6d..4b3ed2e10 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/user.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/user.py
@@ -171,7 +171,7 @@ def delete_user(target_user_id, current_user):
# Return success response
return {
"status": "success",
- "message": f"User {target_user_id} has been deleted successfully.",
+ "message": "User {} has been deleted successfully.".format(target_user_id),
}
except Exception as e:
@@ -362,7 +362,7 @@ async def update_user(target_user_id, body, current_user):
user = User.objects.get(id=target_user_id)
user.firstName = update_data.firstName or user.firstName
user.lastName = update_data.lastName or user.lastName
- user.fullName = f"{user.firstName} {user.lastName}"
+ user.fullName = "{} {}".format(user.firstName, user.lastName)
user.userType = update_data.userType or user.userType
user.state = update_data.state or user.state
user.regionId = update_data.regionId or user.regionId
@@ -456,7 +456,7 @@ def update_user_v2(user_id, user_data, current_user):
except HTTPException as http_exc:
raise http_exc
except Exception as e:
- print(f"Error updating user: {e}")
+ print("Error updating user: {}".format(e))
raise HTTPException(status_code=500, detail="An unexpected error occurred.")
@@ -490,7 +490,9 @@ def approve_user_registration(user_id, current_user):
raise http_exc
except Exception as e:
- raise HTTPException(status_code=500, detail=f"Failed to send email: {str(e)}")
+ raise HTTPException(
+ status_code=500, detail="Failed to send email: {}".format(str(e))
+ )
return {"statusCode": 200, "body": "User registration approved."}
@@ -528,7 +530,7 @@ def deny_user_registration(user_id: str, current_user: User):
except ObjectDoesNotExist:
raise HTTPException(status_code=404, detail="User not found.")
except Exception as e:
- print(f"Error denying registration: {e}")
+ print("Error denying registration: {}".format(e))
raise HTTPException(
status_code=500, detail="Error processing registration denial."
)
@@ -627,5 +629,5 @@ def invite(new_user_data, current_user):
raise http_exc
except Exception as e:
- print(f"Error inviting user: {e}")
+ print("Error inviting user: {}".format(e))
raise HTTPException(status_code=500, detail="Error inviting user.")
diff --git a/backend/src/xfd_django/xfd_api/api_methods/vulnerability.py b/backend/src/xfd_django/xfd_api/api_methods/vulnerability.py
index 4bedb1e3b..fa7a41cb3 100644
--- a/backend/src/xfd_django/xfd_api/api_methods/vulnerability.py
+++ b/backend/src/xfd_django/xfd_api/api_methods/vulnerability.py
@@ -120,7 +120,9 @@ def update_vulnerability(
except Vulnerability.DoesNotExist:
raise HTTPException(status_code=404, detail="Vulnerability not found.")
except Exception as e:
- raise HTTPException(status_code=500, detail=f"Internal Server Error: {e}")
+ raise HTTPException(
+ status_code=500, detail="Internal Server Error: {}".format(e)
+ )
def search_vulnerabilities(vulnerability_search: VulnerabilitySearch, current_user):
@@ -134,13 +136,21 @@ def search_vulnerabilities(vulnerability_search: VulnerabilitySearch, current_us
)
# Permissions check
- if not is_global_view_admin(current_user):
+ if (
+ not is_global_view_admin(current_user)
+ and not current_user.userType == "regionalAdmin"
+ ):
org_ids = get_org_memberships(current_user)
if not org_ids:
return [], 0 # User has no accessible organizations
vulnerabilities = vulnerabilities.filter(
domain__organization_id__in=org_ids
)
+ # Regional Admins can only view vulnerabilities in their region
+ if current_user.userType == "regionalAdmin" and current_user.regionId:
+ vulnerabilities = vulnerabilities.filter(
+ domain__organization__regionId=current_user.regionId
+ )
# Apply custom FCEB and CIDR filter
vulnerabilities = vulnerabilities.filter(
diff --git a/backend/src/xfd_django/xfd_api/auth.py b/backend/src/xfd_django/xfd_api/auth.py
index b4627ed5a..4d92d7b45 100644
--- a/backend/src/xfd_django/xfd_api/auth.py
+++ b/backend/src/xfd_django/xfd_api/auth.py
@@ -5,6 +5,7 @@
import hashlib
from hashlib import sha256
import os
+import re
from typing import List, Optional
from urllib.parse import urlencode
import uuid
@@ -213,8 +214,7 @@ def hash_key(key: str) -> str:
# async def get_user_info_from_cognito(token):
# """Get user info from cognito."""
# jwks_url = (
-# f"https://cognito-idp.us-east-1.amazonaws.com/"
-# f"{os.getenv('REACT_APP_USER_POOL_ID')}/.well-known/jwks.json"
+# "https://cognito-idp.us-east-1.amazonaws.com/{}/.well-known/jwks.json".format(os.getenv('REACT_APP_USER_POOL_ID'))
# )
# response = requests.get(jwks_url)
# jwks = response.json()
@@ -273,34 +273,38 @@ def get_current_active_user(
if api_key:
user = get_user_by_api_key(api_key)
elif token:
- try:
- # Decode token in Authorization header to get user
- payload = jwt.decode(token, JWT_SECRET, algorithms=[JWT_ALGORITHM])
- user_id = payload.get("id")
-
- if user_id is None:
- print("No user ID found in token")
+ # Check if token is an API key
+ if re.match(r"^[A-Fa-f0-9]{32}$", token):
+ user = get_user_by_api_key(token)
+ else:
+ try:
+ # Decode token in Authorization header to get user
+ payload = jwt.decode(token, JWT_SECRET, algorithms=[JWT_ALGORITHM])
+ user_id = payload.get("id")
+
+ if user_id is None:
+ print("No user ID found in token")
+ raise HTTPException(
+ status_code=status.HTTP_401_UNAUTHORIZED,
+ detail="Invalid token",
+ headers={"WWW-Authenticate": "Bearer"},
+ )
+ # Fetch the user by ID from the database
+ user = User.objects.get(id=user_id)
+ except jwt.ExpiredSignatureError:
+ print("Token has expired")
+ raise HTTPException(
+ status_code=status.HTTP_401_UNAUTHORIZED,
+ detail="Token has expired",
+ headers={"WWW-Authenticate": "Bearer"},
+ )
+ except jwt.InvalidTokenError:
+ print("Invalid token")
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid token",
headers={"WWW-Authenticate": "Bearer"},
)
- # Fetch the user by ID from the database
- user = User.objects.get(id=user_id)
- except jwt.ExpiredSignatureError:
- print("Token has expired")
- raise HTTPException(
- status_code=status.HTTP_401_UNAUTHORIZED,
- detail="Token has expired",
- headers={"WWW-Authenticate": "Bearer"},
- )
- except jwt.InvalidTokenError:
- print("Invalid token")
- raise HTTPException(
- status_code=status.HTTP_401_UNAUTHORIZED,
- detail="Invalid token",
- headers={"WWW-Authenticate": "Bearer"},
- )
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
@@ -368,7 +372,7 @@ async def get_jwt_from_code(auth_code: str):
proxy_url = os.getenv("LZ_PROXY_URL")
scope = "openid"
- authorize_token_url = f"https://{domain}/oauth2/token"
+ authorize_token_url = "https://{}/oauth2/token".format(domain)
authorize_token_body = {
"grant_type": "authorization_code",
"client_id": client_id,
@@ -400,7 +404,7 @@ async def get_jwt_from_code(auth_code: str):
# Decode the token without verifying the signature (if needed)
decoded_token = jwt.decode(id_token, options={"verify_signature": False})
- print(f"decoded token: {decoded_token}")
+ print("decoded token: {}".format(decoded_token))
return {
"refresh_token": refresh_token,
"id_token": id_token,
@@ -409,7 +413,7 @@ async def get_jwt_from_code(auth_code: str):
}
except Exception as error:
- print(f"get_jwt_from_code post error: {error}")
+ print("get_jwt_from_code post error: {}".format(error))
def can_access_user(current_user, target_user_id) -> bool:
@@ -541,6 +545,7 @@ def get_stats_org_ids(current_user, filters):
is_global_view_admin(current_user)
or (is_regional_admin_for_organization(current_user, org_id))
or (is_org_admin(current_user, org_id))
+ or (get_org_memberships(current_user))
):
organization_ids.add(org_id)
diff --git a/backend/src/xfd_django/xfd_api/helpers/elastic_search.py b/backend/src/xfd_django/xfd_api/helpers/elastic_search.py
index 2a703f0cd..4999b63d2 100644
--- a/backend/src/xfd_django/xfd_api/helpers/elastic_search.py
+++ b/backend/src/xfd_django/xfd_api/helpers/elastic_search.py
@@ -19,7 +19,7 @@ def build_sort(sort_direction: str, sort_field: str) -> Optional[List[Dict[str,
return None
if sort_field in NON_KEYWORD_FIELDS:
return [{sort_field: {"order": sort_direction}}]
- return [{f"{sort_field}.keyword": {"order": sort_direction}}]
+ return [{"{}.keyword".format(sort_field): {"order": sort_direction}}]
def build_match(search_term: str) -> Dict[str, Any]:
@@ -54,8 +54,8 @@ def get_term_filter_value(field, field_value):
if isinstance(field_value, (int, float)):
return {field: field_value}
if field == "name" and field_value and "*" not in field_value:
- field_value = f"*{field_value}*"
- return {f"{field}.keyword": field_value}
+ field_value = "*{}*".format(field_value)
+ return {"{}.keyword".format(field): field_value}
def get_term_filter(term_filter):
diff --git a/backend/src/xfd_django/xfd_api/helpers/email.py b/backend/src/xfd_django/xfd_api/helpers/email.py
index d842eb5c7..88f32dcc3 100644
--- a/backend/src/xfd_django/xfd_api/helpers/email.py
+++ b/backend/src/xfd_django/xfd_api/helpers/email.py
@@ -34,8 +34,10 @@ def send_invite_email(email, organization=None):
frontend_domain = settings.FRONTEND_DOMAIN
reply_to = settings.CROSSFEED_SUPPORT_EMAIL_REPLYTO
- org_name_part = f"the {organization.name} organization on " if organization else ""
- message = f"""
+ org_name_part = (
+ "the {} organization on ".format(organization.name) if organization else ""
+ )
+ message = """
Hi there,
You've been invited to join {org_name_part}CyHy Dashboard. To accept the invitation and start using CyHy Dashboard, sign on at {frontend_domain}/signup.
@@ -52,7 +54,9 @@ def send_invite_email(email, organization=None):
For more information on using CyHy Dashboard, view the CyHy Dashboard user guide at https://docs.crossfeed.cyber.dhs.gov/user-guide/quickstart/.
If you encounter any difficulties, please feel free to reply to this email (or send an email to {reply_to}).
- """
+ """.format(
+ org_name_part=org_name_part, frontend_domain=frontend_domain, reply_to=reply_to
+ )
send_email(email, "CyHy Dashboard Invitation", message)
@@ -73,9 +77,9 @@ def send_email(recipient, subject, body):
try:
ses_client.send_email(**email_params)
- print(f"Email sent to {recipient}")
+ print("Email sent to {}".format(recipient))
except ClientError as e:
- print(f"Error sending email: {e}")
+ print("Error sending email: {}".format(e))
def send_registration_approved_email(
diff --git a/backend/src/xfd_django/xfd_api/helpers/filter_helpers.py b/backend/src/xfd_django/xfd_api/helpers/filter_helpers.py
index 3366e542f..598d23439 100644
--- a/backend/src/xfd_django/xfd_api/helpers/filter_helpers.py
+++ b/backend/src/xfd_django/xfd_api/helpers/filter_helpers.py
@@ -6,6 +6,20 @@
from ..models import Vulnerability
from ..schema_models.vulnerability import VulnerabilityFilters
+# Define the severity levels
+SEVERITY_LEVELS = ["Low", "Medium", "High", "Critical"]
+NULL_VALUES = ["None", "Null", "N/A", "Undefined", ""]
+
+
+def format_severity(severity: str) -> str:
+ """Format severity to classify as 'N/A', standard severity, or 'Other'."""
+ if severity is None or severity in NULL_VALUES:
+ return "N/A"
+ elif severity.title() in SEVERITY_LEVELS:
+ return severity.title()
+ else:
+ return "Other"
+
def sort_direction(sort, order):
"""
@@ -100,7 +114,34 @@ def apply_vuln_filters(
# Partial match on severity
if vulnerability_filters.severity:
- q &= Q(severity__icontains=vulnerability_filters.severity)
+ severity_category = format_severity(vulnerability_filters.severity)
+
+ if severity_category == "N/A":
+ q &= (
+ Q(severity=None)
+ | Q(severity__icontains="none")
+ | Q(severity__icontains="null")
+ | Q(severity__icontains="n/a")
+ | Q(severity__icontains="undefined")
+ | Q(severity="")
+ )
+
+ elif severity_category == "Other":
+ q &= ~(
+ Q(severity=None)
+ | Q(severity__icontains="none")
+ | Q(severity__icontains="null")
+ | Q(severity__icontains="undefined")
+ | Q(severity="")
+ | Q(severity__icontains="N/A")
+ | Q(severity__icontains="Low")
+ | Q(severity__icontains="Medium")
+ | Q(severity__icontains="High")
+ | Q(severity__icontains="Critical")
+ )
+
+ elif severity_category in SEVERITY_LEVELS:
+ q &= Q(severity__icontains=severity_category)
# Partial match on cpe
if vulnerability_filters.cpe:
diff --git a/backend/src/xfd_django/xfd_api/helpers/s3_client.py b/backend/src/xfd_django/xfd_api/helpers/s3_client.py
index 1d6e3b9c6..f42c0a0a8 100644
--- a/backend/src/xfd_django/xfd_api/helpers/s3_client.py
+++ b/backend/src/xfd_django/xfd_api/helpers/s3_client.py
@@ -39,7 +39,9 @@ def __init__(self, is_local=None):
def save_csv(self, body, name=""):
"""Save a CSV file in S3 and returns a temporary URL for access."""
try:
- key = f"{random.random()}/{name}-{datetime.utcnow().isoformat()}.csv"
+ key = "{}/{}-{}.csv".format(
+ random.random(), name, datetime.utcnow().isoformat()
+ )
bucket = os.getenv("EXPORT_BUCKET_NAME")
# Save CSV to S3
@@ -61,7 +63,7 @@ def save_csv(self, body, name=""):
def export_report(self, report_name, org_id):
"""Generate a presigned URL for a report."""
try:
- key = f"{org_id}/{report_name}"
+ key = "{}/{}".format(org_id, report_name)
bucket = os.getenv("REPORTS_BUCKET_NAME")
url = self.s3.generate_presigned_url(
@@ -78,7 +80,7 @@ def list_reports(self, org_id):
"""List all reports in a specified organization's folder."""
try:
bucket = os.getenv("REPORTS_BUCKET_NAME")
- prefix = f"{org_id}/"
+ prefix = "{}/".format(org_id)
response = self.s3.list_objects_v2(
Bucket=bucket, Prefix=prefix, Delimiter=""
@@ -95,9 +97,9 @@ def pull_daily_vs(self, filename):
try:
response = self.s3.head_object(Bucket=bucket, Key=filename)
if response:
- print(f"File '{filename}' exists in bucket {bucket}.")
+ print("File '{}' exists in bucket {}.".format(filename, bucket))
except self.s3.exceptions.NoSuchKey:
- print(f"File '{filename}' does not exist in bucket {bucket}.")
+ print("File '{}' does not exist in bucket {}.".format(filename, bucket))
return None
except ClientError as e:
print("Error checking for file in S3: %s", e)
diff --git a/backend/src/xfd_django/xfd_api/helpers/stats_helpers.py b/backend/src/xfd_django/xfd_api/helpers/stats_helpers.py
index fb7cead76..6fe9ab80a 100644
--- a/backend/src/xfd_django/xfd_api/helpers/stats_helpers.py
+++ b/backend/src/xfd_django/xfd_api/helpers/stats_helpers.py
@@ -22,7 +22,9 @@ async def get_stats_count_from_cache(redis_client, redis_key_prefix, filtered_or
aggregated_stats = defaultdict(int)
# Fetch data from Redis by organization ID
- redis_keys = [f"{redis_key_prefix}:{org_id}" for org_id in filtered_org_ids]
+ redis_keys = [
+ "{}:{}".format(redis_key_prefix, org_id) for org_id in filtered_org_ids
+ ]
redis_responses = await asyncio.gather(
*(redis_client.get(redis_key) for redis_key in redis_keys),
return_exceptions=True,
@@ -34,7 +36,14 @@ async def get_stats_count_from_cache(redis_client, redis_key_prefix, filtered_or
if response:
stats_list = json.loads(response)
for stat in stats_list:
- aggregated_stats[stat["id"]] += stat["value"]
+ stat_id = stat["id"]
+ # Handle the case where the stat ID is None.
+ # None/Null values come from Redis as "0" and cannot be incremented.
+ if stat_id in [None, "None"]:
+ stat_id = "None"
+ if stat["value"] == 0:
+ stat["value"] = 1
+ aggregated_stats[stat_id] += stat["value"]
return [
{"id": stat_id, "value": value, "label": stat_id}
@@ -92,18 +101,18 @@ def populate_stats_cache(
# Store stats in Redis
for group_id, data in stats_by_group.items():
- redis_key = f"{redis_key_prefix}:{group_id}"
+ redis_key = "{}:{}".format(redis_key_prefix, group_id)
redis_client.set(redis_key, json.dumps(data))
return {
"status": "success",
- "message": f"Cache populated successfully for {redis_key_prefix}.",
+ "message": "Cache populated successfully for {}.".format(redis_key_prefix),
}
except Exception as e:
return {
"status": "error",
- "message": f"An unexpected error occurred: {e}",
+ "message": "An unexpected error occurred: {}".format(e),
}
@@ -119,5 +128,5 @@ async def get_total_count(filtered_org_ids):
return total_count
except Exception as e:
- print(f"Unexpected error fetching total count: {e}")
+ print("Unexpected error fetching total count: {}".format(e))
return 0
diff --git a/backend/src/xfd_django/xfd_api/login_gov.py b/backend/src/xfd_django/xfd_api/login_gov.py
index 2bc3362ac..9b9ad52cc 100644
--- a/backend/src/xfd_django/xfd_api/login_gov.py
+++ b/backend/src/xfd_django/xfd_api/login_gov.py
@@ -16,7 +16,7 @@
try:
jwk_set = {"keys": [json.loads(os.getenv("LOGIN_GOV_JWT_KEY", ""))]}
except Exception as error:
- print(f"Error: {error}")
+ print("Error: {}".format(error))
jwk_set = {"keys": [{}]}
# OpenID Connect Client Configuration
@@ -46,12 +46,12 @@ def login():
state = random_string(32)
# Create authorization URL
- authorization_url = (
- f"{config['authorization_endpoint']}?response_type=code"
- f"&client_id={client_options['client_id']}"
- f"&redirect_uri={client_options['redirect_uris'][0]}"
- f"&scope=openid+email"
- f"&nonce={nonce}&state={state}&prompt=select_account"
+ authorization_url = "{}?response_type=code&client_id={}&redirect_uri={}&scope=openid+email&nonce={}&state={}&prompt=select_account".format(
+ config["authorization_endpoint"],
+ client_options["client_id"],
+ client_options["redirect_uris"][0],
+ nonce,
+ state,
)
return {"url": authorization_url, "state": state, "nonce": nonce}
@@ -90,5 +90,5 @@ def callback(body):
# Decode the ID token without verifying the signature
# (optional depending on your security model)
decoded_token = jwt.decode(id_token, options={"verify_signature": False})
- print(f"Decoded Token from login_gov: {decoded_token}")
+ print("Decoded Token from login_gov: {}".format(decoded_token))
return decoded_token
diff --git a/backend/src/xfd_django/xfd_api/management/commands/local_scan_execution.py b/backend/src/xfd_django/xfd_api/management/commands/local_scan_execution.py
index 7adb5b004..6f86b59e3 100644
--- a/backend/src/xfd_django/xfd_api/management/commands/local_scan_execution.py
+++ b/backend/src/xfd_django/xfd_api/management/commands/local_scan_execution.py
@@ -35,7 +35,7 @@ def handle(self, *args, **options):
desired_count = options["desired_count"]
api_key_list = options["api_key_list"]
org_list = options.get("org_list", [])
- queue = options.get("queue", f"staging-{scan_type}-queue")
+ queue = options.get("queue", "staging-{}-queue".format(scan_type))
if not org_list:
self.stdout.write(self.style.ERROR("Organization list cannot be empty."))
@@ -76,7 +76,7 @@ def send_message_to_queue(message, queue):
# Close the connection
connection.close()
except Exception as e:
- print(f"Error sending message to queue {queue}: {e}")
+ print("Error sending message to queue {}: {}".format(queue, e))
@staticmethod
def local_scan_execution(scan_type, desired_count, api_key_list=""):
diff --git a/backend/src/xfd_django/xfd_api/management/commands/syncdb.py b/backend/src/xfd_django/xfd_api/management/commands/syncdb.py
index c029f718c..0338512a9 100644
--- a/backend/src/xfd_django/xfd_api/management/commands/syncdb.py
+++ b/backend/src/xfd_django/xfd_api/management/commands/syncdb.py
@@ -3,6 +3,7 @@
from django.core.management.base import BaseCommand
from xfd_api.tasks.searchSync import handler as sync_es_domains
from xfd_api.tasks.syncdb_helpers import (
+ create_scan_user,
drop_all_tables,
manage_elasticsearch_indices,
populate_sample_data,
@@ -48,7 +49,11 @@ def handle(self, *args, **options):
# Step 2: Elasticsearch Index Management
manage_elasticsearch_indices(dangerouslyforce)
- # Step 3: Populate Sample Data
+ # Step 3: Create the scanning user if doesn't exist
+ self.stdout.write("Creating and configuring the scanning user...")
+ create_scan_user()
+
+ # Step 4: Populate Sample Data
if populate:
self.stdout.write("Populating the database with sample data...")
populate_sample_data()
diff --git a/backend/src/xfd_django/xfd_api/models.py b/backend/src/xfd_django/xfd_api/models.py
index 3f8916d9d..f0297f669 100644
--- a/backend/src/xfd_django/xfd_api/models.py
+++ b/backend/src/xfd_django/xfd_api/models.py
@@ -582,7 +582,7 @@ class User(models.Model):
def save(self, *args, **kwargs):
"""Save user with fullName."""
- self.fullName = f"{self.firstName} {self.lastName}"
+ self.fullName = "{} {}".format(self.firstName, self.lastName)
super().save(*args, **kwargs)
class Meta:
diff --git a/backend/src/xfd_django/xfd_api/tasks/bastion.py b/backend/src/xfd_django/xfd_api/tasks/bastion.py
index e7f13ec68..350ed4458 100644
--- a/backend/src/xfd_django/xfd_api/tasks/bastion.py
+++ b/backend/src/xfd_django/xfd_api/tasks/bastion.py
@@ -27,7 +27,7 @@ def handler(event, context):
elif mode == "es":
return handle_es_query(query)
else:
- return {"statusCode": 400, "body": f"Unsupported mode: {mode}"}
+ return {"statusCode": 400, "body": "Unsupported mode: {}".format(mode)}
except Exception as e:
return {"statusCode": 500, "body": str(e)}
@@ -50,4 +50,7 @@ def handle_es_query(query):
client.delete_all()
return {"statusCode": 200, "body": "Index successfully deleted."}
else:
- return {"statusCode": 400, "body": f"Unsupported Elasticsearch query: {query}"}
+ return {
+ "statusCode": 400,
+ "body": "Unsupported Elasticsearch query: {}".format(query),
+ }
diff --git a/backend/src/xfd_django/xfd_api/tasks/checkUserExpiration.py b/backend/src/xfd_django/xfd_api/tasks/checkUserExpiration.py
index b6300f3b9..3c394a287 100644
--- a/backend/src/xfd_django/xfd_api/tasks/checkUserExpiration.py
+++ b/backend/src/xfd_django/xfd_api/tasks/checkUserExpiration.py
@@ -39,17 +39,19 @@ def check_user_expiration():
# Notify users of inactivity (30 days)
for user in users_to_notify:
subject = "Account Inactivity Notice"
- body = f"""
- Hello {user.firstName} {user.lastName},
+ body = """
+ Hello {firstName} {lastName},
Your account has been inactive for over 30 days. If your account reaches 45 days of inactivity,
your password will be reset, requiring action to reactivate your account.
Thank you,
The Crossfeed Team
- """
+ """.format(
+ firstName=user.firstName, lastName=user.lastName
+ )
send_email(user.email, subject, body)
- print(f"30-day inactivity notice sent to {user.email}.")
+ print("30-day inactivity notice sent to {}.".format(user.email))
# Users to deactivate (45 days of inactivity)
users_to_deactivate = User.objects.filter(
@@ -58,8 +60,8 @@ def check_user_expiration():
for user in users_to_deactivate:
subject = "Account Deactivation Notice"
- body = f"""
- Hello {user.firstName} {user.lastName},
+ body = """
+ Hello {firstName} {lastName},
Your account has been inactive for over 45 days. As a result, your password has been reset.
You will need to set a new password the next time you log in. If your account reaches 90 days of inactivity,
@@ -67,7 +69,9 @@ def check_user_expiration():
Thank you,
The Crossfeed Team
- """
+ """.format(
+ firstName=user.firstName, lastName=user.lastName
+ )
# Send inactivity notification
send_email(user.email, subject, body)
@@ -79,24 +83,30 @@ def check_user_expiration():
Password=os.getenv("REACT_APP_RANDOM_PASSWORD"),
Permanent=False,
)
- print(f"Password reset for user {user.email} due to 45 days of inactivity.")
+ print(
+ "Password reset for user {} due to 45 days of inactivity.".format(
+ user.email
+ )
+ )
except ClientError as e:
- print(f"Error resetting password for {user.email}: {e}")
+ print("Error resetting password for {}: {}".format(user.email, e))
# Users to remove (90 days of inactivity)
users_to_remove = User.objects.filter(lastLoggedIn__lt=cutoff_90_days)
for user in users_to_remove:
subject = "Account Removal Notice"
- body = f"""
- Hello {user.firstName} {user.lastName},
+ body = """
+ Hello {firstName} {lastName},
Your account has been inactive for over 90 days and has been removed.
You will need to recreate your account if you wish to use our services again.
Thank you,
The Crossfeed Team
- """
+ """.format(
+ firstName=user.firstName, lastName=user.lastName
+ )
# Notify user of account removal
send_email(user.email, subject, body)
@@ -107,15 +117,17 @@ def check_user_expiration():
UserPoolId=user_pool_id,
Username=user.cognitoId,
)
- print(f"Removed user {user.email} from Cognito.")
+ print("Removed user {} from Cognito.".format(user.email))
# Remove from database
user.delete()
print(
- f"Removed user {user.email} from the database due to 90 days of inactivity."
+ "Removed user {} from the database due to 90 days of inactivity.".format(
+ user.email
+ )
)
except ClientError as e:
- print(f"Error removing user {user.email}: {e}")
+ print("Error removing user {}: {}".format(user.email, e))
def handler(event, context):
@@ -127,5 +139,5 @@ def handler(event, context):
"body": "User expiration check completed successfully.",
}
except Exception as e:
- print(f"Error during user expiration check: {e}")
+ print("Error during user expiration check: {}".format(e))
return {"statusCode": 500, "body": str(e)}
diff --git a/backend/src/xfd_django/xfd_api/tasks/cveSync.py b/backend/src/xfd_django/xfd_api/tasks/cveSync.py
index a8d90aa35..8d0f6c0c6 100644
--- a/backend/src/xfd_django/xfd_api/tasks/cveSync.py
+++ b/backend/src/xfd_django/xfd_api/tasks/cveSync.py
@@ -34,7 +34,9 @@ def main():
task_request = fetch_cve_data(page)
if not task_request or task_request.get("status") != "Processing":
raise Exception(
- f"Error: {task_request.get('error')} - Status: {task_request.get('status')}"
+ "Error: {} - Status: {}".format(
+ task_request.get("error"), task_request.get("status")
+ )
)
while task_request.get("status") == "Processing":
@@ -53,13 +55,15 @@ def main():
page += 1
else:
raise Exception(
- f"Task error: {task_request.get('error')} - Status: {task_request.get('status')}"
+ "Task error: {} - Status: {}".format(
+ task_request.get("error"), task_request.get("status")
+ )
)
def fetch_cve_data(page):
"""Fetch CVE data for a specific page."""
- print(f"Fetching CVE data for page {page}")
+ print("Fetching CVE data for page {}".format(page))
headers = {
"X-API-KEY": os.getenv("CF_API_KEY"),
"access_token": os.getenv("PE_API_KEY"),
@@ -77,13 +81,15 @@ def fetch_cve_data(page):
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
- print(f"Error fetching CVE data: {e}")
+ print("Error fetching CVE data: {}".format(e))
return None
def fetch_cve_data_task(task_id):
"""Fetch task result for CVE data."""
- url = f"https://api.staging-cd.crossfeed.cyber.dhs.gov/pe/apiv1/cves_by_modified_date/task/{task_id}"
+ url = "https://api.staging-cd.crossfeed.cyber.dhs.gov/pe/apiv1/cves_by_modified_date/task/{}".format(
+ task_id
+ )
headers = {
"X-API-KEY": os.getenv("CF_API_KEY"),
"access_token": os.getenv("PE_API_KEY"),
@@ -95,7 +101,7 @@ def fetch_cve_data_task(task_id):
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
- print(f"Error fetching CVE task data: {e}")
+ print("Error fetching CVE task data: {}".format(e))
return None
@@ -134,7 +140,7 @@ def save_cpes_to_db(cpes):
)
cpe_ids.append(cpe_obj.id)
except Exception as e:
- print(f"Error saving CPE: {e}")
+ print("Error saving CPE: {}".format(e))
return cpe_ids
@@ -159,4 +165,4 @@ def save_cve_to_db(cve, cpe_ids):
cve_obj.cpes.add(*cpe_ids)
cve_obj.save()
except Exception as e:
- print(f"Error saving CVE: {e}")
+ print("Error saving CVE: {}".format(e))
diff --git a/backend/src/xfd_django/xfd_api/tasks/ecs_client.py b/backend/src/xfd_django/xfd_api/tasks/ecs_client.py
index 8d3f88056..977c2e035 100644
--- a/backend/src/xfd_django/xfd_api/tasks/ecs_client.py
+++ b/backend/src/xfd_django/xfd_api/tasks/ecs_client.py
@@ -54,7 +54,12 @@ def run_command(self, command_options):
# Run the command in a local Docker container
try:
container_name = to_snake_case(
- f"crossfeed_worker_{'global' if global_scan else organization_name}_{scan_name}_{int(os.urandom(4).hex(), 16)}"
+ "crossfeed_worker_{global_str}_{organization}_{scan}_{random}".format(
+ global_str="global" if global_scan else organization_name,
+ organization=organization_name,
+ scan=scan_name,
+ random=int(os.urandom(4).hex(), 16),
+ )
)
container = self.docker.containers.run(
"crossfeed-worker",
@@ -143,7 +148,7 @@ def run_command(self, command_options):
},
{
"name": "NODE_OPTIONS",
- "value": f"--max_old_space_size={memory}"
+ "value": "--max_old_space_size={}".format(memory)
if memory
else "",
},
@@ -164,7 +169,7 @@ def get_logs(self, fargate_task_arn):
# Process and return the logs
return "\n".join(line for line in log_stream.decode("utf-8").splitlines())
else:
- log_stream_name = f"worker/main/{fargate_task_arn.split('/')[-1]}"
+ log_stream_name = "worker/main/{}".format(fargate_task_arn.split("/")[-1])
# Fetch logs from AWS CloudWatch
response = self.cloudwatch_logs.get_log_events(
@@ -180,7 +185,12 @@ def get_logs(self, fargate_task_arn):
# Format the logs as "timestamp message"
formatted_logs = "\n".join(
- f"{datetime.utcfromtimestamp(event['timestamp'] / 1000).isoformat(timespec='seconds')} {event['message']}"
+ "{} {}".format(
+ datetime.fromtimestamp(
+ event["timestamp"] / 1000, datetime.timezone.utc
+ ).isoformat(timespec="seconds"),
+ event["message"],
+ )
for event in events
)
return formatted_logs
diff --git a/backend/src/xfd_django/xfd_api/tasks/elasticache_tasks.py b/backend/src/xfd_django/xfd_api/tasks/elasticache_tasks.py
index 164dc3b64..b63d2c8d2 100644
--- a/backend/src/xfd_django/xfd_api/tasks/elasticache_tasks.py
+++ b/backend/src/xfd_django/xfd_api/tasks/elasticache_tasks.py
@@ -114,7 +114,7 @@ def populate_latest_vulns_cache(event, context):
# Store each organization's vulnerabilities in Redis
for org_id, data in vulnerabilities_by_org.items():
- redis_key = f"latest_vulnerabilities:{org_id}"
+ redis_key = "latest_vulnerabilities:{}".format(org_id)
redis_client.set(redis_key, json.dumps(data))
return {
@@ -125,7 +125,9 @@ def populate_latest_vulns_cache(event, context):
except Exception as e:
return {
"status": "error",
- "message": f"An unexpected error occurred while populating the cache: {e}",
+ "message": "An unexpected error occurred while populating the cache: {}".format(
+ e
+ ),
}
@@ -171,7 +173,7 @@ def populate_most_common_vulns_cache(event, context):
# Store each organization's vulnerabilities in Redis
for org_id, data in vulnerabilities_by_org.items():
- redis_key = f"most_common_vulnerabilities:{org_id}"
+ redis_key = "most_common_vulnerabilities:{}".format(org_id)
redis_client.set(redis_key, json.dumps(data))
return {
@@ -182,7 +184,9 @@ def populate_most_common_vulns_cache(event, context):
except Exception as e:
return {
"status": "error",
- "message": f"An unexpected error occurred while populating the cache: {e}",
+ "message": "An unexpected error occurred while populating the cache: {}".format(
+ e
+ ),
}
@@ -235,7 +239,7 @@ def populate_by_org_cache(event, context):
for vuln in vulnerabilities:
org_id = str(vuln["domain__organization__id"])
org_name = vuln["domain__organization__name"]
- redis_key = f"by_org_stats:{org_id}"
+ redis_key = "by_org_stats:{}".format(org_id)
data = {
"id": org_name, # Organization name as "id"
"orgId": org_id, # Organization ID
@@ -252,5 +256,7 @@ def populate_by_org_cache(event, context):
except Exception as e:
return {
"status": "error",
- "message": f"An unexpected error occurred while populating the cache: {e}",
+ "message": "An unexpected error occurred while populating the cache: {}".format(
+ e
+ ),
}
diff --git a/backend/src/xfd_django/xfd_api/tasks/es_client.py b/backend/src/xfd_django/xfd_api/tasks/es_client.py
index 3cad3e97f..17871615b 100644
--- a/backend/src/xfd_django/xfd_api/tasks/es_client.py
+++ b/backend/src/xfd_django/xfd_api/tasks/es_client.py
@@ -1,5 +1,6 @@
"""ES client."""
# Standard Python Libraries
+import logging
import os
# Third-Party Libraries
@@ -37,7 +38,7 @@ def sync_organizations_index(self):
"""Create or updates the organizations index with mappings."""
try:
if not self.client.indices.exists(index=ORGANIZATIONS_INDEX):
- print(f"Creating index {ORGANIZATIONS_INDEX}...")
+ logging.info("Creating index %s...", ORGANIZATIONS_INDEX)
self.client.indices.create(
index=ORGANIZATIONS_INDEX,
body={
@@ -46,19 +47,19 @@ def sync_organizations_index(self):
},
)
else:
- print(f"Updating index {ORGANIZATIONS_INDEX}...")
+ logging.info("Updating index %s...", ORGANIZATIONS_INDEX)
self.client.indices.put_mapping(
index=ORGANIZATIONS_INDEX, body=organization_mapping
)
except Exception as e:
- print(f"Error syncing organizations index: {e}")
+ logging.error("Error syncing organizations index: %s", e)
raise e
def sync_domains_index(self):
"""Create or updates the domains index with mappings."""
try:
if not self.client.indices.exists(index=DOMAINS_INDEX):
- print(f"Creating index {DOMAINS_INDEX}...")
+ logging.info("Creating index %s...", DOMAINS_INDEX)
self.client.indices.create(
index=DOMAINS_INDEX,
body={
@@ -67,7 +68,7 @@ def sync_domains_index(self):
},
)
else:
- print(f"Updating index {DOMAINS_INDEX}...")
+ logging.info("Updating index %s...", DOMAINS_INDEX)
self.client.indices.put_mapping(
index=DOMAINS_INDEX, body=domain_mapping
)
@@ -76,7 +77,7 @@ def sync_domains_index(self):
index=DOMAINS_INDEX, body={"settings": {"refresh_interval": "1800s"}}
)
except Exception as e:
- print(f"Error syncing domains index: {e}")
+ logging.error("Error syncing domains index: %s", e)
raise e
def update_organizations(self, organizations):
@@ -117,7 +118,7 @@ def update_webpages(self, webpages):
{
"_op_type": "update",
"_index": DOMAINS_INDEX,
- "_id": f"webpage_{webpage['webpage_id']}",
+ "_id": "webpage_{}".format(webpage["webpage_id"]),
"routing": webpage["webpage_domainId"],
"doc": {
**webpage,
@@ -139,7 +140,7 @@ def delete_all(self):
print("Deleting all indices...")
self.client.indices.delete(index="*")
except Exception as e:
- print(f"Error deleting all indices: {e}")
+ logging.error("Error deleting all indices: %s", e)
raise e
def search_domains(self, body):
@@ -156,15 +157,17 @@ def _bulk_update(self, actions):
success_count, response = helpers.bulk(
self.client, actions, raise_on_error=False
)
- print(f"Bulk operation success count: {success_count}")
+ logging.info("Bulk operation success count: %s", success_count)
for idx, item in enumerate(response):
if "update" in item and item["update"].get("error"):
- print(f"Error indexing document {idx}: {item['update']['error']}")
+ logging.error(
+ "Error indexing document %s: %s", idx, item["update"]["error"]
+ )
else:
- print(f"Successfully indexed document {idx}: {item}")
+ logging.info("Successfully indexed document %s: %s", idx, item)
self.client.indices.refresh(index="domains-5")
except Exception as e:
- print(f"Bulk operation error: {e}")
+ logging.error("Bulk operation error: %s", e)
raise e
diff --git a/backend/src/xfd_django/xfd_api/tasks/flagFloatingIps.py b/backend/src/xfd_django/xfd_api/tasks/flagFloatingIps.py
index 46f40a3f9..6c399e62e 100644
--- a/backend/src/xfd_django/xfd_api/tasks/flagFloatingIps.py
+++ b/backend/src/xfd_django/xfd_api/tasks/flagFloatingIps.py
@@ -23,7 +23,7 @@ async def check_ip_in_cidr(ip: str, acronym: str) -> bool:
network__contains=ip, id__in=organization.cidrs.values_list("id", flat=True)
).exists()
except Exception as e:
- print(f"Error checking IP in CIDR: {e}")
+ print("Error checking IP in CIDR: {}".format(e))
return False
@@ -52,7 +52,7 @@ def is_executive(organization: Organization) -> bool:
# Check if the organization or any of its parents belong to the EXECUTIVE sector
return is_executive(organization)
except Exception as e:
- print(f"Error checking organization is FCEB: {e}")
+ print("Error checking organization is FCEB: {}".format(e))
return False
@@ -61,7 +61,7 @@ async def handler(command_options):
organization_id = command_options.get("organizationId")
organization_name = command_options.get("organizationName")
- print(f"Running flagFloatingIps for {organization_name}...")
+ print("Running flagFloatingIps for {}...".format(organization_name))
try:
# Fetch organization with related domains
@@ -74,7 +74,7 @@ async def handler(command_options):
)
for organization in organizations:
- print(f"Processing organization: {organization_name}...")
+ print("Processing organization: {}...".format(organization_name))
# Check if the organization is executive (isFceb)
is_executive = await check_org_is_fceb(organization.acronym)
@@ -85,7 +85,9 @@ async def handler(command_options):
Domain.objects.filter(
id__in=[domain.id for domain in domains_to_update]
).update(isFceb=True)
- print(f"Marked all domains in {organization_name} as isFceb=True.")
+ print(
+ "Marked all domains in {} as isFceb=True.".format(organization_name)
+ )
else:
# Update domains' fromCidr status
for domain in organization.domains.all():
@@ -96,9 +98,13 @@ async def handler(command_options):
if domain.fromCidr != from_cidr:
domain.fromCidr = from_cidr
domain.save() # Save domain only if `fromCidr` changes
- print(f"Updated domain {domain.name}: fromCidr={from_cidr}")
+ print(
+ "Updated domain {}: fromCidr={}".format(
+ domain.name, from_cidr
+ )
+ )
- print(f"Completed processing for organization: {organization_name}.")
+ print("Completed processing for organization: {}.".format(organization_name))
except Exception as e:
- print(f"Error processing organization {organization_name}: {e}")
+ print("Error processing organization {}: {}".format(organization_name, e))
diff --git a/backend/src/xfd_django/xfd_api/tasks/lambda_client.py b/backend/src/xfd_django/xfd_api/tasks/lambda_client.py
index 11ec81986..27e94c0e7 100644
--- a/backend/src/xfd_django/xfd_api/tasks/lambda_client.py
+++ b/backend/src/xfd_django/xfd_api/tasks/lambda_client.py
@@ -24,7 +24,7 @@ def __init__(self):
def run_command(self, name: str):
"""Invoke a lambda function with the given name."""
- print(f"Invoking lambda function: {name}")
+ print("Invoking lambda function: {}".format(name))
if self.is_local:
# If running locally, directly call the scheduler function
scheduler({}, {})
diff --git a/backend/src/xfd_django/xfd_api/tasks/run_syncdb.py b/backend/src/xfd_django/xfd_api/tasks/run_syncdb.py
index ac01356ea..775066101 100644
--- a/backend/src/xfd_django/xfd_api/tasks/run_syncdb.py
+++ b/backend/src/xfd_django/xfd_api/tasks/run_syncdb.py
@@ -55,8 +55,8 @@ def handler(event, context):
"body": "Database synchronization completed successfully.",
}
except Exception as e:
- print(f"Error during syncdb: {str(e)}")
+ print("Error during syncdb: {}".format(str(e)))
return {
"statusCode": 500,
- "body": f"Database synchronization failed: {str(e)}",
+ "body": "Database synchronization failed: {}".format(str(e)),
}
diff --git a/backend/src/xfd_django/xfd_api/tasks/run_syncmdl.py b/backend/src/xfd_django/xfd_api/tasks/run_syncmdl.py
new file mode 100644
index 000000000..e01b98024
--- /dev/null
+++ b/backend/src/xfd_django/xfd_api/tasks/run_syncmdl.py
@@ -0,0 +1,32 @@
+"""Run syncmdl."""
+# Standard Python Libraries
+import os
+
+# Third-Party Libraries
+import django
+from django.core.management import call_command
+
+# Set the Django settings module
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xfd_django.settings")
+os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
+
+# Initialize Django
+django.setup()
+
+
+def handler(event, context):
+ """Trigger syncmdl."""
+ dangerouslyforce = event.get("dangerouslyforce", False)
+
+ try:
+ call_command("syncmdl", dangerouslyforce=dangerouslyforce)
+ return {
+ "statusCode": 200,
+ "body": "Database synchronization completed successfully.",
+ }
+ except Exception as e:
+ print("Error during syncmdl: {}".format(str(e)))
+ return {
+ "statusCode": 500,
+ "body": "Database synchronization failed: {}".format(str(e)),
+ }
diff --git a/backend/src/xfd_django/xfd_api/tasks/scanExecution.py b/backend/src/xfd_django/xfd_api/tasks/scanExecution.py
index 461a715a3..53dd36a76 100644
--- a/backend/src/xfd_django/xfd_api/tasks/scanExecution.py
+++ b/backend/src/xfd_django/xfd_api/tasks/scanExecution.py
@@ -49,7 +49,7 @@ def to_snake_case(input_string):
def start_desired_tasks(scan_type, desired_count, shodan_api_keys=None):
"""Start the desired number of tasks on AWS ECS or local Docker based on configuration."""
shodan_api_keys = shodan_api_keys or []
- queue_url = f"{QUEUE_URL}{scan_type}-queue"
+ queue_url = "{}{}-queue".format(QUEUE_URL, scan_type)
batch_size = 1 if scan_type == "shodan" else 10
remaining_count = desired_count
@@ -96,9 +96,9 @@ def start_desired_tasks(scan_type, desired_count, shodan_api_keys=None):
]
},
)
- print(f"Tasks started: {current_batch_count}")
+ print("Tasks started: {}".format(current_batch_count))
except ClientError as e:
- print(f"Error starting tasks: {e}")
+ print("Error starting tasks: {}".format(e))
raise e
remaining_count -= current_batch_count
@@ -109,7 +109,9 @@ def start_local_containers(count, scan_type, queue_url, shodan_api_key=""):
for i in range(count):
try:
container_name = to_snake_case(
- f"crossfeed_worker_{scan_type}_{i}_{random.randint(1, 10_000_000)}"
+ "crossfeed_worker_{}_{}_{}".format(
+ scan_type, i, random.randint(1, 10_000_000)
+ )
)
container = docker.containers.create(
name=container_name,
@@ -118,25 +120,25 @@ def start_local_containers(count, scan_type, queue_url, shodan_api_key=""):
mem_limit="4g",
detach=True,
environment=[
- f"DB_DIALECT={os.getenv('DB_DIALECT')}",
- f"DB_HOST={os.getenv('DB_HOST')}",
+ "DB_DIALECT={}".format(os.getenv("DB_DIALECT")),
+ "DB_HOST={}".format(os.getenv("DB_HOST")),
"IS_LOCAL=true",
- f"DB_PORT={os.getenv('DB_PORT')}",
- f"DB_NAME={os.getenv('DB_NAME')}",
- f"DB_USERNAME={os.getenv('DB_USERNAME')}",
- f"DB_PASSWORD={os.getenv('DB_PASSWORD')}",
- f"SERVICE_QUEUE_URL={queue_url}",
- f"SERVICE_TYPE={scan_type}",
- f"PE_SHODAN_API_KEYS={shodan_api_key}",
- f"WHOIS_XML_KEY={os.getenv('WHOIS_XML_KEY')}",
- f"QUALYS_USERNAME={os.getenv('QUALYS_USERNAME')}",
- f"QUALYS_PASSWORD={os.getenv('QUALYS_PASSWORD')}",
+ "DB_PORT={}".format(os.getenv("DB_PORT")),
+ "DB_NAME={}".format(os.getenv("DB_NAME")),
+ "DB_USERNAME={}".format(os.getenv("DB_USERNAME")),
+ "DB_PASSWORD={}".format(os.getenv("DB_PASSWORD")),
+ "SERVICE_QUEUE_URL={}".format(queue_url),
+ "SERVICE_TYPE={}".format(scan_type),
+ "PE_SHODAN_API_KEYS={}".format(shodan_api_key),
+ "WHOIS_XML_KEY={}".format(os.getenv("WHOIS_XML_KEY")),
+ "QUALYS_USERNAME={}".format(os.getenv("QUALYS_USERNAME")),
+ "QUALYS_PASSWORD={}".format(os.getenv("QUALYS_PASSWORD")),
],
)
container.start()
- print(f"Started container: {container_name}")
+ print("Started container: {}".format(container_name))
except Exception as e:
- print(f"Error starting container {i}: {e}")
+ print("Error starting container {}: {}".format(i, e))
def handler(event, context):
@@ -171,5 +173,5 @@ def handler(event, context):
return {"statusCode": 200, "body": "Tasks started successfully."}
except Exception as e:
- print(f"Error in handler: {e}")
+ print("Error in handler: {}".format(e))
return {"statusCode": 500, "body": json.dumps(str(e))}
diff --git a/backend/src/xfd_django/xfd_api/tasks/scheduler.py b/backend/src/xfd_django/xfd_api/tasks/scheduler.py
index e94731229..2e510b896 100644
--- a/backend/src/xfd_django/xfd_api/tasks/scheduler.py
+++ b/backend/src/xfd_django/xfd_api/tasks/scheduler.py
@@ -49,8 +49,8 @@ def initialize(self, scans, organizations, queued_scan_tasks, orgs_per_scan_task
self.orgs_per_scan_task = orgs_per_scan_task
self.num_existing_tasks = self.ecs.get_num_tasks()
- print(f"Number of running Fargate tasks: {self.num_existing_tasks}")
- print(f"Number of queued scan tasks: {len(self.queued_scan_tasks)}")
+ print("Number of running Fargate tasks: {}".format(self.num_existing_tasks))
+ print("Number of queued scan tasks: {}".format(len(self.queued_scan_tasks)))
def launch_single_scan_task(
self,
@@ -92,7 +92,9 @@ def launch_single_scan_task(
scan_task.status = "queued"
if not scan_task.queuedAt:
scan_task.queuedAt = timezone.now()
- print(f"Reached maximum concurrency, queueing scantask {scan_task.id}")
+ print(
+ "Reached maximum concurrency, queueing scantask {}".format(scan_task.id)
+ )
scan_task.save()
return
@@ -101,25 +103,29 @@ def launch_single_scan_task(
result = self.ecs.run_command(command_options)
if not result.get("tasks"):
print(
- f"Failed to start Fargate task for scan {scan.name}, failures: {result.get('failures')}"
+ "Failed to start Fargate task for scan {}, failures: {}".format(
+ scan.name, result.get("failures")
+ )
)
raise Exception(
- f"Failed to start Fargate task for scan {scan.name}"
+ "Failed to start Fargate task for scan {}".format(scan.name)
)
task_arn = result["tasks"][0]["taskArn"]
scan_task.fargateTaskArn = task_arn
print(
- f"Successfully invoked scan {scan.name} with Fargate on {len(organizations)} organizations. Task ARN: {task_arn}"
+ "Successfully invoked scan {} with Fargate on {} organizations. Task ARN: {}".format(
+ scan.name, len(organizations), task_arn
+ )
)
else:
- raise Exception(f"Invalid task type: {task_type}")
+ raise Exception("Invalid task type: {}".format(task_type))
scan_task.status = "requested"
scan_task.requestedAt = timezone.now()
self.num_launched_tasks += 1
except Exception as error:
- print(f"Error invoking {scan.name} scan: {error}")
+ print("Error invoking {} scan: {}".format(scan.name, error))
scan_task.output = str(error)
scan_task.status = "failed"
scan_task.finishedAt = timezone.now()
@@ -165,7 +171,7 @@ def run(self):
prev_num_launched_tasks = self.num_launched_tasks
if scan.name not in SCAN_SCHEMA:
- print(f"Invalid scan name: {scan.name}")
+ print("Invalid scan name: {}".format(scan.name))
continue
scan_schema = SCAN_SCHEMA[scan.name]
diff --git a/backend/src/xfd_django/xfd_api/tasks/searchSync.py b/backend/src/xfd_django/xfd_api/tasks/searchSync.py
index 10e36fbf0..b1eaed259 100644
--- a/backend/src/xfd_django/xfd_api/tasks/searchSync.py
+++ b/backend/src/xfd_django/xfd_api/tasks/searchSync.py
@@ -46,7 +46,7 @@ def handler(command_options):
if domain_id:
domain_queryset = domain_queryset.filter(id=domain_id)
- print(f"Found {domain_queryset.count()} domains to sync.")
+ print("Found {} domains to sync.".format(domain_queryset.count()))
# Chunk domains for processing
for domain_chunk in chunked_queryset(domain_queryset, DOMAIN_CHUNK_SIZE):
@@ -55,7 +55,7 @@ def handler(command_options):
.select_related("organization")
.prefetch_related("vulnerabilities", "services")
)
- print(f"Syncing {len(domains)} domains...")
+ print("Syncing {} domains...".format(len(domains)))
# Update Elasticsearch
try:
@@ -156,7 +156,7 @@ def handler(command_options):
]
)
except Exception as e:
- print(f"Error syncing domains to Elasticsearch: {e}")
+ print("Error syncing domains to Elasticsearch: {}".format(e))
continue
# Mark domains as synced
diff --git a/backend/src/xfd_django/xfd_api/tasks/syncdb_helpers.py b/backend/src/xfd_django/xfd_api/tasks/syncdb_helpers.py
index 1c7f1238b..ade33a49e 100644
--- a/backend/src/xfd_django/xfd_api/tasks/syncdb_helpers.py
+++ b/backend/src/xfd_django/xfd_api/tasks/syncdb_helpers.py
@@ -59,7 +59,7 @@ def manage_elasticsearch_indices(dangerouslyforce):
es_client.sync_domains_index()
print("Elasticsearch indices synchronized.")
except Exception as e:
- print(f"Error managing Elasticsearch indices: {e}")
+ print("Error managing Elasticsearch indices: {}".format(e))
def populate_sample_data():
@@ -96,7 +96,7 @@ def create_sample_user(organization):
user = User.objects.create(
firstName="Sample",
lastName="User",
- email=f"user{random.randint(1, 1000)}@example.com",
+ email="user{}@example.com".format(random.randint(1, 1000)),
userType=UserType.GLOBAL_ADMIN,
state=random.choice(SAMPLE_STATES),
regionId=random.choice(SAMPLE_REGION_IDS),
@@ -125,7 +125,7 @@ def create_api_key_for_user(user):
)
# Print the raw key for debugging or manual testing
- print(f"Created API key for user {user.email}: {key}")
+ print("Created API key for user {}: {}".format(user.email, key))
def generate_random_name():
@@ -133,14 +133,14 @@ def generate_random_name():
adjective = random.choice(adjectives)
noun = random.choice(nouns)
entity = random.choice(["City", "County", "Agency", "Department"])
- return f"{adjective.capitalize()} {entity} {noun.capitalize()}"
+ return "{} {} {}".format(adjective.capitalize(), entity, noun.capitalize())
def create_sample_domain(organization):
"""Create a sample domain linked to an organization."""
- domain_name = (
- f"{random.choice(adjectives)}-{random.choice(nouns)}.crossfeed.local".lower()
- )
+ domain_name = "{}-{}.crossfeed.local".format(
+ random.choice(adjectives), random.choice(nouns)
+ ).lower()
ip = ".".join(map(str, (random.randint(0, 255) for _ in range(4))))
return Domain.objects.create(
name=domain_name,
@@ -174,7 +174,30 @@ def create_sample_services_and_vulnerabilities(domain):
domain=domain,
service=None,
description="Sample description",
- severity=random.choice(["Low", "Medium", "High"]),
+ severity=random.choice(
+ [
+ None,
+ "N/A",
+ "n/a",
+ "Null",
+ "null",
+ "Undefined",
+ "undefined",
+ "",
+ "Low",
+ "Medium",
+ "High",
+ "Critical",
+ "Other",
+ "!@#$%^&*()",
+ 1234,
+ "low",
+ "medium",
+ "high",
+ "critical",
+ "other",
+ ]
+ ),
needsPopulation=True,
state="open",
substate="unconfirmed",
@@ -211,7 +234,7 @@ def synchronize(target_app_label=None):
)
# Get database name for 'connections':
- # The 'connections' object gets all databases defined in setting.py
+ # The 'connections' object gets all databases defined in settings.py
database = db_mapping.get(target_app_label, "default")
print(
"Synchronizing database schema for app '{}' in database '{}'...".format(
@@ -224,7 +247,7 @@ def synchronize(target_app_label=None):
# Step 1: Process models in dependency order
ordered_models = get_ordered_models(target_app_label)
for model in ordered_models:
- print(f"Processing model: {model.__name__}")
+ print("Processing model: {}".format(model.__name__))
process_model(schema_editor, model, database)
# Step 2: Handle Many-to-Many tables
@@ -274,7 +297,7 @@ def get_ordered_models(target_app_label):
print("Circular dependencies detected. Breaking cycles arbitrarily.")
for model, deps in dependencies.items():
if deps:
- print(f"Breaking dependency for model: {model.__name__}")
+ print("Breaking dependency for model: {}".format(model.__name__))
dependencies[model] = set()
ordered.extend(dependencies.keys())
@@ -293,13 +316,13 @@ def process_model(schema_editor: BaseDatabaseSchemaEditor, model, database):
table_exists = cursor.fetchone()[0] is not None
if table_exists:
- print(f"Updating table for model: {model.__name__}")
+ print("Updating table for model: {}".format(model.__name__))
update_table(schema_editor, model, database)
else:
- print(f"Creating table for model: {model.__name__}")
+ print("Creating table for model: {}".format(model.__name__))
schema_editor.create_model(model)
except Exception as e:
- print(f"Error processing model {model.__name__}: {e}")
+ print("Error processing model {}: {}".format(model.__name__, e))
def process_m2m_tables(schema_editor: BaseDatabaseSchemaEditor, models, database):
@@ -310,15 +333,17 @@ def process_m2m_tables(schema_editor: BaseDatabaseSchemaEditor, models, database
m2m_table_name = field.m2m_db_table()
# Check if the M2M table exists
- cursor.execute(f"SELECT to_regclass('{m2m_table_name}');")
+ cursor.execute("SELECT to_regclass('{}');".format(m2m_table_name))
table_exists = cursor.fetchone()[0] is not None
if not table_exists:
- print(f"Creating Many-to-Many table: {m2m_table_name}")
+ print("Creating Many-to-Many table: {}".format(m2m_table_name))
schema_editor.create_model(field.remote_field.through)
else:
print(
- f"Many-to-Many table {m2m_table_name} already exists. Skipping."
+ "Many-to-Many table {} already exists. Skipping.".format(
+ m2m_table_name
+ )
)
@@ -339,13 +364,17 @@ def update_table(schema_editor: BaseDatabaseSchemaEditor, model, database):
missing_columns = db_fields - existing_columns
for field in model._meta.fields:
if field.column in missing_columns:
- print(f"Adding column '{field.column}' to table '{table_name}'")
+ print(
+ "Adding column '{}' to table '{}'".format(field.column, table_name)
+ )
schema_editor.add_field(model, field)
# Remove extra columns
extra_columns = existing_columns - db_fields
for column in extra_columns:
- print(f"Removing extra column '{column}' from table '{table_name}'")
+ print(
+ "Removing extra column '{}' from table '{}'".format(column, table_name)
+ )
try:
# Safely quote table and column names
safe_table_name = connections[database].ops.quote_name(table_name)
@@ -357,7 +386,9 @@ def update_table(schema_editor: BaseDatabaseSchemaEditor, model, database):
cursor.execute(query)
except Exception as e:
print(
- f"Error dropping column '{column}' from table '{table_name}': {e}"
+ "Error dropping column '{}' from table '{}': {}".format(
+ column, table_name, e
+ )
)
@@ -406,12 +437,16 @@ def drop_all_tables(app_label=None):
if app_label not in allowed_labels:
raise ValueError(
- f"Invalid 'app_label' provided. Must be one of: {', '.join(allowed_labels)}."
+ "Invalid 'app_label' provided. Must be one of: {}.".format(
+ ", ".join(allowed_labels)
+ )
)
database = db_mapping.get(app_label, "default")
print(
- f"Resetting database schema for app '{app_label}' in database '{database}'..."
+ "Resetting database schema for app '{}' in database '{}'...".format(
+ app_label, database
+ )
)
with connections[database].cursor() as cursor:
@@ -424,7 +459,7 @@ def drop_all_tables(app_label=None):
)
cursor.execute("GRANT ALL ON SCHEMA public TO public;")
except Exception as e:
- print(f"Error resetting schema: {e}")
+ print("Error resetting schema: {}".format(e))
print("Database schema reset successfully.")
@@ -446,7 +481,7 @@ def sync_es_organizations():
try:
# Fetch all organization IDs
organization_ids = list(Organization.objects.values_list("id", flat=True))
- print(f"Found {len(organization_ids)} organizations to sync.")
+ print("Found {} organizations to sync.".format(len(organization_ids)))
if organization_ids:
# Split IDs into chunks
@@ -459,7 +494,7 @@ def sync_es_organizations():
"id", "name", "country", "state", "regionId", "tags"
)
)
- print(f"Syncing {len(organizations)} organizations...")
+ print("Syncing {} organizations...".format(len(organizations)))
# Attempt to update Elasticsearch
update_organization_chunk(es_client, organizations)
@@ -469,5 +504,54 @@ def sync_es_organizations():
print("No organizations to sync.")
except Exception as e:
- print(f"Error syncing organizations: {e}")
+ print("Error syncing organizations: {}".format(e))
raise e
+
+
+def create_scan_user():
+ """Create and configure the scanning user if it does not already exist."""
+ # Only create if not in the DMZ
+ is_dmz = os.getenv("IS_DMZ", "0") == "1"
+
+ if is_dmz:
+ print("IS_DMZ is set to 1. Skipping creation of the scanning user.")
+ return
+
+ user = os.getenv("POSTGRES_SCAN_USER")
+ password = os.getenv("POSTGRES_SCAN_PASSWORD")
+ if not user or not password:
+ print("POSTGRES_SCAN_USER or POSTGRES_SCAN_PASSWORD is not set.")
+ return
+
+ db_name = settings.DATABASES["default"]["NAME"]
+
+ with connections["default"].cursor() as cursor:
+ try:
+ # Check if the user already exists
+ cursor.execute("SELECT 1 FROM pg_roles WHERE rolname = %s;", [user])
+ user_exists = cursor.fetchone() is not None
+
+ if not user_exists:
+ # Create the user
+ cursor.execute(
+ "CREATE ROLE {} LOGIN PASSWORD %s;".format(user), [password]
+ )
+ print("User '{}' created successfully.".format(user))
+ else:
+ print("User '{}' already exists. Skipping creation.".format(user))
+
+ # Grant privileges (idempotent as well)
+ cursor.execute("GRANT CONNECT ON DATABASE {} TO {};".format(db_name, user))
+ cursor.execute("GRANT USAGE ON SCHEMA public TO {};".format(user))
+ cursor.execute(
+ "GRANT SELECT ON ALL TABLES IN SCHEMA public TO {};".format(user)
+ )
+ cursor.execute(
+ "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO {};".format(
+ user
+ )
+ )
+
+ print("User '{}' configured successfully.".format(user))
+ except Exception as e:
+ print("Error creating or configuring scan user: {}".format(e))
diff --git a/backend/src/xfd_django/xfd_api/tasks/updateScanTaskStatus.py b/backend/src/xfd_django/xfd_api/tasks/updateScanTaskStatus.py
index ce13c40f5..6ad826e35 100644
--- a/backend/src/xfd_django/xfd_api/tasks/updateScanTaskStatus.py
+++ b/backend/src/xfd_django/xfd_api/tasks/updateScanTaskStatus.py
@@ -36,7 +36,9 @@ def handler(event, context):
scan_task = retry_find_scan_task(task_arn)
if not scan_task:
- raise ValueError(f"Couldn't find scan task with taskArn: {task_arn}")
+ raise ValueError(
+ "Couldn't find scan task with taskArn: {}".format(task_arn)
+ )
old_status = scan_task.status
@@ -47,20 +49,22 @@ def handler(event, context):
scan_task.status = "finished"
else:
scan_task.status = "failed"
- scan_task.output = f"{stop_code}: {stopped_reason}"
+ scan_task.output = "{}: {}".format(stop_code, stopped_reason)
scan_task.finishedAt = now()
else:
# No update needed for other statuses
return {"statusCode": 204, "body": "No status change required."}
print(
- f"Updating status of ScanTask {scan_task.id} from {old_status} to {scan_task.status}."
+ "Updating status of ScanTask {} from {} to {}.".format(
+ scan_task.id, old_status, scan_task.status
+ )
)
scan_task.save()
return {
"statusCode": 200,
- "body": f"ScanTask {scan_task.id} updated successfully.",
+ "body": "ScanTask {} updated successfully.".format(scan_task.id),
}
except Exception as e:
@@ -75,9 +79,9 @@ def retry_find_scan_task(task_arn, retries=3):
if scan_task:
return scan_task
except OperationalError as e:
- print(f"Database error on attempt {attempt + 1}: {e}")
+ print("Database error on attempt {}: {}".format(attempt + 1, e))
except Exception as e:
- print(f"Unexpected error on attempt {attempt + 1}: {e}")
+ print("Unexpected error on attempt {}: {}".format(attempt + 1, e))
if attempt < retries - 1:
continue
return None
diff --git a/backend/src/xfd_django/xfd_api/tasks/vulnSync.py b/backend/src/xfd_django/xfd_api/tasks/vulnSync.py
index 744e27d6b..74e87bfbb 100644
--- a/backend/src/xfd_django/xfd_api/tasks/vulnSync.py
+++ b/backend/src/xfd_django/xfd_api/tasks/vulnSync.py
@@ -36,12 +36,16 @@ def main():
# For each organization, fetch vulnerability data
for org in all_orgs:
- print(f"Processing organization: {org.acronym}, {org.name}")
+ print("Processing organization: {}, {}".format(org.acronym, org.name))
# Fetch PE vulnerability task data
data = fetch_pe_vuln_task(org.acronym)
if not data or not data.get("tasks_dict"):
- print(f"Failed to start PE API task for org: {org.acronym}, {org.name}")
+ print(
+ "Failed to start PE API task for org: {}, {}".format(
+ org.acronym, org.name
+ )
+ )
continue
all_vulns = []
@@ -53,7 +57,9 @@ def main():
if response and response.get("status") == "Failure":
print(
- f"Failed fetching data for task {task_id} for org {org.acronym}, {org.name}"
+ "Failed fetching data for task {} for org {}, {}".format(
+ task_id, org.acronym, org.name
+ )
)
continue
@@ -67,7 +73,7 @@ def main():
def fetch_pe_vuln_task(org_acronym):
"""Fetch PE vulnerability task data."""
- print(f"Fetching PE vulnerability task for organization: {org_acronym}")
+ print("Fetching PE vulnerability task for organization: {}".format(org_acronym))
headers = {
"X-API-KEY": os.getenv("CF_API_KEY"),
"access_token": os.getenv("PE_API_KEY"),
@@ -85,13 +91,15 @@ def fetch_pe_vuln_task(org_acronym):
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
- print(f"Error fetching PE task: {e}")
+ print("Error fetching PE task: {}".format(e))
return None
def fetch_pe_vuln_data(scan_name, task_id):
"""Fetch PE vulnerability data for a task."""
- url = f"https://api.staging-cd.crossfeed.cyber.dhs.gov/pe/apiv1/crossfeed_vulns/task/?task_id={task_id}&scan_name={scan_name}"
+ url = "https://api.staging-cd.crossfeed.cyber.dhs.gov/pe/apiv1/crossfeed_vulns/task/?task_id={}&scan_name={}".format(
+ task_id, scan_name
+ )
headers = {
"X-API-KEY": os.getenv("CF_API_KEY"),
"access_token": os.getenv("PE_API_KEY"),
@@ -103,7 +111,7 @@ def fetch_pe_vuln_data(scan_name, task_id):
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
- print(f"Error fetching PE vulnerability data: {e}")
+ print("Error fetching PE vulnerability data: {}".format(e))
return None
@@ -114,7 +122,7 @@ def process_vulnerability(vuln, org):
service = save_service(vuln, domain)
save_vulnerability(vuln, domain, service)
except Exception as e:
- print(f"Error processing vulnerability: {e}")
+ print("Error processing vulnerability: {}".format(e))
def save_domain(vuln, org):
@@ -149,13 +157,13 @@ def save_domain(vuln, org):
"fromRootDomain": None
if ip_only
else ".".join(service_domain.split(".")[-2:]),
- "subdomainSource": f"P&E - {vuln['source']}",
+ "subdomainSource": "P&E - {}".format(vuln["source"]),
"ipOnly": ip_only,
},
)
return domain
except Exception as e:
- print(f"Failed to save domain: {e}")
+ print("Failed to save domain: {}".format(e))
raise
@@ -183,7 +191,7 @@ def save_service(vuln, domain):
)
return service
except Exception as e:
- print(f"Failed to save service: {e}")
+ print("Failed to save service: {}".format(e))
raise
@@ -208,5 +216,5 @@ def save_vulnerability(vuln, domain, service):
},
)
except Exception as e:
- print(f"Failed to save vulnerability: {e}")
+ print("Failed to save vulnerability: {}".format(e))
raise
diff --git a/backend/src/xfd_django/xfd_api/tests/test_api_key.py b/backend/src/xfd_django/xfd_api/tests/test_api_key.py
index 644f58cd2..29fea4826 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_api_key.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_api_key.py
@@ -13,7 +13,7 @@
# user = User.objects.create(
# firstName="Test",
# lastName="User",
-# email=f"{secrets.token_hex(4)}@example.com",
+# email="{}@example.com".format(secrets.token_hex(4)),
# userType="STANDARD",
# createdAt=datetime.now(),
# updatedAt=datetime.now(),
@@ -45,7 +45,7 @@
# user = User.objects.create(
# firstName="Test",
# lastName="User",
-# email=f"{secrets.token_hex(4)}@example.com",
+# email="{}@example.com".format(secrets.token_hex(4)),
# userType="STANDARD",
# createdAt=datetime.now(),
# updatedAt=datetime.now(),
@@ -56,7 +56,7 @@
# user=user,
# )
# response = client.delete(
-# f"/api-keys/{api_key.id}",
+# "/api-keys/{}".format(api_key.id),
# headers={
# "Authorization": create_jwt_token({"id": user.id, "userType": "STANDARD"})
# },
@@ -78,7 +78,7 @@
# user1 = User.objects.create(
# firstName="Test1",
# lastName="User1",
-# email=f"{secrets.token_hex(4)}@example.com",
+# email="{}@example.com".format(secrets.token_hex(4)),
# userType="STANDARD",
# createdAt=datetime.now(),
# updatedAt=datetime.now(),
@@ -86,7 +86,7 @@
# user2 = User.objects.create(
# firstName="Test2",
# lastName="User2",
-# email=f"{secrets.token_hex(4)}@example.com",
+# email="{}@example.com".format(secrets.token_hex(4)),
# userType="GLOBAL_ADMIN",
# createdAt=datetime.now(),
# updatedAt=datetime.now(),
@@ -99,7 +99,7 @@
# # Try to delete user1's API key as user2
# response = client.delete(
-# f"/api-keys/{api_key.id}",
+# "/api-keys/{}".format(api_key.id),
# headers={
# "Authorization": create_jwt_token(
# {"id": user2.id, "userType": "GLOBAL_ADMIN"}
@@ -124,7 +124,7 @@
# user = User.objects.create(
# firstName="Test",
# lastName="User",
-# email=f"{secrets.token_hex(4)}@example.com",
+# email="{}@example.com".format(secrets.token_hex(4)),
# userType="STANDARD",
# createdAt=datetime.now(),
# updatedAt=datetime.now(),
@@ -148,7 +148,7 @@
# User.objects.create(
# firstName="Test",
# lastName="User",
-# email=f"{secrets.token_hex(4)}@example.com",
+# email="{}@example.com".format(secrets.token_hex(4)),
# userType="STANDARD",
# createdAt=datetime.now(),
# updatedAt=datetime.now(),
@@ -163,7 +163,7 @@
# user = User.objects.create(
# firstName="Test",
# lastName="User",
-# email=f"{secrets.token_hex(4)}@example.com",
+# email="{}@example.com".format(secrets.token_hex(4)),
# userType="STANDARD",
# createdAt=datetime.now(),
# updatedAt=datetime.now(),
@@ -180,7 +180,7 @@
# # Revoke the API key
# response = client.delete(
-# f"/api-keys/{api_key_id}",
+# "/api-keys/{}".format(api_key_id),
# headers={
# "Authorization": create_jwt_token({"id": user.id, "userType": "STANDARD"})
# },
diff --git a/backend/src/xfd_django/xfd_api/tests/test_domain.py b/backend/src/xfd_django/xfd_api/tests/test_domain.py
index e01b827bd..a67e6e468 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_domain.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_domain.py
@@ -30,7 +30,7 @@ def user():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -118,7 +118,7 @@ def test_get_domain_by_id(user, domain):
"""Test domain by id."""
# Get domain by Id.
response = client.get(
- f"/domain/{domain.id}",
+ "/domain/{}".format(domain.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -134,7 +134,7 @@ def test_get_domain_by_id_fails_404(user, domain):
"""Test domain by id to fail."""
# Get domain by Id.
response = client.get(
- f"/domain/{bad_id}",
+ "/domain/{}".format(bad_id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -159,9 +159,9 @@ def test_search_domain_by_ip(user, vulnerability):
# Validate result contain the correct IP
for domain in data["result"]:
- assert (
- domain["ip"] == search_fields["ip"]
- ), f"Expected IP {search_fields['ip']}, but got {domain['ip']}"
+ assert domain["ip"] == search_fields["ip"], "Expected IP {}, but got {}".format(
+ search_fields["ip"], domain["ip"]
+ )
@pytest.mark.django_db(transaction=True)
@@ -186,7 +186,9 @@ def test_search_domain_by_port(user, vulnerability):
for service in services:
assert (
str(service.port) == search_fields["port"]
- ), f"Domain with ID {domain_id} does not have a service with port {vulnerability.service.port}"
+ ), "Domain with ID {} does not have a service with port {}".format(
+ domain_id, vulnerability.service.port
+ )
@pytest.mark.django_db(transaction=True)
@@ -216,7 +218,9 @@ def test_search_domain_by_service(user, vulnerability):
service_match = services.filter(id=vulnerability.service.id)
assert (
service_match is not None
- ), f"Domain with ID {domain_id} is not related a service with ID {vulnerability.service.id}"
+ ), "Domain with ID {} is not related a service with ID {}".format(
+ domain_id, vulnerability.service.id
+ )
@pytest.mark.django_db(transaction=True)
@@ -268,7 +272,9 @@ def test_search_domain_by_organization_name(user, vulnerability):
organization = Organization.objects.get(id=domain["organization"]["id"])
assert (
organization.name == search_fields["organizationName"]
- ), f"Domain with ID {domain['id']} did not contain Organization Id {search_fields['organizationName']}"
+ ), "Domain with ID {} did not contain Organization Id {}".format(
+ domain["id"], search_fields["organizationName"]
+ )
@pytest.mark.django_db(transaction=True)
@@ -292,7 +298,9 @@ def test_search_domain_by_vulnerabilities(user, vulnerability):
for domain in data["result"]:
assert str(vulnerability.domain.id) == str(
domain["id"]
- ), f"Response domain {domain['id']} did not relate back to the expected vulnerability {vulnerability.domain.id}"
+ ), "Response domain {} did not relate back to the expected vulnerability {}".format(
+ domain["id"], vulnerability.domain.id
+ )
@pytest.mark.django_db(transaction=True)
@@ -316,7 +324,9 @@ def test_search_domains_multiple_criteria(user, vulnerability):
for domain in data["result"]:
assert (
domain["ip"] == search_fields["ip"]
- ), f"Domain with ID {domain['id']} does not have an IP {search_fields['ip']}"
+ ), "Domain with ID {} does not have an IP {}".format(
+ domain["id"], search_fields["ip"]
+ )
domain_id = domain.get("id", None)
assert domain_id is not None, "Domain Id not found in Response"
@@ -324,7 +334,9 @@ def test_search_domains_multiple_criteria(user, vulnerability):
for service in services:
assert (
str(service.port) == search_fields["port"]
- ), f"Domain with ID {domain_id} does not have a service with port {vulnerability.service.port}"
+ ), "Domain with ID {} does not have a service with port {}".format(
+ domain_id, vulnerability.service.port
+ )
@pytest.mark.django_db(transaction=True)
diff --git a/backend/src/xfd_django/xfd_api/tests/test_notification.py b/backend/src/xfd_django/xfd_api/tests/test_notification.py
index e15a79097..a6ccdd342 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_notification.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_notification.py
@@ -55,7 +55,7 @@
# # Send the DELETE request
# response = client.delete(
-# f"/notifications/{notification.id}",
+# "/notifications/{}".format(notification.id),
# headers={
# "Authorization": create_jwt_token({"id": user.id, "userType": "STANDARD"})
# },
@@ -123,7 +123,7 @@
# # Send the GET request
# response = client.get(
-# f"/notifications/{notification.id}",
+# "/notifications/{}".format(notification.id),
# headers={
# "Authorization": create_jwt_token({"id": user.id, "userType": "STANDARD"})
# },
diff --git a/backend/src/xfd_django/xfd_api/tests/test_organization.py b/backend/src/xfd_django/xfd_api/tests/test_organization.py
index 3c8047686..8612e9011 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_organization.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_organization.py
@@ -28,13 +28,13 @@ def test_create_org_by_global_admin():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
- name = f"test-{secrets.token_hex(4)}"
+ name = "test-{}".format(secrets.token_hex(4))
acronym = secrets.token_hex(2)
response = client.post(
@@ -64,13 +64,13 @@ def test_create_duplicate_org_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
- name = f"test-{secrets.token_hex(4)}"
+ name = "test-{}".format(secrets.token_hex(4))
acronym = secrets.token_hex(2)
client.post(
@@ -110,14 +110,14 @@ def test_create_org_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
print(user)
- name = f"test-{secrets.token_hex(4)}"
+ name = "test-{}".format(secrets.token_hex(4))
acronym = secrets.token_hex(2)
response = client.post(
@@ -143,7 +143,7 @@ def test_update_org_by_global_admin():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -151,7 +151,7 @@ def test_update_org_by_global_admin():
organization = Organization.objects.create(
acronym=secrets.token_hex(2),
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test.com"],
ipBlocks=[],
isPassive=False,
@@ -159,7 +159,7 @@ def test_update_org_by_global_admin():
updatedAt=datetime.now(),
)
- new_name = f"test-{secrets.token_hex(4)}"
+ new_name = "test-{}".format(secrets.token_hex(4))
new_acronym = secrets.token_hex(2)
new_root_domains = ["newdomain.com"]
new_ip_blocks = ["1.1.1.1"]
@@ -167,7 +167,7 @@ def test_update_org_by_global_admin():
tags = [{"name": "updated"}]
response = client.put(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
json={
"name": new_name,
"acronym": new_acronym,
@@ -195,7 +195,7 @@ def test_update_org_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -203,7 +203,7 @@ def test_update_org_by_global_view_fails():
organization = Organization.objects.create(
acronym=secrets.token_hex(2),
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test.com"],
ipBlocks=[],
isPassive=False,
@@ -211,7 +211,7 @@ def test_update_org_by_global_view_fails():
updatedAt=datetime.now(),
)
- new_name = f"test-{secrets.token_hex(4)}"
+ new_name = "test-{}".format(secrets.token_hex(4))
new_acronym = secrets.token_hex(2)
new_root_domains = ["newdomain.com"]
new_ip_blocks = ["1.1.1.1"]
@@ -219,7 +219,7 @@ def test_update_org_by_global_view_fails():
tags = [{"name": "updated"}]
response = client.put(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
json={
"name": new_name,
"acronym": new_acronym,
@@ -242,14 +242,14 @@ def test_delete_org_by_global_admin():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test.com"],
ipBlocks=[],
isPassive=False,
@@ -258,7 +258,7 @@ def test_delete_org_by_global_admin():
)
response = client.delete(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -272,14 +272,14 @@ def test_delete_org_by_org_admin_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test.com"],
ipBlocks=[],
isPassive=False,
@@ -295,7 +295,7 @@ def test_delete_org_by_org_admin_fails():
)
response = client.delete(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -310,7 +310,7 @@ def test_delete_org_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -318,7 +318,7 @@ def test_delete_org_by_global_view_fails():
organization = Organization.objects.create(
acronym=secrets.token_hex(2),
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test.com"],
ipBlocks=[],
isPassive=False,
@@ -327,7 +327,7 @@ def test_delete_org_by_global_view_fails():
)
response = client.delete(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -342,7 +342,7 @@ def test_list_orgs_by_global_view_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -350,8 +350,8 @@ def test_list_orgs_by_global_view_succeeds():
# Create an organization
Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -375,7 +375,7 @@ def test_list_orgs_by_org_member_only_gets_their_org():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -383,8 +383,8 @@ def test_list_orgs_by_org_member_only_gets_their_org():
# Create organizations
organization1 = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -392,8 +392,8 @@ def test_list_orgs_by_org_member_only_gets_their_org():
)
Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -426,15 +426,15 @@ def test_get_org_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -442,7 +442,7 @@ def test_get_org_by_global_view_fails():
)
response = client.get(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -457,15 +457,15 @@ def test_get_org_by_org_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -480,7 +480,7 @@ def test_get_org_by_org_admin_succeeds():
)
response = client.get(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -496,15 +496,15 @@ def test_get_org_by_org_admin_of_different_org_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization1 = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -512,8 +512,8 @@ def test_get_org_by_org_admin_of_different_org_fails():
)
organization2 = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -528,7 +528,7 @@ def test_get_org_by_org_admin_of_different_org_fails():
)
response = client.get(
- f"/organizations/{organization2.id}",
+ "/organizations/{}".format(organization2.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -543,15 +543,15 @@ def test_get_org_by_org_regular_user_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -566,7 +566,7 @@ def test_get_org_by_org_regular_user_fails():
)
response = client.get(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -581,15 +581,15 @@ def test_get_org_with_scan_tasks_by_org_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=["test-" + secrets.token_hex(4)],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -615,7 +615,7 @@ def test_get_org_with_scan_tasks_by_org_admin_succeeds():
scan_task.organizations.add(organization)
response = client.get(
- f"/organizations/{organization.id}",
+ "/organizations/{}".format(organization.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -634,14 +634,14 @@ def test_enable_user_modifiable_scan_by_org_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -664,7 +664,7 @@ def test_enable_user_modifiable_scan_by_org_admin_succeeds():
)
response = client.post(
- f"/organizations/{organization.id}/granularScans/{scan.id}/update",
+ "/organizations/{}/granularScans/{}/update".format(organization.id, scan.id),
json={"enabled": True},
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -682,14 +682,14 @@ def test_disable_user_modifiable_scan_by_org_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -719,7 +719,7 @@ def test_disable_user_modifiable_scan_by_org_admin_succeeds():
scan_task.organizations.add(organization)
response = client.post(
- f"/organizations/{organization.id}/granularScans/{scan.id}/update",
+ "/organizations/{}/granularScans/{}/update".format(organization.id, scan.id),
json={"enabled": False},
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -736,14 +736,14 @@ def test_enable_user_modifiable_scan_by_org_user_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -766,7 +766,7 @@ def test_enable_user_modifiable_scan_by_org_user_fails():
)
response = client.post(
- f"/organizations/{organization.id}/granularScans/{scan.id}/update",
+ "/organizations/{}/granularScans/{}/update".format(organization.id, scan.id),
json={"enabled": True},
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -781,14 +781,14 @@ def test_enable_user_modifiable_scan_by_global_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -805,7 +805,7 @@ def test_enable_user_modifiable_scan_by_global_admin_succeeds():
)
response = client.post(
- f"/organizations/{organization.id}/granularScans/{scan.id}/update",
+ "/organizations/{}/granularScans/{}/update".format(organization.id, scan.id),
json={"enabled": True},
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -823,14 +823,14 @@ def test_enable_non_user_modifiable_scan_by_org_admin_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -853,7 +853,7 @@ def test_enable_non_user_modifiable_scan_by_org_admin_fails():
)
response = client.post(
- f"/organizations/{organization.id}/granularScans/{scan.id}/update",
+ "/organizations/{}/granularScans/{}/update".format(organization.id, scan.id),
json={"enabled": True},
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -868,7 +868,7 @@ def test_approve_role_by_global_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -877,14 +877,14 @@ def test_approve_role_by_global_admin_succeeds():
user2 = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -897,7 +897,7 @@ def test_approve_role_by_global_admin_succeeds():
)
response = client.post(
- f"/organizations/{organization.id}/roles/{role.id}/approve",
+ "/organizations/{}/roles/{}/approve".format(organization.id, role.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -913,7 +913,7 @@ def test_approve_role_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -922,14 +922,14 @@ def test_approve_role_by_global_view_fails():
user2 = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -942,13 +942,11 @@ def test_approve_role_by_global_view_fails():
)
response = client.post(
- f"/organizations/{organization.id}/roles/{role.id}/approve",
+ "/organizations/{}/roles/{}/approve".format(organization.id, role.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
assert response.status_code == 403
- role.refresh_from_db()
- assert role.approved is False
# Test: Approving a role by org admin should succeed
@@ -958,7 +956,7 @@ def test_approve_role_by_org_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -967,14 +965,14 @@ def test_approve_role_by_org_admin_succeeds():
user2 = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -993,7 +991,7 @@ def test_approve_role_by_org_admin_succeeds():
)
response = client.post(
- f"/organizations/{organization.id}/roles/{role.id}/approve",
+ "/organizations/{}/roles/{}/approve".format(organization.id, role.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -1009,7 +1007,7 @@ def test_approve_role_by_org_user_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -1018,14 +1016,14 @@ def test_approve_role_by_org_user_fails():
user2 = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -1044,7 +1042,7 @@ def test_approve_role_by_org_user_fails():
)
response = client.post(
- f"/organizations/{organization.id}/roles/{role.id}/approve",
+ "/organizations/{}/roles/{}/approve".format(organization.id, role.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -1060,7 +1058,7 @@ def test_remove_role_by_global_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -1069,14 +1067,14 @@ def test_remove_role_by_global_admin_succeeds():
user2 = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -1089,7 +1087,7 @@ def test_remove_role_by_global_admin_succeeds():
)
response = client.post(
- f"/organizations/{organization.id}/roles/{role.id}/remove",
+ "/organizations/{}/roles/{}/remove".format(organization.id, role.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -1103,7 +1101,7 @@ def test_remove_role_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -1112,14 +1110,14 @@ def test_remove_role_by_global_view_fails():
user2 = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -1132,7 +1130,7 @@ def test_remove_role_by_global_view_fails():
)
response = client.post(
- f"/organizations/{organization.id}/roles/{role.id}/remove",
+ "/organizations/{}/roles/{}/remove".format(organization.id, role.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -1147,7 +1145,7 @@ def test_remove_role_by_org_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -1155,14 +1153,14 @@ def test_remove_role_by_org_admin_succeeds():
user2 = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -1181,7 +1179,7 @@ def test_remove_role_by_org_admin_succeeds():
)
response = client.post(
- f"/organizations/{organization.id}/roles/{role.id}/remove",
+ "/organizations/{}/roles/{}/remove".format(organization.id, role.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -1195,7 +1193,7 @@ def test_remove_role_by_org_user_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -1204,14 +1202,14 @@ def test_remove_role_by_org_user_fails():
user2 = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -1230,7 +1228,7 @@ def test_remove_role_by_org_user_fails():
)
response = client.post(
- f"/organizations/{organization.id}/roles/{role.id}/remove",
+ "/organizations/{}/roles/{}/remove".format(organization.id, role.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -1245,14 +1243,14 @@ def test_get_tags_by_global_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
OrganizationTag.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
)
response = client.get(
@@ -1271,14 +1269,14 @@ def test_get_tags_by_standard_user_returns_no_tags():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
OrganizationTag.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
)
response = client.get(
diff --git a/backend/src/xfd_django/xfd_api/tests/test_proxy.py b/backend/src/xfd_django/xfd_api/tests/test_proxy.py
index 28328801e..981b10415 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_proxy.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_proxy.py
@@ -21,7 +21,7 @@ def test_standard_user_not_authorized_to_access_pe_proxy():
user = User.objects.create(
firstName="Standard",
lastName="User",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -31,7 +31,7 @@ def test_standard_user_not_authorized_to_access_pe_proxy():
token = create_jwt_token(user)
# Make a GET request to the P&E proxy endpoint with the user's token
- response = client.get("/pe", headers={"Authorization": f"Bearer {token}"})
+ response = client.get("/pe", headers={"Authorization": "Bearer {}".format(token)})
# Assert that the user receives a 403 Unauthorized response
assert response.status_code == 403
@@ -45,7 +45,7 @@ def test_global_admin_authorized_to_access_pe_proxy():
user = User.objects.create(
firstName="Admin",
lastName="User",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -55,7 +55,7 @@ def test_global_admin_authorized_to_access_pe_proxy():
token = create_jwt_token(user)
# Make a GET request to the P&E proxy endpoint with the global admin's token
- response = client.get("/pe", headers={"Authorization": f"Bearer {token}"})
+ response = client.get("/pe", headers={"Authorization": "Bearer {}".format(token)})
# Assert that the global admin is authorized and receives either a 200 or 504 response
assert response.status_code in [200, 504]
@@ -68,7 +68,7 @@ def test_global_view_user_authorized_to_access_pe_proxy():
user = User.objects.create(
firstName="View",
lastName="User",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
diff --git a/backend/src/xfd_django/xfd_api/tests/test_saved_searches.py b/backend/src/xfd_django/xfd_api/tests/test_saved_searches.py
index 9bc2f5ec7..2a218e4cd 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_saved_searches.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_saved_searches.py
@@ -19,7 +19,7 @@ def create_global_admin():
global_admin_user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -34,7 +34,7 @@ def create_global_view():
global_view_user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -49,7 +49,7 @@ def create_standard_user():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -64,7 +64,7 @@ def create_secondary_standard_user():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -85,7 +85,7 @@ def test_create_saved_search_by_user(create_standard_user):
The response data should include the correct name and createdById fields.
"""
user = create_standard_user
- name = f"test-{secrets.token_hex(4)}"
+ name = "test-{}".format(secrets.token_hex(4))
response = client.post(
"/saved-searches/",
headers={"Authorization": "Bearer " + create_jwt_token(user)},
@@ -121,7 +121,7 @@ def test_update_saved_search_by_global_admin_fails(
global_admin_user = create_global_admin
standard_user = create_standard_user
body = {
- "name": f"test-{secrets.token_hex(4)}",
+ "name": "test-{}".format(secrets.token_hex(4)),
"count": 3,
"sortDirection": "",
"sortField": "",
@@ -131,12 +131,12 @@ def test_update_saved_search_by_global_admin_fails(
"updatedAt": datetime.now(), # Include updatedAt field
}
search = SavedSearch.objects.create(**body, createdById=standard_user)
- body["name"] = f"test-{secrets.token_hex(4)}"
+ body["name"] = "test-{}".format(secrets.token_hex(4))
body["searchTerm"] = "123"
body["updatedAt"] = datetime.now().isoformat() # Update the timestamp
response = client.put(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
json=body,
headers={"Authorization": "Bearer " + create_jwt_token(global_admin_user)},
)
@@ -164,7 +164,7 @@ def test_update_saved_search_by_global_view_fails(
global_view_user = create_global_view
user = create_standard_user
body = {
- "name": f"test-{secrets.token_hex(4)}",
+ "name": "test-{}".format(secrets.token_hex(4)),
"count": 3,
"sortDirection": "",
"sortField": "",
@@ -176,11 +176,11 @@ def test_update_saved_search_by_global_view_fails(
saved_search = SavedSearch.objects.create(**body, createdById=user)
# Attempt to update the saved search with the global view user
- body["name"] = f"test-{secrets.token_hex(4)}"
+ body["name"] = "test-{}".format(secrets.token_hex(4))
body["searchTerm"] = "123"
body["updatedAt"] = datetime.now().isoformat() # Update the timestamp
response = client.put(
- f"/saved-searches/{saved_search.id}",
+ "/saved-searches/{}".format(saved_search.id),
json=body,
headers={"Authorization": "Bearer " + create_jwt_token(global_view_user)},
)
@@ -204,7 +204,7 @@ def test_update_saved_search_by_standard_user_with_access(create_standard_user):
"""
user = create_standard_user
body = {
- "name": f"test-{secrets.token_hex(4)}",
+ "name": "test-{}".format(secrets.token_hex(4)),
"count": 3,
"sortDirection": "",
"sortField": "",
@@ -214,12 +214,12 @@ def test_update_saved_search_by_standard_user_with_access(create_standard_user):
"updatedAt": datetime.now(), # Include updatedAt field
}
search = SavedSearch.objects.create(**body, createdById=user)
- body["name"] = f"test-{secrets.token_hex(4)}"
+ body["name"] = "test-{}".format(secrets.token_hex(4))
body["searchTerm"] = "123"
body["updatedAt"] = datetime.now().isoformat() # Update the timestamp
response = client.put(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
json=body,
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -246,7 +246,7 @@ def test_update_saved_search_by_standard_user_without_access_fails(
user_with_access = create_standard_user
user_without_access = create_secondary_standard_user
body = {
- "name": f"test-{secrets.token_hex(4)}",
+ "name": "test-{}".format(secrets.token_hex(4)),
"count": 3,
"sortDirection": "",
"sortField": "",
@@ -257,7 +257,7 @@ def test_update_saved_search_by_standard_user_without_access_fails(
}
search = SavedSearch.objects.create(**body, createdById=user_with_access)
response = client.put(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
json=body,
headers={"Authorization": "Bearer " + create_jwt_token(user_without_access)},
)
@@ -282,7 +282,7 @@ def test_delete_saved_search_by_global_admin_fails(
standard_user = create_standard_user
search = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -292,7 +292,7 @@ def test_delete_saved_search_by_global_admin_fails(
createdById=standard_user,
)
response = client.delete(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
headers={"Authorization": "Bearer " + create_jwt_token(global_admin_user)},
)
assert response.status_code == 404
@@ -321,7 +321,7 @@ def test_delete_saved_search_by_global_view_fails(
user = create_standard_user
saved_search = SavedSearch.objects.create(
- name=f"test-search-{secrets.token_hex(4)}",
+ name="test-search-{}".format(secrets.token_hex(4)),
count=5,
sortDirection="",
sortField="",
@@ -333,7 +333,7 @@ def test_delete_saved_search_by_global_view_fails(
# Attempt to delete the saved search with the global view user
response = client.delete(
- f"/saved-searches/{saved_search.id}",
+ "/saved-searches/{}".format(saved_search.id),
headers={"Authorization": "Bearer " + create_jwt_token(global_view_user)},
)
@@ -355,7 +355,7 @@ def test_delete_saved_search_by_user_with_access(create_standard_user):
"""
user = create_standard_user
search = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -365,7 +365,7 @@ def test_delete_saved_search_by_user_with_access(create_standard_user):
createdById=user,
)
response = client.delete(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -390,7 +390,7 @@ def test_delete_saved_search_by_user_without_access_fails(
user_with_access = create_standard_user
user_without_access = create_secondary_standard_user
search = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -400,7 +400,7 @@ def test_delete_saved_search_by_user_without_access_fails(
createdById=user_with_access,
)
response = client.delete(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
headers={"Authorization": "Bearer " + create_jwt_token(user_without_access)},
)
assert response.status_code == 404
@@ -422,7 +422,7 @@ def test_list_saved_searches_by_global_view_returns_none(create_global_view):
"""
global_view_user = create_global_view
search = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -457,7 +457,7 @@ def test_list_saved_searches_by_user_only_gets_their_search(
primary_user = create_standard_user
secondary_user = create_secondary_standard_user
search = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -467,7 +467,7 @@ def test_list_saved_searches_by_user_only_gets_their_search(
createdById=primary_user,
)
search2 = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -502,7 +502,7 @@ def test_get_saved_search_by_global_view_fails(create_global_view):
"""
global_view_user = create_global_view
search = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -511,7 +511,7 @@ def test_get_saved_search_by_global_view_fails(create_global_view):
filters=[],
)
response = client.get(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
headers={"Authorization": "Bearer " + create_jwt_token(global_view_user)},
)
assert response.status_code == 404
@@ -532,7 +532,7 @@ def test_get_saved_search_by_user_passes(create_standard_user):
"""
user = create_standard_user
search = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -542,7 +542,7 @@ def test_get_saved_search_by_user_passes(create_standard_user):
createdById=user,
)
response = client.get(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
assert response.status_code == 200
@@ -566,7 +566,7 @@ def test_get_saved_search_by_different_user_fails(
user_with_access = create_standard_user
user_without_access = create_secondary_standard_user
search = SavedSearch.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
count=3,
sortDirection="",
sortField="",
@@ -576,7 +576,7 @@ def test_get_saved_search_by_different_user_fails(
createdById=user_with_access,
)
response = client.get(
- f"/saved-searches/{search.id}",
+ "/saved-searches/{}".format(search.id),
headers={"Authorization": "Bearer " + create_jwt_token(user_without_access)},
)
assert response.status_code == 404
diff --git a/backend/src/xfd_django/xfd_api/tests/test_scan.py b/backend/src/xfd_django/xfd_api/tests/test_scan.py
index de0151fc6..6d88f99f4 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_scan.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_scan.py
@@ -21,13 +21,13 @@ def test_list_scans_by_global_admin():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
- name = f"test-{secrets.token_hex(4)}"
+ name = "test-{}".format(secrets.token_hex(4))
Scan.objects.create(
name=name,
@@ -37,7 +37,7 @@ def test_list_scans_by_global_admin():
updatedAt=datetime.now(),
)
Scan.objects.create(
- name=f"{name}-2",
+ name="{}-2".format(name),
arguments={},
frequency=999999,
createdAt=datetime.now(),
@@ -45,7 +45,7 @@ def test_list_scans_by_global_admin():
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -72,7 +72,7 @@ def test_create_scan_by_global_admin():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -115,7 +115,7 @@ def test_create_granular_scan_by_global_admin():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -126,7 +126,7 @@ def test_create_granular_scan_by_global_admin():
frequency = 999999
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -165,7 +165,7 @@ def test_create_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -196,7 +196,7 @@ def test_update_by_global_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -205,7 +205,7 @@ def test_update_by_global_admin_succeeds():
scan = Scan.objects.create(name="censys", arguments="{}", frequency=999999)
response = client.put(
- f"/scans/{scan.id}",
+ "/scans/{}".format(scan.id),
json={
"name": "findomain",
"arguments": "{}",
@@ -233,7 +233,7 @@ def test_update_non_granular_to_granular_by_global_admin():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -247,9 +247,9 @@ def test_update_non_granular_to_granular_by_global_admin():
isSingleScan=False,
)
- tag = OrganizationTag.objects.create(name=f"test-{secrets.token_hex(4)}")
+ tag = OrganizationTag.objects.create(name="test-{}".format(secrets.token_hex(4)))
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -259,7 +259,7 @@ def test_update_non_granular_to_granular_by_global_admin():
organization.tags.set([tag])
response = client.put(
- f"/scans/{scan.id}",
+ "/scans/{}".format(scan.id),
json={
"name": "findomain",
"arguments": "{}",
@@ -291,7 +291,7 @@ def test_update_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -300,7 +300,7 @@ def test_update_by_global_view_fails():
scan = Scan.objects.create(name="censys", arguments="{}", frequency=999999)
response = client.put(
- f"/scans/{scan.id}",
+ "/scans/{}".format(scan.id),
json={"name": "findomain", "arguments": "{}", "frequency": 999991},
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -317,7 +317,7 @@ def test_delete_by_global_admin_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -326,7 +326,7 @@ def test_delete_by_global_admin_succeeds():
scan = Scan.objects.create(name="censys", arguments="{}", frequency=999999)
response = client.delete(
- f"/scans/{scan.id}",
+ "/scans/{}".format(scan.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -340,7 +340,7 @@ def test_delete_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -349,7 +349,7 @@ def test_delete_by_global_view_fails():
scan = Scan.objects.create(name="censys", arguments="{}", frequency=999999)
response = client.delete(
- f"/scans/{scan.id}",
+ "/scans/{}".format(scan.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -364,7 +364,7 @@ def test_get_by_global_view_succeeds():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -373,7 +373,7 @@ def test_get_by_global_view_succeeds():
scan = Scan.objects.create(name="censys", arguments="{}", frequency=999999)
response = client.get(
- f"/scans/{scan.id}",
+ "/scans/{}".format(scan.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -389,7 +389,7 @@ def test_get_by_regular_user_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -398,7 +398,7 @@ def test_get_by_regular_user_fails():
scan = Scan.objects.create(name="censys", arguments="{}", frequency=999999)
response = client.get(
- f"/scans/{scan.id}",
+ "/scans/{}".format(scan.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -415,7 +415,7 @@ def test_scheduler_invoke_by_global_admin(mock_scheduler):
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -439,7 +439,7 @@ def test_scheduler_invoke_by_global_view_fails(mock_scheduler):
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -462,7 +462,7 @@ def test_run_scan_should_set_manualRunPending_to_true():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -476,7 +476,7 @@ def test_run_scan_should_set_manualRunPending_to_true():
)
response = client.post(
- f"/scans/{scan.id}/run",
+ "/scans/{}/run".format(scan.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -490,7 +490,7 @@ def test_run_scan_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -504,7 +504,7 @@ def test_run_scan_by_global_view_fails():
)
response = client.post(
- f"/scans/{scan.id}/run",
+ "/scans/{}/run".format(scan.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
diff --git a/backend/src/xfd_django/xfd_api/tests/test_scan_task.py b/backend/src/xfd_django/xfd_api/tests/test_scan_task.py
index f8da19b6f..f6eaf0d6f 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_scan_task.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_scan_task.py
@@ -21,14 +21,14 @@ def test_list_scan_tasks_by_global_view():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -58,14 +58,14 @@ def test_list_filtered_scan_tasks_by_global_view():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -102,14 +102,14 @@ def test_list_scan_tasks_by_regular_user_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -135,14 +135,14 @@ def test_kill_scan_task_by_global_admin():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -155,7 +155,7 @@ def test_kill_scan_task_by_global_admin():
scan_task.organizations.add(organization)
response = client.post(
- f"/scan-tasks/{scan_task.id}/kill",
+ "/scan-tasks/{}/kill".format(scan_task.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -170,14 +170,14 @@ def test_kill_finished_scan_task_by_global_admin_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -190,7 +190,7 @@ def test_kill_finished_scan_task_by_global_admin_fails():
scan_task.organizations.add(organization)
response = client.post(
- f"/scan-tasks/{scan_task.id}/kill",
+ "/scan-tasks/{}/kill".format(scan_task.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -205,14 +205,14 @@ def test_kill_scan_task_by_global_view_fails():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -225,7 +225,7 @@ def test_kill_scan_task_by_global_view_fails():
scan_task.organizations.add(organization)
response = client.post(
- f"/scan-tasks/{scan_task.id}/kill",
+ "/scan-tasks/{}/kill".format(scan_task.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -243,14 +243,14 @@ def test_get_logs_by_global_view(mock_get_logs):
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -265,7 +265,7 @@ def test_get_logs_by_global_view(mock_get_logs):
scan_task.organizations.add(organization)
response = client.get(
- f"/scan-tasks/{scan_task.id}/logs",
+ "/scan-tasks/{}/logs".format(scan_task.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -285,14 +285,14 @@ def test_get_logs_by_regular_user_fails(mock_get_logs):
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
+ name="test-{}".format(secrets.token_hex(4)),
rootDomains=["test-" + secrets.token_hex(4)],
ipBlocks=[],
isPassive=False,
@@ -307,7 +307,7 @@ def test_get_logs_by_regular_user_fails(mock_get_logs):
scan_task.organizations.add(organization)
response = client.get(
- f"/scan-tasks/{scan_task.id}/logs",
+ "/scan-tasks/{}/logs".format(scan_task.id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
diff --git a/backend/src/xfd_django/xfd_api/tests/test_user.py b/backend/src/xfd_django/xfd_api/tests/test_user.py
index 2550c5927..0279004d6 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_user.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_user.py
@@ -20,14 +20,14 @@ def test_invite_by_regular_user_should_not_work():
user = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=[f"test-{secrets.token_hex(4)}"],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -46,9 +46,9 @@ def test_invite_by_regular_user_should_not_work():
json={
"firstName": "first name",
"lastName": "last name",
- "email": f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ "email": "{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
},
- headers={"Authorization": f"Bearer {create_jwt_token(user)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user))},
)
assert response.status_code == 403
@@ -61,16 +61,16 @@ def test_invite_by_global_admin_should_work():
user = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
response = client.post(
"/users",
json={"firstName": "first name", "lastName": "last name", "email": email},
- headers={"Authorization": f"Bearer {create_jwt_token(user)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user))},
)
assert response.status_code == 200
@@ -89,12 +89,12 @@ def test_invite_by_global_admin_with_user_type_setting():
user = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
response = client.post(
"/users",
json={
@@ -103,7 +103,7 @@ def test_invite_by_global_admin_with_user_type_setting():
"email": email,
"userType": UserType.GLOBAL_ADMIN,
},
- headers={"Authorization": f"Bearer {create_jwt_token(user)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user))},
)
assert response.status_code == 200
@@ -122,7 +122,7 @@ def test_invite_by_global_view_should_not_work():
user = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -132,9 +132,9 @@ def test_invite_by_global_view_should_not_work():
json={
"firstName": "first name",
"lastName": "last name",
- "email": f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ "email": "{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
},
- headers={"Authorization": f"Bearer {create_jwt_token(user)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user))},
)
print(response.json())
@@ -148,14 +148,14 @@ def test_invite_by_organization_admin_should_work():
user = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=[f"test-{secrets.token_hex(4)}"],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -168,7 +168,7 @@ def test_invite_by_organization_admin_should_work():
role="admin",
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
print("here")
response = client.post(
"/users",
@@ -176,10 +176,10 @@ def test_invite_by_organization_admin_should_work():
"firstName": "first name",
"lastName": "last name",
"email": email,
- "organization": str(organization.id),
+ "organization": "{}".format(organization.id),
"organizationAdmin": False,
},
- headers={"Authorization": f"Bearer {create_jwt_token(user)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user))},
)
assert response.status_code == 200
@@ -199,15 +199,15 @@ def test_invite_by_organization_admin_should_not_work_if_setting_user_type():
user = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=[f"test-{secrets.token_hex(4)}"],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -220,18 +220,18 @@ def test_invite_by_organization_admin_should_not_work_if_setting_user_type():
role="admin",
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
response = client.post(
"/users",
json={
"firstName": "first name",
"lastName": "last name",
"email": email,
- "organization": str(organization.id),
+ "organization": "{}".format(organization.id),
"organizationAdmin": False,
"userType": UserType.GLOBAL_ADMIN,
},
- headers={"Authorization": f"Bearer {create_jwt_token(user)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user))},
)
assert response.status_code == 403
@@ -242,23 +242,23 @@ def test_invite_by_organization_admin_should_not_work_if_setting_user_type():
def test_invite_existing_user_by_different_org_admin_should_not_modify_other_user_details():
"""Invite existing user by a different organization admin should work, and should not modify other user details."""
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=[f"test-{secrets.token_hex(4)}"],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization2 = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=[f"test-{secrets.token_hex(4)}"],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
user = User.objects.create(
firstName="first name", lastName="last name", email=email
)
@@ -269,7 +269,7 @@ def test_invite_existing_user_by_different_org_admin_should_not_modify_other_use
user2 = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -288,10 +288,10 @@ def test_invite_existing_user_by_different_org_admin_should_not_modify_other_use
"firstName": "new first name",
"lastName": "new last name",
"email": email,
- "organization": str(organization2.id),
+ "organization": "{}".format(organization2.id),
"organizationAdmin": False,
},
- headers={"Authorization": f"Bearer {create_jwt_token(user2)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user2))},
)
assert response.status_code == 200
@@ -306,7 +306,7 @@ def test_invite_existing_user_by_different_org_admin_should_not_modify_other_use
for role in data["roles"]
if role["organization"]["id"] == str(organization2.id)
]
- assert role_for_org2, f"No role found for organization {organization2.id}"
+ assert role_for_org2, "No role found for organization {}".format(organization2.id)
assert role_for_org2[0]["approved"] is True
assert role_for_org2[0]["role"] == "user"
@@ -315,23 +315,23 @@ def test_invite_existing_user_by_different_org_admin_should_not_modify_other_use
def test_invite_existing_user_by_different_org_admin_should_modify_user_name_if_initially_blank():
"""Invite existing user by a different organization admin should modify user name if user name is initially blank."""
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=[f"test-{secrets.token_hex(4)}"],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
organization2 = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=[f"test-{secrets.token_hex(4)}"],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
user = User.objects.create(firstName="", lastName="", email=email)
Role.objects.create(
role="user", approved=False, organization=organization, user=user
@@ -340,7 +340,7 @@ def test_invite_existing_user_by_different_org_admin_should_modify_user_name_if_
user2 = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -359,10 +359,10 @@ def test_invite_existing_user_by_different_org_admin_should_modify_user_name_if_
"firstName": "new first name",
"lastName": "new last name",
"email": email,
- "organization": str(organization2.id),
+ "organization": "{}".format(organization2.id),
"organizationAdmin": False,
},
- headers={"Authorization": f"Bearer {create_jwt_token(user2)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user2))},
)
assert response.status_code == 200
@@ -377,7 +377,7 @@ def test_invite_existing_user_by_different_org_admin_should_modify_user_name_if_
for role in data["roles"]
if role["organization"]["id"] == str(organization2.id)
]
- assert role_for_org2, f"No role found for organization {organization2.id}"
+ assert role_for_org2, "No role found for organization {}".format(organization2.id)
assert role_for_org2[0]["approved"] is True
assert role_for_org2[0]["role"] == "user"
@@ -386,8 +386,8 @@ def test_invite_existing_user_by_different_org_admin_should_modify_user_name_if_
def test_invite_existing_user_by_same_org_admin_should_update_user_org_role():
"""Invite existing user by same organization admin should work, and should update the user organization role."""
organization = Organization.objects.create(
- name=f"test-{secrets.token_hex(4)}",
- rootDomains=[f"test-{secrets.token_hex(4)}"],
+ name="test-{}".format(secrets.token_hex(4)),
+ rootDomains=["test-{}".format(secrets.token_hex(4))],
ipBlocks=[],
isPassive=False,
createdAt=datetime.now(),
@@ -396,9 +396,9 @@ def test_invite_existing_user_by_same_org_admin_should_update_user_org_role():
admin_user = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
user = User.objects.create(firstName="first", lastName="last", email=email)
Role.objects.create(
role="user",
@@ -412,7 +412,7 @@ def test_invite_existing_user_by_same_org_admin_should_update_user_org_role():
user2 = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.STANDARD,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -431,10 +431,10 @@ def test_invite_existing_user_by_same_org_admin_should_update_user_org_role():
"firstName": "first",
"lastName": "last",
"email": email,
- "organization": str(organization.id),
+ "organization": "{}".format(organization.id),
"organizationAdmin": True,
},
- headers={"Authorization": f"Bearer {create_jwt_token(user2)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user2))},
)
assert response.status_code == 200
@@ -454,15 +454,15 @@ def test_invite_existing_user_by_global_admin_should_update_user_type():
User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
user = User.objects.create(firstName="first", lastName="last", email=email)
user2 = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -476,7 +476,7 @@ def test_invite_existing_user_by_global_admin_should_update_user_type():
"email": email,
"userType": UserType.GLOBAL_ADMIN,
},
- headers={"Authorization": f"Bearer {create_jwt_token(user2)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user2))},
)
assert response.status_code == 200
@@ -496,15 +496,15 @@ def test_invite_existing_user_by_global_view_should_not_work():
User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
)
- email = f"{secrets.token_hex(4)}@crossfeed.cisa.gov"
+ email = "{}@crossfeed.cisa.gov".format(secrets.token_hex(4))
User.objects.create(firstName="first", lastName="last", email=email)
user2 = User.objects.create(
firstName="first",
lastName="last",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_VIEW,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -513,7 +513,7 @@ def test_invite_existing_user_by_global_view_should_not_work():
response = client.post(
"/users",
json={"firstName": "first", "lastName": "last", "email": email},
- headers={"Authorization": f"Bearer {create_jwt_token(user2)}"},
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(user2))},
)
assert response.status_code == 403
@@ -528,7 +528,7 @@ def test_register_approve_success(mock_email):
current_user = User.objects.create(
firstName="Admin",
lastName="User",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
regionId="region-1",
createdAt=datetime.now(),
@@ -537,16 +537,15 @@ def test_register_approve_success(mock_email):
user_to_approve = User.objects.create(
firstName="Test",
lastName="User",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
regionId="region-1",
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
-
# Mock email sending
response = client.put(
- f"/users/{user_to_approve.id}/register/approve",
- headers={"Authorization": f"Bearer {create_jwt_token(current_user)}"},
+ "/users/{}/register/approve".format(user_to_approve.id),
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(current_user))},
)
assert response.status_code == 200
@@ -567,7 +566,7 @@ def test_register_approve_unauthorized_region():
current_user = User.objects.create(
firstName="Admin",
lastName="User",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.REGIONAL_ADMIN,
regionId="1",
createdAt=datetime.now(),
@@ -576,15 +575,15 @@ def test_register_approve_unauthorized_region():
user_to_approve = User.objects.create(
firstName="Test",
lastName="User",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
regionId="2",
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
response = client.put(
- f"/users/{user_to_approve.id}/register/approve",
- headers={"Authorization": f"Bearer {create_jwt_token(current_user)}"},
+ "/users/{}/register/approve".format(user_to_approve.id),
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(current_user))},
)
assert response.status_code == 403
@@ -599,7 +598,7 @@ def test_register_deny_success(mock_denied_email):
current_user = User.objects.create(
firstName="Admin",
lastName="User",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
regionId="1",
createdAt=datetime.now(),
@@ -608,14 +607,14 @@ def test_register_deny_success(mock_denied_email):
user_to_deny = User.objects.create(
firstName="Test",
lastName="User",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
regionId="1",
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
response = client.put(
- f"/users/{user_to_deny.id}/register/deny",
- headers={"Authorization": f"Bearer {create_jwt_token(current_user)}"},
+ "/users/{}/register/deny".format(user_to_deny.id),
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(current_user))},
)
assert response.status_code == 200
@@ -635,7 +634,7 @@ def test_register_deny_unauthorized_region():
current_user = User.objects.create(
firstName="Admin",
lastName="User",
- email=f"{secrets.token_hex(4)}@crossfeed.cisa.gov",
+ email="{}@crossfeed.cisa.gov".format(secrets.token_hex(4)),
userType=UserType.REGIONAL_ADMIN,
regionId="1",
createdAt=datetime.now(),
@@ -644,15 +643,15 @@ def test_register_deny_unauthorized_region():
user_to_deny = User.objects.create(
firstName="Test",
lastName="User",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
regionId="2",
createdAt=datetime.now(),
updatedAt=datetime.now(),
)
response = client.put(
- f"/users/{user_to_deny.id}/register/deny",
- headers={"Authorization": f"Bearer {create_jwt_token(current_user)}"},
+ "/users/{}/register/deny".format(user_to_deny.id),
+ headers={"Authorization": "Bearer {}".format(create_jwt_token(current_user))},
)
print(response.json())
diff --git a/backend/src/xfd_django/xfd_api/tests/test_vulnerabilities.py b/backend/src/xfd_django/xfd_api/tests/test_vulnerabilities.py
index bfb3c62b9..476259c58 100644
--- a/backend/src/xfd_django/xfd_api/tests/test_vulnerabilities.py
+++ b/backend/src/xfd_django/xfd_api/tests/test_vulnerabilities.py
@@ -35,7 +35,7 @@ def user():
user = User.objects.create(
firstName="",
lastName="",
- email=f"{secrets.token_hex(4)}@example.com",
+ email="{}@example.com".format(secrets.token_hex(4)),
userType=UserType.GLOBAL_ADMIN,
createdAt=datetime.now(),
updatedAt=datetime.now(),
@@ -152,7 +152,7 @@ def test_get_vulnerability_by_id(user, vulnerability):
"""Test vulnerability."""
# Get vulnerability by Id.
response = client.get(
- f"/vulnerabilities/{str(vulnerability.id)}",
+ "/vulnerabilities/{}".format(str(vulnerability.id)),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
data = response.json()
@@ -168,7 +168,7 @@ def test_get_vulnerability_by_id_fails_404(user, vulnerability):
"""Test vulnerability."""
# Get error 404 if vulnerability does not exist
response = client.get(
- f"/vulnerabilities/{bad_id}",
+ "/vulnerabilities/{}".format(bad_id),
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -205,7 +205,7 @@ def test_update_vulnerability(user, vulnerability):
}
response = client.put(
- f"/vulnerabilities/{str(vulnerability.id)}",
+ "/vulnerabilities/{}".format(str(vulnerability.id)),
json=new_data,
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -255,7 +255,7 @@ def test_update_vulnerability_fails_404(user, vulnerability):
}
response = client.put(
- f"/vulnerabilities/{bad_id}",
+ "/vulnerabilities/{}".format(bad_id),
json=new_data,
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -287,7 +287,7 @@ def test_update_vulnerability_fails_422(user, vulnerability):
}
response = client.put(
- f"/vulnerabilities/{vulnerability.id}",
+ "/vulnerabilities/{}".format(vulnerability.id),
json=new_data,
headers={"Authorization": "Bearer " + create_jwt_token(user)},
)
@@ -312,7 +312,9 @@ def test_search_vulnerabilities_id(user, vulnerability):
for vuln in data["result"]:
assert vuln["id"] == str(
vulnerability.id
- ), f"Vulnerability ID {vuln['id']} does not match the expected {vulnerability.id}"
+ ), "Vulnerability ID {} does not match the expected {}".format(
+ vuln["id"], vulnerability.id
+ )
@pytest.mark.django_db(transaction=True)
@@ -334,7 +336,9 @@ def test_search_vulnerabilities_by_title(user, vulnerability):
for vuln in data["result"]:
assert (
vuln["title"] == search_fields["title"]
- ), f"Vulnerability title {vuln['title']} does not match the expected {search_fields['title']}"
+ ), "Vulnerability title {} does not match the expected {}".format(
+ vuln["title"], search_fields["title"]
+ )
@pytest.mark.django_db(transaction=True)
@@ -357,7 +361,9 @@ def test_search_vulnerabilities_by_cpe(user, vulnerability):
for vuln in data["result"]:
assert (
vuln["cpe"] == search_fields["cpe"]
- ), f"Vulnerability CPE {vuln['cpe']} does not match the expected {search_fields['cpe']}"
+ ), "Vulnerability CPE {} does not match the expected {}".format(
+ vuln["cpe"], search_fields["cpe"]
+ )
@pytest.mark.django_db(transaction=True)
@@ -385,7 +391,9 @@ def test_search_vulnerabilities_by_severity(user, vulnerability):
for vuln in data["result"]:
assert (
vuln["severity"] == search_fields["severity"]
- ), f"Vulnerability severity {vuln['severity']} does not match the expected {search_fields['severity']}"
+ ), "Vulnerability severity {} does not match the expected {}".format(
+ vuln["severity"], search_fields["severity"]
+ )
@pytest.mark.django_db(transaction=True)
@@ -410,7 +418,9 @@ def test_search_vulnerabilities_by_domain_id(user, vulnerability):
for vuln in data["result"]:
assert (
str(vuln["domain"]["name"]) == domain_name
- ), f"Vulnerability with ID {vuln['id']} does not have the expected domain_id {domain_name}"
+ ), "Vulnerability with ID {} does not have the expected domain_id {}".format(
+ vuln["id"], domain_name
+ )
@pytest.mark.django_db(transaction=True)
@@ -435,7 +445,9 @@ def test_search_vulnerabilities_by_state(user, vulnerability):
for vuln in data["result"]:
assert (
vuln["state"] == state_to_search
- ), f"Vulnerability with ID {vuln['id']} does not have the expected state {state_to_search}"
+ ), "Vulnerability with ID {} does not have the expected state {}".format(
+ vuln["id"], state_to_search
+ )
@pytest.mark.django_db(transaction=True)
@@ -460,7 +472,9 @@ def test_search_vulnerabilities_by_substate(user, vulnerability):
for vuln in data["result"]:
assert (
vuln["substate"] == substate_to_search
- ), f"Vulnerability with ID {vuln['id']} does not have the expected substate {substate_to_search}"
+ ), "Vulnerability with ID {} does not have the expected substate {}".format(
+ vuln["id"], substate_to_search
+ )
@pytest.mark.django_db(transaction=True)
@@ -491,10 +505,14 @@ def test_search_vulnerabilities_by_organization_id(user, vulnerability):
domain = Domain.objects.get(id=domain_id)
assert (
str(domain.organization.id) == organization_id
- ), f"Vulnerability with ID {vulnerability_data.get('id', 'N/A')} does not belong to the expected organization"
+ ), "Vulnerability with ID {} does not belong to the expected organization".format(
+ vulnerability_data.get("id", "N/A")
+ )
else:
print(
- f"Warning: 'domain_id' key not found in vulnerability with ID {vulnerability_data.get('id', 'N/A')}"
+ "Warning: 'domain_id' key not found in vulnerability with ID {}".format(
+ vulnerability_data.get("id", "N/A")
+ )
)
@@ -517,12 +535,14 @@ def test_search_vulnerabilities_by_is_kev(user, vulnerability):
assert "result" in data, "Response does not contain 'result' key"
assert (
len(data["result"]) > 0
- ), f"No vulnerabilities found for the given isKev value {is_kev_to_search}"
+ ), "No vulnerabilities found for the given isKev value {}".format(is_kev_to_search)
for vuln in data["result"]:
assert (
vuln["isKev"] == is_kev_to_search
- ), f"Vulnerability with ID {vuln['id']} does not have the expected 'isKev' value {is_kev_to_search}"
+ ), "Vulnerability with ID {} does not have the expected 'isKev' value {}".format(
+ vuln["id"], is_kev_to_search
+ )
@pytest.mark.django_db(transaction=True)
@@ -552,15 +572,21 @@ def test_search_vulnerabilities_by_multiple_criteria(user, vulnerability):
assert "result" in data, "Response does not contain 'result' key"
assert (
len(data["result"]) > 0
- ), f"No vulnerabilities found for the given 'state' = {state_to_search} and 'substate' = {substate_to_search}"
+ ), "No vulnerabilities found for the given 'state' = {} and 'substate' = {}".format(
+ state_to_search, substate_to_search
+ )
for vuln in data["result"]:
assert (
vuln["state"] == state_to_search
- ), f"Vulnerability with ID {vuln['id']} does not have the expected 'state' value {state_to_search}"
+ ), "Vulnerability with ID {} does not have the expected 'state' value {}".format(
+ vuln["id"], state_to_search
+ )
assert (
vuln["substate"] == substate_to_search
- ), f"Vulnerability with ID {vuln['id']} does not have the expected 'substate' value {substate_to_search}"
+ ), "Vulnerability with ID {} does not have the expected 'substate' value {}".format(
+ vuln["id"], substate_to_search
+ )
@pytest.mark.django_db(transaction=True)
diff --git a/backend/src/xfd_django/xfd_api/views.py b/backend/src/xfd_django/xfd_api/views.py
index 6e8e9cef0..004e95cf7 100644
--- a/backend/src/xfd_django/xfd_api/views.py
+++ b/backend/src/xfd_django/xfd_api/views.py
@@ -129,7 +129,9 @@ async def matomo_proxy(
"/plugins/Morpheus/fonts/matomo.ttf",
]:
return RedirectResponse(
- url=f"https://cdn.jsdelivr.net/gh/matomo-org/matomo@3.14.1{request.url.path}"
+ url="https://cdn.jsdelivr.net/gh/matomo-org/matomo@5.2.1{}".format(
+ request.url.path
+ )
)
# Ensure only global admin can access other paths
@@ -1209,7 +1211,9 @@ async def call_search_vulnerabilities(
# Convert each ORM instance to a Pydantic model
result = [GetVulnerabilityResponse.model_validate(v) for v in vulnerabilities]
except Exception as e:
- raise HTTPException(status_code=500, detail=f"Serialization error: {str(e)}")
+ raise HTTPException(
+ status_code=500, detail="Serialization error: {}".format(str(e))
+ )
return VulnerabilitySearchResponse(result=result, count=count)
diff --git a/backend/src/xfd_django/xfd_django/asgi.py b/backend/src/xfd_django/xfd_django/asgi.py
index bf1fb729b..a461fdc1d 100644
--- a/backend/src/xfd_django/xfd_django/asgi.py
+++ b/backend/src/xfd_django/xfd_django/asgi.py
@@ -38,7 +38,7 @@ def set_security_headers(response: Response):
# Set Content Security Policy (CSP)
csp_value = "; ".join(
[
- f"{key} {' '.join(map(str, value))}"
+ "{} {}".format(key, " ".join(map(str, value)))
for key, value in settings.SECURE_CSP_POLICY.items()
if isinstance(value, (list, tuple))
]
@@ -98,7 +98,7 @@ async def startup():
"""Start up Redis with ElastiCache."""
# Initialize Redis with the ElastiCache endpoint
app.state.redis = await aioredis.from_url(
- f"redis://{settings.ELASTICACHE_ENDPOINT}",
+ "redis://{}".format(settings.ELASTICACHE_ENDPOINT),
encoding="utf-8",
decode_responses=True,
max_connections=100,
@@ -139,7 +139,7 @@ async def run_scheduler():
await scheduler_handler({}, {})
await asyncio.sleep(120) # Run every 120 seconds
except Exception as e:
- print(f"Error running local scheduler: {e}")
+ print("Error running local scheduler: {}".format(e))
app = get_application()
diff --git a/backend/src/xfd_django/xfd_django/docker_events.py b/backend/src/xfd_django/xfd_django/docker_events.py
index 82a398df7..0cfe32c50 100644
--- a/backend/src/xfd_django/xfd_django/docker_events.py
+++ b/backend/src/xfd_django/xfd_django/docker_events.py
@@ -67,11 +67,13 @@ def listen_for_docker_events():
continue
# Log and process the event
- print(f"Processing Docker event: {json.dumps(payload, indent=2)}")
+ print(
+ "Processing Docker event: {}".format(json.dumps(payload, indent=2))
+ )
# Use asyncio to process the event
asyncio.run(update_scan_task_status(payload, None))
except Exception as e:
- print(f"Error processing Docker event: {e}")
+ print("Error processing Docker event: {}".format(e))
except Exception as e:
- print(f"Error connecting to Docker: {e}")
+ print("Error connecting to Docker: {}".format(e))
diff --git a/backend/src/xfd_django/xfd_django/settings.py b/backend/src/xfd_django/xfd_django/settings.py
index ab0bc2776..10bbc1964 100644
--- a/backend/src/xfd_django/xfd_django/settings.py
+++ b/backend/src/xfd_django/xfd_django/settings.py
@@ -99,6 +99,9 @@
"PASSWORD": os.getenv("MDL_PASSWORD"),
"HOST": os.getenv("DB_HOST"),
"PORT": "5432",
+ "TEST": {
+ "NAME": "mini_data_lake_test", # Test database for mini_data_lake
+ },
},
}
diff --git a/backend/worker/generate_config.sh b/backend/worker/generate_config.sh
index dbec44545..89c9e7367 100755
--- a/backend/worker/generate_config.sh
+++ b/backend/worker/generate_config.sh
@@ -14,7 +14,7 @@ key1=${PE_SHODAN_API_KEYS}
[pe_api]
pe_api_key=${PE_API_KEY}
-pe_api_url=https://api.staging-cd.crossfeed.cyber.dhs.gov/pe/apiv1/
+pe_api_url=${PE_API_URL}
cf_api_key=${CF_API_KEY}
[staging]
diff --git a/backend/worker/mitmproxy_sign_requests.py b/backend/worker/mitmproxy_sign_requests.py
index c98ac6e3b..85ec423ef 100644
--- a/backend/worker/mitmproxy_sign_requests.py
+++ b/backend/worker/mitmproxy_sign_requests.py
@@ -109,7 +109,7 @@ def request(self, flow):
except Exception as e:
flow.response = http.HTTPResponse.make(
500,
- f"mitmproxy failed:
{e}
{traceback.format_exc()}",
+ "mitmproxy failed:
{}
{}".format(e, traceback.format_exc()),
{"Content-Type": "text/html"},
)
diff --git a/backend/worker/worker.py b/backend/worker/worker.py
index 3819ac083..004aff39f 100644
--- a/backend/worker/worker.py
+++ b/backend/worker/worker.py
@@ -28,15 +28,15 @@ async def main():
# Validate the scan name and dynamically load the appropriate handler
try:
- task_module = importlib.import_module(f"xfd_api.tasks.{scan_name}")
+ task_module = importlib.import_module("xfd_api.tasks.{}".format(scan_name))
scan_fn = task_module.handler
except ModuleNotFoundError:
- raise ValueError(f"No task handler found for scan name: {scan_name}")
+ raise ValueError("No task handler found for scan name: {}".format(scan_name))
# Fetch scan schema
scan_schema = SCAN_SCHEMA.get(scan_name)
if not scan_schema:
- raise ValueError(f"No schema found for scan name: {scan_name}")
+ raise ValueError("No schema found for scan name: {}".format(scan_name))
# Execute the task
if getattr(scan_schema, "global_scan", False):
diff --git a/dev.env.example b/dev.env.example
index a6cf80689..bd5e885ba 100644
--- a/dev.env.example
+++ b/dev.env.example
@@ -6,7 +6,9 @@ DB_PASSWORD=password
DB_NAME=crossfeed
JWT_SECRET=CHANGE_ME
-MDL_USERNAME=mdl
+# Make the username the same as default db
+# so pytest can create both test DBs
+MDL_USERNAME=crossfeed
MDL_PASSWORD=password
MDL_NAME=crossfeed_mini_datalake
@@ -126,3 +128,7 @@ ELASTICACHE_ENDPOINT=redis
WHOIS_XML_KEY=change_me
QUALYS_USERNAME=change_me
QUALYS_PASSWORD=change_me
+
+IS_DMZ=1
+POSTGRES_SCAN_USER=
+POSTGRES_SCAN_PASSWORD=
diff --git a/docker-compose.yml b/docker-compose.yml
index fd45cb38c..2be9bd074 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -112,7 +112,7 @@ services:
# LOGGING_QUIET: 'true'
matomodb:
- image: mariadb:10.6
+ image: mariadb:11.4
command: --max-allowed-packet=64MB
networks:
- backend
@@ -122,9 +122,11 @@ services:
- MYSQL_ROOT_PASSWORD=password
logging:
driver: none
+ ports:
+ - 3306:3306
matomo:
- image: matomo:3.14.1
+ image: matomo:5.2.1
user: root
networks:
- backend
@@ -141,6 +143,9 @@ services:
- MATOMO_GENERAL_ASSUME_SECURE_PROTOCOL=1
logging:
driver: none
+ ports:
+ - "8080:80"
+
# rabbitmq:
# image: 'rabbitmq:3.8-management'
# ports:
diff --git a/docs/package-lock.json b/docs/package-lock.json
index a76caa000..bfd82d4f8 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -6,6 +6,8 @@
"dependencies": {
"@reach/router": "^1.3.4",
"clipboardy": "^3.0.0",
+ "cross-spawn": "^7.0.6",
+ "nanoid": "^5.0.9",
"resolve-url-loader": "^5.0.0",
"swagger-jsdoc": "^5.0.1"
},
@@ -8225,9 +8227,9 @@
"engines": {
"node": ">= 8"
},
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "version": "7.0.3"
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "version": "7.0.6"
},
"node_modules/crypto-random-string": {
"dev": true,
@@ -15895,10 +15897,10 @@
},
"node_modules/nanoid": {
"bin": {
- "nanoid": "bin/nanoid.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^18 || >=20"
},
"funding": [
{
@@ -15906,9 +15908,9 @@
"url": "https://github.com/sponsors/ai"
}
],
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
- "version": "3.3.6"
+ "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz",
+ "version": "5.0.9"
},
"node_modules/napi-build-utils": {
"dev": true,
@@ -18008,6 +18010,23 @@
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"version": "4.2.0"
},
+ "node_modules/postcss/node_modules/nanoid": {
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ },
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "version": "3.3.8"
+ },
"node_modules/prebuild-install": {
"bin": {
"prebuild-install": "bin.js"
diff --git a/docs/package.json b/docs/package.json
index 956afbd29..9d36ba28e 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -2,6 +2,8 @@
"dependencies": {
"@reach/router": "^1.3.4",
"clipboardy": "^3.0.0",
+ "cross-spawn": "^7.0.6",
+ "nanoid": "^5.0.9",
"resolve-url-loader": "^5.0.0",
"swagger-jsdoc": "^5.0.1"
},
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index e73e72ad2..ab505ee31 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -22,19 +22,25 @@
"@trussworks/react-uswds": "^5.1.1",
"autoprefixer": "^10.4.13",
"aws-amplify": "^5.3.12",
- "axios": "^1.6.2",
+ "axios": "^1.7.9",
"classnames": "^2.3.2",
+ "cookie": "^1.0.2",
"cors": "^2.8.5",
+ "cross-spawn": "^7.0.6",
"d3-scale": "^4.0.2",
"date-fns": "^3.6.0",
"date-fns-tz": "^3.1.3",
"decamelize": "^6.0.0",
- "dompurify": "^3.0.5",
+ "dompurify": "^2.5.8",
"express-rate-limit": "^7.1.3",
+ "fast-xml-parser": "^4.5.1",
"file-saver": "^2.0.5",
+ "http-proxy-middleware": "^3.0.3",
"jspdf": "^2.5.1",
"jwt-decode": "^3.1.2",
+ "nanoid": "^5.0.9",
"papaparse": "^5.3.2",
+ "path-to-regexp": "^8.2.0",
"postcss": "^8.4.18",
"query-string": "^7.1.1",
"react": "^18.2.0",
@@ -52,7 +58,8 @@
"react-table": "^7.8.0",
"react-to-print": "^2.15.1",
"resolve-url-loader": "^5.0.0",
- "universal-cookie": "^4.0.4",
+ "rollup": "^2.79.2",
+ "universal-cookie": "^7.2.2",
"uswds": "^2.13.3",
"web-vitals": "^2.1.4"
},
@@ -83,7 +90,7 @@
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-prettier": "^5.1.2",
"eslint-plugin-react": "^7.31.10",
- "express": "^4.18.2",
+ "express": "^4.21.2",
"helmet": "^7.0.0",
"jest-date-mock": "^1.0.8",
"prettier": "^3.0.3",
@@ -97,7 +104,7 @@
"serverless-webpack": "^5.11.0",
"ts-jest": "^29.1.1",
"typescript": "^4.8.4",
- "webpack": "^5.88",
+ "webpack": "^5.97.1",
"webpack-cli": "^5.1"
},
"engines": {
@@ -171,8 +178,8 @@
},
"node_modules/@aws-amplify/analytics": {
"dependencies": {
- "@aws-amplify/cache": "5.1.18",
- "@aws-amplify/core": "5.8.12",
+ "@aws-amplify/cache": "5.1.20",
+ "@aws-amplify/core": "5.8.14",
"@aws-sdk/client-firehose": "3.6.1",
"@aws-sdk/client-kinesis": "3.6.1",
"@aws-sdk/client-personalize-events": "3.6.1",
@@ -181,9 +188,9 @@
"tslib": "^1.8.0",
"uuid": "^3.2.1"
},
- "integrity": "sha512-8z3mXLzUoMkR47W9UrK/yNw7Qo98HuhYaPW9gQa0/H5mC4IIiN/ka0RurefKTx89xkPUxIuv7pAIWqMcg8NMCA==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/analytics/-/analytics-6.5.12.tgz",
- "version": "6.5.12"
+ "integrity": "sha512-sAv7X8t3WL+t+0z+zAahIXhx/f5rrstCy1RlMEykxP5FWEwKKTpDBO9LdWZLGNnR1nYeTUeKwSl2zzn2FdYS0w==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/analytics/-/analytics-6.5.14.tgz",
+ "version": "6.5.14"
},
"node_modules/@aws-amplify/analytics/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -192,29 +199,29 @@
},
"node_modules/@aws-amplify/api": {
"dependencies": {
- "@aws-amplify/api-graphql": "3.4.18",
- "@aws-amplify/api-rest": "3.5.12",
+ "@aws-amplify/api-graphql": "3.4.22",
+ "@aws-amplify/api-rest": "3.5.14",
"tslib": "^1.8.0"
},
- "integrity": "sha512-LHxfHpwu6hFm6sMiPB6UAKzj5Aoccp/r4527dTg6N/aQwQXyWEGkGSK4dBSSM/Sf0vPADo9jn6WGNttCXulDyw==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/api/-/api-5.4.12.tgz",
- "version": "5.4.12"
+ "integrity": "sha512-j4yTG0cOK0YvBNItamY2Nhugn5mP3WJEDyhUZSGY16k1h4GWzG0k247GMqAJpDwDp6e5KvQZKt92i+c1+ZW+dg==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/api/-/api-5.4.16.tgz",
+ "version": "5.4.16"
},
"node_modules/@aws-amplify/api-graphql": {
"dependencies": {
- "@aws-amplify/api-rest": "3.5.12",
- "@aws-amplify/auth": "5.6.12",
- "@aws-amplify/cache": "5.1.18",
- "@aws-amplify/core": "5.8.12",
- "@aws-amplify/pubsub": "5.5.12",
+ "@aws-amplify/api-rest": "3.5.14",
+ "@aws-amplify/auth": "5.6.15",
+ "@aws-amplify/cache": "5.1.20",
+ "@aws-amplify/core": "5.8.14",
+ "@aws-amplify/pubsub": "5.6.2",
"graphql": "15.8.0",
"tslib": "^1.8.0",
"uuid": "^3.2.1",
"zen-observable-ts": "0.8.19"
},
- "integrity": "sha512-4rZ0vhfTQnP+kCL+uc0BZdHsjNU1vLj5+xOPIkNrI0Y0VdN9I2aKfWjBQx8i2BIPeF3B+xSKKuGhIJD6WCxcpg==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/api-graphql/-/api-graphql-3.4.18.tgz",
- "version": "3.4.18"
+ "integrity": "sha512-6Y8G+RfAZWy4tjTf8iC/c8YEDT15GvpLNep7NGhKAsemQ35CDg/AtktlFKbk5MrRP9+gd/qlU0hWBgTa1pQOGw==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/api-graphql/-/api-graphql-3.4.22.tgz",
+ "version": "3.4.22"
},
"node_modules/@aws-amplify/api-graphql/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -223,14 +230,14 @@
},
"node_modules/@aws-amplify/api-rest": {
"dependencies": {
- "@aws-amplify/core": "5.8.12",
+ "@aws-amplify/core": "5.8.14",
"axios": "^1.6.5",
"tslib": "^1.8.0",
"url": "0.11.0"
},
- "integrity": "sha512-WWUZU7MaKxxt9xw+FwnSWfbsXEwoDbGH6G8/S0YrcQeILbutLLcW4boW3d2vRaYjjC/1saVUHyrdO1mWZ++C5Q==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/api-rest/-/api-rest-3.5.12.tgz",
- "version": "3.5.12"
+ "integrity": "sha512-+vqdckBs4+T/J1+uTbg8Lxd8toH1n0ttV8K89LQ7t9aaGntomLEQJlfBLtZyII8lM3oJyKB26J0Eh9z15IaH7Q==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/api-rest/-/api-rest-3.5.14.tgz",
+ "version": "3.5.14"
},
"node_modules/@aws-amplify/api-rest/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -244,15 +251,15 @@
},
"node_modules/@aws-amplify/auth": {
"dependencies": {
- "@aws-amplify/core": "5.8.12",
- "amazon-cognito-identity-js": "6.3.13",
+ "@aws-amplify/core": "5.8.14",
+ "amazon-cognito-identity-js": "6.3.14",
"buffer": "4.9.2",
"tslib": "^1.8.0",
"url": "0.11.0"
},
- "integrity": "sha512-NX5E2l9Ovsbfsh2R0iNweNVVY3QtJRWpBrHPIOxzhqSxiwK0Cay/+9bQ8Uv7/O8s2NHByG1+kXM7zR+iDuYxfA==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/auth/-/auth-5.6.12.tgz",
- "version": "5.6.12"
+ "integrity": "sha512-bMaP09rd/tIZvDAbhhVEEBdpoEgnt1ua5S6efQzfY6zpwdDLEgP+ZJ8hJLCjgPx5SpZ9G0+ltg0Ig5tBWAo2vA==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/auth/-/auth-5.6.15.tgz",
+ "version": "5.6.15"
},
"node_modules/@aws-amplify/auth/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -261,12 +268,12 @@
},
"node_modules/@aws-amplify/cache": {
"dependencies": {
- "@aws-amplify/core": "5.8.12",
+ "@aws-amplify/core": "5.8.14",
"tslib": "^1.8.0"
},
- "integrity": "sha512-1aZ8MvA+8PJur5cnJAbBUnCUCw3ACfjCI/s/qY+Fx1jKahci3J9Yl2+pf4A6Nk6e0IjtN6FVCOKUKcWV/5+QYQ==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/cache/-/cache-5.1.18.tgz",
- "version": "5.1.18"
+ "integrity": "sha512-3mnfVm/u2ndio3j/0yywbKT3HpAuS2RJeuTlwqXpMOhZBdJJmzNMBTo5ZIkl5MlnppozQ3LD62sdT372hOwZiQ==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/cache/-/cache-5.1.20.tgz",
+ "version": "5.1.20"
},
"node_modules/@aws-amplify/cache/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -283,12 +290,12 @@
"isomorphic-unfetch": "^3.0.0",
"react-native-url-polyfill": "^1.3.0",
"tslib": "^1.8.0",
- "universal-cookie": "^4.0.4",
+ "universal-cookie": "^7.2.2",
"zen-observable-ts": "0.8.19"
},
- "integrity": "sha512-kQkIRBiowtMawBPTviAkz6q9Od6IImrYxdnjFebHNqF1fuLq016jxhBLxiq5ztZDvkZX+IpSr1gzOZtNGkikvA==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/core/-/core-5.8.12.tgz",
- "version": "5.8.12"
+ "integrity": "sha512-QU+3zQspE9f2CrZOtGDuHBZU9WqZ6PDQUEslVV+VCu2CduBDTtfnl1hCfVJ6vnUIxhwB24onpBwKz/IGZgh86g==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/core/-/core-5.8.14.tgz",
+ "version": "5.8.14"
},
"node_modules/@aws-amplify/core/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -297,11 +304,11 @@
},
"node_modules/@aws-amplify/datastore": {
"dependencies": {
- "@aws-amplify/api": "5.4.12",
- "@aws-amplify/auth": "5.6.12",
- "@aws-amplify/core": "5.8.12",
- "@aws-amplify/pubsub": "5.5.12",
- "amazon-cognito-identity-js": "6.3.13",
+ "@aws-amplify/api": "5.4.16",
+ "@aws-amplify/auth": "5.6.15",
+ "@aws-amplify/core": "5.8.14",
+ "@aws-amplify/pubsub": "5.6.2",
+ "amazon-cognito-identity-js": "6.3.14",
"buffer": "4.9.2",
"idb": "5.0.6",
"immer": "9.0.6",
@@ -310,21 +317,21 @@
"zen-observable-ts": "0.8.19",
"zen-push": "0.2.1"
},
- "integrity": "sha512-BnyZZPvYAka6D4OHfid7/UCBvXgpZTvXTydBW0YFZ3mIoRiTZC9+rcWm0i3EjtjUuGJuzbLhxDqklXGvUsXCkg==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/datastore/-/datastore-4.7.12.tgz",
- "version": "4.7.12"
+ "integrity": "sha512-o+YAzARAlvtv4+iHERkyeClT84uP11HKPZ8s084TwwE03o/L1ym5dDBbhYq4vaB7meDurCNiuQLHVHosPYPlLQ==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/datastore/-/datastore-4.7.16.tgz",
+ "version": "4.7.16"
},
"node_modules/@aws-amplify/geo": {
"dependencies": {
- "@aws-amplify/core": "5.8.12",
- "@aws-sdk/client-location": "3.186.3",
+ "@aws-amplify/core": "5.8.14",
+ "@aws-sdk/client-location": "3.186.4",
"@turf/boolean-clockwise": "6.5.0",
"camelcase-keys": "6.2.2",
"tslib": "^1.8.0"
},
- "integrity": "sha512-H8cyusFfWhXANefNJz/rYAMAmD8cNPC36xzFfXrqHJTKplEUY+3dRMvkOx2gDZpqYF8Ij9qJ5BOoPfs7Jh6ySA==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/geo/-/geo-2.3.12.tgz",
- "version": "2.3.12"
+ "integrity": "sha512-HKJlxu1e+yd5P7kD8tCwbMRaNJdusVPifargT7E8i0AY6FXiylYz2U8PedhcIRlgJykCIhuNoTMMA8nOVYgKHg==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/geo/-/geo-2.3.14.tgz",
+ "version": "2.3.14"
},
"node_modules/@aws-amplify/geo/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -333,17 +340,17 @@
},
"node_modules/@aws-amplify/interactions": {
"dependencies": {
- "@aws-amplify/core": "5.8.12",
- "@aws-sdk/client-lex-runtime-service": "3.186.3",
- "@aws-sdk/client-lex-runtime-v2": "3.186.3",
+ "@aws-amplify/core": "5.8.14",
+ "@aws-sdk/client-lex-runtime-service": "3.186.4",
+ "@aws-sdk/client-lex-runtime-v2": "3.186.4",
"base-64": "1.0.0",
"fflate": "0.7.3",
"pako": "2.0.4",
"tslib": "^1.8.0"
},
- "integrity": "sha512-K1oo6GFS7kgq86QMjmF+dabuFEeJLAu1FK1tfTyFIhvrgZ4xfVnzdTXlJhS+ZJ5ZKc6WyzVmE8di/KllI+pTAA==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/interactions/-/interactions-5.2.18.tgz",
- "version": "5.2.18"
+ "integrity": "sha512-RduNt/0zZOgsQa1sC/1Ro3q6m4rQ4JStdqEXWEujtkzmiRB6I1BzdxuM0bjOLvDAXqdVGy2dWRMgpmhRzg7JOg==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/interactions/-/interactions-5.2.21.tgz",
+ "version": "5.2.21"
},
"node_modules/@aws-amplify/interactions/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -352,20 +359,20 @@
},
"node_modules/@aws-amplify/notifications": {
"dependencies": {
- "@aws-amplify/cache": "5.1.18",
- "@aws-amplify/core": "5.8.12",
- "@aws-amplify/rtn-push-notification": "1.1.14",
+ "@aws-amplify/cache": "5.1.20",
+ "@aws-amplify/core": "5.8.14",
+ "@aws-amplify/rtn-push-notification": "1.1.15",
"lodash": "^4.17.21",
"uuid": "^3.2.1"
},
- "integrity": "sha512-fH1k8P1Nts/1OIy8IKQjWpJgdsql0562CPpwGBVvPnRYqnkPxvzImjZdhwTgpu+vxjDBKEky/Buu9ws+ST7Myg==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/notifications/-/notifications-1.6.13.tgz",
- "version": "1.6.13"
+ "integrity": "sha512-gLz26cdn0H1J4rbOJg4K6pnUARAUgfUb9OtlfoTYaHjPR8rWBphrACNEJBOWZKuRuJi3bSIVQy0EZT8sbYr4tA==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/notifications/-/notifications-1.6.16.tgz",
+ "version": "1.6.16"
},
"node_modules/@aws-amplify/predictions": {
"dependencies": {
- "@aws-amplify/core": "5.8.12",
- "@aws-amplify/storage": "5.9.12",
+ "@aws-amplify/core": "5.8.14",
+ "@aws-amplify/storage": "5.9.16",
"@aws-sdk/client-comprehend": "3.6.1",
"@aws-sdk/client-polly": "3.6.1",
"@aws-sdk/client-rekognition": "3.6.1",
@@ -377,9 +384,9 @@
"tslib": "^1.8.0",
"uuid": "^3.2.1"
},
- "integrity": "sha512-KY2YUDkhNGtRIHDYDcuNIVxAfUbLP2vH1268TXRoUaZvRz5NKTKAje8Ht5AnoCDhSWTN7nduoivL97fRzo6bJA==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/predictions/-/predictions-5.5.12.tgz",
- "version": "5.5.12"
+ "integrity": "sha512-8Zu/BQjK8PAD3KI44OMSadz/o9WGujipQAW2qH6LgVpOS4e7l1g2cPEw5xwSBrodJOiXJ6REyWbzujXlp1ZTDw==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/predictions/-/predictions-5.5.17.tgz",
+ "version": "5.5.17"
},
"node_modules/@aws-amplify/predictions/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -388,9 +395,9 @@
},
"node_modules/@aws-amplify/pubsub": {
"dependencies": {
- "@aws-amplify/auth": "5.6.12",
- "@aws-amplify/cache": "5.1.18",
- "@aws-amplify/core": "5.8.12",
+ "@aws-amplify/auth": "5.6.15",
+ "@aws-amplify/cache": "5.1.20",
+ "@aws-amplify/core": "5.8.14",
"buffer": "4.9.2",
"graphql": "15.8.0",
"tslib": "^1.8.0",
@@ -398,9 +405,9 @@
"uuid": "^3.2.1",
"zen-observable-ts": "0.8.19"
},
- "integrity": "sha512-eD57TUee9n7ECNPWFIl1TcZmQf8+usiB2vo7t6nBgjCoudYRhYh8ZPfxg94uqfDdWBXMbRoBI0JPISyEQo2xKA==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/pubsub/-/pubsub-5.5.12.tgz",
- "version": "5.5.12"
+ "integrity": "sha512-aOrBMcEO9ulsPlTy0p91OS8PU9SiFNcFoT3NKmlTYok9XR/1Yf0dgAaXCttuOYCjjlt9T+QKyJ96m3z3cIJr1Q==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/pubsub/-/pubsub-5.6.2.tgz",
+ "version": "5.6.2"
},
"node_modules/@aws-amplify/pubsub/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -408,13 +415,13 @@
"version": "1.14.1"
},
"node_modules/@aws-amplify/rtn-push-notification": {
- "integrity": "sha512-C3y+iL8/9800wWOyIAVYAKzrHZkFeI3y2ZoJlj0xot+dCbQZkMr/XjO2ZwfC58XRKUiDKFfzCJW/XoyZlvthfw==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/rtn-push-notification/-/rtn-push-notification-1.1.14.tgz",
- "version": "1.1.14"
+ "integrity": "sha512-nqn+xZkO4pX107rQmVieBRLGC9Qj65PDJqutmY5BX85DIt8vsPfWqLnuZlx4Y6uvaddosgmyt441U/Rd7Kc8ig==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/rtn-push-notification/-/rtn-push-notification-1.1.15.tgz",
+ "version": "1.1.15"
},
"node_modules/@aws-amplify/storage": {
"dependencies": {
- "@aws-amplify/core": "5.8.12",
+ "@aws-amplify/core": "5.8.14",
"@aws-sdk/md5-js": "3.6.1",
"@aws-sdk/types": "3.6.1",
"buffer": "4.9.2",
@@ -422,9 +429,9 @@
"fast-xml-parser": "^4.2.5",
"tslib": "^1.8.0"
},
- "integrity": "sha512-aQ9JCRJL+Dlrg5mxlvZtKuBm1NjrU/8aFZ51VdHr4BWQBfAchSk9s3UcnHeh+o8pGWCl1z9W05yp12eXTWauEw==",
- "resolved": "https://registry.npmjs.org/@aws-amplify/storage/-/storage-5.9.12.tgz",
- "version": "5.9.12"
+ "integrity": "sha512-Ck2h2D14Hw1HdBaJ4e/QWtknvE+Whnn8iHLndSo9Z9rCU0QK8arIYs2KogvggihRi0drT+3ykfsZfpZYco/WCg==",
+ "resolved": "https://registry.npmjs.org/@aws-amplify/storage/-/storage-5.9.16.tgz",
+ "version": "5.9.16"
},
"node_modules/@aws-amplify/storage/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -546,36 +553,36 @@
},
"node_modules/@aws-crypto/crc32/node_modules/@aws-sdk/types": {
"dependencies": {
- "@smithy/types": "^3.3.0",
+ "@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
},
- "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
- "version": "3.609.0"
+ "integrity": "sha512-LmK3kwiMZG1y5g3LGihT9mNkeNOmwEyPk6HGcJqh0wOSV4QpWoKu2epyKE4MLQNUUlz2kOVbVbOrwmI6ZcteuA==",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.723.0.tgz",
+ "version": "3.723.0"
},
"node_modules/@aws-crypto/crc32/node_modules/@aws-sdk/types/node_modules/tslib": {
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
- "version": "2.6.3"
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "version": "2.8.1"
},
"node_modules/@aws-crypto/crc32/node_modules/@smithy/types": {
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
},
- "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz",
- "version": "3.3.0"
+ "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
+ "version": "4.1.0"
},
"node_modules/@aws-crypto/crc32/node_modules/@smithy/types/node_modules/tslib": {
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
- "version": "2.6.3"
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "version": "2.8.1"
},
"node_modules/@aws-crypto/crc32/node_modules/tslib": {
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
@@ -3445,7 +3452,7 @@
"dependencies": {
"@aws-crypto/sha256-browser": "2.0.0",
"@aws-crypto/sha256-js": "2.0.0",
- "@aws-sdk/client-sts": "3.186.3",
+ "@aws-sdk/client-sts": "3.186.4",
"@aws-sdk/config-resolver": "3.186.0",
"@aws-sdk/credential-provider-node": "3.186.0",
"@aws-sdk/fetch-http-handler": "3.186.0",
@@ -3481,9 +3488,9 @@
"engines": {
"node": ">=12.0.0"
},
- "integrity": "sha512-YP+GDY9OxyW4rJDqjreaNpiDBvH1uzO3ShJKl57hT92Kw2auDQxttcMf//J8dQXvrVkW/fVXCLI9TmtxS7XJOQ==",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-lex-runtime-service/-/client-lex-runtime-service-3.186.3.tgz",
- "version": "3.186.3"
+ "integrity": "sha512-ftPIjDR5gmoSu9YXQLWdtiSxGfdSlHSWi+Zqun24f3YHZuLACN514JppvHTcNBztpmtnCU4qx3eFjKg6aMOosg==",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-lex-runtime-service/-/client-lex-runtime-service-3.186.4.tgz",
+ "version": "3.186.4"
},
"node_modules/@aws-sdk/client-lex-runtime-service/node_modules/@aws-crypto/ie11-detection": {
"dependencies": {
@@ -4092,7 +4099,7 @@
"dependencies": {
"@aws-crypto/sha256-browser": "2.0.0",
"@aws-crypto/sha256-js": "2.0.0",
- "@aws-sdk/client-sts": "3.186.3",
+ "@aws-sdk/client-sts": "3.186.4",
"@aws-sdk/config-resolver": "3.186.0",
"@aws-sdk/credential-provider-node": "3.186.0",
"@aws-sdk/eventstream-handler-node": "3.186.0",
@@ -4133,9 +4140,9 @@
"engines": {
"node": ">=12.0.0"
},
- "integrity": "sha512-4MJfSnb+qM8BYW4ToCvg7sDWN0NcEqK738hCZUV89cjp7pIHZ6osJuS/PsmZEommVj+71GviZ4buu5KUCfCGFQ==",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-lex-runtime-v2/-/client-lex-runtime-v2-3.186.3.tgz",
- "version": "3.186.3"
+ "integrity": "sha512-ELoZYwTIoQWVw1a+ImE1n4z8b/5DqgzXti8QSoC2VaKv8dNwDO1xWal2LJhw20HPcTkAhHL8IA3gU/tTrWXk1g==",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-lex-runtime-v2/-/client-lex-runtime-v2-3.186.4.tgz",
+ "version": "3.186.4"
},
"node_modules/@aws-sdk/client-lex-runtime-v2/node_modules/@aws-crypto/ie11-detection": {
"dependencies": {
@@ -4795,7 +4802,7 @@
"dependencies": {
"@aws-crypto/sha256-browser": "2.0.0",
"@aws-crypto/sha256-js": "2.0.0",
- "@aws-sdk/client-sts": "3.186.3",
+ "@aws-sdk/client-sts": "3.186.4",
"@aws-sdk/config-resolver": "3.186.0",
"@aws-sdk/credential-provider-node": "3.186.0",
"@aws-sdk/fetch-http-handler": "3.186.0",
@@ -4831,9 +4838,9 @@
"engines": {
"node": ">=12.0.0"
},
- "integrity": "sha512-LCMFgoWfvKBnZhhtl93RLhrsHCalM7huaxErHSKoqWDBUDP0i7rOX73qW8E25j/vQ4emEkT0d6ts1rDu4EnlNw==",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-location/-/client-location-3.186.3.tgz",
- "version": "3.186.3"
+ "integrity": "sha512-wHRVFdIDZVbae2w1axi4R8idiWH3CRZy22Zrtybfs/fvrC5xZZxFaLwXQtvPJdOf0RUGgQeOTsvJl2sInKSj+w==",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-location/-/client-location-3.186.4.tgz",
+ "version": "3.186.4"
},
"node_modules/@aws-sdk/client-location/node_modules/@aws-crypto/ie11-detection": {
"dependencies": {
@@ -7158,15 +7165,15 @@
"@aws-sdk/util-utf8-browser": "3.186.0",
"@aws-sdk/util-utf8-node": "3.186.0",
"entities": "2.2.0",
- "fast-xml-parser": "4.2.5",
+ "fast-xml-parser": "4.4.1",
"tslib": "^2.3.1"
},
"engines": {
"node": ">=12.0.0"
},
- "integrity": "sha512-mnttdyYBtqO+FkDtOT3F1FGi8qD11fF5/3zYLaNuFFULqKneaIwW2YIsjFlgvPGpmoyo/tNplnZwhQ9xQtT3Sw==",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.186.3.tgz",
- "version": "3.186.3"
+ "integrity": "sha512-KeC7eNoasv5A/cwC3uyM7xwyFiLYA0wz8YSG2rmvWHsW7vRn/95ATyNGlzNCpTQq3rlNORJ39yxpQCY7AxTb9g==",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.186.4.tgz",
+ "version": "3.186.4"
},
"node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/ie11-detection": {
"dependencies": {
@@ -7779,18 +7786,18 @@
"strnum": "^1.0.5"
},
"funding": [
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- },
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
}
],
- "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
- "version": "4.2.5"
+ "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
+ "version": "4.4.1"
},
"node_modules/@aws-sdk/client-textract": {
"dependencies": {
@@ -10504,36 +10511,37 @@
},
"node_modules/@babel/code-frame": {
"dependencies": {
- "@babel/highlight": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "version": "7.24.7"
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "version": "7.26.2"
},
"node_modules/@babel/compat-data": {
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz",
- "version": "7.22.9"
+ "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/core": {
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.23.3",
- "@babel/helper-compilation-targets": "^7.22.15",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.23.2",
- "@babel/parser": "^7.23.3",
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.3",
- "@babel/types": "^7.23.3",
+ "@babel/code-frame": "^7.26.0",
+ "@babel/generator": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.0",
+ "@babel/parser": "^7.26.0",
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.26.0",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -10547,9 +10555,9 @@
"type": "opencollective",
"url": "https://opencollective.com/babel"
},
- "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz",
- "version": "7.23.3"
+ "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
+ "version": "7.26.0"
},
"node_modules/@babel/core/node_modules/convert-source-map": {
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
@@ -10583,28 +10591,29 @@
},
"node_modules/@babel/generator": {
"dependencies": {
- "@babel/types": "^7.24.9",
+ "@babel/parser": "^7.26.5",
+ "@babel/types": "^7.26.5",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
+ "jsesc": "^3.0.2"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz",
- "version": "7.24.10"
+ "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/helper-annotate-as-pure": {
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "version": "7.22.5"
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
"dependencies": {
@@ -10619,56 +10628,54 @@
},
"node_modules/@babel/helper-compilation-targets": {
"dependencies": {
- "@babel/compat-data": "^7.22.9",
- "@babel/helper-validator-option": "^7.22.15",
- "browserslist": "^4.21.9",
+ "@babel/compat-data": "^7.26.5",
+ "@babel/helper-validator-option": "^7.25.9",
+ "browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
- "version": "7.22.15"
+ "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/helper-create-class-features-plugin": {
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-member-expression-to-functions": "^7.23.0",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.20",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==",
+ "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
"peerDependencies": {
"@babel/core": "^7.0.0"
},
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz",
- "version": "7.23.6"
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "regexpu-core": "^5.3.1",
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "regexpu-core": "^6.2.0",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==",
+ "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==",
"peerDependencies": {
"@babel/core": "^7.0.0"
},
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz",
- "version": "7.22.9"
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz",
+ "version": "7.26.3"
},
"node_modules/@babel/helper-define-polyfill-provider": {
"dependencies": {
@@ -10685,29 +10692,6 @@
"resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz",
"version": "0.4.2"
},
- "node_modules/@babel/helper-environment-visitor": {
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
- "version": "7.24.7"
- },
- "node_modules/@babel/helper-function-name": {
- "dependencies": {
- "@babel/template": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
- "version": "7.24.7"
- },
"node_modules/@babel/helper-hoist-variables": {
"dependencies": {
"@babel/types": "^7.24.7"
@@ -10721,118 +10705,106 @@
},
"node_modules/@babel/helper-member-expression-to-functions": {
"dependencies": {
- "@babel/traverse": "^7.24.8",
- "@babel/types": "^7.24.8"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
- "version": "7.24.8"
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-module-imports": {
"dependencies": {
- "@babel/types": "^7.22.15"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "version": "7.22.15"
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-module-transforms": {
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.20"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
"peerDependencies": {
"@babel/core": "^7.0.0"
},
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "version": "7.23.3"
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "version": "7.26.0"
},
"node_modules/@babel/helper-optimise-call-expression": {
"dependencies": {
- "@babel/types": "^7.24.7"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
- "version": "7.24.7"
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-plugin-utils": {
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
- "version": "7.24.8"
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/helper-remap-async-to-generator": {
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-wrap-function": "^7.22.9"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-wrap-function": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==",
+ "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
"peerDependencies": {
"@babel/core": "^7.0.0"
},
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz",
- "version": "7.22.9"
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-replace-supers": {
"dependencies": {
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.7",
- "@babel/helper-optimise-call-expression": "^7.24.7"
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==",
+ "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
"peerDependencies": {
"@babel/core": "^7.0.0"
},
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz",
- "version": "7.24.7"
- },
- "node_modules/@babel/helper-simple-access": {
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
"dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
- "version": "7.24.7"
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-split-export-declaration": {
"dependencies": {
@@ -10849,76 +10821,64 @@
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
- "version": "7.24.8"
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-validator-identifier": {
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "version": "7.24.7"
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-validator-option": {
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
- "version": "7.24.8"
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helper-wrap-function": {
"dependencies": {
- "@babel/helper-function-name": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/types": "^7.22.10"
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz",
- "version": "7.22.10"
+ "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/helpers": {
"dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.6",
- "@babel/types": "^7.23.6"
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.0"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz",
- "version": "7.23.6"
- },
- "node_modules/@babel/highlight": {
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.24.7",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
- "version": "7.24.7"
+ "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
+ "version": "7.26.0"
},
"node_modules/@babel/parser": {
"bin": {
"parser": "bin/babel-parser.js"
},
+ "dependencies": {
+ "@babel/types": "^7.26.5"
+ },
"engines": {
"node": ">=6.0.0"
},
- "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz",
- "version": "7.24.8"
+ "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"dependencies": {
@@ -10950,25 +10910,6 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz",
"version": "7.22.5"
},
- "node_modules/@babel/plugin-proposal-async-generator-functions": {
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- },
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.",
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
- "peer": true,
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- },
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
- "version": "7.20.7"
- },
"node_modules/@babel/plugin-proposal-class-properties": {
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.18.6",
@@ -11004,36 +10945,18 @@
},
"node_modules/@babel/plugin-proposal-export-default-from": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-export-default-from": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==",
+ "integrity": "sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==",
"peer": true,
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz",
- "version": "7.24.7"
- },
- "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.",
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
- "peer": true,
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- },
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
- "version": "7.20.7"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
"dependencies": {
@@ -11065,43 +10988,6 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
"version": "7.18.6"
},
- "node_modules/@babel/plugin-proposal-object-rest-spread": {
- "dependencies": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.20.7"
- },
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.",
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
- "peer": true,
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- },
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
- "version": "7.20.7"
- },
- "node_modules/@babel/plugin-proposal-optional-catch-binding": {
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.",
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
- "peer": true,
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- },
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
- "version": "7.18.6"
- },
"node_modules/@babel/plugin-proposal-optional-chaining": {
"dependencies": {
"@babel/helper-plugin-utils": "^7.20.2",
@@ -11225,18 +11111,18 @@
},
"node_modules/@babel/plugin-syntax-export-default-from": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==",
+ "integrity": "sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==",
"peer": true,
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz",
- "version": "7.24.7"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-syntax-export-namespace-from": {
"dependencies": {
@@ -11251,17 +11137,17 @@
},
"node_modules/@babel/plugin-syntax-flow": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==",
+ "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz",
- "version": "7.24.7"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz",
+ "version": "7.26.0"
},
"node_modules/@babel/plugin-syntax-import-assertions": {
"dependencies": {
@@ -11315,17 +11201,17 @@
},
"node_modules/@babel/plugin-syntax-jsx": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
- "version": "7.23.3"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-syntax-logical-assignment-operators": {
"dependencies": {
@@ -11423,17 +11309,17 @@
},
"node_modules/@babel/plugin-syntax-typescript": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
- "version": "7.23.3"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-syntax-unicode-sets-regex": {
"dependencies": {
@@ -11452,50 +11338,49 @@
},
"node_modules/@babel/plugin-transform-arrow-functions": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
+ "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.9",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==",
+ "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz",
- "version": "7.22.11"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-async-to-generator": {
"dependencies": {
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
+ "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
"dependencies": {
@@ -11513,32 +11398,32 @@
},
"node_modules/@babel/plugin-transform-block-scoping": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==",
+ "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz",
- "version": "7.22.10"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-class-properties": {
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
+ "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-class-static-block": {
"dependencies": {
@@ -11558,54 +11443,51 @@
},
"node_modules/@babel/plugin-transform-classes": {
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
"globals": "^11.1.0"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==",
+ "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz",
- "version": "7.22.6"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-computed-properties": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/template": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/template": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
+ "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-destructuring": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==",
+ "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz",
- "version": "7.22.10"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-dotall-regex": {
"dependencies": {
@@ -11683,48 +11565,49 @@
},
"node_modules/@babel/plugin-transform-flow-strip-types": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-flow": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/plugin-syntax-flow": "^7.26.0"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==",
+ "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz",
- "version": "7.24.7"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/plugin-transform-for-of": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==",
+ "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-function-name": {
"dependencies": {
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
+ "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-json-strings": {
"dependencies": {
@@ -11743,32 +11626,31 @@
},
"node_modules/@babel/plugin-transform-literals": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
+ "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==",
+ "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz",
- "version": "7.22.11"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
"dependencies": {
@@ -11801,19 +11683,18 @@
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
"dependencies": {
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5"
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
+ "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
- "version": "7.23.3"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
+ "version": "7.26.3"
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
"dependencies": {
@@ -11849,18 +11730,18 @@
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+ "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
"peerDependencies": {
"@babel/core": "^7.0.0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-new-target": {
"dependencies": {
@@ -11878,51 +11759,47 @@
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==",
+ "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz",
- "version": "7.22.11"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz",
+ "version": "7.26.6"
},
"node_modules/@babel/plugin-transform-numeric-separator": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==",
+ "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz",
- "version": "7.22.11"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
"dependencies": {
- "@babel/compat-data": "^7.22.9",
- "@babel/helper-compilation-targets": "^7.22.10",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.22.5"
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==",
+ "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz",
- "version": "7.22.11"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-object-super": {
"dependencies": {
@@ -11941,80 +11818,77 @@
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==",
+ "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz",
- "version": "7.22.11"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-optional-chaining": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==",
+ "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz",
- "version": "7.23.4"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-parameters": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
+ "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-private-methods": {
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
+ "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.11",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==",
+ "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz",
- "version": "7.22.11"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-property-literals": {
"dependencies": {
@@ -12046,35 +11920,35 @@
},
"node_modules/@babel/plugin-transform-react-display-name": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==",
+ "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-react-jsx": {
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-jsx": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==",
+ "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-react-jsx-development": {
"dependencies": {
@@ -12092,33 +11966,33 @@
},
"node_modules/@babel/plugin-transform-react-jsx-self": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
+ "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
"peer": true,
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
- "version": "7.24.7"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-react-jsx-source": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
+ "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
"peer": true,
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
- "version": "7.24.7"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-react-pure-annotations": {
"dependencies": {
@@ -12137,18 +12011,18 @@
},
"node_modules/@babel/plugin-transform-regenerator": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.25.9",
"regenerator-transform": "^0.15.2"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==",
+ "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz",
- "version": "7.22.10"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-reserved-words": {
"dependencies": {
@@ -12166,65 +12040,103 @@
},
"node_modules/@babel/plugin-transform-runtime": {
"dependencies": {
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "babel-plugin-polyfill-corejs2": "^0.4.5",
- "babel-plugin-polyfill-corejs3": "^0.8.3",
- "babel-plugin-polyfill-regenerator": "^0.5.2",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
"semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA==",
+ "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.10.tgz",
- "version": "7.22.10"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz",
+ "version": "7.25.9"
+ },
+ "node_modules/@babel/plugin-transform-runtime/node_modules/@babel/helper-define-polyfill-provider": {
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ },
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
+ "version": "0.6.3"
+ },
+ "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": {
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ },
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "version": "0.10.6"
+ },
+ "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-regenerator": {
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.3"
+ },
+ "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==",
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ },
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz",
+ "version": "0.6.3"
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
+ "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-spread": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
+ "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-sticky-regex": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
+ "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-template-literals": {
"dependencies": {
@@ -12256,67 +12168,21 @@
},
"node_modules/@babel/plugin-transform-typescript": {
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-create-class-features-plugin": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/plugin-syntax-typescript": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==",
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- },
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.8.tgz",
- "version": "7.24.8"
- },
- "node_modules/@babel/plugin-transform-typescript/node_modules/@babel/helper-annotate-as-pure": {
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
- "version": "7.24.7"
- },
- "node_modules/@babel/plugin-transform-typescript/node_modules/@babel/helper-create-class-features-plugin": {
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-function-name": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/helper-split-export-declaration": "^7.24.7",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==",
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- },
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz",
- "version": "7.24.8"
- },
- "node_modules/@babel/plugin-transform-typescript/node_modules/@babel/plugin-syntax-typescript": {
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-syntax-typescript": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==",
+ "integrity": "sha512-GJhPO0y8SD5EYVCy2Zr+9dSZcEgaSmq5BLR0Oc25TOEhC+ba49vUAGZFjy8v79z9E1mdldq4x9d1xgh4L1d5dQ==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz",
- "version": "7.24.7"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
"dependencies": {
@@ -12349,18 +12215,18 @@
},
"node_modules/@babel/plugin-transform-unicode-regex": {
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
+ "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
- "version": "7.22.5"
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
"dependencies": {
@@ -12483,20 +12349,20 @@
},
"node_modules/@babel/preset-flow": {
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-validator-option": "^7.24.7",
- "@babel/plugin-transform-flow-strip-types": "^7.24.7"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-transform-flow-strip-types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==",
+ "integrity": "sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==",
"peer": true,
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz",
- "version": "7.24.7"
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/preset-modules": {
"dependencies": {
@@ -12559,13 +12425,13 @@
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==",
+ "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==",
"peer": true,
"peerDependencies": {
"@babel/core": "^7.0.0-0"
},
- "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz",
- "version": "7.24.6"
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/register/node_modules/make-dir": {
"dependencies": {
@@ -12608,11 +12474,6 @@
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
"version": "0.5.21"
},
- "node_modules/@babel/regjsgen": {
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "version": "0.8.0"
- },
"node_modules/@babel/runtime": {
"dependencies": {
"regenerator-runtime": "^0.14.0"
@@ -12620,55 +12481,70 @@
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
- "version": "7.23.2"
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "version": "7.26.0"
},
"node_modules/@babel/template": {
"dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/parser": "^7.24.7",
- "@babel/types": "^7.24.7"
+ "@babel/code-frame": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
- "version": "7.24.7"
+ "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+ "version": "7.25.9"
},
"node_modules/@babel/traverse": {
"dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.24.8",
- "@babel/helper-environment-visitor": "^7.24.7",
- "@babel/helper-function-name": "^7.24.7",
- "@babel/helper-hoist-variables": "^7.24.7",
- "@babel/helper-split-export-declaration": "^7.24.7",
- "@babel/parser": "^7.24.8",
- "@babel/types": "^7.24.8",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.5",
+ "@babel/parser": "^7.26.5",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.5",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz",
+ "version": "7.26.5"
+ },
+ "node_modules/@babel/traverse--for-generate-function-map": {
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.5",
+ "@babel/parser": "^7.26.5",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.5",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz",
- "version": "7.24.8"
+ "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==",
+ "name": "@babel/traverse",
+ "peer": true,
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@babel/types": {
"dependencies": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "to-fast-properties": "^2.0.0"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz",
- "version": "7.24.9"
+ "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz",
+ "version": "7.26.5"
},
"node_modules/@bcoe/v8-coverage": {
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
@@ -13289,21 +13165,6 @@
"resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.1.0.tgz",
"version": "5.1.0"
},
- "node_modules/@hapi/hoek": {
- "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
- "version": "9.3.0"
- },
- "node_modules/@hapi/topo": {
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
- },
- "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
- "version": "5.1.0"
- },
"node_modules/@humanwhocodes/config-array": {
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
@@ -13963,28 +13824,26 @@
"convert-source-map": "^2.0.0",
"fast-json-stable-stringify": "^2.1.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.6.4",
+ "jest-haste-map": "^29.7.0",
"jest-regex-util": "^29.6.3",
- "jest-util": "^29.6.3",
+ "jest-util": "^29.7.0",
"micromatch": "^4.0.4",
"pirates": "^4.0.4",
"slash": "^3.0.0",
"write-file-atomic": "^4.0.2"
},
- "dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==",
+ "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz",
- "version": "29.6.4"
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
+ "version": "29.7.0"
},
"node_modules/@jest/transform/node_modules/ansi-styles": {
"dependencies": {
"color-convert": "^2.0.1"
},
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -14001,7 +13860,6 @@
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -14017,7 +13875,6 @@
"dependencies": {
"color-name": "~1.1.4"
},
- "dev": true,
"engines": {
"node": ">=7.0.0"
},
@@ -14027,21 +13884,18 @@
"version": "2.0.1"
},
"node_modules/@jest/transform/node_modules/color-name": {
- "dev": true,
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"peer": true,
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"version": "1.1.4"
},
"node_modules/@jest/transform/node_modules/convert-source-map": {
- "dev": true,
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"peer": true,
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"version": "2.0.0"
},
"node_modules/@jest/transform/node_modules/has-flag": {
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -14054,7 +13908,6 @@
"dependencies": {
"has-flag": "^4.0.0"
},
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -15165,1399 +15018,400 @@
"@radix-ui/react-use-size": "1.0.0",
"@radix-ui/rect": "1.0.0"
},
- "integrity": "sha512-k2dDd+1Wl0XWAMs9ZvAxxYsB9sOsEhrFQV4CINd7IUZf0wfdye4OHen9siwxvZImbzhgVeKTJi68OQmPRvVdMg==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/core": {
- "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz",
- "version": "0.7.3"
- },
- "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/dom": {
- "dependencies": {
- "@floating-ui/core": "^0.7.3"
- },
- "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz",
- "version": "0.5.4"
- },
- "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/react-dom": {
- "dependencies": {
- "@floating-ui/dom": "^0.5.3",
- "use-isomorphic-layout-effect": "^1.1.1"
- },
- "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- },
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
- "version": "0.7.2"
- },
- "node_modules/@radix-ui/react-portal": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.0"
- },
- "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-presence": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.0",
- "@radix-ui/react-use-layout-effect": "1.0.0"
- },
- "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-primitive": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-slot": "1.0.0"
- },
- "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-roving-focus": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.0",
- "@radix-ui/react-collection": "1.0.0",
- "@radix-ui/react-compose-refs": "1.0.0",
- "@radix-ui/react-context": "1.0.0",
- "@radix-ui/react-direction": "1.0.0",
- "@radix-ui/react-id": "1.0.0",
- "@radix-ui/react-primitive": "1.0.0",
- "@radix-ui/react-use-callback-ref": "1.0.0",
- "@radix-ui/react-use-controllable-state": "1.0.0"
- },
- "integrity": "sha512-lHvO4MhvoWpeNbiJAoyDsEtbKqP2jkkdwsMVJ3kfqbkC71J/aXE6Th6gkZA1xHEqSku+t+UgoDjvE7Z3gsBpcg==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-slider": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/number": "1.0.0",
- "@radix-ui/primitive": "1.0.0",
- "@radix-ui/react-collection": "1.0.0",
- "@radix-ui/react-compose-refs": "1.0.0",
- "@radix-ui/react-context": "1.0.0",
- "@radix-ui/react-direction": "1.0.0",
- "@radix-ui/react-primitive": "1.0.0",
- "@radix-ui/react-use-controllable-state": "1.0.0",
- "@radix-ui/react-use-layout-effect": "1.0.0",
- "@radix-ui/react-use-previous": "1.0.0",
- "@radix-ui/react-use-size": "1.0.0"
- },
- "integrity": "sha512-LMZET7vn7HYwYSjsc9Jcen8Vn4cJXZZxQT7T+lGlqp+F+FofX+H86TBF2yDq+L51d99f1KLEsflTGBz9WRLSig==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-slot": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.0"
- },
- "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-tabs": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.0",
- "@radix-ui/react-context": "1.0.0",
- "@radix-ui/react-direction": "1.0.0",
- "@radix-ui/react-id": "1.0.0",
- "@radix-ui/react-presence": "1.0.0",
- "@radix-ui/react-primitive": "1.0.0",
- "@radix-ui/react-roving-focus": "1.0.0",
- "@radix-ui/react-use-controllable-state": "1.0.0"
- },
- "integrity": "sha512-oKUwEDsySVC0uuSEH7SHCVt1+ijmiDFAI9p+fHCtuZdqrRDKIFs09zp5nrmu4ggP6xqSx9lj1VSblnDH+n3IBA==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-use-callback-ref": {
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-use-controllable-state": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-callback-ref": "1.0.0"
- },
- "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-use-escape-keydown": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-callback-ref": "1.0.0"
- },
- "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-use-layout-effect": {
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-use-previous": {
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "integrity": "sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-use-rect": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/rect": "1.0.0"
- },
- "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/react-use-size": {
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-layout-effect": "1.0.0"
- },
- "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@radix-ui/rect": {
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==",
- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@react-native-community/cli": {
- "bin": {
- "rnc-cli": "build/bin.js"
- },
- "dependencies": {
- "@react-native-community/cli-clean": "13.6.9",
- "@react-native-community/cli-config": "13.6.9",
- "@react-native-community/cli-debugger-ui": "13.6.9",
- "@react-native-community/cli-doctor": "13.6.9",
- "@react-native-community/cli-hermes": "13.6.9",
- "@react-native-community/cli-server-api": "13.6.9",
- "@react-native-community/cli-tools": "13.6.9",
- "@react-native-community/cli-types": "13.6.9",
- "chalk": "^4.1.2",
- "commander": "^9.4.1",
- "deepmerge": "^4.3.0",
- "execa": "^5.0.0",
- "find-up": "^4.1.0",
- "fs-extra": "^8.1.0",
- "graceful-fs": "^4.1.3",
- "prompts": "^2.4.2",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=18"
- },
- "integrity": "sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-clean": {
- "dependencies": {
- "@react-native-community/cli-tools": "13.6.9",
- "chalk": "^4.1.2",
- "execa": "^5.0.0",
- "fast-glob": "^3.3.2"
- },
- "integrity": "sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": {
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- },
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
- },
- "node_modules/@react-native-community/cli-clean/node_modules/chalk": {
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- },
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
- },
- "node_modules/@react-native-community/cli-clean/node_modules/color-convert": {
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli-clean/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/@react-native-community/cli-clean/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
- },
- "node_modules/@react-native-community/cli-clean/node_modules/supports-color": {
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
- },
- "node_modules/@react-native-community/cli-config": {
- "dependencies": {
- "@react-native-community/cli-tools": "13.6.9",
- "chalk": "^4.1.2",
- "cosmiconfig": "^5.1.0",
- "deepmerge": "^4.3.0",
- "fast-glob": "^3.3.2",
- "joi": "^17.2.1"
- },
- "integrity": "sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": {
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- },
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
- },
- "node_modules/@react-native-community/cli-config/node_modules/argparse": {
- "dependencies": {
- "sprintf-js": "~1.0.2"
- },
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "version": "1.0.10"
- },
- "node_modules/@react-native-community/cli-config/node_modules/chalk": {
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- },
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
- },
- "node_modules/@react-native-community/cli-config/node_modules/color-convert": {
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli-config/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/@react-native-community/cli-config/node_modules/cosmiconfig": {
- "dependencies": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- },
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "version": "5.2.1"
- },
- "node_modules/@react-native-community/cli-config/node_modules/deepmerge": {
- "engines": {
- "node": ">=0.10.0"
- },
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "version": "4.3.1"
- },
- "node_modules/@react-native-community/cli-config/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
- },
- "node_modules/@react-native-community/cli-config/node_modules/import-fresh": {
- "dependencies": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- },
- "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "version": "2.0.0"
- },
- "node_modules/@react-native-community/cli-config/node_modules/js-yaml": {
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- },
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "version": "3.14.1"
- },
- "node_modules/@react-native-community/cli-config/node_modules/parse-json": {
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- },
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "version": "4.0.0"
- },
- "node_modules/@react-native-community/cli-config/node_modules/resolve-from": {
- "engines": {
- "node": ">=4"
- },
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "version": "3.0.0"
- },
- "node_modules/@react-native-community/cli-config/node_modules/supports-color": {
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
- },
- "node_modules/@react-native-community/cli-debugger-ui": {
- "dependencies": {
- "serve-static": "^1.13.1"
- },
- "integrity": "sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-doctor": {
- "dependencies": {
- "@react-native-community/cli-config": "13.6.9",
- "@react-native-community/cli-platform-android": "13.6.9",
- "@react-native-community/cli-platform-apple": "13.6.9",
- "@react-native-community/cli-platform-ios": "13.6.9",
- "@react-native-community/cli-tools": "13.6.9",
- "chalk": "^4.1.2",
- "command-exists": "^1.2.8",
- "deepmerge": "^4.3.0",
- "envinfo": "^7.10.0",
- "execa": "^5.0.0",
- "hermes-profile-transformer": "^0.0.6",
- "node-stream-zip": "^1.9.1",
- "ora": "^5.4.1",
- "semver": "^7.5.2",
- "strip-ansi": "^5.2.0",
- "wcwidth": "^1.0.1",
- "yaml": "^2.2.1"
- },
- "integrity": "sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": {
- "engines": {
- "node": ">=6"
- },
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "version": "4.1.1"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": {
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- },
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/chalk": {
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- },
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": {
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/deepmerge": {
- "engines": {
- "node": ">=0.10.0"
- },
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "version": "4.3.1"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": {
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "version": "5.2.0"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": {
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
- },
- "node_modules/@react-native-community/cli-hermes": {
- "dependencies": {
- "@react-native-community/cli-platform-android": "13.6.9",
- "@react-native-community/cli-tools": "13.6.9",
- "chalk": "^4.1.2",
- "hermes-profile-transformer": "^0.0.6"
- },
- "integrity": "sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": {
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- },
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/chalk": {
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- },
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": {
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": {
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
- },
- "node_modules/@react-native-community/cli-platform-android": {
- "dependencies": {
- "@react-native-community/cli-tools": "13.6.9",
- "chalk": "^4.1.2",
- "execa": "^5.0.0",
- "fast-glob": "^3.3.2",
- "fast-xml-parser": "^4.2.4",
- "logkitty": "^0.7.1"
- },
- "integrity": "sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": {
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- },
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": {
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- },
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": {
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": {
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
- },
- "node_modules/@react-native-community/cli-platform-apple": {
- "dependencies": {
- "@react-native-community/cli-tools": "13.6.9",
- "chalk": "^4.1.2",
- "execa": "^5.0.0",
- "fast-glob": "^3.3.2",
- "fast-xml-parser": "^4.0.12",
- "ora": "^5.4.1"
- },
- "integrity": "sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-platform-apple/node_modules/ansi-styles": {
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- },
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
- },
- "node_modules/@react-native-community/cli-platform-apple/node_modules/chalk": {
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- },
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
- },
- "node_modules/@react-native-community/cli-platform-apple/node_modules/color-convert": {
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli-platform-apple/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/@react-native-community/cli-platform-apple/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
- },
- "node_modules/@react-native-community/cli-platform-apple/node_modules/supports-color": {
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
- },
- "node_modules/@react-native-community/cli-platform-ios": {
- "dependencies": {
- "@react-native-community/cli-platform-apple": "13.6.9"
- },
- "integrity": "sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-server-api": {
- "dependencies": {
- "@react-native-community/cli-debugger-ui": "13.6.9",
- "@react-native-community/cli-tools": "13.6.9",
- "compression": "^1.7.1",
- "connect": "^3.6.5",
- "errorhandler": "^1.5.1",
- "nocache": "^3.0.1",
- "pretty-format": "^26.6.2",
- "serve-static": "^1.13.1",
- "ws": "^6.2.2"
- },
- "integrity": "sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.9.tgz",
- "version": "13.6.9"
- },
- "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": {
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "version": "26.6.2"
- },
- "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": {
- "dependencies": {
- "@types/yargs-parser": "*"
- },
- "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz",
- "version": "15.0.19"
- },
- "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": {
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- },
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
- },
- "node_modules/@react-native-community/cli-server-api/node_modules/chalk": {
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- },
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
- },
- "node_modules/@react-native-community/cli-server-api/node_modules/color-convert": {
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli-server-api/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/@react-native-community/cli-server-api/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
- },
- "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": {
- "dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- },
- "engines": {
- "node": ">= 10"
+ "integrity": "sha512-k2dDd+1Wl0XWAMs9ZvAxxYsB9sOsEhrFQV4CINd7IUZf0wfdye4OHen9siwxvZImbzhgVeKTJi68OQmPRvVdMg==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "version": "26.6.2"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli-server-api/node_modules/react-is": {
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "version": "17.0.2"
+ "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/core": {
+ "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz",
+ "version": "0.7.3"
},
- "node_modules/@react-native-community/cli-server-api/node_modules/supports-color": {
+ "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/dom": {
"dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "@floating-ui/core": "^0.7.3"
},
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
+ "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz",
+ "version": "0.5.4"
},
- "node_modules/@react-native-community/cli-tools": {
+ "node_modules/@radix-ui/react-popper/node_modules/@floating-ui/react-dom": {
"dependencies": {
- "appdirsjs": "^1.2.4",
- "chalk": "^4.1.2",
- "execa": "^5.0.0",
- "find-up": "^5.0.0",
- "mime": "^2.4.1",
- "node-fetch": "^2.6.0",
- "open": "^6.2.0",
- "ora": "^5.4.1",
- "semver": "^7.5.2",
- "shell-quote": "^1.7.3",
- "sudo-prompt": "^9.0.0"
+ "@floating-ui/dom": "^0.5.3",
+ "use-isomorphic-layout-effect": "^1.1.1"
},
- "integrity": "sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.9.tgz",
- "version": "13.6.9"
+ "integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ },
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
+ "version": "0.7.2"
},
- "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": {
+ "node_modules/@radix-ui/react-portal": {
"dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-primitive": "1.0.0"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli-tools/node_modules/chalk": {
+ "node_modules/@radix-ui/react-presence": {
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli-tools/node_modules/color-convert": {
+ "node_modules/@radix-ui/react-primitive": {
"dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-slot": "1.0.0"
},
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli-tools/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/@react-native-community/cli-tools/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
+ "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli-tools/node_modules/supports-color": {
+ "node_modules/@radix-ui/react-roving-focus": {
"dependencies": {
- "has-flag": "^4.0.0"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-callback-ref": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
},
- "engines": {
- "node": ">=8"
+ "integrity": "sha512-lHvO4MhvoWpeNbiJAoyDsEtbKqP2jkkdwsMVJ3kfqbkC71J/aXE6Th6gkZA1xHEqSku+t+UgoDjvE7Z3gsBpcg==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli-types": {
+ "node_modules/@radix-ui/react-slider": {
"dependencies": {
- "joi": "^17.2.1"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/number": "1.0.0",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-collection": "1.0.0",
+ "@radix-ui/react-compose-refs": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0",
+ "@radix-ui/react-use-layout-effect": "1.0.0",
+ "@radix-ui/react-use-previous": "1.0.0",
+ "@radix-ui/react-use-size": "1.0.0"
},
- "integrity": "sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.9.tgz",
- "version": "13.6.9"
+ "integrity": "sha512-LMZET7vn7HYwYSjsc9Jcen8Vn4cJXZZxQT7T+lGlqp+F+FofX+H86TBF2yDq+L51d99f1KLEsflTGBz9WRLSig==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
+ },
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/ansi-styles": {
+ "node_modules/@radix-ui/react-slot": {
"dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-compose-refs": "1.0.0"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/chalk": {
+ "node_modules/@radix-ui/react-tabs": {
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/primitive": "1.0.0",
+ "@radix-ui/react-context": "1.0.0",
+ "@radix-ui/react-direction": "1.0.0",
+ "@radix-ui/react-id": "1.0.0",
+ "@radix-ui/react-presence": "1.0.0",
+ "@radix-ui/react-primitive": "1.0.0",
+ "@radix-ui/react-roving-focus": "1.0.0",
+ "@radix-ui/react-use-controllable-state": "1.0.0"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "integrity": "sha512-oKUwEDsySVC0uuSEH7SHCVt1+ijmiDFAI9p+fHCtuZdqrRDKIFs09zp5nrmu4ggP6xqSx9lj1VSblnDH+n3IBA==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "version": "4.1.2"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/color-convert": {
+ "node_modules/@radix-ui/react-use-callback-ref": {
"dependencies": {
- "color-name": "~1.1.4"
+ "@babel/runtime": "^7.13.10"
},
- "engines": {
- "node": ">=7.0.0"
+ "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/@react-native-community/cli/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/deepmerge": {
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
},
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "version": "4.3.1"
+ "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/find-up": {
+ "node_modules/@radix-ui/react-use-escape-keydown": {
"dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-callback-ref": "1.0.0"
},
- "engines": {
- "node": ">=8"
+ "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "version": "4.1.0"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/has-flag": {
- "engines": {
- "node": ">=8"
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "dependencies": {
+ "@babel/runtime": "^7.13.10"
},
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "version": "4.0.0"
+ "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
+ },
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/locate-path": {
+ "node_modules/@radix-ui/react-use-previous": {
"dependencies": {
- "p-locate": "^4.1.0"
+ "@babel/runtime": "^7.13.10"
},
- "engines": {
- "node": ">=8"
+ "integrity": "sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "version": "5.0.0"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/p-limit": {
+ "node_modules/@radix-ui/react-use-rect": {
"dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/rect": "1.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "version": "2.3.0"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/p-locate": {
+ "node_modules/@radix-ui/react-use-size": {
"dependencies": {
- "p-limit": "^2.2.0"
+ "@babel/runtime": "^7.13.10",
+ "@radix-ui/react-use-layout-effect": "1.0.0"
},
- "engines": {
- "node": ">=8"
+ "integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
+ "peerDependencies": {
+ "react": "^16.8 || ^17.0 || ^18.0"
},
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "version": "4.1.0"
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
+ "version": "1.0.0"
},
- "node_modules/@react-native-community/cli/node_modules/supports-color": {
+ "node_modules/@radix-ui/rect": {
"dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "@babel/runtime": "^7.13.10"
},
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "version": "7.2.0"
+ "integrity": "sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz",
+ "version": "1.0.0"
},
"node_modules/@react-native/assets-registry": {
"engines": {
"node": ">=18"
},
- "integrity": "sha512-59YmIQxfGDw4aP9S/nAM+sjSFdW8fUP6fsqczCcXgL2YVEjyER9XCaUT0J1K+PdHep8pi05KUgIKUds8P3jbmA==",
+ "integrity": "sha512-YI8HoReYiIwdFQs+k9Q9qpFTnsyYikZxgs/UVtVbhKixXDQF6F9LLvj2naOx4cfV+RGybNKxwmDl1vUok/dRFQ==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/babel-plugin-codegen": {
"dependencies": {
- "@react-native/codegen": "0.74.85"
+ "@react-native/codegen": "0.76.6"
},
"engines": {
"node": ">=18"
},
- "integrity": "sha512-48TSDclRB5OMXiImiJkLxyCfRyLsqkCgI8buugCZzvXcYslfV7gCvcyFyQldtcOmerV+CK4RAj7QS4hmB5Mr8Q==",
+ "integrity": "sha512-yFC9I/aDBOBz3ZMlqKn2NY/mDUtCksUNZ7AQmBiTAeVTUP0ujEjE0hTOx5Qd+kok7A7hwZEX87HdSgjiJZfr5g==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/babel-preset": {
"dependencies": {
- "@babel/core": "^7.20.0",
- "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
- "@babel/plugin-proposal-class-properties": "^7.18.0",
- "@babel/plugin-proposal-export-default-from": "^7.0.0",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0",
- "@babel/plugin-proposal-numeric-separator": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.20.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-optional-chaining": "^7.20.0",
- "@babel/plugin-syntax-dynamic-import": "^7.8.0",
- "@babel/plugin-syntax-export-default-from": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.18.0",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-syntax-optional-chaining": "^7.0.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-async-to-generator": "^7.20.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.20.0",
- "@babel/plugin-transform-flow-strip-types": "^7.20.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-private-methods": "^7.22.5",
- "@babel/plugin-transform-private-property-in-object": "^7.22.11",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-react-jsx-self": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0",
- "@babel/plugin-transform-runtime": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-sticky-regex": "^7.0.0",
- "@babel/plugin-transform-typescript": "^7.5.0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0",
- "@babel/template": "^7.0.0",
- "@react-native/babel-plugin-codegen": "0.74.85",
+ "@babel/core": "^7.25.2",
+ "@babel/plugin-proposal-export-default-from": "^7.24.7",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-default-from": "^7.24.7",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.24.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.4",
+ "@babel/plugin-transform-async-to-generator": "^7.24.7",
+ "@babel/plugin-transform-block-scoping": "^7.25.0",
+ "@babel/plugin-transform-class-properties": "^7.25.4",
+ "@babel/plugin-transform-classes": "^7.25.4",
+ "@babel/plugin-transform-computed-properties": "^7.24.7",
+ "@babel/plugin-transform-destructuring": "^7.24.8",
+ "@babel/plugin-transform-flow-strip-types": "^7.25.2",
+ "@babel/plugin-transform-for-of": "^7.24.7",
+ "@babel/plugin-transform-function-name": "^7.25.1",
+ "@babel/plugin-transform-literals": "^7.25.2",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.8",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
+ "@babel/plugin-transform-numeric-separator": "^7.24.7",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.8",
+ "@babel/plugin-transform-parameters": "^7.24.7",
+ "@babel/plugin-transform-private-methods": "^7.24.7",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.7",
+ "@babel/plugin-transform-react-display-name": "^7.24.7",
+ "@babel/plugin-transform-react-jsx": "^7.25.2",
+ "@babel/plugin-transform-react-jsx-self": "^7.24.7",
+ "@babel/plugin-transform-react-jsx-source": "^7.24.7",
+ "@babel/plugin-transform-regenerator": "^7.24.7",
+ "@babel/plugin-transform-runtime": "^7.24.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.24.7",
+ "@babel/plugin-transform-spread": "^7.24.7",
+ "@babel/plugin-transform-sticky-regex": "^7.24.7",
+ "@babel/plugin-transform-typescript": "^7.25.2",
+ "@babel/plugin-transform-unicode-regex": "^7.24.7",
+ "@babel/template": "^7.25.0",
+ "@react-native/babel-plugin-codegen": "0.76.6",
+ "babel-plugin-syntax-hermes-parser": "^0.25.1",
"babel-plugin-transform-flow-enums": "^0.0.2",
"react-refresh": "^0.14.0"
},
"engines": {
"node": ">=18"
},
- "integrity": "sha512-yMHUlN8INbK5BBwiBuQMftdWkpm1IgCsoJTKcGD2OpSgZhwwm8RUSvGhdRMzB2w7bsqqBmaEMleGtW6aCR7B9w==",
+ "integrity": "sha512-ojlVWY6S/VE/nb9hIRetPMTsW9ZmGb2R3dnToEXAtQQDz41eHMHXbkw/k2h0THp6qhas25ruNvn3N5n2o+lBzg==",
"peer": true,
"peerDependencies": {
"@babel/core": "*"
},
- "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.6.tgz",
+ "version": "0.76.6"
+ },
+ "node_modules/@react-native/babel-preset/node_modules/babel-plugin-syntax-hermes-parser": {
+ "dependencies": {
+ "hermes-parser": "0.25.1"
+ },
+ "integrity": "sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==",
+ "peer": true,
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz",
+ "version": "0.25.1"
+ },
+ "node_modules/@react-native/babel-preset/node_modules/hermes-estree": {
+ "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
+ "peer": true,
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
+ "version": "0.25.1"
+ },
+ "node_modules/@react-native/babel-preset/node_modules/hermes-parser": {
+ "dependencies": {
+ "hermes-estree": "0.25.1"
+ },
+ "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
+ "peer": true,
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz",
+ "version": "0.25.1"
},
"node_modules/@react-native/codegen": {
"dependencies": {
- "@babel/parser": "^7.20.0",
+ "@babel/parser": "^7.25.3",
"glob": "^7.1.1",
- "hermes-parser": "0.19.1",
+ "hermes-parser": "0.23.1",
"invariant": "^2.2.4",
"jscodeshift": "^0.14.0",
"mkdirp": "^0.5.1",
- "nullthrows": "^1.1.1"
+ "nullthrows": "^1.1.1",
+ "yargs": "^17.6.2"
},
"engines": {
"node": ">=18"
},
- "integrity": "sha512-N7QwoS4Hq/uQmoH83Ewedy6D0M7xbQsOU3OMcQf0eY3ltQ7S2hd9/R4UTalQWRn1OUJfXR6OG12QJ4FStKgV6Q==",
+ "integrity": "sha512-BABb3e5G/+hyQYEYi0AODWh2km2d8ERoASZr6Hv90pVXdUHRYR+yxCatX7vSd9rnDUYndqRTzD0hZWAucPNAKg==",
"peer": true,
"peerDependencies": {
"@babel/preset-env": "^7.1.6"
},
- "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/community-cli-plugin": {
"dependencies": {
- "@react-native-community/cli-server-api": "13.6.9",
- "@react-native-community/cli-tools": "13.6.9",
- "@react-native/dev-middleware": "0.74.85",
- "@react-native/metro-babel-transformer": "0.74.85",
+ "@react-native/dev-middleware": "0.76.6",
+ "@react-native/metro-babel-transformer": "0.76.6",
"chalk": "^4.0.0",
"execa": "^5.1.1",
- "metro": "^0.80.3",
- "metro-config": "^0.80.3",
- "metro-core": "^0.80.3",
+ "invariant": "^2.2.4",
+ "metro": "^0.81.0",
+ "metro-config": "^0.81.0",
+ "metro-core": "^0.81.0",
"node-fetch": "^2.2.0",
- "querystring": "^0.2.1",
- "readline": "^1.3.0"
+ "readline": "^1.3.0",
+ "semver": "^7.1.3"
},
"engines": {
"node": ">=18"
},
- "integrity": "sha512-ODzND33eA2owAY3g9jgCdqB+BjAh8qJ7dvmSotXgrgDYr3MJMpd8gvHTIPe2fg4Kab+wk8uipRhrE0i0RYMwtQ==",
+ "integrity": "sha512-nETlc/+U5cESVluzzgN0OcVfcoMijGBaDWzOaJhoYUodcuqnqtu75XsSEc7yzlYjwNQG+vF83mu9CQGezruNMA==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.85.tgz",
- "version": "0.74.85"
+ "peerDependencies": {
+ "@react-native-community/cli-server-api": "*"
+ },
+ "peerDependenciesMeta": {
+ "@react-native-community/cli-server-api": {
+ "optional": true
+ }
+ },
+ "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": {
"dependencies": {
@@ -16617,16 +15471,6 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"version": "4.0.0"
},
- "node_modules/@react-native/community-cli-plugin/node_modules/querystring": {
- "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
- "engines": {
- "node": ">=0.4.x"
- },
- "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
- "version": "0.2.1"
- },
"node_modules/@react-native/community-cli-plugin/node_modules/supports-color": {
"dependencies": {
"has-flag": "^4.0.0"
@@ -16643,34 +15487,32 @@
"engines": {
"node": ">=18"
},
- "integrity": "sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==",
+ "integrity": "sha512-kP97xMQjiANi5/lmf8MakS7d8FTJl+BqYHQMqyvNiY+eeWyKnhqW2GL2v3eEUBAuyPBgJGivuuO4RvjZujduJg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/dev-middleware": {
"dependencies": {
"@isaacs/ttlcache": "^1.4.1",
- "@react-native/debugger-frontend": "0.74.85",
- "@rnx-kit/chromium-edge-launcher": "^1.0.0",
+ "@react-native/debugger-frontend": "0.76.6",
"chrome-launcher": "^0.15.2",
+ "chromium-edge-launcher": "^0.2.0",
"connect": "^3.6.5",
"debug": "^2.2.0",
- "node-fetch": "^2.2.0",
"nullthrows": "^1.1.1",
"open": "^7.0.3",
"selfsigned": "^2.4.1",
"serve-static": "^1.13.1",
- "temp-dir": "^2.0.0",
- "ws": "^6.2.2"
+ "ws": "^6.2.3"
},
"engines": {
"node": ">=18"
},
- "integrity": "sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==",
+ "integrity": "sha512-1bAyd2/X48Nzb45s5l2omM75vy764odx/UnDs4sJfFCuK+cupU4nRPgl0XWIqgdM/2+fbQ3E4QsVS/WIKTFxvQ==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/dev-middleware/node_modules/debug": {
"dependencies": {
@@ -16687,63 +15529,47 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"version": "2.0.0"
},
- "node_modules/@react-native/dev-middleware/node_modules/open": {
- "dependencies": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- },
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
- "version": "7.4.2"
- },
"node_modules/@react-native/gradle-plugin": {
"engines": {
"node": ">=18"
},
- "integrity": "sha512-1VQSLukJzaVMn1MYcs8Weo1nUW8xCas2XU1KuoV7OJPk6xPnEBFJmapmEGP5mWeEy7kcTXJmddEgy1wwW0tcig==",
+ "integrity": "sha512-sDzpf4eiynryoS6bpYCweGoxSmWgCSx9lzBoxIIW+S6siyGiTaffzZHWCm8mIn9UZsSPlEO37q62ggnR9Zu/OA==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/js-polyfills": {
"engines": {
"node": ">=18"
},
- "integrity": "sha512-gp4Rg9le3lVZeW7Cie6qLfekvRKZuhJ3LKgi1SFB4N154z1wIclypAJXVXgWBsy8JKJfTwRI+sffC4qZDlvzrg==",
+ "integrity": "sha512-cDD7FynxWYxHkErZzAJtzPGhJ13JdOgL+R0riTh0hCovOfIUz9ItffdLQv2nx48lnvMTQ+HZXMnGOZnsFCNzQw==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/metro-babel-transformer": {
"dependencies": {
- "@babel/core": "^7.20.0",
- "@react-native/babel-preset": "0.74.85",
- "hermes-parser": "0.19.1",
+ "@babel/core": "^7.25.2",
+ "@react-native/babel-preset": "0.76.6",
+ "hermes-parser": "0.23.1",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">=18"
},
- "integrity": "sha512-JIrXqEwhTvWPtGArgMptIPGstMdXQIkwSjKVYt+7VC4a9Pw1GurIWanIJheEW6ZuCVvTc0VZkwglFz9JVjzDjA==",
+ "integrity": "sha512-xSBi9jPliThu5HRSJvluqUlDOLLEmf34zY/U7RDDjEbZqC0ufPcPS7c5XsSg0GDPiXc7lgjBVesPZsKFkoIBgA==",
"peer": true,
"peerDependencies": {
"@babel/core": "*"
},
- "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/normalize-colors": {
- "integrity": "sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==",
+ "integrity": "sha512-1n4udXH2Cla31iA/8eLRdhFHpYUYK1NKWCn4m1Sr9L4SarWKAYuRFliK1fcLvPPALCFoFlWvn8I0ekdUOHMzDQ==",
"peer": true,
- "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-native/virtualized-lists": {
"dependencies": {
@@ -16753,7 +15579,7 @@
"engines": {
"node": ">=18"
},
- "integrity": "sha512-jx2Zw0qlZteoQ+0KxRc7s4drsljLBEP534FaNZ950e9+CN9nVkLsV6rigcTjDR8wjKMSBWhKf0C0C3egYz7Ehg==",
+ "integrity": "sha512-0HUWVwJbRq1BWFOu11eOWGTSmK9nMHhoMPyoI27wyWcl/nqUx7HOxMbRVq0DsTCyATSMPeF+vZ6o1REapcNWKw==",
"peer": true,
"peerDependencies": {
"@types/react": "^18.2.6",
@@ -16765,8 +15591,8 @@
"optional": true
}
},
- "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.85.tgz",
- "version": "0.74.85"
+ "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/@react-spring/animated": {
"dependencies": {
@@ -16835,44 +15661,6 @@
"resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.4.5.tgz",
"version": "9.4.5"
},
- "node_modules/@rnx-kit/chromium-edge-launcher": {
- "dependencies": {
- "@types/node": "^18.0.0",
- "escape-string-regexp": "^4.0.0",
- "is-wsl": "^2.2.0",
- "lighthouse-logger": "^1.0.0",
- "mkdirp": "^1.0.4",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": ">=14.15"
- },
- "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz",
- "version": "1.0.0"
- },
- "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/@types/node": {
- "dependencies": {
- "undici-types": "~5.26.4"
- },
- "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz",
- "version": "18.19.39"
- },
- "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/mkdirp": {
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- },
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "version": "1.0.4"
- },
"node_modules/@rollup/plugin-babel": {
"dependencies": {
"@babel/helper-module-imports": "^7.10.4",
@@ -17450,22 +16238,6 @@
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"version": "6.1.0"
},
- "node_modules/@serverless/dashboard-plugin/node_modules/open": {
- "dependencies": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- },
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- },
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
- "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
- "version": "7.4.2"
- },
"node_modules/@serverless/dashboard-plugin/node_modules/tslib": {
"dev": true,
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
@@ -17690,12 +16462,6 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"version": "4.0.0"
},
- "node_modules/@serverless/utils/node_modules/ms": {
- "dev": true,
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "version": "2.1.3"
- },
"node_modules/@serverless/utils/node_modules/open": {
"dependencies": {
"define-lazy-prop": "^2.0.0",
@@ -17728,27 +16494,6 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"version": "8.1.1"
},
- "node_modules/@sideway/address": {
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
- },
- "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
- "version": "4.1.5"
- },
- "node_modules/@sideway/formula": {
- "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
- "version": "3.0.1"
- },
- "node_modules/@sideway/pinpoint": {
- "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
- "version": "2.0.0"
- },
"node_modules/@sinclair/typebox": {
"integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
@@ -19538,9 +18283,9 @@
"version": "1.5.0"
},
"node_modules/@types/cookie": {
- "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz",
- "version": "0.3.3"
+ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
+ "version": "0.6.0"
},
"node_modules/@types/cors": {
"dependencies": {
@@ -19637,14 +18382,14 @@
"@types/eslint": "*",
"@types/estree": "*"
},
- "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
- "version": "3.7.4"
+ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+ "version": "3.7.7"
},
"node_modules/@types/estree": {
- "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
- "version": "1.0.1"
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "version": "1.0.6"
},
"node_modules/@types/express": {
"dependencies": {
@@ -19722,9 +18467,9 @@
"dependencies": {
"@types/node": "*"
},
- "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
- "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz",
- "version": "1.17.11"
+ "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz",
+ "version": "1.17.15"
},
"node_modules/@types/istanbul-lib-coverage": {
"integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
@@ -20043,9 +18788,9 @@
"version": "5.14.9"
},
"node_modules/@types/trusted-types": {
- "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==",
- "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz",
- "version": "2.0.3"
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "version": "2.0.7"
},
"node_modules/@types/unist": {
"integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==",
@@ -20308,134 +19053,134 @@
},
"node_modules/@webassemblyjs/ast": {
"dependencies": {
- "@webassemblyjs/helper-numbers": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ "@webassemblyjs/helper-numbers": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
},
- "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
+ "version": "1.14.1"
},
"node_modules/@webassemblyjs/floating-point-hex-parser": {
- "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
+ "version": "1.13.2"
},
"node_modules/@webassemblyjs/helper-api-error": {
- "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
+ "version": "1.13.2"
},
"node_modules/@webassemblyjs/helper-buffer": {
- "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
+ "version": "1.14.1"
},
"node_modules/@webassemblyjs/helper-numbers": {
"dependencies": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/floating-point-hex-parser": "1.13.2",
+ "@webassemblyjs/helper-api-error": "1.13.2",
"@xtuc/long": "4.2.2"
},
- "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
+ "version": "1.13.2"
},
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
- "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
+ "version": "1.13.2"
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/wasm-gen": "1.14.1"
},
- "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
+ "version": "1.14.1"
},
"node_modules/@webassemblyjs/ieee754": {
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
},
- "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
+ "version": "1.13.2"
},
"node_modules/@webassemblyjs/leb128": {
"dependencies": {
"@xtuc/long": "4.2.2"
},
- "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
+ "version": "1.13.2"
},
"node_modules/@webassemblyjs/utf8": {
- "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
+ "version": "1.13.2"
},
"node_modules/@webassemblyjs/wasm-edit": {
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/helper-wasm-section": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-opt": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6",
- "@webassemblyjs/wast-printer": "1.11.6"
- },
- "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
- "version": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/helper-wasm-section": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-opt": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1",
+ "@webassemblyjs/wast-printer": "1.14.1"
+ },
+ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
+ "version": "1.14.1"
},
"node_modules/@webassemblyjs/wasm-gen": {
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
},
- "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
+ "version": "1.14.1"
},
"node_modules/@webassemblyjs/wasm-opt": {
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-buffer": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.11.6",
- "@webassemblyjs/wasm-parser": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1"
},
- "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
+ "version": "1.14.1"
},
"node_modules/@webassemblyjs/wasm-parser": {
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
- "@webassemblyjs/helper-api-error": "1.11.6",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/ieee754": "1.11.6",
- "@webassemblyjs/leb128": "1.11.6",
- "@webassemblyjs/utf8": "1.11.6"
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
},
- "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
+ "version": "1.14.1"
},
"node_modules/@webassemblyjs/wast-printer": {
"dependencies": {
- "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/ast": "1.14.1",
"@xtuc/long": "4.2.2"
},
- "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
- "version": "1.11.6"
+ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
+ "version": "1.14.1"
},
"node_modules/@webpack-cli/configtest": {
"dev": true,
@@ -20548,9 +19293,9 @@
"engines": {
"node": ">=0.4.0"
},
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "version": "8.10.0"
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "version": "8.14.0"
},
"node_modules/acorn-globals": {
"dependencies": {
@@ -20572,14 +19317,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"version": "7.4.1"
},
- "node_modules/acorn-import-assertions": {
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
- "peerDependencies": {
- "acorn": "^8"
- },
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "version": "1.9.0"
- },
"node_modules/acorn-jsx": {
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"peerDependencies": {
@@ -20686,9 +19423,9 @@
"isomorphic-unfetch": "^3.0.0",
"js-cookie": "^2.2.1"
},
- "integrity": "sha512-AOROAQHQYvXYnhzhB9L1cZdz+linq/xaPTBfXhvXsx1tyhbbzmA7HX8Ap3mKBPsjsG8UWfzDhdRCb7hmH3S14A==",
- "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.13.tgz",
- "version": "6.3.13"
+ "integrity": "sha512-nxN8L5AAwLIsgQKyKMOsNwr5xeY7+fccv+A/ALiYxmGiM341XX0dcoMuM+LlJmzfIfuPmTrXSehhTunTTQFAow==",
+ "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.14.tgz",
+ "version": "6.3.14"
},
"node_modules/anser": {
"integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
@@ -20710,38 +19447,6 @@
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
"version": "4.3.2"
},
- "node_modules/ansi-fragments": {
- "dependencies": {
- "colorette": "^1.0.7",
- "slice-ansi": "^2.0.0",
- "strip-ansi": "^5.0.0"
- },
- "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
- "version": "0.2.1"
- },
- "node_modules/ansi-fragments/node_modules/ansi-regex": {
- "engines": {
- "node": ">=6"
- },
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "version": "4.1.1"
- },
- "node_modules/ansi-fragments/node_modules/strip-ansi": {
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "version": "5.2.0"
- },
"node_modules/ansi-html-community": {
"bin": {
"ansi-html": "bin/ansi-html"
@@ -20765,6 +19470,7 @@
"dependencies": {
"color-convert": "^1.9.0"
},
+ "dev": true,
"engines": {
"node": ">=4"
},
@@ -20789,12 +19495,6 @@
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"version": "3.1.3"
},
- "node_modules/appdirsjs": {
- "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz",
- "version": "1.2.7"
- },
"node_modules/archive-type": {
"dependencies": {
"file-type": "^4.2.0"
@@ -21105,15 +19805,6 @@
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
"version": "0.0.7"
},
- "node_modules/astral-regex": {
- "engines": {
- "node": ">=4"
- },
- "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
- "version": "1.0.0"
- },
"node_modules/async": {
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
@@ -21206,23 +19897,23 @@
},
"node_modules/aws-amplify": {
"dependencies": {
- "@aws-amplify/analytics": "6.5.12",
- "@aws-amplify/api": "5.4.12",
- "@aws-amplify/auth": "5.6.12",
- "@aws-amplify/cache": "5.1.18",
- "@aws-amplify/core": "5.8.12",
- "@aws-amplify/datastore": "4.7.12",
- "@aws-amplify/geo": "2.3.12",
- "@aws-amplify/interactions": "5.2.18",
- "@aws-amplify/notifications": "1.6.13",
- "@aws-amplify/predictions": "5.5.12",
- "@aws-amplify/pubsub": "5.5.12",
- "@aws-amplify/storage": "5.9.12",
+ "@aws-amplify/analytics": "6.5.14",
+ "@aws-amplify/api": "5.4.16",
+ "@aws-amplify/auth": "5.6.15",
+ "@aws-amplify/cache": "5.1.20",
+ "@aws-amplify/core": "5.8.14",
+ "@aws-amplify/datastore": "4.7.16",
+ "@aws-amplify/geo": "2.3.14",
+ "@aws-amplify/interactions": "5.2.21",
+ "@aws-amplify/notifications": "1.6.16",
+ "@aws-amplify/predictions": "5.5.17",
+ "@aws-amplify/pubsub": "5.6.2",
+ "@aws-amplify/storage": "5.9.16",
"tslib": "^2.0.0"
},
- "integrity": "sha512-/Sbgow1Zfe5RDnKyVlNZblaDuphz2g7IPBF6w6NKnM1JfuVCREHb5FwKUPr5RzfH8JAdCh/OFiCqhLDk2wo7dw==",
- "resolved": "https://registry.npmjs.org/aws-amplify/-/aws-amplify-5.3.19.tgz",
- "version": "5.3.19"
+ "integrity": "sha512-L4impLEBZKwNWRuM8jyfV4IUkGlh0ayLM1yRabd/Gm50leY8VSUbq5eXYhHzZpE2xcuqqIhuySo6Ui/y0gZ/iQ==",
+ "resolved": "https://registry.npmjs.org/aws-amplify/-/aws-amplify-5.3.27.tgz",
+ "version": "5.3.27"
},
"node_modules/aws-sdk": {
"dependencies": {
@@ -21290,9 +19981,9 @@
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
},
- "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
- "version": "1.7.2"
+ "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
+ "version": "1.7.9"
},
"node_modules/axios/node_modules/form-data": {
"dependencies": {
@@ -21326,7 +20017,7 @@
},
"node_modules/babel-jest": {
"dependencies": {
- "@jest/transform": "^29.6.4",
+ "@jest/transform": "^29.7.0",
"@types/babel__core": "^7.1.14",
"babel-plugin-istanbul": "^6.1.1",
"babel-preset-jest": "^29.6.3",
@@ -21334,23 +20025,21 @@
"graceful-fs": "^4.2.9",
"slash": "^3.0.0"
},
- "dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==",
+ "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
"peer": true,
"peerDependencies": {
"@babel/core": "^7.8.0"
},
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz",
- "version": "29.6.4"
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
+ "version": "29.7.0"
},
"node_modules/babel-jest/node_modules/ansi-styles": {
"dependencies": {
"color-convert": "^2.0.1"
},
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -21367,7 +20056,6 @@
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -21383,7 +20071,6 @@
"dependencies": {
"color-name": "~1.1.4"
},
- "dev": true,
"engines": {
"node": ">=7.0.0"
},
@@ -21393,14 +20080,12 @@
"version": "2.0.1"
},
"node_modules/babel-jest/node_modules/color-name": {
- "dev": true,
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"peer": true,
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"version": "1.1.4"
},
"node_modules/babel-jest/node_modules/has-flag": {
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -21413,7 +20098,6 @@
"dependencies": {
"has-flag": "^4.0.0"
},
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -21580,7 +20264,6 @@
"@types/babel__core": "^7.1.14",
"@types/babel__traverse": "^7.0.6"
},
- "dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
@@ -21614,15 +20297,30 @@
"node_modules/babel-plugin-polyfill-corejs2": {
"dependencies": {
"@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.4.2",
+ "@babel/helper-define-polyfill-provider": "^0.6.3",
"semver": "^6.3.1"
},
- "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==",
+ "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==",
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ },
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz",
+ "version": "0.4.12"
+ },
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/@babel/helper-define-polyfill-provider": {
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
},
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz",
- "version": "0.4.5"
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
+ "version": "0.6.3"
},
"node_modules/babel-plugin-polyfill-corejs3": {
"dependencies": {
@@ -21647,6 +20345,15 @@
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz",
"version": "0.5.2"
},
+ "node_modules/babel-plugin-syntax-hermes-parser": {
+ "dependencies": {
+ "hermes-parser": "0.23.1"
+ },
+ "integrity": "sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==",
+ "peer": true,
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.23.1.tgz",
+ "version": "0.23.1"
+ },
"node_modules/babel-plugin-transform-flow-enums": {
"dependencies": {
"@babel/plugin-syntax-flow": "^7.12.1"
@@ -21688,7 +20395,6 @@
"babel-plugin-jest-hoist": "^29.6.3",
"babel-preset-current-node-syntax": "^1.0.0"
},
- "dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
@@ -21820,6 +20526,7 @@
"inherits": "^2.0.4",
"readable-stream": "^3.4.0"
},
+ "dev": true,
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"version": "4.1.0"
@@ -21829,6 +20536,7 @@
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
},
+ "dev": true,
"funding": [
{
"type": "github",
@@ -21862,7 +20570,7 @@
"http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
- "qs": "6.11.0",
+ "qs": "6.13.0",
"raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
@@ -21871,9 +20579,9 @@
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
},
- "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
- "version": "1.20.2"
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "version": "1.20.3"
},
"node_modules/body-parser/node_modules/bytes": {
"engines": {
@@ -21918,20 +20626,6 @@
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"version": "2.4.1"
},
- "node_modules/body-parser/node_modules/qs": {
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- },
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "version": "6.11.0"
- },
"node_modules/bonjour-service": {
"dependencies": {
"array-flatten": "^2.1.2",
@@ -21983,10 +20677,10 @@
"browserslist": "cli.js"
},
"dependencies": {
- "caniuse-lite": "^1.0.30001517",
- "electron-to-chromium": "^1.4.477",
- "node-releases": "^2.0.13",
- "update-browserslist-db": "^1.0.11"
+ "caniuse-lite": "^1.0.30001688",
+ "electron-to-chromium": "^1.5.73",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.1"
},
"engines": {
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
@@ -22005,9 +20699,9 @@
"url": "https://github.com/sponsors/ai"
}
],
- "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
- "version": "4.21.10"
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+ "version": "4.24.4"
},
"node_modules/bs-logger": {
"dependencies": {
@@ -22174,6 +20868,33 @@
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"version": "1.0.2"
},
+ "node_modules/call-bind-apply-helpers": {
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
+ "version": "1.0.1"
+ },
+ "node_modules/call-bound": {
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
+ "version": "1.0.3"
+ },
"node_modules/caller-callsite": {
"dependencies": {
"callsites": "^2.0.0"
@@ -22282,9 +21003,9 @@
"url": "https://github.com/sponsors/ai"
}
],
- "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz",
- "version": "1.0.30001524"
+ "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz",
+ "version": "1.0.30001692"
},
"node_modules/canvg": {
"dependencies": {
@@ -22335,6 +21056,7 @@
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
},
+ "dev": true,
"engines": {
"node": ">=4"
},
@@ -22343,6 +21065,7 @@
"version": "2.4.2"
},
"node_modules/chalk/node_modules/escape-string-regexp": {
+ "dev": true,
"engines": {
"node": ">=0.8.0"
},
@@ -22422,9 +21145,9 @@
"engines": {
"node": ">=4.8"
},
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "version": "6.0.5"
+ "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
+ "version": "6.0.6"
},
"node_modules/child-process-ext/node_modules/path-key": {
"dev": true,
@@ -22540,6 +21263,32 @@
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"version": "1.0.3"
},
+ "node_modules/chromium-edge-launcher": {
+ "dependencies": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0",
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==",
+ "peer": true,
+ "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz",
+ "version": "0.2.0"
+ },
+ "node_modules/chromium-edge-launcher/node_modules/mkdirp": {
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "peer": true,
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "version": "1.0.4"
+ },
"node_modules/ci-info": {
"engines": {
"node": ">=8"
@@ -22609,6 +21358,7 @@
"dependencies": {
"restore-cursor": "^3.1.0"
},
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -22635,6 +21385,7 @@
"version": "2.3.2"
},
"node_modules/cli-spinners": {
+ "dev": true,
"engines": {
"node": ">=6"
},
@@ -22696,6 +21447,7 @@
"version": "8.0.1"
},
"node_modules/clone": {
+ "dev": true,
"engines": {
"node": ">=0.8"
},
@@ -22754,11 +21506,13 @@
"dependencies": {
"color-name": "1.1.3"
},
+ "dev": true,
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"version": "1.9.3"
},
"node_modules/color-name": {
+ "dev": true,
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"version": "1.1.3"
@@ -22768,12 +21522,6 @@
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
"version": "2.9.3"
},
- "node_modules/colorette": {
- "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
- "version": "1.4.0"
- },
"node_modules/combined-stream": {
"dependencies": {
"delayed-stream": "~1.0.0"
@@ -22794,20 +21542,14 @@
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
"version": "2.0.3"
},
- "node_modules/command-exists": {
- "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
- "version": "1.2.9"
- },
"node_modules/commander": {
"engines": {
- "node": "^12.20.0 || >=14"
+ "node": ">=18"
},
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"peer": true,
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "version": "9.5.0"
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "version": "12.1.0"
},
"node_modules/common-path-prefix": {
"integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
@@ -23001,11 +21743,11 @@
},
"node_modules/cookie": {
"engines": {
- "node": ">= 0.6"
+ "node": ">=18"
},
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "version": "0.6.0"
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
+ "version": "1.0.2"
},
"node_modules/cookie-signature": {
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
@@ -23085,15 +21827,15 @@
},
"node_modules/core-js-compat": {
"dependencies": {
- "browserslist": "^4.21.10"
+ "browserslist": "^4.24.3"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
},
- "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz",
- "version": "3.32.1"
+ "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz",
+ "version": "3.40.0"
},
"node_modules/core-js-pure": {
"funding": {
@@ -23177,9 +21919,9 @@
"engines": {
"node": ">= 8"
},
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "version": "7.0.3"
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "version": "7.0.6"
},
"node_modules/crypto-random-string": {
"engines": {
@@ -23786,25 +22528,26 @@
"version": "3.1.3"
},
"node_modules/dayjs": {
+ "dev": true,
"integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
"version": "1.11.10"
},
"node_modules/debug": {
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
},
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "version": "4.3.4"
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "version": "4.4.0"
},
"node_modules/decamelize": {
"engines": {
@@ -24103,6 +22846,7 @@
"dependencies": {
"clone": "^1.0.2"
},
+ "dev": true,
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
},
@@ -24427,9 +23171,9 @@
"version": "4.3.1"
},
"node_modules/dompurify": {
- "integrity": "sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.5.tgz",
- "version": "3.0.5"
+ "integrity": "sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.8.tgz",
+ "version": "2.5.8"
},
"node_modules/domready": {
"integrity": "sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==",
@@ -24490,6 +23234,19 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"version": "16.13.1"
},
+ "node_modules/dunder-proto": {
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "version": "1.0.1"
+ },
"node_modules/duplexer": {
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -24525,9 +23282,9 @@
"version": "3.1.10"
},
"node_modules/electron-to-chromium": {
- "integrity": "sha512-cSMwIAd8yUh54VwitVRVvHK66QqHWE39C3DRj8SWiXitEpVSY3wNPD9y1pxQtLIi4w3UdzF9klLsmuPshz09DQ==",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.504.tgz",
- "version": "1.4.504"
+ "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz",
+ "version": "1.5.83"
},
"node_modules/element-closest": {
"engines": {
@@ -24593,9 +23350,9 @@
"engines": {
"node": ">=10.13.0"
},
- "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
- "version": "5.15.0"
+ "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz",
+ "version": "5.18.0"
},
"node_modules/entities": {
"funding": {
@@ -24609,6 +23366,7 @@
"bin": {
"envinfo": "dist/cli.js"
},
+ "dev": true,
"engines": {
"node": ">=4"
},
@@ -24632,19 +23390,6 @@
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
"version": "2.1.4"
},
- "node_modules/errorhandler": {
- "dependencies": {
- "accepts": "~1.3.7",
- "escape-html": "~1.0.3"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz",
- "version": "1.5.1"
- },
"node_modules/es-abstract": {
"dependencies": {
"array-buffer-byte-length": "^1.0.0",
@@ -24697,6 +23442,22 @@
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz",
"version": "1.22.1"
},
+ "node_modules/es-define-property": {
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "version": "1.0.1"
+ },
+ "node_modules/es-errors": {
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "version": "1.3.0"
+ },
"node_modules/es-get-iterator": {
"dependencies": {
"call-bind": "^1.0.2",
@@ -24747,6 +23508,17 @@
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
"version": "1.3.0"
},
+ "node_modules/es-object-atoms": {
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "version": "1.1.1"
+ },
"node_modules/es-set-tostringtag": {
"dependencies": {
"get-intrinsic": "^1.1.3",
@@ -24869,9 +23641,9 @@
"engines": {
"node": ">=6"
},
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "version": "3.1.1"
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "version": "3.2.0"
},
"node_modules/escape-html": {
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
@@ -25797,34 +24569,40 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"version": "7.2.0"
},
+ "node_modules/exponential-backoff": {
+ "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==",
+ "peer": true,
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz",
+ "version": "3.1.1"
+ },
"node_modules/express": {
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.2",
+ "body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.6.0",
+ "cookie": "0.7.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.2.0",
+ "finalhandler": "1.3.1",
"fresh": "0.5.2",
"http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
+ "merge-descriptors": "1.0.3",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
+ "path-to-regexp": "0.1.12",
"proxy-addr": "~2.0.7",
- "qs": "6.11.0",
+ "qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
@@ -25834,9 +24612,13 @@
"engines": {
"node": ">= 0.10.0"
},
- "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
- "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
- "version": "4.19.2"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ },
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "version": "4.21.2"
},
"node_modules/express-rate-limit": {
"engines": {
@@ -25857,6 +24639,14 @@
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"version": "1.1.1"
},
+ "node_modules/express/node_modules/cookie": {
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "version": "0.7.1"
+ },
"node_modules/express/node_modules/debug": {
"dependencies": {
"ms": "2.0.0"
@@ -25865,10 +24655,18 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"version": "2.6.9"
},
+ "node_modules/express/node_modules/encodeurl": {
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "version": "2.0.0"
+ },
"node_modules/express/node_modules/finalhandler": {
"dependencies": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
@@ -25878,9 +24676,9 @@
"engines": {
"node": ">= 0.8"
},
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "version": "1.2.0"
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "version": "1.3.1"
},
"node_modules/express/node_modules/ms": {
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
@@ -25899,23 +24697,9 @@
"version": "2.4.1"
},
"node_modules/express/node_modules/path-to-regexp": {
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "version": "0.1.7"
- },
- "node_modules/express/node_modules/qs": {
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- },
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "version": "6.11.0"
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
+ "version": "0.1.12"
},
"node_modules/express/node_modules/safe-buffer": {
"funding": [
@@ -26084,9 +24868,9 @@
"url": "https://paypal.me/naturalintelligence"
}
],
- "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz",
- "version": "4.4.0"
+ "integrity": "sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz",
+ "version": "4.5.1"
},
"node_modules/fastest-levenshtein": {
"dev": true,
@@ -26565,10 +25349,10 @@
"engines": {
"node": ">=0.4.0"
},
- "integrity": "sha512-topOrETNxJ6T2gAnQiWqAlzGPj8uI2wtmNOlDIMNB+qyvGJZ6R++STbUOTAYmvPhOMz2gXnXPH0hOvURYmrBow==",
+ "integrity": "sha512-xiXLmMH2Z7OmdE9Q+MjljUMr/rbemFqZIRxaeZieVScG4HzQrKKhNcCYZbWTGpoN7ZPi7z8ClQbeVPq6t5AszQ==",
"peer": true,
- "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.239.1.tgz",
- "version": "0.239.1"
+ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.259.1.tgz",
+ "version": "0.259.1"
},
"node_modules/follow-redirects": {
"engines": {
@@ -26868,6 +25652,7 @@
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
},
+ "dev": true,
"engines": {
"node": ">=6 <7 || >=8"
},
@@ -26947,9 +25732,12 @@
"version": "2.3.3"
},
"node_modules/function-bind": {
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "version": "1.1.1"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "version": "1.1.2"
},
"node_modules/function.prototype.name": {
"dependencies": {
@@ -26994,17 +25782,26 @@
},
"node_modules/get-intrinsic": {
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.0",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
},
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "version": "1.2.1"
+ "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
+ "version": "1.2.7"
},
"node_modules/get-nonce": {
"engines": {
@@ -27027,6 +25824,18 @@
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"version": "0.1.0"
},
+ "node_modules/get-proto": {
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "version": "1.0.1"
+ },
"node_modules/get-stdin": {
"dev": true,
"engines": {
@@ -27192,15 +26001,15 @@
"version": "11.1.0"
},
"node_modules/gopd": {
- "dependencies": {
- "get-intrinsic": "^1.1.3"
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
},
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "version": "1.0.1"
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "version": "1.2.0"
},
"node_modules/got": {
"dependencies": {
@@ -27298,6 +26107,7 @@
"version": "1.0.2"
},
"node_modules/has-flag": {
+ "dev": true,
"engines": {
"node": ">=4"
},
@@ -27334,9 +26144,9 @@
"funding": {
"url": "https://github.com/sponsors/ljharb"
},
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "version": "1.0.3"
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "version": "1.1.0"
},
"node_modules/has-tostringtag": {
"dependencies": {
@@ -27352,6 +26162,17 @@
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
"version": "1.0.0"
},
+ "node_modules/hasown": {
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "version": "2.0.2"
+ },
"node_modules/hast-util-whitespace": {
"funding": {
"type": "opencollective",
@@ -27388,40 +26209,19 @@
"version": "7.0.0"
},
"node_modules/hermes-estree": {
- "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==",
+ "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz",
- "version": "0.19.1"
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz",
+ "version": "0.23.1"
},
"node_modules/hermes-parser": {
"dependencies": {
- "hermes-estree": "0.19.1"
- },
- "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz",
- "version": "0.19.1"
- },
- "node_modules/hermes-profile-transformer": {
- "dependencies": {
- "source-map": "^0.7.3"
- },
- "engines": {
- "node": ">=8"
+ "hermes-estree": "0.23.1"
},
- "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==",
+ "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==",
"peer": true,
- "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz",
- "version": "0.0.6"
- },
- "node_modules/hermes-profile-transformer/node_modules/source-map": {
- "engines": {
- "node": ">= 8"
- },
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "version": "0.7.4"
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz",
+ "version": "0.23.1"
},
"node_modules/hexoid": {
"dev": true,
@@ -27678,37 +26478,27 @@
},
"node_modules/http-proxy-middleware": {
"dependencies": {
- "@types/http-proxy": "^1.17.8",
+ "@types/http-proxy": "^1.17.15",
+ "debug": "^4.3.6",
"http-proxy": "^1.18.1",
- "is-glob": "^4.0.1",
- "is-plain-obj": "^3.0.0",
- "micromatch": "^4.0.2"
+ "is-glob": "^4.0.3",
+ "is-plain-object": "^5.0.0",
+ "micromatch": "^4.0.8"
},
"engines": {
- "node": ">=12.0.0"
- },
- "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
- "peerDependencies": {
- "@types/express": "^4.17.13"
- },
- "peerDependenciesMeta": {
- "@types/express": {
- "optional": true
- }
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
- "version": "2.0.6"
+ "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz",
+ "version": "3.0.3"
},
- "node_modules/http-proxy-middleware/node_modules/is-plain-obj": {
+ "node_modules/http-proxy-middleware/node_modules/is-plain-object": {
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
},
- "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
- "version": "3.0.0"
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "version": "5.0.0"
},
"node_modules/http2-wrapper": {
"dependencies": {
@@ -27830,10 +26620,10 @@
"engines": {
"node": ">=16.x"
},
- "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==",
+ "integrity": "sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==",
"peer": true,
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz",
- "version": "1.1.1"
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.0.tgz",
+ "version": "1.2.0"
},
"node_modules/immediate": {
"dev": true,
@@ -28304,15 +27094,6 @@
"resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
"version": "1.0.2"
},
- "node_modules/is-fullwidth-code-point": {
- "engines": {
- "node": ">=4"
- },
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "version": "2.0.0"
- },
"node_modules/is-generator-fn": {
"engines": {
"node": ">=6"
@@ -28347,6 +27128,7 @@
"version": "4.0.3"
},
"node_modules/is-interactive": {
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -28564,6 +27346,7 @@
"version": "1.0.0"
},
"node_modules/is-unicode-supported": {
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -29774,22 +28557,21 @@
"fb-watchman": "^2.0.0",
"graceful-fs": "^4.2.9",
"jest-regex-util": "^29.6.3",
- "jest-util": "^29.6.3",
- "jest-worker": "^29.6.4",
+ "jest-util": "^29.7.0",
+ "jest-worker": "^29.7.0",
"micromatch": "^4.0.4",
"walker": "^1.0.8"
},
- "devOptional": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==",
+ "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
"optionalDependencies": {
"fsevents": "^2.3.2"
},
"peer": true,
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz",
- "version": "29.6.4"
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
+ "version": "29.7.0"
},
"node_modules/jest-jasmine2": {
"dependencies": {
@@ -30594,7 +29376,6 @@
"version": "1.2.3"
},
"node_modules/jest-regex-util": {
- "devOptional": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
@@ -31135,9 +29916,9 @@
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz",
- "version": "29.6.3"
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "version": "29.7.0"
},
"node_modules/jest-util/node_modules/ansi-styles": {
"dependencies": {
@@ -31427,16 +30208,16 @@
"node_modules/jest-worker": {
"dependencies": {
"@types/node": "*",
- "jest-util": "^29.6.3",
+ "jest-util": "^29.7.0",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz",
- "version": "29.6.4"
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "version": "29.7.0"
},
"node_modules/jest-worker/node_modules/has-flag": {
"engines": {
@@ -31477,19 +30258,6 @@
"resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
"version": "0.16.0"
},
- "node_modules/joi": {
- "dependencies": {
- "@hapi/hoek": "^9.3.0",
- "@hapi/topo": "^5.1.0",
- "@sideway/address": "^4.1.5",
- "@sideway/formula": "^3.0.1",
- "@sideway/pinpoint": "^2.0.0"
- },
- "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
- "version": "17.13.3"
- },
"node_modules/js-cookie": {
"integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==",
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
@@ -31751,11 +30519,11 @@
"jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
},
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "version": "2.5.2"
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "version": "3.1.0"
},
"node_modules/json-buffer": {
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
@@ -31885,6 +30653,7 @@
"version": "3.2.0"
},
"node_modules/jsonfile": {
+ "dev": true,
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"optionalDependencies": {
"graceful-fs": "^4.1.6"
@@ -31917,12 +30686,6 @@
"resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz",
"version": "2.5.1"
},
- "node_modules/jspdf/node_modules/dompurify": {
- "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==",
- "optional": true,
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz",
- "version": "2.4.7"
- },
"node_modules/jspdf/node_modules/fflate": {
"integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
@@ -32324,6 +31087,7 @@
"chalk": "^4.1.0",
"is-unicode-supported": "^0.1.0"
},
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -32338,6 +31102,7 @@
"dependencies": {
"color-convert": "^2.0.1"
},
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -32353,6 +31118,7 @@
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -32367,6 +31133,7 @@
"dependencies": {
"color-name": "~1.1.4"
},
+ "dev": true,
"engines": {
"node": ">=7.0.0"
},
@@ -32375,11 +31142,13 @@
"version": "2.0.1"
},
"node_modules/log-symbols/node_modules/color-name": {
+ "dev": true,
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"version": "1.1.4"
},
"node_modules/log-symbols/node_modules/has-flag": {
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -32391,6 +31160,7 @@
"dependencies": {
"has-flag": "^4.0.0"
},
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -32398,180 +31168,6 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"version": "7.2.0"
},
- "node_modules/logkitty": {
- "bin": {
- "logkitty": "bin/logkitty.js"
- },
- "dependencies": {
- "ansi-fragments": "^0.2.1",
- "dayjs": "^1.8.15",
- "yargs": "^15.1.0"
- },
- "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz",
- "version": "0.7.1"
- },
- "node_modules/logkitty/node_modules/ansi-styles": {
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- },
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "version": "4.3.0"
- },
- "node_modules/logkitty/node_modules/cliui": {
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "version": "6.0.0"
- },
- "node_modules/logkitty/node_modules/color-convert": {
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- },
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "version": "2.0.1"
- },
- "node_modules/logkitty/node_modules/color-name": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "version": "1.1.4"
- },
- "node_modules/logkitty/node_modules/decamelize": {
- "engines": {
- "node": ">=0.10.0"
- },
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "version": "1.2.0"
- },
- "node_modules/logkitty/node_modules/find-up": {
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "version": "4.1.0"
- },
- "node_modules/logkitty/node_modules/locate-path": {
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "version": "5.0.0"
- },
- "node_modules/logkitty/node_modules/p-limit": {
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- },
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "version": "2.3.0"
- },
- "node_modules/logkitty/node_modules/p-locate": {
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "version": "4.1.0"
- },
- "node_modules/logkitty/node_modules/wrap-ansi": {
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "version": "6.2.0"
- },
- "node_modules/logkitty/node_modules/y18n": {
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "version": "4.0.3"
- },
- "node_modules/logkitty/node_modules/yargs": {
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- },
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "version": "15.4.1"
- },
- "node_modules/logkitty/node_modules/yargs-parser": {
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- },
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "version": "18.1.3"
- },
"node_modules/loose-envify": {
"bin": {
"loose-envify": "cli.js"
@@ -32687,6 +31283,14 @@
"resolved": "https://registry.npmjs.org/matches-selector/-/matches-selector-1.2.0.tgz",
"version": "1.2.0"
},
+ "node_modules/math-intrinsics": {
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "version": "1.1.0"
+ },
"node_modules/mdast-util-definitions": {
"dependencies": {
"@types/mdast": "^3.0.0",
@@ -32802,9 +31406,12 @@
"version": "0.4.15"
},
"node_modules/merge-descriptors": {
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "version": "1.0.1"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ },
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "version": "1.0.3"
},
"node_modules/merge-stream": {
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
@@ -32832,13 +31439,13 @@
"metro": "src/cli.js"
},
"dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/parser": "^7.20.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.20.0",
- "@babel/types": "^7.20.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/core": "^7.25.2",
+ "@babel/generator": "^7.25.0",
+ "@babel/parser": "^7.25.3",
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.3",
+ "@babel/types": "^7.25.2",
"accepts": "^1.3.7",
"chalk": "^4.0.0",
"ci-info": "^2.0.0",
@@ -32846,112 +31453,117 @@
"debug": "^2.2.0",
"denodeify": "^1.2.1",
"error-stack-parser": "^2.0.6",
+ "flow-enums-runtime": "^0.0.6",
"graceful-fs": "^4.2.4",
- "hermes-parser": "0.20.1",
+ "hermes-parser": "0.24.0",
"image-size": "^1.0.2",
"invariant": "^2.2.4",
"jest-worker": "^29.6.3",
"jsc-safe-url": "^0.2.2",
"lodash.throttle": "^4.1.1",
- "metro-babel-transformer": "0.80.9",
- "metro-cache": "0.80.9",
- "metro-cache-key": "0.80.9",
- "metro-config": "0.80.9",
- "metro-core": "0.80.9",
- "metro-file-map": "0.80.9",
- "metro-resolver": "0.80.9",
- "metro-runtime": "0.80.9",
- "metro-source-map": "0.80.9",
- "metro-symbolicate": "0.80.9",
- "metro-transform-plugins": "0.80.9",
- "metro-transform-worker": "0.80.9",
+ "metro-babel-transformer": "0.81.0",
+ "metro-cache": "0.81.0",
+ "metro-cache-key": "0.81.0",
+ "metro-config": "0.81.0",
+ "metro-core": "0.81.0",
+ "metro-file-map": "0.81.0",
+ "metro-resolver": "0.81.0",
+ "metro-runtime": "0.81.0",
+ "metro-source-map": "0.81.0",
+ "metro-symbolicate": "0.81.0",
+ "metro-transform-plugins": "0.81.0",
+ "metro-transform-worker": "0.81.0",
"mime-types": "^2.1.27",
- "node-fetch": "^2.2.0",
"nullthrows": "^1.1.1",
- "rimraf": "^3.0.2",
"serialize-error": "^2.1.0",
"source-map": "^0.5.6",
"strip-ansi": "^6.0.0",
"throat": "^5.0.0",
- "ws": "^7.5.1",
+ "ws": "^7.5.10",
"yargs": "^17.6.2"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==",
+ "integrity": "sha512-kzdzmpL0gKhEthZ9aOV7sTqvg6NuTxDV8SIm9pf9sO8VVEbKrQk5DNcwupOUjgPPFAuKUc2NkT0suyT62hm2xg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-babel-transformer": {
"dependencies": {
- "@babel/core": "^7.20.0",
- "hermes-parser": "0.20.1",
+ "@babel/core": "^7.25.2",
+ "flow-enums-runtime": "^0.0.6",
+ "hermes-parser": "0.24.0",
"nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==",
+ "integrity": "sha512-Dc0QWK4wZIeHnyZ3sevWGTnnSkIDDn/SWyfrn99zbKbDOCoCYy71PAn9uCRrP/hduKLJQOy+tebd63Rr9D8tXg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-babel-transformer/node_modules/hermes-estree": {
- "integrity": "sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==",
+ "integrity": "sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw==",
"peer": true,
- "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz",
- "version": "0.20.1"
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.24.0.tgz",
+ "version": "0.24.0"
},
"node_modules/metro-babel-transformer/node_modules/hermes-parser": {
"dependencies": {
- "hermes-estree": "0.20.1"
+ "hermes-estree": "0.24.0"
},
- "integrity": "sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==",
+ "integrity": "sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz",
- "version": "0.20.1"
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.24.0.tgz",
+ "version": "0.24.0"
},
"node_modules/metro-cache": {
"dependencies": {
- "metro-core": "0.80.9",
- "rimraf": "^3.0.2"
+ "exponential-backoff": "^3.1.1",
+ "flow-enums-runtime": "^0.0.6",
+ "metro-core": "0.81.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==",
+ "integrity": "sha512-DyuqySicHXkHUDZFVJmh0ygxBSx6pCKUrTcSgb884oiscV/ROt1Vhye+x+OIHcsodyA10gzZtrVtxIFV4l9I4g==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-cache-key": {
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==",
+ "integrity": "sha512-qX/IwtknP9bQZL78OK9xeSvLM/xlGfrs6SlUGgHvrxtmGTRSsxcyqxR+c+7ch1xr05n62Gin/O44QKg5V70rNQ==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-config": {
"dependencies": {
"connect": "^3.6.5",
"cosmiconfig": "^5.0.5",
+ "flow-enums-runtime": "^0.0.6",
"jest-validate": "^29.6.3",
- "metro": "0.80.9",
- "metro-cache": "0.80.9",
- "metro-core": "0.80.9",
- "metro-runtime": "0.80.9"
+ "metro": "0.81.0",
+ "metro-cache": "0.81.0",
+ "metro-core": "0.81.0",
+ "metro-runtime": "0.81.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==",
+ "integrity": "sha512-6CinEaBe3WLpRlKlYXXu8r1UblJhbwD6Gtnoib5U8j6Pjp7XxMG9h/DGMeNp9aGLDu1OieUqiXpFo7O0/rR5Kg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-config/node_modules/argparse": {
"dependencies": {
@@ -33027,22 +31639,24 @@
},
"node_modules/metro-core": {
"dependencies": {
+ "flow-enums-runtime": "^0.0.6",
"lodash.throttle": "^4.1.1",
- "metro-resolver": "0.80.9"
+ "metro-resolver": "0.81.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==",
+ "integrity": "sha512-CVkM5YCOAFkNMvJai6KzA0RpztzfEKRX62/PFMOJ9J7K0uq/UkOFLxcgpcncMIrfy0PbfEj811b69tjULUQe1Q==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-file-map": {
"dependencies": {
"anymatch": "^3.0.3",
"debug": "^2.2.0",
"fb-watchman": "^2.0.0",
+ "flow-enums-runtime": "^0.0.6",
"graceful-fs": "^4.2.4",
"invariant": "^2.2.4",
"jest-worker": "^29.6.3",
@@ -33052,15 +31666,15 @@
"walker": "^1.0.7"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==",
+ "integrity": "sha512-zMDI5uYhQCyxbye/AuFx/pAbsz9K+vKL7h1ShUXdN2fz4VUPiyQYRsRqOoVG1DsiCgzd5B6LW0YW77NFpjDQeg==",
"optionalDependencies": {
"fsevents": "^2.3.2"
},
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-file-map/node_modules/debug": {
"dependencies": {
@@ -33079,114 +31693,124 @@
},
"node_modules/metro-minify-terser": {
"dependencies": {
+ "flow-enums-runtime": "^0.0.6",
"terser": "^5.15.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==",
+ "integrity": "sha512-U2ramh3W822ZR1nfXgIk+emxsf5eZSg10GbQrT0ZizImK8IZ5BmJY+BHRIkQgHzWFpExOVxC7kWbGL1bZALswA==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-resolver": {
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==",
+ "integrity": "sha512-Uu2Q+buHhm571cEwpPek8egMbdSTqmwT/5U7ZVNpK6Z2ElQBBCxd7HmFAslKXa7wgpTO2FAn6MqGeERbAtVDUA==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-runtime": {
"dependencies": {
- "@babel/runtime": "^7.0.0"
+ "@babel/runtime": "^7.25.0",
+ "flow-enums-runtime": "^0.0.6"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==",
+ "integrity": "sha512-6oYB5HOt37RuGz2eV4A6yhcl+PUTwJYLDlY9vhT+aVjbUWI6MdBCf69vc4f5K5Vpt+yOkjy+2LDwLS0ykWFwYw==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-source-map": {
"dependencies": {
- "@babel/traverse": "^7.20.0",
- "@babel/types": "^7.20.0",
+ "@babel/traverse": "^7.25.3",
+ "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3",
+ "@babel/types": "^7.25.2",
+ "flow-enums-runtime": "^0.0.6",
"invariant": "^2.2.4",
- "metro-symbolicate": "0.80.9",
+ "metro-symbolicate": "0.81.0",
"nullthrows": "^1.1.1",
- "ob1": "0.80.9",
+ "ob1": "0.81.0",
"source-map": "^0.5.6",
"vlq": "^1.0.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==",
+ "integrity": "sha512-TzsVxhH83dyxg4A4+L1nzNO12I7ps5IHLjKGZH3Hrf549eiZivkdjYiq/S5lOB+p2HiQ+Ykcwtmcja95LIC62g==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-symbolicate": {
"bin": {
"metro-symbolicate": "src/index.js"
},
"dependencies": {
+ "flow-enums-runtime": "^0.0.6",
"invariant": "^2.2.4",
- "metro-source-map": "0.80.9",
+ "metro-source-map": "0.81.0",
"nullthrows": "^1.1.1",
"source-map": "^0.5.6",
"through2": "^2.0.1",
"vlq": "^1.0.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==",
+ "integrity": "sha512-C/1rWbNTPYp6yzID8IPuQPpVGzJ2rbWYBATxlvQ9dfK5lVNoxcwz77hjcY8ISLsRRR15hyd/zbjCNKPKeNgE1Q==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-transform-plugins": {
"dependencies": {
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.20.0",
+ "@babel/core": "^7.25.2",
+ "@babel/generator": "^7.25.0",
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.3",
+ "flow-enums-runtime": "^0.0.6",
"nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==",
+ "integrity": "sha512-uErLAPBvttGCrmGSCa0dNHlOTk3uJFVEVWa5WDg6tQ79PRmuYRwzUgLhVzn/9/kyr75eUX3QWXN79Jvu4txt6Q==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro-transform-worker": {
"dependencies": {
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/parser": "^7.20.0",
- "@babel/types": "^7.20.0",
- "metro": "0.80.9",
- "metro-babel-transformer": "0.80.9",
- "metro-cache": "0.80.9",
- "metro-cache-key": "0.80.9",
- "metro-minify-terser": "0.80.9",
- "metro-source-map": "0.80.9",
- "metro-transform-plugins": "0.80.9",
+ "@babel/core": "^7.25.2",
+ "@babel/generator": "^7.25.0",
+ "@babel/parser": "^7.25.3",
+ "@babel/types": "^7.25.2",
+ "flow-enums-runtime": "^0.0.6",
+ "metro": "0.81.0",
+ "metro-babel-transformer": "0.81.0",
+ "metro-cache": "0.81.0",
+ "metro-cache-key": "0.81.0",
+ "metro-minify-terser": "0.81.0",
+ "metro-source-map": "0.81.0",
+ "metro-transform-plugins": "0.81.0",
"nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==",
+ "integrity": "sha512-HrQ0twiruhKy0yA+9nK5bIe3WQXZcC66PXTvRIos61/EASLAP2DzEmW7IxN/MGsfZegN2UzqL2CG38+mOB45vg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/metro/node_modules/ansi-styles": {
"dependencies": {
@@ -33262,19 +31886,19 @@
"version": "4.0.0"
},
"node_modules/metro/node_modules/hermes-estree": {
- "integrity": "sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==",
+ "integrity": "sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw==",
"peer": true,
- "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz",
- "version": "0.20.1"
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.24.0.tgz",
+ "version": "0.24.0"
},
"node_modules/metro/node_modules/hermes-parser": {
"dependencies": {
- "hermes-estree": "0.20.1"
+ "hermes-estree": "0.24.0"
},
- "integrity": "sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==",
+ "integrity": "sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz",
- "version": "0.20.1"
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.24.0.tgz",
+ "version": "0.24.0"
},
"node_modules/metro/node_modules/ms": {
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
@@ -33738,20 +32362,21 @@
},
"node_modules/micromatch": {
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
},
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "version": "4.0.5"
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "version": "4.0.8"
},
"node_modules/mime": {
"bin": {
"mime": "cli.js"
},
+ "dev": true,
"engines": {
"node": ">=4.0.0"
},
@@ -33912,9 +32537,9 @@
"version": "1.2.0"
},
"node_modules/ms": {
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "version": "2.1.2"
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "version": "2.1.3"
},
"node_modules/multicast-dns": {
"bin": {
@@ -33946,10 +32571,10 @@
},
"node_modules/nanoid": {
"bin": {
- "nanoid": "bin/nanoid.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^18 || >=20"
},
"funding": [
{
@@ -33957,9 +32582,9 @@
"url": "https://github.com/sponsors/ai"
}
],
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
- "version": "3.3.6"
+ "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz",
+ "version": "5.0.9"
},
"node_modules/native-promise-only": {
"dev": true,
@@ -34036,15 +32661,6 @@
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
"version": "3.0.4"
},
- "node_modules/nocache": {
- "engines": {
- "node": ">=12.0.0"
- },
- "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz",
- "version": "3.0.4"
- },
"node_modules/node-abort-controller": {
"integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
"peer": true,
@@ -34095,22 +32711,9 @@
"version": "0.4.0"
},
"node_modules/node-releases": {
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "version": "2.0.13"
- },
- "node_modules/node-stream-zip": {
- "engines": {
- "node": ">=0.12.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/antelle"
- },
- "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
- "version": "1.15.0"
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "version": "2.0.19"
},
"node_modules/normalize-path": {
"engines": {
@@ -34192,13 +32795,16 @@
"version": "2.2.7"
},
"node_modules/ob1": {
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
},
- "integrity": "sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==",
+ "integrity": "sha512-6Cvrkxt1tqaRdWqTAMcVYEiO5i1xcF9y7t06nFdjFqkfPsEloCf8WwhXdwBpNUkVYSQlSGS7cDgVQR86miBfBQ==",
"peer": true,
- "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.9.tgz",
- "version": "0.80.9"
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.0.tgz",
+ "version": "0.81.0"
},
"node_modules/object-assign": {
"engines": {
@@ -34217,12 +32823,15 @@
"version": "3.0.0"
},
"node_modules/object-inspect": {
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
},
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "version": "1.12.3"
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
+ "version": "1.13.3"
},
"node_modules/object-is": {
"dependencies": {
@@ -34381,24 +32990,18 @@
},
"node_modules/open": {
"dependencies": {
- "is-wsl": "^1.1.0"
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
},
"engines": {
"node": ">=8"
},
- "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
- "version": "6.4.0"
- },
- "node_modules/open/node_modules/is-wsl": {
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
},
- "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "version": "1.1.0"
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "version": "7.4.2"
},
"node_modules/optionator": {
"dependencies": {
@@ -34428,6 +33031,7 @@
"strip-ansi": "^6.0.0",
"wcwidth": "^1.0.1"
},
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -34442,6 +33046,7 @@
"dependencies": {
"color-convert": "^2.0.1"
},
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -34457,6 +33062,7 @@
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -34471,6 +33077,7 @@
"dependencies": {
"color-name": "~1.1.4"
},
+ "dev": true,
"engines": {
"node": ">=7.0.0"
},
@@ -34479,11 +33086,13 @@
"version": "2.0.1"
},
"node_modules/ora/node_modules/color-name": {
+ "dev": true,
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"version": "1.1.4"
},
"node_modules/ora/node_modules/has-flag": {
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -34495,6 +33104,7 @@
"dependencies": {
"has-flag": "^4.0.0"
},
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -34792,17 +33402,12 @@
"version": "1.0.7"
},
"node_modules/path-to-regexp": {
- "dependencies": {
- "isarray": "0.0.1"
+ "engines": {
+ "node": ">=16"
},
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "version": "1.8.0"
- },
- "node_modules/path-to-regexp/node_modules/isarray": {
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "version": "0.0.1"
+ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
+ "version": "8.2.0"
},
"node_modules/path-type": {
"engines": {
@@ -34843,9 +33448,9 @@
"version": "2.1.0"
},
"node_modules/picocolors": {
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "version": "1.0.0"
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "version": "1.1.1"
},
"node_modules/picomatch": {
"engines": {
@@ -36149,6 +34754,23 @@
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"version": "4.2.0"
},
+ "node_modules/postcss/node_modules/nanoid": {
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ },
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "version": "3.3.8"
+ },
"node_modules/prelude-ls": {
"engines": {
"node": ">= 0.8.0"
@@ -36603,7 +35225,7 @@
},
"node_modules/qs": {
"dependencies": {
- "side-channel": "^1.0.4"
+ "side-channel": "^1.0.6"
},
"engines": {
"node": ">=0.6"
@@ -36611,9 +35233,9 @@
"funding": {
"url": "https://github.com/sponsors/ljharb"
},
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "version": "6.11.2"
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "version": "6.13.0"
},
"node_modules/query-string": {
"dependencies": {
@@ -36952,10 +35574,10 @@
"shell-quote": "^1.6.1",
"ws": "^7"
},
- "integrity": "sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==",
+ "integrity": "sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==",
"peer": true,
- "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.3.1.tgz",
- "version": "5.3.1"
+ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.3.2.tgz",
+ "version": "5.3.2"
},
"node_modules/react-devtools-core/node_modules/ws": {
"engines": {
@@ -37101,59 +35723,60 @@
},
"dependencies": {
"@jest/create-cache-key-function": "^29.6.3",
- "@react-native-community/cli": "13.6.9",
- "@react-native-community/cli-platform-android": "13.6.9",
- "@react-native-community/cli-platform-ios": "13.6.9",
- "@react-native/assets-registry": "0.74.85",
- "@react-native/codegen": "0.74.85",
- "@react-native/community-cli-plugin": "0.74.85",
- "@react-native/gradle-plugin": "0.74.85",
- "@react-native/js-polyfills": "0.74.85",
- "@react-native/normalize-colors": "0.74.85",
- "@react-native/virtualized-lists": "0.74.85",
+ "@react-native/assets-registry": "0.76.6",
+ "@react-native/codegen": "0.76.6",
+ "@react-native/community-cli-plugin": "0.76.6",
+ "@react-native/gradle-plugin": "0.76.6",
+ "@react-native/js-polyfills": "0.76.6",
+ "@react-native/normalize-colors": "0.76.6",
+ "@react-native/virtualized-lists": "0.76.6",
"abort-controller": "^3.0.0",
"anser": "^1.4.9",
"ansi-regex": "^5.0.0",
+ "babel-jest": "^29.7.0",
+ "babel-plugin-syntax-hermes-parser": "^0.23.1",
"base64-js": "^1.5.1",
"chalk": "^4.0.0",
+ "commander": "^12.0.0",
"event-target-shim": "^5.0.1",
"flow-enums-runtime": "^0.0.6",
+ "glob": "^7.1.1",
"invariant": "^2.2.4",
"jest-environment-node": "^29.6.3",
"jsc-android": "^250231.0.0",
"memoize-one": "^5.0.0",
- "metro-runtime": "^0.80.3",
- "metro-source-map": "^0.80.3",
+ "metro-runtime": "^0.81.0",
+ "metro-source-map": "^0.81.0",
"mkdirp": "^0.5.1",
"nullthrows": "^1.1.1",
- "pretty-format": "^26.5.2",
+ "pretty-format": "^29.7.0",
"promise": "^8.3.0",
- "react-devtools-core": "^5.0.0",
+ "react-devtools-core": "^5.3.1",
"react-refresh": "^0.14.0",
- "react-shallow-renderer": "^16.15.0",
"regenerator-runtime": "^0.13.2",
"scheduler": "0.24.0-canary-efb381bbf-20230505",
+ "semver": "^7.1.3",
"stacktrace-parser": "^0.1.10",
"whatwg-fetch": "^3.0.0",
- "ws": "^6.2.2",
+ "ws": "^6.2.3",
"yargs": "^17.6.2"
},
"engines": {
"node": ">=18"
},
- "integrity": "sha512-UFutCC6WEw6HkxlcpQ2BemKqi0JkwrgDchYB5Svi8Sp4Xwt4HA6LGEjNQgZ+3KM44bjyFRpofQym0uh0jACGng==",
+ "integrity": "sha512-AsRi+ud6v6ADH7ZtSOY42kRB4nbM0KtSu450pGO4pDudl4AEK/AF96ai88snb2/VJJSGGa/49QyJVFXxz/qoFg==",
"peer": true,
"peerDependencies": {
"@types/react": "^18.2.6",
- "react": "18.2.0"
+ "react": "^18.2.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
- "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.74.3.tgz",
- "version": "0.74.3"
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.76.6.tgz",
+ "version": "0.76.6"
},
"node_modules/react-native-get-random-values": {
"dependencies": {
@@ -37177,31 +35800,6 @@
"resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-1.3.0.tgz",
"version": "1.3.0"
},
- "node_modules/react-native/node_modules/@jest/types": {
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
- "version": "26.6.2"
- },
- "node_modules/react-native/node_modules/@types/yargs": {
- "dependencies": {
- "@types/yargs-parser": "*"
- },
- "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz",
- "version": "15.0.19"
- },
"node_modules/react-native/node_modules/ansi-styles": {
"dependencies": {
"color-convert": "^2.0.1"
@@ -37262,24 +35860,29 @@
},
"node_modules/react-native/node_modules/pretty-format": {
"dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
},
"engines": {
- "node": ">= 10"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
},
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"peer": true,
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "version": "26.6.2"
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "version": "29.7.0"
},
- "node_modules/react-native/node_modules/react-is": {
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "node_modules/react-native/node_modules/pretty-format/node_modules/ansi-styles": {
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ },
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"peer": true,
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "version": "17.0.2"
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "version": "5.2.0"
},
"node_modules/react-native/node_modules/regenerator-runtime": {
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
@@ -37416,6 +36019,19 @@
"resolved": "https://registry.npmjs.org/react-router-hash-link/-/react-router-hash-link-2.4.3.tgz",
"version": "2.4.3"
},
+ "node_modules/react-router/node_modules/isarray": {
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "version": "0.0.1"
+ },
+ "node_modules/react-router/node_modules/path-to-regexp": {
+ "dependencies": {
+ "isarray": "0.0.1"
+ },
+ "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz",
+ "version": "1.9.0"
+ },
"node_modules/react-router/node_modules/react-is": {
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -38935,19 +37551,6 @@
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
"version": "6.0.0"
},
- "node_modules/react-shallow-renderer": {
- "dependencies": {
- "object-assign": "^4.1.1",
- "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
- },
- "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
- "peer": true,
- "peerDependencies": {
- "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
- },
- "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
- "version": "16.15.0"
- },
"node_modules/react-simple-maps": {
"dependencies": {
"d3-geo": "^2.0.2",
@@ -39245,9 +37848,9 @@
"engines": {
"node": ">=4"
},
- "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
- "version": "10.1.0"
+ "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
+ "version": "10.2.0"
},
"node_modules/regenerator-runtime": {
"integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
@@ -39285,38 +37888,46 @@
},
"node_modules/regexpu-core": {
"dependencies": {
- "@babel/regjsgen": "^0.8.0",
"regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
+ "regenerate-unicode-properties": "^10.2.0",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.12.0",
"unicode-match-property-ecmascript": "^2.0.0",
"unicode-match-property-value-ecmascript": "^2.1.0"
},
"engines": {
"node": ">=4"
},
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "version": "5.3.2"
+ "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz",
+ "version": "6.2.0"
+ },
+ "node_modules/regjsgen": {
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "version": "0.8.0"
},
"node_modules/regjsparser": {
"bin": {
"regjsparser": "bin/parser"
},
"dependencies": {
- "jsesc": "~0.5.0"
+ "jsesc": "~3.0.2"
},
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "version": "0.9.1"
+ "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz",
+ "version": "0.12.0"
},
"node_modules/regjsparser/node_modules/jsesc": {
"bin": {
"jsesc": "bin/jsesc"
},
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "version": "0.5.0"
+ "engines": {
+ "node": ">=6"
+ },
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "version": "3.0.2"
},
"node_modules/relateurl": {
"engines": {
@@ -39507,6 +38118,7 @@
"onetime": "^5.1.0",
"signal-exit": "^3.0.2"
},
+ "dev": true,
"engines": {
"node": ">=8"
},
@@ -39561,12 +38173,12 @@
"engines": {
"node": ">=10.0.0"
},
- "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
"optionalDependencies": {
"fsevents": "~2.3.2"
},
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
- "version": "2.79.1"
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
+ "version": "2.79.2"
},
"node_modules/rollup-plugin-terser": {
"dependencies": {
@@ -39577,18 +38189,18 @@
"engines": {
"node": ">=14.0.0"
},
- "integrity": "sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==",
+ "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
"name": "@rollup/plugin-terser",
"peerDependencies": {
- "rollup": "^2.x || ^3.x"
+ "rollup": "^2.0.0||^3.0.0||^4.0.0"
},
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
},
- "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz",
- "version": "0.4.3"
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
+ "version": "0.4.4"
},
"node_modules/run-async": {
"dev": true,
@@ -39801,15 +38413,15 @@
"ajv-keywords": "^5.1.0"
},
"engines": {
- "node": ">= 12.13.0"
+ "node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
- "version": "4.2.0"
+ "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz",
+ "version": "4.3.0"
},
"node_modules/seek-bzip": {
"bin": {
@@ -39896,9 +38508,9 @@
"engines": {
"node": ">= 0.8.0"
},
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "version": "0.18.0"
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "version": "0.19.0"
},
"node_modules/send/node_modules/debug": {
"dependencies": {
@@ -39924,11 +38536,6 @@
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"version": "1.6.0"
},
- "node_modules/send/node_modules/ms": {
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "version": "2.1.3"
- },
"node_modules/send/node_modules/on-finished": {
"dependencies": {
"ee-first": "1.1.1"
@@ -39971,9 +38578,9 @@
"dependencies": {
"randombytes": "^2.1.0"
},
- "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
- "version": "6.0.1"
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "version": "6.0.2"
},
"node_modules/serve-index": {
"dependencies": {
@@ -40039,17 +38646,25 @@
},
"node_modules/serve-static": {
"dependencies": {
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.18.0"
+ "send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
},
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "version": "1.15.0"
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "version": "1.16.2"
+ },
+ "node_modules/serve-static/node_modules/encodeurl": {
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "version": "2.0.0"
},
"node_modules/serverless": {
"bin": {
@@ -40561,16 +39176,71 @@
},
"node_modules/side-channel": {
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "version": "1.1.0"
+ },
+ "node_modules/side-channel-list": {
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
},
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "version": "1.0.4"
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "version": "1.0.0"
+ },
+ "node_modules/side-channel-map": {
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "version": "1.0.1"
+ },
+ "node_modules/side-channel-weakmap": {
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ },
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "version": "1.0.2"
},
"node_modules/signal-exit": {
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
@@ -40605,20 +39275,6 @@
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
"version": "3.0.0"
},
- "node_modules/slice-ansi": {
- "dependencies": {
- "ansi-styles": "^3.2.0",
- "astral-regex": "^1.0.0",
- "is-fullwidth-code-point": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
- "version": "2.1.0"
- },
"node_modules/smart-buffer": {
"dev": true,
"engines": {
@@ -40630,9 +39286,9 @@
"version": "4.2.0"
},
"node_modules/smob": {
- "integrity": "sha512-MqR3fVulhjWuRNSMydnTlweu38UhQ0HXM4buStD/S3mc/BzX3CuM9OmhyQpmtYCvoYdl5ris6TI0ZqH355Ymqg==",
- "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.0.tgz",
- "version": "1.4.0"
+ "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==",
+ "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz",
+ "version": "1.5.0"
},
"node_modules/snake-case": {
"dependencies": {
@@ -41437,12 +40093,6 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"version": "7.1.6"
},
- "node_modules/sudo-prompt": {
- "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
- "version": "9.2.1"
- },
"node_modules/superagent": {
"dependencies": {
"component-emitter": "^1.3.0",
@@ -41484,6 +40134,7 @@
"dependencies": {
"has-flag": "^3.0.0"
},
+ "dev": true,
"engines": {
"node": ">=4"
},
@@ -41891,17 +40542,17 @@
"engines": {
"node": ">=10"
},
- "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz",
- "version": "5.19.2"
+ "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz",
+ "version": "5.37.0"
},
"node_modules/terser-webpack-plugin": {
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.17",
+ "@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
- "schema-utils": "^3.1.1",
- "serialize-javascript": "^6.0.1",
- "terser": "^5.16.8"
+ "schema-utils": "^4.3.0",
+ "serialize-javascript": "^6.0.2",
+ "terser": "^5.31.1"
},
"engines": {
"node": ">= 10.13.0"
@@ -41910,7 +40561,7 @@
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
- "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==",
"peerDependencies": {
"webpack": "^5.1.0"
},
@@ -41925,31 +40576,8 @@
"optional": true
}
},
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
- "version": "5.3.9"
- },
- "node_modules/terser-webpack-plugin/node_modules/ajv": {
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- },
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "version": "6.12.6"
- },
- "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": {
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "peerDependencies": {
- "ajv": "^6.9.1"
- },
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "version": "3.5.2"
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz",
+ "version": "5.3.11"
},
"node_modules/terser-webpack-plugin/node_modules/has-flag": {
"engines": {
@@ -41972,28 +40600,6 @@
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
"version": "27.5.1"
},
- "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "version": "0.4.1"
- },
- "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
- "dependencies": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "version": "3.3.0"
- },
"node_modules/terser-webpack-plugin/node_modules/supports-color": {
"dependencies": {
"has-flag": "^4.0.0"
@@ -42179,14 +40785,6 @@
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
"version": "1.1.1"
},
- "node_modules/to-fast-properties": {
- "engines": {
- "node": ">=4"
- },
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "version": "2.0.0"
- },
"node_modules/to-regex-range": {
"dependencies": {
"is-number": "^7.0.0"
@@ -42675,12 +41273,6 @@
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"version": "5.7.1"
},
- "node_modules/undici-types": {
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
- "peer": true,
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "version": "5.26.5"
- },
"node_modules/unfetch": {
"integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==",
"resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz",
@@ -42699,9 +41291,9 @@
"engines": {
"node": ">=4"
},
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "version": "2.0.0"
+ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+ "version": "2.0.1"
},
"node_modules/unicode-match-property-ecmascript": {
"dependencies": {
@@ -42719,9 +41311,9 @@
"engines": {
"node": ">=4"
},
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "version": "2.1.0"
+ "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
+ "version": "2.2.0"
},
"node_modules/unicode-property-aliases-ecmascript": {
"engines": {
@@ -42834,22 +41426,23 @@
},
"node_modules/universal-cookie": {
"dependencies": {
- "@types/cookie": "^0.3.3",
- "cookie": "^0.4.0"
+ "@types/cookie": "^0.6.0",
+ "cookie": "^0.7.2"
},
- "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==",
- "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz",
- "version": "4.0.4"
+ "integrity": "sha512-fMiOcS3TmzP2x5QV26pIH3mvhexLIT0HmPa3V7Q7knRfT9HG6kTwq02HZGLPw0sAOXrAmotElGRvTLCMbJsvxQ==",
+ "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-7.2.2.tgz",
+ "version": "7.2.2"
},
"node_modules/universal-cookie/node_modules/cookie": {
"engines": {
"node": ">= 0.6"
},
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "version": "0.4.2"
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "version": "0.7.2"
},
"node_modules/universalify": {
+ "dev": true,
"engines": {
"node": ">= 4.0.0"
},
@@ -42888,8 +41481,8 @@
"update-browserslist-db": "cli.js"
},
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
},
"funding": [
{
@@ -42905,12 +41498,12 @@
"url": "https://github.com/sponsors/ai"
}
],
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==",
"peerDependencies": {
"browserslist": ">= 4.21.0"
},
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "version": "1.0.11"
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz",
+ "version": "1.1.2"
},
"node_modules/upper-case": {
"dependencies": {
@@ -43227,9 +41820,9 @@
"engines": {
"node": ">=10.13.0"
},
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "version": "2.4.0"
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "version": "2.4.2"
},
"node_modules/wbuf": {
"dependencies": {
@@ -43243,6 +41836,7 @@
"dependencies": {
"defaults": "^1.0.3"
},
+ "dev": true,
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
"version": "1.0.1"
@@ -43262,29 +41856,28 @@
"webpack": "bin/webpack.js"
},
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
- "@types/estree": "^1.0.0",
- "@webassemblyjs/ast": "^1.11.5",
- "@webassemblyjs/wasm-edit": "^1.11.5",
- "@webassemblyjs/wasm-parser": "^1.11.5",
- "acorn": "^8.7.1",
- "acorn-import-assertions": "^1.9.0",
- "browserslist": "^4.14.5",
+ "@types/eslint-scope": "^3.7.7",
+ "@types/estree": "^1.0.6",
+ "@webassemblyjs/ast": "^1.14.1",
+ "@webassemblyjs/wasm-edit": "^1.14.1",
+ "@webassemblyjs/wasm-parser": "^1.14.1",
+ "acorn": "^8.14.0",
+ "browserslist": "^4.24.0",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.15.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.9",
+ "graceful-fs": "^4.2.11",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
"schema-utils": "^3.2.0",
"tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.3.7",
- "watchpack": "^2.4.0",
+ "terser-webpack-plugin": "^5.3.10",
+ "watchpack": "^2.4.1",
"webpack-sources": "^3.2.3"
},
"engines": {
@@ -43294,14 +41887,14 @@
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
- "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
+ "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==",
"peerDependenciesMeta": {
"webpack-cli": {
"optional": true
}
},
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
- "version": "5.88.2"
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz",
+ "version": "5.97.1"
},
"node_modules/webpack-cli": {
"bin": {
@@ -43453,6 +42046,40 @@
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
"version": "2.0.20"
},
+ "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": {
+ "dependencies": {
+ "@types/http-proxy": "^1.17.8",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==",
+ "peerDependencies": {
+ "@types/express": "^4.17.13"
+ },
+ "peerDependenciesMeta": {
+ "@types/express": {
+ "optional": true
+ }
+ },
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz",
+ "version": "2.0.7"
+ },
+ "node_modules/webpack-dev-server/node_modules/is-plain-obj": {
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ },
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "version": "3.0.0"
+ },
"node_modules/webpack-dev-server/node_modules/open": {
"dependencies": {
"define-lazy-prop": "^2.0.0",
@@ -44160,7 +42787,6 @@
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.7"
},
- "dev": true,
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
},
diff --git a/frontend/package.json b/frontend/package.json
index 5bc8f4fa6..280a1fefb 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -30,19 +30,25 @@
"@trussworks/react-uswds": "^5.1.1",
"autoprefixer": "^10.4.13",
"aws-amplify": "^5.3.12",
- "axios": "^1.6.2",
+ "axios": "^1.7.9",
"classnames": "^2.3.2",
+ "cookie": "^1.0.2",
"cors": "^2.8.5",
+ "cross-spawn": "^7.0.6",
"d3-scale": "^4.0.2",
"date-fns": "^3.6.0",
"date-fns-tz": "^3.1.3",
"decamelize": "^6.0.0",
- "dompurify": "^3.0.5",
+ "dompurify": "^2.5.8",
"express-rate-limit": "^7.1.3",
+ "fast-xml-parser": "^4.5.1",
"file-saver": "^2.0.5",
+ "http-proxy-middleware": "^3.0.3",
"jspdf": "^2.5.1",
"jwt-decode": "^3.1.2",
+ "nanoid": "^5.0.9",
"papaparse": "^5.3.2",
+ "path-to-regexp": "^8.2.0",
"postcss": "^8.4.18",
"query-string": "^7.1.1",
"react": "^18.2.0",
@@ -60,7 +66,8 @@
"react-table": "^7.8.0",
"react-to-print": "^2.15.1",
"resolve-url-loader": "^5.0.0",
- "universal-cookie": "^4.0.4",
+ "rollup": "^2.79.2",
+ "universal-cookie": "^7.2.2",
"uswds": "^2.13.3",
"web-vitals": "^2.1.4"
},
@@ -91,7 +98,7 @@
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-prettier": "^5.1.2",
"eslint-plugin-react": "^7.31.10",
- "express": "^4.18.2",
+ "express": "^4.21.2",
"helmet": "^7.0.0",
"jest-date-mock": "^1.0.8",
"prettier": "^3.0.3",
@@ -105,7 +112,7 @@
"serverless-webpack": "^5.11.0",
"ts-jest": "^29.1.1",
"typescript": "^4.8.4",
- "webpack": "^5.88",
+ "webpack": "^5.97.1",
"webpack-cli": "^5.1"
},
"engines": {
diff --git a/frontend/public/index.html b/frontend/public/index.html
index fa2a5d118..d5ffb026e 100644
--- a/frontend/public/index.html
+++ b/frontend/public/index.html
@@ -7,6 +7,25 @@