diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3cda36eff..ba4e260a4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,7 +1,8 @@ -# Frontend only for ngui +# Frontend ngui/ @hystax/ui +jira_ui/ @hystax/ui -# Backend for other directories +# Backend auth/ @hystax/backend bi_exporter/ @hystax/backend bumischeduler/ @hystax/backend @@ -13,7 +14,6 @@ gemini/ @hystax/backend herald/ @hystax/backend insider/ @hystax/backend jira_bus/ @hystax/backend -jira_ui/ @hystax/backend katara/ @hystax/backend keeper/ @hystax/backend metroculus/ @hystax/backend diff --git a/.github/workflows/auto-assign-author.yml b/.github/workflows/auto-assign-author.yml index a6983e579..5e83b31d9 100644 --- a/.github/workflows/auto-assign-author.yml +++ b/.github/workflows/auto-assign-author.yml @@ -9,16 +9,50 @@ jobs: runs-on: ubuntu-latest permissions: pull-requests: write + issues: write # Required because assignees API works via issues + contents: read # Minimal read access to repository contents steps: - name: Assign PR author uses: actions/github-script@v8 with: script: | - const reporter = context.actor - await github.rest.issues.addAssignees({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.payload.pull_request.number, - assignees: [reporter] - }) + // Repository owner (organization or user who owns the repo) + const owner = context.repo.owner; + + // Repository name + const repo = context.repo.repo; + + // Login of the pull request author + const prAuthor = context.payload.pull_request.user.login; + + try { + // Check the permission level of the PR author + const { data: perm } = + await github.rest.repos.getCollaboratorPermissionLevel({ + owner, + repo, + username: prAuthor + }); + + // If the author has write/maintain/admin rights → assign them to the PR + if (["write", "maintain", "admin"].includes(perm.permission)) { + await github.rest.issues.addAssignees({ + owner, + repo, + issue_number: context.payload.pull_request.number, + assignees: [prAuthor] + }); + console.log(`Assigned PR to ${prAuthor}`); + } else { + // If the author has insufficient rights → skip assignment + console.log( + `Skipping assignment for ${prAuthor}: permission=${perm.permission}` + ); + } + } catch (error) { + // If the author is not a collaborator (e.g., PR from a fork) → skip without failing + console.log( + `Skipping assignment for ${prAuthor}: not a collaborator` + ); + } diff --git a/.gitignore b/.gitignore index 19166677d..c30d2cabe 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ rest_api/.clickhouse **/.pytest_cache/ **/.ruff_cache/ # Build files +**/build **/dist **/*egg-info/ **/*.tar.gz @@ -24,4 +25,7 @@ rest_api/.clickhouse # jira_ui jira_ui/*/.env jira_ui/*/node_modules -jira_ui/*/build/ \ No newline at end of file +jira_ui/*/build/ + +# Vagrant +optscale-deploy/.vagrant/ diff --git a/README.md b/README.md index 4fa592414..26519a296 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,15 @@ ⭐ Drop a star to support OptScale ⭐

-# FinOps and cloud cost management platform to run any cloud workload with optimal performance and cost +# Open-Source FinOps & Cloud Cost Optimization Platform

-OptScale is an open source FinOps platform that optimizes cloud costs and performance for any workload, providing effective cloud cost management for all types of organizations. + +
OptScale is an open-source [FinOps and cloud cost optimization platform](https://hystax.com/optscale/finops-overview/) that helps engineering and finance teams control and reduce spend across AWS, Microsoft Azure, GCP, Alibaba Cloud, and Kubernetes clusters. +It provides deep visibility into infrastructure costs, automated optimization recommendations, and governance tools for R&D and data platforms. +

@@ -29,21 +32,56 @@ OptScale is an open source FinOps platform that optimizes cloud costs and perfor ![Average cloud cost savings](https://img.shields.io/badge/Average_cloud_cost_savings-38%25-yellow) + +
+ +

+
+ + + “Hystax OptScale has been a game-changer for our FinOps practice. Its powerful capabilities, flexibility, and seamless integration have empowered us to deliver unprecedented transparency, control, and cost optimization for our clients. We truly value our partnership with Hystax and are excited to innovate further together.” + +
+ Max Kuzkin, General Manager, SoftwareOne Platform +
+
+ +
+
-## OptScale FinOps and cloud cost optimization capabilities +## Overview +OptScale connects to your cloud accounts and Kubernetes clusters, ingests billing and usage data, and analyzes infrastructure consumption to surface actionable insights that eliminate waste and optimize resource usage. +It supports multi-cloud environments and integrates with popular data platforms, including Databricks, Amazon S3, and Amazon Redshift. + +
+ +## Key Features +### Cost optimization +
  • Unused and idle resource detection for VMs, volumes, databases, and other cloud resources
  • +
  • Rightsizing recommendations for overprovisioned instances and workloads
  • +
  • R&D resource power management to automatically stop non-production environments outside working hours
  • +
  • Commitment utilization analysis for Reserved Instances, Savings Plans, and Spot Instances
  • + + +### FinOps and governance +
  • FinOps dashboards for engineering, finance, and product teams to track and allocate cloud spend
  • +
  • Budgeting and alerting for cost anomalies, spikes, and budget overruns
  • +
  • Tagging and ownership visibility to attribute costs to teams, projects, and environments
  • +
  • Policy-driven governance and automation controls
  • + + +### Data and AI/ML workloads +
  • Databricks cost analytics with detailed visibility into cluster usage and idle time
  • +
  • S3 and object storage optimization (lifecycle, unused buckets, storage class recommendations)
  • + + +### Kubernetes and multi‑cloud +
  • Kubernetes cluster cost allocation per namespace, workload, and label with workload-level visibility
  • +
  • Multi-cloud support for AWS, Microsoft Azure, Google Cloud, and Alibaba Cloud from a single OptScale instance
  • -
  • Optimal utilization of Reserved Instances, Savings Plans, and Spot Instances
  • -
  • Unused resource detection
  • -
  • R&D resource power management and rightsizing
  • -
  • S3 duplicate object finder
  • -
  • Resource bottleneck identification
  • -
  • Optimal instance type and family selection
  • -
  • Databricks support
  • -
  • S3 and Redshift instrumentation
  • -
  • VM Power Schedules
  • +

    Learn more about [OptScale features for FinOps and multi-cloud cost management](https://hystax.com/optscale/finops-capabilities-and-benefits/). -
    You can check OptScale [live demo](https://my.optscale.com/live-demo) to explore product features on a pre-generated demo organization.
    Learn more about the Hystax OptScale platform and its capabilities at [our website](https://hystax.com). @@ -83,7 +121,7 @@ NVMe SSD is recommended. **OS Required**: [Ubuntu 24.04](https://releases.ubuntu.com/noble/). -_The current installation process should work also on Ubuntu 22.04_ +_The current installation process should also work on Ubuntu 22.04_ #### Updating old installation please follow [this document](documentation/update_to_24.04.md) to upgrade your existing installation on Ubuntu 20.04. diff --git a/auth/auth_server/alembic/versions/88f7bebcdcb9_add_user_options.py b/auth/auth_server/alembic/versions/88f7bebcdcb9_add_user_options.py new file mode 100644 index 000000000..48f047114 --- /dev/null +++ b/auth/auth_server/alembic/versions/88f7bebcdcb9_add_user_options.py @@ -0,0 +1,40 @@ +# pylint: disable=C0103 +"""Add user option table + +Revision ID: 88f7bebcdcb9 +Revises: 998f27cb8c46 +Create Date: 2026-03-10 16:27:40.340018 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '88f7bebcdcb9' +down_revision = '998f27cb8c46' +branch_labels = None +depends_on = None + + +def upgrade(): + op.create_table( + 'user_option', + sa.Column('id', sa.String(36), nullable=False), + sa.Column('created_at', sa.Integer(), nullable=False), + sa.Column('deleted_at', sa.Integer(), nullable=False), + sa.Column('user_id', sa.String(36), nullable=False), + sa.Column('name', sa.String(256), nullable=False), + sa.Column('value', sa.TEXT(), nullable=False), + sa.PrimaryKeyConstraint('id'), + sa.ForeignKeyConstraint(['user_id'], ['user.id']), + sa.UniqueConstraint('user_id', 'name', 'deleted_at', + name='uc_user_id_name_deleted_at') + ) + op.create_index(op.f('ix_user_option_user_name'), + 'user_option', ['user_id', 'name'], + unique=False) + + +def downgrade(): + op.drop_table('user_option') diff --git a/auth/auth_server/constants.py b/auth/auth_server/constants.py index 7e4e940c8..d16fa03c6 100644 --- a/auth/auth_server/constants.py +++ b/auth/auth_server/constants.py @@ -28,7 +28,10 @@ class Urls: r"%s/users/(?P[^/]+)/action_resources", 'bulk_action_resources': r"%s/bulk_action_resources", 'signin': r"%s/signin", - 'verification_codes': r"%s/verification_codes" + 'verification_codes': r"%s/verification_codes", + 'user_options_collection': r"%s/users/(?P[^/]+)/options", + 'user_options': + r"%s/users/(?P[^/]+)/options/(?P[^/]+)" } def __init__(self): diff --git a/auth/auth_server/controllers/user_option.py b/auth/auth_server/controllers/user_option.py new file mode 100644 index 000000000..cc9e4e6e9 --- /dev/null +++ b/auth/auth_server/controllers/user_option.py @@ -0,0 +1,93 @@ +import logging + +from auth.auth_server.controllers.base import BaseController +from auth.auth_server.controllers.base_async import BaseAsyncControllerWrapper +from auth.auth_server.exceptions import Err +from auth.auth_server.models.models import UserOption, User +from auth.auth_server.utils import (strtobool, check_string_attribute, + check_valid_json) +from tools.optscale_exceptions.common_exc import ( + WrongArgumentsException, ForbiddenException, NotFoundException) + +LOG = logging.getLogger(__name__) + + +class UserOptionsController(BaseController): + def _get_model_type(self): + return UserOption + + def check_user_access(self, user_id, token): + req_user = self.get_user_by_id(user_id) + if not req_user: + raise NotFoundException(Err.OA0003, [User.__name__, user_id]) + if token: + token_user = self.get_user(token) + if token_user.id != user_id: + raise ForbiddenException(Err.OA0012, []) + return req_user + + def get_by_name(self, user_id, option_name, **kwargs): + token = kwargs.get('token', None) + self.check_user_access(user_id, token) + user_options = super().list(user_id=user_id, name=option_name) + if len(user_options) > 1: + raise WrongArgumentsException(Err.OA0029, []) + elif len(user_options) == 0: + return '{}' + else: + return user_options[0].value + + def list(self, user_id, **kwargs): + token = kwargs.get('token', None) + self.check_user_access(user_id, token) + with_values = kwargs.get('with_values', False) + try: + if not isinstance(with_values, bool): + with_values = strtobool(with_values) + except ValueError: + raise WrongArgumentsException(Err.OA0063, ['with_values']) + base_list = super().list(user_id=user_id) + result = [ + { + 'name': obj.name, 'value': obj.value + } if with_values else obj.name for obj in base_list + ] + return result + + def patch(self, user_id, option_name, value_data, **kwargs): + token = kwargs.get('token', None) + self.check_user_access(user_id, token) + + options = super().list(user_id=user_id, name=option_name) + check_valid_json(value_data, 'value') + if len(options) > 1: + raise WrongArgumentsException(Err.OA0029, []) + elif len(options) == 0: + check_string_attribute('option_name', option_name, + max_length=256) + res = super().create(user_id=user_id, name=option_name, + deleted_at=0, value=value_data) + return res.value + else: + option = options[0] + res = super().edit(option.id, value=value_data) + return res.value + + def delete(self, user_id, option_name, **kwargs): + token = kwargs.get('token', None) + self.check_user_access(user_id, token) + + options = super().list(user_id=user_id, name=option_name) + if len(options) > 1: + raise WrongArgumentsException(Err.OA0029, []) + elif len(options) == 0: + raise NotFoundException( + Err.OA0003, [UserOption.__name__, option_name]) + else: + option = options[0] + super().delete(option.id) + + +class UserOptionsAsyncController(BaseAsyncControllerWrapper): + def _get_controller_class(self): + return UserOptionsController diff --git a/auth/auth_server/exceptions.py b/auth/auth_server/exceptions.py index 04f3b8fa0..014035aad 100644 --- a/auth/auth_server/exceptions.py +++ b/auth/auth_server/exceptions.py @@ -130,7 +130,7 @@ class Err(enum.Enum): "Invalid model type: %s", ] OA0046 = [ - "Payload is not a valid json", + "%s is not a valid json", ] OA0047 = [ "Payload is malformed", diff --git a/auth/auth_server/handlers/v2/__init__.py b/auth/auth_server/handlers/v2/__init__.py index f1ce1ff99..8ec6c5b2c 100644 --- a/auth/auth_server/handlers/v2/__init__.py +++ b/auth/auth_server/handlers/v2/__init__.py @@ -12,3 +12,4 @@ import auth.auth_server.handlers.v2.types import auth.auth_server.handlers.v2.signin import auth.auth_server.handlers.v2.verification_codes +import auth.auth_server.handlers.v2.user_options diff --git a/auth/auth_server/handlers/v2/base.py b/auth/auth_server/handlers/v2/base.py index 28a9af369..49d6da032 100644 --- a/auth/auth_server/handlers/v2/base.py +++ b/auth/auth_server/handlers/v2/base.py @@ -1,6 +1,6 @@ import json -from tools.optscale_exceptions.common_exc import WrongArgumentsException +from tools.optscale_exceptions.http_exc import OptHTTPError from auth.auth_server.exceptions import Err from auth.auth_server.handlers.v1.base import BaseHandler as BaseHandler_v1 @@ -17,13 +17,13 @@ def get_arg(self, name, type_, default=None, repeated=False): if type_ == bool and isinstance(arg, str): lowered = arg.lower() if lowered not in ['true', 'false']: - raise WrongArgumentsException(Err.OA0063, [name]) + raise OptHTTPError(400, Err.OA0063, [name]) return lowered == 'true' return type_(arg) else: return arg except ValueError: - raise WrongArgumentsException(Err.OA0060, [name]) + raise OptHTTPError(400, Err.OA0060, [name]) def parse_url_params_into_payload(self, payload_map_params): data = {} diff --git a/auth/auth_server/handlers/v2/user_options.py b/auth/auth_server/handlers/v2/user_options.py new file mode 100644 index 000000000..79db91235 --- /dev/null +++ b/auth/auth_server/handlers/v2/user_options.py @@ -0,0 +1,294 @@ +import json + +from auth.auth_server.handlers.v1.base import ( + BaseAsyncAuthCollectionHandler, BaseAsyncAuthItemHandler, + BaseSecretHandler) +from auth.auth_server.handlers.v2.base import BaseHandler as BaseHandler_v2 +from auth.auth_server.exceptions import Err +from auth.auth_server.controllers.user_option import UserOptionsAsyncController +from auth.auth_server.utils import ModelEncoder, run_task +from tools.optscale_exceptions.http_exc import OptHTTPError + + +class UserOptionsAsyncCollectionHandler(BaseAsyncAuthCollectionHandler, + BaseSecretHandler, BaseHandler_v2): + def _get_controller_class(self): + return UserOptionsAsyncController + + def prepare(self): + pass + + async def post(self, user_id, **url_params): + self.raise405() + + async def get(self, user_id): + """ + --- + description: | + Returns a list of options specified for user. + Required permission: TOKEN or CLUSTER_SECRET + tags: [user_options] + summary: List of options specified for user + parameters: + - name: user_id + in: path + description: User ID + required: true + type: string + - name: with_values + in: query + description: Options with values + required: false + type: boolean + responses: + 200: + description: User options list + schema: + type: object + properties: + options: + type: array + items: + type: object + properties: + name: + type: string + description: option name + value: + type: string + description: option value + 400: + description: | + Wrong arguments: + - OA0063: Parameter should be true or false + 401: + description: | + Unauthorized: + - OA0010: Token not found + - OA0023: Unauthorized + - OA0062: This resource requires an authorization token + 403: + description: | + Forbidden: + - OA0006: Bad secret + - OA0012: Forbidden! + 404: + description: | + Not found: + - OA0024: User was not found + security: + - token: [] + - secret: [] + """ + args = {} + if self.secret: + self.check_cluster_secret() + else: + await self.check_token() + args.update(self.token) + with_values = self.get_arg('with_values', bool, False) + args.update({'with_values': with_values}) + result = await run_task( + self.controller.list, user_id, **args) + option_dict = {'options': result} + self.write(json.dumps(option_dict, cls=ModelEncoder)) + + +class UserOptionsAsyncItemHandler(BaseAsyncAuthItemHandler, + BaseSecretHandler): + def _get_controller_class(self): + return UserOptionsAsyncController + + def prepare(self): + pass + + async def put(self, **url_params): + self.raise405() + + async def get(self, user_id, option_name): + """ + --- + description: | + Returns the option value for the specified user. + Required permission: TOKEN or CLUSTER_SECRET + tags: [user_options] + summary: Option value for the specified user + parameters: + - name: user_id + in: path + description: User ID + required: true + type: string + - name: option_name + in: path + description: option name + required: true + type: string + responses: + 200: + description: Option value + schema: + type: object + properties: + value: + type: string + description: Option value + 401: + description: | + Unauthorized: + - OA0010: Token not found + - OA0023: Unauthorized + - OA0062: This resource requires an authorization token + 403: + description: | + Forbidden: + - OA0006: Bad secret + - OA0012: Forbidden! + 404: + description: | + Not found: + - OA0024: User was not found + security: + - token: [] + - secret: [] + """ + args = {} + if self.secret: + self.check_cluster_secret() + else: + await self.check_token() + args.update(self.token) + result = await run_task( + self.controller.get_by_name, user_id, option_name, **args) + value_dict = {'value': result} + self.write(json.dumps(value_dict, cls=ModelEncoder)) + + async def patch(self, user_id, option_name): + """ + --- + description: | + Modifies or creates an option for a user + Required permission: TOKEN or CLUSTER_SECRET + tags: [user_options] + summary: Modify/create option + parameters: + - name: user_id + in: path + description: User ID + required: true + type: string + - name: option_name + in: path + description: Option name + required: true + type: string + - name: body + in: body + description: Option value + required: true + schema: + type: object + properties: + value: + type: string + description: Option value + + responses: + 200: + description: Success (returns created/modified value) + schema: + type: object + properties: + value: + type: string + description: Option value + 400: + description: | + Wrong arguments: + - OA0032: Parameter is not provided + - OA0046: Value is not a valid json + - OA0048: Parameter should contain 1-256 characters + 401: + description: | + Unauthorized: + - OA0010: Token not found + - OA0023: Unauthorized + - OA0062: This resource requires an authorization token + 403: + description: | + Forbidden: + - OA0006: Bad secret + - OA0012: Forbidden! + 404: + description: | + Not found: + - OA0024: User was not found + security: + - token: [] + - secret: [] + """ + args = {} + if self.secret: + self.check_cluster_secret() + else: + await self.check_token() + args.update(self.token) + value_data = self._request_body().get('value') + if not value_data: + raise OptHTTPError(400, Err.OA0032, ['value']) + result = await run_task( + self.controller.patch, user_id, option_name, value_data, **args) + value_dict = {'value': result} + self.write(json.dumps(value_dict, cls=ModelEncoder)) + + async def delete(self, user_id, option_name): + """ + --- + description: | + Deletes the specified option for the user + Required permission: TOKEN or CLUSTER_SECRET + tags: [user_options] + summary: Delete option + parameters: + - name: user_id + in: path + description: User ID + required: true + type: string + - name: option_name + in: path + description: Option name + required: true + type: string + responses: + 204: + description: Success + 401: + description: | + Unauthorized: + - OA0010: Token not found + - OA0023: Unauthorized + - OA0062: This resource requires an authorization token + 403: + description: | + Forbidden: + - OA0006: Bad secret + - OA0012: Forbidden! + 404: + description: | + Not found: + - OA0003: UserOption not found + - OA0024: User was not found + security: + - token: [] + - secret: [] + """ + args = {} + if self.secret: + self.check_cluster_secret() + else: + await self.check_token() + args.update(self.token) + await run_task( + self.controller.delete, user_id, option_name, **args) + self.set_status(204) diff --git a/auth/auth_server/models/models.py b/auth/auth_server/models/models.py index 83a5f1b73..2ee473346 100644 --- a/auth/auth_server/models/models.py +++ b/auth/auth_server/models/models.py @@ -413,3 +413,20 @@ class VerificationCode(Base, BaseMixin): valid_until = Column(TIMESTAMP, nullable=False) code = Column(String(32), nullable=False, info=ColumnPermissions.create_only) + + +class UserOption(Base, BaseMixin): + __tablename__ = 'user_option' + __table_args__ = ( + Index('ix_user_option_user_name', "user_id", "name", unique=True), + UniqueConstraint("user_id", "name", "deleted_at", + name="uc_user_id_name_deleted_at") + ) + + user_id = Column(String(36), ForeignKey('user.id'), nullable=False, + info=ColumnPermissions.create_only) + user = relationship("User", foreign_keys=[user_id]) + name = Column(String(256), nullable=False, + info=ColumnPermissions.create_only) + value = Column(TEXT, nullable=False, default='{}', + info=ColumnPermissions.full) diff --git a/auth/auth_server/server.py b/auth/auth_server/server.py index cfe63bdc3..083f27583 100644 --- a/auth/auth_server/server.py +++ b/auth/auth_server/server.py @@ -88,6 +88,12 @@ def get_handlers(handler_kwargs): h_v2, "signin").SignInAsyncHandler, handler_kwargs), (urls_v2.verification_codes, get_handler_version( h_v2, "verification_codes").VerificationCodeAsyncHandler, + handler_kwargs), + (urls_v2.user_options_collection, get_handler_version( + h_v2, "user_options").UserOptionsAsyncCollectionHandler, + handler_kwargs), + (urls_v2.user_options, get_handler_version( + h_v2, "user_options").UserOptionsAsyncItemHandler, handler_kwargs) ] diff --git a/auth/auth_server/tests/unittests/test_api_user.py b/auth/auth_server/tests/unittests/test_api_user.py index 7c3d4f177..167ddd43c 100644 --- a/auth/auth_server/tests/unittests/test_api_user.py +++ b/auth/auth_server/tests/unittests/test_api_user.py @@ -722,6 +722,19 @@ def test_create_string_type_id(self): self.assertEqual(response['error']['reason'], 'Parameter "type_id" is immutable') + def test_check_invalid_user_info(self): + code, response = self.client.user_exists( + 'test@email.com', user_info=True) + self.assertEqual(code, 200) + self.assertEqual(response['exists'], False) + self.assertIsNone(response.get('user_info')) + + for invalid_value in [1234, 'invalid']: + code, response = self.client.user_exists( + 'test@email.com', user_info=invalid_value) + self.assertEqual(code, 400) + self.assertEqual(response['error']['error_code'], 'OA0063') + def test_check_existence(self): code, response = self.client.user_exists('test@email.com') self.assertEqual(code, 200) diff --git a/auth/auth_server/tests/unittests/test_api_user_options.py b/auth/auth_server/tests/unittests/test_api_user_options.py new file mode 100644 index 000000000..0108f75ae --- /dev/null +++ b/auth/auth_server/tests/unittests/test_api_user_options.py @@ -0,0 +1,240 @@ +import json + +from auth.auth_server.models.models import ( + Type, User, Action, Role, Assignment, ActionGroup, UserOption) +from auth.auth_server.models.models import gen_salt +from auth.auth_server.tests.unittests.test_api_base import TestAuthBase +from auth.auth_server.utils import hash_password + + +class TestUserOptionsApi(TestAuthBase): + def setUp(self, version="v2"): + super().setUp(version) + self.partner_scope_id = 'a5cb80ad-891d-4ec2-99de-ba4f20ba2c5d' + self.customer1_scope_id = '19a00828-fbff-4318-8291-4b6c14a8066d' + self.customer2_scope_id = '6cfea3e7-a037-4529-9a14-dd9c5151b1f5' + self.group11_scope_id = 'be7b4d5e-33b6-40aa-bc6a-00c7d822606f' + self.hierarchy = ( + {'root': {'null': {'partner': { + 'a5cb80ad-891d-4ec2-99de-ba4f20ba2c5d': + {'customer': { + '19a00828-fbff-4318-8291-4b6c14a8066d': + {'group': ['be7b4d5e-33b6-40aa-bc6a-00c7d822606f'] + }, + '6cfea3e7-a037-4529-9a14-dd9c5151b1f5': + {'group': ['e8b8b4e9-a92d-40b5-a5db-b38bf5314ef9', + '42667dde-0427-49be-9541-8e99362ee96e'] + }, + }}, + '843f42c4-76b5-467f-b5e3-f7370b1235d6': {'customer': {}}}}}}) + admin_user = self.create_root_user() + session = self.db_session + type_partner = Type(id_=10, name='partner', parent=admin_user.type) + type_customer = Type(id_=20, name='customer', parent=type_partner) + type_group = Type(id_=30, name='group', parent=type_customer) + self.user_type_id = int(type_group.id) + salt = gen_salt() + self.user_partner_email = 'partner@domain.com' + self.user_partner_password = 'passwd!!!111' + user_partner = User( + self.user_partner_email, type_=type_partner, + password=hash_password( + self.user_partner_password, salt), + display_name='Partner user', scope_id=self.partner_scope_id, + salt=salt, type_id=type_partner.id) + self.user_customer_password = 'p@sswRD!' + user_customer = User( + 'customer@domain.com', type_=type_customer, + salt=salt, + display_name='Customer user', + password=hash_password( + self.user_customer_password, salt), + scope_id=self.customer1_scope_id, type_id=type_customer.id) + customer2_salt = gen_salt() + self.user_customer2_password = 'p4$$w0rddd' + self.user_customer2 = User( + 'customer2@domain.com', type_=type_customer, + salt=customer2_salt, + display_name='user customer2', + password=hash_password(self.user_customer2_password, + customer2_salt), + scope_id=self.customer2_scope_id, type_id=type_customer.id) + + user_action_group = ActionGroup(name='Manage users and assignments') + # admin action has type=root + action_list_users = Action(name='LIST_USERS', type_=type_customer, + action_group=user_action_group) + action_edit_user_info = Action(name='EDIT_USER_INFO', + type_=type_customer, + action_group=user_action_group) + admin_role = Role(name='ADMIN', type_=type_customer, + lvl=type_customer, scope_id=self.customer1_scope_id, + description='Admin') + partner1_nodelete_role = Role(name='P1 No delete', type_=type_partner, + lvl=type_customer, + scope_id=self.partner_scope_id) + partner1_delete_role = Role(name='P1 User Deleter', type_=type_partner, + lvl=type_customer) + session.add(type_partner) + session.add(type_customer) + session.add(type_group) + session.add(user_partner) + session.add(user_customer) + session.add(self.user_customer2) + session.add(action_list_users) + session.add(action_edit_user_info) + session.add(admin_role) + session.add(partner1_nodelete_role) + session.add(partner1_delete_role) + admin_role.assign_action(action_list_users) + admin_role.assign_action(action_edit_user_info) + partner1_nodelete_role.assign_action(action_list_users) + assignment = Assignment(user_customer, admin_role, + type_customer, self.customer1_scope_id) + assignment_p_c1 = Assignment(user_partner, partner1_nodelete_role, + type_customer, self.customer1_scope_id) + assignment_p_c1_del = Assignment(user_partner, partner1_delete_role, + type_partner, self.partner_scope_id) + + session.add(assignment) + session.add(assignment_p_c1) + session.add(assignment_p_c1_del) + session.commit() + self.client.token = self.get_token(user_customer.email, + self.user_customer_password) + + self.user_id1 = user_customer.id + self.user_id2 = self.user_customer2.id + self.user_value1 = json.dumps({'key1': 'value1'}) + self.value1 = {'value': self.user_value1} + self.name1 = 'default_option' + self.user_value2 = json.dumps({'key2': 'value2'}) + self.value2 = {'value': self.user_value2} + self.name2 = 'new_option' + self.user_option_1 = UserOption(user_id=self.user_id1, name=self.name1, + value=self.user_value1) + self.user_option_2 = UserOption(user_id=self.user_id2, name=self.name2, + value=self.user_value2) + session.add(self.user_option_1) + session.add(self.user_option_2) + session.commit() + + def test_create_user_option(self): + code, resp = self.client.user_options_create( + self.user_id1, self.name2, self.value1) + self.assertEqual(code, 200) + self.assertEqual(resp, self.value1) + # trying to create an option with the same keys should result + # in the record being updated + code, resp = self.client.user_options_create( + self.user_id1, self.name2, self.value2) + self.assertEqual(code, 200) + self.assertEqual(resp, self.value2) + + code, resp = self.client.user_options_create( + self.user_id1, self.name1, {'value': 'some_str_not_json'}) + self.assertEqual(code, 400) + self.assertEqual(resp['error']['error_code'], 'OA0046') + + code, resp = self.client.user_options_create( + self.user_id1, self.name1, {'value': 123}) + self.assertEqual(code, 400) + self.assertEqual(resp['error']['error_code'], 'OA0046') + + code, resp = self.client.user_options_create( + self.user_id1, self.name1, {'value': True}) + self.assertEqual(code, 400) + self.assertEqual(resp['error']['error_code'], 'OA0046') + + code, resp = self.client.user_options_create( + self.user_id1, self.name1, {'value': 1.23}) + self.assertEqual(code, 400) + self.assertEqual(resp['error']['error_code'], 'OA0046') + + code, _ = self.client.user_options_create( + 'abcd', self.name1, self.value1) + self.assertEqual(code, 404) + + def test_update_user_option(self): + code, resp = self.client.user_options_update( + self.user_id1, self.name1, self.value2) + self.assertEqual(code, 200) + self.assertEqual(resp, self.value2) + # trying to update an option with nonexistent keys should result + # in a record being created + code, resp = self.client.user_options_update( + self.user_id2, self.name1, self.value2) + self.assertEqual(code, 200) + self.assertEqual(resp, self.value2) + + code, resp = self.client.user_options_update( + self.user_id2, self.name1, {'value': 'some_str_not_json'}) + self.assertEqual(code, 400) + self.assertEqual(resp['error']['error_code'], 'OA0046') + + code, resp = self.client.user_options_update( + 'abcd', self.name1, self.value1) + self.assertEqual(code, 404) + + def test_get_user_option(self): + code, resp = self.client.user_options_get( + self.user_id1, self.name1) + self.assertEqual(code, 200) + self.assertEqual(resp, self.value1) + code, resp = self.client.user_options_get( + self.user_id1, self.name2) + self.assertEqual(code, 200) + self.assertEqual(resp.get('value'), '{}') + code, _ = self.client.user_options_get('abcd', self.name1) + self.assertEqual(code, 404) + + def test_list_user_option(self): + code, resp = self.client.user_options_list(self.user_id1) + self.assertEqual(code, 200) + self.assertEqual(len(resp.get('options')), 1) + _, _ = self.client.user_options_create( + self.user_id1, self.name2, self.value2) + + code, resp = self.client.user_options_list(self.user_id1) + self.assertEqual(code, 200) + self.assertEqual(len(resp.get('options')), 2) + self.assertEqual(resp['options'], ['default_option', 'new_option']) + + for invalid_value in [1234, 'invalid']: + code, resp = self.client.user_options_list( + self.user_id1, with_values=invalid_value) + self.assertEqual(code, 400) + self.assertEqual(resp['error']['error_code'], 'OA0063') + + code, resp = self.client.user_options_list( + self.user_id1, with_values=True) + self.assertEqual(code, 200) + self.assertEqual(len(resp.get('options')), 2) + self.assertEqual(resp['options'], [{ + 'name': 'default_option', + 'value': '{"key1": "value1"}' + }, { + 'name': 'new_option', + 'value': '{"key2": "value2"}' + }]) + + _, _ = self.client.user_options_delete(self.user_id2, self.name2) + code, resp = self.client.user_options_list(self.user_id2) + self.assertEqual(code, 200) + self.assertEqual(len(resp.get('options')), 0) + code, _ = self.client.user_options_list('abcd') + self.assertEqual(code, 404) + + def test_delete_user_option(self): + code, _ = self.client.user_options_delete( + self.user_id1, self.name1) + self.assertEqual(code, 204) + code, resp = self.client.user_options_list(self.user_id1) + self.assertEqual(code, 200) + self.assertEqual(len(resp.get('options')), 0) + code, _ = self.client.user_options_delete( + self.user_id1, self.name1) + self.assertEqual(code, 404) + code, _ = self.client.user_options_delete( + 'abcd', self.name1) + self.assertEqual(code, 404) diff --git a/auth/auth_server/utils.py b/auth/auth_server/utils.py index f14d15f14..e086840ce 100644 --- a/auth/auth_server/utils.py +++ b/auth/auth_server/utils.py @@ -149,6 +149,13 @@ def check_list_attribute(name, value, required=True): raise WrongArgumentsException(Err.OA0055, [name]) +def strtobool(val): + val = val.lower() + if val not in ['true', 'false']: + raise ValueError('Should be false or true') + return val == 'true' + + class ModelEncoder(json.JSONEncoder): # pylint: disable=E0202 def default(self, obj): @@ -198,14 +205,28 @@ def unique_list(list_to_filter): return list(set(list_to_filter)) -def load_payload(payload): +def _get_valid_json(json_str_value, json_value_key): try: - payload_dict = json.loads(payload) - if not isinstance(payload_dict, dict): - raise WrongArgumentsException(Err.OA0047, []) - except ValueError: - raise WrongArgumentsException(Err.OA0046, []) - return payload_dict + json_dict = json.loads(json_str_value) + if not isinstance(json_dict, dict): + return None + except (TypeError, ValueError): + raise WrongArgumentsException(Err.OA0046, [json_value_key]) + return json_dict + + +def check_valid_json(json_str_value, json_value_key): + json_dict = _get_valid_json(json_str_value, json_value_key) + if json_dict is None: + raise WrongArgumentsException(Err.OA0046, [json_value_key]) + return json_dict + + +def load_payload(json_payload, payload_key='Payload'): + json_dict = _get_valid_json(json_payload, payload_key) + if json_dict is None: + raise WrongArgumentsException(Err.OA0047, []) + return json_dict def popkey(obj, key): diff --git a/build.sh b/build.sh index 11c388527..e6e12da6b 100755 --- a/build.sh +++ b/build.sh @@ -110,6 +110,12 @@ do else echo "Building image for ${COMPONENT}, build tag: ${BUILD_TAG}" $BUILD_TOOL build $FLAGS -t ${COMPONENT}:${BUILD_TAG} -f ${DOCKERFILE} . + + # If the build fails, exit with the same status code as the build command + build_status_code="$?" + if [ "$build_status_code" -gt 0 ]; then + exit $build_status_code + fi fi if use_registry; then diff --git a/bumiworker/bumiworker/modules/archive/instance_subscription.py b/bumiworker/bumiworker/modules/archive/instance_subscription.py index afe0bb19c..4fb6530b2 100644 --- a/bumiworker/bumiworker/modules/archive/instance_subscription.py +++ b/bumiworker/bumiworker/modules/archive/instance_subscription.py @@ -27,12 +27,13 @@ def __init__(self, *args, **kwargs): def supported_cloud_types(self): return SUPPORTED_CLOUD_TYPES - def _has_discounts(self, raw_info): + @staticmethod + def _has_discounts(raw_info): if raw_info.get('cost') == 0: # savings plan applied return True for key in ['coupons_discount', 'resource_package_discount']: - if key in raw_info and float(raw_info[key]): + if key in raw_info and float(raw_info[key] or 0): return True def _get(self, previous_options, optimizations, cloud_accounts_map, diff --git a/docker_images/cleanelkdb/clean-elk-db.sh b/docker_images/cleanelkdb/clean-elk-db.sh index 2838d86f6..aec975465 100644 --- a/docker_images/cleanelkdb/clean-elk-db.sh +++ b/docker_images/cleanelkdb/clean-elk-db.sh @@ -22,7 +22,8 @@ remove_line_from_filebeat() { remove_index_from_elk() { echo "DELETING "$2" INDEX FROM ELK" - curl -s -X DELETE $1':'$ELK_PORT'/'$2 + encoded_index=$(jq -rn --arg index "$2" '$index|@uri') + curl -s -X DELETE $1':'$ELK_PORT'/'$encoded_index } m_total_log_size=$(get_size_of_logs $ELK_IP) @@ -34,12 +35,11 @@ fi echo "SIZE OF LOGS BIGGER "$LOG_SIZE_MAX"Mb -> START TO REMOVE LOGS" curl -s -X GET "$ELK_IP:$ELK_PORT/_cat/indices?v" > curl_test.txt -cat curl_test.txt | awk '/filebeat/ { print $3 }' | sort --reverse > filebeat.txt +grep -oE '(%{[^}]+}|[a-zA-Z_]+)-[0-9]{4}\.[0-9]{2}\.[0-9]{2}' curl_test.txt | sort -t '-' -k2,2 > filebeat.txt while [ $m_total_log_size -gt $LOG_SIZE_MAX ]; do m_filebeat=$(tail -n -1 filebeat.txt) filebeat_date=$(echo $m_filebeat | awk -F '-' '{ print $2 }') - if [ "$m_filebeat" = "" ] ; then break else diff --git a/docker_images/common/install-peer-finder.sh b/docker_images/common/install-peer-finder.sh new file mode 100644 index 000000000..421f7e71b --- /dev/null +++ b/docker_images/common/install-peer-finder.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# TODO: Instead of this script we should use multi stage docker builds +# but this is good enough until we get arround to it +# Or even better -- see if we need this tool at all or if there is a better +# way to install it (e.g. via a package manager) + +set -x + +arch="$(uname -m)" +dest_bin_path="/usr/local/bin/peer-finder" + +apt-get update +apt-get install -y --no-install-recommends openssl ca-certificates wget +rm -rf /var/lib/apt/lists/* + +if [[ "$arch" == "x86_64" || "$arch" == "amd64" ]]; then + wget -O $dest_bin_path https://storage.googleapis.com/kubernetes-release/pets/peer-finder +elif [[ "$arch" == "aarch64" || "$arch" == "arm64" ]]; then + wget https://github.com/kmodules/peer-finder/releases/download/v1.0.2/peer-finder-linux-arm64.tar.gz \ + -O /tmp/peer-finder-linux-arm64.tar.gz + tar -xzf /tmp/peer-finder-linux-arm64.tar.gz -C /tmp + mv /tmp/peer-finder-linux-arm64 $dest_bin_path +else + echo "Unsupported architecture: $arch" + exit 1 +fi + +chmod +x $dest_bin_path +apt-get purge -y --auto-remove ca-certificates wget + diff --git a/docker_images/error_pages/Dockerfile b/docker_images/error_pages/Dockerfile index 4df9b45bb..f2ad6b273 100644 --- a/docker_images/error_pages/Dockerfile +++ b/docker_images/error_pages/Dockerfile @@ -1,3 +1,10 @@ -FROM ingressnginx/custom-error-pages:v1.2.0 +# TODO: The base image doesn't support arm64 yet but shouldn't be too hard to change that, +# though it will require a change in the `kubernetes/ingress-nginx` repo. +# References: +# * Base image's Dockerfile: https://github.com/kubernetes/ingress-nginx/blob/main/images/custom-error-pages/rootfs/Dockerfile +# * Relevant issue on GitHub: https://github.com/kubernetes/ingress-nginx/issues/10245 + +ARG arch=amd64 +FROM --platform="linux/${arch}" ingressnginx/custom-error-pages:v1.2.0 COPY docker_images/error_pages/www /www diff --git a/docker_images/etcd/Dockerfile b/docker_images/etcd/Dockerfile index 1c550c86d..bb432aaa3 100644 --- a/docker_images/etcd/Dockerfile +++ b/docker_images/etcd/Dockerfile @@ -1,7 +1,18 @@ -FROM gcr.io/etcd-development/etcd:v3.2.13 -RUN apk update -# https://github.com/Yelp/dumb-init/issues/73#issuecomment-240439732 -RUN apk add ca-certificates wget && update-ca-certificates -RUN apk --no-cache add curl -RUN wget $(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/nexusriot/etcd-walker/releases/tags/0.0.11 | grep -Eo 'https://(.*linux_x64_static)') -O /bin/etcd-walker +# etcd is a distroless image starting from v3.5, meaning we don't have access to a shell or package manager. +# this is why we use multi-stage builds to build and copy the binary into the final image. +# ref: https://github.com/GoogleContainerTools/distroless?tab=readme-ov-file#docker + +FROM golang:1.24.6 AS build-etcd-walker + +RUN git clone https://github.com/nexusriot/etcd-walker/ /tmp/etcd-walker-src + +WORKDIR /tmp/etcd-walker-src +RUN git checkout 0.2.1 +RUN go build -ldflags "-linkmode external -extldflags -static" -o etcd-walker cmd/etcd-walker/main.go + +RUN mv etcd-walker /bin/etcd-walker RUN chmod +x /bin/etcd-walker + +# NOTE: v3.6+ require significant changes as they removed support for the V2 API, see https://etcd.io/docs/v3.6/upgrades/upgrade_3_6/ +FROM gcr.io/etcd-development/etcd:v3.2.13 +COPY --from=build-etcd-walker /bin/etcd-walker /bin/etcd-walker diff --git a/docker_images/grafana/Dockerfile b/docker_images/grafana/Dockerfile index cb9142efc..90a351f01 100644 --- a/docker_images/grafana/Dockerfile +++ b/docker_images/grafana/Dockerfile @@ -1,4 +1,4 @@ -FROM grafana/grafana:8.2.1 +FROM grafana/grafana:12.3.2 COPY docker_images/grafana/datasource.yaml /etc/grafana/provisioning/datasources/ COPY docker_images/grafana/dashboard.yaml /etc/grafana/provisioning/dashboards/ diff --git a/docker_images/grafana/datasource.yaml b/docker_images/grafana/datasource.yaml index 9f3e83b87..7b9827b8f 100644 --- a/docker_images/grafana/datasource.yaml +++ b/docker_images/grafana/datasource.yaml @@ -20,3 +20,18 @@ datasources: version: 1 # allow users to edit datasources from the UI. editable: false +- name: Tempo + type: tempo + uid: tempo + access: proxy + url: http://tempo:3200 + basicAuth: false + isDefault: false + jsonData: + search: + hide: false + nodeGraph: + enabled: true + spanBar: + type: Tag + tag: http.path diff --git a/docker_images/mariadb/Dockerfile b/docker_images/mariadb/Dockerfile index 707ad28cf..5025591f9 100644 --- a/docker_images/mariadb/Dockerfile +++ b/docker_images/mariadb/Dockerfile @@ -1,11 +1,8 @@ FROM mariadb:10.3 -RUN set -x \ - && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget \ - && rm -rf /var/lib/apt/lists/* \ - && wget -O /usr/local/bin/peer-finder https://storage.googleapis.com/kubernetes-release/pets/peer-finder \ - && chmod +x /usr/local/bin/peer-finder \ - && apt-get purge -y --auto-remove ca-certificates wget +COPY docker_images/common/install-peer-finder.sh /tmp/install-peer-finder.sh +RUN chmod +x /tmp/install-peer-finder.sh +RUN /tmp/install-peer-finder.sh COPY docker_images/mariadb/galera /opt/galera/ COPY docker_images/mariadb/docker-entrypoint.sh /usr/local/bin/ diff --git a/docker_images/mongo/Dockerfile b/docker_images/mongo/Dockerfile index 39b1d0d07..683d3ba27 100644 --- a/docker_images/mongo/Dockerfile +++ b/docker_images/mongo/Dockerfile @@ -1,10 +1,7 @@ FROM mongo:3.6 -RUN set -x \ - && apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates wget \ - && rm -rf /var/lib/apt/lists/* \ - && wget -O /usr/local/bin/peer-finder https://storage.googleapis.com/kubernetes-release/pets/peer-finder \ - && chmod +x /usr/local/bin/peer-finder \ - && apt-get purge -y --auto-remove ca-certificates wget +COPY docker_images/common/install-peer-finder.sh /tmp/install-peer-finder.sh +RUN chmod +x /tmp/install-peer-finder.sh +RUN /tmp/install-peer-finder.sh COPY docker_images/mongo/on-start.sh /on-start.sh diff --git a/docker_images/resource_discovery/worker.py b/docker_images/resource_discovery/worker.py index b4bced622..711c980ae 100644 --- a/docker_images/resource_discovery/worker.py +++ b/docker_images/resource_discovery/worker.py @@ -401,7 +401,7 @@ def discover_resources(self, task): self._update_discovery_info( cloud_acc_id, resource_type, last_error_at=utcnow_timestamp(), - last_error=str(ex)[:255]) + last_error=str(ex)[:1024]) raise def _update_discovery_info(self, cloud_acc_id, resource_type, **kwargs): diff --git a/documentation/images/Max_Kuzkin.png b/documentation/images/Max_Kuzkin.png new file mode 100644 index 000000000..b62f147ba Binary files /dev/null and b/documentation/images/Max_Kuzkin.png differ diff --git a/documentation/setup_dev_vm.md b/documentation/setup_dev_vm.md new file mode 100644 index 000000000..44469debc --- /dev/null +++ b/documentation/setup_dev_vm.md @@ -0,0 +1,365 @@ +# Set up a virtual machine for development / testing of deployment + +With the help of a few tools we now have the capability to run the whole optscale locally by running a few simple commands, +allowing new developers to contribute immediately as well as explore the codebase freely with quick feedback cycle for their +local changes and requiring minimal knowledge about the deployment process. Virtual Machines also make it possible to have +as close to production-level environment running locally helping with testing and making changes to the deployment process +itself and also allowing developers to use different OS and even CPU architecture than Ubuntu 24.04 running on x86 hardware +(which is a hard requirement at the moment for an Optscale deployment), e.g. Apple Silicon Macs. + +The tools which allow us to do that are: + +1. [Vagrant](https://developer.hashicorp.com/vagrant/) to configure and manage the virtual machines +2. [QEMU](https://www.qemu.org/) as the virtualization engine used to run them +3. [`vagrant-qemu`](https://github.com/ppggff/vagrant-qemu) as the bridge between Vagrant and QEMU +4. **VirtualBox** — optional alternative virtualization provider +5. **`vagrant-disksize` plugin** — required when using VirtualBox to control disk size (not required for QEMU, QEMU disk sizing is controlled by the QEMU provider config (qemu.disk_resize) + +> [!WARNING] +> ## Prefer VirtualBox on Linux Kernel 6.14+ +> +> Starting with **Linux kernel 6.14**, changes in KVM/QEMU interaction may cause +> **QEMU virtual machines to fail, lose acceleration, or break after updates**. +> +> Because of this, it is **strongly recommended** to use **VirtualBox** as the +> virtualization provider on Linux hosts running kernel **6.14 or newer**. +> +> Use VirtualBox explicitly: +> +> ```sh +> ./vm.sh --provider virtualbox start +> ``` +> +> Using QEMU on recent Linux kernels may lead to: +> - VM startup failures +> - Missing KVM acceleration +> - Unstable or crashing VM processes +> - Guest OS boot loops +> +> **VirtualBox remains unaffected and provides stable performance.** + +> [!NOTE] +> ## Nested Virtualization (running VM inside another VM) +> +> If you are using **Vagrant/QEMU/VirtualBox inside a virtual machine** (e.g., running on VMware, Proxmox, Hyper-V, or cloud VPS): +> +> - Your host hypervisor **must support nested virtualization**, +> - AND it must be **explicitly enabled** for your VM. +> +> Without nested virtualization: +> +> - QEMU will run **without KVM acceleration** → extremely slow +> - VirtualBox may **fail to start VMs** or run in pure software mode +> - Provisioning times may increase from 20–30 minutes → **several hours** +> +> ### How to enable nested virtualization (quick reference) +> +> **Proxmox:** +> ```sh +> qm set -cpu host +> echo "options kvm-intel nested=Y" >> /etc/modprobe.d/kvm-intel.conf +> modprobe -r kvm_intel && modprobe kvm_intel +> ``` +> +> **VMware ESXi / Workstation / Fusion:** +> ```sh +> vhv.enable = "TRUE" +> ``` +> +> **Hyper-V:** +> ```powershell +> Set-VMProcessor -VMName "MyVM" -ExposeVirtualizationExtensions $true +> ``` +> +> **VirtualBox (running as host hypervisor):** +> ```sh +> VBoxManage modifyvm --nested-hw-virt on +> ``` +> +> ### Recommendation +> For best performance and compatibility: +> +> - Prefer **bare-metal** environments when possible +> - If running inside a VM, ensure **nested virtualization is enabled** before using `vm.sh` with QEMU or VirtualBox + +`Vagrant` already provides a great CLI to manage and run the VMs but it has a few annoying quirks and it still requires +complicated commands to run common operations specific to Optscale, so we built a wrapper script to make it even easier to +set up and use VMs -- `optscale-deploy/vm.sh`. + +--- + +## Install Prerequisites + +1. **Install `vagrant`** using your system package manager. + +### On MacOS: + +```sh +brew tap hashicorp/tap +brew install hashicorp/tap/hashicorp-vagrant +``` + +### On Ubuntu: + +```sh +wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg +echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \ +https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" \ +| sudo tee /etc/apt/sources.list.d/hashicorp.list +sudo apt update && sudo apt install vagrant +``` + +2. **Install QEMU** + +### On MacOS: + +```sh +brew install qemu +``` + +### On Ubuntu: +(if decided to use qemu, please note warning above) + +```sh +sudo apt-get install qemu-system +``` + +3. **Install the required Vagrant plugins** + +``` +vagrant plugin install vagrant-qemu +vagrant plugin install vagrant-disksize +``` + +> **IMPORTANT:** +> `vagrant-disksize` is **required** when using VirtualBox, and also used in general to configure VM disk size. + +4. **Optional: Install VirtualBox** + +VirtualBox can be used instead of QEMU. +To force using VirtualBox: + +```sh +./vm.sh --provider virtualbox start +``` + +--- + +## Set up the Virtual Machine + +Use the `vm.sh` script in `optscale-deploy` to manage the VM. There are currently two VMs ready for use: `arm` and `x86`. +Use whichever matches your machine's OS but the other one should also work via emulation (note that it will be +_significantly slower_ though). + +You can either explicitly specify it as the first argument like so: + +```sh +./vm.sh x86 start +``` + +or omit it entirely in which case it will default to your host machines' CPU architecture: + +```sh +./vm.sh start +``` + +(running the command above on an M4 Mac will create the ARM-based virtual machine) + +> Creating a virtual machine also copies your local version of this repo into `~/optscale` meaning it's very easy to +> test local changes not yet pushed to GitHub. + +> Feel free to mess around with the `Vagrantfile` itself whether it's to tweak some of the settings or even create new +> virtual machines, it should be fairly straight-forward to do so :) + +--- + +## VM resource configuration (`--cpus`, `--ram`, `--disk`) + +The `vm.sh` helper now supports dynamic resource overrides: + +| Flag | Meaning | Default | +|------|---------|---------| +| `--cpus N` | Number of virtual CPUs | `4` | +| `--ram N` | VM RAM in GB | `10` | +| `--disk N` | VM disk size in GB | `75` | + +Example: + +```sh +./vm.sh x86 --cpus 8 --ram 16 --disk 120 start +``` + +These settings propagate into the Vagrantfile through environment variables: + +- `VM_CPUS` +- `VM_RAM_GB` +- `VM_DISK_GB` + +They apply both to **QEMU** and **VirtualBox**. + +--- + +#### Preparing virtual environment + +Run the following commands: + +``` +virtualenv -p python3 .venv +source .venv/bin/activate +pip install -r requirements.txt +``` +#### Creating user overlay + +Edit file with overlay - [optscale-deploy/overlay/user_template.yml](optscale-deploy/overlay/user_template.yml); see comments in overlay file for guidance. + +## Optional ELK stack (`--with-elk`) + +The `vm.sh` wrapper also supports enabling the **ELK stack** (Elasticsearch, Logstash, Kibana) in the local deployment. + +Global flag: + +- `--with-elk` — enable ELK support for the current command. + +When `--with-elk` is used: + +1. The `elk` container image is built as part of the provisioning process. +2. The Ansible playbook receives `with_elk=true`. +3. `runkube.py` is executed with the `--with-elk` flag for: + - initial provisioning, + - `deploy-service`, + - `update-only`. + +Examples: + +Provision VM with ELK enabled: + +```sh +./vm.sh --with-elk playbook ansible/provision-vm.yaml +``` + +Deploy a single service with ELK-aware configuration: + +```sh +./vm.sh --with-elk deploy-service rest_api +``` +If ELK stack is required, need to set `--with-elk` directly. + +Update existing OptScale release while keeping ELK enabled: + +```sh +./vm.sh --with-elk update-only +``` + +If `--with-elk` is omitted, the behavior is unchanged from the previous default (no ELK components are built or deployed). + +--- + +## Provider Selection + +By default, QEMU is used (especially useful for Apple Silicon and cross-architecture development). +VirtualBox can also be used and works very well on x86 hosts. + +Explicit provider selection: + +```sh +./vm.sh --provider qemu start +./vm.sh --provider virtualbox start +``` + +> **NOTE:** +> When using VirtualBox, `vagrant-disksize` must be installed or Vagrant will fail to start the VM. + +--- + +## Deploy Optscale on the VM + +There is also an ansible playbook specifically built to allow a single command provisioning of Optscale onto a fresh Virtual +Machine: `optscale-deploy/ansible/provision-vm.yaml`. It will do everything -- from installing dependencies, setting up the +cluster, building all the containers (including `elk` when `--with-elk` is used) and creating a new Kubernetes deployment +using `runkube.py`. + +There is nothing VM-specific this playbook does, it largely simply follows the instructions on the `README.md` page +but it's more automated, so that it can all be done in a single command. + +Execute this (or any other) playbook with: + +```sh +./vm.sh arm playbook ansible/provision-vm.yaml +``` + +Or, with ELK enabled: + +```sh +./vm.sh arm --with-elk playbook ansible/provision-vm.yaml +``` + +There is also a `role` command which allows us to run a specific ansible role against the VM. + +--- + +## Accessing the platform + +If everything goes well, you should be able to access the platform soon. + +Keep in mind that the initial provisioning of the VM takes quite some time (~20–30 mins on an M4 Macbook) +mostly due to all the containers that need to be built from scratch. Also note that the Kubernetes cluster +will need some time (~15 mins) to spin all the pods after the playbook's execution is complete. + +Once ready, open your browser and navigate to: + +- `https://localhost:9444` for **ARM VM** +- `https://localhost:9443` for **x86 VM** + +(additional forwards) +- `http://localhost:41080` for **PhpMyadmin** +- `http://localhost:41081` for **Kibana (if enabled)** +- `http://localhost:41082` for **grafana** + +Port values come from the `Vagrantfile`. + +--- + +## Troubleshooting + +The `./vm.sh` script provides useful commands to debug issues: + +* `info` — shows general information about the VM itself: status, name, process ID etc. +* `ssh` — allows you to ssh into the VM and investigate issues or make persistent changes directly. +* `optscale-info` — shows information specific to the Optscale deployment: frontend access URL, k8s cluster + health, pods which are currently failing etc. + +--- + +## Deploying and testing local changes using the VM + +Once your VM is running, you can easily deploy your local changes using the **experimental** `deploy-service` command. + +Example: + +```sh +./vm.sh deploy-service rest_api +``` + +This will: + +1. Sync your local repo changes into the VM +2. Rebuild the selected service +3. Apply changes using `runkube.py` + +The entire process usually takes ~1 minute. + +If ELK is enabled via `--with-elk`, the same command will keep ELK configuration in sync with your updated deployment. + +--- + +## Other commands + +* `stop` — stop the virtual machine (preserves state) + * use `--force` to forcefully terminate VM process +* `restart` — restarts the VM +* `destroy` — stops and deletes the whole VM including data +* `reset` — a convenience command combining `destroy` + `start` +* `update-only` — rebuilds OptScale containers and redeploys without full reprovisioning + +The resource flags (`--cpus`, `--ram`, `--disk`) work with all lifecycle commands. The ELK flag (`--with-elk`) can be +combined with any command that performs provisioning, deployment or update logic. diff --git a/gemini/gemini_worker/Dockerfile b/gemini/gemini_worker/Dockerfile index d1266550e..baffa478e 100644 --- a/gemini/gemini_worker/Dockerfile +++ b/gemini/gemini_worker/Dockerfile @@ -5,6 +5,7 @@ LABEL org.opencontainers.image.authors="Hystax" WORKDIR /usr/src/app/ COPY optscale_client optscale_client +COPY tools/cloud_adapter tools/cloud_adapter COPY gemini/__init__.py gemini/ COPY gemini/gemini_worker/pyproject.toml gemini/gemini_worker/ diff --git a/gemini/gemini_worker/duplicate_object_finder/aws/main.py b/gemini/gemini_worker/duplicate_object_finder/aws/main.py index 6130da423..510560b9a 100644 --- a/gemini/gemini_worker/duplicate_object_finder/aws/main.py +++ b/gemini/gemini_worker/duplicate_object_finder/aws/main.py @@ -48,10 +48,7 @@ def find_duplicates( enumerators = [] for config, buckets in data: - client_factory = DefaultAWSClientFactory( - access_key_id=config.get("access_key_id"), - secret_access_key=config.get("secret_access_key"), - ) + client_factory = DefaultAWSClientFactory(config) enumerator = AWSObjectEnumerator(buckets, stats, client_factory) enumerators.append(enumerator) diff --git a/gemini/gemini_worker/duplicate_object_finder/aws/object_enumerator.py b/gemini/gemini_worker/duplicate_object_finder/aws/object_enumerator.py index d3a32364a..767dd2d2f 100644 --- a/gemini/gemini_worker/duplicate_object_finder/aws/object_enumerator.py +++ b/gemini/gemini_worker/duplicate_object_finder/aws/object_enumerator.py @@ -1,7 +1,7 @@ import logging -import boto3 from datetime import datetime +from tools.cloud_adapter.cloud import Cloud from gemini.gemini_worker.duplicate_object_finder.aws.object_info import ObjectInfo LOG = logging.getLogger(__file__) @@ -10,25 +10,13 @@ class DefaultAWSClientFactory: def __init__( self, - endpoint_url=None, - access_key_id=None, - secret_access_key=None, config=None, ): - self._endpoint_url = endpoint_url - self._access_key_id = access_key_id - self._secret_access_key = secret_access_key self._config = config + self.cloud_adapter = Cloud.get_adapter(self._config) - def create_client(self, region=None): - return boto3.client( - "s3", - endpoint_url=self._endpoint_url, - region_name=region, - aws_access_key_id=self._access_key_id, - aws_secret_access_key=self._secret_access_key, - config=self._config, - ) + def create_client(self): + return self.cloud_adapter.s3 class AWSObjectEnumerator: @@ -67,8 +55,8 @@ def enumerate(self): region = location_constraint LOG.info(f"Processing bucket {bucket} in {region}") - paginator = self._client_factory.create_client( - region).get_paginator("list_objects_v2") + paginator = self._client_factory.create_client().get_paginator( + "list_objects_v2") kwargs = {"Bucket": bucket} before_request = datetime.now() diff --git a/gemini/gemini_worker/main.py b/gemini/gemini_worker/main.py index c07ef521e..5eda577b9 100644 --- a/gemini/gemini_worker/main.py +++ b/gemini/gemini_worker/main.py @@ -26,6 +26,7 @@ DAYS_IN_MONTH = 30 PAIR = 2 +STATUS_SUCCESS = "SUCCESS" LOG = logging.getLogger(__name__) @@ -66,7 +67,7 @@ def mongo_client(self) -> MongoClient: @property def valid_states(self): - return ["QUEUED"] + return ["QUEUED", STATUS_SUCCESS] @staticmethod def get_now_timestamp() -> int: @@ -227,89 +228,6 @@ def _calculate_monthly_savings( size * monthly_cost) if size and monthly_cost else 0 - def _calculate_self_matrix( - self, gemini_id: str, buckets: list[str], buckets_stats: dict - ) -> dict: - """ - Combined query to get duplicated objects within each bucket, resulted in a dictionary matrix. - Example for ["bucket_1", "bucket_2"]: - - Query: SELECT bucket, count, size * (1 - 1/count) FROM - ( - SELECT bucket, tag, count(id) count, sum(size) size - FROM gemini WHERE id="1" AND bucket = "bucket_1" - GROUP BY bucket, tag - HAVING count > 1 - - UNION ALL - - SELECT bucket, tag, count(id) count, sum(size) size - FROM gemini WHERE id="1" AND bucket = "bucket_2" - GROUP BY bucket, tag - HAVING count > 1 - ) - Result: { - "bucket_1": { - "bucket_1": { - "duplicated_objects": 3, - "duplicates_size": 142458.0, - "monthly_savings": 5551 - } - }, - "bucket_2": { - "bucket_2": { - "duplicated_objects": 0, - "duplicates_size": 0 - } - } - } - """ - self_query = "" - params = {"gemini_id": gemini_id} - - for index, bucket in enumerate(buckets): - params[bucket] = bucket - self_query += f""" - SELECT bucket, tag, count(id) count, sum(size) size - FROM gemini - WHERE id=%(gemini_id)s AND bucket=%({bucket})s - GROUP BY bucket, tag - HAVING count > 1 - """ - if index < len(buckets) - 1: - self_query += " UNION ALL " - - self_result_q = self.clickhouse_client.query( - f"SELECT bucket, count, size * (1 - 1/count) FROM ({self_query})", - parameters=params, - ) - - self_matrix = {} - - for bucket in buckets: - if self_matrix.get(bucket) is None: - self_matrix[bucket] = { - bucket: {"duplicated_objects": 0, "duplicates_size": 0} - } - - for row in self_result_q.result_rows: - if bucket in row: - self_matrix[bucket][bucket]["duplicated_objects"] += row[1] - self_matrix[bucket][bucket]["duplicates_size"] += row[2] - - size = buckets_stats.get(bucket, {}).get("size", 0) - monthly_cost = buckets_stats.get(bucket, {}).get("monthly_cost") - - if monthly_cost is not None: - self_matrix[bucket][bucket][ - "monthly_savings" - ] = self._calculate_monthly_savings( - self_matrix[bucket][bucket]["duplicates_size"], size, monthly_cost - ) - - LOG.info(f"Self matrix: {self_matrix}") - return self_matrix - def _calculate_cross_matrix( self, gemini_id: str, buckets: list[str], buckets_stats: dict ) -> dict: @@ -317,60 +235,37 @@ def _calculate_cross_matrix( A query to get duplicated objects across bucket pairs, resulted in a dictionary matrix. Example for ["bucket_1", "bucket_2", "bucket_3"]: - Query: SELECT index, sum(count) count, size * (1 - 1/count) FROM - ( - SELECT 0 index, tag, count(id) count, sum(size) size - FROM gemini - WHERE id="1" AND bucket IN ["bucket_1", "bucket_2"] AND tag in - ( - SELECT tag - FROM gemini - WHERE id="1" AND bucket="bucket_1" - - INTERSECT - - SELECT tag - FROM gemini - WHERE id="1" AND bucket="bucket_2" - ) GROUP BY tag - - UNION ALL - - SELECT 1 index, tag, count(id) count, sum(size) size - FROM gemini - WHERE id="1" AND bucket IN ["bucket_2", "bucket_3"] AND tag in - ( - SELECT tag - FROM gemini - WHERE id="1" AND bucket="bucket_2" - - INTERSECT - - SELECT tag - FROM gemini - WHERE id="1" AND bucket="bucket_3" - ) GROUP BY tag - - UNION ALL - - SELECT 2 index, tag, count(id) count, sum(size) size - FROM gemini - WHERE id="1" AND bucket IN ["bucket_3", "bucket_1"] AND tag in - ( - SELECT tag - FROM gemini - WHERE id="1" AND bucket="bucket_3" - - INTERSECT - - SELECT tag - FROM gemini - WHERE id="1" AND bucket="bucket_1" - ) GROUP BY tag - ) GROUP BY index, size ORDER BY index + Query: + WITH base AS ( + SELECT + tag, + bucket, + count(id) AS cnt, + sum(size) AS size + FROM gemini + WHERE id = %(gemini_id)s + AND bucket IN %(buckets)s + GROUP BY tag, bucket + ) + SELECT + b1.bucket AS bucket_1, + b2.bucket AS bucket_2, + sum(b1.cnt + b2.cnt) AS total_count, + sum(b1.size) AS total_size + FROM base b1 + INNER JOIN base b2 + ON b1.tag = b2.tag + GROUP BY + b1.bucket, + b2.bucket Result: { "bucket_1": { + "bucket_1": { + "duplicated_objects": 128, + "duplicates_size": 3142458.0, + "monthly_savings": 5222 + } "bucket_2": { "duplicated_objects": 3, "duplicates_size": 142458.0, @@ -383,110 +278,82 @@ def _calculate_cross_matrix( }, "bucket_2": { "bucket_1": {"duplicated_objects": 3, "duplicates_size": 142458.0, "monthly_savings": 3331}, + "bucket_2": {"duplicated_objects": 0, "duplicates_size": 0, "monthly_savings": 0}, "bucket_3": {"duplicated_objects": 0, "duplicates_size": 0}, }, "bucket_3": { "bucket_1": {"duplicated_objects": 0, "duplicates_size": 0}, + "bucket_2": {"duplicated_objects": 0, "duplicates_size": 0}, "bucket_3": {"duplicated_objects": 0, "duplicates_size": 0}, } } """ - bucket_pairs = list(combinations(buckets, PAIR)) - cross_query = "" - params = {"gemini_id": gemini_id} - - for index, pair in enumerate(bucket_pairs): - params[str(index)] = pair - params[pair[0]] = pair[0] - params[pair[1]] = pair[1] - - pair_list_sql = ", ".join([f"'{bucket}'" for bucket in pair]) - - cross_query += f""" - SELECT {index} index, tag, bucket, count(id) count, sum(size) size + query = f""" + WITH base AS ( + SELECT + tag, + bucket, + count(id) AS cnt, + sum(size) AS size FROM gemini - WHERE id=%(gemini_id)s AND bucket IN ({pair_list_sql}) AND tag in ( - SELECT tag - FROM gemini - WHERE id=%(gemini_id)s AND bucket=%({pair[0]})s - - INTERSECT - - SELECT tag - FROM gemini - WHERE id=%(gemini_id)s AND bucket=%({pair[1]})s - ) GROUP BY tag, bucket - """ - if index < len(bucket_pairs) - 1: - cross_query += " UNION ALL " - - cross_result_q = self.clickhouse_client.query( - f""" - SELECT index, bucket, sum(count) count, size FROM ({cross_query}) - GROUP BY index, bucket, size ORDER BY index - """, - parameters=params, - # Query-level paramters to set the values to unlimited. - # The query body exceeds the default limits if there are a lot of - # buckets. - settings={"max_query_size": 0, "max_ast_elements": 0}, - ) - + WHERE id = %(gemini_id)s + AND bucket IN %(buckets)s + GROUP BY tag, bucket + ) + SELECT + b1.bucket AS bucket_1, + b2.bucket AS bucket_2, + sum(b1.cnt + b2.cnt) AS total_count, + sum(b1.size) AS total_size + FROM base b1 + INNER JOIN base b2 + ON b1.tag = b2.tag + GROUP BY + b1.bucket, + b2.bucket + """ + result_q = self.clickhouse_client.query(query, parameters={ + 'buckets': buckets, 'gemini_id': gemini_id + }) cross_matrix = defaultdict(lambda: defaultdict(dict)) - - for index, pair in enumerate(bucket_pairs): - bucket_0 = pair[0] - bucket_1 = pair[1] - duplicated_objects = 0 - bucket_0_duplicates_size = 0 - bucket_1_duplicates_size = 0 - - filtered_cross_result = [ - item for item in cross_result_q.result_rows if item[0] == index] - - if filtered_cross_result: - for item in filtered_cross_result: - duplicated_objects += item[2] - if item[1] == bucket_0: - bucket_0_duplicates_size += item[3] - if item[1] == bucket_1: - bucket_1_duplicates_size += item[3] - - cross_matrix[bucket_0][bucket_1]["duplicated_objects"] = duplicated_objects - cross_matrix[bucket_0][bucket_1][ - "duplicates_size" - ] = bucket_0_duplicates_size - cross_matrix[bucket_1][bucket_0]["duplicated_objects"] = duplicated_objects - cross_matrix[bucket_1][bucket_0][ - "duplicates_size" - ] = bucket_1_duplicates_size - + for r in result_q.result_rows: + bucket_0 = r[0] + bucket_1 = r[1] + bucket_0_duplicates_size = r[3] bucket_0_size = buckets_stats.get(bucket_0, {}).get("size", 0) bucket_0_monthly_cost = buckets_stats.get( bucket_0, {}).get("monthly_cost") - bucket_1_size = buckets_stats.get(bucket_1, {}).get("size", 0) - bucket_1_monthly_cost = buckets_stats.get( - bucket_1, {}).get("monthly_cost") - + duplicated_objects = r[2] + if bucket_0 == bucket_1: + # because of sum(b1.cnt + b2.cnt) for the same bucket + duplicated_objects = int(duplicated_objects / 2) + info = { + 'duplicated_objects': duplicated_objects, + 'duplicates_size': bucket_0_duplicates_size + } if bucket_0_monthly_cost is not None: - cross_matrix[bucket_0][bucket_1][ - "monthly_savings" - ] = self._calculate_monthly_savings( - bucket_0_duplicates_size, - bucket_0_size, - bucket_0_monthly_cost, - ) - - if bucket_1_monthly_cost is not None: - cross_matrix[bucket_1][bucket_0][ - "monthly_savings" - ] = self._calculate_monthly_savings( - bucket_1_duplicates_size, - bucket_1_size, - bucket_1_monthly_cost, - ) - + info.update({ + 'monthly_savings': self._calculate_monthly_savings( + bucket_0_duplicates_size, bucket_0_size, + bucket_0_monthly_cost) + }) + cross_matrix[bucket_0][bucket_1] = info + + # fill empty values + bucket_pairs = list(combinations(buckets, PAIR)) + for b in buckets: + bucket_pairs.append((b, b)) + for pair in bucket_pairs: + for k in [ + 'duplicated_objects', 'duplicates_size', 'monthly_savings' + ]: + bucket_0, bucket_1 = pair[:2] + if k not in cross_matrix[bucket_0][bucket_1]: + cross_matrix[bucket_0][bucket_1][k] = 0 + if bucket_0 != bucket_1: + if k not in cross_matrix[bucket_1][bucket_0]: + cross_matrix[bucket_1][bucket_0][k] = 0 LOG.info(f"Cross matrix {cross_matrix}") return cross_matrix @@ -599,7 +466,9 @@ def process_task(self, body, message: Message): if status not in self.valid_states: raise Exception( f"Gemini {gemini['id']} in wrong status: {status}") - + if status == STATUS_SUCCESS: + LOG.info(f"Found success Gemini {gemini['id']}") + return last_run = self.get_now_timestamp() self._set_status(gemini_id, {"last_run": last_run}, "RUNNING") @@ -618,7 +487,7 @@ def process_task(self, body, message: Message): for cloud_account_id in cloud_account_ids: _, cloud_account = self.rest_client.cloud_account_get( cloud_account_id) - config = cloud_account.get("config", {}) + cloud_account.update(cloud_account['config']) target_bucket_names = list( set( [ @@ -629,7 +498,7 @@ def process_task(self, body, message: Message): ) ) - data.append((config, target_bucket_names)) + data.append((cloud_account, target_bucket_names)) all_bucket_names += target_bucket_names duplicates, stats = Factory.get(data, filters) @@ -654,18 +523,8 @@ def process_task(self, body, message: Message): all_bucket_names, cloud_account_ids, stats, last_run ) - self_matrix = self._calculate_self_matrix( - gemini_id, all_bucket_names, buckets_stats - ) - matrix = self_matrix - - # Skip cross matrix if there is just one bucket - if len(buckets) > 1: - cross_matrix = self._calculate_cross_matrix( - gemini_id, all_bucket_names, buckets_stats - ) - for key in self_matrix.keys(): - matrix[key].update(cross_matrix[key]) + matrix = self._calculate_cross_matrix( + gemini_id, all_bucket_names, buckets_stats) duplicates_stats = self._calculate_objects_with_duplicates( gemini_id, all_bucket_names, buckets_stats @@ -683,7 +542,7 @@ def process_task(self, body, message: Message): self._set_status( gemini_id, { - "last_completed": self.get_now_timestamp()}, "SUCCESS") + "last_completed": self.get_now_timestamp()}, STATUS_SUCCESS) LOG.info(f"Successful gemini run for {gemini_id}") diff --git a/gemini/gemini_worker/pyproject.toml b/gemini/gemini_worker/pyproject.toml index ea1661853..cf5ea7d9e 100644 --- a/gemini/gemini_worker/pyproject.toml +++ b/gemini/gemini_worker/pyproject.toml @@ -3,8 +3,8 @@ name = "gemini-worker" version = "0.1.0" requires-python = ">=3.12.11,<3.13" dependencies = [ - "boto3==1.34.7", "clickhouse-connect==0.8.15", + "cloud-adapter", "config-client", "kombu==5.5.4", "pymongo==4.6.3", @@ -12,6 +12,7 @@ dependencies = [ ] [tool.uv.sources] +cloud-adapter = { path = "../../tools/cloud_adapter" } config-client = { path = "../../optscale_client/config_client" } restapi-client = { path = "../../optscale_client/rest_api_client" } diff --git a/gemini/gemini_worker/uv.lock b/gemini/gemini_worker/uv.lock index e4af5fde6..3d7170623 100644 --- a/gemini/gemini_worker/uv.lock +++ b/gemini/gemini_worker/uv.lock @@ -2,6 +2,157 @@ version = 1 revision = 3 requires-python = ">=3.12.11, <3.13" +[[package]] +name = "adal" +version = "1.2.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyjwt" }, + { name = "python-dateutil" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/90/d7/a829bc5e8ff28f82f9e2dc9b363f3b7b9c1194766d5a75105e3885bfa9a8/adal-1.2.7.tar.gz", hash = "sha256:d74f45b81317454d96e982fd1c50e6fb5c99ac2223728aea8764433a39f566f1", size = 35196, upload-time = "2021-04-05T16:33:40.88Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/8d/58008a9a86075827f99aa8bb75d8db515bb9c34654f95e647cda31987db7/adal-1.2.7-py2.py3-none-any.whl", hash = "sha256:2a7451ed7441ddbc57703042204a3e30ef747478eea022c70f789fc7f084bc3d", size = 55539, upload-time = "2021-04-05T16:33:39.544Z" }, +] + +[[package]] +name = "aliyun-python-sdk-alb" +version = "1.0.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/9f/15c784227916a405590cefdea8b32338b922e0599f4715354b2a57c86f52/aliyun-python-sdk-alb-1.0.22.tar.gz", hash = "sha256:d5bbdfcaaf17a78034aa2905df6cca5fff7ba4c76255da8b906e48c57062d579", size = 20318, upload-time = "2024-12-23T02:26:48.365Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/7a/1b90d8b43299da38c6648f804125a70b11eba701f90f28313f7263c85fce/aliyun_python_sdk_alb-1.0.22-py2.py3-none-any.whl", hash = "sha256:f8c2b25e8eab3102c747f20642470b56b7d6ad9ad8e3a7620074e4319ce26c1d", size = 104944, upload-time = "2024-12-23T02:26:46.104Z" }, +] + +[[package]] +name = "aliyun-python-sdk-bssopenapi" +version = "1.6.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/7a/c2dab3c19c5b39cc95b7eb983da488326a1bf8aacb73e0817e644b455f51/aliyun-python-sdk-bssopenapi-1.6.8.tar.gz", hash = "sha256:f7e8bb368be204b247685a8ca026319816724d1663ade54815711739fe727204", size = 14320, upload-time = "2021-03-25T09:25:16.001Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/1c/ae17d79ab24a8e654af5f83ea1136d34e1a7e8e81ff942c0607b328b369d/aliyun_python_sdk_bssopenapi-1.6.8-py2.py3-none-any.whl", hash = "sha256:c94a81a9ee620b0ca04af843cb53fa05b6cb50bbb88fa47fe137d3aa81153576", size = 84244, upload-time = "2021-03-25T09:25:14.557Z" }, +] + +[[package]] +name = "aliyun-python-sdk-cms" +version = "7.0.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/c2/9db92a3ef160f0219f70b8ed7ba465acdab69bf896819c943d84184fc272/aliyun-python-sdk-cms-7.0.22.tar.gz", hash = "sha256:a00685ced4b494d0169b814d4dff3db0eedef7f1a876c5ee520caf8062c89caf", size = 21494, upload-time = "2021-06-08T05:46:54.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/64/efb833e89762fac0745b5f4a313f4967f8b7ca07bbf0d1dc2ce5c454ca0c/aliyun_python_sdk_cms-7.0.22-py2.py3-none-any.whl", hash = "sha256:49a96421a30f45ad5942ebeae36e0d8211bac78be5ddca79ca03c094fa8d29e3", size = 144329, upload-time = "2021-06-08T05:46:53.023Z" }, +] + +[[package]] +name = "aliyun-python-sdk-core" +version = "2.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "jmespath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/0f/c191007d4a0c068725009489d7f928614151da938598b875568a6323cff2/aliyun-python-sdk-core-2.15.0.tar.gz", hash = "sha256:edc4555488d8a9f1c61bd419c7be27b23974b2a052971b4614fcd229eaeeb382", size = 443090, upload-time = "2024-03-06T02:41:25.637Z" } + +[[package]] +name = "aliyun-python-sdk-ecs" +version = "4.24.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/0c/b81a2ef809aca75b25dd0fc51d7e15a659e6d468984c21e84575cde0c703/aliyun-python-sdk-ecs-4.24.1.tar.gz", hash = "sha256:54d3ff24db0468b0153957315f5d2122945c36949fc2f46dbd6fdc4f8bf368f3", size = 63091, upload-time = "2021-04-22T13:20:07.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/6d/878c9278907ad3999a5138e33171ca79e0126714f0e65fdb365a35bcd255/aliyun_python_sdk_ecs-4.24.1-py2.py3-none-any.whl", hash = "sha256:9a232e8307abc2c1145babf2e2793b1940820d53710a7ff6cbff9f915d126fb2", size = 409553, upload-time = "2021-04-22T13:20:05.83Z" }, +] + +[[package]] +name = "aliyun-python-sdk-gwlb" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d5/b8/6e85ece9ddafe4fef4d6aa8893872e3cb56b328293f6d03a58726f478501/aliyun-python-sdk-gwlb-1.0.2.tar.gz", hash = "sha256:ef11546569a6108b7e128742a26dce654635a3d1a4906ee004a5c794637bac31", size = 6622, upload-time = "2024-10-23T09:57:05.398Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/3d/8bbcdf6c21c2e7cd5cae92a3b230c0c45852b8fa8882137d029d42d9448c/aliyun_python_sdk_gwlb-1.0.2-py2.py3-none-any.whl", hash = "sha256:fbeed230366ebaeecc01eadcf966adb28fc2731db42c5a6ec0c8d7d781bfac5e", size = 32770, upload-time = "2024-10-23T09:57:04.213Z" }, +] + +[[package]] +name = "aliyun-python-sdk-nlb" +version = "1.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4e/66/95bfa1691286042eca250be1e062ed1353a83a5bf886c5e68e7b1f14cf5c/aliyun-python-sdk-nlb-1.0.12.tar.gz", hash = "sha256:0e686bba34236341f25774a92765b4fbad3417881822d8a484efa25fe8fdad77", size = 10537, upload-time = "2023-10-08T02:44:14.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/a4/fb8494c7d93b1686e7da831243050b7031aa7ec877dbe42b1473d7aab3a1/aliyun_python_sdk_nlb-1.0.12-py2.py3-none-any.whl", hash = "sha256:2815c53e763c5c368ba21c0741073549f65e79786c2925756a5b542c0707138e", size = 58801, upload-time = "2023-10-08T02:44:12.707Z" }, +] + +[[package]] +name = "aliyun-python-sdk-ram" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/2b/074b0a577996fcf02af56311cb820d43f08925a0cb469c1d69dadc683e29/aliyun-python-sdk-ram-3.2.0.tar.gz", hash = "sha256:88b64e2d0c5aebbe40fe7b4e5bf642286705bcaf78335e873fbf88f89551a839", size = 7927, upload-time = "2020-03-20T04:36:48.196Z" } + +[[package]] +name = "aliyun-python-sdk-rds" +version = "2.5.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/08/701a8ee8a32710f63c748c9b559bfe2e9a418250980bc97ab2eff90d0481/aliyun-python-sdk-rds-2.5.11.tar.gz", hash = "sha256:a6326a51121220bdcd3587a341832e254ede137a4b39f81cbf7ab7c4817f6e2a", size = 29182, upload-time = "2021-05-07T07:32:33.12Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/e1/42cd4f49784bec02a19e7ca1b8138a0ec2579bfe3843f48376d006776ade/aliyun_python_sdk_rds-2.5.11-py2.py3-none-any.whl", hash = "sha256:ac2419299fe9cc137374569899dd2e329d9f3821149f3b9438a68080de8a1f73", size = 225931, upload-time = "2021-05-07T07:32:31.585Z" }, +] + +[[package]] +name = "aliyun-python-sdk-slb" +version = "3.3.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/19/94d7f57e26caac8171edf9f2630f1487d7efa741029619d5f09ab9bb2675/aliyun-python-sdk-slb-3.3.22.tar.gz", hash = "sha256:c6facc70b858d501c41b14a667e8e70292fff4cabc9e8b7340cf8ed113d47bd8", size = 17415, upload-time = "2024-05-30T12:42:08.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/12/4be0106cee6f72fa54d8d5c8773ddaf36e98928302b8b3e2211aaf7cf11f/aliyun_python_sdk_slb-3.3.22-py2.py3-none-any.whl", hash = "sha256:0870cfd12b21d162f1679f9d54412a14d54766517d87b2fce631822c5ca26499", size = 118769, upload-time = "2024-05-30T12:42:06.255Z" }, +] + +[[package]] +name = "aliyun-python-sdk-sts" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/29/7e2887a77763ab925827a0b591c138ed75f206789fa5f27a3f6599e4ea0e/aliyun-python-sdk-sts-3.0.2.tar.gz", hash = "sha256:7ee00dcb7e6c59d398d1679b811b8fc3acf4953a94ae8fede7a32be40c929091", size = 3254, upload-time = "2020-06-19T01:37:41.402Z" } + +[[package]] +name = "aliyun-python-sdk-vpc" +version = "3.0.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aliyun-python-sdk-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/d4/079dc4aa5816a18675ad436105df1da3e86931316d98fcc0ce8cec44d876/aliyun-python-sdk-vpc-3.0.14.tar.gz", hash = "sha256:d02d741c216349635723b75598aa9975f264f249d28dd003b89a577bc78fe707", size = 42194, upload-time = "2021-06-21T03:12:17.639Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/f6/e4b32ef17b0f77ab97f06f46e77b09acea30bf7e19d2054425d6f78d6d2d/aliyun_python_sdk_vpc-3.0.14-py2.py3-none-any.whl", hash = "sha256:17981cf64f38b2a6f98c3dd9d952d94efcffbfe063f1bb28c11a61ba9b77bc4b", size = 317726, upload-time = "2021-06-21T03:12:15.894Z" }, +] + [[package]] name = "amqp" version = "5.3.1" @@ -23,6 +174,218 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d4/b8/c0f47a9ee6927827116542e12a54d8b8c174b77644c2aba4e2092dfd8de6/astroid-3.0.3-py3-none-any.whl", hash = "sha256:92fcf218b89f449cdf9f7b39a269f8d5d617b27be68434912e11e79203963a17", size = 275225, upload-time = "2024-02-04T15:16:25.491Z" }, ] +[[package]] +name = "azure-common" +version = "1.1.28" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/71/f6f71a276e2e69264a97ad39ef850dca0a04fce67b12570730cb38d0ccac/azure-common-1.1.28.zip", hash = "sha256:4ac0cd3214e36b6a1b6a442686722a5d8cc449603aa833f3f0f40bda836704a3", size = 20914, upload-time = "2022-02-03T19:39:44.373Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/55/7f118b9c1b23ec15ca05d15a578d8207aa1706bc6f7c87218efffbbf875d/azure_common-1.1.28-py2.py3-none-any.whl", hash = "sha256:5c12d3dcf4ec20599ca6b0d3e09e86e146353d443e7fcc050c9a19c1f9df20ad", size = 14462, upload-time = "2022-02-03T19:39:42.417Z" }, +] + +[[package]] +name = "azure-core" +version = "1.38.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/53/9b/23893febea484ad8183112c9419b5eb904773adb871492b5fa8ff7b21e09/azure_core-1.38.1.tar.gz", hash = "sha256:9317db1d838e39877eb94a2240ce92fa607db68adf821817b723f0d679facbf6", size = 363323, upload-time = "2026-02-11T02:03:06.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/88/aaea2ad269ce70b446660371286272c1f6ba66541a7f6f635baf8b0db726/azure_core-1.38.1-py3-none-any.whl", hash = "sha256:69f08ee3d55136071b7100de5b198994fc1c5f89d2b91f2f43156d20fcf200a4", size = 217930, upload-time = "2026-02-11T02:03:07.548Z" }, +] + +[[package]] +name = "azure-identity" +version = "1.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "cryptography" }, + { name = "msal" }, + { name = "msal-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/1c/bd704075e555046e24b069157ca25c81aedb4199c3e0b35acba9243a6ca6/azure-identity-1.16.1.tar.gz", hash = "sha256:6d93f04468f240d59246d8afde3091494a5040d4f141cad0f49fc0c399d0d91e", size = 236726, upload-time = "2024-06-10T22:23:27.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/c5/ca55106564d2044ab90614381368b3756690fb7e3ab04552e17f308e4e4f/azure_identity-1.16.1-py3-none-any.whl", hash = "sha256:8fb07c25642cd4ac422559a8b50d3e77f73dcc2bbfaba419d06d6c9d7cff6726", size = 166741, upload-time = "2024-06-10T22:23:30.906Z" }, +] + +[[package]] +name = "azure-mgmt-commerce" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "azure-mgmt-nspkg" }, + { name = "msrestazure" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/06/f071cb84153858492664eb6a4a2aac8b831907b255b4e5745f0a1e06fc18/azure-mgmt-commerce-1.0.1.zip", hash = "sha256:c48e84ed322fa9ddbc2d7fcca754c5e97171919be94f510bd2579cf5666684c3", size = 32635, upload-time = "2018-02-22T01:19:31.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/13/f421e77dd1fe3c9657a890f9c085f433fe422f54003ee03e631a8be5c4e7/azure_mgmt_commerce-1.0.1-py2.py3-none-any.whl", hash = "sha256:ddcd403bcaf6b7de2cbf1bc249b7db452b35dc1f0503f940368efc722dc0bc90", size = 22554, upload-time = "2018-02-22T01:19:29.917Z" }, +] + +[[package]] +name = "azure-mgmt-compute" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "msrest" }, + { name = "msrestazure" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/97/bb29548482b27d012db91f2c85b28a9a6f1a19084eeae6619d1ade3c7fb7/azure-mgmt-compute-7.0.0.zip", hash = "sha256:fba4147a479dda850aac1df5f4a08921aff69a17d7f26648705303fecb576ffd", size = 1486932, upload-time = "2019-08-29T21:34:54.95Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/a8/2c69069a4887931429041fe6f00f2c50cf84b992bcc3c2aca9708a9aba09/azure_mgmt_compute-7.0.0-py2.py3-none-any.whl", hash = "sha256:7e7ff844964e0962f8dd286b74102f3d025bb47f46bd4ed027a6524e7b518526", size = 1159916, upload-time = "2019-08-29T21:34:52.543Z" }, +] + +[[package]] +name = "azure-mgmt-consumption" +version = "8.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "azure-mgmt-core" }, + { name = "msrest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/e7/13f6d8ce194a7749f0baca34ee4ddbba7e2f1fe1532d88607f8e617fc13a/azure-mgmt-consumption-8.0.0.zip", hash = "sha256:b4cc167648634f864394066d5621afc137c1be795ee76f7539125f9538a2bf37", size = 572404, upload-time = "2021-01-04T04:54:10.711Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/0e/b98214bc1b5a6aa18844938c3e27a0ae6ce82270f060760fb1c915cb3424/azure_mgmt_consumption-8.0.0-py2.py3-none-any.whl", hash = "sha256:c344c7a99a56e64aea1e93b265157a9c8b41170f0f1ef89a343619a4b6599ad9", size = 144982, upload-time = "2021-01-04T04:54:09.122Z" }, +] + +[[package]] +name = "azure-mgmt-core" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/99/fa9e7551313d8c7099c89ebf3b03cd31beb12e1b498d575aa19bb59a5d04/azure_mgmt_core-1.6.0.tar.gz", hash = "sha256:b26232af857b021e61d813d9f4ae530465255cb10b3dde945ad3743f7a58e79c", size = 30818, upload-time = "2025-07-03T02:02:24.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/26/c79f962fd3172b577b6f38685724de58b6b4337a51d3aad316a43a4558c6/azure_mgmt_core-1.6.0-py3-none-any.whl", hash = "sha256:0460d11e85c408b71c727ee1981f74432bc641bb25dfcf1bb4e90a49e776dbc4", size = 29310, upload-time = "2025-07-03T02:02:25.203Z" }, +] + +[[package]] +name = "azure-mgmt-monitor" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "msrest" }, + { name = "msrestazure" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7e/ed/5729d203f28d224b97baf8be81615e38ab723b5bf104b034d711145554fc/azure-mgmt-monitor-0.10.0.zip", hash = "sha256:d57d604cc1a7a9ce35eb7cf8a00d4924887c688aa78dc035ea1f80066b297464", size = 513350, upload-time = "2020-06-15T03:07:08.69Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/21/14ade188b3a49aa01d024d002dc190197206d85b1be97e51f978ef318f06/azure_mgmt_monitor-0.10.0-py2.py3-none-any.whl", hash = "sha256:3b2a19d712884f20f2b1af88fbd8a28b063b63613642076e605b5622c58f3466", size = 348293, upload-time = "2020-06-15T03:07:07.182Z" }, +] + +[[package]] +name = "azure-mgmt-network" +version = "28.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "azure-mgmt-core" }, + { name = "isodate" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/a3/8d2fa6e33107354c8cd2abcca4e0f02138bda4c6024984ae5fce5cf23b27/azure_mgmt_network-28.1.0.tar.gz", hash = "sha256:8c84bffb5ec75c6e0244e58ecf07c00d5fc421d616b0cb369c6fe585af33cf87", size = 651528, upload-time = "2024-12-20T05:56:54.599Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/68/d1604383635f1f1b16cd7f1e27004db40a1f0493c57b2da9fb36dc775a79/azure_mgmt_network-28.1.0-py3-none-any.whl", hash = "sha256:8ddb0e9ec8f10c9c152d60fc945908d113e4591f397ea3e40b92290ec2b01658", size = 575260, upload-time = "2024-12-20T05:56:57.672Z" }, +] + +[[package]] +name = "azure-mgmt-nspkg" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-nspkg" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/d4/a9a140ee15abd8b0a542c0d31b7212acf173582c10323b09380c79a1178b/azure-mgmt-nspkg-3.0.2.zip", hash = "sha256:8b2287f671529505b296005e6de9150b074344c2c7d1c805b3f053d081d58c52", size = 5090, upload-time = "2018-10-02T22:49:14.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/c2/af4b47845f27dc7d206ed4908b9e580f8bc94a4b2f3956a0d87c40719d90/azure_mgmt_nspkg-3.0.2-py3-none-any.whl", hash = "sha256:d638ea5fda3ed323db943feb29acaa200f5d8ff092078bf8d29d4a2f8ed16999", size = 1620, upload-time = "2018-10-02T22:49:13.772Z" }, +] + +[[package]] +name = "azure-mgmt-reservations" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "azure-mgmt-core" }, + { name = "msrest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/d0/05fb57db3766561b5ad0a8e095587025754c7cd768331b38747dd56af856/azure-mgmt-reservations-2.3.0.zip", hash = "sha256:047085105b2de637f2204a34866f3a6de969c56ec4ca0642049f0f4eacea1ca7", size = 157101, upload-time = "2023-03-20T05:46:48.645Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/c2/b3cde59f4dc1a2e5ee5c17da91536f8caf5091d4412c63ed2e8a29b99ae7/azure_mgmt_reservations-2.3.0-py3-none-any.whl", hash = "sha256:0dbda7da9d054be8c358208c5c046f30ac89012be341a5914d1c6ac1a8dd2e16", size = 140569, upload-time = "2023-03-20T05:46:46.633Z" }, +] + +[[package]] +name = "azure-mgmt-resource" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "msrest" }, + { name = "msrestazure" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/10/063973e5b4eb4c1ff65ac89c1ec04796c213c9957b38d59814b93201969d/azure-mgmt-resource-2.1.0.zip", hash = "sha256:aef8573066026db04ed3e7c5e727904e42f6462b6421c2e8a3646e4c4f8128be", size = 783224, upload-time = "2019-01-02T19:52:42.281Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/2e/e79a278bedfc21308ab0c632759cfda5d7ff02d62260bcc4632449937dcf/azure_mgmt_resource-2.1.0-py2.py3-none-any.whl", hash = "sha256:56c7d4e8d6854212977477272c600ab1d2c535de2a86095b56e948b06eb6d539", size = 757326, upload-time = "2019-01-02T19:52:40.239Z" }, +] + +[[package]] +name = "azure-mgmt-storage" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "msrest" }, + { name = "msrestazure" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/95/eb5efd39682b1e761323668c282bb1c4071fb4dd057cab9d11015de7ebe7/azure-mgmt-storage-3.3.0.zip", hash = "sha256:06faa7033a17ecd5127cab476a7cd79d5fe7b68e332c8e8e8303a20c9157cecd", size = 1058129, upload-time = "2019-04-30T20:46:56.071Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/99/c0cd1caf54c89c81973acc87b2f9a8fa4c5ce3c5e14f9be61a23cf335276/azure_mgmt_storage-3.3.0-py2.py3-none-any.whl", hash = "sha256:4242afd6d854ea7c6170768a6072ff5057beeba481d38ee0ff316d1252849dbd", size = 1021802, upload-time = "2019-04-30T20:46:53.146Z" }, +] + +[[package]] +name = "azure-mgmt-subscription" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-common" }, + { name = "azure-mgmt-nspkg" }, + { name = "msrestazure" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/23/31b74f6cfdbcd27d91e98b49bfe13a6ac26137be99a0f6f91d6e5ec87cf0/azure-mgmt-subscription-0.2.0.zip", hash = "sha256:309b23f0de65f26da80c801e913b0c3b2aea8b90ba583d919f81fe6f329d3f1b", size = 50651, upload-time = "2018-03-30T22:23:51.292Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/72/f63f72d9c27659f96aae287f7ba67c9ba2877213c2c10d8b797e0dee5059/azure_mgmt_subscription-0.2.0-py2.py3-none-any.whl", hash = "sha256:a37925fb820cb86dfb57559846cc97c7e066fe0e64da7594175f4a4f5e50783c", size = 40062, upload-time = "2018-03-30T22:23:50.251Z" }, +] + +[[package]] +name = "azure-nspkg" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/39/31/b24f494eca22e0389ac2e81b1b734453f187b69c95f039aa202f6f798b84/azure-nspkg-3.0.2.zip", hash = "sha256:e7d3cea6af63e667d87ba1ca4f8cd7cb4dfca678e4c55fc1cedb320760e39dd0", size = 4372, upload-time = "2018-10-02T22:48:45.999Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/0c/c562be95a9a2ed52454f598571cf300b1114d0db2aa27f5b8ed3bb9cd0c0/azure_nspkg-3.0.2-py3-none-any.whl", hash = "sha256:31a060caca00ed1ebd369fc7fe01a56768c927e404ebc92268f4d9d636435e28", size = 1530, upload-time = "2018-10-02T22:48:44.806Z" }, +] + +[[package]] +name = "azure-storage-blob" +version = "12.25.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "cryptography" }, + { name = "isodate" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/a6/343e225ffd1c27971fa3059b8bbb90088042ff9a41f631fdf2f9df4f190e/azure_storage_blob-12.25.0.tar.gz", hash = "sha256:42364ca8f9f49dbccd0acc10144ed47bb6770bf78719970b51915f048891abba", size = 570274, upload-time = "2025-03-11T18:50:10.906Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/90/b2bb0c338a486e62428d5126236d09e03e890f59c4939292e13ee57e5007/azure_storage_blob-12.25.0-py3-none-any.whl", hash = "sha256:a38e18bf10258fb19028f343db0d3d373280c6427a619c98c06d76485805b755", size = 406921, upload-time = "2025-03-11T18:50:12.819Z" }, +] + [[package]] name = "boto3" version = "1.34.7" @@ -60,6 +423,29 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e4/37/af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed/certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de", size = 163286, upload-time = "2025-10-05T04:12:14.03Z" }, ] +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, +] + [[package]] name = "charset-normalizer" version = "3.4.4" @@ -110,6 +496,91 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fe/d4/3060fe62a3e0e1c41303acb7a00240a5a867774f176ca9c485d03727d4f6/clickhouse_connect-0.8.15-cp312-cp312-win_amd64.whl", hash = "sha256:f63e5500d36e79deb91bfeb82548dd1737b57684405566bc9652d8fede8ce451", size = 246549, upload-time = "2025-01-25T23:42:32.574Z" }, ] +[[package]] +name = "cloud-adapter" +version = "0.0.0" +source = { directory = "../../tools/cloud_adapter" } +dependencies = [ + { name = "aliyun-python-sdk-alb" }, + { name = "aliyun-python-sdk-bssopenapi" }, + { name = "aliyun-python-sdk-cms" }, + { name = "aliyun-python-sdk-core" }, + { name = "aliyun-python-sdk-ecs" }, + { name = "aliyun-python-sdk-gwlb" }, + { name = "aliyun-python-sdk-nlb" }, + { name = "aliyun-python-sdk-ram" }, + { name = "aliyun-python-sdk-rds" }, + { name = "aliyun-python-sdk-slb" }, + { name = "aliyun-python-sdk-sts" }, + { name = "aliyun-python-sdk-vpc" }, + { name = "azure-identity" }, + { name = "azure-mgmt-commerce" }, + { name = "azure-mgmt-compute" }, + { name = "azure-mgmt-consumption" }, + { name = "azure-mgmt-monitor" }, + { name = "azure-mgmt-network" }, + { name = "azure-mgmt-reservations" }, + { name = "azure-mgmt-resource" }, + { name = "azure-mgmt-storage" }, + { name = "azure-mgmt-subscription" }, + { name = "azure-storage-blob" }, + { name = "boto3" }, + { name = "databricks-sdk" }, + { name = "google-cloud-bigquery" }, + { name = "google-cloud-compute" }, + { name = "google-cloud-iam" }, + { name = "google-cloud-monitoring" }, + { name = "google-cloud-storage" }, + { name = "msal" }, + { name = "msrest" }, + { name = "oauthlib" }, + { name = "requests" }, + { name = "retrying" }, + { name = "urllib3" }, + { name = "yandexcloud" }, +] + +[package.metadata] +requires-dist = [ + { name = "aliyun-python-sdk-alb", specifier = "==1.0.22" }, + { name = "aliyun-python-sdk-bssopenapi", specifier = "==1.6.8" }, + { name = "aliyun-python-sdk-cms", specifier = "==7.0.22" }, + { name = "aliyun-python-sdk-core", specifier = "==2.15.0" }, + { name = "aliyun-python-sdk-ecs", specifier = "==4.24.1" }, + { name = "aliyun-python-sdk-gwlb", specifier = "==1.0.2" }, + { name = "aliyun-python-sdk-nlb", specifier = "==1.0.12" }, + { name = "aliyun-python-sdk-ram", specifier = "==3.2.0" }, + { name = "aliyun-python-sdk-rds", specifier = "==2.5.11" }, + { name = "aliyun-python-sdk-slb", specifier = "==3.3.22" }, + { name = "aliyun-python-sdk-sts", specifier = "==3.0.2" }, + { name = "aliyun-python-sdk-vpc", specifier = "==3.0.14" }, + { name = "azure-identity", specifier = "==1.16.1" }, + { name = "azure-mgmt-commerce", specifier = "==1.0.1" }, + { name = "azure-mgmt-compute", specifier = "==7.0.0" }, + { name = "azure-mgmt-consumption", specifier = "==8.0.0" }, + { name = "azure-mgmt-monitor", specifier = "==0.10.0" }, + { name = "azure-mgmt-network", specifier = "==28.1.0" }, + { name = "azure-mgmt-reservations", specifier = "==2.3.0" }, + { name = "azure-mgmt-resource", specifier = "==2.1.0" }, + { name = "azure-mgmt-storage", specifier = "==3.3.0" }, + { name = "azure-mgmt-subscription", specifier = "==0.2.0" }, + { name = "azure-storage-blob", specifier = "==12.25.0" }, + { name = "boto3", specifier = "==1.34.7" }, + { name = "databricks-sdk", specifier = "==0.11.0" }, + { name = "google-cloud-bigquery", specifier = ">=3.11.4,<4.0" }, + { name = "google-cloud-compute", specifier = ">=1.14.1,<2.0" }, + { name = "google-cloud-iam", specifier = ">=2.16.1,<3.0" }, + { name = "google-cloud-monitoring", specifier = ">=2.15.1,<3.0" }, + { name = "google-cloud-storage", specifier = ">=2.10.0,<3.0" }, + { name = "msal", specifier = "==1.34.0" }, + { name = "msrest", specifier = "==0.7.1" }, + { name = "oauthlib", specifier = "==3.2.2" }, + { name = "requests", specifier = "==2.32.4" }, + { name = "retrying", specifier = ">=1.4.1" }, + { name = "urllib3", specifier = "==2.5.0" }, + { name = "yandexcloud", specifier = ">=0.327.0" }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -142,6 +613,69 @@ version = "4.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/53/fe/9e0fbdbca15c2c1253379c3a694f4315a420555e7874445b06edeaeacaea/coverage-4.2.tar.gz", hash = "sha256:e312776d3ef04632ec742ce2d2b7048b635073e0245e4f44dfe8b08cc50ac656", size = 359873, upload-time = "2016-07-26T21:09:39.762Z" } +[[package]] +name = "cryptography" +version = "46.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, + { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, + { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, + { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, + { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, + { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, + { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, + { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" }, + { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" }, + { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, + { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, + { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, + { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, + { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, + { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, + { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, + { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, + { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, + { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" }, + { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" }, +] + +[[package]] +name = "databricks-sdk" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/4b/8202e5565c0e2a77a915a384d6f3422605f2a9c55918a727c17605481d23/databricks-sdk-0.11.0.tar.gz", hash = "sha256:054b7ff5603e1ef5f4e852e34df27ccd44efc2423845d8b9dd58b580d601b531", size = 305891, upload-time = "2023-10-12T14:05:20.732Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/be/84bb3b39418c1f5014832bf776963e519adae44af566826dfc7cec6084db/databricks_sdk-0.11.0-py3-none-any.whl", hash = "sha256:f36eee592c8e5d9cc36a8257522e5900d0c4eb2ecf0ce52d9f38073a6934ba0f", size = 298910, upload-time = "2023-10-12T14:05:18.687Z" }, +] + +[[package]] +name = "deprecated" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, +] + [[package]] name = "dill" version = "0.4.0" @@ -165,8 +699,8 @@ name = "gemini-worker" version = "0.1.0" source = { editable = "." } dependencies = [ - { name = "boto3" }, { name = "clickhouse-connect" }, + { name = "cloud-adapter" }, { name = "config-client" }, { name = "kombu" }, { name = "pymongo" }, @@ -182,8 +716,8 @@ dev = [ [package.metadata] requires-dist = [ - { name = "boto3", specifier = "==1.34.7" }, { name = "clickhouse-connect", specifier = "==0.8.15" }, + { name = "cloud-adapter", directory = "../../tools/cloud_adapter" }, { name = "config-client", directory = "../../optscale_client/config_client" }, { name = "kombu", specifier = "==5.5.4" }, { name = "pymongo", specifier = "==4.6.3" }, @@ -197,6 +731,253 @@ dev = [ { name = "pylint", specifier = "==3.0.2" }, ] +[[package]] +name = "google-api-core" +version = "2.29.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "googleapis-common-protos" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/10/05572d33273292bac49c2d1785925f7bc3ff2fe50e3044cf1062c1dde32e/google_api_core-2.29.0.tar.gz", hash = "sha256:84181be0f8e6b04006df75ddfe728f24489f0af57c96a529ff7cf45bc28797f7", size = 177828, upload-time = "2026-01-08T22:21:39.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/b6/85c4d21067220b9a78cfb81f516f9725ea6befc1544ec9bd2c1acd97c324/google_api_core-2.29.0-py3-none-any.whl", hash = "sha256:d30bc60980daa36e314b5d5a3e5958b0200cb44ca8fa1be2b614e932b75a3ea9", size = 173906, upload-time = "2026-01-08T22:21:36.093Z" }, +] + +[package.optional-dependencies] +grpc = [ + { name = "grpcio" }, + { name = "grpcio-status" }, +] + +[[package]] +name = "google-auth" +version = "2.48.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0c/41/242044323fbd746615884b1c16639749e73665b718209946ebad7ba8a813/google_auth-2.48.0.tar.gz", hash = "sha256:4f7e706b0cd3208a3d940a19a822c37a476ddba5450156c3e6624a71f7c841ce", size = 326522, upload-time = "2026-01-26T19:22:47.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/1d/d6466de3a5249d35e832a52834115ca9d1d0de6abc22065f049707516d47/google_auth-2.48.0-py3-none-any.whl", hash = "sha256:2e2a537873d449434252a9632c28bfc268b0adb1e53f9fb62afc5333a975903f", size = 236499, upload-time = "2026-01-26T19:22:45.099Z" }, +] + +[[package]] +name = "google-cloud-bigquery" +version = "3.40.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core", extra = ["grpc"] }, + { name = "google-auth" }, + { name = "google-cloud-core" }, + { name = "google-resumable-media" }, + { name = "packaging" }, + { name = "python-dateutil" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/0c/153ee546c288949fcc6794d58811ab5420f3ecad5fa7f9e73f78d9512a6e/google_cloud_bigquery-3.40.1.tar.gz", hash = "sha256:75afcfb6e007238fe1deefb2182105249321145ff921784fe7b1de2b4ba24506", size = 511761, upload-time = "2026-02-12T18:44:18.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/f5/081cf5b90adfe524ae0d671781b0d497a75a0f2601d075af518828e22d8f/google_cloud_bigquery-3.40.1-py3-none-any.whl", hash = "sha256:9082a6b8193aba87bed6a2c79cf1152b524c99bb7e7ac33a785e333c09eac868", size = 262018, upload-time = "2026-02-12T18:44:16.913Z" }, +] + +[[package]] +name = "google-cloud-compute" +version = "1.43.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core", extra = ["grpc"] }, + { name = "google-auth" }, + { name = "grpcio" }, + { name = "proto-plus" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/e0/2ff59f2712c0b62ae376a532e732e76dee585e3a5eb028ac6ccfef0824e4/google_cloud_compute-1.43.0.tar.gz", hash = "sha256:113fd6a5e1832e5d032b94e391c3bd7e3b06e1bee0ed6665085dfefffb41360a", size = 4875940, upload-time = "2026-01-29T15:32:57.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/13/1a8333bb12656415b09f6d4528f78ca74f65dbbdd2bd2b3cfe4ac27e0110/google_cloud_compute-1.43.0-py3-none-any.whl", hash = "sha256:cbf25521cffff64bced7b8ce2ccde4d95c72edb6d95b566bbf9c116abd2a45b8", size = 3686689, upload-time = "2026-01-29T15:32:43.466Z" }, +] + +[[package]] +name = "google-cloud-core" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/03/ef0bc99d0e0faf4fdbe67ac445e18cdaa74824fd93cd069e7bb6548cb52d/google_cloud_core-2.5.0.tar.gz", hash = "sha256:7c1b7ef5c92311717bd05301aa1a91ffbc565673d3b0b4163a52d8413a186963", size = 36027, upload-time = "2025-10-29T23:17:39.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/20/bfa472e327c8edee00f04beecc80baeddd2ab33ee0e86fd7654da49d45e9/google_cloud_core-2.5.0-py3-none-any.whl", hash = "sha256:67d977b41ae6c7211ee830c7912e41003ea8194bff15ae7d72fd6f51e57acabc", size = 29469, upload-time = "2025-10-29T23:17:38.548Z" }, +] + +[[package]] +name = "google-cloud-iam" +version = "2.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core", extra = ["grpc"] }, + { name = "google-auth" }, + { name = "grpc-google-iam-v1" }, + { name = "grpcio" }, + { name = "proto-plus" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/0b/037b1e1eb601646d6f49bc06d62094c1d0996b373dcbf70c426c6c51572e/google_cloud_iam-2.21.0.tar.gz", hash = "sha256:fc560527e22b97c6cbfba0797d867cf956c727ba687b586b9aa44d78e92281a3", size = 499038, upload-time = "2026-01-15T13:15:08.243Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/44/02ac4e147ea034a3d641c11b54c9d8d0b80fc1ea6a8b7d6c1588d208d42a/google_cloud_iam-2.21.0-py3-none-any.whl", hash = "sha256:1b4a21302b186a31f3a516ccff303779638308b7c801fb61a2406b6a0c6293c4", size = 458958, upload-time = "2026-01-15T13:13:40.671Z" }, +] + +[[package]] +name = "google-cloud-monitoring" +version = "2.29.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core", extra = ["grpc"] }, + { name = "google-auth" }, + { name = "grpcio" }, + { name = "proto-plus" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/97/06/9fc0a34bed4221a68eef3e0373ae054de367dc42c0b689d5d917587ef61b/google_cloud_monitoring-2.29.1.tar.gz", hash = "sha256:86cac55cdd2608561819d19544fb3c129bbb7dcecc445d8de426e34cd6fa8e49", size = 404383, upload-time = "2026-02-05T18:59:13.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/97/7c27aa95eccf8b62b066295a7c4ad04284364b696d3e7d9d47152b255a24/google_cloud_monitoring-2.29.1-py3-none-any.whl", hash = "sha256:944a57031f20da38617d184d5658c1f938e019e8061f27fd944584831a1b9d5a", size = 387922, upload-time = "2026-02-05T18:58:54.964Z" }, +] + +[[package]] +name = "google-cloud-storage" +version = "2.19.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, + { name = "google-cloud-core" }, + { name = "google-crc32c" }, + { name = "google-resumable-media" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/76/4d965702e96bb67976e755bed9828fa50306dca003dbee08b67f41dd265e/google_cloud_storage-2.19.0.tar.gz", hash = "sha256:cd05e9e7191ba6cb68934d8eb76054d9be4562aa89dbc4236feee4d7d51342b2", size = 5535488, upload-time = "2024-12-05T01:35:06.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/94/6db383d8ee1adf45dc6c73477152b82731fa4c4a46d9c1932cc8757e0fd4/google_cloud_storage-2.19.0-py2.py3-none-any.whl", hash = "sha256:aeb971b5c29cf8ab98445082cbfe7b161a1f48ed275822f59ed3f1524ea54fba", size = 131787, upload-time = "2024-12-05T01:35:04.736Z" }, +] + +[[package]] +name = "google-crc32c" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/41/4b9c02f99e4c5fb477122cd5437403b552873f014616ac1d19ac8221a58d/google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79", size = 14192, upload-time = "2025-12-16T00:35:25.142Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/5f/7307325b1198b59324c0fa9807cafb551afb65e831699f2ce211ad5c8240/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113", size = 31300, upload-time = "2025-12-16T00:21:56.723Z" }, + { url = "https://files.pythonhosted.org/packages/21/8e/58c0d5d86e2220e6a37befe7e6a94dd2f6006044b1a33edf1ff6d9f7e319/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb", size = 30867, upload-time = "2025-12-16T00:38:31.302Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a9/a780cc66f86335a6019f557a8aaca8fbb970728f0efd2430d15ff1beae0e/google_crc32c-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14f87e04d613dfa218d6135e81b78272c3b904e2a7053b841481b38a7d901411", size = 33364, upload-time = "2025-12-16T00:40:22.96Z" }, + { url = "https://files.pythonhosted.org/packages/21/3f/3457ea803db0198c9aaca2dd373750972ce28a26f00544b6b85088811939/google_crc32c-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb5c869c2923d56cb0c8e6bcdd73c009c36ae39b652dbe46a05eb4ef0ad01454", size = 33740, upload-time = "2025-12-16T00:40:23.96Z" }, + { url = "https://files.pythonhosted.org/packages/df/c0/87c2073e0c72515bb8733d4eef7b21548e8d189f094b5dad20b0ecaf64f6/google_crc32c-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:3cc0c8912038065eafa603b238abf252e204accab2a704c63b9e14837a854962", size = 34437, upload-time = "2025-12-16T00:35:21.395Z" }, +] + +[[package]] +name = "google-resumable-media" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-crc32c" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/d7/520b62a35b23038ff005e334dba3ffc75fcf583bee26723f1fd8fd4b6919/google_resumable_media-2.8.0.tar.gz", hash = "sha256:f1157ed8b46994d60a1bc432544db62352043113684d4e030ee02e77ebe9a1ae", size = 2163265, upload-time = "2025-11-17T15:38:06.659Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/0b/93afde9cfe012260e9fe1522f35c9b72d6ee222f316586b1f23ecf44d518/google_resumable_media-2.8.0-py3-none-any.whl", hash = "sha256:dd14a116af303845a8d932ddae161a26e86cc229645bc98b39f026f9b1717582", size = 81340, upload-time = "2025-11-17T15:38:05.594Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.72.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload-time = "2025-11-06T18:29:24.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload-time = "2025-11-06T18:29:13.14Z" }, +] + +[package.optional-dependencies] +grpc = [ + { name = "grpcio" }, +] + +[[package]] +name = "grpc-google-iam-v1" +version = "0.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos", extra = ["grpc"] }, + { name = "grpcio" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/1e/1011451679a983f2f5c6771a1682542ecb027776762ad031fd0d7129164b/grpc_google_iam_v1-0.14.3.tar.gz", hash = "sha256:879ac4ef33136c5491a6300e27575a9ec760f6cdf9a2518798c1b8977a5dc389", size = 23745, upload-time = "2025-10-15T21:14:53.318Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/bd/330a1bbdb1afe0b96311249e699b6dc9cfc17916394fd4503ac5aca2514b/grpc_google_iam_v1-0.14.3-py3-none-any.whl", hash = "sha256:7a7f697e017a067206a3dfef44e4c634a34d3dee135fe7d7a4613fe3e59217e6", size = 32690, upload-time = "2025-10-15T21:14:51.72Z" }, +] + +[[package]] +name = "grpcio" +version = "1.78.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/8a/3d098f35c143a89520e568e6539cc098fcd294495910e359889ce8741c84/grpcio-1.78.0.tar.gz", hash = "sha256:7382b95189546f375c174f53a5fa873cef91c4b8005faa05cc5b3beea9c4f1c5", size = 12852416, upload-time = "2026-02-06T09:57:18.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/f4/7384ed0178203d6074446b3c4f46c90a22ddf7ae0b3aee521627f54cfc2a/grpcio-1.78.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:f9ab915a267fc47c7e88c387a3a28325b58c898e23d4995f765728f4e3dedb97", size = 5913985, upload-time = "2026-02-06T09:55:26.832Z" }, + { url = "https://files.pythonhosted.org/packages/81/ed/be1caa25f06594463f685b3790b320f18aea49b33166f4141bfdc2bfb236/grpcio-1.78.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3f8904a8165ab21e07e58bf3e30a73f4dffc7a1e0dbc32d51c61b5360d26f43e", size = 11811853, upload-time = "2026-02-06T09:55:29.224Z" }, + { url = "https://files.pythonhosted.org/packages/24/a7/f06d151afc4e64b7e3cc3e872d331d011c279aaab02831e40a81c691fb65/grpcio-1.78.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:859b13906ce098c0b493af92142ad051bf64c7870fa58a123911c88606714996", size = 6475766, upload-time = "2026-02-06T09:55:31.825Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a8/4482922da832ec0082d0f2cc3a10976d84a7424707f25780b82814aafc0a/grpcio-1.78.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b2342d87af32790f934a79c3112641e7b27d63c261b8b4395350dad43eff1dc7", size = 7170027, upload-time = "2026-02-06T09:55:34.7Z" }, + { url = "https://files.pythonhosted.org/packages/54/bf/f4a3b9693e35d25b24b0b39fa46d7d8a3c439e0a3036c3451764678fec20/grpcio-1.78.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12a771591ae40bc65ba67048fa52ef4f0e6db8279e595fd349f9dfddeef571f9", size = 6690766, upload-time = "2026-02-06T09:55:36.902Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b9/521875265cc99fe5ad4c5a17010018085cae2810a928bf15ebe7d8bcd9cc/grpcio-1.78.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:185dea0d5260cbb2d224c507bf2a5444d5abbb1fa3594c1ed7e4c709d5eb8383", size = 7266161, upload-time = "2026-02-06T09:55:39.824Z" }, + { url = "https://files.pythonhosted.org/packages/05/86/296a82844fd40a4ad4a95f100b55044b4f817dece732bf686aea1a284147/grpcio-1.78.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51b13f9aed9d59ee389ad666b8c2214cc87b5de258fa712f9ab05f922e3896c6", size = 8253303, upload-time = "2026-02-06T09:55:42.353Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e4/ea3c0caf5468537f27ad5aab92b681ed7cc0ef5f8c9196d3fd42c8c2286b/grpcio-1.78.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fd5f135b1bd58ab088930b3c613455796dfa0393626a6972663ccdda5b4ac6ce", size = 7698222, upload-time = "2026-02-06T09:55:44.629Z" }, + { url = "https://files.pythonhosted.org/packages/d7/47/7f05f81e4bb6b831e93271fb12fd52ba7b319b5402cbc101d588f435df00/grpcio-1.78.0-cp312-cp312-win32.whl", hash = "sha256:94309f498bcc07e5a7d16089ab984d42ad96af1d94b5a4eb966a266d9fcabf68", size = 4066123, upload-time = "2026-02-06T09:55:47.644Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e7/d6914822c88aa2974dbbd10903d801a28a19ce9cd8bad7e694cbbcf61528/grpcio-1.78.0-cp312-cp312-win_amd64.whl", hash = "sha256:9566fe4ababbb2610c39190791e5b829869351d14369603702e890ef3ad2d06e", size = 4797657, upload-time = "2026-02-06T09:55:49.86Z" }, +] + +[[package]] +name = "grpcio-status" +version = "1.71.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos" }, + { name = "grpcio" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/d1/b6e9877fedae3add1afdeae1f89d1927d296da9cf977eca0eb08fb8a460e/grpcio_status-1.71.2.tar.gz", hash = "sha256:c7a97e176df71cdc2c179cd1847d7fc86cca5832ad12e9798d7fed6b7a1aab50", size = 13677, upload-time = "2025-06-28T04:24:05.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/58/317b0134129b556a93a3b0afe00ee675b5657f0155509e22fcb853bafe2d/grpcio_status-1.71.2-py3-none-any.whl", hash = "sha256:803c98cb6a8b7dc6dbb785b1111aed739f241ab5e9da0bba96888aa74704cfd3", size = 14424, upload-time = "2025-06-28T04:23:42.136Z" }, +] + +[[package]] +name = "grpcio-tools" +version = "1.71.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "grpcio" }, + { name = "protobuf" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/9a/edfefb47f11ef6b0f39eea4d8f022c5bb05ac1d14fcc7058e84a51305b73/grpcio_tools-1.71.2.tar.gz", hash = "sha256:b5304d65c7569b21270b568e404a5a843cf027c66552a6a0978b23f137679c09", size = 5330655, upload-time = "2025-06-28T04:22:00.308Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/d3/3ed30a9c5b2424627b4b8411e2cd6a1a3f997d3812dbc6a8630a78bcfe26/grpcio_tools-1.71.2-cp312-cp312-linux_armv7l.whl", hash = "sha256:bfc0b5d289e383bc7d317f0e64c9dfb59dc4bef078ecd23afa1a816358fb1473", size = 2385479, upload-time = "2025-06-28T04:21:10.413Z" }, + { url = "https://files.pythonhosted.org/packages/54/61/e0b7295456c7e21ef777eae60403c06835160c8d0e1e58ebfc7d024c51d3/grpcio_tools-1.71.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b4669827716355fa913b1376b1b985855d5cfdb63443f8d18faf210180199006", size = 5431521, upload-time = "2025-06-28T04:21:12.261Z" }, + { url = "https://files.pythonhosted.org/packages/75/d7/7bcad6bcc5f5b7fab53e6bce5db87041f38ef3e740b1ec2d8c49534fa286/grpcio_tools-1.71.2-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:d4071f9b44564e3f75cdf0f05b10b3e8c7ea0ca5220acbf4dc50b148552eef2f", size = 2350289, upload-time = "2025-06-28T04:21:13.625Z" }, + { url = "https://files.pythonhosted.org/packages/b2/8a/e4c1c4cb8c9ff7f50b7b2bba94abe8d1e98ea05f52a5db476e7f1c1a3c70/grpcio_tools-1.71.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a28eda8137d587eb30081384c256f5e5de7feda34776f89848b846da64e4be35", size = 2743321, upload-time = "2025-06-28T04:21:15.007Z" }, + { url = "https://files.pythonhosted.org/packages/fd/aa/95bc77fda5c2d56fb4a318c1b22bdba8914d5d84602525c99047114de531/grpcio_tools-1.71.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b19c083198f5eb15cc69c0a2f2c415540cbc636bfe76cea268e5894f34023b40", size = 2474005, upload-time = "2025-06-28T04:21:16.443Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ff/ca11f930fe1daa799ee0ce1ac9630d58a3a3deed3dd2f465edb9a32f299d/grpcio_tools-1.71.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:784c284acda0d925052be19053d35afbf78300f4d025836d424cf632404f676a", size = 2851559, upload-time = "2025-06-28T04:21:18.139Z" }, + { url = "https://files.pythonhosted.org/packages/64/10/c6fc97914c7e19c9bb061722e55052fa3f575165da9f6510e2038d6e8643/grpcio_tools-1.71.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:381e684d29a5d052194e095546eef067201f5af30fd99b07b5d94766f44bf1ae", size = 3300622, upload-time = "2025-06-28T04:21:20.291Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d6/965f36cfc367c276799b730d5dd1311b90a54a33726e561393b808339b04/grpcio_tools-1.71.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3e4b4801fabd0427fc61d50d09588a01b1cfab0ec5e8a5f5d515fbdd0891fd11", size = 2913863, upload-time = "2025-06-28T04:21:22.196Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f0/c05d5c3d0c1d79ac87df964e9d36f1e3a77b60d948af65bec35d3e5c75a3/grpcio_tools-1.71.2-cp312-cp312-win32.whl", hash = "sha256:84ad86332c44572305138eafa4cc30040c9a5e81826993eae8227863b700b490", size = 945744, upload-time = "2025-06-28T04:21:23.463Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e9/c84c1078f0b7af7d8a40f5214a9bdd8d2a567ad6c09975e6e2613a08d29d/grpcio_tools-1.71.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e1108d37eecc73b1c4a27350a6ed921b5dda25091700c1da17cfe30761cd462", size = 1117695, upload-time = "2025-06-28T04:21:25.22Z" }, +] + [[package]] name = "idna" version = "3.11" @@ -206,6 +987,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, +] + [[package]] name = "isort" version = "5.13.2" @@ -217,11 +1007,11 @@ wheels = [ [[package]] name = "jmespath" -version = "1.0.1" +version = "0.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/56/3f325b1eef9791759784aa5046a8f6a1aff8f7c898a2e34506771d3b99d8/jmespath-0.10.0.tar.gz", hash = "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9", size = 21607, upload-time = "2020-05-12T22:03:47.267Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, + { url = "https://files.pythonhosted.org/packages/07/cb/5f001272b6faeb23c1c9e0acc04d48eaaf5c862c17709d20e3469c6e0139/jmespath-0.10.0-py2.py3-none-any.whl", hash = "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f", size = 24489, upload-time = "2020-05-12T22:03:45.643Z" }, ] [[package]] @@ -264,6 +1054,71 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, ] +[[package]] +name = "msal" +version = "1.34.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyjwt", extra = ["crypto"] }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/0e/c857c46d653e104019a84f22d4494f2119b4fe9f896c92b4b864b3b045cc/msal-1.34.0.tar.gz", hash = "sha256:76ba83b716ea5a6d75b0279c0ac353a0e05b820ca1f6682c0eb7f45190c43c2f", size = 153961, upload-time = "2025-09-22T23:05:48.989Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/dc/18d48843499e278538890dc709e9ee3dea8375f8be8e82682851df1b48b5/msal-1.34.0-py3-none-any.whl", hash = "sha256:f669b1644e4950115da7a176441b0e13ec2975c29528d8b9e81316023676d6e1", size = 116987, upload-time = "2025-09-22T23:05:47.294Z" }, +] + +[[package]] +name = "msal-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "msal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/99/5d239b6156eddf761a636bded1118414d161bd6b7b37a9335549ed159396/msal_extensions-1.3.1.tar.gz", hash = "sha256:c5b0fd10f65ef62b5f1d62f4251d51cbcaf003fcedae8c91b040a488614be1a4", size = 23315, upload-time = "2025-03-14T23:51:03.902Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/75/bd9b7bb966668920f06b200e84454c8f3566b102183bc55c5473d96cb2b9/msal_extensions-1.3.1-py3-none-any.whl", hash = "sha256:96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca", size = 20583, upload-time = "2025-03-14T23:51:03.016Z" }, +] + +[[package]] +name = "msrest" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "certifi" }, + { name = "isodate" }, + { name = "requests" }, + { name = "requests-oauthlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/77/8397c8fb8fc257d8ea0fa66f8068e073278c65f05acb17dcb22a02bfdc42/msrest-0.7.1.zip", hash = "sha256:6e7661f46f3afd88b75667b7187a92829924446c7ea1d169be8c4bb7eeb788b9", size = 175332, upload-time = "2022-06-13T22:41:25.111Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/cf/f2966a2638144491f8696c27320d5219f48a072715075d168b31d3237720/msrest-0.7.1-py3-none-any.whl", hash = "sha256:21120a810e1233e5e6cc7fe40b474eeb4ec6f757a15d7cf86702c369f9567c32", size = 85384, upload-time = "2022-06-13T22:41:22.42Z" }, +] + +[[package]] +name = "msrestazure" +version = "0.6.4.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "adal" }, + { name = "msrest" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/86/06a086e4ed3523765a1917665257b1828f1bf882130768445f082a4c3484/msrestazure-0.6.4.post1.tar.gz", hash = "sha256:39842007569e8c77885ace5c46e4bf2a9108fcb09b1e6efdf85b6e2c642b55d4", size = 47728, upload-time = "2024-04-10T21:00:51.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/7e/620e883def84ae56b8a9da382d960f7f801e37518fe930085cf72c148dae/msrestazure-0.6.4.post1-py2.py3-none-any.whl", hash = "sha256:2264493b086c2a0a82ddf5fd87b35b3fffc443819127fed992ac5028354c151e", size = 40789, upload-time = "2024-04-10T21:00:49.359Z" }, +] + +[[package]] +name = "oauthlib" +version = "3.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fa/fbf4001037904031639e6bfbfc02badfc7e12f137a8afa254df6c4c8a670/oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918", size = 177352, upload-time = "2022-10-17T20:04:27.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca", size = 151688, upload-time = "2022-10-17T20:04:24.037Z" }, +] + [[package]] name = "packaging" version = "25.0" @@ -282,6 +1137,53 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" }, ] +[[package]] +name = "proto-plus" +version = "1.27.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/02/8832cde80e7380c600fbf55090b6ab7b62bd6825dbedde6d6657c15a1f8e/proto_plus-1.27.1.tar.gz", hash = "sha256:912a7460446625b792f6448bade9e55cd4e41e6ac10e27009ef71a7f317fa147", size = 56929, upload-time = "2026-02-02T17:34:49.035Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/79/ac273cbbf744691821a9cca88957257f41afe271637794975ca090b9588b/proto_plus-1.27.1-py3-none-any.whl", hash = "sha256:e4643061f3a4d0de092d62aa4ad09fa4756b2cbb89d4627f3985018216f9fefc", size = 50480, upload-time = "2026-02-02T17:34:47.339Z" }, +] + +[[package]] +name = "protobuf" +version = "5.29.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/57/394a763c103e0edf87f0938dafcd918d53b4c011dfc5c8ae80f3b0452dbb/protobuf-5.29.6.tar.gz", hash = "sha256:da9ee6a5424b6b30fd5e45c5ea663aef540ca95f9ad99d1e887e819cdf9b8723", size = 425623, upload-time = "2026-02-04T22:54:40.584Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/88/9ee58ff7863c479d6f8346686d4636dd4c415b0cbeed7a6a7d0617639c2a/protobuf-5.29.6-cp310-abi3-win32.whl", hash = "sha256:62e8a3114992c7c647bce37dcc93647575fc52d50e48de30c6fcb28a6a291eb1", size = 423357, upload-time = "2026-02-04T22:54:25.805Z" }, + { url = "https://files.pythonhosted.org/packages/1c/66/2dc736a4d576847134fb6d80bd995c569b13cdc7b815d669050bf0ce2d2c/protobuf-5.29.6-cp310-abi3-win_amd64.whl", hash = "sha256:7e6ad413275be172f67fdee0f43484b6de5a904cc1c3ea9804cb6fe2ff366eda", size = 435175, upload-time = "2026-02-04T22:54:28.592Z" }, + { url = "https://files.pythonhosted.org/packages/06/db/49b05966fd208ae3f44dcd33837b6243b4915c57561d730a43f881f24dea/protobuf-5.29.6-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:b5a169e664b4057183a34bdc424540e86eea47560f3c123a0d64de4e137f9269", size = 418619, upload-time = "2026-02-04T22:54:30.266Z" }, + { url = "https://files.pythonhosted.org/packages/b7/d7/48cbf6b0c3c39761e47a99cb483405f0fde2be22cf00d71ef316ce52b458/protobuf-5.29.6-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:a8866b2cff111f0f863c1b3b9e7572dc7eaea23a7fae27f6fc613304046483e6", size = 320284, upload-time = "2026-02-04T22:54:31.782Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dd/cadd6ec43069247d91f6345fa7a0d2858bef6af366dbd7ba8f05d2c77d3b/protobuf-5.29.6-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:e3387f44798ac1106af0233c04fb8abf543772ff241169946f698b3a9a3d3ab9", size = 320478, upload-time = "2026-02-04T22:54:32.909Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cb/e3065b447186cb70aa65acc70c86baf482d82bf75625bf5a2c4f6919c6a3/protobuf-5.29.6-py3-none-any.whl", hash = "sha256:6b9edb641441b2da9fa8f428760fc136a49cf97a52076010cf22a2ff73438a86", size = 173126, upload-time = "2026-02-04T22:54:39.462Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/b6/6e630dff89739fcd427e3f72b3d905ce0acb85a45d4ec3e2678718a3487f/pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b", size = 146586, upload-time = "2026-01-16T18:04:18.534Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf", size = 83371, upload-time = "2026-01-16T18:04:17.174Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + [[package]] name = "pycodestyle" version = "2.11.1" @@ -291,6 +1193,29 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b1/90/a998c550d0ddd07e38605bb5c455d00fcc177a800ff9cc3dafdcb3dd7b56/pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67", size = 31132, upload-time = "2023-10-12T23:39:38.242Z" }, ] +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/5a/b46fa56bf322901eee5b0454a34343cdbdae202cd421775a8ee4e42fd519/pyjwt-2.11.0.tar.gz", hash = "sha256:35f95c1f0fbe5d5ba6e43f00271c275f7a1a4db1dab27bf708073b75318ea623", size = 98019, upload-time = "2026-01-30T19:59:55.694Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl", hash = "sha256:94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469", size = 28224, upload-time = "2026-01-30T19:59:54.539Z" }, +] + +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, +] + [[package]] name = "pylint" version = "3.0.2" @@ -374,6 +1299,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, ] +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/f2/05f29bc3913aea15eb670be136045bf5c5bbf4b99ecb839da9b422bb2c85/requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9", size = 55650, upload-time = "2024-03-22T20:32:29.939Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36", size = 24179, upload-time = "2024-03-22T20:32:28.055Z" }, +] + [[package]] name = "restapi-client" version = "0.0.0" @@ -398,6 +1336,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/67/f3/6cd296376653270ac1b423bb30bd70942d9916b6978c6f40472d6ac038e7/retrying-1.4.2-py3-none-any.whl", hash = "sha256:bbc004aeb542a74f3569aeddf42a2516efefcdaff90df0eb38fbfbf19f179f59", size = 10859, upload-time = "2025-08-03T03:35:23.829Z" }, ] +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + [[package]] name = "s3transfer" version = "0.10.4" @@ -410,6 +1360,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/66/05/7957af15543b8c9799209506df4660cba7afc4cf94bfb60513827e96bed6/s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e", size = 83175, upload-time = "2024-11-20T21:06:03.961Z" }, ] +[[package]] +name = "setuptools" +version = "82.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/f3/748f4d6f65d1756b9ae577f329c951cda23fb900e4de9f70900ced962085/setuptools-82.0.0.tar.gz", hash = "sha256:22e0a2d69474c6ae4feb01951cb69d515ed23728cf96d05513d36e42b62b37cb", size = 1144893, upload-time = "2026-02-08T15:08:40.206Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/c6/76dc613121b793286a3f91621d7b75a2b493e0390ddca50f11993eadf192/setuptools-82.0.0-py3-none-any.whl", hash = "sha256:70b18734b607bd1da571d097d236cfcfacaf01de45717d59e6e04b96877532e0", size = 1003468, upload-time = "2026-02-08T15:08:38.723Z" }, +] + [[package]] name = "six" version = "1.17.0" @@ -428,6 +1387,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, ] +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + [[package]] name = "tzdata" version = "2025.2" @@ -455,6 +1423,44 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/03/ff/7c0c86c43b3cbb927e0ccc0255cb4057ceba4799cd44ae95174ce8e8b5b2/vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc", size = 9636, upload-time = "2023-11-05T08:46:51.205Z" }, ] +[[package]] +name = "wrapt" +version = "2.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/37/ae31f40bec90de2f88d9597d0b5281e23ffe85b893a47ca5d9c05c63a4f6/wrapt-2.1.1.tar.gz", hash = "sha256:5fdcb09bf6db023d88f312bd0767594b414655d58090fc1c46b3414415f67fac", size = 81329, upload-time = "2026-02-03T02:12:13.786Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/cb/4d5255d19bbd12be7f8ee2c1fb4269dddec9cef777ef17174d357468efaa/wrapt-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab8e3793b239db021a18782a5823fcdea63b9fe75d0e340957f5828ef55fcc02", size = 61143, upload-time = "2026-02-03T02:11:46.313Z" }, + { url = "https://files.pythonhosted.org/packages/6f/07/7ed02daa35542023464e3c8b7cb937fa61f6c61c0361ecf8f5fecf8ad8da/wrapt-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c0300007836373d1c2df105b40777986accb738053a92fe09b615a7a4547e9f", size = 61740, upload-time = "2026-02-03T02:12:51.966Z" }, + { url = "https://files.pythonhosted.org/packages/c4/60/a237a4e4a36f6d966061ccc9b017627d448161b19e0a3ab80a7c7c97f859/wrapt-2.1.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2b27c070fd1132ab23957bcd4ee3ba707a91e653a9268dc1afbd39b77b2799f7", size = 121327, upload-time = "2026-02-03T02:11:06.796Z" }, + { url = "https://files.pythonhosted.org/packages/ae/fe/9139058a3daa8818fc67e6460a2340e8bbcf3aef8b15d0301338bbe181ca/wrapt-2.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b0e36d845e8b6f50949b6b65fc6cd279f47a1944582ed4ec8258cd136d89a64", size = 122903, upload-time = "2026-02-03T02:12:48.657Z" }, + { url = "https://files.pythonhosted.org/packages/91/10/b8479202b4164649675846a531763531f0a6608339558b5a0a718fc49a8d/wrapt-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4aeea04a9889370fcfb1ef828c4cc583f36a875061505cd6cd9ba24d8b43cc36", size = 121333, upload-time = "2026-02-03T02:11:32.148Z" }, + { url = "https://files.pythonhosted.org/packages/5f/75/75fc793b791d79444aca2c03ccde64e8b99eda321b003f267d570b7b0985/wrapt-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d88b46bb0dce9f74b6817bc1758ff2125e1ca9e1377d62ea35b6896142ab6825", size = 120458, upload-time = "2026-02-03T02:11:16.039Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3f30d511082ca6d947c405f9d8f6c8eaf83cfde527c439ec2c9a30eb5ea/wrapt-2.1.1-cp312-cp312-win32.whl", hash = "sha256:63decff76ca685b5c557082dfbea865f3f5f6d45766a89bff8dc61d336348833", size = 58086, upload-time = "2026-02-03T02:12:35.041Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c8/37625b643eea2849f10c3b90f69c7462faa4134448d4443234adaf122ae5/wrapt-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:b828235d26c1e35aca4107039802ae4b1411be0fe0367dd5b7e4d90e562fcbcd", size = 60328, upload-time = "2026-02-03T02:12:45.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/79/56242f07572d5682ba8065a9d4d9c2218313f576e3c3471873c2a5355ffd/wrapt-2.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:75128507413a9f1bcbe2db88fd18fbdbf80f264b82fa33a6996cdeaf01c52352", size = 58722, upload-time = "2026-02-03T02:12:27.949Z" }, + { url = "https://files.pythonhosted.org/packages/c4/da/5a086bf4c22a41995312db104ec2ffeee2cf6accca9faaee5315c790377d/wrapt-2.1.1-py3-none-any.whl", hash = "sha256:3b0f4629eb954394a3d7c7a1c8cca25f0b07cefe6aa8545e862e9778152de5b7", size = 43886, upload-time = "2026-02-03T02:11:45.048Z" }, +] + +[[package]] +name = "yandexcloud" +version = "0.377.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "deprecated" }, + { name = "googleapis-common-protos" }, + { name = "grpcio" }, + { name = "grpcio-tools" }, + { name = "protobuf" }, + { name = "pyjwt" }, + { name = "requests" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/16/99e4f2cb2e46a67019df74af7f3900de9c8e82e9c6e7126a608d90fbad36/yandexcloud-0.377.0.tar.gz", hash = "sha256:29d10cfd2592d5ed09af9c72c39086be402d31c54c5a7d5199995180c68ff06b", size = 3695405, upload-time = "2026-02-09T15:24:08.321Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/51/5c596d143a6183aa1d8fb392b89e5877738141f7b2bfaec0317416387d44/yandexcloud-0.377.0-py3-none-any.whl", hash = "sha256:ba52ade5b60a3f67e6aeaa5ad8accca71cd6e2e06c7ed25cdb30e00963dc82ea", size = 5699176, upload-time = "2026-02-09T15:24:05.958Z" }, +] + [[package]] name = "zstandard" version = "0.25.0" diff --git a/jira_ui/server/package-lock.json b/jira_ui/server/package-lock.json index c636965ae..c8d1f36f3 100644 --- a/jira_ui/server/package-lock.json +++ b/jira_ui/server/package-lock.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "dotenv": "^16.3.1", - "express": "^4.21.2", + "express": "^4.22.1", "express-rate-limit": "^6.10.0" }, "devDependencies": { @@ -70,28 +70,58 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -119,20 +149,32 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -214,22 +256,6 @@ "ms": "2.0.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -258,6 +284,20 @@ "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -272,12 +312,10 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -286,6 +324,19 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, "engines": { "node": ">= 0.4" } @@ -304,38 +355,39 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -438,20 +490,27 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -460,6 +519,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -473,11 +545,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -492,32 +565,11 @@ "node": ">=4" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -529,6 +581,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -555,6 +608,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -635,6 +689,15 @@ "node": ">=10" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -790,9 +853,10 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -855,11 +919,12 @@ "dev": true }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -877,15 +942,45 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -924,7 +1019,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/semver": { "version": "7.5.4", @@ -991,36 +1087,75 @@ "node": ">= 0.8" } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" + "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" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "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" @@ -1186,22 +1321,41 @@ "dev": true }, "body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "requires": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" + }, + "dependencies": { + "http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "requires": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + } + }, + "statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" + } } }, "brace-expansion": { @@ -1228,16 +1382,22 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "requires": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" } }, "chokidar": { @@ -1293,16 +1453,6 @@ "ms": "2.0.0" } }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1318,6 +1468,16 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1329,18 +1489,23 @@ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" }, "es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1352,38 +1517,38 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -1455,15 +1620,29 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" } }, "glob-parent": { @@ -1476,12 +1655,9 @@ } }, "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, "has-flag": { "version": "3.0.0", @@ -1489,23 +1665,10 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, "hasown": { "version": "2.0.2", @@ -1590,6 +1753,11 @@ "yallist": "^4.0.0" } }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1693,9 +1861,9 @@ "dev": true }, "object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" }, "on-finished": { "version": "2.4.1", @@ -1737,11 +1905,11 @@ "dev": true }, "qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "requires": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" } }, "range-parser": { @@ -1750,14 +1918,33 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "dependencies": { + "http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "requires": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + } + }, + "statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" + } } }, "readdirp": { @@ -1833,33 +2020,53 @@ } } }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "requires": { + "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" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "requires": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" } }, "simple-update-notifier": { diff --git a/jira_ui/server/package.json b/jira_ui/server/package.json index 2895c3d1a..729a58e0b 100644 --- a/jira_ui/server/package.json +++ b/jira_ui/server/package.json @@ -14,7 +14,7 @@ "license": "ISC", "dependencies": { "dotenv": "^16.3.1", - "express": "^4.21.2", + "express": "^4.22.1", "express-rate-limit": "^6.10.0" }, "devDependencies": { diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index 98c35541f..ef8701fdd 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -20,14 +20,14 @@ "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@vitejs/plugin-react-swc": "^3.9.0", "dotenv": "^16.3.1", - "express": "^4.21.2", + "express": "^4.22.1", "http-proxy-middleware": "^2.0.9", "react": "^18.2.0", "react-dom": "^18.2.0", "react-markdown": "^9.0.1", - "react-router-dom": "^6.19.0", + "react-router-dom": "^6.30.3", "remark-gfm": "^4.0.0", - "vite": "^6.3.6", + "vite": "^6.4.1", "vite-tsconfig-paths": "^5.1.4" }, "devDependencies": { @@ -1828,9 +1828,10 @@ } }, "node_modules/@remix-run/router": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.12.0.tgz", - "integrity": "sha512-2hXv036Bux90e1GXTWSMfNzfDDK8LA8JYEWfyHxzvwdp6GyoWEovKc9cotb3KCKmkdwsIBuFGX7ScTWyiHv7Eg==", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", + "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -2649,22 +2650,23 @@ "integrity": "sha512-O+a5c0D2se/u2VlBJmPRn45IB6R4mYMh1ok3dWxrIZ2pmLqzggBhb875mbq73508ylzofc0+hT9W41x4Y2s8lg==" }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -2679,11 +2681,40 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -2742,6 +2773,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3852,38 +3884,39 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -4457,6 +4490,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -4935,9 +4969,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -6348,11 +6382,12 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -6370,15 +6405,45 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6494,11 +6559,12 @@ } }, "node_modules/react-router": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.19.0.tgz", - "integrity": "sha512-0W63PKCZ7+OuQd7Tm+RbkI8kCLmn4GPjDbX61tWljPxWgqTKlEpeQUwPkT1DRjYhF8KSihK0hQpmhU4uxVMcdw==", + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", + "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.12.0" + "@remix-run/router": "1.23.2" }, "engines": { "node": ">=14.0.0" @@ -6508,12 +6574,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.19.0.tgz", - "integrity": "sha512-N6dWlcgL2w0U5HZUUqU2wlmOrSb3ighJmtQ438SWbhB1yuLTXQ8yyTBMK3BSvVjp7gBtKurT554nCtMOgxCZmQ==", + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz", + "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==", + "license": "MIT", "dependencies": { - "@remix-run/router": "1.12.0", - "react-router": "6.19.0" + "@remix-run/router": "1.23.2", + "react-router": "6.30.3" }, "engines": { "node": ">=14.0.0" @@ -6809,7 +6876,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/scheduler": { "version": "0.23.0", @@ -7693,9 +7761,9 @@ } }, "node_modules/vite": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", - "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -9146,9 +9214,9 @@ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, "@remix-run/router": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.12.0.tgz", - "integrity": "sha512-2hXv036Bux90e1GXTWSMfNzfDDK8LA8JYEWfyHxzvwdp6GyoWEovKc9cotb3KCKmkdwsIBuFGX7ScTWyiHv7Eg==" + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", + "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==" }, "@rollup/rollup-android-arm-eabi": { "version": "4.34.9", @@ -9659,22 +9727,22 @@ "integrity": "sha512-O+a5c0D2se/u2VlBJmPRn45IB6R4mYMh1ok3dWxrIZ2pmLqzggBhb875mbq73508ylzofc0+hT9W41x4Y2s8lg==" }, "body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "requires": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "dependencies": { "debug": { @@ -9685,10 +9753,27 @@ "ms": "2.0.0" } }, + "http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "requires": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" } } }, @@ -10515,38 +10600,38 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -11254,9 +11339,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -12162,11 +12247,11 @@ "dev": true }, "qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "requires": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" } }, "range-parser": { @@ -12175,14 +12260,33 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "dependencies": { + "http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "requires": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + } + }, + "statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" + } } }, "react": { @@ -12265,20 +12369,20 @@ } }, "react-router": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.19.0.tgz", - "integrity": "sha512-0W63PKCZ7+OuQd7Tm+RbkI8kCLmn4GPjDbX61tWljPxWgqTKlEpeQUwPkT1DRjYhF8KSihK0hQpmhU4uxVMcdw==", + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", + "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", "requires": { - "@remix-run/router": "1.12.0" + "@remix-run/router": "1.23.2" } }, "react-router-dom": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.19.0.tgz", - "integrity": "sha512-N6dWlcgL2w0U5HZUUqU2wlmOrSb3ighJmtQ438SWbhB1yuLTXQ8yyTBMK3BSvVjp7gBtKurT554nCtMOgxCZmQ==", + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz", + "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==", "requires": { - "@remix-run/router": "1.12.0", - "react-router": "6.19.0" + "@remix-run/router": "1.23.2", + "react-router": "6.30.3" } }, "react-select": { @@ -13088,9 +13192,9 @@ } }, "vite": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", - "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "requires": { "esbuild": "^0.25.0", "fdir": "^6.4.4", diff --git a/jira_ui/ui/package.json b/jira_ui/ui/package.json index f3e5d5697..7fdec2f32 100644 --- a/jira_ui/ui/package.json +++ b/jira_ui/ui/package.json @@ -16,14 +16,14 @@ "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@vitejs/plugin-react-swc": "^3.9.0", "dotenv": "^16.3.1", - "express": "^4.21.2", + "express": "^4.22.1", "http-proxy-middleware": "^2.0.9", "react": "^18.2.0", "react-dom": "^18.2.0", "react-markdown": "^9.0.1", - "react-router-dom": "^6.19.0", + "react-router-dom": "^6.30.3", "remark-gfm": "^4.0.0", - "vite": "^6.3.6", + "vite": "^6.4.1", "vite-tsconfig-paths": "^5.1.4" }, "scripts": { diff --git a/ngui/.prettierrc.cjs b/ngui/.prettierrc.cjs index 6dbc53116..ff58cd577 100644 --- a/ngui/.prettierrc.cjs +++ b/ngui/.prettierrc.cjs @@ -1,5 +1,5 @@ module.exports = { - trailingComma: "none", + trailingComma: "es5", printWidth: 128, tabWidth: 2, singleQuote: false, diff --git a/ngui/package.json b/ngui/package.json index d22bd6891..2583c9124 100644 --- a/ngui/package.json +++ b/ngui/package.json @@ -16,7 +16,6 @@ "dev": "concurrently \"pnpm -r dev\" \"pnpm codegen:watch\"" }, "devDependencies": { - "@eslint/js": "9.17.0", "@graphql-codegen/cli": "5.0.3", "@graphql-codegen/typescript": "4.1.2", "@graphql-codegen/typescript-react-apollo": "4.3.3", @@ -29,16 +28,8 @@ "@types/react": "18.2.45", "@types/react-dom": "18.2.18", "@types/react-syntax-highlighter": "15.5.13", - "@typescript-eslint/eslint-plugin": "8.41.0", - "@typescript-eslint/parser": "8.41.0", - "concurrently": "9.2.0", + "concurrently": "9.2.1", "eslint": "9.34.0", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-import": "2.31.0", - "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-react": "7.37.3", - "eslint-plugin-react-hooks": "5.1.0", - "eslint-plugin-unused-imports": "4.1.4", "globals": "15.13.0", "prettier": "3.3.3", "typescript": "5.7.2", diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 8ececd788..6da8230d6 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -9,9 +9,6 @@ importers: .: devDependencies: - '@eslint/js': - specifier: 9.17.0 - version: 9.17.0 '@graphql-codegen/cli': specifier: 5.0.3 version: 5.0.3(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) @@ -48,36 +45,12 @@ importers: '@types/react-syntax-highlighter': specifier: 15.5.13 version: 15.5.13 - '@typescript-eslint/eslint-plugin': - specifier: 8.41.0 - version: 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/parser': - specifier: 8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) concurrently: - specifier: 9.2.0 - version: 9.2.0 + specifier: 9.2.1 + version: 9.2.1 eslint: specifier: 9.34.0 version: 9.34.0(jiti@2.4.2) - eslint-config-prettier: - specifier: 9.1.0 - version: 9.1.0(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-import: - specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-prettier: - specifier: 5.2.1 - version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3) - eslint-plugin-react: - specifier: 7.37.3 - version: 7.37.3(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-react-hooks: - specifier: 5.1.0 - version: 5.1.0(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-unused-imports: - specifier: 4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)) globals: specifier: 15.13.0 version: 15.13.0 @@ -97,8 +70,8 @@ importers: specifier: 6.4.1 version: 6.4.1(graphql@16.10.0) '@apollo/server': - specifier: 4.11.3 - version: 4.11.3(graphql@16.10.0) + specifier: 4.13.0 + version: 4.13.0(graphql@16.10.0) '@apollo/utils.keyvaluecache': specifier: 3.1.0 version: 3.1.0 @@ -112,17 +85,17 @@ importers: specifier: 10.0.25 version: 10.0.25(graphql@16.10.0) body-parser: - specifier: 1.20.3 - version: 1.20.3 + specifier: 1.20.4 + version: 1.20.4 cors: specifier: 2.8.5 version: 2.8.5 express: - specifier: 4.21.2 - version: 4.21.2 + specifier: 4.22.1 + version: 4.22.1 express-rate-limit: specifier: 8.1.0 - version: 8.1.0(express@4.21.2) + version: 8.1.0(express@4.22.1) graphql: specifier: 16.10.0 version: 16.10.0 @@ -134,14 +107,35 @@ importers: version: 2.12.6(graphql@16.10.0) http-proxy-middleware: specifier: 2.0.9 - version: 2.0.9(@types/express@4.17.23) + version: 2.0.9(@types/express@4.17.25) devDependencies: + '@eslint/js': + specifier: 9.39.2 + version: 9.39.2 + '@graphql-eslint/eslint-plugin': + specifier: 4.4.0 + version: 4.4.0(@types/node@22.10.5)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': + specifier: 8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': + specifier: 8.54.0 + version: 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) dotenv: specifier: 17.2.0 version: 17.2.0 dotenv-expand: specifier: 12.0.2 version: 12.0.2 + eslint-plugin-import: + specifier: 2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)) + eslint-plugin-node: + specifier: 11.1.0 + version: 11.1.0(eslint@9.34.0(jiti@2.4.2)) + eslint-plugin-prettier: + specifier: 5.5.5 + version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3) nodemon: specifier: 3.1.10 version: 3.1.10 @@ -225,10 +219,10 @@ importers: version: 8.7.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@uiw/react-textarea-code-editor': specifier: 2.1.1 - version: 2.1.1(@babel/runtime@7.27.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.1.1(@babel/runtime@7.28.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@vitejs/plugin-react-swc': specifier: 3.10.2 - version: 3.10.2(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) + version: 3.10.2(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) ajv: specifier: 8.12.0 version: 8.12.0 @@ -236,8 +230,8 @@ importers: specifier: 0.8.1 version: 0.8.1(@types/dlv@1.1.5) axios: - specifier: 1.12.2 - version: 1.12.2 + specifier: 1.13.5 + version: 1.13.5 core-js: specifier: 3.27.2 version: 3.27.2 @@ -251,8 +245,8 @@ importers: specifier: 2.29.3 version: 2.29.3 express: - specifier: 4.21.2 - version: 4.21.2 + specifier: 4.22.1 + version: 4.22.1 file-saver: specifier: 2.0.5 version: 2.0.5 @@ -272,11 +266,11 @@ importers: specifier: 1.3.1 version: 1.3.1 jspdf: - specifier: 3.0.2 - version: 3.0.2 + specifier: 4.1.0 + version: 4.1.0 jspdf-autotable: - specifier: 5.0.2 - version: 5.0.2(jspdf@3.0.2) + specifier: 5.0.7 + version: 5.0.7(jspdf@4.1.0) localforage: specifier: 1.10.0 version: 1.10.0 @@ -314,8 +308,8 @@ importers: specifier: 2.5.13 version: 2.5.13(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-markdown: - specifier: 8.0.5 - version: 8.0.5(@types/react@18.2.45)(react@18.2.0) + specifier: 10.1.0 + version: 10.1.0(@types/react@18.2.45)(react@18.2.0) react-plotly.js: specifier: 2.6.0 version: 2.6.0(plotly.js@3.0.1(mapbox-gl@1.13.3)(webpack@5.100.0(esbuild@0.25.6)))(react@18.2.0) @@ -323,8 +317,8 @@ importers: specifier: 8.0.5 version: 8.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.0) react-router-dom: - specifier: 6.6.2 - version: 6.6.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: 6.30.3 + version: 6.30.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-test-renderer: specifier: 18.2.0 version: 18.2.0(react@18.2.0) @@ -337,12 +331,9 @@ importers: redux-persist: specifier: 6.0.0 version: 6.0.0(react@18.2.0)(redux@4.2.0) - remark-directive: - specifier: 3.0.0 - version: 3.0.0 remark-gfm: - specifier: 3.0.1 - version: 3.0.1 + specifier: 4.0.1 + version: 4.0.1 require-context.macro: specifier: 1.2.2 version: 1.2.2(babel-plugin-macros@3.1.0) @@ -358,46 +349,49 @@ importers: tss-react: specifier: 4.5.2 version: 4.5.2(@emotion/react@11.14.0(@types/react@18.2.45)(react@18.2.0))(react@18.2.0) - unist-util-visit: - specifier: 5.0.0 - version: 5.0.0 uuid: specifier: 9.0.0 version: 9.0.0 vite: - specifier: 6.3.6 - version: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + specifier: 6.4.1 + version: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) + version: 5.1.4(typescript@5.7.2)(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) devDependencies: + '@hystax/eslint-config-ui': + specifier: 1.0.0 + version: 1.0.0(@types/eslint@9.6.1)(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) '@storybook/addon-actions': - specifier: 8.6.6 - version: 8.6.6(storybook@8.6.6(prettier@3.3.3)) + specifier: 8.6.15 + version: 8.6.15(storybook@8.6.15(prettier@3.3.3)) '@storybook/addon-backgrounds': - specifier: 8.6.6 - version: 8.6.6(storybook@8.6.6(prettier@3.3.3)) + specifier: 8.6.15 + version: 8.6.15(storybook@8.6.15(prettier@3.3.3)) '@storybook/addon-controls': - specifier: 8.6.6 - version: 8.6.6(storybook@8.6.6(prettier@3.3.3)) + specifier: 8.6.15 + version: 8.6.15(storybook@8.6.15(prettier@3.3.3)) '@storybook/addon-links': - specifier: 8.6.6 - version: 8.6.6(react@18.2.0)(storybook@8.6.6(prettier@3.3.3)) + specifier: 8.6.15 + version: 8.6.15(react@18.2.0)(storybook@8.6.15(prettier@3.3.3)) '@storybook/manager-api': - specifier: 8.6.6 - version: 8.6.6(storybook@8.6.6(prettier@3.3.3)) + specifier: 8.6.14 + version: 8.6.14(storybook@8.6.15(prettier@3.3.3)) '@storybook/react': - specifier: 8.6.6 - version: 8.6.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.6(prettier@3.3.3))(typescript@5.7.2) + specifier: 8.6.15 + version: 8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.15(prettier@3.3.3))(typescript@5.7.2) '@storybook/react-vite': - specifier: 8.6.6 - version: 8.6.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.44.2)(storybook@8.6.6(prettier@3.3.3))(typescript@5.7.2)(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) + specifier: 8.6.15 + version: 8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.44.2)(storybook@8.6.15(prettier@3.3.3))(typescript@5.7.2)(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) '@storybook/theming': - specifier: 8.6.6 - version: 8.6.6(storybook@8.6.6(prettier@3.3.3)) + specifier: ^8.6.14 + version: 8.6.14(storybook@8.6.15(prettier@3.3.3)) + eslint-plugin-react: + specifier: 7.37.5 + version: 7.37.5(eslint@9.34.0(jiti@2.4.2)) glob: - specifier: 10.3.10 - version: 10.3.10 + specifier: 13.0.1 + version: 13.0.1 jsdom: specifier: 22.1.0 version: 22.1.0 @@ -405,11 +399,11 @@ importers: specifier: 2.1.0 version: 2.1.0 storybook: - specifier: 8.6.6 - version: 8.6.6(prettier@3.3.3) + specifier: ^8.6.15 + version: 8.6.15(prettier@3.3.3) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.10.5)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) packages: @@ -480,10 +474,10 @@ packages: peerDependencies: graphql: 14.x || 15.x || 16.x - '@apollo/server@4.11.3': - resolution: {integrity: sha512-mW8idE2q0/BN14mimfJU5DAnoPHZRrAWgwsVLBEdACds+mxapIYxIbI6AH4AsOpxfrpvHts3PCYDbopy1XPW1g==} + '@apollo/server@4.13.0': + resolution: {integrity: sha512-t4GzaRiYIcPwYy40db6QjZzgvTr9ztDKBddykUXmBb2SVjswMKXbkaJ5nPeHqmT3awr9PAaZdCZdZhRj55I/8A==} engines: {node: '>=14.16.0'} - deprecated: Apollo Server v4 is deprecated and will transition to end-of-life on January 26, 2026. As long as you are already using a non-EOL version of Node.js, upgrading to v5 should take only a few minutes. See https://www.apollographql.com/docs/apollo-server/previous-versions for details. + deprecated: Apollo Server v4 is end-of-life since January 26, 2026. As long as you are already using a non-EOL version of Node.js, upgrading to v5 should take only a few minutes. See https://www.apollographql.com/docs/apollo-server/previous-versions for details. peerDependencies: graphql: ^16.6.0 @@ -848,6 +842,10 @@ packages: resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -1110,10 +1108,20 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/config-array@0.21.0': resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1130,14 +1138,14 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.17.0': - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.34.0': resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1302,6 +1310,20 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + '@graphql-eslint/eslint-plugin@4.4.0': + resolution: {integrity: sha512-dhW6fpk3Souuaphhc38uMAGCcgKMgtCJWFygIKODw/Kns43wiQqRPVay0aNFY1JBx3aevn4KPT/BCOdm6HNncA==} + engines: {node: '>=18'} + peerDependencies: + '@apollo/subgraph': ^2 + eslint: '>=8.44.0' + graphql: ^16 + json-schema-to-ts: ^3 + peerDependenciesMeta: + '@apollo/subgraph': + optional: true + json-schema-to-ts: + optional: true + '@graphql-hive/signal@1.0.0': resolution: {integrity: sha512-RiwLMc89lTjvyLEivZ/qxAC5nBHoS2CtsWFSOsN35sxG9zoo5Z+JsFHM8MlvmO9yt+MJNIyC5MLE1rsbOphlag==} engines: {node: '>=18.0.0'} @@ -1525,6 +1547,19 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@hystax/eslint-config-ui@1.0.0': + resolution: {integrity: sha512-qYpNav7dk2QyY0Mdgn8e9HqMQF4FEog2no2ESKKrkVt9EuSyR4dGtpMgAUGLET2GI2cEn+DTIaALJkmhYr0h1w==} + peerDependencies: + eslint: ^9.34.0 + + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.1': + resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} + engines: {node: 20 || >=22} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1553,19 +1588,28 @@ packages: '@jridgewell/gen-mapping@0.3.12': resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.10': - resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} '@jridgewell/sourcemap-codec@1.5.4': resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@kamilkisiela/fast-url-parser@1.1.4': resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} @@ -1624,8 +1668,8 @@ packages: '@mapbox/tiny-sdf@1.2.5': resolution: {integrity: sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==} - '@mapbox/tiny-sdf@2.0.6': - resolution: {integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==} + '@mapbox/tiny-sdf@2.0.7': + resolution: {integrity: sha512-25gQLQMcpivjOSA40g3gO6qgiFPDpWRoMfd+G/GoppPIeP6JDaMMkMrEJnMZhKyyS6iKwVt5YKu02vCUyJM3Ug==} '@mapbox/unitbezier@0.0.0': resolution: {integrity: sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==} @@ -1924,8 +1968,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.1.2': - resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@plotly/d3-sankey-circular@0.33.1': @@ -2016,9 +2060,9 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@remix-run/router@1.2.1': - resolution: {integrity: sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==} - engines: {node: '>=14'} + '@remix-run/router@1.23.2': + resolution: {integrity: sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==} + engines: {node: '>=14.0.0'} '@repeaterjs/repeater@3.0.6': resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} @@ -2146,95 +2190,100 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@storybook/addon-actions@8.6.6': - resolution: {integrity: sha512-RSutBNSwh0KDAGAEUME4GuhrzmdBYnZOWNRsFuKKsgpeDiVEBWafiCQEf39PxzsMThzFvvRx5Pie4968EDy27w==} + '@storybook/addon-actions@8.6.15': + resolution: {integrity: sha512-zc600PBJqP9hCyRY5escKgKf6Zt9kdNZfm+Jwb46k5/NMSO4tNVeOPGBFxW9kSsIYk8j55sNske+Yh60G+8bcw==} peerDependencies: - storybook: ^8.6.6 + storybook: ^8.6.15 - '@storybook/addon-backgrounds@8.6.6': - resolution: {integrity: sha512-nhGy/JumrqFxMDdOF33b7p4ZrAZ9dAc1661AyHxJg0UULvV6HUq4BAzmYFEoZGOntEh6HUSw8hxLzF76TL2mVA==} + '@storybook/addon-backgrounds@8.6.15': + resolution: {integrity: sha512-W36uEzMWPO/K3+8vV1R/GozdaFrIix0qqmxX0qoAT6/o4+zqHiloZkTF+2iuUTx/VmuztLcAoSaPDh8UPy3Q+g==} peerDependencies: - storybook: ^8.6.6 + storybook: ^8.6.15 - '@storybook/addon-controls@8.6.6': - resolution: {integrity: sha512-QVuUY+cveqWSaSMCRY4nM1ilA19T6ya28qTAUGaJW1undy0ig5vH3zbBAkMJnXKvraCjl9UlciyERplb8ljjxg==} + '@storybook/addon-controls@8.6.15': + resolution: {integrity: sha512-CgV8WqGxQrqSKs1a/Y1v4mrsBJXGFmO5u4kvdhPbftRVfln11W4Hvc1SFmgXwGvmcwekAKH79Uwwkjhj3l6gzA==} peerDependencies: - storybook: ^8.6.6 + storybook: ^8.6.15 - '@storybook/addon-links@8.6.6': - resolution: {integrity: sha512-tDKoKhJsyfLUIWhHw0gLtOQcdaMrbj/fvBAaLKOSH/SysyiHAHe8A8MBVheLXJac/PfajSkV7YtULL36AeOzTQ==} + '@storybook/addon-links@8.6.15': + resolution: {integrity: sha512-abRWnDPBTwnj6sQYfAjUnYCNuUQbrVLLOyuormbDUqOcvZ+OqehNYo4BKXx0/lz61h0A2dOD1IuDo40uWyYVFQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.6 + storybook: ^8.6.15 peerDependenciesMeta: react: optional: true - '@storybook/builder-vite@8.6.6': - resolution: {integrity: sha512-1/RZMdzg4QvrLA7lsN21+ofcf/Uwne+R6RM+sE+AzkTRS2EREa+KwFPBCP8n+iIrhmOU0IG8XnNDiReLzi5alA==} + '@storybook/builder-vite@8.6.15': + resolution: {integrity: sha512-9Y05/ndZE6/eI7ZIUCD/QtH2htRIUs9j1gxE6oW0zRo9TJO1iqxfLNwgzd59KEkId7gdZxPei0l+LGTUGXYKRg==} peerDependencies: - storybook: ^8.6.6 + storybook: ^8.6.15 vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - '@storybook/components@8.6.6': - resolution: {integrity: sha512-YiUPqrp76//r6tkfosHwkpERPEnZfI2Io0e3A9MLG1mYOWeMsHi5XcZum/7Opt1BF2nACDn5aTkg2GMGc9H+Vg==} + '@storybook/components@8.6.15': + resolution: {integrity: sha512-+9GVKXPEW8Kl9zvNSTm9+VrJtx/puMZiO7gxCML63nK4aTWJXHQr4t9YUoGammSBM3AV1JglsKm6dBgJEeCoiA==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/core@8.6.6': - resolution: {integrity: sha512-XvVFrIWcNAE564S3D8228HBlTrZtbvBeBZwVtVeLFJEOzSVp/7EbXOuoVWqeqAUV8AQPjPWDQUYdA8hqYUntHg==} + '@storybook/core@8.6.15': + resolution: {integrity: sha512-VFpKcphNurJpSC4fpUfKL3GTXVoL53oytghGR30QIw5jKWwaT50HVbTyb41BLOUuZjmMhUQA8weiQEew6RX0gw==} peerDependencies: prettier: ^2 || ^3 peerDependenciesMeta: prettier: optional: true - '@storybook/csf-plugin@8.6.6': - resolution: {integrity: sha512-gOPcLjjPQn/CVIUVJ32HU8bAnem/Uc554BGrn+aI2z8vTRA32t8fEDfACqHp8SsVUwBK1gD/O/LiQggS9U4KuQ==} + '@storybook/csf-plugin@8.6.15': + resolution: {integrity: sha512-ZLz/mtOoE1Jj2lE4pK3U7MmYrv5+lot3mGtwxGb832tcABMc97j9O+reCVxZYc7DeFbBuuEdMT9rBL/O3kXYmw==} peerDependencies: - storybook: ^8.6.6 + storybook: ^8.6.15 '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/manager-api@8.6.6': - resolution: {integrity: sha512-Wm/PvY9IZuCGxlqg2Rt6M95WaXnCPl0wHunTD6vDIgnnjzEzLUeigrsHOSh617tIOQ1F9i3J9UegaslImuqXGg==} + '@storybook/manager-api@8.6.14': + resolution: {integrity: sha512-ez0Zihuy17udLbfHZQXkGqwtep0mSGgHcNzGN7iZrMP1m+VmNo+7aGCJJdvXi7+iU3yq8weXSQFWg5DqWgLS7g==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/manager-api@8.6.15': + resolution: {integrity: sha512-ZOFtH821vFcwzECbFYFTKtSVO96Cvwwg45dMh3M/9bZIdN7klsloX7YNKw8OKvwE6XLFLsi2OvsNNcmTW6g88w==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/preview-api@8.6.6': - resolution: {integrity: sha512-My6lrZ89DWFAjLYAhTztHFxOlS0z8SD7yYsAHMD7oUYF31O/h6aveT3n7da5Vlc8MuNVzuGeXh4zBWkJawTYxg==} + '@storybook/preview-api@8.6.15': + resolution: {integrity: sha512-oqsp8f7QekB9RzpDqOXZQcPPRXXd/mTsnZSdAAQB/pBVqUpC9h/y5hgovbYnJ6DWXcpODbMwH+wbJHZu5lvm+w==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/react-dom-shim@8.6.6': - resolution: {integrity: sha512-1+hpswa55PVmH0X9GBKsD6KUwWPzsX9ifI/NKVJNTW/qKOFIdBdaKf6rsX5wOUnEsvoM9eiaPIPfNCOu3OP20g==} + '@storybook/react-dom-shim@8.6.15': + resolution: {integrity: sha512-m2trBmmd4iom1qwrp1F109zjRDc0cPaHYhDQxZR4Qqdz8pYevYJTlipDbH/K4NVB6Rn687RT29OoOPfJh6vkFA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.6 + storybook: ^8.6.15 - '@storybook/react-vite@8.6.6': - resolution: {integrity: sha512-1Ssn+26kLSbmPMTeB8WoDdKbt1xNr5KsbSJa98fCWE4XyD2uagEvRJwzZ89UL2KbsNyb7dhFQuFemBXuS7Ke1w==} + '@storybook/react-vite@8.6.15': + resolution: {integrity: sha512-9st+2NCemzzBwmindpDrRLEqYJmwwd2RnXMoj+Wt4Y1r4MGoRe1l837ciT2tmstaqekY2mVUSYd6879NzeeMYw==} engines: {node: '>=18.0.0'} peerDependencies: - '@storybook/test': 8.6.6 + '@storybook/test': 8.6.15 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.6 + storybook: ^8.6.15 vite: ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: '@storybook/test': optional: true - '@storybook/react@8.6.6': - resolution: {integrity: sha512-IQA9SCxVoUZNfsCdxJvcqZyTuFJQXoxVkLeRnD8rJ6hc/uW3kD0yUzX9Gb6XhfKyT2mW9os4F6Z+ZcYJj+UM5w==} + '@storybook/react@8.6.15': + resolution: {integrity: sha512-hdnhlJg+YkpPMOw2hvK7+mhdxAbguA+TFTIAzVV9CeUYoHDIZAsgeKVhRmgZGN20NGjRN5ZcwkplAMJnF9v+6w==} engines: {node: '>=18.0.0'} peerDependencies: - '@storybook/test': 8.6.6 + '@storybook/test': 8.6.15 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.6 + storybook: ^8.6.15 typescript: '>= 4.2.x' peerDependenciesMeta: '@storybook/test': @@ -2242,8 +2291,13 @@ packages: typescript: optional: true - '@storybook/theming@8.6.6': - resolution: {integrity: sha512-Ms5myBwNZYkytCIqwOD6sIvi+o6vKBUqPuG+YiQ2jb76PT0HIuQJBfoAvowtMA2BO2vxAa5A7rgAYRzP5jKInw==} + '@storybook/theming@8.6.14': + resolution: {integrity: sha512-r4y+LsiB37V5hzpQo+BM10PaCsp7YlZ0YcZzQP1OCkPlYXmUAFy2VvDKaFRpD8IeNPKug2u4iFm/laDEbs03dg==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/theming@8.6.15': + resolution: {integrity: sha512-dAbL0XOekyT6XsF49R6Etj3WxQ/LpdJDIswUUeHgVJ6/yd2opZOGbPxnwA3zlmAh1c0tvpPyhSDXxSG79u8e4Q==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -2337,20 +2391,20 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@turf/area@7.2.0': - resolution: {integrity: sha512-zuTTdQ4eoTI9nSSjerIy4QwgvxqwJVciQJ8tOPuMHbXJ9N/dNjI7bU8tasjhxas/Cx3NE9NxVHtNpYHL0FSzoA==} + '@turf/area@7.3.3': + resolution: {integrity: sha512-FT66TCxUec+3RsCCyO1kWP57/tiEWEqYfpIs5n44dup401Cne/E+xunahEWxMfP/HSUxfcRQqrjH5vEulLrNoA==} - '@turf/bbox@7.2.0': - resolution: {integrity: sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==} + '@turf/bbox@7.3.3': + resolution: {integrity: sha512-1zNO/JUgDp0N+3EG5fG7+8EolE95OW1LD8ur0hRP0JK+lRyN0gAvJT7n1I9pu/NIqTa8x/zXxGRc1dcOdohYkg==} - '@turf/centroid@7.2.0': - resolution: {integrity: sha512-yJqDSw25T7P48au5KjvYqbDVZ7qVnipziVfZ9aSo7P2/jTE7d4BP21w0/XLi3T/9bry/t9PR1GDDDQljN4KfDw==} + '@turf/centroid@7.3.3': + resolution: {integrity: sha512-3vWLnF1CksLk7xTUH11IzOQJ6fOoj7zhuL8M3GTxcKruVkGat/vIm3Ye5b68sDVcE5nFDA2pYjjbL7Rfmn3/GQ==} - '@turf/helpers@7.2.0': - resolution: {integrity: sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==} + '@turf/helpers@7.3.3': + resolution: {integrity: sha512-9Ias0L1GuZPIzO6sk8jraTEuLJye6n9LYNEdw69ZGOQ6C1IigjxkPW49zmn21aTv1z27vxdVLSS3r+78DB2QnQ==} - '@turf/meta@7.2.0': - resolution: {integrity: sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==} + '@turf/meta@7.3.3': + resolution: {integrity: sha512-Tz1j4h70iFB5SebWWoVv/uL59x4aOngXU+d1xQDXzOCn/O6txnreGVGMcYU362c5F06yqZx38H9UFTQ553lK0w==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -2427,14 +2481,17 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@4.19.8': + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} - '@types/express@4.17.23': - resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} '@types/file-saver@2.0.7': resolution: {integrity: sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==} @@ -2451,6 +2508,9 @@ packages: '@types/hast@2.3.10': resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/hoist-non-react-statics@3.3.6': resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} @@ -2496,9 +2556,6 @@ packages: '@types/mapbox__vector-tile@1.3.4': resolution: {integrity: sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==} - '@types/mdast@3.0.15': - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -2508,12 +2565,15 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node-fetch@2.6.12': - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + '@types/node-fetch@2.6.13': + resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} '@types/node@22.10.5': resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} + '@types/node@25.2.3': + resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} + '@types/offscreencanvas@2019.7.3': resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} @@ -2535,6 +2595,9 @@ packages: '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + '@types/qs@6.9.18': resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} @@ -2568,11 +2631,14 @@ packages: '@types/scheduler@0.26.0': resolution: {integrity: sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==} - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} - '@types/serve-static@1.15.8': - resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -2621,6 +2687,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.54.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.41.0': resolution: {integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2628,22 +2702,45 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.54.0': + resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.41.0': resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.41.0': resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.41.0': resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.41.0': resolution: {integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2651,16 +2748,33 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/types@8.41.0': resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.41.0': resolution: {integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.41.0': resolution: {integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2668,10 +2782,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.41.0': resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@uiw/react-textarea-code-editor@2.1.1': resolution: {integrity: sha512-vFUb58Dj8SCAcAL264ik6rFMzHmOAI4TG8BInu9avCdJ1ugRhrwD+RA7FKQN2xAoBokF9JJacyTqx+EUXIOg2g==} peerDependencies: @@ -2679,6 +2804,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@vitejs/plugin-react-swc@3.10.2': resolution: {integrity: sha512-xD3Rdvrt5LgANug7WekBn1KhcvLn1H3jNBfJRL3reeOIua/WnZOEV5qi5qIBq5T8R0jUDmRtxuvk4bPhzGHDWw==} peerDependencies: @@ -2815,8 +2943,8 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-import-phases@1.0.3: - resolution: {integrity: sha512-jtKLnfoOzm28PazuQ4dVBcE9Jeo6ha1GAJvq3N0LlNOszmTfx+wSycBehn+FN0RnyeR77IBxN/qVYMw0Rlj0Xw==} + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} engines: {node: '>=10.13.0'} peerDependencies: acorn: ^8.14.0 @@ -2883,8 +3011,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -2895,8 +3023,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} anymatch@3.1.3: @@ -2961,6 +3089,10 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -2994,8 +3126,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.12.2: - resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + axios@1.13.5: + resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} @@ -3022,6 +3154,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + hasBin: true + better-opn@3.0.2: resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} engines: {node: '>=12.0.0'} @@ -3045,8 +3181,8 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} brace-expansion@1.1.12: @@ -3067,6 +3203,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -3114,6 +3255,9 @@ packages: caniuse-lite@1.0.30001727: resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + canvas-fit@1.5.0: resolution: {integrity: sha512-onIcjRpz69/Hx5bB5HGbYKUF2uC6QT6Gp+pfpGm3A7mPfcluSLV5v4Zu+oflDUwLdUw0rLIBhUbi0v8hM4FJQQ==} @@ -3273,8 +3417,8 @@ packages: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} - concurrently@9.2.0: - resolution: {integrity: sha512-IsB/fiXTupmagMW4MNp2lx2cdSN2FfZq78vF90LBB+zZHArbIQZjQtzXCiXnvTxCZSvXanTqFLWBjw2UkLx1SQ==} + concurrently@9.2.1: + resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} engines: {node: '>=18'} hasBin: true @@ -3363,8 +3507,8 @@ packages: css-line-break@2.1.0: resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} - css-loader@7.1.2: - resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} + css-loader@7.1.3: + resolution: {integrity: sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -3555,6 +3699,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -3636,10 +3789,6 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -3663,8 +3812,8 @@ packages: engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead - dompurify@3.2.6: - resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==} + dompurify@3.3.1: + resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -3705,8 +3854,8 @@ packages: earcut@2.2.4: resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} - earcut@3.0.1: - resolution: {integrity: sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==} + earcut@3.0.2: + resolution: {integrity: sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -3717,6 +3866,9 @@ packages: electron-to-chromium@1.5.182: resolution: {integrity: sha512-Lv65Btwv9W4J9pyODI6EWpdnhfvrve/us5h1WspW8B2Fb0366REPtY3hX7ounk1CkV/TBjWCEvCBBbYbmV0qCA==} + electron-to-chromium@1.5.286: + resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} + element-size@1.1.1: resolution: {integrity: sha512-eaN+GMOq/Q+BIWy0ybsgpcYImjGIdNLyjLFJU4XsLHXYQao5jCNb36GyN6C2qwmDDYSfIBmKpPpr4VnBdLCsPQ==} @@ -3740,8 +3892,8 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.18.2: - resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} engines: {node: '>=10.13.0'} entities@6.0.1: @@ -3871,8 +4023,14 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import@2.31.0: - resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + eslint-plugin-es@3.0.1: + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3881,13 +4039,19 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-prettier@5.2.1: - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + eslint-plugin-node@11.1.0: + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + + eslint-plugin-prettier@5.5.5: + resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' eslint: '>=8.0.0' - eslint-config-prettier: '*' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' prettier: '>=3.0.0' peerDependenciesMeta: '@types/eslint': @@ -3901,8 +4065,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react@7.37.3: - resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -3924,6 +4088,14 @@ packages: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3971,6 +4143,9 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -4009,8 +4184,8 @@ packages: peerDependencies: express: '>= 4.11' - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + express@4.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} ext@1.7.0: @@ -4075,6 +4250,15 @@ packages: picomatch: optional: true + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -4126,6 +4310,15 @@ packages: flatten-vertex-data@1.0.2: resolution: {integrity: sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -4153,6 +4346,10 @@ packages: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -4234,6 +4431,9 @@ packages: gl-matrix@3.4.3: resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + gl-matrix@3.4.4: + resolution: {integrity: sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==} + gl-text@1.4.0: resolution: {integrity: sha512-o47+XBqLCj1efmuNyCHt7/UEJmB9l66ql7pnobD6p+sgmBUdzfMZXIF0zD2+KRfpd99DJN+QXdvTFAGCKCVSmQ==} @@ -4251,14 +4451,18 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true + glob@13.0.1: + resolution: {integrity: sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==} + engines: {node: 20 || >=22} + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-prefix@4.0.0: resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==} @@ -4359,6 +4563,12 @@ packages: cosmiconfig-toml-loader: optional: true + graphql-depth-limit@1.1.0: + resolution: {integrity: sha512-+3B2BaG8qQ8E18kzk9yiSdAa75i/hnnOwgSeAxVJctGQPvmeiLtqKOYF6HETCyRjiF7Xfsyal0HbLlxCQkgkrw==} + engines: {node: '>=6.0.0'} + peerDependencies: + graphql: '*' + graphql-request@6.1.0: resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} peerDependencies: @@ -4461,6 +4671,9 @@ packages: hast-util-to-html@8.0.4: resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + hast-util-to-parse5@7.1.0: resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} @@ -4470,6 +4683,9 @@ packages: hast-util-whitespace@2.0.1: resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hastscript@7.2.0: resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} @@ -4483,6 +4699,9 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + html-void-elements@2.0.1: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} @@ -4497,6 +4716,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -4561,8 +4784,8 @@ packages: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} - immutable@5.1.3: - resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + immutable@5.1.4: + resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -4591,8 +4814,8 @@ packages: resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} inquirer@8.2.6: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} @@ -4854,9 +5077,9 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} + isexe@3.1.2: + resolution: {integrity: sha512-mIcis6w+JiQf3P7t7mg/35GKB4T1FQsBOtMIvuKw4YErj5RjtbhcTd5/I30fmkmGMwvI0WlzSNN+27K0QCMkAw==} + engines: {node: '>=20'} isomorphic-ws@5.0.0: resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} @@ -4867,9 +5090,8 @@ packages: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} @@ -4912,8 +5134,8 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsdoc-type-pratt-parser@4.1.0: @@ -4968,13 +5190,13 @@ packages: engines: {node: '>=6'} hasBin: true - jspdf-autotable@5.0.2: - resolution: {integrity: sha512-YNKeB7qmx3pxOLcNeoqAv3qTS7KuvVwkFe5AduCawpop3NOkBUtqDToxNc225MlNecxT4kP2Zy3z/y/yvGdXUQ==} + jspdf-autotable@5.0.7: + resolution: {integrity: sha512-2wr7H6liNDBYNwt25hMQwXkEWFOEopgKIvR1Eukuw6Zmprm/ZcnmLTQEjW7Xx3FCbD3v7pflLcnMAv/h1jFDQw==} peerDependencies: - jspdf: ^2 || ^3 + jspdf: ^2 || ^3 || ^4 - jspdf@3.0.2: - resolution: {integrity: sha512-G0fQDJ5fAm6UW78HG6lNXyq09l0PrA1rpNY5i+ly17Zb1fMMFSmS+3lw4cnrAPGyouv2Y0ylujbY2Ieq3DSlKA==} + jspdf@4.1.0: + resolution: {integrity: sha512-xd1d/XRkwqnsq6FP3zH1Q+Ejqn2ULIJeDZ+FTKpaabVpZREjsJKRJwuokTNgdqOU+fl55KgbvgZ1pRTSWCP2kQ==} jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} @@ -4993,10 +5215,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -5016,8 +5234,8 @@ packages: enquirer: optional: true - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} loader-utils@3.3.1: @@ -5035,8 +5253,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -5047,14 +5265,17 @@ packages: lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + lodash.lowercase@4.3.0: + resolution: {integrity: sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -5090,6 +5311,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.2.5: + resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -5140,57 +5365,48 @@ packages: math.gl@3.6.3: resolution: {integrity: sha512-Yq9CyECvSDox9+5ETi2+x1bGTY5WvGUGL3rJfC4KPoCZAM51MGfrCm6rIn4yOJUVfMPs2a5RwMD+yGS/n1g3gg==} - mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} - - mdast-util-directive@3.1.0: - resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} - - mdast-util-find-and-replace@2.2.2: - resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} - - mdast-util-from-markdown@1.3.1: - resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} mdast-util-from-markdown@2.0.2: resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - mdast-util-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - mdast-util-gfm-footnote@1.0.2: - resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - mdast-util-gfm-strikethrough@1.0.3: - resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - mdast-util-gfm-table@1.0.7: - resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - mdast-util-gfm-task-list-item@1.0.2: - resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - mdast-util-gfm@2.0.2: - resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@12.3.0: - resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} - - mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} @@ -5227,153 +5443,87 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - micromark-core-commonmark@1.1.0: - resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - micromark-extension-directive@3.0.2: - resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - micromark-extension-gfm-autolink-literal@1.0.5: - resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - micromark-extension-gfm-footnote@1.1.2: - resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - micromark-extension-gfm-strikethrough@1.0.7: - resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - micromark-extension-gfm-table@1.0.7: - resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - micromark-extension-gfm-tagfilter@1.0.2: - resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - micromark-extension-gfm-task-list-item@1.0.5: - resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} - - micromark-extension-gfm@2.0.3: - resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} - - micromark-factory-destination@1.1.0: - resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} micromark-factory-destination@2.0.1: resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - micromark-factory-label@1.1.0: - resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - micromark-factory-label@2.0.1: resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - micromark-factory-space@2.0.1: resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - micromark-factory-title@1.1.0: - resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - micromark-factory-title@2.0.1: resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - micromark-factory-whitespace@1.1.0: - resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - micromark-factory-whitespace@2.0.1: resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - micromark-util-chunked@1.1.0: - resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - micromark-util-chunked@2.0.1: resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - micromark-util-classify-character@1.1.0: - resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - micromark-util-classify-character@2.0.1: resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - micromark-util-combine-extensions@1.1.0: - resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - micromark-util-combine-extensions@2.0.1: resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - micromark-util-decode-numeric-character-reference@1.1.0: - resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - micromark-util-decode-numeric-character-reference@2.0.2: resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - micromark-util-decode-string@1.1.0: - resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - micromark-util-decode-string@2.0.1: resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - micromark-util-encode@1.1.0: - resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - micromark-util-encode@2.0.1: resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - micromark-util-html-tag-name@1.2.0: - resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - micromark-util-html-tag-name@2.0.1: resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - micromark-util-normalize-identifier@1.1.0: - resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - micromark-util-normalize-identifier@2.0.1: resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - micromark-util-resolve-all@1.1.0: - resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - micromark-util-resolve-all@2.0.1: resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - micromark-util-sanitize-uri@1.2.0: - resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - micromark-util-sanitize-uri@2.0.1: resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - micromark-util-subtokenize@1.1.0: - resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - micromark-util-subtokenize@2.1.0: resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - micromark-util-symbol@2.0.1: resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - micromark-util-types@2.0.2: resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - micromark@3.2.0: - resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - micromark@4.0.2: resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} @@ -5402,6 +5552,10 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.1.2: + resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -5438,10 +5592,6 @@ packages: mouse-wheel@1.2.0: resolution: {integrity: sha512-+OfYBiUOCTWcTECES49neZwL5AoGkXE+lFjIvzwNCnYRlso+EnfvovcBxGoyQ0yQt806eSPjS675K0EwWknXmw==} - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -5520,6 +5670,9 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + nodemon@3.1.10: resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==} engines: {node: '>=10'} @@ -5642,6 +5795,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} @@ -5721,6 +5877,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} + engines: {node: 20 || >=22} + path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -5756,6 +5916,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + plotly.js-gl2d-dist-min@2.35.2: resolution: {integrity: sha512-unHF+uJJoozFHgIX0PkHRyrnF/gRqVnHmbDnvwTRxcalV+U2pGY9UhEMebo/6j09Tb2Q83UhXb8DWVHvBZa+0Q==} @@ -5806,8 +5970,8 @@ packages: peerDependencies: postcss: ^8.0.0 - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -5820,15 +5984,15 @@ packages: potpack@1.0.2: resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} - potpack@2.0.0: - resolution: {integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==} + potpack@2.1.0: + resolution: {integrity: sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} prettier@3.3.3: @@ -5864,6 +6028,9 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + protocol-buffers-schema@3.6.0: resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} @@ -5884,8 +6051,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} query-string@9.1.1: @@ -5914,8 +6081,8 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} react-big-calendar@1.5.2: @@ -5976,11 +6143,11 @@ packages: react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - react-markdown@8.0.5: - resolution: {integrity: sha512-jGJolWWmOWAvzf+xMdB9zwStViODyyFQhNB/bwCerbBKmrTmgmA599CGiOlP58OId1IMoIRsA8UdI1Lod4zb5A==} + react-markdown@10.1.0: + resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} peerDependencies: - '@types/react': '>=16' - react: '>=16' + '@types/react': '>=18' + react: '>=18' react-overlays@5.2.1: resolution: {integrity: sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==} @@ -6015,16 +6182,16 @@ packages: redux: optional: true - react-router-dom@6.6.2: - resolution: {integrity: sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA==} - engines: {node: '>=14'} + react-router-dom@6.30.3: + resolution: {integrity: sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==} + engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - react-router@6.6.2: - resolution: {integrity: sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ==} - engines: {node: '>=14'} + react-router@6.30.3: + resolution: {integrity: sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==} + engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' @@ -6108,6 +6275,10 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + regl-error2d@2.0.12: resolution: {integrity: sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA==} @@ -6149,17 +6320,17 @@ packages: relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} - remark-directive@3.0.0: - resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - remark-gfm@3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-parse@10.0.2: - resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - remark-rehype@10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} remedial@1.0.8: resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} @@ -6217,6 +6388,11 @@ packages: engines: {node: '>= 0.4'} hasBin: true + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true @@ -6271,10 +6447,6 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -6296,13 +6468,14 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.89.2: - resolution: {integrity: sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==} + sass@1.97.3: + resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} engines: {node: '>=14.0.0'} hasBin: true - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -6311,8 +6484,8 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} scuid@1.1.0: @@ -6330,6 +6503,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -6485,6 +6663,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} @@ -6492,8 +6674,8 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - storybook@8.6.6: - resolution: {integrity: sha512-naFEI4a2pKgJUgXDwAUtSKlYmxtwpFlyzbHPvboIgA6EUQ11yGYaQtTmZ8y/Y0IT23umu/+lOYvqgXnEHf/Pzw==} + storybook@8.6.15: + resolution: {integrity: sha512-Ob7DMlwWx8s7dMvcQ3xPc02TvUeralb+xX3oaPRk9wY9Hc6M1IBC/7cEoITkSmRS2v38DHubC+mtEKNc1u2gQg==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -6560,8 +6742,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -6588,8 +6770,11 @@ packages: peerDependencies: webpack: ^5.27.0 - style-to-object@0.4.4: - resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} @@ -6646,16 +6831,16 @@ packages: resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} engines: {node: '>=18'} - synckit@0.9.3: - resolution: {integrity: sha512-JJoOEKTfL1urb1mDoEblhD9NhEbWmq9jHEMEnxoC4ujUaZ4itA8vKgwkFAyNClgxplLi9tsUKX+EduK0p/l7sg==} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + terser-webpack-plugin@5.3.16: + resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -6670,8 +6855,8 @@ packages: uglify-js: optional: true - terser@5.43.1: - resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true @@ -6710,6 +6895,10 @@ packages: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + tinypool@1.1.1: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6791,6 +6980,12 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -6918,6 +7113,9 @@ packages: undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -6927,9 +7125,6 @@ packages: unist-util-filter@4.0.1: resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} - unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} @@ -6939,6 +7134,9 @@ packages: unist-util-position@4.0.4: resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-stringify-position@3.0.3: resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} @@ -6982,6 +7180,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + update-diff@1.1.0: resolution: {integrity: sha512-rCiBPiHxZwT4+sBhEbChzpO5hYHjm91kScWgdHf4Qeafs6Ba7MBl+d9GlGv72bcTZQO0sLmtQS1pHSWoCLtN/A==} @@ -7028,9 +7232,8 @@ packages: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true value-or-promise@1.0.12: @@ -7069,8 +7272,8 @@ packages: vite: optional: true - vite@6.3.6: - resolution: {integrity: sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==} + vite@6.4.1: + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -7147,8 +7350,8 @@ packages: warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} wcwidth@1.0.1: @@ -7194,6 +7397,7 @@ packages: whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} @@ -7248,8 +7452,8 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - world-calendars@1.0.3: - resolution: {integrity: sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ==} + world-calendars@1.0.4: + resolution: {integrity: sha512-VGRnLJS+xJmGDPodgJRnGIDwGu0s+Cr9V2HB3EzlDZ5n0qb8h5SJtGUEkjrphZYAglEiXZ6kiXdmk0H/h/uu/w==} wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -7453,7 +7657,7 @@ snapshots: '@apollo/utils.logger': 2.0.1 graphql: 16.10.0 - '@apollo/server@4.11.3(graphql@16.10.0)': + '@apollo/server@4.13.0(graphql@16.10.0)': dependencies: '@apollo/cache-control-types': 1.0.3(graphql@16.10.0) '@apollo/server-gateway-interface': 1.1.1(graphql@16.10.0) @@ -7466,19 +7670,20 @@ snapshots: '@apollo/utils.usagereporting': 2.1.0(graphql@16.10.0) '@apollo/utils.withrequired': 2.0.1 '@graphql-tools/schema': 9.0.19(graphql@16.10.0) - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 - '@types/node-fetch': 2.6.12 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.8 + '@types/node-fetch': 2.6.13 async-retry: 1.3.3 + content-type: 1.0.5 cors: 2.8.5 - express: 4.21.2 + express: 4.22.1 graphql: 16.10.0 loglevel: 1.9.2 lru-cache: 7.18.3 negotiator: 0.6.4 node-abort-controller: 3.1.1 node-fetch: 2.7.0 - uuid: 9.0.0 + uuid: 9.0.1 whatwg-mimetype: 3.0.0 transitivePeerDependencies: - encoding @@ -7900,6 +8105,8 @@ snapshots: '@babel/runtime@7.27.6': {} + '@babel/runtime@7.28.6': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -8147,8 +8354,15 @@ snapshots: eslint: 9.34.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.9.1(eslint@9.34.0(jiti@2.4.2))': + dependencies: + eslint: 9.34.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} + '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 @@ -8171,16 +8385,16 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.17.0': {} - '@eslint/js@9.34.0': {} + '@eslint/js@9.39.2': {} + '@eslint/object-schema@2.1.6': {} '@eslint/plugin-kit@0.3.5': @@ -8367,7 +8581,7 @@ snapshots: common-tags: 1.8.2 graphql: 16.10.0 import-from: 4.0.0 - lodash: 4.17.21 + lodash: 4.17.23 tslib: 2.4.1 '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.10.0)': @@ -8377,7 +8591,7 @@ snapshots: common-tags: 1.8.2 graphql: 16.10.0 import-from: 4.0.0 - lodash: 4.17.21 + lodash: 4.17.23 tslib: 2.6.3 '@graphql-codegen/schema-ast@4.1.0(graphql@16.10.0)': @@ -8504,22 +8718,45 @@ snapshots: transitivePeerDependencies: - encoding - '@graphql-hive/signal@1.0.0': {} - - '@graphql-tools/apollo-engine-loader@8.0.20(graphql@16.10.0)': - dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) - '@whatwg-node/fetch': 0.10.8 - graphql: 16.10.0 - sync-fetch: 0.6.0-2 - tslib: 2.8.1 - - '@graphql-tools/batch-execute@9.0.17(graphql@16.10.0)': + '@graphql-eslint/eslint-plugin@4.4.0(@types/node@22.10.5)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2)': dependencies: + '@graphql-tools/code-file-loader': 8.1.20(graphql@16.10.0) + '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - '@whatwg-node/promise-helpers': 1.3.2 - dataloader: 2.2.3 - graphql: 16.10.0 + debug: 4.4.1(supports-color@5.5.0) + eslint: 9.34.0(jiti@2.4.2) + fast-glob: 3.3.3 + graphql: 16.10.0 + graphql-config: 5.1.5(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) + graphql-depth-limit: 1.1.0(graphql@16.10.0) + lodash.lowercase: 4.3.0 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - crossws + - supports-color + - typescript + - uWebSockets.js + - utf-8-validate + + '@graphql-hive/signal@1.0.0': {} + + '@graphql-tools/apollo-engine-loader@8.0.20(graphql@16.10.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@whatwg-node/fetch': 0.10.8 + graphql: 16.10.0 + sync-fetch: 0.6.0-2 + tslib: 2.8.1 + + '@graphql-tools/batch-execute@9.0.17(graphql@16.10.0)': + dependencies: + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@whatwg-node/promise-helpers': 1.3.2 + dataloader: 2.2.3 + graphql: 16.10.0 tslib: 2.8.1 '@graphql-tools/code-file-loader@8.1.20(graphql@16.10.0)': @@ -8732,8 +8969,8 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 jose: 5.10.0 - js-yaml: 4.1.0 - lodash: 4.17.21 + js-yaml: 4.1.1 + lodash: 4.17.23 scuid: 1.1.0 tslib: 2.8.1 yaml-ast-parser: 0.0.43 @@ -8854,11 +9091,38 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@hystax/eslint-config-ui@1.0.0(@types/eslint@9.6.1)(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@eslint/js': 9.39.2 + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.34.0(jiti@2.4.2) + eslint-config-prettier: 9.1.0(eslint@9.34.0(jiti@2.4.2)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)) + eslint-plugin-prettier: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3) + eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.1.0(eslint@9.34.0(jiti@2.4.2)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)) + globals: 15.13.0 + prettier: 3.3.3 + transitivePeerDependencies: + - '@types/eslint' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + - typescript + + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.1': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -8880,12 +9144,12 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.7.2)(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.7.2)(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: - glob: 10.3.10 + glob: 10.5.0 magic-string: 0.27.0 react-docgen-typescript: 2.4.0(typescript@5.7.2) - vite: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) optionalDependencies: typescript: 5.7.2 @@ -8894,20 +9158,32 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.4 '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/source-map@0.3.10': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + '@kamilkisiela/fast-url-parser@1.1.4': {} '@loaders.gl/core@3.4.15': @@ -8996,7 +9272,7 @@ snapshots: '@mapbox/tiny-sdf@1.2.5': {} - '@mapbox/tiny-sdf@2.0.6': {} + '@mapbox/tiny-sdf@2.0.7': {} '@mapbox/unitbezier@0.0.0': {} @@ -9135,7 +9411,7 @@ snapshots: '@nivo/core': 0.99.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@nivo/theming': 0.99.0(react@18.2.0) '@react-spring/web': 9.7.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - lodash: 4.17.21 + lodash: 4.17.23 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -9186,7 +9462,7 @@ snapshots: '@types/d3-shape': 3.1.7 d3-scale: 4.0.2 d3-shape: 3.2.0 - lodash: 4.17.21 + lodash: 4.17.23 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -9203,7 +9479,7 @@ snapshots: d3-color: 3.1.0 d3-scale: 4.0.2 d3-scale-chromatic: 3.1.0 - lodash: 4.17.21 + lodash: 4.17.23 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -9221,7 +9497,7 @@ snapshots: d3-scale-chromatic: 3.1.0 d3-shape: 3.2.0 d3-time-format: 3.0.0 - lodash: 4.17.21 + lodash: 4.17.23 react: 18.2.0 react-virtualized-auto-sizer: 1.0.26(react-dom@18.2.0(react@18.2.0))(react@18.2.0) use-debounce: 10.0.6(react@18.2.0) @@ -9282,7 +9558,7 @@ snapshots: d3-scale: 4.0.2 d3-time: 1.1.0 d3-time-format: 3.0.0 - lodash: 4.17.21 + lodash: 4.17.23 '@nivo/text@0.99.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -9295,7 +9571,7 @@ snapshots: '@nivo/theming@0.99.0(react@18.2.0)': dependencies: - lodash: 4.17.21 + lodash: 4.17.23 react: 18.2.0 '@nivo/tooltip@0.99.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -9395,7 +9671,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.1.2': {} + '@pkgr/core@0.2.9': {} '@plotly/d3-sankey-circular@0.33.1': dependencies: @@ -9426,7 +9702,7 @@ snapshots: csscolorparser: 1.0.3 earcut: 2.2.4 geojson-vt: 3.2.1 - gl-matrix: 3.4.3 + gl-matrix: 3.4.4 grid-index: 1.1.0 murmurhash-js: 1.0.0 pbf: 3.3.0 @@ -9524,7 +9800,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@remix-run/router@1.2.1': {} + '@remix-run/router@1.23.2': {} '@repeaterjs/repeater@3.0.6': {} @@ -9607,52 +9883,52 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@storybook/addon-actions@8.6.6(storybook@8.6.6(prettier@3.3.3))': + '@storybook/addon-actions@8.6.15(storybook@8.6.15(prettier@3.3.3))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) uuid: 9.0.0 - '@storybook/addon-backgrounds@8.6.6(storybook@8.6.6(prettier@3.3.3))': + '@storybook/addon-backgrounds@8.6.15(storybook@8.6.15(prettier@3.3.3))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.6.6(storybook@8.6.6(prettier@3.3.3))': + '@storybook/addon-controls@8.6.15(storybook@8.6.15(prettier@3.3.3))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) ts-dedent: 2.2.0 - '@storybook/addon-links@8.6.6(react@18.2.0)(storybook@8.6.6(prettier@3.3.3))': + '@storybook/addon-links@8.6.15(react@18.2.0)(storybook@8.6.15(prettier@3.3.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) ts-dedent: 2.2.0 optionalDependencies: react: 18.2.0 - '@storybook/builder-vite@8.6.6(storybook@8.6.6(prettier@3.3.3))(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': + '@storybook/builder-vite@8.6.15(storybook@8.6.15(prettier@3.3.3))(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: - '@storybook/csf-plugin': 8.6.6(storybook@8.6.6(prettier@3.3.3)) + '@storybook/csf-plugin': 8.6.15(storybook@8.6.15(prettier@3.3.3)) browser-assert: 1.2.1 - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) ts-dedent: 2.2.0 - vite: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) - '@storybook/components@8.6.6(storybook@8.6.6(prettier@3.3.3))': + '@storybook/components@8.6.15(storybook@8.6.15(prettier@3.3.3))': dependencies: - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) - '@storybook/core@8.6.6(prettier@3.3.3)(storybook@8.6.6(prettier@3.3.3))': + '@storybook/core@8.6.15(prettier@3.3.3)(storybook@8.6.15(prettier@3.3.3))': dependencies: - '@storybook/theming': 8.6.6(storybook@8.6.6(prettier@3.3.3)) + '@storybook/theming': 8.6.15(storybook@8.6.15(prettier@3.3.3)) better-opn: 3.0.2 browser-assert: 1.2.1 esbuild: 0.25.6 @@ -9671,64 +9947,72 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@8.6.6(storybook@8.6.6(prettier@3.3.3))': + '@storybook/csf-plugin@8.6.15(storybook@8.6.15(prettier@3.3.3))': dependencies: - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) unplugin: 1.16.1 '@storybook/global@5.0.0': {} - '@storybook/manager-api@8.6.6(storybook@8.6.6(prettier@3.3.3))': + '@storybook/manager-api@8.6.14(storybook@8.6.15(prettier@3.3.3))': + dependencies: + storybook: 8.6.15(prettier@3.3.3) + + '@storybook/manager-api@8.6.15(storybook@8.6.15(prettier@3.3.3))': dependencies: - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) - '@storybook/preview-api@8.6.6(storybook@8.6.6(prettier@3.3.3))': + '@storybook/preview-api@8.6.15(storybook@8.6.15(prettier@3.3.3))': dependencies: - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) - '@storybook/react-dom-shim@8.6.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.6(prettier@3.3.3))': + '@storybook/react-dom-shim@8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.15(prettier@3.3.3))': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) - '@storybook/react-vite@8.6.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.44.2)(storybook@8.6.6(prettier@3.3.3))(typescript@5.7.2)(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': + '@storybook/react-vite@8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.44.2)(storybook@8.6.15(prettier@3.3.3))(typescript@5.7.2)(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.7.2)(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.7.2)(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) '@rollup/pluginutils': 5.2.0(rollup@4.44.2) - '@storybook/builder-vite': 8.6.6(storybook@8.6.6(prettier@3.3.3))(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) - '@storybook/react': 8.6.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.6(prettier@3.3.3))(typescript@5.7.2) + '@storybook/builder-vite': 8.6.15(storybook@8.6.15(prettier@3.3.3))(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) + '@storybook/react': 8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.15(prettier@3.3.3))(typescript@5.7.2) find-up: 5.0.0 magic-string: 0.30.17 react: 18.2.0 react-docgen: 7.1.1 react-dom: 18.2.0(react@18.2.0) - resolve: 1.22.10 - storybook: 8.6.6(prettier@3.3.3) + resolve: 1.22.11 + storybook: 8.6.15(prettier@3.3.3) tsconfig-paths: 4.2.0 - vite: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react@8.6.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.6(prettier@3.3.3))(typescript@5.7.2)': + '@storybook/react@8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.15(prettier@3.3.3))(typescript@5.7.2)': dependencies: - '@storybook/components': 8.6.6(storybook@8.6.6(prettier@3.3.3)) + '@storybook/components': 8.6.15(storybook@8.6.15(prettier@3.3.3)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.6(storybook@8.6.6(prettier@3.3.3)) - '@storybook/preview-api': 8.6.6(storybook@8.6.6(prettier@3.3.3)) - '@storybook/react-dom-shim': 8.6.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.6(prettier@3.3.3)) - '@storybook/theming': 8.6.6(storybook@8.6.6(prettier@3.3.3)) + '@storybook/manager-api': 8.6.15(storybook@8.6.15(prettier@3.3.3)) + '@storybook/preview-api': 8.6.15(storybook@8.6.15(prettier@3.3.3)) + '@storybook/react-dom-shim': 8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.15(prettier@3.3.3)) + '@storybook/theming': 8.6.15(storybook@8.6.15(prettier@3.3.3)) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) optionalDependencies: typescript: 5.7.2 - '@storybook/theming@8.6.6(storybook@8.6.6(prettier@3.3.3))': + '@storybook/theming@8.6.14(storybook@8.6.15(prettier@3.3.3))': + dependencies: + storybook: 8.6.15(prettier@3.3.3) + + '@storybook/theming@8.6.15(storybook@8.6.15(prettier@3.3.3))': dependencies: - storybook: 8.6.6(prettier@3.3.3) + storybook: 8.6.15(prettier@3.3.3) '@swc/core-darwin-arm64@1.12.11': optional: true @@ -9792,36 +10076,37 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@turf/area@7.2.0': + '@turf/area@7.3.3': dependencies: - '@turf/helpers': 7.2.0 - '@turf/meta': 7.2.0 + '@turf/helpers': 7.3.3 + '@turf/meta': 7.3.3 '@types/geojson': 7946.0.16 tslib: 2.8.1 - '@turf/bbox@7.2.0': + '@turf/bbox@7.3.3': dependencies: - '@turf/helpers': 7.2.0 - '@turf/meta': 7.2.0 + '@turf/helpers': 7.3.3 + '@turf/meta': 7.3.3 '@types/geojson': 7946.0.16 tslib: 2.8.1 - '@turf/centroid@7.2.0': + '@turf/centroid@7.3.3': dependencies: - '@turf/helpers': 7.2.0 - '@turf/meta': 7.2.0 + '@turf/helpers': 7.3.3 + '@turf/meta': 7.3.3 '@types/geojson': 7946.0.16 tslib: 2.8.1 - '@turf/helpers@7.2.0': + '@turf/helpers@7.3.3': dependencies: '@types/geojson': 7946.0.16 tslib: 2.8.1 - '@turf/meta@7.2.0': + '@turf/meta@7.3.3': dependencies: - '@turf/helpers': 7.2.0 + '@turf/helpers': 7.3.3 '@types/geojson': 7946.0.16 + tslib: 2.8.1 '@types/babel__core@7.20.5': dependencies: @@ -9907,21 +10192,25 @@ snapshots: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.6': + '@types/express-serve-static-core@4.19.8': dependencies: - '@types/node': 22.10.5 - '@types/qs': 6.9.18 + '@types/node': 25.2.3 + '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 + '@types/send': 1.2.1 - '@types/express@4.17.23': + '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.18 - '@types/serve-static': 1.15.8 + '@types/express-serve-static-core': 4.19.8 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.10 '@types/file-saver@2.0.7': {} @@ -9937,6 +10226,10 @@ snapshots: dependencies: '@types/unist': 2.0.11 + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/hoist-non-react-statics@3.3.6': dependencies: '@types/react': 18.2.45 @@ -9983,10 +10276,6 @@ snapshots: '@types/mapbox__point-geometry': 0.1.4 '@types/pbf': 3.0.5 - '@types/mdast@3.0.15': - dependencies: - '@types/unist': 2.0.11 - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -9995,15 +10284,19 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node-fetch@2.6.12': + '@types/node-fetch@2.6.13': dependencies: - '@types/node': 22.10.5 - form-data: 4.0.4 + '@types/node': 25.2.3 + form-data: 4.0.5 '@types/node@22.10.5': dependencies: undici-types: 6.20.0 + '@types/node@25.2.3': + dependencies: + undici-types: 7.16.0 + '@types/offscreencanvas@2019.7.3': {} '@types/pako@2.0.4': {} @@ -10018,6 +10311,8 @@ snapshots: '@types/prop-types@15.7.15': {} + '@types/qs@6.14.0': {} + '@types/qs@6.9.18': {} '@types/raf@3.4.3': @@ -10047,20 +10342,24 @@ snapshots: '@types/sass@1.45.0': dependencies: - sass: 1.89.2 + sass: 1.97.3 '@types/scheduler@0.26.0': {} - '@types/send@0.17.5': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.10.5 + '@types/node': 25.2.3 + + '@types/send@1.2.1': + dependencies: + '@types/node': 25.2.3 - '@types/serve-static@1.15.8': + '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.10.5 - '@types/send': 0.17.5 + '@types/node': 25.2.3 + '@types/send': 0.17.6 '@types/stack-utils@2.0.3': {} @@ -10114,6 +10413,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.54.0 + eslint: 9.34.0(jiti@2.4.2) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/scope-manager': 8.41.0 @@ -10126,6 +10441,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 + eslint: 9.34.0(jiti@2.4.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.41.0(typescript@5.7.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.7.2) @@ -10135,15 +10462,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.54.0(typescript@5.7.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.7.2) + '@typescript-eslint/types': 8.54.0 + debug: 4.4.3 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.41.0': dependencies: '@typescript-eslint/types': 8.41.0 '@typescript-eslint/visitor-keys': 8.41.0 + '@typescript-eslint/scope-manager@8.54.0': + dependencies: + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.7.2)': dependencies: typescript: 5.7.2 + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.7.2)': + dependencies: + typescript: 5.7.2 + '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/types': 8.41.0 @@ -10156,8 +10501,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + debug: 4.4.3 + eslint: 9.34.0(jiti@2.4.2) + ts-api-utils: 2.4.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@8.41.0': {} + '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/typescript-estree@8.41.0(typescript@5.7.2)': dependencies: '@typescript-eslint/project-service': 8.41.0(typescript@5.7.2) @@ -10168,12 +10527,27 @@ snapshots: fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.4 ts-api-utils: 2.1.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.7.2)': + dependencies: + '@typescript-eslint/project-service': 8.54.0(typescript@5.7.2) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.7.2) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 + minimatch: 9.0.5 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.4.2)) @@ -10185,24 +10559,42 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.7.2) + eslint: 9.34.0(jiti@2.4.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.41.0': dependencies: '@typescript-eslint/types': 8.41.0 eslint-visitor-keys: 4.2.1 - '@uiw/react-textarea-code-editor@2.1.1(@babel/runtime@7.27.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@typescript-eslint/visitor-keys@8.54.0': dependencies: - '@babel/runtime': 7.27.6 + '@typescript-eslint/types': 8.54.0 + eslint-visitor-keys: 4.2.1 + + '@uiw/react-textarea-code-editor@2.1.1(@babel/runtime@7.28.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.28.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype: 12.0.1 rehype-prism-plus: 1.5.0 - '@vitejs/plugin-react-swc@3.10.2(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-react-swc@3.10.2(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.11 '@swc/core': 1.12.11 - vite: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - '@swc/helpers' @@ -10214,13 +10606,13 @@ snapshots: chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -10386,7 +10778,7 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-phases@1.0.3(acorn@8.15.0): + acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -10453,7 +10845,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: @@ -10461,7 +10853,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} anymatch@3.1.3: dependencies: @@ -10553,6 +10945,8 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + arrify@1.0.1: {} + asap@2.0.6: {} assertion-error@2.0.1: {} @@ -10577,10 +10971,10 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.12.2: + axios@1.13.5: dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.4 + follow-redirects: 1.15.11 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -10634,6 +11028,8 @@ snapshots: base64-js@1.5.1: {} + baseline-browser-mapping@2.9.19: {} + better-opn@3.0.2: dependencies: open: 8.4.2 @@ -10657,18 +11053,18 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.3: + body-parser@1.20.4: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 + qs: 6.14.1 + raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: @@ -10696,6 +11092,14 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001769 + electron-to-chromium: 1.5.286 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -10743,13 +11147,15 @@ snapshots: caniuse-lite@1.0.30001727: {} + caniuse-lite@1.0.30001769: {} + canvas-fit@1.5.0: dependencies: element-size: 1.1.1 canvg@3.0.11: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.6 '@types/raf': 3.4.3 core-js: 3.27.2 raf: 3.4.1 @@ -10936,10 +11342,9 @@ snapshots: readable-stream: 2.3.8 typedarray: 0.0.6 - concurrently@9.2.0: + concurrently@9.2.1: dependencies: chalk: 4.1.2 - lodash: 4.17.21 rxjs: 7.8.2 shell-quote: 1.8.3 supports-color: 8.1.1 @@ -10990,7 +11395,7 @@ snapshots: cosmiconfig@8.3.6(typescript@5.7.2): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -11041,7 +11446,7 @@ snapshots: utrie: 1.0.2 optional: true - css-loader@7.1.2(webpack@5.100.0(esbuild@0.25.6)): + css-loader@7.1.3(webpack@5.100.0(esbuild@0.25.6)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -11050,7 +11455,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.4 optionalDependencies: webpack: 5.100.0(esbuild@0.25.6) @@ -11102,7 +11507,7 @@ snapshots: commander: 2.20.3 d3-array: 1.2.4 d3-geo: 1.12.1 - resolve: 1.22.10 + resolve: 1.22.11 d3-geo@1.12.1: dependencies: @@ -11222,6 +11627,10 @@ snapshots: optionalDependencies: supports-color: 5.5.0 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decamelize@1.2.0: {} decimal.js@10.6.0: {} @@ -11282,8 +11691,6 @@ snapshots: diff-sequences@29.6.3: {} - diff@5.2.0: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -11307,7 +11714,7 @@ snapshots: dependencies: webidl-conversions: 7.0.0 - dompurify@3.2.6: + dompurify@3.3.1: optionalDependencies: '@types/trusted-types': 2.0.7 optional: true @@ -11351,7 +11758,7 @@ snapshots: earcut@2.2.4: {} - earcut@3.0.1: {} + earcut@3.0.2: {} eastasianwidth@0.2.0: {} @@ -11359,6 +11766,8 @@ snapshots: electron-to-chromium@1.5.182: {} + electron-to-chromium@1.5.286: {} + element-size@1.1.1: {} elementary-circuits-directed-graph@1.3.1: @@ -11377,10 +11786,10 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.18.2: + enhanced-resolve@5.19.0: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.3.0 entities@6.0.1: {} @@ -11528,7 +11937,7 @@ snapshots: '@types/less': 3.0.8 '@types/sass': 1.45.0 '@types/stylus': 0.48.43 - glob: 10.3.10 + glob: 10.5.0 postcss: 8.5.6 postcss-modules: 6.0.1(postcss@8.5.6) @@ -11589,21 +11998,27 @@ snapshots: dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.4.2)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) eslint: 9.34.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-es@3.0.1(eslint@9.34.0(jiti@2.4.2)): + dependencies: + eslint: 9.34.0(jiti@2.4.2) + eslint-utils: 2.1.0 + regexpp: 3.2.0 + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -11614,7 +12029,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.34.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.4.2)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11626,18 +12041,28 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3): + eslint-plugin-node@11.1.0(eslint@9.34.0(jiti@2.4.2)): + dependencies: + eslint: 9.34.0(jiti@2.4.2) + eslint-plugin-es: 3.0.1(eslint@9.34.0(jiti@2.4.2)) + eslint-utils: 2.1.0 + ignore: 5.3.2 + minimatch: 3.1.2 + resolve: 1.22.11 + semver: 6.3.1 + + eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3): dependencies: eslint: 9.34.0(jiti@2.4.2) prettier: 3.3.3 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.3 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 optionalDependencies: '@types/eslint': 9.6.1 eslint-config-prettier: 9.1.0(eslint@9.34.0(jiti@2.4.2)) @@ -11646,7 +12071,7 @@ snapshots: dependencies: eslint: 9.34.0(jiti@2.4.2) - eslint-plugin-react@7.37.3(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-react@7.37.5(eslint@9.34.0(jiti@2.4.2)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -11668,11 +12093,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)): dependencies: eslint: 9.34.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) eslint-scope@5.1.1: dependencies: @@ -11684,6 +12109,12 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-utils@2.1.0: + dependencies: + eslint-visitor-keys: 1.3.0 + + eslint-visitor-keys@1.3.0: {} + eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.1: {} @@ -11757,6 +12188,8 @@ snapshots: estraverse@5.3.0: {} + estree-util-is-identifier-name@3.0.0: {} + estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -11786,16 +12219,16 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - express-rate-limit@8.1.0(express@4.21.2): + express-rate-limit@8.1.0(express@4.22.1): dependencies: - express: 4.21.2 + express: 4.22.1 ip-address: 10.0.1 - express@4.21.2: + express@4.22.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.3 + body-parser: 1.20.4 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.7.1 @@ -11807,20 +12240,20 @@ snapshots: etag: 1.8.1 finalhandler: 1.3.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.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.12 proxy-addr: 2.0.7 - qs: 6.13.0 + qs: 6.14.1 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.0 serve-static: 1.16.2 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 @@ -11902,6 +12335,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -11960,6 +12397,8 @@ snapshots: dependencies: dtype: 2.0.0 + follow-redirects@1.15.11: {} + follow-redirects@1.15.9: {} font-atlas@2.1.0: @@ -11987,6 +12426,14 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 @@ -12068,6 +12515,8 @@ snapshots: gl-matrix@3.4.3: {} + gl-matrix@3.4.4: {} + gl-text@1.4.0: dependencies: bit-twiddle: 1.0.2 @@ -12108,14 +12557,21 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.3.10: + glob@10.5.0: dependencies: foreground-child: 3.3.1 - jackspeak: 2.3.6 + jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 + package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@13.0.1: + dependencies: + minimatch: 10.1.2 + minipass: 7.1.2 + path-scurry: 2.0.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -12215,7 +12671,7 @@ snapshots: graceful-fs: 4.2.11 inherits: 2.0.4 map-limit: 0.0.1 - resolve: 1.22.10 + resolve: 1.22.11 glslify@7.1.1: dependencies: @@ -12229,7 +12685,7 @@ snapshots: glslify-bundle: 5.1.1 glslify-deps: 1.3.2 minimist: 1.2.8 - resolve: 1.22.10 + resolve: 1.22.11 stack-trace: 0.0.9 static-eval: 2.1.1 through2: 2.0.5 @@ -12273,6 +12729,11 @@ snapshots: - uWebSockets.js - utf-8-validate + graphql-depth-limit@1.1.0(graphql@16.10.0): + dependencies: + arrify: 1.0.1 + graphql: 16.10.0 + graphql-request@6.1.0(graphql@16.10.0): dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) @@ -12381,6 +12842,26 @@ snapshots: stringify-entities: 4.0.4 zwitch: 2.0.4 + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + hast-util-to-parse5@7.1.0: dependencies: '@types/hast': 2.3.10 @@ -12396,6 +12877,10 @@ snapshots: hast-util-whitespace@2.0.1: {} + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hastscript@7.2.0: dependencies: '@types/hast': 2.3.10 @@ -12417,6 +12902,8 @@ snapshots: dependencies: whatwg-encoding: 2.0.0 + html-url-attributes@3.0.1: {} + html-void-elements@2.0.1: {} html2canvas@1.4.1: @@ -12435,6 +12922,14 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 @@ -12450,7 +12945,7 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.23): + http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: '@types/http-proxy': 1.17.16 http-proxy: 1.18.1 @@ -12458,7 +12953,7 @@ snapshots: is-plain-obj: 3.0.0 micromatch: 4.0.8 optionalDependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.25 transitivePeerDependencies: - debug @@ -12508,7 +13003,7 @@ snapshots: immutable@3.7.6: {} - immutable@5.1.3: {} + immutable@5.1.4: {} import-fresh@3.3.1: dependencies: @@ -12530,7 +13025,7 @@ snapshots: ini@4.1.3: {} - inline-style-parser@0.1.1: {} + inline-style-parser@0.2.7: {} inquirer@8.2.6: dependencies: @@ -12540,7 +13035,7 @@ snapshots: cli-width: 3.0.0 external-editor: 3.1.0 figures: 3.2.0 - lodash: 4.17.21 + lodash: 4.17.23 mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 @@ -12777,7 +13272,7 @@ snapshots: isexe@2.0.0: {} - isexe@3.1.1: {} + isexe@3.1.2: {} isomorphic-ws@5.0.0(ws@8.18.3): dependencies: @@ -12792,7 +13287,7 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 - jackspeak@2.3.6: + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: @@ -12851,7 +13346,7 @@ snapshots: js-tokens@9.0.1: {} - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -12914,19 +13409,19 @@ snapshots: json5@2.2.3: {} - jspdf-autotable@5.0.2(jspdf@3.0.2): + jspdf-autotable@5.0.7(jspdf@4.1.0): dependencies: - jspdf: 3.0.2 + jspdf: 4.1.0 - jspdf@3.0.2: + jspdf@4.1.0: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.6 fast-png: 6.4.0 fflate: 0.8.2 optionalDependencies: canvg: 3.0.11 core-js: 3.27.2 - dompurify: 3.2.6 + dompurify: 3.3.1 html2canvas: 1.4.1 jsx-ast-utils@3.3.5: @@ -12946,8 +13441,6 @@ snapshots: kind-of@6.0.3: {} - kleur@4.1.5: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -12970,7 +13463,7 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@3.3.1: {} @@ -12986,7 +13479,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.21: {} + lodash-es@4.17.23: {} lodash.camelcase@4.3.0: {} @@ -12994,11 +13487,13 @@ snapshots: lodash.isplainobject@4.0.6: {} + lodash.lowercase@4.3.0: {} + lodash.merge@4.6.2: {} lodash.sortby@4.7.0: {} - lodash@4.17.21: {} + lodash@4.17.23: {} log-symbols@4.1.0: dependencies: @@ -13034,6 +13529,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.2.5: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -13044,11 +13541,11 @@ snapshots: magic-string@0.27.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 map-cache@0.2.2: {} @@ -13072,7 +13569,7 @@ snapshots: csscolorparser: 1.0.3 earcut: 2.2.4 geojson-vt: 3.2.1 - gl-matrix: 3.4.3 + gl-matrix: 3.4.4 grid-index: 1.1.0 murmurhash-js: 1.0.0 pbf: 3.3.0 @@ -13088,7 +13585,7 @@ snapshots: '@mapbox/geojson-rewind': 0.5.2 '@mapbox/jsonlint-lines-primitives': 2.0.2 '@mapbox/point-geometry': 0.1.0 - '@mapbox/tiny-sdf': 2.0.6 + '@mapbox/tiny-sdf': 2.0.7 '@mapbox/unitbezier': 0.0.1 '@mapbox/vector-tile': 1.3.1 '@mapbox/whoots-js': 3.1.0 @@ -13099,14 +13596,14 @@ snapshots: '@types/mapbox__vector-tile': 1.3.4 '@types/pbf': 3.0.5 '@types/supercluster': 7.1.3 - earcut: 3.0.1 + earcut: 3.0.2 geojson-vt: 4.0.2 - gl-matrix: 3.4.3 + gl-matrix: 3.4.4 global-prefix: 4.0.0 kdbush: 4.0.2 murmurhash-js: 1.0.0 pbf: 3.3.0 - potpack: 2.0.0 + potpack: 2.1.0 quickselect: 3.0.0 supercluster: 8.0.1 tinyqueue: 3.0.0 @@ -13122,49 +13619,12 @@ snapshots: dependencies: '@math.gl/core': 3.6.3 - mdast-util-definitions@5.1.2: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - unist-util-visit: 4.1.2 - - mdast-util-directive@3.1.0: + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-find-and-replace@2.2.2: - dependencies: - '@types/mdast': 3.0.15 escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - mdast-util-from-markdown@1.3.1: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - decode-named-character-reference: 1.2.0 - mdast-util-to-string: 3.2.0 - micromark: 3.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-decode-string: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 mdast-util-from-markdown@2.0.2: dependencies: @@ -13183,81 +13643,118 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm-autolink-literal@1.0.3: + mdast-util-gfm-autolink-literal@2.0.1: dependencies: - '@types/mdast': 3.0.15 + '@types/mdast': 4.0.4 ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.2.0 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 - mdast-util-gfm-footnote@1.0.2: + mdast-util-gfm-footnote@2.1.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.1.0 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color - mdast-util-gfm-strikethrough@1.0.3: + mdast-util-gfm-strikethrough@2.0.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color - mdast-util-gfm-table@1.0.7: + mdast-util-gfm-table@2.0.0: dependencies: - '@types/mdast': 3.0.15 + '@types/mdast': 4.0.4 + devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 1.3.1 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm-task-list-item@1.0.2: + mdast-util-gfm@3.1.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-markdown: 1.5.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color - mdast-util-gfm@2.0.2: + mdast-util-mdx-expression@2.0.1: dependencies: - mdast-util-from-markdown: 1.3.1 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-phrasing@3.0.1: + mdast-util-mdx-jsx@3.2.0: dependencies: - '@types/mdast': 3.0.15 - unist-util-is: 5.2.1 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@12.3.0: + mdast-util-to-hast@13.2.1: dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.2.0 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - - mdast-util-to-markdown@1.5.0: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.1.0 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 mdast-util-to-markdown@2.1.2: dependencies: @@ -13271,10 +13768,6 @@ snapshots: unist-util-visit: 5.0.0 zwitch: 2.0.4 - mdast-util-to-string@3.2.0: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.4 @@ -13299,25 +13792,6 @@ snapshots: methods@1.1.2: {} - micromark-core-commonmark@1.1.0: - dependencies: - decode-named-character-reference: 1.2.0 - micromark-factory-destination: 1.1.0 - micromark-factory-label: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-factory-title: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-html-tag-name: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -13337,79 +13811,63 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-extension-directive@3.0.2: + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-factory-whitespace: 2.0.1 micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - parse-entities: 4.0.2 - - micromark-extension-gfm-autolink-literal@1.0.5: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-extension-gfm-footnote@1.1.2: - dependencies: - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-extension-gfm-strikethrough@1.0.7: + micromark-extension-gfm-footnote@2.1.0: dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-table@1.0.7: + micromark-extension-gfm-strikethrough@2.1.0: dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-tagfilter@1.0.2: + micromark-extension-gfm-table@2.1.1: dependencies: - micromark-util-types: 1.1.0 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-task-list-item@1.0.5: + micromark-extension-gfm-tagfilter@2.0.0: dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 + micromark-util-types: 2.0.2 - micromark-extension-gfm@2.0.3: + micromark-extension-gfm-task-list-item@2.1.0: dependencies: - micromark-extension-gfm-autolink-literal: 1.0.5 - micromark-extension-gfm-footnote: 1.1.2 - micromark-extension-gfm-strikethrough: 1.0.7 - micromark-extension-gfm-table: 1.0.7 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.5 - micromark-util-combine-extensions: 1.1.0 - micromark-util-types: 1.1.0 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-destination@1.1.0: + micromark-extension-gfm@3.0.0: dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 micromark-factory-destination@2.0.1: dependencies: @@ -13417,13 +13875,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-label@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-factory-label@2.0.1: dependencies: devlop: 1.1.0 @@ -13431,23 +13882,11 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-space@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - micromark-factory-space@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-types: 2.0.2 - micromark-factory-title@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-factory-title@2.0.1: dependencies: micromark-factory-space: 2.0.1 @@ -13455,13 +13894,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-whitespace@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-factory-whitespace@2.0.1: dependencies: micromark-factory-space: 2.0.1 @@ -13469,61 +13901,30 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-character@1.2.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-chunked@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-chunked@2.0.1: dependencies: micromark-util-symbol: 2.0.1 - micromark-util-classify-character@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-classify-character@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-combine-extensions@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-types: 1.1.0 - micromark-util-combine-extensions@2.0.1: dependencies: micromark-util-chunked: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-decode-numeric-character-reference@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-decode-numeric-character-reference@2.0.2: dependencies: micromark-util-symbol: 2.0.1 - micromark-util-decode-string@1.1.0: - dependencies: - decode-named-character-reference: 1.2.0 - micromark-util-character: 1.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-decode-string@2.0.1: dependencies: decode-named-character-reference: 1.2.0 @@ -13531,49 +13932,24 @@ snapshots: micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 - micromark-util-encode@1.1.0: {} - micromark-util-encode@2.0.1: {} - micromark-util-html-tag-name@1.2.0: {} - micromark-util-html-tag-name@2.0.1: {} - micromark-util-normalize-identifier@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-normalize-identifier@2.0.1: dependencies: micromark-util-symbol: 2.0.1 - micromark-util-resolve-all@1.1.0: - dependencies: - micromark-util-types: 1.1.0 - micromark-util-resolve-all@2.0.1: dependencies: micromark-util-types: 2.0.2 - micromark-util-sanitize-uri@1.2.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-encode: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-sanitize-uri@2.0.1: dependencies: micromark-util-character: 2.1.1 micromark-util-encode: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-subtokenize@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - micromark-util-subtokenize@2.1.0: dependencies: devlop: 1.1.0 @@ -13581,36 +13957,10 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-util-symbol@1.1.0: {} - micromark-util-symbol@2.0.1: {} - micromark-util-types@1.1.0: {} - micromark-util-types@2.0.2: {} - micromark@3.2.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@5.5.0) - decode-named-character-reference: 1.2.0 - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-combine-extensions: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-encode: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - micromark@4.0.2: dependencies: '@types/debug': 4.1.12 @@ -13650,6 +14000,10 @@ snapshots: min-indent@1.0.1: {} + minimatch@10.1.2: + dependencies: + '@isaacs/brace-expansion': 5.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -13687,8 +14041,6 @@ snapshots: signum: 1.0.0 to-px: 1.0.1 - mri@1.2.0: {} - ms@2.0.0: {} ms@2.1.3: {} @@ -13707,7 +14059,7 @@ snapshots: dependencies: debug: 3.2.7 iconv-lite: 0.4.24 - sax: 1.4.1 + sax: 1.4.4 transitivePeerDependencies: - supports-color @@ -13749,6 +14101,8 @@ snapshots: node-releases@2.0.19: {} + node-releases@2.0.27: {} + nodemon@3.1.10: dependencies: chokidar: 3.6.0 @@ -13904,6 +14258,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + pako@2.1.0: {} param-case@3.0.4: @@ -13987,6 +14343,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.1: + dependencies: + lru-cache: 11.2.5 + minipass: 7.1.2 + path-to-regexp@0.1.12: {} path-type@4.0.0: {} @@ -14010,6 +14371,8 @@ snapshots: picomatch@4.0.2: {} + picomatch@4.0.3: {} + plotly.js-gl2d-dist-min@2.35.2: {} plotly.js@3.0.1(mapbox-gl@1.13.3)(webpack@5.100.0(esbuild@0.25.6)): @@ -14018,9 +14381,9 @@ snapshots: '@plotly/d3-sankey': 0.7.2 '@plotly/d3-sankey-circular': 0.33.1 '@plotly/mapbox-gl': 1.13.4(mapbox-gl@1.13.3) - '@turf/area': 7.2.0 - '@turf/bbox': 7.2.0 - '@turf/centroid': 7.2.0 + '@turf/area': 7.3.3 + '@turf/bbox': 7.3.3 + '@turf/centroid': 7.3.3 base64-arraybuffer: 1.0.2 canvas-fit: 1.5.0 color-alpha: 1.0.4 @@ -14028,7 +14391,7 @@ snapshots: color-parse: 2.0.0 color-rgba: 3.0.0 country-regex: 1.1.0 - css-loader: 7.1.2(webpack@5.100.0(esbuild@0.25.6)) + css-loader: 7.1.3(webpack@5.100.0(esbuild@0.25.6)) d3-force: 1.2.1 d3-format: 1.4.5 d3-geo: 1.12.1 @@ -14066,7 +14429,7 @@ snapshots: to-px: 1.0.1 topojson-client: 3.1.0 webgl-context: 2.2.0 - world-calendars: 1.0.3 + world-calendars: 1.0.4 transitivePeerDependencies: - '@rspack/core' - mapbox-gl @@ -14091,13 +14454,13 @@ snapshots: dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 postcss-modules-scope@3.2.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-modules-values@4.0.0(postcss@8.5.6): dependencies: @@ -14116,7 +14479,7 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.5.6) string-hash: 1.1.3 - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -14131,11 +14494,11 @@ snapshots: potpack@1.0.2: {} - potpack@2.0.0: {} + potpack@2.1.0: {} prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 @@ -14177,6 +14540,8 @@ snapshots: property-information@6.5.0: {} + property-information@7.1.0: {} + protocol-buffers-schema@3.6.0: {} proxy-addr@2.0.7: @@ -14194,7 +14559,7 @@ snapshots: punycode@2.3.1: {} - qs@6.13.0: + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -14222,10 +14587,10 @@ snapshots: range-parser@1.2.1: {} - raw-body@2.5.2: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 unpipe: 1.0.0 @@ -14237,8 +14602,8 @@ snapshots: dom-helpers: 5.2.1 globalize: 0.1.1 invariant: 2.2.4 - lodash: 4.17.21 - lodash-es: 4.17.21 + lodash: 4.17.23 + lodash-es: 4.17.23 luxon: 2.5.2 memoize-one: 6.0.0 moment: 2.30.1 @@ -14269,7 +14634,7 @@ snapshots: '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 - resolve: 1.22.10 + resolve: 1.22.11 strip-indent: 4.0.0 transitivePeerDependencies: - supports-color @@ -14314,25 +14679,21 @@ snapshots: react-lifecycles-compat@3.0.4: {} - react-markdown@8.0.5(@types/react@18.2.45)(react@18.2.0): + react-markdown@10.1.0(@types/react@18.2.45)(react@18.2.0): dependencies: - '@types/hast': 2.3.10 - '@types/prop-types': 15.7.15 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 '@types/react': 18.2.45 - '@types/unist': 2.0.11 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 2.0.1 - prop-types: 15.8.1 - property-information: 6.5.0 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.1 react: 18.2.0 - react-is: 18.3.1 - remark-parse: 10.0.2 - remark-rehype: 10.1.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 - unified: 10.1.2 - unist-util-visit: 4.1.2 - vfile: 5.3.7 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 transitivePeerDependencies: - supports-color @@ -14370,16 +14731,16 @@ snapshots: react-dom: 18.2.0(react@18.2.0) redux: 4.2.0 - react-router-dom@6.6.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-router-dom@6.30.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@remix-run/router': 1.2.1 + '@remix-run/router': 1.23.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.6.2(react@18.2.0) + react-router: 6.30.3(react@18.2.0) - react-router@6.6.2(react@18.2.0): + react-router@6.30.3(react@18.2.0): dependencies: - '@remix-run/router': 1.2.1 + '@remix-run/router': 1.23.2 react: 18.2.0 react-shallow-renderer@16.15.0(react@18.2.0): @@ -14499,6 +14860,8 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 + regexpp@3.2.0: {} + regl-error2d@2.0.12: dependencies: array-bounds: 1.0.1 @@ -14596,38 +14959,39 @@ snapshots: transitivePeerDependencies: - encoding - remark-directive@3.0.0: + remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 - mdast-util-directive: 3.1.0 - micromark-extension-directive: 3.0.2 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-gfm@3.0.1: + remark-parse@11.0.0: dependencies: - '@types/mdast': 3.0.15 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.3 - unified: 10.1.2 + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-parse@10.0.2: + remark-rehype@11.1.2: dependencies: - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 - remark-rehype@10.1.0: + remark-stringify@11.0.0: dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-to-hast: 12.3.0 - unified: 10.1.2 + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 remedial@1.0.8: {} @@ -14670,6 +15034,12 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.5: dependencies: is-core-module: 2.16.1 @@ -14736,10 +15106,6 @@ snapshots: dependencies: tslib: 2.8.1 - sade@1.8.1: - dependencies: - mri: 1.2.0 - safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -14765,15 +15131,15 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.89.2: + sass@1.97.3: dependencies: chokidar: 4.0.3 - immutable: 5.1.3 + immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.1 - sax@1.4.1: {} + sax@1.4.4: {} saxes@6.0.0: dependencies: @@ -14783,7 +15149,7 @@ snapshots: dependencies: loose-envify: 1.4.0 - schema-utils@4.3.2: + schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 ajv: 8.12.0 @@ -14798,6 +15164,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.4: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -14978,6 +15346,8 @@ snapshots: statuses@2.0.1: {} + statuses@2.0.2: {} + std-env@3.9.0: {} stop-iteration-iterator@1.1.0: @@ -14985,9 +15355,9 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@8.6.6(prettier@3.3.3): + storybook@8.6.15(prettier@3.3.3): dependencies: - '@storybook/core': 8.6.6(prettier@3.3.3)(storybook@8.6.6(prettier@3.3.3)) + '@storybook/core': 8.6.15(prettier@3.3.3)(storybook@8.6.15(prettier@3.3.3)) optionalDependencies: prettier: 3.3.3 transitivePeerDependencies: @@ -15023,7 +15393,7 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string.prototype.matchall@4.0.12: dependencies: @@ -15084,9 +15454,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -15106,9 +15476,13 @@ snapshots: dependencies: webpack: 5.100.0(esbuild@0.25.6) - style-to-object@0.4.4: + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.1.1 + inline-style-parser: 0.2.7 stylis@4.2.0: {} @@ -15170,27 +15544,26 @@ snapshots: timeout-signal: 2.0.0 whatwg-mimetype: 4.0.0 - synckit@0.9.3: + synckit@0.11.12: dependencies: - '@pkgr/core': 0.1.2 - tslib: 2.8.1 + '@pkgr/core': 0.2.9 - tapable@2.2.2: {} + tapable@2.3.0: {} - terser-webpack-plugin@5.3.14(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)): + terser-webpack-plugin@5.3.16(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)): dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.43.1 + terser: 5.46.0 webpack: 5.100.0(esbuild@0.25.6) optionalDependencies: esbuild: 0.25.6 - terser@5.43.1: + terser@5.46.0: dependencies: - '@jridgewell/source-map': 0.3.10 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -15229,6 +15602,11 @@ snapshots: fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinypool@1.1.1: {} tinyqueue@2.0.3: {} @@ -15296,6 +15674,10 @@ snapshots: dependencies: typescript: 5.7.2 + ts-api-utils@2.4.0(typescript@5.7.2): + dependencies: + typescript: 5.7.2 + ts-dedent@2.2.0: {} ts-invariant@0.10.3: @@ -15433,6 +15815,8 @@ snapshots: undici-types@6.20.0: {} + undici-types@7.16.0: {} + unified@10.1.2: dependencies: '@types/unist': 2.0.11 @@ -15459,8 +15843,6 @@ snapshots: unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 - unist-util-generated@2.0.1: {} - unist-util-is@5.2.1: dependencies: '@types/unist': 2.0.11 @@ -15473,6 +15855,10 @@ snapshots: dependencies: '@types/unist': 2.0.11 + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position@3.0.3: dependencies: '@types/unist': 2.0.11 @@ -15524,6 +15910,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + update-diff@1.1.0: {} upper-case-first@2.0.2: @@ -15572,12 +15964,7 @@ snapshots: uuid@9.0.0: {} - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.0 - kleur: 4.1.5 - sade: 1.8.1 + uuid@9.0.1: {} value-or-promise@1.0.12: {} @@ -15610,13 +15997,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0): dependencies: cac: 6.7.14 debug: 4.4.1(supports-color@5.5.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -15631,18 +16018,18 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)): dependencies: debug: 4.4.1(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.7.2) optionalDependencies: - vite: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color - typescript - vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0): + vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0): dependencies: esbuild: 0.25.6 fdir: 6.4.6(picomatch@4.0.2) @@ -15651,19 +16038,19 @@ snapshots: rollup: 4.44.2 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 25.2.3 fsevents: 2.3.3 jiti: 2.4.2 - sass: 1.89.2 - terser: 5.43.1 + sass: 1.97.3 + terser: 5.46.0 tsx: 4.20.3 yaml: 2.8.0 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.10.5)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -15681,12 +16068,12 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.6(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@22.10.5)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.1(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.10.5 + '@types/node': 25.2.3 jsdom: 22.1.0 transitivePeerDependencies: - jiti @@ -15716,7 +16103,7 @@ snapshots: dependencies: loose-envify: 1.4.0 - watchpack@2.4.4: + watchpack@2.5.1: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -15752,23 +16139,23 @@ snapshots: '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 - acorn-import-phases: 1.0.3(acorn@8.15.0) - browserslist: 4.25.1 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.2 + enhanced-resolve: 5.19.0 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)) - watchpack: 2.4.4 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.16(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)) + watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' @@ -15842,7 +16229,7 @@ snapshots: which@4.0.0: dependencies: - isexe: 3.1.1 + isexe: 3.1.2 why-is-node-running@2.3.0: dependencies: @@ -15851,7 +16238,7 @@ snapshots: word-wrap@1.2.5: {} - world-calendars@1.0.3: + world-calendars@1.0.4: dependencies: object-assign: 4.1.1 @@ -15869,9 +16256,9 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} diff --git a/ngui/server/api/auth/client.ts b/ngui/server/api/auth/client.ts index 1937628f5..27a65e103 100644 --- a/ngui/server/api/auth/client.ts +++ b/ngui/server/api/auth/client.ts @@ -9,9 +9,7 @@ import { getParams } from "../../utils/getParams.js"; class AuthClient extends BaseClient { override baseURL = `${process.env.AUTH_ENDPOINT || this.endpoint}/auth/v2/`; - async getOrganizationAllowedActions( - requestParams: OrganizationAllowedActionsRequestParams - ) { + async getOrganizationAllowedActions(requestParams: OrganizationAllowedActionsRequestParams) { const path = `allowed_actions`; const actions = await this.get(path, { @@ -48,10 +46,7 @@ class AuthClient extends BaseClient { }; } - async updateUser( - userId: MutationUpdateUserArgs["id"], - params: MutationUpdateUserArgs["params"] - ) { + async updateUser(userId: MutationUpdateUserArgs["id"], params: MutationUpdateUserArgs["params"]) { const result = await this.patch(`users/${userId}`, { body: { display_name: params.name, password: params.password }, }); diff --git a/ngui/server/api/baseClient.ts b/ngui/server/api/baseClient.ts index 217215f13..65d34becb 100644 --- a/ngui/server/api/baseClient.ts +++ b/ngui/server/api/baseClient.ts @@ -1,8 +1,4 @@ -import { - RESTDataSource, - AugmentedRequest, - type DataSourceConfig, -} from "@apollo/datasource-rest"; +import { RESTDataSource, AugmentedRequest, type DataSourceConfig } from "@apollo/datasource-rest"; class BaseClient extends RESTDataSource { private token: string; diff --git a/ngui/server/api/keeper/client.ts b/ngui/server/api/keeper/client.ts index dea956a23..0a2cd8e9c 100644 --- a/ngui/server/api/keeper/client.ts +++ b/ngui/server/api/keeper/client.ts @@ -3,9 +3,7 @@ import { EventsRequestParams } from "../../graphql/__generated__/types/keeper"; import { getParams } from "../../utils/getParams.js"; class KeeperClient extends BaseClient { - override baseURL = `${ - process.env.KEEPER_ENDPOINT || this.endpoint - }/report/v2/`; + override baseURL = `${process.env.KEEPER_ENDPOINT || this.endpoint}/report/v2/`; async getEvents(organizationId: string, requestParams: EventsRequestParams) { const path = `organizations/${organizationId}/events`; diff --git a/ngui/server/api/restapi/client.ts b/ngui/server/api/restapi/client.ts index a420a346d..31b7eb82a 100644 --- a/ngui/server/api/restapi/client.ts +++ b/ngui/server/api/restapi/client.ts @@ -25,7 +25,7 @@ import { QueryAvailableFiltersArgs, QueryOrganizationSummaryArgs, QueryBillingSubscriptionPlansArgs, - QueryBillingSubscriptionArgs + QueryBillingSubscriptionArgs, } from "../../graphql/__generated__/types/restapi"; import { getParams } from "../../utils/getParams.js"; @@ -42,7 +42,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/employees`; const currentEmployee = await this.get(path, { - params: getParams({ current_only: true }) + params: getParams({ current_only: true }), }); return currentEmployee.employees[0]; @@ -52,7 +52,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/cloud_accounts`; const dataSources = await this.get(path, { - params: getParams({ details: true }) + params: getParams({ details: true }), }); return dataSources.cloud_accounts; @@ -63,8 +63,8 @@ class RestApiClient extends BaseClient { const dataSource = await this.get(path, { params: getParams({ - details: requestParams.details - }) + details: requestParams.details, + }), }); return dataSource; @@ -91,9 +91,9 @@ class RestApiClient extends BaseClient { ...params.alibabaConfig, ...params.nebiusConfig, ...params.databricksConfig, - ...params.k8sConfig - } - } + ...params.k8sConfig, + }, + }, }); return dataSource; @@ -121,9 +121,9 @@ class RestApiClient extends BaseClient { ...params.alibabaConfig, ...params.nebiusConfig, ...params.databricksConfig, - ...params.k8sConfig - } - }) + ...params.k8sConfig, + }, + }), }); return dataSource; @@ -144,7 +144,7 @@ class RestApiClient extends BaseClient { const path = `employees/${employeeId}/emails/bulk`; const emails = await this.post(path, { - body: params + body: params, }); const emailIds = [...(params?.enable ?? []), ...(params.disable ?? [])]; @@ -162,11 +162,11 @@ class RestApiClient extends BaseClient { const emails = await this.post(path, { body: { - [action === "enable" ? "enable" : "disable"]: [emailId] - } + [action === "enable" ? "enable" : "disable"]: [emailId], + }, }); - const email = emails.employee_emails.find((email) => email.id === emailId); + const email = emails.employee_emails.find((employeeEmail) => employeeEmail.id === emailId); return email; } @@ -188,8 +188,8 @@ class RestApiClient extends BaseClient { return await this.patch(path, { body: JSON.stringify({ - action - }) + action, + }), }); } @@ -214,8 +214,8 @@ class RestApiClient extends BaseClient { async updateOrganizationThemeSettings(organizationId, value) { const themeSettings = await this.patch(`organizations/${organizationId}/options/theme_settings`, { body: { - value: JSON.stringify(value) - } + value: JSON.stringify(value), + }, }); const parsedThemeSettings = JSON.parse(themeSettings.value); @@ -238,8 +238,8 @@ class RestApiClient extends BaseClient { ) { const perspectives = await this.patch(`organizations/${organizationId}/options/perspectives`, { body: { - value: JSON.stringify(value) - } + value: JSON.stringify(value), + }, }); const parsedPerspectives = JSON.parse(perspectives.value); @@ -250,8 +250,8 @@ class RestApiClient extends BaseClient { async createOrganization(organizationName: MutationCreateOrganizationArgs["organizationName"]) { return await this.post("organizations", { body: { - name: organizationName - } + name: organizationName, + }, }); } @@ -260,7 +260,7 @@ class RestApiClient extends BaseClient { params: MutationUpdateOrganizationArgs["params"] ) { return await this.patch(`organizations/${organizationId}`, { - body: params + body: params, }); } @@ -283,7 +283,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/resources_count`; const resourceCountBreakdown = await this.get(path, { - params: getParams(params) + params: getParams(params), }); return resourceCountBreakdown; @@ -293,7 +293,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/breakdown_meta`; const metaBreakdown = await this.get(path, { - params: getParams(params) + params: getParams(params), }); return metaBreakdown; @@ -306,7 +306,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/breakdown_expenses`; const dailyExpensesBreakdown = await this.get(path, { - params: getParams(params) + params: getParams(params), }); return dailyExpensesBreakdown; @@ -320,8 +320,8 @@ class RestApiClient extends BaseClient { const organizationLimitHits = await this.get(path, { params: getParams({ - constraint_id: constraintId - }) + constraint_id: constraintId, + }), }); return organizationLimitHits.organization_limit_hits; @@ -334,7 +334,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/relevant_flavors`; const flavors = await this.get(path, { - params: getParams(requestParams) + params: getParams(requestParams), }); return flavors; @@ -344,7 +344,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/clean_expenses`; const cleanExpenses = await this.get(path, { - params: getParams(params) + params: getParams(params), }); return cleanExpenses; @@ -354,7 +354,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/cloud_policies`; const cloudPolicies = await this.get(path, { - params: getParams(params) + params: getParams(params), }); return cloudPolicies; @@ -367,7 +367,7 @@ class RestApiClient extends BaseClient { const path = `organizations/${organizationId}/available_filters`; const availableFilters = await this.get(path, { - params: getParams(params) + params: getParams(params), }); return availableFilters.filter_values; @@ -393,7 +393,7 @@ class RestApiClient extends BaseClient { ) { const path = `organizations/${organizationId}/subscription`; const session = await this.patch(path, { - body: params + body: params, }); return session; @@ -402,7 +402,7 @@ class RestApiClient extends BaseClient { async createStripeBillingPortalSession(organizationId: MutationCreateStripeBillingPortalSessionArgs["organizationId"]) { const path = `organizations/${organizationId}/subscription`; const session = await this.patch(path, { - body: {} + body: {}, }); return session; } @@ -413,7 +413,7 @@ class RestApiClient extends BaseClient { ) { const path = `organizations/${organizationId}/summary`; const summary = await this.get(path, { - params: getParams(params) + params: getParams(params), }); return summary; diff --git a/ngui/server/api/slacker/client.ts b/ngui/server/api/slacker/client.ts index ca560a414..b3fdf546b 100644 --- a/ngui/server/api/slacker/client.ts +++ b/ngui/server/api/slacker/client.ts @@ -1,9 +1,7 @@ import BaseClient from "../baseClient.js"; class SlackerClient extends BaseClient { - override baseURL = `${ - process.env.SLACKER_ENDPOINT || this.endpoint - }/slacker/v2/`; + override baseURL = `${process.env.SLACKER_ENDPOINT || this.endpoint}/slacker/v2/`; async getInstallPath() { const installationPath = await this.get("install_path"); diff --git a/ngui/server/checkEnvironment.ts b/ngui/server/checkEnvironment.ts index a2ea89893..b724b7342 100644 --- a/ngui/server/checkEnvironment.ts +++ b/ngui/server/checkEnvironment.ts @@ -1,9 +1,7 @@ const checkEnvironment = (requiredVariables: string[]) => { requiredVariables.forEach((variable) => { if (!process.env[variable]) { - console.warn( - `\x1b[31mRequired environment variable ${variable} is not set\x1b[0m` - ); + console.warn(`\x1b[31mRequired environment variable ${variable} is not set\x1b[0m`); } }); }; diff --git a/ngui/server/eslint.config.mjs b/ngui/server/eslint.config.mjs new file mode 100644 index 000000000..53869ff84 --- /dev/null +++ b/ngui/server/eslint.config.mjs @@ -0,0 +1,79 @@ +import nodePlugin from "eslint-plugin-node"; +import eslintPluginImport from "eslint-plugin-import"; +import eslintPluginPrettier from "eslint-plugin-prettier"; +import typescriptPlugin from "@typescript-eslint/eslint-plugin"; +import typescriptParser from "@typescript-eslint/parser"; +import graphqlPlugin from "@graphql-eslint/eslint-plugin"; +import js from "@eslint/js"; + +export default [ + { + ignores: ["**/node_modules/**", "**/dist/**", "**/build/**", "**/graphql/__generated__/**", "**/graphql/typeDefs/root.ts"] + }, + { + files: ["**/*.ts"], + ignores: ["**/graphql/__generated__/**"], + processor: graphqlPlugin.processor, + plugins: { + node: nodePlugin, + import: eslintPluginImport, + "@typescript-eslint": typescriptPlugin, + prettier: eslintPluginPrettier + }, + languageOptions: { + parser: typescriptParser, + parserOptions: { ecmaVersion: "latest", sourceType: "module" }, + globals: { process: "readonly", __dirname: "readonly", console: "readonly", URLSearchParams: "readonly" } + }, + rules: { + ...js.configs.recommended.rules, + ...typescriptPlugin.configs.recommended.rules, + + "node/no-missing-import": "off", + "node/no-unsupported-features/es-syntax": "off", + + "@typescript-eslint/no-unused-vars": ["warn", { ignoreRestSiblings: true }], + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-use-before-define": ["error", { functions: true, classes: true, variables: true }], + "no-shadow": "off", + "@typescript-eslint/no-shadow": ["error", { hoist: "functions", allow: [] }], + + ...eslintPluginImport.flatConfigs.recommended.rules, + "import/no-unresolved": "off", + "import/order": [ + "warn", + { groups: ["builtin", "external", "internal", "parent", "sibling", "index"], "newlines-between": "never" } + ], + + "prettier/prettier": "error" + } + }, + { + files: ["**/*.graphql"], + ignores: ["**/node_modules/**", "**/dist/**", "**/build/**", "**/graphql/__generated__/**"], + languageOptions: { parser: graphqlPlugin.parser }, + plugins: { "@graphql-eslint": graphqlPlugin }, + rules: { + ...graphqlPlugin.configs["flat/schema-recommended"].rules, + + "@graphql-eslint/strict-id-in-types": "off", + "@graphql-eslint/require-description": "off", + "@graphql-eslint/no-hashtag-description": "off", + "@graphql-eslint/no-typename-prefix": "off", + "@graphql-eslint/naming-convention": [ + "error", + { + OperationDefinition: { + style: "PascalCase", + forbiddenPrefixes: ["Query", "Mutation", "Subscription", "Get"], + forbiddenSuffixes: ["Query", "Mutation", "Subscription"] + }, + EnumTypeDefinition: { style: "PascalCase" }, + "FieldDefinition[parent.name.value=Query]": { style: "camelCase" }, + "FieldDefinition[parent.name.value=Mutation]": { style: "camelCase" }, + "FieldDefinition:not([parent.name.value=Query]):not([parent.name.value=Mutation])": { style: "snake_case" } + } + ] + } + } +]; \ No newline at end of file diff --git a/ngui/server/graphql.config.js b/ngui/server/graphql.config.js new file mode 100644 index 000000000..014be7bd9 --- /dev/null +++ b/ngui/server/graphql.config.js @@ -0,0 +1,4 @@ +export default { + schema: "./graphql/typeDefs/**/*.{ts,graphql}", + require: ["ts-node/register/transpile-only"], +}; diff --git a/ngui/server/graphql/resolvers/auth.ts b/ngui/server/graphql/resolvers/auth.ts index cc59f3f94..1165993f1 100644 --- a/ngui/server/graphql/resolvers/auth.ts +++ b/ngui/server/graphql/resolvers/auth.ts @@ -23,12 +23,12 @@ const resolvers: Resolvers = { throw new TypeError("Invalid input for StringArrayMap"); } return value; - } + }, }), Query: { organizationAllowedActions: async (_, { requestParams }, { dataSources }) => { return dataSources.auth.getOrganizationAllowedActions(requestParams); - } + }, }, Mutation: { token: async (_, { email, password, code }, { dataSources }) => { @@ -42,8 +42,8 @@ const resolvers: Resolvers = { }, signIn: async (_, { provider, token, tenantId, redirectUri }, { dataSources }) => { return dataSources.auth.signIn(provider, token, tenantId, redirectUri); - } - } + }, + }, }; export default resolvers; diff --git a/ngui/server/graphql/resolvers/restapi.ts b/ngui/server/graphql/resolvers/restapi.ts index d1a93b934..098df6209 100644 --- a/ngui/server/graphql/resolvers/restapi.ts +++ b/ngui/server/graphql/resolvers/restapi.ts @@ -65,62 +65,26 @@ const resolvers: Resolvers = { organizationFeatures: async (_, { organizationId }, { dataSources }) => { return dataSources.restapi.getOrganizationFeatures(organizationId); }, - organizationThemeSettings: async ( - _, - { organizationId }, - { dataSources } - ) => { + organizationThemeSettings: async (_, { organizationId }, { dataSources }) => { return dataSources.restapi.getOrganizationThemeSettings(organizationId); }, - organizationPerspectives: async ( - _, - { organizationId }, - { dataSources } - ) => { + organizationPerspectives: async (_, { organizationId }, { dataSources }) => { return dataSources.restapi.getOrganizationPerspectives(organizationId); }, organizationConstraint: async (_, { constraintId }, { dataSources }) => { return dataSources.restapi.getOrganizationConstraint(constraintId); }, - resourceCountBreakdown: async ( - _, - { organizationId, params }, - { dataSources } - ) => { - return dataSources.restapi.getResourceCountBreakdown( - organizationId, - params - ); - }, - expensesDailyBreakdown: async ( - _, - { organizationId, params }, - { dataSources } - ) => { - return dataSources.restapi.getExpensesDailyBreakdown( - organizationId, - params - ); - }, - organizationLimitHits: async ( - _, - { organizationId, constraintId }, - { dataSources } - ) => { - return dataSources.restapi.getOrganizationLimitHits( - organizationId, - constraintId - ); - }, - relevantFlavors: async ( - _, - { organizationId, requestParams }, - { dataSources } - ) => { - return dataSources.restapi.getRelevantFlavors( - organizationId, - requestParams - ); + resourceCountBreakdown: async (_, { organizationId, params }, { dataSources }) => { + return dataSources.restapi.getResourceCountBreakdown(organizationId, params); + }, + expensesDailyBreakdown: async (_, { organizationId, params }, { dataSources }) => { + return dataSources.restapi.getExpensesDailyBreakdown(organizationId, params); + }, + organizationLimitHits: async (_, { organizationId, constraintId }, { dataSources }) => { + return dataSources.restapi.getOrganizationLimitHits(organizationId, constraintId); + }, + relevantFlavors: async (_, { organizationId, requestParams }, { dataSources }) => { + return dataSources.restapi.getRelevantFlavors(organizationId, requestParams); }, cleanExpenses: async (_, { organizationId, params }, { dataSources }) => { return dataSources.restapi.getCleanExpenses(organizationId, params); @@ -145,21 +109,13 @@ const resolvers: Resolvers = { }, }, Mutation: { - createDataSource: async ( - _, - { organizationId, params }, - { dataSources } - ) => { + createDataSource: async (_, { organizationId, params }, { dataSources }) => { return dataSources.restapi.createDataSource(organizationId, params); }, updateDataSource: async (_, { dataSourceId, params }, { dataSources }) => { return dataSources.restapi.updateDataSource(dataSourceId, params); }, - updateEmployeeEmails: async ( - _, - { employeeId, params }, - { dataSources } - ) => { + updateEmployeeEmails: async (_, { employeeId, params }, { dataSources }) => { return dataSources.restapi.updateEmployeeEmails(employeeId, params); }, updateEmployeeEmail: async (_, { employeeId, params }, { dataSources }) => { @@ -171,11 +127,7 @@ const resolvers: Resolvers = { createOrganization: async (_, { organizationName }, { dataSources }) => { return dataSources.restapi.createOrganization(organizationName); }, - updateOrganization: async ( - _, - { organizationId, params }, - { dataSources } - ) => { + updateOrganization: async (_, { organizationId, params }, { dataSources }) => { return dataSources.restapi.updateOrganization(organizationId, params); }, deleteOrganization: async (_, { organizationId }, { dataSources }) => { @@ -184,44 +136,17 @@ const resolvers: Resolvers = { updateInvitation: async (_, { invitationId, action }, { dataSources }) => { return dataSources.restapi.updateInvitation(invitationId, action); }, - updateOrganizationThemeSettings: async ( - _, - { organizationId, value }, - { dataSources } - ) => { - return dataSources.restapi.updateOrganizationThemeSettings( - organizationId, - value - ); - }, - updateOrganizationPerspectives: async ( - _, - { organizationId, value }, - { dataSources } - ) => { - return dataSources.restapi.updateOrganizationPerspectives( - organizationId, - value - ); - }, - createStripeCheckoutSession: async ( - _, - { organizationId, params }, - { dataSources } - ) => { - return dataSources.restapi.createStripeCheckoutSession( - organizationId, - params - ); - }, - createStripeBillingPortalSession: async ( - _, - { organizationId }, - { dataSources } - ) => { - return dataSources.restapi.createStripeBillingPortalSession( - organizationId - ); + updateOrganizationThemeSettings: async (_, { organizationId, value }, { dataSources }) => { + return dataSources.restapi.updateOrganizationThemeSettings(organizationId, value); + }, + updateOrganizationPerspectives: async (_, { organizationId, value }, { dataSources }) => { + return dataSources.restapi.updateOrganizationPerspectives(organizationId, value); + }, + createStripeCheckoutSession: async (_, { organizationId, params }, { dataSources }) => { + return dataSources.restapi.createStripeCheckoutSession(organizationId, params); + }, + createStripeBillingPortalSession: async (_, { organizationId }, { dataSources }) => { + return dataSources.restapi.createStripeBillingPortalSession(organizationId); }, }, }; diff --git a/ngui/server/graphql/schema.ts b/ngui/server/graphql/schema.ts index f6e5f8147..08c0a95c4 100644 --- a/ngui/server/graphql/schema.ts +++ b/ngui/server/graphql/schema.ts @@ -1,7 +1,7 @@ +import path from "path"; import { makeExecutableSchema } from "@graphql-tools/schema"; import { mergeTypeDefs, mergeResolvers } from "@graphql-tools/merge"; import { loadFilesSync } from "@graphql-tools/load-files"; -import path from "path"; const __dirname = import.meta.dirname; @@ -10,5 +10,5 @@ const resolvers = loadFilesSync(path.join(__dirname, "resolvers", "**", "*.{js,t export const schema = makeExecutableSchema({ typeDefs: mergeTypeDefs(typeDefs), - resolvers: mergeResolvers(resolvers) + resolvers: mergeResolvers(resolvers), }); diff --git a/ngui/server/package.json b/ngui/server/package.json index 2f51e6729..51ddc9b7b 100644 --- a/ngui/server/package.json +++ b/ngui/server/package.json @@ -9,10 +9,10 @@ "pnpm": "=10.12.1" }, "scripts": { - "lint": "node -e 'console.log(\"TODO: add lint\")'", - "lint:fix": "node -e 'console.log(\"TODO: add lint:fix\")'", - "check": "node -e 'console.log(\"TODO: add check\")'", - "fix": "node -e 'console.log(\"TODO: add fix\")'", + "lint": "eslint . --ext .ts --max-warnings=0", + "lint:fix": "eslint . --ext .ts --fix", + "check": "pnpm lint", + "fix": "pnpm lint:fix", "compile": "tsc", "build": "pnpm run compile", "serve": "node ./dist/server.js", @@ -32,14 +32,14 @@ "homepage": "https://gitlab.com/hystax/ngui_server#readme", "dependencies": { "@apollo/datasource-rest": "6.4.1", - "@apollo/server": "4.11.3", + "@apollo/server": "4.13.0", "@apollo/utils.keyvaluecache": "3.1.0", "@graphql-tools/load-files": "7.0.0", "@graphql-tools/merge": "9.0.17", "@graphql-tools/schema": "10.0.25", - "body-parser": "1.20.3", + "body-parser": "1.20.4", "cors": "2.8.5", - "express": "4.21.2", + "express": "4.22.1", "express-rate-limit": "8.1.0", "graphql": "16.10.0", "graphql-scalars": "1.24.0", @@ -47,8 +47,15 @@ "http-proxy-middleware": "2.0.9" }, "devDependencies": { + "@eslint/js": "9.39.2", + "@graphql-eslint/eslint-plugin": "4.4.0", + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", "dotenv": "17.2.0", "dotenv-expand": "12.0.2", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-prettier": "5.5.5", "nodemon": "3.1.10", "tsx": "4.20.3" } diff --git a/ngui/server/server.ts b/ngui/server/server.ts index 7b6300483..bf210dbcd 100644 --- a/ngui/server/server.ts +++ b/ngui/server/server.ts @@ -1,19 +1,19 @@ +import http from "http"; +import path from "path"; import { ApolloServer } from "@apollo/server"; import { expressMiddleware } from "@apollo/server/express4"; import { ApolloServerPluginDrainHttpServer } from "@apollo/server/plugin/drainHttpServer"; import express from "express"; -import http from "http"; import cors from "cors"; -import path from "path"; import bodyParser from "body-parser"; import { createProxyMiddleware } from "http-proxy-middleware"; +import expressRateLimit from "express-rate-limit"; import checkEnvironment from "./checkEnvironment.js"; import KeeperClient from "./api/keeper/client.js"; import SlackerClient from "./api/slacker/client.js"; import RestApiClient from "./api/restapi/client.js"; import AuthClient from "./api/auth/client.js"; import { schema } from "./graphql/schema.js"; -import rateLimit from "express-rate-limit"; if (process.env.NODE_ENV === "development") { const dotenv = await import("dotenv"); @@ -42,7 +42,7 @@ export interface ContextValue { const server = new ApolloServer({ schema, - plugins: [ApolloServerPluginDrainHttpServer({ httpServer })] + plugins: [ApolloServerPluginDrainHttpServer({ httpServer })], }); // Ensure we wait for our server to start @@ -69,10 +69,10 @@ app.use( keeper: new KeeperClient({ cache }, token, "http://keeper"), slacker: new SlackerClient({ cache }, token, "http://slacker"), restapi: new RestApiClient({ cache }, token, "http://restapi"), - auth: new AuthClient({ cache }, token, "http://auth") - } + auth: new AuthClient({ cache }, token, "http://auth"), + }, }; - } + }, }) ); @@ -80,7 +80,7 @@ app.use( const proxyMiddleware = createProxyMiddleware({ target: process.env.PROXY_URL, changeOrigin: true, - secure: false + secure: false, }); app.use("/auth", proxyMiddleware); @@ -99,9 +99,9 @@ const staticDir = path.join(UI_BUILD_PATH, UI_BUILD_DIR); app.use(express.static(staticDir, { index: false })); -const indexLimiter = rateLimit({ +const indexLimiter = expressRateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes - max: 500 + max: 500, }); app.get("*", indexLimiter, (_, res) => res.sendFile(path.join(staticDir, "index.html"))); diff --git a/ngui/server/utils/getParams.ts b/ngui/server/utils/getParams.ts index 2ee789ff7..b22c2cbf7 100644 --- a/ngui/server/utils/getParams.ts +++ b/ngui/server/utils/getParams.ts @@ -2,7 +2,7 @@ export const getParams = (requestParams: T) => new URLSearchParams( Object.entries(requestParams) .filter( - ([_, value]) => + ([, value]) => // TODO: investigate if we can handle only either undefined or null values value !== undefined && value !== null ) diff --git a/ngui/ui/eslint.config.mjs b/ngui/ui/eslint.config.mjs index 29d0bd8b2..6124045e7 100644 --- a/ngui/ui/eslint.config.mjs +++ b/ngui/ui/eslint.config.mjs @@ -1,157 +1,13 @@ -import js from "@eslint/js"; -import typescriptPlugin from "@typescript-eslint/eslint-plugin"; -import tsParser from "@typescript-eslint/parser"; -import eslintConfigPrettier from "eslint-config-prettier"; -import eslintPluginImport from "eslint-plugin-import"; -import eslintPluginPrettier from "eslint-plugin-prettier"; +import hystaxConfig from "@hystax/eslint-config-ui"; import reactPlugin from "eslint-plugin-react"; -import reactHooksPlugin from "eslint-plugin-react-hooks"; -import unusedImportsPlugin from "eslint-plugin-unused-imports"; -import globals from "globals"; export default [ + hystaxConfig, { - files: ["src/**/*.{ts,tsx}"], - ignores: ["src/stories/**"], - plugins: { - react: reactPlugin, - "react-hooks": reactHooksPlugin, - "@typescript-eslint": typescriptPlugin, - import: eslintPluginImport, - "unused-imports": unusedImportsPlugin, - prettier: eslintPluginPrettier - }, - languageOptions: { - parser: tsParser, - parserOptions: { - ecmaFeatures: { - jsx: true - } - }, - ecmaVersion: "latest", - sourceType: "module", - globals: { - ...globals.browser, - ...globals.builtin, - // TODO: Split test and ui configs - ...globals.jest, - vi: true - } - }, - settings: { - "import/resolver": { - node: { - // if unset, default is just '.js', but it must be re-added explicitly if set - extensions: [".js", ".jsx", ".ts", ".tsx"], - moduleDirectory: ["node_modules", "src/"] - } - }, - react: { - version: "detect" - }, - "import/ignore": ["node_modules"] - }, - rules: { - ...js.configs.recommended.rules, - ...typescriptPlugin.configs.recommended.rules, - ...reactPlugin.configs.flat.recommended.rules, - ...reactHooksPlugin.configs.recommended.rules, - ...eslintPluginImport.flatConfigs.recommended.rules, - "class-methods-use-this": "error", - "no-param-reassign": [ - "error", - { - props: true, - ignorePropertyModificationsFor: [ - "acc", // for reduce accumulators - "accumulator", // for reduce accumulators - "ctx" // for canvas context - ] - } - ], - "no-underscore-dangle": [ - "error", - { - allowAfterThis: true, - allowAfterThisConstructor: true - } - ], - "jsx-quotes": "warn", - "no-multi-spaces": "warn", - "no-const-assign": "warn", - "constructor-super": "warn", - "valid-typeof": "warn", - "no-extra-semi": "warn", - "comma-dangle": [ - "warn", - { - arrays: "never", - objects: "never" - } - ], - "max-params": ["warn", 3], - "no-this-before-super": "warn", - "no-undef": "warn", - "no-unreachable": "warn", - "no-bitwise": "off", - "no-console": "off", - "default-param-last": "off", - "arrow-body-style": ["warn", "as-needed"], - - "unused-imports/no-unused-imports": "warn", - - "react/jsx-uses-vars": "error", - "react/no-typos": "warn", - "react/jsx-tag-spacing": "warn", - "react/jsx-boolean-value": "warn", - "react/no-array-index-key": "warn", - "react/jsx-wrap-multilines": "warn", - "react/self-closing-comp": "warn", - "react/jsx-closing-bracket-location": "warn", - "react/require-render-return": "warn", - "react/prefer-es6-class": "warn", - "react/prefer-stateless-function": "warn", - "react/jsx-uses-react": "warn", - "react/no-multi-comp": "off", - "react/display-name": "off", - "react/react-in-jsx-scope": "off", - "react/prop-types": "off", - - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-empty-function": "off", - // https://typescript-eslint.io/rules/no-unused-vars/#how-to-use - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - ignoreRestSiblings: true - } - ], - - "import/order": [ - "warn", - { - groups: ["builtin", "external", "internal", "parent", "sibling", "index"], - pathGroups: [ - { - pattern: "react", - group: "builtin", - position: "before" - } - ], - pathGroupsExcludedImportTypes: ["react"], - alphabetize: { - order: "asc", - caseInsensitive: true - }, - "newlines-between": "never" - } - ], - "import/no-extraneous-dependencies": "off", - "import/prefer-default-export": "off", - - "prettier/prettier": "error", - ...eslintConfigPrettier.rules - } - } + rules: { "react/jsx-curly-brace-presence": ["error", { props: "never", children: "never" }] }, + ignores: [], + settings: {}, + languageOptions: {}, + plugins: { react: reactPlugin }, + }, // custom rules can be added here ]; diff --git a/ngui/ui/package.json b/ngui/ui/package.json index d92a8510d..6b4fe6bed 100644 --- a/ngui/ui/package.json +++ b/ngui/ui/package.json @@ -35,20 +35,20 @@ "@vitejs/plugin-react-swc": "3.10.2", "ajv": "8.12.0", "analytics": "0.8.1", - "axios": "1.12.2", + "axios": "1.13.5", "core-js": "3.27.2", "d3-array": "3.2.4", "d3-scale": "4.0.2", "date-fns": "2.29.3", - "express": "4.21.2", + "express": "4.22.1", "file-saver": "2.0.5", "github-buttons": "2.27.0", "google-map-react": "2.2.1", "graphql": "16.10.0", "graphql-ws": "5.16.0", "intl-pluralrules": "1.3.1", - "jspdf": "3.0.2", - "jspdf-autotable": "5.0.2", + "jspdf": "4.1.0", + "jspdf-autotable": "5.0.7", "localforage": "1.10.0", "node-macaroons": "0.0.6", "plotly.js-gl2d-dist-min": "2.35.2", @@ -61,24 +61,22 @@ "react-hook-form": "7.51.3", "react-intl": "6.5.5", "react-json-editor-ajrm": "2.5.13", - "react-markdown": "8.0.5", + "react-markdown": "10.1.0", "react-plotly.js": "2.6.0", "react-redux": "8.0.5", - "react-router-dom": "6.6.2", + "react-router-dom": "6.30.3", "react-test-renderer": "18.2.0", "redux": "4.2.0", "redux-mock-store": "1.5.4", "redux-persist": "6.0.0", - "remark-directive": "3.0.0", - "remark-gfm": "3.0.1", + "remark-gfm": "4.0.1", "require-context.macro": "1.2.2", "reselect": "4.1.7", "resize-observer-polyfill": "1.5.1", "text-security": "3.2.1", "tss-react": "4.5.2", - "unist-util-visit": "5.0.0", "uuid": "9.0.0", - "vite": "6.3.6", + "vite": "6.4.1", "vite-tsconfig-paths": "5.1.4" }, "scripts": { @@ -115,18 +113,20 @@ ] }, "devDependencies": { - "@storybook/addon-actions": "8.6.6", - "@storybook/addon-backgrounds": "8.6.6", - "@storybook/addon-controls": "8.6.6", - "@storybook/addon-links": "8.6.6", - "@storybook/manager-api": "8.6.6", - "@storybook/react": "8.6.6", - "@storybook/react-vite": "8.6.6", - "@storybook/theming": "8.6.6", - "glob": "10.3.10", + "@hystax/eslint-config-ui": "1.0.0", + "@storybook/addon-actions": "8.6.15", + "@storybook/addon-backgrounds": "8.6.15", + "@storybook/addon-controls": "8.6.15", + "@storybook/addon-links": "8.6.15", + "@storybook/manager-api": "8.6.14", + "@storybook/react": "8.6.15", + "@storybook/react-vite": "8.6.15", + "@storybook/theming": "^8.6.14", + "eslint-plugin-react": "7.37.5", + "glob": "13.0.1", "jsdom": "22.1.0", "redux-immutable-state-invariant": "2.1.0", - "storybook": "8.6.6", + "storybook": "^8.6.15", "vitest": "3.2.4" } } diff --git a/ngui/ui/src/api/actionCreators.ts b/ngui/ui/src/api/actionCreators.ts index 5be27a7a0..6d1bd97e4 100644 --- a/ngui/ui/src/api/actionCreators.ts +++ b/ngui/ui/src/api/actionCreators.ts @@ -2,17 +2,17 @@ import { ACCESS_DENIED, API_END, API_ERROR, API_START, API_SUCCESS, RESET_TTL } export const apiStart = (label, hash, entityId) => ({ type: API_START, - payload: { label, hash, entityId } + payload: { label, hash, entityId }, }); export const apiEnd = (label) => ({ type: API_END, - payload: label + payload: label, }); export const accessDenied = (url) => ({ type: ACCESS_DENIED, - payload: url + payload: url, }); export const apiError = (label, response, errorHandlerType) => ({ @@ -20,22 +20,22 @@ export const apiError = (label, response, errorHandlerType) => ({ payload: { label, response, - errorHandlerType - } + errorHandlerType, + }, }); export const apiSuccess = (payload) => ({ type: API_SUCCESS, - payload + payload, }); export const handleSuccess = (type) => (data, label) => ({ type, label, - payload: data + payload: data, }); export const resetTtl = (label) => ({ type: RESET_TTL, - label + label, }); diff --git a/ngui/ui/src/api/auth/actionCreators.ts b/ngui/ui/src/api/auth/actionCreators.ts index a2ea1b187..e99a64fa0 100644 --- a/ngui/ui/src/api/auth/actionCreators.ts +++ b/ngui/ui/src/api/auth/actionCreators.ts @@ -12,7 +12,7 @@ import { SET_ALLOWED_ACTIONS, SIGN_IN, UPDATE_USER, - SET_TOKEN + SET_TOKEN, } from "./actionTypes"; import { onSuccessSignIn } from "./handlers"; @@ -23,7 +23,7 @@ export const getToken = ({ email, password, code }) => url: `${API_URL}/tokens`, onSuccess: handleSuccess(SET_TOKEN), label: GET_TOKEN, - params: { email, password, verification_code: code } + params: { email, password, verification_code: code }, }); export const signIn = (provider, params) => @@ -31,7 +31,7 @@ export const signIn = (provider, params) => url: `${API_URL}/signin`, onSuccess: onSuccessSignIn, label: SIGN_IN, - params: { provider, ...params } + params: { provider, ...params }, }); export const createUser = (name, email, password) => @@ -39,7 +39,7 @@ export const createUser = (name, email, password) => url: `${API_URL}/users`, onSuccess: handleSuccess(CREATE_USER), label: CREATE_USER, - params: { display_name: name, email, password } + params: { display_name: name, email, password }, }); export const updateUser = (userId, params = {}) => @@ -47,7 +47,7 @@ export const updateUser = (userId, params = {}) => url: `${API_URL}/users/${userId}`, method: "PATCH", label: UPDATE_USER, - params: { display_name: params.name, password: params.password } + params: { display_name: params.name, password: params.password }, }); export const getUser = (userId) => @@ -56,7 +56,7 @@ export const getUser = (userId) => method: "GET", onSuccess: handleSuccess(SET_USER), label: GET_USER, - ttl: 30 * MINUTE + ttl: 30 * MINUTE, }); export const getResourceAllowedActions = (params) => @@ -67,7 +67,7 @@ export const getResourceAllowedActions = (params) => label: GET_RESOURCE_ALLOWED_ACTIONS, hash: hashParams(params), params: { cloud_resource: params }, - ttl: 30 * MINUTE + ttl: 30 * MINUTE, }); export const getPoolAllowedActions = (params) => @@ -78,7 +78,7 @@ export const getPoolAllowedActions = (params) => label: GET_POOL_ALLOWED_ACTIONS, hash: hashParams(params), params: { pool: params }, - ttl: 30 * MINUTE + ttl: 30 * MINUTE, }); export const resetPassword = (email) => @@ -86,5 +86,5 @@ export const resetPassword = (email) => url: `${API_URL}/restore_password`, method: "POST", label: RESET_PASSWORD, - params: { email } + params: { email }, }); diff --git a/ngui/ui/src/api/auth/handlers.ts b/ngui/ui/src/api/auth/handlers.ts index 82a283c96..51580cd13 100644 --- a/ngui/ui/src/api/auth/handlers.ts +++ b/ngui/ui/src/api/auth/handlers.ts @@ -3,5 +3,5 @@ import { GET_TOKEN, SET_TOKEN } from "./actionTypes"; export const onSuccessSignIn = (data) => ({ type: SET_TOKEN, payload: data, - label: GET_TOKEN + label: GET_TOKEN, }); diff --git a/ngui/ui/src/api/auth/index.ts b/ngui/ui/src/api/auth/index.ts index b6a237d1f..99da705e2 100644 --- a/ngui/ui/src/api/auth/index.ts +++ b/ngui/ui/src/api/auth/index.ts @@ -7,7 +7,7 @@ import { getResourceAllowedActions, signIn, updateUser, - API_URL + API_URL, } from "./actionCreators"; export { @@ -19,5 +19,5 @@ export { getResourceAllowedActions, signIn, updateUser, - API_URL + API_URL, }; diff --git a/ngui/ui/src/api/auth/reducer.ts b/ngui/ui/src/api/auth/reducer.ts index a536fd920..ec06e5a63 100644 --- a/ngui/ui/src/api/auth/reducer.ts +++ b/ngui/ui/src/api/auth/reducer.ts @@ -16,8 +16,8 @@ const reducer = (state = {}, action) => { userId, userEmail, token, - ...caveats - } + ...caveats, + }, }; } case SET_USER: @@ -25,8 +25,8 @@ const reducer = (state = {}, action) => { ...state, [action.label]: { name: action.payload.display_name, - email: action.payload.email - } + email: action.payload.email, + }, }; case SET_ALLOWED_ACTIONS: { return { @@ -34,9 +34,9 @@ const reducer = (state = {}, action) => { [action.label]: { allowedActions: { ...state[action.label]?.allowedActions, - ...action.payload.allowed_actions - } - } + ...action.payload.allowed_actions, + }, + }, }; } default: diff --git a/ngui/ui/src/api/index.ts b/ngui/ui/src/api/index.ts index fc4cef25f..5bcff9648 100644 --- a/ngui/ui/src/api/index.ts +++ b/ngui/ui/src/api/index.ts @@ -8,7 +8,7 @@ import { getResourceAllowedActions, signIn, updateUser, - API_URL as AUTH_API_URL + API_URL as AUTH_API_URL, } from "./auth"; import { AUTH } from "./auth/reducer"; import { updateUserAssignment, getJiraOrganizationStatus } from "./jira_bus"; @@ -213,7 +213,7 @@ import { getMlDatasetLabels, getMlTaskTags, restorePassword, - verifyEmail + verifyEmail, } from "./restapi"; import { RESTAPI } from "./restapi/reducer"; @@ -431,7 +431,7 @@ export { getMlTaskTags, restorePassword, updateUser, - verifyEmail + verifyEmail, }; export { RESTAPI, AUTH, JIRA_BUS }; diff --git a/ngui/ui/src/api/jira_bus/actionCreators.ts b/ngui/ui/src/api/jira_bus/actionCreators.ts index 9810f25df..3771fae43 100644 --- a/ngui/ui/src/api/jira_bus/actionCreators.ts +++ b/ngui/ui/src/api/jira_bus/actionCreators.ts @@ -11,10 +11,10 @@ export const updateUserAssignment = (secret) => method: "PATCH", label: UPDATE_USER_ASSIGNMENT, params: { - secret + secret, }, // TODO EK: handle error - errorHandlerType: ERROR_HANDLER_TYPE_LOCAL + errorHandlerType: ERROR_HANDLER_TYPE_LOCAL, }); export const getJiraOrganizationStatus = (organizationId) => @@ -24,5 +24,5 @@ export const getJiraOrganizationStatus = (organizationId) => onSuccess: handleSuccess(SET_JIRA_ORGANIZATION_STATUS), ttl: 10 * MINUTE, label: GET_JIRA_ORGANIZATION_STATUS, - hash: hashParams(organizationId) + hash: hashParams(organizationId), }); diff --git a/ngui/ui/src/api/jira_bus/reducer.ts b/ngui/ui/src/api/jira_bus/reducer.ts index ba2456184..c58606362 100644 --- a/ngui/ui/src/api/jira_bus/reducer.ts +++ b/ngui/ui/src/api/jira_bus/reducer.ts @@ -7,7 +7,7 @@ const reducer = (state = {}, action) => { case SET_JIRA_ORGANIZATION_STATUS: return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; default: return state; diff --git a/ngui/ui/src/api/reducer.ts b/ngui/ui/src/api/reducer.ts index 229381587..21aec73cd 100644 --- a/ngui/ui/src/api/reducer.ts +++ b/ngui/ui/src/api/reducer.ts @@ -13,8 +13,8 @@ const reducer = (state = { latestErrorLabel: "", [LATEST_SUCCESS_HANDLED_LABEL]: ...state[action.payload.label], isLoading: true, hash: action.payload.hash, - entityId: action.payload.entityId - } + entityId: action.payload.entityId, + }, }; } case API_END: @@ -22,8 +22,8 @@ const reducer = (state = { latestErrorLabel: "", [LATEST_SUCCESS_HANDLED_LABEL]: ...state, [action.payload]: { ...state[action.payload], - isLoading: false - } + isLoading: false, + }, }; case API_SUCCESS: { const status = state[action.payload.label] || {}; @@ -44,12 +44,12 @@ const reducer = (state = { latestErrorLabel: "", [LATEST_SUCCESS_HANDLED_LABEL]: code: action.payload.code, messageParams: action.payload.messageParams, reason: action.payload.label, - alertSeverity: action.payload.alertSeverity - } - } - } - } - } + alertSeverity: action.payload.alertSeverity, + }, + }, + }, + }, + }, }; if (action.payload.successHandlerType === SUCCESS_HANDLER_TYPE_ALERT) { @@ -67,8 +67,8 @@ const reducer = (state = { latestErrorLabel: "", [LATEST_SUCCESS_HANDLED_LABEL]: ...action.payload.response, config: { url: action.payload.response.config.url, - params: { ...action.payload.response.config.params } - } + params: { ...action.payload.response.config.params }, + }, }; return { ...state, @@ -79,9 +79,9 @@ const reducer = (state = { latestErrorLabel: "", [LATEST_SUCCESS_HANDLED_LABEL]: ...status.status, isError: true, errorHandlerType: action.payload.errorHandlerType, - response - } - } + response, + }, + }, }; } case RESET_TTL: { @@ -89,8 +89,8 @@ const reducer = (state = { latestErrorLabel: "", [LATEST_SUCCESS_HANDLED_LABEL]: ...state, [action.label]: { ...state[action.label], - timestamp: 0 - } + timestamp: 0, + }, }; } default: diff --git a/ngui/ui/src/api/restapi/actionCreators.ts b/ngui/ui/src/api/restapi/actionCreators.ts index 78127ec09..10f3ed1ad 100644 --- a/ngui/ui/src/api/restapi/actionCreators.ts +++ b/ngui/ui/src/api/restapi/actionCreators.ts @@ -304,7 +304,7 @@ import { GET_ML_TASK_TAGS, RESTORE_PASSWORD, VERIFY_EMAIL, - GET_POOL + GET_POOL, } from "./actionTypes"; import { onUpdateOrganizationOption, @@ -339,7 +339,7 @@ import { onUpdatePowerSchedule, onUpdateMlModel, onUpdateMlArtifact, - onSuccessCreateMlLeaderboard + onSuccessCreateMlLeaderboard, } from "./handlers"; export const API_URL = getApiUrl("restapi"); @@ -353,8 +353,8 @@ export const getOrganizationOptions = (organizationId, withValues = false) => hash: hashParams({ organizationId, withValues }), label: GET_ORGANIZATION_OPTIONS, params: { - with_values: withValues - } + with_values: withValues, + }, }); export const getOrganizationOption = (organizationId, name) => @@ -364,7 +364,7 @@ export const getOrganizationOption = (organizationId, name) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ORGANIZATION_OPTION), hash: hashParams({ organizationId, name }), - label: GET_ORGANIZATION_OPTION + label: GET_ORGANIZATION_OPTION, }); export const deleteOrganizationOption = (organizationId, name) => @@ -372,7 +372,7 @@ export const deleteOrganizationOption = (organizationId, name) => url: `${API_URL}/organizations/${organizationId}/options/${name}`, method: "DELETE", label: DELETE_ORGANIZATION_OPTION, - affectedRequests: [GET_ORGANIZATION_OPTIONS] + affectedRequests: [GET_ORGANIZATION_OPTIONS], }); export const updateOrganizationOption = (organizationId, name, value) => @@ -384,8 +384,8 @@ export const updateOrganizationOption = (organizationId, name, value) => label: UPDATE_ORGANIZATION_OPTION, affectedRequests: [GET_ORGANIZATION_OPTIONS], params: { - value: JSON.stringify(value) - } + value: JSON.stringify(value), + }, }); // Creating an option via PATCH is correct @@ -396,8 +396,8 @@ export const createOrganizationOption = (organizationId, name, value) => label: CREATE_ORGANIZATION_OPTION, affectedRequests: [GET_ORGANIZATION_OPTIONS], params: { - value: JSON.stringify(value) - } + value: JSON.stringify(value), + }, }); export const getOrganizationConstraints = (organizationId, params) => @@ -408,7 +408,7 @@ export const getOrganizationConstraints = (organizationId, params) => onSuccess: handleSuccess(SET_ORGANIZATION_CONSTRAINTS), hash: hashParams({ ...params, organizationId }), label: GET_ORGANIZATION_CONSTRAINTS, - params + params, }); export const createOrganizationConstraint = (organizationId, params) => @@ -417,7 +417,7 @@ export const createOrganizationConstraint = (organizationId, params) => method: "POST", label: CREATE_ORGANIZATION_CONSTRAINT, affectedRequests: [GET_ORGANIZATION_CONSTRAINTS], - params + params, }); export const getOrganizationConstraint = (id) => @@ -427,7 +427,7 @@ export const getOrganizationConstraint = (id) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ORGANIZATION_CONSTRAINT), hash: hashParams(id), - label: GET_ORGANIZATION_CONSTRAINT + label: GET_ORGANIZATION_CONSTRAINT, }); export const deleteOrganizationConstraint = (id) => @@ -435,7 +435,7 @@ export const deleteOrganizationConstraint = (id) => url: `${API_URL}/organization_constraints/${id}`, method: "DELETE", label: DELETE_ORGANIZATION_CONSTRAINT, - affectedRequests: [GET_ORGANIZATION_CONSTRAINTS] + affectedRequests: [GET_ORGANIZATION_CONSTRAINTS], }); export const updateOrganizationConstraint = (id, params) => @@ -445,7 +445,7 @@ export const updateOrganizationConstraint = (id, params) => label: UPDATE_ORGANIZATION_CONSTRAINT, affectedRequests: [GET_ORGANIZATION_CONSTRAINTS], onSuccess: onSuccessUpdateAnomaly, - params + params, }); export const uploadCloudReport = (cloudAccountId, file) => @@ -453,11 +453,11 @@ export const uploadCloudReport = (cloudAccountId, file) => url: `${API_URL}/cloud_accounts/${cloudAccountId}/report_upload`, method: "POST", headersOverride: { - "Content-Type": "application/octet-stream" + "Content-Type": "application/octet-stream", }, label: UPLOAD_CLOUD_REPORT, successHandlerType: SUCCESS_HANDLER_TYPE_ALERT, - params: file + params: file, }); export const uploadCodeReport = (organizationId, file) => @@ -465,18 +465,18 @@ export const uploadCodeReport = (organizationId, file) => url: `${API_URL}/organizations/${organizationId}/code_report_upload`, method: "POST", headersOverride: { - "Content-Type": "application/octet-stream" + "Content-Type": "application/octet-stream", }, label: UPLOAD_CODE_REPORT, successHandlerType: SUCCESS_HANDLER_TYPE_ALERT, - params: file + params: file, }); export const submitForAudit = (organizationId) => apiAction({ url: `${API_URL}/organizations/${organizationId}/submit_for_audit`, method: "POST", - label: SUBMIT_FOR_AUDIT + label: SUBMIT_FOR_AUDIT, }); export const updateDataSource = (id, params) => @@ -485,7 +485,7 @@ export const updateDataSource = (id, params) => method: "PATCH", label: UPDATE_DATA_SOURCE, affectedRequests: [GET_DATA_SOURCE_NODES], - params + params, }); export const getPool = (poolId, children = false, details = false) => @@ -498,8 +498,8 @@ export const getPool = (poolId, children = false, details = false) => hash: hashParams({ poolId, children, details }), params: { children, - details - } + details, + }, }); export const createPool = (organizationId, params) => @@ -515,8 +515,8 @@ export const createPool = (organizationId, params) => limit: params.limit, purpose: params.type, auto_extension: params.autoExtension, - default_owner_id: params.defaultOwnerId - } + default_owner_id: params.defaultOwnerId, + }, }); export const updatePool = ({ id, name, limit, defaultOwnerId, type, autoExtension }) => @@ -533,15 +533,15 @@ export const updatePool = ({ id, name, limit, defaultOwnerId, type, autoExtensio GET_ORGANIZATION_EXPENSES, GET_ORGANIZATIONS_OVERVIEW, GET_RESOURCE, - GET_POOL + GET_POOL, ], params: { name, limit, default_owner_id: defaultOwnerId, purpose: type, - auto_extension: autoExtension - } + auto_extension: autoExtension, + }, }); export const deletePool = (id) => @@ -550,7 +550,7 @@ export const deletePool = (id) => method: "DELETE", onSuccess: onSuccessDeletePool(id), affectedRequests: [GET_AVAILABLE_FILTERS], - label: DELETE_POOL + label: DELETE_POOL, }); export const updateOrganization = (organizationId, params) => @@ -558,7 +558,7 @@ export const updateOrganization = (organizationId, params) => url: `${API_URL}/organizations/${organizationId}`, method: "PATCH", label: UPDATE_ORGANIZATION, - params + params, }); export const getOrganizationsOverview = (details = true) => @@ -570,8 +570,8 @@ export const getOrganizationsOverview = (details = true) => label: GET_ORGANIZATIONS_OVERVIEW, hash: hashParams({ details }), params: { - details - } + details, + }, }); export const getPoolExpenses = (poolId, params) => @@ -586,8 +586,8 @@ export const getPoolExpenses = (poolId, params) => params: { start_date: params.startDate, end_date: params.endDate, - filter_by: params.filterBy - } + filter_by: params.filterBy, + }, }); export const getCloudsExpenses = (cloudAccountId, params) => @@ -601,8 +601,8 @@ export const getCloudsExpenses = (cloudAccountId, params) => params: { start_date: params.startDate, end_date: params.endDate, - filter_by: params.filterBy - } + filter_by: params.filterBy, + }, }); export const getEmployeesExpenses = (employeeId, params) => @@ -616,8 +616,8 @@ export const getEmployeesExpenses = (employeeId, params) => params: { start_date: params.startDate, end_date: params.endDate, - filter_by: params.filterBy - } + filter_by: params.filterBy, + }, }); export const createInvitations = (invitations) => @@ -626,7 +626,7 @@ export const createInvitations = (invitations) => method: "POST", label: CREATE_INVITATIONS, successHandlerType: SUCCESS_HANDLER_TYPE_ALERT, - params: { invites: invitations } + params: { invites: invitations }, }); export const getInvitation = (inviteId) => @@ -634,7 +634,7 @@ export const getInvitation = (inviteId) => url: `${API_URL}/invites/${inviteId}`, method: "GET", onSuccess: handleSuccess(SET_INVITATION), - label: GET_INVITATION + label: GET_INVITATION, }); export const splitResources = (organizationId, ids) => @@ -643,7 +643,7 @@ export const splitResources = (organizationId, ids) => method: "POST", onSuccess: handleSuccess(SET_SPLIT_RESOURCES), label: GET_SPLIT_RESOURCES, - params: ids + params: ids, }); export const getAvailablePools = (organizationId, params = {}) => @@ -656,8 +656,8 @@ export const getAvailablePools = (organizationId, params = {}) => hash: hashParams({ ...params, organizationId }), params: { permission: params.permission || ["INFO_ORGANIZATION"], - condition: params.condition - } + condition: params.condition, + }, }); export const getPoolOwners = (poolId: string, excludeMyself = false) => @@ -669,8 +669,8 @@ export const getPoolOwners = (poolId: string, excludeMyself = false) => ttl: MINUTE, hash: hashParams({ poolId, excludeMyself }), params: { - exclude_myself: excludeMyself - } + exclude_myself: excludeMyself, + }, }); export const getAuthorizedEmployees = (organizationId, params = {}) => @@ -684,8 +684,8 @@ export const getAuthorizedEmployees = (organizationId, params = {}) => params: { object_type: params.objectType, object_id: params.objectId, - permission: params.permission || ["INFO_ORGANIZATION"] - } + permission: params.permission || ["INFO_ORGANIZATION"], + }, }); export const getEmployees = (organizationId, roles = false, excludeMyself = false) => @@ -698,8 +698,8 @@ export const getEmployees = (organizationId, roles = false, excludeMyself = fals hash: hashParams({ organizationId, roles }), params: { roles, - exclude_myself: excludeMyself - } + exclude_myself: excludeMyself, + }, }); export const deleteEmployee = (employeeId, { newOwnerId }) => @@ -710,8 +710,8 @@ export const deleteEmployee = (employeeId, { newOwnerId }) => successHandlerType: SUCCESS_HANDLER_TYPE_ALERT, affectedRequests: [GET_EMPLOYEES, GET_AUTHORIZED_EMPLOYEES], params: { - new_owner_id: newOwnerId - } + new_owner_id: newOwnerId, + }, }); export const getOrganizationExpenses = (organizationId) => @@ -721,7 +721,7 @@ export const getOrganizationExpenses = (organizationId) => onSuccess: handleSuccess(SET_ORGANIZATION_EXPENSES), label: GET_ORGANIZATION_EXPENSES, ttl: MINUTE, - hash: hashParams(organizationId) + hash: hashParams(organizationId), }); export const getRawExpenses = (resourceId, params) => @@ -734,8 +734,8 @@ export const getRawExpenses = (resourceId, params) => hash: hashParams({ ...params, resourceId }), params: { start_date: params.startDate, - end_date: params.endDate - } + end_date: params.endDate, + }, }); export const getCleanExpenses = (organizationId, params) => @@ -746,7 +746,7 @@ export const getCleanExpenses = (organizationId, params) => label: GET_CLEAN_EXPENSES, ttl: 5 * MINUTE, hash: hashParams({ organizationId, ...params }), - params + params, }); export const getExpensesSummary = (organizationId, params) => @@ -757,7 +757,7 @@ export const getExpensesSummary = (organizationId, params) => label: GET_EXPENSES_SUMMARY, ttl: 5 * MINUTE, hash: hashParams({ organizationId, ...params }), - params + params, }); export const getAvailableFilters = (organizationId, params) => @@ -768,7 +768,7 @@ export const getAvailableFilters = (organizationId, params) => label: GET_AVAILABLE_FILTERS, ttl: 5 * MINUTE, hash: hashParams({ organizationId, ...params }), - params + params, }); export const getResourceCountBreakdown = (organizationId, params) => @@ -779,7 +779,7 @@ export const getResourceCountBreakdown = (organizationId, params) => label: GET_RESOURCE_COUNT_BREAKDOWN, ttl: 5 * MINUTE, hash: hashParams({ organizationId, ...params }), - params + params, }); export const getTagsBreakdown = (organizationId, params) => @@ -790,7 +790,7 @@ export const getTagsBreakdown = (organizationId, params) => label: GET_TAGS_BREAKDOWN, ttl: 5 * MINUTE, hash: hashParams({ organizationId, ...params }), - params + params, }); export const getRegionExpenses = (organizationId, params) => @@ -803,8 +803,8 @@ export const getRegionExpenses = (organizationId, params) => hash: hashParams({ ...params, organizationId }), params: { start_date: params.startDate, - end_date: params.endDate - } + end_date: params.endDate, + }, }); export const getTrafficExpenses = (organizationId, params) => @@ -818,8 +818,8 @@ export const getTrafficExpenses = (organizationId, params) => params: { start_date: params.startDate, end_date: params.endDate, - _id: params.resourceId - } + _id: params.resourceId, + }, }); export const getAssignmentRules = (organizationId, params = {}) => @@ -832,8 +832,8 @@ export const getAssignmentRules = (organizationId, params = {}) => hash: hashParams({ ...params, organizationId }), params: { pool_id: params.poolId, - owner_id: params.ownerId - } + owner_id: params.ownerId, + }, }); export const getK8sRightsizing = (organizationId, params = {}) => @@ -846,8 +846,8 @@ export const getK8sRightsizing = (organizationId, params = {}) => hash: hashParams({ ...params, organizationId }), params: { start_date: params.startDate, - end_date: params.endDate - } + end_date: params.endDate, + }, }); export const updateAssignmentRulePriority = (assignmentRuleId, action) => @@ -857,8 +857,8 @@ export const updateAssignmentRulePriority = (assignmentRuleId, action) => onSuccess: onSuccessUpdateAssignmentRulePriority, label: UPDATE_ASSIGNMENT_RULE_PRIORITY, params: { - action - } + action, + }, }); export const getAssignmentRule = (assignmentRuleId) => @@ -866,7 +866,7 @@ export const getAssignmentRule = (assignmentRuleId) => url: `${API_URL}/rules/${assignmentRuleId}`, method: "GET", onSuccess: handleSuccess(SET_ASSIGNMENT_RULE), - label: GET_ASSIGNMENT_RULE + label: GET_ASSIGNMENT_RULE, }); export const createAssignmentRule = (organizationId, params = {}) => @@ -882,8 +882,8 @@ export const createAssignmentRule = (organizationId, params = {}) => pool_id: params.poolId, owner_id: params.ownerId, operator: params.operator, - conditions: params.conditions - } + conditions: params.conditions, + }, }); export const updateAssignmentRule = (assignmentRuleId, params = {}) => @@ -898,8 +898,8 @@ export const updateAssignmentRule = (assignmentRuleId, params = {}) => operator: params.operator, conditions: params.conditions, pool_id: params.poolId, - owner_id: params.ownerId - } + owner_id: params.ownerId, + }, }); export const deleteAssignmentRule = (ruleId) => @@ -907,7 +907,7 @@ export const deleteAssignmentRule = (ruleId) => url: `${API_URL}/rules/${ruleId}`, method: "DELETE", label: DELETE_ASSIGNMENT_RULE, - affectedRequests: [GET_ASSIGNMENT_RULES] + affectedRequests: [GET_ASSIGNMENT_RULES], }); export const getResource = (resourceId, details = false) => @@ -919,8 +919,8 @@ export const getResource = (resourceId, details = false) => ttl: 5 * MINUTE, hash: hashParams({ resourceId, details }), params: { - details - } + details, + }, }); export const getPoolPolicies = (poolId) => @@ -930,7 +930,7 @@ export const getPoolPolicies = (poolId) => onSuccess: handleSuccess(SET_POOL_POLICIES), label: GET_POOL_POLICIES, ttl: MINUTE, - hash: hashParams({ poolId }) + hash: hashParams({ poolId }), }); const createPoolPolicyBase = ({ poolId, params, onSuccess, label, affectedRequests = [] }) => @@ -942,9 +942,9 @@ const createPoolPolicyBase = ({ poolId, params, onSuccess, label, affectedReques params: { active: true, limit: params.limit, - type: params.type + type: params.type, }, - affectedRequests: [GET_GLOBAL_POOL_POLICIES, ...affectedRequests] + affectedRequests: [GET_GLOBAL_POOL_POLICIES, ...affectedRequests], }); export const createGlobalPoolPolicy = (poolId, params) => @@ -952,7 +952,7 @@ export const createGlobalPoolPolicy = (poolId, params) => poolId, params, label: CREATE_GLOBAL_POOL_POLICY, - affectedRequests: [GET_POOL_POLICIES] + affectedRequests: [GET_POOL_POLICIES], }); export const createPoolPolicy = (poolId, params) => @@ -961,7 +961,7 @@ export const createPoolPolicy = (poolId, params) => params, onSuccess: onSuccessCreatePoolPolicy, label: CREATE_POOL_POLICY, - affectedRequests: [GET_POOL] + affectedRequests: [GET_POOL], }); export const createExpensesExport = (poolId) => @@ -970,7 +970,7 @@ export const createExpensesExport = (poolId) => method: "POST", onSuccess: onSuccessExportLinkChange, label: CREATE_POOL_EXPENSES_EXPORT, - affectedRequests: [GET_POOL] + affectedRequests: [GET_POOL], }); export const deleteExpensesExport = (poolId) => @@ -979,7 +979,7 @@ export const deleteExpensesExport = (poolId) => method: "DELETE", onSuccess: onSuccessExportLinkChange, label: DELETE_POOL_EXPENSES_EXPORT, - affectedRequests: [GET_POOL] + affectedRequests: [GET_POOL], }); const updatePoolPolicyLimitBase = ({ @@ -988,7 +988,7 @@ const updatePoolPolicyLimitBase = ({ onSuccess, label, affectedRequests = [], - allowMultipleRequests = false + allowMultipleRequests = false, }) => apiAction({ url: `${API_URL}/policies/${policyId}`, @@ -998,7 +998,7 @@ const updatePoolPolicyLimitBase = ({ entityId: policyId, affectedRequests: [GET_RESOURCE, ...affectedRequests], params, - allowMultipleRequests + allowMultipleRequests, }); export const updatePoolPolicyLimit = (policyId, limit) => @@ -1007,7 +1007,7 @@ export const updatePoolPolicyLimit = (policyId, limit) => params: { limit }, onSuccess: onSuccessCreatePoolPolicy, label: UPDATE_POOL_POLICY_LIMIT, - affectedRequests: [GET_GLOBAL_POOL_POLICIES, GET_POOL] + affectedRequests: [GET_GLOBAL_POOL_POLICIES, GET_POOL], }); export const updateGlobalPoolPolicyLimit = (policyId, limit) => @@ -1017,7 +1017,7 @@ export const updateGlobalPoolPolicyLimit = (policyId, limit) => onSuccess: onSuccessUpdateGlobalPoolPolicyLimit, label: UPDATE_GLOBAL_POOL_POLICY_LIMIT, allowMultipleRequests: true, - affectedRequests: [GET_POOL_POLICIES] + affectedRequests: [GET_POOL_POLICIES], }); const updatePoolPolicyActivityBase = ({ @@ -1026,7 +1026,7 @@ const updatePoolPolicyActivityBase = ({ affectedRequests = [], onSuccess, label, - allowMultipleRequests = false + allowMultipleRequests = false, }) => apiAction({ url: `${API_URL}/policies/${policyId}`, @@ -1036,7 +1036,7 @@ const updatePoolPolicyActivityBase = ({ entityId: policyId, affectedRequests: [GET_RESOURCE, GET_POOL, ...affectedRequests], params, - allowMultipleRequests + allowMultipleRequests, }); export const updatePoolPolicyActivity = (policyId, active) => @@ -1045,7 +1045,7 @@ export const updatePoolPolicyActivity = (policyId, active) => params: { active }, affectedRequests: [GET_GLOBAL_POOL_POLICIES], onSuccess: onSuccessCreatePoolPolicy, - label: UPDATE_POOL_POLICY_ACTIVITY + label: UPDATE_POOL_POLICY_ACTIVITY, }); export const updateGlobalPoolPolicyActivity = (policyId, active) => @@ -1055,7 +1055,7 @@ export const updateGlobalPoolPolicyActivity = (policyId, active) => onSuccess: onSuccessUpdateGlobalPoolPolicyActivity, label: UPDATE_GLOBAL_POOL_POLICY_ACTIVITY, affectedRequests: [GET_POOL_POLICIES], - allowMultipleRequests: true + allowMultipleRequests: true, }); export const createResourceConstraint = @@ -1068,8 +1068,8 @@ export const createResourceConstraint = onSuccess: onSuccessCreateResourceConstraint, params: { limit: params.limit, - type: params.type - } + type: params.type, + }, }); export const createTotalExpenseLimitResourceConstraint = (resourceId, limit) => @@ -1080,9 +1080,9 @@ export const createTotalExpenseLimitResourceConstraint = (resourceId, limit) => onSuccess: onSuccessCreateResourceConstraint, params: { limit, - type: TOTAL_EXPENSE_LIMIT + type: TOTAL_EXPENSE_LIMIT, }, - affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS] + affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS], }); export const createDailyExpenseLimitResourceConstraint = (resourceId, limit) => @@ -1093,9 +1093,9 @@ export const createDailyExpenseLimitResourceConstraint = (resourceId, limit) => onSuccess: onSuccessCreateResourceConstraint, params: { limit, - type: DAILY_EXPENSE_LIMIT + type: DAILY_EXPENSE_LIMIT, }, - affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS] + affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS], }); export const createTtlResourceConstraint = (resourceId, limit) => @@ -1106,9 +1106,9 @@ export const createTtlResourceConstraint = (resourceId, limit) => onSuccess: onSuccessCreateResourceConstraint, params: { limit, - type: TTL + type: TTL, }, - affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS] + affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS], }); export const updateGlobalResourceConstraintLimit = (constraintId, limit) => @@ -1118,10 +1118,10 @@ export const updateGlobalResourceConstraintLimit = (constraintId, limit) => label: UPDATE_GLOBAL_RESOURCE_CONSTRAINT_LIMIT, onSuccess: onSuccessUpdateGlobalResourceConstraintLimit, params: { - limit + limit, }, affectedRequests: [GET_RESOURCE], - allowMultipleRequests: true + allowMultipleRequests: true, }); const updateResourceConstraint = (label) => (constraintId, limit) => @@ -1131,9 +1131,9 @@ const updateResourceConstraint = (label) => (constraintId, limit) => label, onSuccess: onSuccessCreateResourceConstraint, params: { - limit + limit, }, - affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS] + affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS], }); export const updateTtlResourceConstraint = updateResourceConstraint(UPDATE_TTL_RESOURCE_CONSTRAINT); @@ -1153,21 +1153,21 @@ const deleteResourceConstraintBase = ({ constraintId, onSuccess, label, affected onSuccess, entityId: constraintId, label, - affectedRequests + affectedRequests, }); export const deleteResourceConstraint = (constraintId) => deleteResourceConstraintBase({ constraintId, onSuccess: () => onSuccessDeleteResourceConstraint(constraintId), - label: DELETE_RESOURCE_CONSTRAINT + label: DELETE_RESOURCE_CONSTRAINT, }); export const deleteGlobalResourceConstraint = (constraintId) => deleteResourceConstraintBase({ constraintId, label: DELETE_GLOBAL_RESOURCE_CONSTRAINT, - affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS] + affectedRequests: [GET_GLOBAL_RESOURCE_CONSTRAINTS], }); export const getResourceLimitHits = (resourceId) => @@ -1177,7 +1177,7 @@ export const getResourceLimitHits = (resourceId) => onSuccess: handleSuccess(SET_RESOURCE_LIMIT_HITS), label: GET_RESOURCE_LIMIT_HITS, ttl: MINUTE, - hash: hashParams({ resourceId }) + hash: hashParams({ resourceId }), }); export const getOptimizationDetails = (organizationId, params = {}) => @@ -1192,8 +1192,8 @@ export const getOptimizationDetails = (organizationId, params = {}) => type: params.type, limit: params.limit, status: params.status, - cloud_account_id: params.cloudAccountIds - } + cloud_account_id: params.cloudAccountIds, + }, }); export const getOptimizationsOverview = (organizationId, cloudAccountIds = []) => @@ -1207,8 +1207,8 @@ export const getOptimizationsOverview = (organizationId, cloudAccountIds = []) = params: { limit: 3, overview: true, - cloud_account_id: cloudAccountIds - } + cloud_account_id: cloudAccountIds, + }, }); export const getOptimizationOptions = (organizationId, recommendationType) => @@ -1217,11 +1217,11 @@ export const getOptimizationOptions = (organizationId, recommendationType) => method: "GET", hash: hashParams({ organizationId, - recommendationType + recommendationType, }), ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_OPTIMIZATION_OPTIONS), - label: GET_OPTIMIZATION_OPTIONS + label: GET_OPTIMIZATION_OPTIONS, }); export const updateOptimizationOptions = (settingType, pathParams, params) => { @@ -1233,10 +1233,10 @@ export const updateOptimizationOptions = (settingType, pathParams, params) => { affectedRequests: [GET_OPTIMIZATIONS, GET_OPTIMIZATIONS_OVERVIEW, GET_ORGANIZATION_OPTIONS], successHandlerType: SUCCESS_HANDLER_TYPE_ALERT, successHandlerPayload: { - settingType + settingType, }, label: UPDATE_OPTIMIZATION_OPTIONS, - params + params, }); }; @@ -1248,8 +1248,8 @@ export const updateOptimizations = (checklistId, params) => onSuccess: onSuccessUpdateOptimizations, affectedRequests: [GET_OPTIMIZATIONS_OVERVIEW], params: { - next_run: params.nextRun - } + next_run: params.nextRun, + }, }); export const getLiveDemo = () => @@ -1258,7 +1258,7 @@ export const getLiveDemo = () => method: "GET", onSuccess: handleSuccess(SET_LIVE_DEMO), label: GET_LIVE_DEMO, - errorHandlerType: ERROR_HANDLER_TYPE_LOCAL + errorHandlerType: ERROR_HANDLER_TYPE_LOCAL, }); export const createLiveDemo = ({ email, subscribeToNewsletter }) => @@ -1270,8 +1270,8 @@ export const createLiveDemo = ({ email, subscribeToNewsletter }) => errorHandlerType: ERROR_HANDLER_TYPE_LOCAL, params: { email, - subscribe: subscribeToNewsletter - } + subscribe: subscribeToNewsletter, + }, }); export const getTtlAnalysis = (poolId, params) => @@ -1283,8 +1283,8 @@ export const getTtlAnalysis = (poolId, params) => params: { start_date: params.startDate, end_date: params.endDate, - ttl: params.ttl - } + ttl: params.ttl, + }, }); export const applyAssignmentRules = (organizationId, params) => @@ -1295,8 +1295,8 @@ export const applyAssignmentRules = (organizationId, params) => affectedRequests: [GET_CLEAN_EXPENSES], params: { pool_id: params.poolId, - include_children: params.includeChildren - } + include_children: params.includeChildren, + }, }); export const updateResourceVisibility = (resourceId, params = {}) => @@ -1309,12 +1309,12 @@ export const updateResourceVisibility = (resourceId, params = {}) => GET_ML_OPTIMIZATION_DETAILS, GET_ML_TASK_RECOMMENDATIONS, GET_OPTIMIZATION_DETAILS, - GET_OPTIMIZATIONS_OVERVIEW + GET_OPTIMIZATIONS_OVERVIEW, ], params: { action: params.action, - recommendation: params.recommendation - } + recommendation: params.recommendation, + }, }); export const getFinOpsChecklist = (organizationId) => @@ -1324,7 +1324,7 @@ export const getFinOpsChecklist = (organizationId) => onSuccess: handleSuccess(SET_FINOPS_CHECKLIST), ttl: HALF_HOUR, hash: hashParams(organizationId), - label: GET_FINOPS_CHECKLIST + label: GET_FINOPS_CHECKLIST, }); export const updateFinOpsChecklist = (organizationId, value) => @@ -1334,8 +1334,8 @@ export const updateFinOpsChecklist = (organizationId, value) => label: UPDATE_FINOPS_CHECKLIST, onSuccess: onFinOpsChecklist, params: { - value: JSON.stringify(value) - } + value: JSON.stringify(value), + }, }); export const getRecommendationsDownloadLimit = (organizationId) => @@ -1345,7 +1345,7 @@ export const getRecommendationsDownloadLimit = (organizationId) => onSuccess: handleSuccess(SET_RECOMMENDATIONS_DOWNLOAD_OPTIONS), ttl: HOUR, hash: hashParams(organizationId), - label: GET_RECOMMENDATIONS_DOWNLOAD_OPTIONS + label: GET_RECOMMENDATIONS_DOWNLOAD_OPTIONS, }); export const getClusterTypes = (organizationId) => @@ -1355,7 +1355,7 @@ export const getClusterTypes = (organizationId) => onSuccess: handleSuccess(SET_CLUSTER_TYPES), label: GET_CLUSTER_TYPES, ttl: MINUTE, - hash: hashParams(organizationId) + hash: hashParams(organizationId), }); export const createClusterType = (organizationId, params = {}) => @@ -1366,8 +1366,8 @@ export const createClusterType = (organizationId, params = {}) => affectedRequests: [GET_CLUSTER_TYPES, GET_CLEAN_EXPENSES, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN], params: { name: params.name, - tag_key: params.tagKey - } + tag_key: params.tagKey, + }, }); export const deleteClusterType = (clusterTypeId) => @@ -1375,7 +1375,7 @@ export const deleteClusterType = (clusterTypeId) => url: `${API_URL}/cluster_types/${clusterTypeId}`, method: "DELETE", label: DELETE_CLUSTER_TYPE, - affectedRequests: [GET_CLUSTER_TYPES, GET_CLEAN_EXPENSES, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN] + affectedRequests: [GET_CLUSTER_TYPES, GET_CLEAN_EXPENSES, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN], }); export const updateClusterTypePriority = (clusterTypeId, action) => @@ -1385,8 +1385,8 @@ export const updateClusterTypePriority = (clusterTypeId, action) => label: UPDATE_CLUSTER_TYPE_PRIORITY, affectedRequests: [GET_CLUSTER_TYPES, GET_CLEAN_EXPENSES, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN], params: { - action - } + action, + }, }); export const applyClusterTypes = (organizationId) => @@ -1395,7 +1395,7 @@ export const applyClusterTypes = (organizationId) => method: "POST", label: APPLY_CLUSTER_TYPES, affectedRequests: [GET_CLEAN_EXPENSES, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN, GET_AVAILABLE_FILTERS], - params: {} + params: {}, }); export const getEnvironments = (organizationId) => @@ -1405,7 +1405,7 @@ export const getEnvironments = (organizationId) => onSuccess: handleSuccess(SET_ENVIRONMENTS), label: GET_ENVIRONMENTS, ttl: MINUTE, - hash: hashParams(organizationId) + hash: hashParams(organizationId), }); export const createEnvironment = (organizationId, params = {}) => @@ -1419,8 +1419,8 @@ export const createEnvironment = (organizationId, params = {}) => resource_type: params.resourceType, tags: {}, env_properties: params.properties, - ssh_only: params.requireSshKey - } + ssh_only: params.requireSshKey, + }, }); export const deleteEnvironment = (environmentId) => @@ -1433,8 +1433,8 @@ export const deleteEnvironment = (environmentId) => GET_CLEAN_EXPENSES, GET_EXPENSES_SUMMARY, GET_EXPENSES_DAILY_BREAKDOWN, - GET_RESOURCE_COUNT_BREAKDOWN - ] + GET_RESOURCE_COUNT_BREAKDOWN, + ], }); export const updateEnvironmentActivity = (environmentId, isActive) => @@ -1448,9 +1448,9 @@ export const updateEnvironmentActivity = (environmentId, isActive) => GET_CLEAN_EXPENSES, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN, - GET_RESOURCE + GET_RESOURCE, ], - params: { active: isActive } + params: { active: isActive }, }); export const updateEnvironmentSshRequirement = (environmentId, requireSshKey) => @@ -1461,7 +1461,7 @@ export const updateEnvironmentSshRequirement = (environmentId, requireSshKey) => onSuccess: onSuccessUpdateEnvironmentSshRequirement, entityId: environmentId, affectedRequests: [GET_ENVIRONMENTS, GET_CLEAN_EXPENSES, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN], - params: { ssh_only: requireSshKey } + params: { ssh_only: requireSshKey }, }); export const updateEnvironmentProperty = (environmentId, { propertyName, propertyValue }) => @@ -1473,7 +1473,7 @@ export const updateEnvironmentProperty = (environmentId, { propertyName, propert label: UPDATE_ENVIRONMENT_PROPERTY, entityId: propertyName, affectedRequests: [GET_ENVIRONMENTS], - params: { env_properties: { [propertyName]: propertyValue } } + params: { env_properties: { [propertyName]: propertyValue } }, }); export const getDataSourceNodes = (cloudAccountId) => @@ -1483,7 +1483,7 @@ export const getDataSourceNodes = (cloudAccountId) => label: GET_DATA_SOURCE_NODES, ttl: MINUTE, hash: hashParams(cloudAccountId), - onSuccess: handleSuccess(SET_DATA_SOURCE_NODES) + onSuccess: handleSuccess(SET_DATA_SOURCE_NODES), }); export const getResourceMetrics = (resourceId, params = {}) => @@ -1496,8 +1496,8 @@ export const getResourceMetrics = (resourceId, params = {}) => onSuccess: handleSuccess(SET_RESOURCE_METRICS), params: { start_date: params.startDate, - end_date: params.endDate - } + end_date: params.endDate, + }, }); export const getResourceCostModel = (resourceId) => @@ -1507,7 +1507,7 @@ export const getResourceCostModel = (resourceId) => label: GET_RESOURCE_COST_MODEL, ttl: MINUTE, hash: hashParams(resourceId), - onSuccess: handleSuccess(SET_RESOURCE_COST_MODEL) + onSuccess: handleSuccess(SET_RESOURCE_COST_MODEL), }); export const updateResourceCostModel = (resourceId, params) => @@ -1517,8 +1517,8 @@ export const updateResourceCostModel = (resourceId, params) => label: UPDATE_RESOURCE_COST_MODEL, affectedRequests: [GET_RESOURCE_COST_MODEL], params: { - value: { hourly_cost: params.hourlyPrice } - } + value: { hourly_cost: params.hourlyPrice }, + }, }); export const getDataSourceSkus = (dataSourceId) => @@ -1530,8 +1530,8 @@ export const getDataSourceSkus = (dataSourceId) => hash: hashParams(dataSourceId), onSuccess: handleSuccess(SET_DATASOURCE_SKUS), params: { - details: true - } + details: true, + }, }); export const updateDataSourceSku = (dataSourceId, value) => @@ -1541,8 +1541,8 @@ export const updateDataSourceSku = (dataSourceId, value) => label: UPDATE_DATASOURCE_SKU, affectedRequests: [GET_DATASOURCE_SKUS], params: { - value - } + value, + }, }); export const markResourcesAsEnvironments = (organizationId, resourceIds) => @@ -1553,8 +1553,8 @@ export const markResourcesAsEnvironments = (organizationId, resourceIds) => successHandlerType: SUCCESS_HANDLER_TYPE_ALERT, affectedRequests: [GET_CLEAN_EXPENSES, GET_ENVIRONMENTS, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN], params: { - resource_ids: resourceIds - } + resource_ids: resourceIds, + }, }); export const getEnvironmentBookings = (resourceId) => @@ -1564,7 +1564,7 @@ export const getEnvironmentBookings = (resourceId) => label: GET_ENVIRONMENT_BOOKINGS, ttl: 5 * MINUTE, hash: hashParams(resourceId), - onSuccess: handleSuccess(SET_ENVIRONMENT_BOOKINGS) + onSuccess: handleSuccess(SET_ENVIRONMENT_BOOKINGS), }); export const updateBooking = (bookingId, { releasedAt }) => @@ -1574,8 +1574,8 @@ export const updateBooking = (bookingId, { releasedAt }) => label: UPDATE_BOOKING, affectedRequests: [GET_CLEAN_EXPENSES, GET_ENVIRONMENTS, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN], params: { - released_at: releasedAt - } + released_at: releasedAt, + }, }); export const deleteBooking = (bookingId) => @@ -1583,7 +1583,7 @@ export const deleteBooking = (bookingId) => url: `${API_URL}/shareable/${bookingId}`, method: "DELETE", label: DELETE_BOOKING, - affectedRequests: [GET_CLEAN_EXPENSES, GET_ENVIRONMENTS, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN] + affectedRequests: [GET_CLEAN_EXPENSES, GET_ENVIRONMENTS, GET_EXPENSES_DAILY_BREAKDOWN, GET_RESOURCE_COUNT_BREAKDOWN], }); // More params supported, add if required, see Swagger @@ -1597,8 +1597,8 @@ export const getWebhooks = (organizationId, params) => onSuccess: handleSuccess(SET_WEBHOOKS), params: { object_id: params.objectId, - object_type: params.objectType - } + object_type: params.objectType, + }, }); // More params supported, add if required, see Swagger @@ -1611,8 +1611,8 @@ export const createWebhook = (organizationId, params) => object_type: params.objectType, object_id: params.objectId, action: params.action, - url: params.url - } + url: params.url, + }, }); // More params supported, add if required, see Swagger @@ -1624,8 +1624,8 @@ export const updateWebhook = (webhookId, params) => onSuccess: onSuccessUpdateWebhook, params: { url: params.url, - active: params.active - } + active: params.active, + }, }); export const deleteWebhook = (webhookId) => @@ -1633,7 +1633,7 @@ export const deleteWebhook = (webhookId) => url: `${API_URL}/webhooks/${webhookId}`, method: "DELETE", label: DELETE_WEBHOOK, - onSuccess: onSuccessDeleteWebhook(webhookId) + onSuccess: onSuccessDeleteWebhook(webhookId), }); export const getSshKeys = (employeeId) => @@ -1643,7 +1643,7 @@ export const getSshKeys = (employeeId) => label: GET_SSH_KEYS, ttl: 5 * MINUTE, hash: hashParams(employeeId), - onSuccess: handleSuccess(SET_SSH_KEYS) + onSuccess: handleSuccess(SET_SSH_KEYS), }); export const createSshKey = (employeeId, params) => @@ -1652,9 +1652,9 @@ export const createSshKey = (employeeId, params) => label: CREATE_SSH_KEY, params: { name: params.name, - key: params.key + key: params.key, }, - onSuccess: onSuccessCreateSshKey + onSuccess: onSuccessCreateSshKey, }); export const updateSshKey = (sshKeyId, params) => @@ -1665,9 +1665,9 @@ export const updateSshKey = (sshKeyId, params) => affectedRequests: [GET_EMPLOYEES], params: { name: params.name, - default: params.default + default: params.default, }, - onSuccess: onSuccessUpdateSshKey + onSuccess: onSuccessUpdateSshKey, }); export const deleteSshKey = (sshKeyId) => @@ -1675,7 +1675,7 @@ export const deleteSshKey = (sshKeyId) => url: `${API_URL}/ssh_keys/${sshKeyId}`, method: "DELETE", label: DELETE_SSH_KEY, - affectedRequests: [GET_SSH_KEYS] + affectedRequests: [GET_SSH_KEYS], }); export const updateResource = (resourceId, { shareable }) => @@ -1685,8 +1685,8 @@ export const updateResource = (resourceId, { shareable }) => label: UPDATE_RESOURCE, affectedRequests: [GET_RESOURCE, GET_ENVIRONMENTS], params: { - shareable - } + shareable, + }, }); export const bookEnvironment = (organizationId, params = {}) => @@ -1700,8 +1700,8 @@ export const bookEnvironment = (organizationId, params = {}) => acquired_by_id: params.bookedBy, acquired_since: params.bookSince, released_at: params.bookUntil, - ssh_key_id: params.sshKeyId - } + ssh_key_id: params.sshKeyId, + }, }); export const getOrganizationCalendar = (organizationId) => @@ -1711,7 +1711,7 @@ export const getOrganizationCalendar = (organizationId) => label: GET_ORGANIZATION_CALENDAR, ttl: MINUTE * 10, hash: hashParams(organizationId), - onSuccess: handleSuccess(SET_ORGANIZATION_CALENDAR) + onSuccess: handleSuccess(SET_ORGANIZATION_CALENDAR), }); export const calendarSynchronization = (organizationId, calendarId) => @@ -1722,8 +1722,8 @@ export const calendarSynchronization = (organizationId, calendarId) => affectedRequests: [GET_ORGANIZATION_CALENDAR], params: { organization_id: organizationId, - calendar_id: calendarId - } + calendar_id: calendarId, + }, }); export const deleteCalendarSynchronization = (id) => @@ -1731,7 +1731,7 @@ export const deleteCalendarSynchronization = (id) => url: `${API_URL}/calendar_synchronizations/${id}`, method: "DELETE", label: DELETE_CALENDAR_SYNCHRONIZATION, - affectedRequests: [GET_ORGANIZATION_CALENDAR] + affectedRequests: [GET_ORGANIZATION_CALENDAR], }); export const getDailyExpensesBreakdown = (organizationId, params) => @@ -1742,7 +1742,7 @@ export const getDailyExpensesBreakdown = (organizationId, params) => label: GET_EXPENSES_DAILY_BREAKDOWN, ttl: 5 * MINUTE, hash: hashParams({ organizationId, ...params }), - params + params, }); export const getGlobalPoolPolicies = (organizationId, params) => @@ -1753,7 +1753,7 @@ export const getGlobalPoolPolicies = (organizationId, params) => ttl: 5 * MINUTE, hash: hashParams({ organizationId, ...params }), onSuccess: handleSuccess(SET_GLOBAL_POOL_POLICIES), - params + params, }); export const getGlobalResourceConstraints = (organizationId, params) => @@ -1764,7 +1764,7 @@ export const getGlobalResourceConstraints = (organizationId, params) => ttl: 5 * MINUTE, hash: hashParams({ organizationId, ...params }), onSuccess: handleSuccess(SET_GLOBAL_RESOURCE_CONSTRAINTS), - params + params, }); export const getArchivedOptimizationsCount = (organizationId, params) => @@ -1777,8 +1777,8 @@ export const getArchivedOptimizationsCount = (organizationId, params) => onSuccess: handleSuccess(SET_ARCHIVED_OPTIMIZATIONS_COUNT), params: { start_date: params.startDate, - end_date: params.endDate - } + end_date: params.endDate, + }, }); export const getArchivedOptimizationsBreakdown = (organizationId, params) => @@ -1791,8 +1791,8 @@ export const getArchivedOptimizationsBreakdown = (organizationId, params) => onSuccess: handleSuccess(SET_ARCHIVED_OPTIMIZATIONS_BREAKDOWN), params: { start_date: params.startDate, - end_date: params.endDate - } + end_date: params.endDate, + }, }); export const getArchivedOptimizationDetails = (organizationId, params) => @@ -1807,8 +1807,8 @@ export const getArchivedOptimizationDetails = (organizationId, params) => archived_at: params.archivedAt, reason: params.reason, type: params.type, - limit: params.limit - } + limit: params.limit, + }, }); export const getMlTasks = (organizationId) => @@ -1818,7 +1818,7 @@ export const getMlTasks = (organizationId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_TASKS), hash: hashParams(organizationId), - label: GET_ML_TASKS + label: GET_ML_TASKS, }); export const getMlLeaderboardTemplate = (organizationId, taskId) => @@ -1828,7 +1828,7 @@ export const getMlLeaderboardTemplate = (organizationId, taskId) => ttl: 30 * MINUTE, onSuccess: handleSuccess(SET_ML_LEADERBOARD_TEMPLATE), hash: hashParams({ organizationId, taskId }), - label: GET_ML_LEADERBOARD_TEMPLATE + label: GET_ML_LEADERBOARD_TEMPLATE, }); export const createMlLeaderboardTemplate = (organizationId, taskId, params) => @@ -1843,8 +1843,8 @@ export const createMlLeaderboardTemplate = (organizationId, taskId, params) => grouping_tags: params.groupingTags, other_metrics: params.otherMetrics, primary_metric: params.primaryMetric, - dataset_coverage_rules: params.datasetCoverageRules - } + dataset_coverage_rules: params.datasetCoverageRules, + }, }); export const updateMlLeaderboardTemplate = (organizationId, taskId, params) => @@ -1859,8 +1859,8 @@ export const updateMlLeaderboardTemplate = (organizationId, taskId, params) => grouping_tags: params.groupingTags, other_metrics: params.otherMetrics, primary_metric: params.primaryMetric, - dataset_coverage_rules: params.datasetCoverageRules - } + dataset_coverage_rules: params.datasetCoverageRules, + }, }); export const getMlLeaderboards = (organizationId, leaderboardTemplateId) => @@ -1870,7 +1870,7 @@ export const getMlLeaderboards = (organizationId, leaderboardTemplateId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_LEADERBOARDS), hash: hashParams({ organizationId, leaderboardTemplateId }), - label: GET_ML_LEADERBOARDS + label: GET_ML_LEADERBOARDS, }); export const getMlLeaderboard = (organizationId, leaderboardId) => @@ -1880,7 +1880,7 @@ export const getMlLeaderboard = (organizationId, leaderboardId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_LEADERBOARD), hash: hashParams({ organizationId, leaderboardId }), - label: GET_ML_LEADERBOARD + label: GET_ML_LEADERBOARD, }); export const createMlLeaderboard = (organizationId, leaderboardTemplateId, params) => @@ -1897,8 +1897,8 @@ export const createMlLeaderboard = (organizationId, leaderboardTemplateId, param grouping_tags: params.groupingTags, other_metrics: params.otherMetrics, primary_metric: params.primaryMetric, - dataset_coverage_rules: params.datasetCoverageRules - } + dataset_coverage_rules: params.datasetCoverageRules, + }, }); export const updateMlLeaderboard = (organizationId, leaderboardId, params) => @@ -1915,8 +1915,8 @@ export const updateMlLeaderboard = (organizationId, leaderboardId, params) => grouping_tags: params.groupingTags, other_metrics: params.otherMetrics, primary_metric: params.primaryMetric, - dataset_coverage_rules: params.datasetCoverageRules - } + dataset_coverage_rules: params.datasetCoverageRules, + }, }); export const deleteMlLeaderboard = (organizationId, leaderboardId) => @@ -1924,7 +1924,7 @@ export const deleteMlLeaderboard = (organizationId, leaderboardId) => url: `${API_URL}/organizations/${organizationId}/leaderboards/${leaderboardId}`, method: "DELETE", label: DELETE_ML_LEADERBOARD, - affectedRequests: [GET_ML_LEADERBOARD_TEMPLATE] + affectedRequests: [GET_ML_LEADERBOARD_TEMPLATE], }); export const getMlLeaderboardCandidates = (organizationId, leaderboardId) => @@ -1934,7 +1934,7 @@ export const getMlLeaderboardCandidates = (organizationId, leaderboardId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_LEADERBOARD_CANDIDATES), hash: hashParams({ organizationId, leaderboardId }), - label: GET_ML_LEADERBOARD_CANDIDATES + label: GET_ML_LEADERBOARD_CANDIDATES, }); export const getMlDatasets = (organizationId) => @@ -1944,7 +1944,7 @@ export const getMlDatasets = (organizationId) => ttl: 30 * MINUTE, onSuccess: handleSuccess(SET_ML_DATASETS), hash: hashParams(organizationId), - label: GET_ML_DATASETS + label: GET_ML_DATASETS, }); export const getMlDataset = (organizationId, datasetId) => @@ -1954,7 +1954,7 @@ export const getMlDataset = (organizationId, datasetId) => ttl: 30 * MINUTE, onSuccess: handleSuccess(SET_ML_DATASET), hash: hashParams(organizationId, datasetId), - label: GET_ML_DATASET + label: GET_ML_DATASET, }); export const getMlDatasetLabels = (organizationId) => @@ -1964,7 +1964,7 @@ export const getMlDatasetLabels = (organizationId) => ttl: 30 * MINUTE, onSuccess: handleSuccess(SET_ML_DATASET_LABELS), hash: hashParams(organizationId), - label: GET_ML_DATASET_LABELS + label: GET_ML_DATASET_LABELS, }); export const createMlDataset = (organizationId, params) => @@ -1973,7 +1973,7 @@ export const createMlDataset = (organizationId, params) => method: "POST", label: CREATE_ML_DATASET, params, - affectedRequests: [GET_ML_DATASETS] + affectedRequests: [GET_ML_DATASETS], }); export const updateMlDataset = (organizationId, datasetId, params) => @@ -1982,7 +1982,7 @@ export const updateMlDataset = (organizationId, datasetId, params) => method: "PATCH", label: UPDATE_ML_DATASET, params, - affectedRequests: [GET_ML_DATASET, GET_ML_DATASETS] + affectedRequests: [GET_ML_DATASET, GET_ML_DATASETS], }); export const deleteMlDataset = (organizationId, datasetId) => @@ -1990,7 +1990,7 @@ export const deleteMlDataset = (organizationId, datasetId) => url: `${API_URL}/organizations/${organizationId}/datasets/${datasetId}`, method: "DELETE", label: DELETE_ML_DATASET, - affectedRequests: [GET_ML_DATASETS] + affectedRequests: [GET_ML_DATASETS], }); export const getMlTaskRecommendations = (organizationId, taskId) => @@ -2000,7 +2000,7 @@ export const getMlTaskRecommendations = (organizationId, taskId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_TASK_RECOMMENDATIONS), hash: hashParams({ organizationId, taskId }), - label: GET_ML_TASK_RECOMMENDATIONS + label: GET_ML_TASK_RECOMMENDATIONS, }); export const getMlTaskRecommendationDetails = (organizationId, taskId, params = {}) => @@ -2013,8 +2013,8 @@ export const getMlTaskRecommendationDetails = (organizationId, taskId, params = ttl: 5 * MINUTE, params: { type: params.type, - status: params.status - } + status: params.status, + }, }); export const getMlTask = (organizationId, taskId) => @@ -2024,7 +2024,7 @@ export const getMlTask = (organizationId, taskId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_TASK), hash: hashParams({ organizationId, taskId }), - label: GET_ML_TASK + label: GET_ML_TASK, }); export const getMlTaskRuns = (organizationId, taskId) => @@ -2034,7 +2034,7 @@ export const getMlTaskRuns = (organizationId, taskId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_TASK_RUNS), hash: hashParams({ organizationId, taskId }), - label: GET_ML_TASK_RUNS + label: GET_ML_TASK_RUNS, }); export const getMlTaskTags = (organizationId, taskId) => @@ -2044,7 +2044,7 @@ export const getMlTaskTags = (organizationId, taskId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_TASK_TAGS), hash: hashParams({ organizationId, taskId }), - label: GET_ML_TASK_TAGS + label: GET_ML_TASK_TAGS, }); export const getMlTaskRunsBulk = (organizationId, taskId, runIds) => @@ -2056,8 +2056,8 @@ export const getMlTaskRunsBulk = (organizationId, taskId, runIds) => hash: hashParams({ organizationId, taskId, runIds }), label: GET_ML_TASK_RUNS_BULK, params: { - run_id: runIds - } + run_id: runIds, + }, }); export const getMlRunDetails = (organizationId, runId, params = {}) => @@ -2069,8 +2069,8 @@ export const getMlRunDetails = (organizationId, runId, params = {}) => hash: hashParams({ organizationId, runId }), label: GET_ML_RUN_DETAILS, params: { - token: params.arceeToken - } + token: params.arceeToken, + }, }); export const getMlRunDetailsBreakdown = (organizationId, runId, params = {}) => @@ -2082,8 +2082,8 @@ export const getMlRunDetailsBreakdown = (organizationId, runId, params = {}) => hash: hashParams({ organizationId, runId }), label: GET_ML_RUN_DETAILS_BREAKDOWN, params: { - token: params.arceeToken - } + token: params.arceeToken, + }, }); export const createMlTask = (organizationId, params) => @@ -2092,7 +2092,7 @@ export const createMlTask = (organizationId, params) => method: "POST", label: CREATE_ML_TASK, params, - affectedRequests: [GET_ML_TASKS] + affectedRequests: [GET_ML_TASKS], }); export const updateMlTask = (organizationId, taskId, params) => @@ -2102,7 +2102,7 @@ export const updateMlTask = (organizationId, taskId, params) => label: UPDATE_ML_TASK, onSuccess: onUpdateMlTask, params, - affectedRequests: [GET_ML_TASKS] + affectedRequests: [GET_ML_TASKS], }); export const deleteMlTask = (organizationId, taskId) => @@ -2110,7 +2110,7 @@ export const deleteMlTask = (organizationId, taskId) => url: `${API_URL}/organizations/${organizationId}/tasks/${taskId}`, method: "DELETE", label: DELETE_ML_TASK, - affectedRequests: [GET_ML_TASKS] + affectedRequests: [GET_ML_TASKS], }); export const getMlTaskModelVersions = (organizationId, taskId) => @@ -2119,7 +2119,7 @@ export const getMlTaskModelVersions = (organizationId, taskId) => method: "GET", ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_TASK_MODEL_VERSIONS), - label: GET_ML_TASK_MODEL_VERSIONS + label: GET_ML_TASK_MODEL_VERSIONS, }); export const getMlModels = (organizationId) => @@ -2129,7 +2129,7 @@ export const getMlModels = (organizationId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_MODELS), hash: hashParams(organizationId), - label: GET_ML_MODELS + label: GET_ML_MODELS, }); export const getMlModel = (organizationId, modelId) => @@ -2139,7 +2139,7 @@ export const getMlModel = (organizationId, modelId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_MODEL), hash: hashParams({ organizationId, modelId }), - label: GET_ML_MODEL + label: GET_ML_MODEL, }); export const createMlModel = (organizationId, params) => @@ -2148,7 +2148,7 @@ export const createMlModel = (organizationId, params) => method: "POST", label: CREATE_ML_MODEL, params, - affectedRequests: [GET_ML_MODELS] + affectedRequests: [GET_ML_MODELS], }); export const updateMlModel = (organizationId, modelId, params) => @@ -2158,7 +2158,7 @@ export const updateMlModel = (organizationId, modelId, params) => label: UPDATE_ML_MODEL, onSuccess: onUpdateMlModel, params, - affectedRequests: [GET_ML_MODELS] + affectedRequests: [GET_ML_MODELS], }); export const deleteMlModel = (organizationId, modelId) => @@ -2166,7 +2166,7 @@ export const deleteMlModel = (organizationId, modelId) => url: `${API_URL}/organizations/${organizationId}/models/${modelId}`, method: "DELETE", label: DELETE_ML_MODEL, - affectedRequests: [GET_ML_MODELS] + affectedRequests: [GET_ML_MODELS], }); // eslint-disable-next-line max-params @@ -2176,7 +2176,7 @@ export const updateMlModelVersion = (organizationId, modelId, runId, params) => method: "PATCH", label: UPDATE_ML_MODEL_VERSION, params, - affectedRequests: [GET_ML_MODEL, GET_ML_MODELS] + affectedRequests: [GET_ML_MODEL, GET_ML_MODELS], }); export const getMlMetrics = (organizationId) => @@ -2187,7 +2187,7 @@ export const getMlMetrics = (organizationId) => ttl: 5 * MINUTE, hash: hashParams({ organizationId }), errorHandlerType: ERROR_HANDLER_TYPE_LOCAL, - onSuccess: handleSuccess(SET_ML_METRICS) + onSuccess: handleSuccess(SET_ML_METRICS), }); export const getMlMetric = (organizationId, metricId) => @@ -2197,7 +2197,7 @@ export const getMlMetric = (organizationId, metricId) => label: GET_ML_GLOBAL_METRIC, ttl: 5 * MINUTE, hash: hashParams({ organizationId, metricId }), - onSuccess: handleSuccess(SET_ML_GLOBAL_METRIC) + onSuccess: handleSuccess(SET_ML_GLOBAL_METRIC), }); export const createMlMetric = (organizationId, params) => @@ -2206,7 +2206,7 @@ export const createMlMetric = (organizationId, params) => method: "POST", label: CREATE_GLOBAL_METRIC, params, - affectedRequests: [GET_ML_METRICS] + affectedRequests: [GET_ML_METRICS], }); export const updateMlMetric = (organizationId, metricId, params) => @@ -2215,7 +2215,7 @@ export const updateMlMetric = (organizationId, metricId, params) => method: "PATCH", label: UPDATE_GLOBAL_METRIC, affectedRequests: [GET_ML_METRICS], - params + params, }); export const deleteMlMetric = (organizationId, metricId) => @@ -2223,7 +2223,7 @@ export const deleteMlMetric = (organizationId, metricId) => url: `${API_URL}/organizations/${organizationId}/metrics/${metricId}`, method: "DELETE", label: DELETE_GLOBAL_METRIC, - affectedRequests: [GET_ML_METRICS] + affectedRequests: [GET_ML_METRICS], }); export const getProfilingToken = (organizationId) => @@ -2233,7 +2233,7 @@ export const getProfilingToken = (organizationId) => label: GET_PROFILING_TOKEN, ttl: 5 * MINUTE, hash: hashParams({ organizationId }), - onSuccess: handleSuccess(SET_PROFILING_TOKEN) + onSuccess: handleSuccess(SET_PROFILING_TOKEN), }); export const getMlExecutors = (organizationId, params) => @@ -2247,8 +2247,8 @@ export const getMlExecutors = (organizationId, params) => params: { task_id: params.taskIds, run_id: params.runIds, - token: params.arceeToken - } + token: params.arceeToken, + }, }); export const getMlExecutorsBreakdown = (organizationId) => @@ -2258,7 +2258,7 @@ export const getMlExecutorsBreakdown = (organizationId) => onSuccess: handleSuccess(SET_ML_EXECUTORS_BREAKDOWN), label: GET_ML_EXECUTORS_BREAKDOWN, ttl: 5 * MINUTE, - hash: hashParams(organizationId) + hash: hashParams(organizationId), }); export const getMlArtifacts = (organizationId, params = {}) => @@ -2277,8 +2277,8 @@ export const getMlArtifacts = (organizationId, params = {}) => created_at_gt: params.createdAtGt, created_at_lt: params.createdAtLt, task_id: params.taskId, - token: params.arceeToken - } + token: params.arceeToken, + }, }); export const getMlArtifact = (organizationId, artifactId) => @@ -2288,7 +2288,7 @@ export const getMlArtifact = (organizationId, artifactId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_ML_ARTIFACT), hash: hashParams({ organizationId, artifactId }), - label: GET_ML_ARTIFACT + label: GET_ML_ARTIFACT, }); export const updateMlArtifact = (organizationId, artifactId, params) => @@ -2298,7 +2298,7 @@ export const updateMlArtifact = (organizationId, artifactId, params) => label: UPDATE_ML_ARTIFACT, onSuccess: onUpdateMlArtifact, params, - affectedRequests: [GET_ML_ARTIFACTS] + affectedRequests: [GET_ML_ARTIFACTS], }); export const createMlArtifact = (organizationId, params) => @@ -2311,9 +2311,9 @@ export const createMlArtifact = (organizationId, params) => path: params.path, description: params.description, tags: params.tags, - run_id: params.runId + run_id: params.runId, }, - affectedRequests: [GET_ML_ARTIFACTS] + affectedRequests: [GET_ML_ARTIFACTS], }); export const deleteMlArtifact = (organizationId, artifactId) => @@ -2321,7 +2321,7 @@ export const deleteMlArtifact = (organizationId, artifactId) => url: `${API_URL}/organizations/${organizationId}/artifacts/${artifactId}`, method: "DELETE", label: DELETE_ML_ARTIFACT, - affectedRequests: [GET_ML_ARTIFACTS] + affectedRequests: [GET_ML_ARTIFACTS], }); export const getReservedInstancesBreakdown = (organizationId, params) => @@ -2335,8 +2335,8 @@ export const getReservedInstancesBreakdown = (organizationId, params) => params: { cloud_account_id: params.dataSourceIds, start_date: params.startDate, - end_date: params.endDate - } + end_date: params.endDate, + }, }); export const getSavingPlansBreakdown = (organizationId, params) => @@ -2350,8 +2350,8 @@ export const getSavingPlansBreakdown = (organizationId, params) => params: { cloud_account_id: params.dataSourceIds, start_date: params.startDate, - end_date: params.endDate - } + end_date: params.endDate, + }, }); export const getMlRunsetTemplates = (organizationId) => @@ -2361,7 +2361,7 @@ export const getMlRunsetTemplates = (organizationId) => onSuccess: handleSuccess(SET_ML_RUNSET_TEMPLATES), hash: hashParams({ organizationId }), label: GET_ML_RUNSET_TEMPLATES, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const getMlRunsetTemplate = (organizationId, runsetTemplateId) => @@ -2371,7 +2371,7 @@ export const getMlRunsetTemplate = (organizationId, runsetTemplateId) => hash: hashParams({ organizationId, runsetTemplateId }), onSuccess: handleSuccess(SET_ML_RUNSET_TEMPLATE), label: GET_ML_RUNSET_TEMPLATE, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const createMlRunsetTemplate = (organizationId, params) => @@ -2380,7 +2380,7 @@ export const createMlRunsetTemplate = (organizationId, params) => method: "POST", label: CREATE_ML_RUNSET_TEMPLATE, params, - affectedRequests: [GET_ML_RUNSET_TEMPLATES] + affectedRequests: [GET_ML_RUNSET_TEMPLATES], }); export const updateMlRunsetTemplate = (organizationId, runsetTemplateId, params) => @@ -2390,7 +2390,7 @@ export const updateMlRunsetTemplate = (organizationId, runsetTemplateId, params) label: UPDATE_ML_RUNSET_TEMPLATE, onSuccess: onUpdateMlRunsetTemplate, params, - affectedRequests: [GET_ML_RUNSET_TEMPLATES] + affectedRequests: [GET_ML_RUNSET_TEMPLATES], }); export const deleteMlRunsetTemplate = (organizationId, runsetTemplateId) => @@ -2398,7 +2398,7 @@ export const deleteMlRunsetTemplate = (organizationId, runsetTemplateId) => url: `${API_URL}/organizations/${organizationId}/templates/${runsetTemplateId}`, method: "DELETE", label: DELETE_ML_RUNSET_TEMPLATE, - affectedRequests: [GET_ML_RUNSET_TEMPLATES] + affectedRequests: [GET_ML_RUNSET_TEMPLATES], }); export const getMlRunsets = (organizationId, runsetTemplateId) => @@ -2408,7 +2408,7 @@ export const getMlRunsets = (organizationId, runsetTemplateId) => hash: hashParams({ organizationId, runsetTemplateId }), onSuccess: handleSuccess(SET_ML_RUNSETS), label: GET_ML_RUNSETS, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const getMlRunset = (organizationId, runsetId) => @@ -2418,7 +2418,7 @@ export const getMlRunset = (organizationId, runsetId) => hash: hashParams({ organizationId, runsetId }), onSuccess: handleSuccess(SET_ML_RUNSET), label: GET_ML_RUNSET, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const createMlRunset = (organizationId, runsetTemplateId, params) => @@ -2427,7 +2427,7 @@ export const createMlRunset = (organizationId, runsetTemplateId, params) => method: "POST", label: CREATE_ML_RUNSET, params, - affectedRequests: [GET_ML_RUNSETS] + affectedRequests: [GET_ML_RUNSETS], }); export const stopMlRunset = (organizationId, runsetId) => @@ -2437,9 +2437,9 @@ export const stopMlRunset = (organizationId, runsetId) => label: STOP_ML_RUNSET, successHandlerType: SUCCESS_HANDLER_TYPE_ALERT, params: { - action: "stop" + action: "stop", }, - affectedRequests: [GET_ML_RUNSET, GET_ML_RUNSETS] + affectedRequests: [GET_ML_RUNSET, GET_ML_RUNSETS], }); export const getMlRunsetsRuns = (organizationId, runsetId) => @@ -2449,7 +2449,7 @@ export const getMlRunsetsRuns = (organizationId, runsetId) => hash: hashParams({ organizationId, runsetId }), onSuccess: handleSuccess(SET_ML_RUNSETS_RUNS), label: GET_ML_RUNSETS_RUNS, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const getMlRunsetExecutors = (organizationId, runsetId) => @@ -2459,7 +2459,7 @@ export const getMlRunsetExecutors = (organizationId, runsetId) => hash: hashParams({ organizationId, runsetId }), onSuccess: handleSuccess(SET_ML_RUNSET_EXECUTORS), label: GET_ML_RUNSET_EXECUTORS, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const getOrganizationBIExports = (organizationId) => @@ -2469,7 +2469,7 @@ export const getOrganizationBIExports = (organizationId) => hash: hashParams({ organizationId }), onSuccess: handleSuccess(SET_ORGANIZATION_BI_EXPORTS), label: GET_ORGANIZATION_BI_EXPORT, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const createOrganizationBIExports = (organizationId, params) => @@ -2478,7 +2478,7 @@ export const createOrganizationBIExports = (organizationId, params) => method: "POST", label: CREATE_ORGANIZATION_BI_EXPORT, params, - affectedRequests: [GET_ORGANIZATION_BI_EXPORT] + affectedRequests: [GET_ORGANIZATION_BI_EXPORT], }); export const getBIExport = (biExportId) => @@ -2488,7 +2488,7 @@ export const getBIExport = (biExportId) => hash: hashParams({ biExportId }), label: GET_BI_EXPORT, onSuccess: handleSuccess(SET_BI_EXPORT), - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const updateBIExport = (biExportId, params) => @@ -2498,7 +2498,7 @@ export const updateBIExport = (biExportId, params) => label: UPDATE_BI_EXPORT, onSuccess: onUpdateBIExport, affectedRequests: [GET_ORGANIZATION_BI_EXPORT], - params + params, }); export const deleteBIExport = (biExportId) => @@ -2506,7 +2506,7 @@ export const deleteBIExport = (biExportId) => url: `${API_URL}/bi/${biExportId}`, method: "DELETE", label: DELETE_BI_EXPORT, - affectedRequests: [GET_ORGANIZATION_BI_EXPORT] + affectedRequests: [GET_ORGANIZATION_BI_EXPORT], }); export const getS3DuplicatesOrganizationSettings = (organizationId) => @@ -2516,7 +2516,7 @@ export const getS3DuplicatesOrganizationSettings = (organizationId) => ttl: HOUR, onSuccess: handleSuccess(SET_S3_DUPLICATES_ORGANIZATION_SETTINGS), hash: hashParams(organizationId), - label: GET_S3_DUPLICATES_ORGANIZATION_SETTINGS + label: GET_S3_DUPLICATES_ORGANIZATION_SETTINGS, }); export const updateS3DuplicatesOrganizationSettings = (organizationId, value) => @@ -2528,8 +2528,8 @@ export const updateS3DuplicatesOrganizationSettings = (organizationId, value) => label: UPDATE_S3_DUPLICATES_ORGANIZATION_SETTINGS, affectedRequests: [GET_S3_DUPLICATES_ORGANIZATION_SETTINGS], params: { - value: JSON.stringify(value) - } + value: JSON.stringify(value), + }, }); export const getOrganizationCloudResources = (organizationId, params) => @@ -2540,7 +2540,7 @@ export const getOrganizationCloudResources = (organizationId, params) => onSuccess: handleSuccess(SET_ORGANIZATION_CLOUD_RESOURCES), label: GET_ORGANIZATION_CLOUD_RESOURCES, ttl: 5 * MINUTE, - params + params, }); export const getOrganizationGeminis = (organizationId) => @@ -2550,7 +2550,7 @@ export const getOrganizationGeminis = (organizationId) => hash: hashParams({ organizationId }), onSuccess: handleSuccess(SET_ORGANIZATION_GEMINIS), label: GET_ORGANIZATION_GEMINIS, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const getGemini = (checkId) => @@ -2560,7 +2560,7 @@ export const getGemini = (checkId) => hash: hashParams({ checkId }), onSuccess: handleSuccess(SET_GEMINI), label: GET_GEMINI, - ttl: 5 * MINUTE + ttl: 5 * MINUTE, }); export const createOrganizationGemini = (organizationId, params) => @@ -2569,7 +2569,7 @@ export const createOrganizationGemini = (organizationId, params) => method: "POST", label: CREATE_ORGANIZATION_GEMINI, affectedRequests: [GET_ORGANIZATION_GEMINIS], - params + params, }); export const createSurvey = (organizationId, { type, payload }) => @@ -2579,8 +2579,8 @@ export const createSurvey = (organizationId, { type, payload }) => label: CREATE_SURVEY, params: { survey_type: type, - payload - } + payload, + }, }); export const getPowerSchedules = (organizationId) => @@ -2590,7 +2590,7 @@ export const getPowerSchedules = (organizationId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_POWER_SCHEDULES), hash: hashParams(organizationId), - label: GET_POWER_SCHEDULES + label: GET_POWER_SCHEDULES, }); export const getPowerSchedule = (powerScheduleId) => @@ -2600,7 +2600,7 @@ export const getPowerSchedule = (powerScheduleId) => ttl: 5 * MINUTE, onSuccess: handleSuccess(SET_POWER_SCHEDULE), hash: hashParams(powerScheduleId), - label: GET_POWER_SCHEDULE + label: GET_POWER_SCHEDULE, }); export const createPowerSchedule = (organizationId, params) => @@ -2609,7 +2609,7 @@ export const createPowerSchedule = (organizationId, params) => method: "POST", label: CREATE_POWER_SCHEDULES, affectedRequests: [GET_POWER_SCHEDULES], - params + params, }); export const deletePowerSchedule = (powerScheduleId) => @@ -2617,7 +2617,7 @@ export const deletePowerSchedule = (powerScheduleId) => url: `${API_URL}/power_schedules/${powerScheduleId}`, method: "DELETE", label: DELETE_POWER_SCHEDULE, - affectedRequests: [GET_POWER_SCHEDULES] + affectedRequests: [GET_POWER_SCHEDULES], }); export const updatePowerSchedule = (powerScheduleId, params) => @@ -2628,7 +2628,7 @@ export const updatePowerSchedule = (powerScheduleId, params) => onSuccess: onUpdatePowerSchedule, entityId: powerScheduleId, affectedRequests: [GET_POWER_SCHEDULES], - params + params, }); export const attachInstancesToSchedule = (powerScheduleId, instancesToAttach) => @@ -2640,8 +2640,8 @@ export const attachInstancesToSchedule = (powerScheduleId, instancesToAttach) => affectedRequests: [GET_POWER_SCHEDULE, GET_POWER_SCHEDULES], params: { action: "attach", - instance_id: instancesToAttach - } + instance_id: instancesToAttach, + }, }); export const removeInstancesFromSchedule = (powerScheduleId, instancesToRemove) => @@ -2653,8 +2653,8 @@ export const removeInstancesFromSchedule = (powerScheduleId, instancesToRemove) affectedRequests: [GET_POWER_SCHEDULE, GET_POWER_SCHEDULES], params: { action: "detach", - instance_id: instancesToRemove - } + instance_id: instancesToRemove, + }, }); export const getLayouts = (organizationId, { layoutType, entityId, includeShared, arceeToken }) => @@ -2669,8 +2669,8 @@ export const getLayouts = (organizationId, { layoutType, entityId, includeShared layout_type: layoutType, entity_id: entityId, include_shared: includeShared, - token: arceeToken - } + token: arceeToken, + }, }); export const getLayout = (organizationId, layoutId, params = {}) => @@ -2683,8 +2683,8 @@ export const getLayout = (organizationId, layoutId, params = {}) => label: GET_LAYOUT, ttl: 5 * MINUTE, params: { - token: params.arceeToken - } + token: params.arceeToken, + }, }); export const createLayout = (organizationId, params = {}) => @@ -2699,8 +2699,8 @@ export const createLayout = (organizationId, params = {}) => shared: params.shared, data: params.data, type: params.type, - entity_id: params.entityId - } + entity_id: params.entityId, + }, }); export const updateLayout = (organizationId, layoutId, params = {}) => @@ -2712,8 +2712,8 @@ export const updateLayout = (organizationId, layoutId, params = {}) => params: { name: params.name, shared: params.shared, - data: params.data - } + data: params.data, + }, }); export const deleteLayout = (organizationId, layoutId) => @@ -2722,7 +2722,7 @@ export const deleteLayout = (organizationId, layoutId) => method: "DELETE", label: DELETE_LAYOUT, affectedRequests: [GET_LAYOUTS], - entityId: layoutId + entityId: layoutId, }); export const restorePassword = (params) => @@ -2732,8 +2732,8 @@ export const restorePassword = (params) => label: RESTORE_PASSWORD, params: { email: params.email, - link_params: params.linkParams - } + link_params: params.linkParams, + }, }); export const verifyEmail = (params) => @@ -2743,6 +2743,6 @@ export const verifyEmail = (params) => label: VERIFY_EMAIL, params: { email: params.email, - link_params: params.linkParams - } + link_params: params.linkParams, + }, }); diff --git a/ngui/ui/src/api/restapi/handlers.ts b/ngui/ui/src/api/restapi/handlers.ts index 9d861349c..b18e2d212 100644 --- a/ngui/ui/src/api/restapi/handlers.ts +++ b/ngui/ui/src/api/restapi/handlers.ts @@ -56,212 +56,212 @@ import { GET_ML_MODEL, SET_ML_ARTIFACT, GET_ML_ARTIFACT, - CREATE_ML_LEADERBOARD + CREATE_ML_LEADERBOARD, } from "./actionTypes"; export const onUpdateOrganizationOption = (data) => ({ type: SET_ORGANIZATION_OPTION, payload: data, - label: GET_ORGANIZATION_OPTION + label: GET_ORGANIZATION_OPTION, }); export const onSuccessUpdateInvitation = () => ({ type: SET_INVITATION, payload: {}, - label: GET_INVITATION + label: GET_INVITATION, }); export const onSuccessDeletePool = (id) => () => ({ type: DELETE_POOL, payload: { id }, - label: GET_POOL + label: GET_POOL, }); export const onSuccessCreatePoolPolicy = (data) => ({ type: SET_POOL_POLICY, payload: data, - label: GET_POOL_POLICIES + label: GET_POOL_POLICIES, }); export const onSuccessCreateResourceConstraint = (data) => ({ type: SET_RESOURCE_CONSTRAINT, payload: data, - label: GET_RESOURCE + label: GET_RESOURCE, }); export const onSuccessUpdateGlobalPoolPolicyLimit = (data) => ({ type: UPDATE_GLOBAL_POOL_POLICY, payload: data, - label: GET_GLOBAL_POOL_POLICIES + label: GET_GLOBAL_POOL_POLICIES, }); export const onSuccessUpdateGlobalResourceConstraintLimit = (data) => ({ type: UPDATE_GLOBAL_RESOURCE_CONSTRAINT, payload: data, - label: GET_GLOBAL_RESOURCE_CONSTRAINTS + label: GET_GLOBAL_RESOURCE_CONSTRAINTS, }); export const onSuccessUpdateGlobalPoolPolicyActivity = (data) => ({ type: UPDATE_GLOBAL_POOL_POLICY, payload: data, - label: GET_GLOBAL_POOL_POLICIES + label: GET_GLOBAL_POOL_POLICIES, }); export const onSuccessDeleteResourceConstraint = (id) => ({ type: DELETE_RESOURCE_CONSTRAINT, payload: id, - label: GET_RESOURCE + label: GET_RESOURCE, }); export const onSuccessGetOptimizationsOverview = (data) => ({ type: SET_OPTIMIZATIONS_OVERVIEW, payload: data, - label: GET_OPTIMIZATIONS_OVERVIEW + label: GET_OPTIMIZATIONS_OVERVIEW, }); export const onSuccessGetOptimizationDetails = (data) => ({ type: SET_OPTIMIZATION_DETAILS, payload: data, - label: GET_OPTIMIZATION_DETAILS + label: GET_OPTIMIZATION_DETAILS, }); export const onSuccessGetMLOptimizationDetails = (data) => ({ type: SET_ML_OPTIMIZATION_DETAILS, payload: data, - label: GET_ML_OPTIMIZATION_DETAILS + label: GET_ML_OPTIMIZATION_DETAILS, }); export const onSuccessUpdateOptimizations = (data) => ({ type: SET_OPTIMIZATIONS, payload: { last_completed: data.last_completed, - next_run: data.next_run + next_run: data.next_run, }, - label: GET_OPTIMIZATIONS + label: GET_OPTIMIZATIONS, }); export const onSuccessCreateSshKey = (data) => ({ type: CREATE_SSH_KEY, payload: data, - label: GET_SSH_KEYS + label: GET_SSH_KEYS, }); export const onSuccessUpdateSshKey = (data) => ({ type: UPDATE_SSH_KEY, payload: data, - label: GET_SSH_KEYS + label: GET_SSH_KEYS, }); export const onSuccessCreateLiveDemo = (data) => ({ type: SET_LIVE_DEMO, payload: data, - label: GET_LIVE_DEMO + label: GET_LIVE_DEMO, }); export const onSuccessUpdateAssignmentRulePriority = (data) => ({ type: SET_ASSIGNMENT_RULES, payload: data, - label: GET_ASSIGNMENT_RULES + label: GET_ASSIGNMENT_RULES, }); export const onFinOpsChecklist = (data) => ({ type: SET_FINOPS_CHECKLIST, payload: data, - label: GET_FINOPS_CHECKLIST + label: GET_FINOPS_CHECKLIST, }); export const onSuccessExportLinkChange = (data) => ({ type: UPDATE_POOL_EXPENSES_EXPORT, payload: data, - label: UPDATE_POOL_EXPENSES_EXPORT + label: UPDATE_POOL_EXPENSES_EXPORT, }); export const onSuccessUpdateEnvironmentProperty = (data) => ({ type: UPDATE_ENVIRONMENT_PROPERTY, payload: data, - label: GET_RESOURCE + label: GET_RESOURCE, }); export const onSuccessUpdateEnvironmentSshRequirement = (data) => ({ type: UPDATE_ENVIRONMENT_SSH_REQUIREMENT, payload: data, - label: GET_RESOURCE + label: GET_RESOURCE, }); export const onSuccessCreateWebhook = (data) => ({ type: CREATE_WEBHOOK, payload: data, - label: GET_WEBHOOKS + label: GET_WEBHOOKS, }); export const onSuccessUpdateWebhook = (data) => ({ type: UPDATE_WEBHOOK, payload: data, - label: GET_WEBHOOKS + label: GET_WEBHOOKS, }); export const onSuccessDeleteWebhook = (id) => () => ({ type: DELETE_WEBHOOK, payload: id, - label: GET_WEBHOOKS + label: GET_WEBHOOKS, }); export const onSuccessUpdateAnomaly = (data) => ({ type: UPDATE_ORGANIZATION_CONSTRAINT, payload: data, - label: GET_ORGANIZATION_CONSTRAINT + label: GET_ORGANIZATION_CONSTRAINT, }); export const onUpdateMlTask = (data) => ({ type: SET_ML_TASK, payload: data, - label: GET_ML_TASK + label: GET_ML_TASK, }); export const onUpdateMlArtifact = (data) => ({ type: SET_ML_ARTIFACT, payload: data, - label: GET_ML_ARTIFACT + label: GET_ML_ARTIFACT, }); export const onUpdateMlModel = (data) => ({ type: SET_ML_MODEL, payload: data, - label: GET_ML_MODEL + label: GET_ML_MODEL, }); export const onUpdateMlRunsetTemplate = (data) => ({ type: SET_ML_RUNSET_TEMPLATE, payload: data, - label: GET_ML_RUNSET_TEMPLATE + label: GET_ML_RUNSET_TEMPLATE, }); export const onUpdateBIExport = (data) => ({ type: SET_BI_EXPORT, payload: data, - label: GET_BI_EXPORT + label: GET_BI_EXPORT, }); export const onUpdateS3DuplicatesOrganizationSettings = (data) => ({ type: UPDATE_S3_DUPLICATES_ORGANIZATION_SETTINGS, payload: data, - label: GET_S3_DUPLICATES_ORGANIZATION_SETTINGS + label: GET_S3_DUPLICATES_ORGANIZATION_SETTINGS, }); export const onUpdateMlLeaderboard = (data) => ({ type: UPDATE_ML_LEADERBOARD, payload: data, - label: GET_ML_LEADERBOARD + label: GET_ML_LEADERBOARD, }); export const onUpdatePowerSchedule = (data) => ({ type: SET_POWER_SCHEDULE, payload: data, - label: GET_POWER_SCHEDULE + label: GET_POWER_SCHEDULE, }); export const onSuccessCreateMlLeaderboard = (data) => ({ type: CREATE_ML_LEADERBOARD, payload: data, - label: CREATE_ML_LEADERBOARD + label: CREATE_ML_LEADERBOARD, }); diff --git a/ngui/ui/src/api/restapi/index.ts b/ngui/ui/src/api/restapi/index.ts index 3bf18b828..c4245c62d 100644 --- a/ngui/ui/src/api/restapi/index.ts +++ b/ngui/ui/src/api/restapi/index.ts @@ -200,7 +200,7 @@ import { getMlDatasetLabels, getMlTaskTags, restorePassword, - verifyEmail + verifyEmail, } from "./actionCreators"; export { @@ -405,5 +405,5 @@ export { getMlDatasetLabels, getMlTaskTags, restorePassword, - verifyEmail + verifyEmail, }; diff --git a/ngui/ui/src/api/restapi/reducer.ts b/ngui/ui/src/api/restapi/reducer.ts index 41e889c04..f8fbdbf3c 100644 --- a/ngui/ui/src/api/restapi/reducer.ts +++ b/ngui/ui/src/api/restapi/reducer.ts @@ -117,7 +117,7 @@ import { SET_ML_ARTIFACT, SET_ML_DATASET_LABELS, SET_ML_TASK_TAGS, - CREATE_ML_LEADERBOARD + CREATE_ML_LEADERBOARD, } from "./actionTypes"; export const RESTAPI = "restapi"; @@ -127,27 +127,27 @@ const reducer = (state = {}, action) => { case SET_ORGANIZATION_OPTIONS: { return { ...state, - [action.label]: action.payload.options + [action.label]: action.payload.options, }; } case SET_ORGANIZATION_OPTION: { return { ...state, - [action.label]: action.payload.value + [action.label]: action.payload.value, }; } case UPDATE_POOL_EXPENSES_EXPORT: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_POOL: return { ...state, [action.label]: { - pool: action.payload - } + pool: action.payload, + }, }; case DELETE_POOL: // note: that code does nothing in current UI flow: GET_POOL storage at the moment of pool deletion is _that pool_. @@ -157,16 +157,16 @@ const reducer = (state = {}, action) => { [action.label]: { pool: { ...state[action.label].pool, - children: state[action.label].pool.children?.filter(({ id: childId }) => childId !== action.payload.id) - } - } + children: state[action.label].pool.children?.filter(({ id: childId }) => childId !== action.payload.id), + }, + }, }; case SET_SPLIT_RESOURCES: { return { ...state, [action.label]: { - splitResources: action.payload - } + splitResources: action.payload, + }, }; } case SET_AVAILABLE_POOLS: { @@ -174,8 +174,8 @@ const reducer = (state = {}, action) => { return { ...state, [action.label]: { - pools - } + pools, + }, }; } case SET_POOL_OWNERS: { @@ -183,8 +183,8 @@ const reducer = (state = {}, action) => { return { ...state, [action.label]: { - poolOwners: employees - } + poolOwners: employees, + }, }; } case SET_AUTHORIZED_EMPLOYEES: @@ -193,38 +193,38 @@ const reducer = (state = {}, action) => { return { ...state, [action.label]: { - employees - } + employees, + }, }; } case SET_ORGANIZATIONS_OVERVIEW: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ORGANIZATION_EXPENSES: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ORGANIZATION_CONSTRAINTS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ORGANIZATION_CONSTRAINT: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case UPDATE_ORGANIZATION_CONSTRAINT: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_POOL_EXPENSES_BREAKDOWN: @@ -234,15 +234,15 @@ const reducer = (state = {}, action) => { return { ...state, [action.label]: { - expenses: action.payload.expenses - } + expenses: action.payload.expenses, + }, }; case SET_TRAFFIC_EXPENSES: return { ...state, [action.label]: { - expenses: action.payload - } + expenses: action.payload, + }, }; case SET_COST_EXPLORER_POOL_EXPENSES: { return { @@ -256,97 +256,97 @@ const reducer = (state = {}, action) => { [ { name: "expenses", - expense: expenseNumber - } - ] + expense: expenseNumber, + }, + ], ]) - ) - } - } + ), + }, + }, }; } case SET_INVITATION: return { ...state, [action.label]: { - invitation: action.payload - } + invitation: action.payload, + }, }; case SET_RAW_EXPENSES: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_CLEAN_EXPENSES: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_EXPENSES_SUMMARY: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_AVAILABLE_FILTERS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_RESOURCE_COUNT_BREAKDOWN: { return { ...state, [action.label]: { - ...action.payload - } + ...action.payload, + }, }; } case SET_TAGS_BREAKDOWN: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ASSIGNMENT_RULE: { return { ...state, [action.label]: { - assignmentRule: action.payload - } + assignmentRule: action.payload, + }, }; } case SET_ASSIGNMENT_RULES: { return { ...state, [action.label]: { - assignmentRules: action.payload - } + assignmentRules: action.payload, + }, }; } case SET_K8S_RIGHTSIZING: { return { ...state, [action.label]: { - k8sRightsizing: action.payload - } + k8sRightsizing: action.payload, + }, }; } case SET_RESOURCE: return { ...state, [action.label]: { - resource: action.payload - } + resource: action.payload, + }, }; case SET_POOL_POLICIES: { return { ...state, [action.label]: { - poolPolicies: action.payload.policies - } + poolPolicies: action.payload.policies, + }, }; } case SET_POOL_POLICY: { @@ -356,8 +356,8 @@ const reducer = (state = {}, action) => { return { ...state, [action.label]: { - poolPolicies: [...currentPolicies, policy] - } + poolPolicies: [...currentPolicies, policy], + }, }; } case SET_RESOURCE_CONSTRAINT: { @@ -372,10 +372,10 @@ const reducer = (state = {}, action) => { ...state[action.label].resource, details: { ...state[action.label].resource.details, - constraints: { ...currentConstraints, [action.payload.type]: action.payload } - } - } - } + constraints: { ...currentConstraints, [action.payload.type]: action.payload }, + }, + }, + }, }; } case DELETE_RESOURCE_CONSTRAINT: { @@ -393,18 +393,18 @@ const reducer = (state = {}, action) => { ...state[action.label].resource, details: { ...state[action.label].resource.details, - constraints: { ...currentConstraints } - } - } - } + constraints: { ...currentConstraints }, + }, + }, + }, }; } case SET_RESOURCE_LIMIT_HITS: { return { ...state, [action.label]: { - limitHits: action.payload.limit_hits - } + limitHits: action.payload.limit_hits, + }, }; } case SET_OPTIMIZATIONS: { @@ -413,147 +413,147 @@ const reducer = (state = {}, action) => { [action.label]: { optimizations: { ...(state?.[action.label]?.optimizations ?? {}), - ...action.payload - } - } + ...action.payload, + }, + }, }; } case SET_OPTIMIZATIONS_OVERVIEW: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_OPTIMIZATION_DETAILS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_OPTIMIZATION_DETAILS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_LIVE_DEMO: { const liveDemo = state[action.label] || {}; return { ...state, - [action.label]: { ...liveDemo, ...action.payload } + [action.label]: { ...liveDemo, ...action.payload }, }; } case SET_TTL_ANALYSIS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_FINOPS_CHECKLIST: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_RECOMMENDATIONS_DOWNLOAD_OPTIONS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_CLUSTER_TYPES: { return { ...state, [action.label]: { - clusterTypes: [...action.payload.cluster_types] - } + clusterTypes: [...action.payload.cluster_types], + }, }; } case SET_ENVIRONMENTS: { return { ...state, - [action.label]: action.payload.data + [action.label]: action.payload.data, }; } case SET_ENVIRONMENT_BOOKINGS: { return { ...state, - [action.label]: action.payload.bookings + [action.label]: action.payload.bookings, }; } case SET_WEBHOOKS: { return { ...state, - [action.label]: action.payload.webhooks + [action.label]: action.payload.webhooks, }; } case CREATE_WEBHOOK: case UPDATE_WEBHOOK: return { ...state, - [action.label]: [...(state[action.label] ?? []), action.payload] + [action.label]: [...(state[action.label] ?? []), action.payload], }; case DELETE_WEBHOOK: { const webhooks = state[action.label] ?? []; const updatedWebhooks = removeObjects(webhooks, "id", action.payload); return { ...state, - [action.label]: updatedWebhooks + [action.label]: updatedWebhooks, }; } case SET_SSH_KEYS: { return { ...state, - [action.label]: action.payload.ssh_keys + [action.label]: action.payload.ssh_keys, }; } case CREATE_SSH_KEY: { return { ...state, - [action.label]: [...(state[action.label] ?? []), action.payload] + [action.label]: [...(state[action.label] ?? []), action.payload], }; } case UPDATE_SSH_KEY: { const updatedSshKeys = (state[action.label] ?? []).map((key) => ({ ...key, default: key.id === action.payload.id })); return { ...state, - [action.label]: updatedSshKeys + [action.label]: updatedSshKeys, }; } case SET_DATA_SOURCE_NODES: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_RESOURCE_METRICS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_RESOURCE_COST_MODEL: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_DATASOURCE_SKUS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_OPTIMIZATION_OPTIONS: { return { ...state, - [action.label]: JSON.parse(action.payload.value) + [action.label]: JSON.parse(action.payload.value), }; } case SET_ORGANIZATION_CALENDAR: return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; case UPDATE_ENVIRONMENT_PROPERTY: { return { @@ -562,9 +562,9 @@ const reducer = (state = {}, action) => { // TODO: remove "resource" layer resource: { ...state[action.label].resource, - ...action.payload - } - } + ...action.payload, + }, + }, }; } case UPDATE_ENVIRONMENT_SSH_REQUIREMENT: { @@ -573,9 +573,9 @@ const reducer = (state = {}, action) => { [action.label]: { resource: { ...state[action.label].resource, - ssh_only: action.payload.ssh_only - } - } + ssh_only: action.payload.ssh_only, + }, + }, }; } case SET_EXPENSES_DAILY_BREAKDOWN: { @@ -583,8 +583,8 @@ const reducer = (state = {}, action) => { ...state, [action.label]: { ...action.payload, - breakdown: reformatBreakdown(action.payload.breakdown) - } + breakdown: reformatBreakdown(action.payload.breakdown), + }, }; } case SET_GLOBAL_POOL_POLICIES: { @@ -592,7 +592,7 @@ const reducer = (state = {}, action) => { return { ...state, - [action.label]: resourcePolicies + [action.label]: resourcePolicies, }; } case SET_GLOBAL_RESOURCE_CONSTRAINTS: { @@ -600,7 +600,7 @@ const reducer = (state = {}, action) => { return { ...state, - [action.label]: resourceConstraints + [action.label]: resourceConstraints, }; } case UPDATE_GLOBAL_POOL_POLICY: @@ -613,239 +613,239 @@ const reducer = (state = {}, action) => { if (currentData.id === action.payload.id && currentData.type === action.payload.type) { return { ...currentData, - ...action.payload + ...action.payload, }; } return currentData; - }) + }), }; } case SET_ARCHIVED_OPTIMIZATIONS_COUNT: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ARCHIVED_OPTIMIZATIONS_BREAKDOWN: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ARCHIVED_OPTIMIZATION_DETAILS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_TASKS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_LEADERBOARD_TEMPLATE: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_LEADERBOARD_CANDIDATES: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_DATASETS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_DATASET: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_METRICS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_GLOBAL_METRIC: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_PROFILING_TOKEN: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_EXECUTORS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_EXECUTORS_BREAKDOWN: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_TASK: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_TASK_RUNS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_RUN_DETAILS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_RUN_DETAILS_BREAKDOWN: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_TASK_RECOMMENDATIONS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_RUNSET_TEMPLATES: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_RUNSET_TEMPLATE: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_RUNSETS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_RUNSET: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_RUNSETS_RUNS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_RUNSET_EXECUTORS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_ARTIFACTS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_ARTIFACT: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ORGANIZATION_BI_EXPORTS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_BI_EXPORT: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ORGANIZATION_CLOUD_RESOURCES: { return { ...state, - [action.label]: action.payload.data ?? [] + [action.label]: action.payload.data ?? [], }; } case SET_ORGANIZATION_GEMINIS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_GEMINI: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_S3_DUPLICATES_ORGANIZATION_SETTINGS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_POWER_SCHEDULES: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_TASK_RUNS_BULK: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_POWER_SCHEDULE: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_LAYOUTS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_LEADERBOARDS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_LEADERBOARD: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case UPDATE_ML_LEADERBOARD: { @@ -854,7 +854,7 @@ const reducer = (state = {}, action) => { datum.id === action.payload.id ? { ...datum, - ...action.payload + ...action.payload, } : datum ) ?? []; @@ -862,67 +862,67 @@ const reducer = (state = {}, action) => { return { ...state, [GET_ML_LEADERBOARDS]: updatedLeaderboards, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_LAYOUT: { return { ...state, [action.label]: { - ...action.payload - } + ...action.payload, + }, }; } case CREATE_LAYOUT: { return { ...state, [action.label]: { - ...action.payload - } + ...action.payload, + }, }; } case SET_RESERVED_INSTANCES_BREAKDOWN: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_SAVING_PLANS_BREAKDOWN: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_MODEL: { return { ...state, [action.label]: { - ...action.payload - } + ...action.payload, + }, }; } case SET_ML_TASK_MODEL_VERSIONS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_DATASET_LABELS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case SET_ML_TASK_TAGS: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } case CREATE_ML_LEADERBOARD: { return { ...state, - [action.label]: action.payload + [action.label]: action.payload, }; } default: diff --git a/ngui/ui/src/api/utils.ts b/ngui/ui/src/api/utils.ts index 9b313077a..42c07947d 100644 --- a/ngui/ui/src/api/utils.ts +++ b/ngui/ui/src/api/utils.ts @@ -22,7 +22,7 @@ export const apiAction = ({ successHandlerPayload, headersOverride = {}, affectedRequests = [], - allowMultipleRequests = false + allowMultipleRequests = false, }) => ({ type: API, payload: { @@ -39,8 +39,8 @@ export const apiAction = ({ successHandlerPayload, headersOverride, affectedRequests, - allowMultipleRequests - } + allowMultipleRequests, + }, }); const immutableArraySort = (arr) => [...arr].sort(); diff --git a/ngui/ui/src/components/AcceptInvitation/AcceptInvitation.tsx b/ngui/ui/src/components/AcceptInvitation/AcceptInvitation.tsx index 1760ddec0..d24fb8cb5 100644 --- a/ngui/ui/src/components/AcceptInvitation/AcceptInvitation.tsx +++ b/ngui/ui/src/components/AcceptInvitation/AcceptInvitation.tsx @@ -17,7 +17,7 @@ const AcceptInvitation = ({ invitation, sendState, onSuccessAccept, onSuccessDec owner_name: ownerName, owner_email: ownerEmail, invite_assignments: assignments = [], - organization + organization, } = invitation; const { pool: invitesToPools = [], organization: invitesToOrganization = [] } = createGroupsObjectFromArray( diff --git a/ngui/ui/src/components/Accordion/Accordion.styles.ts b/ngui/ui/src/components/Accordion/Accordion.styles.ts index 163c2f322..2364e2fdf 100644 --- a/ngui/ui/src/components/Accordion/Accordion.styles.ts +++ b/ngui/ui/src/components/Accordion/Accordion.styles.ts @@ -3,59 +3,59 @@ import { makeStyles } from "tss-react/mui"; const getExpandColorStyles = ({ theme, expandTitleColor, alwaysHighlightTitle = false }) => { const style = { background: { - backgroundColor: theme.palette.background.default - } + backgroundColor: theme.palette.background.default, + }, }[expandTitleColor] ?? { color: theme.palette.secondary.contrastText, backgroundColor: theme.palette.action.selected, "& svg": { - color: theme.palette.secondary.contrastText + color: theme.palette.secondary.contrastText, }, "& p": { - color: theme.palette.secondary.contrastText + color: theme.palette.secondary.contrastText, }, "& input": { - color: theme.palette.secondary.contrastText - } + color: theme.palette.secondary.contrastText, + }, }; return { "&.MuiAccordionSummary-root": alwaysHighlightTitle ? style : { - "&.Mui-expanded": style - } + "&.Mui-expanded": style, + }, }; }; const useStyles = makeStyles()((theme, { expandTitleColor, alwaysHighlightTitle }) => ({ details: { - display: "block" + display: "block", }, summary: { - flexDirection: "row-reverse" + flexDirection: "row-reverse", }, enableBorder: { - borderBottom: `1px solid ${theme.palette.divider}` + borderBottom: `1px solid ${theme.palette.divider}`, }, disableShadows: { - boxShadow: "none" + boxShadow: "none", }, inheritFlexDirection: { - flexDirection: "inherit" + flexDirection: "inherit", }, summaryPadding: { - padding: "0 0.5rem 0 0.5rem" + padding: "0 0.5rem 0 0.5rem", }, disableExpandedSpacing: { "&.Mui-expanded": { - margin: 0 - } + margin: 0, + }, }, zeroSummaryMinHeight: { - minHeight: "0" + minHeight: "0", }, - expandTitleColor: getExpandColorStyles({ theme, expandTitleColor, alwaysHighlightTitle }) + expandTitleColor: getExpandColorStyles({ theme, expandTitleColor, alwaysHighlightTitle }), })); export default useStyles; diff --git a/ngui/ui/src/components/Accordion/Accordion.tsx b/ngui/ui/src/components/Accordion/Accordion.tsx index 9d6143147..6f1a74792 100644 --- a/ngui/ui/src/components/Accordion/Accordion.tsx +++ b/ngui/ui/src/components/Accordion/Accordion.tsx @@ -21,7 +21,7 @@ const Accordion = ({ }) => { const { classes, cx } = useStyles({ expandTitleColor, - alwaysHighlightTitle + alwaysHighlightTitle, }); return ( diff --git a/ngui/ui/src/components/ActionBar/ActionBar.styles.ts b/ngui/ui/src/components/ActionBar/ActionBar.styles.ts index 752277766..7e01d577e 100644 --- a/ngui/ui/src/components/ActionBar/ActionBar.styles.ts +++ b/ngui/ui/src/components/ActionBar/ActionBar.styles.ts @@ -5,35 +5,35 @@ const useStyles = makeStyles()((theme) => ({ bar: { backgroundColor: "white", color: "inherit", - boxShadow: "none" + boxShadow: "none", }, isPage: { paddingRight: theme.spacing(SPACING_2), - paddingLeft: theme.spacing(SPACING_2) + paddingLeft: theme.spacing(SPACING_2), }, itemsWrapper: { whiteSpace: "nowrap", display: "flex", - alignItems: "center" + alignItems: "center", }, margin: { "& > *": { marginRight: theme.spacing(2), "&:last-child": { - marginRight: 0 - } - } + marginRight: 0, + }, + }, }, actions: { - display: "inline-flex" + display: "inline-flex", }, link: { textDecoration: "none", "&:hover": { - textDecoration: "none" + textDecoration: "none", }, - color: "inherit" - } + color: "inherit", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ActionBar/ActionBar.test.tsx b/ngui/ui/src/components/ActionBar/ActionBar.test.tsx index aa69d4ded..ad7075b32 100644 --- a/ngui/ui/src/components/ActionBar/ActionBar.test.tsx +++ b/ngui/ui/src/components/ActionBar/ActionBar.test.tsx @@ -14,9 +14,9 @@ const items = { messageId: "edit", link: "#", type: "button", - title: "title" - } - ] + title: "title", + }, + ], }; it("renders without crashing", () => { diff --git a/ngui/ui/src/components/ActionBar/ActionBar.tsx b/ngui/ui/src/components/ActionBar/ActionBar.tsx index ef169b3a2..f1168f6ed 100644 --- a/ngui/ui/src/components/ActionBar/ActionBar.tsx +++ b/ngui/ui/src/components/ActionBar/ActionBar.tsx @@ -179,7 +179,7 @@ const renderItems = (barItems) => { dropdown: renderDropdown, switch: renderSwitch, buttonGroup: renderButtonGroup, - custom: ({ node }) => node + custom: ({ node }) => node, }; return types[type]; }; @@ -232,7 +232,7 @@ const ActionBar = ({ data, isPage = true }) => { buttonsRef, itemsLength: showable.length, mode: isPage ? HIDE_MODE : COLLAPSE_MODE, - breakpoint: "md" + breakpoint: "md", }); const [hidden, visible] = splitIntoTwoChunks(showable, hiddenElementsLength); diff --git a/ngui/ui/src/components/ActionBar/useHideActionsForSmallScreens.ts b/ngui/ui/src/components/ActionBar/useHideActionsForSmallScreens.ts index dfe6e1c5d..a703ec644 100644 --- a/ngui/ui/src/components/ActionBar/useHideActionsForSmallScreens.ts +++ b/ngui/ui/src/components/ActionBar/useHideActionsForSmallScreens.ts @@ -12,7 +12,7 @@ export const useHideActionsForSmallScreens = ({ itemsLength, // length of displaying items breakpoint = "", mode = COLLAPSE_MODE, - enabled = true // need to disable this hook in case of actionbars without mobile view (Environments page, for example) + enabled = true, // need to disable this hook in case of actionbars without mobile view (Environments page, for example) }) => { const [hiddenElementsLength, setHiddenElementsLength] = useState(0); const { width: wrapperWidth = 0 } = useResizeObserver(wrapperRef); @@ -69,6 +69,6 @@ export const useHideActionsForSmallScreens = ({ }, [buttonsRef, titleRef, hiddenElementsLength, itemsLength, wrapperWidth, isMobile, breakpoint, enabled, mode]); return { - hiddenElementsLength + hiddenElementsLength, }; }; diff --git a/ngui/ui/src/components/ActionBarHeader/ActionBarHeader.styles.ts b/ngui/ui/src/components/ActionBarHeader/ActionBarHeader.styles.ts index 2fe9a54af..2e9890fa6 100644 --- a/ngui/ui/src/components/ActionBarHeader/ActionBarHeader.styles.ts +++ b/ngui/ui/src/components/ActionBarHeader/ActionBarHeader.styles.ts @@ -3,17 +3,17 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ logo: { width: "100%", - height: "100%" + height: "100%", }, logoWrapper: { width: "2rem", [theme.breakpoints.up("sm")]: { - width: "2.5rem" - } + width: "2.5rem", + }, }, title: { - wordBreak: "break-all" - } + wordBreak: "break-all", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/AdvancedDataSourceDetails/AdvancedDataSourceDetails.test.tsx b/ngui/ui/src/components/AdvancedDataSourceDetails/AdvancedDataSourceDetails.test.tsx index 973d94561..3884e37b7 100644 --- a/ngui/ui/src/components/AdvancedDataSourceDetails/AdvancedDataSourceDetails.test.tsx +++ b/ngui/ui/src/components/AdvancedDataSourceDetails/AdvancedDataSourceDetails.test.tsx @@ -10,7 +10,7 @@ it("renders without crashing", () => { { () => [ resourceType({ style: { - minWidth: "150px" - } + minWidth: "150px", + }, }), lastTimeLocal({ headerDataTestId: "lbl_last_discovery_at", messageId: "lastDiscoveryAt", accessorKey: "last_discovery_at", style: { - minWidth: "170px" - } + minWidth: "170px", + }, }), - discoveryStatus() + discoveryStatus(), ], [] ); @@ -47,7 +47,7 @@ const Discovery = ({ discoveryInfos }) => { return discoveryInfos.map((info) => ({ ...info, - status: getStatus(info.last_discovery_at, info.last_error_at) + status: getStatus(info.last_discovery_at, info.last_error_at), })); }, [discoveryInfos]); @@ -60,7 +60,7 @@ const Discovery = ({ discoveryInfos }) => { data={tableData} columns={columns} counters={{ - show: false + show: false, }} /> @@ -71,7 +71,7 @@ const Status = ({ timestamp, attemptTimestamp, error }) => { const status = getBillingImportStatus({ timestamp, attemptTimestamp, - error + error, }); if (status === BILLING_IMPORT_STATUS.SUCCESS) { @@ -91,7 +91,7 @@ const AdvancedDataSourceDetails = ({ lastMetricsRetrieval, lastMetricsRetrievalAttempt, lastGettingMetricAttemptError, - discoveryInfos + discoveryInfos, }) => ( <> @@ -107,7 +107,7 @@ const AdvancedDataSourceDetails = ({ } @@ -120,7 +120,7 @@ const AdvancedDataSourceDetails = ({ } @@ -158,7 +158,7 @@ const AdvancedDataSourceDetails = ({ } @@ -171,7 +171,7 @@ const AdvancedDataSourceDetails = ({ } diff --git a/ngui/ui/src/components/AggregateFunctionFormattedMessage/AggregateFunctionFormattedMessage.tsx b/ngui/ui/src/components/AggregateFunctionFormattedMessage/AggregateFunctionFormattedMessage.tsx index 2f2035268..3b7c155f3 100644 --- a/ngui/ui/src/components/AggregateFunctionFormattedMessage/AggregateFunctionFormattedMessage.tsx +++ b/ngui/ui/src/components/AggregateFunctionFormattedMessage/AggregateFunctionFormattedMessage.tsx @@ -4,14 +4,14 @@ export const AGGREGATE_FUNCTION = Object.freeze({ LAST: "last", SUM: "sum", MAX: "max", - AVERAGE: "avg" + AVERAGE: "avg", }); export const AGGREGATE_FUNCTION_MESSAGE_ID = Object.freeze({ [AGGREGATE_FUNCTION.LAST]: "last", [AGGREGATE_FUNCTION.SUM]: "sum", [AGGREGATE_FUNCTION.MAX]: "max", - [AGGREGATE_FUNCTION.AVERAGE]: "average" + [AGGREGATE_FUNCTION.AVERAGE]: "average", }); const AggregateFunctionFormattedMessage = ({ aggregateFunction }) => ( diff --git a/ngui/ui/src/components/AggregateFunctionFormattedMessage/index.ts b/ngui/ui/src/components/AggregateFunctionFormattedMessage/index.ts index c17e979f6..c0eccacf5 100644 --- a/ngui/ui/src/components/AggregateFunctionFormattedMessage/index.ts +++ b/ngui/ui/src/components/AggregateFunctionFormattedMessage/index.ts @@ -1,6 +1,6 @@ import AggregateFunctionFormattedMessage, { AGGREGATE_FUNCTION, - AGGREGATE_FUNCTION_MESSAGE_ID + AGGREGATE_FUNCTION_MESSAGE_ID, } from "./AggregateFunctionFormattedMessage"; export default AggregateFunctionFormattedMessage; diff --git a/ngui/ui/src/components/AlertDialog/AlertDialog.styles.ts b/ngui/ui/src/components/AlertDialog/AlertDialog.styles.ts index c44fe2ee8..d53345c41 100644 --- a/ngui/ui/src/components/AlertDialog/AlertDialog.styles.ts +++ b/ngui/ui/src/components/AlertDialog/AlertDialog.styles.ts @@ -3,11 +3,11 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ alertDialogText: { marginTop: theme.spacing(1), - marginBottom: theme.spacing(0.5) + marginBottom: theme.spacing(0.5), }, alertDialogHeader: { - padding: "16px 24px 5px 24px" - } + padding: "16px 24px 5px 24px", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/AlertDialog/AlertDialog.test.tsx b/ngui/ui/src/components/AlertDialog/AlertDialog.test.tsx index 699cd82c1..08b308770 100644 --- a/ngui/ui/src/components/AlertDialog/AlertDialog.test.tsx +++ b/ngui/ui/src/components/AlertDialog/AlertDialog.test.tsx @@ -27,7 +27,7 @@ it("renders without crashing", () => { ul: (chunks) =>
      {chunks}
    , li: (chunks) =>
  • {chunks}
  • , strong: (chunks) => {chunks}, - br:
    + br:
    , }} /> } diff --git a/ngui/ui/src/components/AlreadyHaveAnAccountSignInMessage/AlreadyHaveAnAccountSignInMessage.tsx b/ngui/ui/src/components/AlreadyHaveAnAccountSignInMessage/AlreadyHaveAnAccountSignInMessage.tsx index 479fcf21a..65203b2f0 100644 --- a/ngui/ui/src/components/AlreadyHaveAnAccountSignInMessage/AlreadyHaveAnAccountSignInMessage.tsx +++ b/ngui/ui/src/components/AlreadyHaveAnAccountSignInMessage/AlreadyHaveAnAccountSignInMessage.tsx @@ -11,7 +11,7 @@ const AlreadyHaveAnAccountSignInMessage = () => { }; const to = `${LOGIN}?${stringifySearchParams({ - [OPTSCALE_CAPABILITY_QUERY_PARAMETER_NAME]: capability + [OPTSCALE_CAPABILITY_QUERY_PARAMETER_NAME]: capability, })}`; return ( diff --git a/ngui/ui/src/components/AnomaliesFilters/AnomaliesFilters.tsx b/ngui/ui/src/components/AnomaliesFilters/AnomaliesFilters.tsx index 124bb3634..dfe03b3e3 100644 --- a/ngui/ui/src/components/AnomaliesFilters/AnomaliesFilters.tsx +++ b/ngui/ui/src/components/AnomaliesFilters/AnomaliesFilters.tsx @@ -21,7 +21,7 @@ const AnomaliesFilters = ({ filters, showAll = false }) => { return { key: `${config.id}-${value}`, filterName: config.label, - filterValue: config.renderPerspectiveItem(value, appliedFilters) + filterValue: config.renderPerspectiveItem(value, appliedFilters), }; }); } @@ -38,8 +38,8 @@ const AnomaliesFilters = ({ filters, showAll = false }) => { { key: `${config.id}-${from}-${to}`, filterName: config.label, - filterValue: config.renderPerspectiveItem({ from, to }) - } + filterValue: config.renderPerspectiveItem({ from, to }), + }, ]; } diff --git a/ngui/ui/src/components/AnomalyRunChartCell/AnomalyRunChartCell.test.tsx b/ngui/ui/src/components/AnomalyRunChartCell/AnomalyRunChartCell.test.tsx index 2726289dd..1f38c104e 100644 --- a/ngui/ui/src/components/AnomalyRunChartCell/AnomalyRunChartCell.test.tsx +++ b/ngui/ui/src/components/AnomalyRunChartCell/AnomalyRunChartCell.test.tsx @@ -7,7 +7,7 @@ it("renders without crashing", () => { const root = createRoot(div); root.render( - + ); root.unmount(); diff --git a/ngui/ui/src/components/AnomalyRunChartCell/AnomalyRunChartCell.tsx b/ngui/ui/src/components/AnomalyRunChartCell/AnomalyRunChartCell.tsx index 1ec5c4adf..d70695347 100644 --- a/ngui/ui/src/components/AnomalyRunChartCell/AnomalyRunChartCell.tsx +++ b/ngui/ui/src/components/AnomalyRunChartCell/AnomalyRunChartCell.tsx @@ -27,7 +27,7 @@ const AnomalyRunChartCell = ({ breakdown, today, average, threshold, type, today } thresholdArea={{ start: average, - end: average * (1 + threshold / 100) + end: average * (1 + threshold / 100), }} /> ); diff --git a/ngui/ui/src/components/ApiErrorAlert/ApiErrorAlert.test.tsx b/ngui/ui/src/components/ApiErrorAlert/ApiErrorAlert.test.tsx index 1aa354279..0c08cc560 100644 --- a/ngui/ui/src/components/ApiErrorAlert/ApiErrorAlert.test.tsx +++ b/ngui/ui/src/components/ApiErrorAlert/ApiErrorAlert.test.tsx @@ -8,7 +8,7 @@ it("renders without crashing", () => { root.render( diff --git a/ngui/ui/src/components/ApiErrorAlert/ApiErrorAlert.tsx b/ngui/ui/src/components/ApiErrorAlert/ApiErrorAlert.tsx index f1c66154d..c3dbf21df 100644 --- a/ngui/ui/src/components/ApiErrorAlert/ApiErrorAlert.tsx +++ b/ngui/ui/src/components/ApiErrorAlert/ApiErrorAlert.tsx @@ -11,7 +11,7 @@ const ApiErrorAlert = () => { const { apiStateData: latestErrorLabel } = useApiStateData("latestErrorLabel"); const { - lastResult: { errorHandlerType, response: { data: { error = {} } = {}, config: { url } = {} } = {} } + lastResult: { errorHandlerType, response: { data: { error = {} } = {}, config: { url } = {} } = {} }, } = useLastResult(latestErrorLabel); const { isLoading } = useApiState(latestErrorLabel); @@ -41,7 +41,7 @@ const ApiErrorAlert = () => { openState={open} handleClose={handleClose} dataTestIds={{ - snackbar: "alert_error" + snackbar: "alert_error", }} /> ) : null; diff --git a/ngui/ui/src/components/ApiSuccessAlert/ApiSuccessAlert.test.tsx b/ngui/ui/src/components/ApiSuccessAlert/ApiSuccessAlert.test.tsx index 59ffb3dff..021895893 100644 --- a/ngui/ui/src/components/ApiSuccessAlert/ApiSuccessAlert.test.tsx +++ b/ngui/ui/src/components/ApiSuccessAlert/ApiSuccessAlert.test.tsx @@ -9,7 +9,7 @@ it("renders without crashing", () => { root.render( diff --git a/ngui/ui/src/components/ApiSuccessAlert/ApiSuccessAlert.tsx b/ngui/ui/src/components/ApiSuccessAlert/ApiSuccessAlert.tsx index 593a7c82a..f16ec92e6 100644 --- a/ngui/ui/src/components/ApiSuccessAlert/ApiSuccessAlert.tsx +++ b/ngui/ui/src/components/ApiSuccessAlert/ApiSuccessAlert.tsx @@ -12,7 +12,7 @@ const ApiSuccessAlert = () => { const { apiStateData: latestSuccessHandledLabel } = useApiStateData(LATEST_SUCCESS_HANDLED_LABEL); const { - lastResult: { successHandlerType, response: { data: { success = {} } = {} } = {} } + lastResult: { successHandlerType, response: { data: { success = {} } = {} } = {} }, } = useLastResult(latestSuccessHandledLabel); const { isLoading } = useApiState(latestSuccessHandledLabel); diff --git a/ngui/ui/src/components/ApolloApiErrorAlert/ApolloApiErrorAlert.tsx b/ngui/ui/src/components/ApolloApiErrorAlert/ApolloApiErrorAlert.tsx index e1e10f830..7cc7d7128 100644 --- a/ngui/ui/src/components/ApolloApiErrorAlert/ApolloApiErrorAlert.tsx +++ b/ngui/ui/src/components/ApolloApiErrorAlert/ApolloApiErrorAlert.tsx @@ -42,7 +42,7 @@ const ApolloApiErrorAlert = () => { openState={open} handleClose={handleClose} dataTestIds={{ - snackbar: "alert_error" + snackbar: "alert_error", }} /> ) diff --git a/ngui/ui/src/components/ApolloProvider/ApolloProvider.tsx b/ngui/ui/src/components/ApolloProvider/ApolloProvider.tsx index 42b55e534..ebaab40e4 100644 --- a/ngui/ui/src/components/ApolloProvider/ApolloProvider.tsx +++ b/ngui/ui/src/components/ApolloProvider/ApolloProvider.tsx @@ -1,3 +1,4 @@ +import type { ReactNode } from "react"; import { ApolloClient, ApolloProvider, InMemoryCache, split, HttpLink, from } from "@apollo/client"; import { onError, type ErrorResponse } from "@apollo/client/link/error"; import { RetryLink } from "@apollo/client/link/retry"; @@ -10,10 +11,14 @@ import { useSignOut } from "hooks/useSignOut"; import { processGraphQLErrorData } from "utils/apollo"; import { getEnvironmentVariable } from "utils/env"; +type ApolloClientProviderProps = { + children: ReactNode; +}; + const httpBase = getEnvironmentVariable("VITE_APOLLO_HTTP_BASE"); const wsBase = getEnvironmentVariable("VITE_APOLLO_WS_BASE"); -const ApolloClientProvider = ({ children }) => { +const ApolloClientProvider = ({ children }: ApolloClientProviderProps) => { const { token } = useGetToken(); const signOut = useSignOut(); @@ -21,21 +26,21 @@ const ApolloClientProvider = ({ children }) => { const cache = new InMemoryCache(); const httpLink = new HttpLink({ - uri: `${httpBase}/api`, + uri: (operation) => `${httpBase}/api?op=${operation.operationName}`, headers: { - "x-optscale-token": token - } + "x-optscale-token": token, + }, }); const wsLink = new GraphQLWsLink( createClient({ - url: `${wsBase}/subscriptions` + url: `${wsBase}/subscriptions`, }) ); const retryLink = new RetryLink({ attempts: { max: 3 }, - delay: { initial: 300, max: 2000, jitter: true } + delay: { initial: 300, max: 2000, jitter: true }, }); const errorLink = onError(({ graphQLErrors, networkError, operation }: ErrorResponse) => { @@ -82,7 +87,7 @@ const ApolloClientProvider = ({ children }) => { const client = new ApolloClient({ cache, - link + link, }); return {children}; diff --git a/ngui/ui/src/components/App/App.tsx b/ngui/ui/src/components/App/App.tsx index 66718b2e5..1142c5559 100644 --- a/ngui/ui/src/components/App/App.tsx +++ b/ngui/ui/src/components/App/App.tsx @@ -8,7 +8,7 @@ import { LOGIN, NEXT_QUERY_PARAMETER_NAME, OPTSCALE_CAPABILITY_QUERY_PARAMETER_NAME, - USER_EMAIL_QUERY_PARAMETER_NAME + USER_EMAIL_QUERY_PARAMETER_NAME, } from "urls"; import mainMenu from "utils/menus"; import { stringifySearchParams, getPathname, getSearchParams } from "utils/network"; diff --git a/ngui/ui/src/components/ApplyResourcePerspective/ApplyResourcePerspective.tsx b/ngui/ui/src/components/ApplyResourcePerspective/ApplyResourcePerspective.tsx index 023e85d3e..bed07bcc7 100644 --- a/ngui/ui/src/components/ApplyResourcePerspective/ApplyResourcePerspective.tsx +++ b/ngui/ui/src/components/ApplyResourcePerspective/ApplyResourcePerspective.tsx @@ -14,7 +14,7 @@ const PerspectiveDescription = ({ perspective }) => { const { breakdownBy, breakdownData, - filters: { filterValues, appliedFilters } + filters: { filterValues, appliedFilters }, } = perspective; return ( @@ -53,7 +53,7 @@ const ApplyResourcePerspective = ({ perspectives, appliedPerspectiveName, onAppl - ) + ), }} /> diff --git a/ngui/ui/src/components/ArchivedRecommendationAccordion/ArchivedRecommendationAccordion.tsx b/ngui/ui/src/components/ArchivedRecommendationAccordion/ArchivedRecommendationAccordion.tsx index 8b3a33699..236152a60 100644 --- a/ngui/ui/src/components/ArchivedRecommendationAccordion/ArchivedRecommendationAccordion.tsx +++ b/ngui/ui/src/components/ArchivedRecommendationAccordion/ArchivedRecommendationAccordion.tsx @@ -21,24 +21,24 @@ const ArchivedRecommendationAccordion = ({ archivedAt, onChange, isExpanded = false, - dataTestId + dataTestId, }) => { const dispatch = useDispatch(); const { organizationId } = useOrganizationInfo(); const { - apiData: { items = [] } + apiData: { items = [] }, } = useApiData(GET_ARCHIVED_OPTIMIZATION_DETAILS, {}); const { isLoading, shouldInvoke } = useApiState(GET_ARCHIVED_OPTIMIZATION_DETAILS, { organizationId, type: recommendationType, archivedAt, - reason + reason, }); - const allRecommendations = useAllRecommendations(); + const allRecommendations = useAllRecommendations({ withDeprecated: true }); useEffect(() => { if (isExpanded && shouldInvoke) { @@ -46,7 +46,7 @@ const ArchivedRecommendationAccordion = ({ getArchivedOptimizationDetails(organizationId, { type: recommendationType, archivedAt, - reason + reason, }) ); } @@ -79,7 +79,7 @@ const ArchivedRecommendationAccordion = ({ isLoading={isLoading} data={items} localization={{ - emptyMessageId: "noRecommendations" + emptyMessageId: "noRecommendations", }} pageSize={50} enablePaginationQueryParam={false} diff --git a/ngui/ui/src/components/ArchivedRecommendationAccordionTitle/ArchivedRecommendationAccordionTitle.tsx b/ngui/ui/src/components/ArchivedRecommendationAccordionTitle/ArchivedRecommendationAccordionTitle.tsx index d73ea2569..5f3ff6c26 100644 --- a/ngui/ui/src/components/ArchivedRecommendationAccordionTitle/ArchivedRecommendationAccordionTitle.tsx +++ b/ngui/ui/src/components/ArchivedRecommendationAccordionTitle/ArchivedRecommendationAccordionTitle.tsx @@ -27,7 +27,7 @@ const StyledKeyValueChip = ({ keyMessageId, value }: StyledKeyValueChipProps) => // Override the border color to make it contrast with the background when an accordion is expanded borderColor: (theme) => theme.palette.info.dark, // Override the text color to make it contrast with the background when an accordion is expanded - color: "inherit" + color: "inherit", }} label={} /> @@ -38,7 +38,7 @@ const ArchivedRecommendationAccordionTitle = ({ reason, count, archivedAt, - dataTestId + dataTestId, }: ArchivedRecommendationAccordionTitleProps) => ( diff --git a/ngui/ui/src/components/ArchivedRecommendationDescription/ArchivedRecommendationDescription.tsx b/ngui/ui/src/components/ArchivedRecommendationDescription/ArchivedRecommendationDescription.tsx index edbe007a6..b51173475 100644 --- a/ngui/ui/src/components/ArchivedRecommendationDescription/ArchivedRecommendationDescription.tsx +++ b/ngui/ui/src/components/ArchivedRecommendationDescription/ArchivedRecommendationDescription.tsx @@ -12,7 +12,7 @@ type ArchivedRecommendationDescriptionProps = { const ArchivedRecommendationDescription = ({ reason, dataTestId, - isLoading = false + isLoading = false, }: ArchivedRecommendationDescriptionProps) => { if (isLoading) { return ; diff --git a/ngui/ui/src/components/ArchivedRecommendations/ArchivedRecommendations.test.tsx b/ngui/ui/src/components/ArchivedRecommendations/ArchivedRecommendations.test.tsx index 908a02596..d56c8cf97 100644 --- a/ngui/ui/src/components/ArchivedRecommendations/ArchivedRecommendations.test.tsx +++ b/ngui/ui/src/components/ArchivedRecommendations/ArchivedRecommendations.test.tsx @@ -10,11 +10,11 @@ it("renders without crashing", () => { { const renderArchivedResourcesCountBarChart = () => { if (isChartLoading) { @@ -66,11 +66,11 @@ const ArchivedRecommendations = ({ breadcrumbs: [ - + , ], title: { text: , - dataTestId: "lbl_archived_recommendations" + dataTestId: "lbl_archived_recommendations", }, items: [ { @@ -80,9 +80,9 @@ const ArchivedRecommendations = ({ type: "button", action: onDownload, isLoading: isDownloading, - dataTestId: "btn_download" - } - ] + dataTestId: "btn_download", + }, + ], }; return ( diff --git a/ngui/ui/src/components/ArchivedRecommendations/ArchivedRecommendationsMocked.tsx b/ngui/ui/src/components/ArchivedRecommendations/ArchivedRecommendationsMocked.tsx index 84efcf3d2..054d6beb5 100644 --- a/ngui/ui/src/components/ArchivedRecommendations/ArchivedRecommendationsMocked.tsx +++ b/ngui/ui/src/components/ArchivedRecommendations/ArchivedRecommendationsMocked.tsx @@ -9,33 +9,33 @@ const ArchivedRecommendationsMocked = () => { count: 2, module: "abandoned_instances", archived_at: addDaysToTimestamp(firstDateRangePoint, 1), - reason: "recommendation_applied" + reason: "recommendation_applied", }, { count: 1, module: "abandoned_instances", archived_at: addDaysToTimestamp(firstDateRangePoint, 2), - reason: "recommendation_irrelevant" + reason: "recommendation_irrelevant", }, { count: 1, module: "abandoned_instances", archived_at: addDaysToTimestamp(firstDateRangePoint, 4), - reason: "recommendation_irrelevant" + reason: "recommendation_irrelevant", }, { count: 1, module: "abandoned_instances", archived_at: addDaysToTimestamp(firstDateRangePoint, 5), - reason: "recommendation_irrelevant" - } + reason: "recommendation_irrelevant", + }, ]; const archivedRecommendationsChartBreakdown = { [addDaysToTimestamp(firstDateRangePoint, 1)]: { abandoned_instances: { recommendation_irrelevant: 2 } }, [addDaysToTimestamp(firstDateRangePoint, 2)]: { abandoned_instances: { recommendation_applied: 1 } }, [addDaysToTimestamp(firstDateRangePoint, 4)]: { abandoned_instances: { recommendation_irrelevant: 1 } }, - [addDaysToTimestamp(firstDateRangePoint, 5)]: { abandoned_instances: { recommendation_irrelevant: 1 } } + [addDaysToTimestamp(firstDateRangePoint, 5)]: { abandoned_instances: { recommendation_irrelevant: 1 } }, }; return ( diff --git a/ngui/ui/src/components/ArchivedResourcesCountBarChart/ArchivedResourcesCountBarChart.styles.ts b/ngui/ui/src/components/ArchivedResourcesCountBarChart/ArchivedResourcesCountBarChart.styles.ts index d88b6c1f7..46383353a 100644 --- a/ngui/ui/src/components/ArchivedResourcesCountBarChart/ArchivedResourcesCountBarChart.styles.ts +++ b/ngui/ui/src/components/ArchivedResourcesCountBarChart/ArchivedResourcesCountBarChart.styles.ts @@ -3,9 +3,9 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ tooltip: { "& > *:not(:last-child)": { - marginBottom: theme.spacing(1.5) - } - } + marginBottom: theme.spacing(1.5), + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ArchivedResourcesCountBarChart/ArchivedResourcesCountBarChart.tsx b/ngui/ui/src/components/ArchivedResourcesCountBarChart/ArchivedResourcesCountBarChart.tsx index 150f5a0f2..6c6c41844 100644 --- a/ngui/ui/src/components/ArchivedResourcesCountBarChart/ArchivedResourcesCountBarChart.tsx +++ b/ngui/ui/src/components/ArchivedResourcesCountBarChart/ArchivedResourcesCountBarChart.tsx @@ -55,7 +55,7 @@ const getChartData = (breakdown) => { 0 ), 0 - ) + ), })); return chartData; @@ -69,14 +69,14 @@ const ArchivedResourcesCountBarChart = ({ onSelect, breakdown }) => { barName === selected ? { selectionState: NOT_SELECTED, - dateRange: null + dateRange: null, } : { selectionState: barName, dateRange: { startDate: data.dateTimestamp, - endDate: getEndOfDayInUTCinSeconds(secondsToMilliseconds(data.dateTimestamp)) - } + endDate: getEndOfDayInUTCinSeconds(secondsToMilliseconds(data.dateTimestamp)), + }, }; setSelected(selectionState); diff --git a/ngui/ui/src/components/ArtifactsTable/ArtifactsTable.tsx b/ngui/ui/src/components/ArtifactsTable/ArtifactsTable.tsx index fe0cc5807..5cd2191d5 100644 --- a/ngui/ui/src/components/ArtifactsTable/ArtifactsTable.tsx +++ b/ngui/ui/src/components/ArtifactsTable/ArtifactsTable.tsx @@ -5,7 +5,7 @@ import { Stack } from "@mui/material"; import { FormattedMessage } from "react-intl"; import { useNavigate } from "react-router-dom"; import LinearSelector from "components/LinearSelector"; -import { TABS } from "components/MlTaskRun/Components/Tabs"; +import { TABS } from "components/MlTaskRun/components/Tabs"; import { MlDeleteArtifactModal } from "components/SideModalManager/SideModals"; import Table from "components/Table"; import TableCellActions from "components/TableCellActions"; @@ -33,7 +33,7 @@ const ArtifactsTable = ({ artifacts, pagination, search, rangeFilter, tasksFilte const tableData = useMemo(() => artifacts, [artifacts]); const isManageArtifactsAllowed = useIsAllowed({ - requiredActions: ["EDIT_PARTNER"] + requiredActions: ["EDIT_PARTNER"], }); const navigate = useNavigate(); @@ -49,8 +49,8 @@ const ArtifactsTable = ({ artifacts, pagination, search, rangeFilter, tasksFilte id: "actions", cell: ({ row: { - original: { id: artifactId, name, index } - } + original: { id: artifactId, name, index }, + }, }) => ( , requiredActions: ["EDIT_PARTNER"], dataTestId: `btn_edit_${index}`, - action: () => navigate(getEditMlArtifactUrl(artifactId)) + action: () => navigate(getEditMlArtifactUrl(artifactId)), }, { key: "delete", @@ -79,12 +79,12 @@ const ArtifactsTable = ({ artifacts, pagination, search, rangeFilter, tasksFilte if (isLastArtifactOnPage) { pagination.onPageIndexChange(Math.max(pagination.pageIndex - 1, 0)); } - } - }) - } + }, + }), + }, ]} /> - ) + ), }); return [ @@ -93,7 +93,7 @@ const ArtifactsTable = ({ artifacts, pagination, search, rangeFilter, tasksFilte headerDataTestId: "lbl_name", accessorKey: "name", maxTextLength: 70, - enableSorting: false + enableSorting: false, }), slicedText({ headerMessageId: "path", @@ -101,14 +101,14 @@ const ArtifactsTable = ({ artifacts, pagination, search, rangeFilter, tasksFilte accessorKey: "path", maxTextLength: 70, copy: true, - enableSorting: false + enableSorting: false, }), markdown({ id: "description", accessorFn: (originalRow) => originalRow.description, headerMessageId: "description", headerDataTestId: "lbl_description", - enableSorting: false + enableSorting: false, }), run({ id: "run", @@ -121,15 +121,15 @@ const ArtifactsTable = ({ artifacts, pagination, search, rangeFilter, tasksFilte headerDataTestId: "lbl_run", enableSorting: false, runDetailsUrlOptions: { - [TAB_QUERY_PARAM_NAME]: TABS.ARTIFACTS - } + [TAB_QUERY_PARAM_NAME]: TABS.ARTIFACTS, + }, }), utcTime({ id: "createdAt", accessorFn: (originalRow) => originalRow.created_at, headerMessageId: "createdAt", headerDataTestId: "lbl_created_at", - enableSorting: false + enableSorting: false, }), tags({ id: "tags", @@ -138,9 +138,9 @@ const ArtifactsTable = ({ artifacts, pagination, search, rangeFilter, tasksFilte .map(([key, val]) => `${key}: ${val}`) .join(" "), getTags: (originalRow) => originalRow.tags, - enableSorting: false + enableSorting: false, }), - ...(isManageArtifactsAllowed ? [getActionsColumn()] : []) + ...(isManageArtifactsAllowed ? [getActionsColumn()] : []), ]; }, [artifacts.length, isManageArtifactsAllowed, navigate, openSideModal, pagination]); @@ -167,7 +167,7 @@ const ArtifactsTable = ({ artifacts, pagination, search, rangeFilter, tasksFilte rangeFilter={rangeFilter?.filterComponentProps} manualGlobalFiltering={{ search, - rangeFilter: rangeFilter?.manualFilterDefinition + rangeFilter: rangeFilter?.manualFilterDefinition, }} /> diff --git a/ngui/ui/src/components/AssignmentRules/AssignmentRules.tsx b/ngui/ui/src/components/AssignmentRules/AssignmentRules.tsx index 110a41fc2..01bb67d5d 100644 --- a/ngui/ui/src/components/AssignmentRules/AssignmentRules.tsx +++ b/ngui/ui/src/components/AssignmentRules/AssignmentRules.tsx @@ -12,12 +12,12 @@ const actionBarDefinition = { breadcrumbs: [ - + , ], title: { text: , - dataTestId: "lbl_assignment_rules" - } + dataTestId: "lbl_assignment_rules", + }, }; const AssignmentRules = ({ rules, managedPools, onUpdatePriority, isLoadingProps = {}, isUpdateLoading = false }) => ( @@ -35,7 +35,7 @@ const AssignmentRules = ({ rules, managedPools, onUpdatePriority, isLoadingProps position="bottom" alertProps={{ messageId: "assignmentRulesPageDescription", - messageDataTestId: "p_environments_list" + messageDataTestId: "p_environments_list", }} /> diff --git a/ngui/ui/src/components/AssignmentRules/AssignmentRulesMocked.tsx b/ngui/ui/src/components/AssignmentRules/AssignmentRulesMocked.tsx index f72cf200e..cea7162b1 100644 --- a/ngui/ui/src/components/AssignmentRules/AssignmentRulesMocked.tsx +++ b/ngui/ui/src/components/AssignmentRules/AssignmentRulesMocked.tsx @@ -16,7 +16,7 @@ const rules = { pool_purpose: "team", pool_id: "72976397-9606-48dc-9f85-188849d9cbcc", active: true, - conditions: [{ id: "4e8524ec-ee00-4a41-8537-eb3ff14dd78b", type: "name_ends_with", meta_info: "-integration_dev_dc" }] + conditions: [{ id: "4e8524ec-ee00-4a41-8537-eb3ff14dd78b", type: "name_ends_with", meta_info: "-integration_dev_dc" }], }, { priority: 2, @@ -33,8 +33,8 @@ const rules = { pool_id: "72976397-9606-48dc-9f85-188849d9cbcc", active: true, conditions: [ - { id: "4def7fff-9e61-4f58-8041-491bb3b79c76", type: "name_is", meta_info: "sunflower_availability_test_volume" } - ] + { id: "4def7fff-9e61-4f58-8041-491bb3b79c76", type: "name_is", meta_info: "sunflower_availability_test_volume" }, + ], }, { priority: 3, @@ -51,8 +51,8 @@ const rules = { pool_id: "72976397-9606-48dc-9f85-188849d9cbcc", active: true, conditions: [ - { id: "73bf0503-6dd5-422d-9a7d-6a9a9e08231a", type: "name_is", meta_info: "sunflower_availability_test_agent" } - ] + { id: "73bf0503-6dd5-422d-9a7d-6a9a9e08231a", type: "name_is", meta_info: "sunflower_availability_test_agent" }, + ], }, { priority: 4, @@ -69,8 +69,8 @@ const rules = { pool_id: "5bd7803a-408d-4281-9598-4c6095f444b4", active: true, conditions: [ - { id: "36ec6b00-29c4-4ac2-811c-1a5d1b6a58c5", type: "name_starts_with", meta_info: "sunflower_lily_VA_MGR_AWS_3_4" } - ] + { id: "36ec6b00-29c4-4ac2-811c-1a5d1b6a58c5", type: "name_starts_with", meta_info: "sunflower_lily_VA_MGR_AWS_3_4" }, + ], }, { priority: 5, @@ -87,8 +87,8 @@ const rules = { pool_id: "72976397-9606-48dc-9f85-188849d9cbcc", active: true, conditions: [ - { id: "fcd01848-063b-48e5-956c-ed7c07a58bbd", type: "name_starts_with", meta_info: "baget_smoke_managed__cloud_agent" } - ] + { id: "fcd01848-063b-48e5-956c-ed7c07a58bbd", type: "name_starts_with", meta_info: "baget_smoke_managed__cloud_agent" }, + ], }, { priority: 6, @@ -105,8 +105,8 @@ const rules = { pool_id: "72976397-9606-48dc-9f85-188849d9cbcc", active: true, conditions: [ - { id: "8464fee2-eabc-4e73-aaf2-5862446ef445", type: "name_starts_with", meta_info: "failback_smoke_manag_cloud_agent" } - ] + { id: "8464fee2-eabc-4e73-aaf2-5862446ef445", type: "name_starts_with", meta_info: "failback_smoke_manag_cloud_agent" }, + ], }, { priority: 7, @@ -126,17 +126,17 @@ const rules = { { id: "4330bb5c-8947-4767-97b6-ce3c6771dd1b", type: "tag_is", - meta_info: '{"key":"orchid_owner_id","value":"9c458a6d-13b4-47d5-b921-b75ee8bf8101"}' + meta_info: '{"key":"orchid_owner_id","value":"9c458a6d-13b4-47d5-b921-b75ee8bf8101"}', }, { id: "55d49bab-4e06-4866-b886-fe53fc725c26", type: "name_starts_with", meta_info: "Engineering" }, { id: "cca32a09-bf7c-4af6-9d98-edf5b70f364c", type: "tag_is", - meta_info: '{"key":"orchid_pool_id","value":"6731a6ef-7b52-44ed-bc69-a137c36f8840"}' - } - ] - } - ] + meta_info: '{"key":"orchid_pool_id","value":"6731a6ef-7b52-44ed-bc69-a137c36f8840"}', + }, + ], + }, + ], }; const AssignmentRulesMocked = () => {}} />; diff --git a/ngui/ui/src/components/AssignmentRulesTable/AssignmentRulesTable.tsx b/ngui/ui/src/components/AssignmentRulesTable/AssignmentRulesTable.tsx index a9001aece..3081b8ab4 100644 --- a/ngui/ui/src/components/AssignmentRulesTable/AssignmentRulesTable.tsx +++ b/ngui/ui/src/components/AssignmentRulesTable/AssignmentRulesTable.tsx @@ -40,7 +40,7 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda () => prepareData({ assignmentRules, - entities + entities, }), [assignmentRules, entities] ); @@ -53,15 +53,15 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda messageId: "edit", icon: , action: (rowDataId) => navigate(getEditAssignmentRuleUrl(rowDataId)), - dataTestId: "btn_edit" + dataTestId: "btn_edit", }, { messageId: "delete", icon: , action: (rowDataId) => openSideModal(DeleteAssignmentRuleModal, { ruleId: rowDataId }), dataTestId: "btn_delete", - color: "error" - } + color: "error", + }, ]; const priorityActions = [ @@ -76,8 +76,8 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda disabled: isRestricted, tooltip: { show: isRestricted, - value: restrictionReasonMessage - } + value: restrictionReasonMessage, + }, }, { messageId: "promote", @@ -90,8 +90,8 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda disabled: isRestricted, tooltip: { show: isRestricted, - value: restrictionReasonMessage - } + value: restrictionReasonMessage, + }, }, { messageId: "demote", @@ -104,8 +104,8 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda disabled: isRestricted, tooltip: { show: isRestricted, - value: restrictionReasonMessage - } + value: restrictionReasonMessage, + }, }, { messageId: "deprioritize", @@ -118,9 +118,9 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda disabled: isRestricted, tooltip: { show: isRestricted, - value: restrictionReasonMessage - } - } + value: restrictionReasonMessage, + }, + }, ]; return [ @@ -148,7 +148,7 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda disabled: item.disabled || original.priority === item.disabledPriority, icon: item.icon, tooltip: item.tooltip, - action: () => item.action(original.id) + action: () => item.action(original.id), })), ...basicActions.map((item) => ({ key: item.messageId, @@ -156,14 +156,14 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda icon: item.icon, action: () => item.action(original.id), dataTestId: `${item.dataTestId}_${id}`, - color: item.color - })) + color: item.color, + })), ]} /> - ) - } + ), + }, ] - : []) + : []), ]; }, [isRestricted, restrictionReasonMessage, rulesCount, isManageAllowed, navigate, openSideModal, onUpdatePriority]); @@ -178,7 +178,7 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda type: "button", dataTestId: "btn_add", action: addButtonAction, - requiredActions: ["EDIT_PARTNER"] + requiredActions: ["EDIT_PARTNER"], }, { key: "bu-reapply", @@ -188,9 +188,9 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda action: () => openSideModal(ReapplyRulesetModal, { managedPools }), dataTestId: "btn_re_apply", show: !isEmptyArray(managedPools), - isLoading: isGetManagedPoolsLoading - } - ] + isLoading: isGetManagedPoolsLoading, + }, + ], }; return isGetAssignmentRulesLoading ? ( @@ -204,11 +204,11 @@ const AssignmentRulesTable = ({ rules, managedPools, isLoadingProps = {}, onUpda localization={{ emptyMessageId: "noAutomaticResourceAssignmentRules" }} actionBar={{ show: true, - definition: actionBarDefinition + definition: actionBarDefinition, }} pageSize={50} dataTestIds={{ - container: "table_rules" + container: "table_rules", }} /> diff --git a/ngui/ui/src/components/AssignmentRulesTable/PoolAssignmentRulesTable.tsx b/ngui/ui/src/components/AssignmentRulesTable/PoolAssignmentRulesTable.tsx index 52125bedb..ae98fc0c3 100644 --- a/ngui/ui/src/components/AssignmentRulesTable/PoolAssignmentRulesTable.tsx +++ b/ngui/ui/src/components/AssignmentRulesTable/PoolAssignmentRulesTable.tsx @@ -11,7 +11,7 @@ const PoolAssignmentRulesTable = ({ rules, isLoading = false }) => { () => prepareData({ assignmentRules, - entities + entities, }), [assignmentRules, entities] ); @@ -27,7 +27,7 @@ const PoolAssignmentRulesTable = ({ rules, isLoading = false }) => { columns={columns} localization={{ emptyMessageId: "noAutomaticResourceAssignmentRules" }} dataTestIds={{ - container: "table_rules" + container: "table_rules", }} pageSize={50} enablePaginationQueryParam={false} diff --git a/ngui/ui/src/components/AssignmentRulesTable/columns/conditions.tsx b/ngui/ui/src/components/AssignmentRulesTable/columns/conditions.tsx index 6cd5e40b2..a2c3b62c8 100644 --- a/ngui/ui/src/components/AssignmentRulesTable/columns/conditions.tsx +++ b/ngui/ui/src/components/AssignmentRulesTable/columns/conditions.tsx @@ -8,7 +8,7 @@ const conditions = () => ({ ), accessorKey: "conditionsObject.conditionsString", - cell: ({ row: { original } }) => original.conditionsObject.conditionsRender + cell: ({ row: { original } }) => original.conditionsObject.conditionsRender, }); export default conditions; diff --git a/ngui/ui/src/components/AssignmentRulesTable/columns/name.tsx b/ngui/ui/src/components/AssignmentRulesTable/columns/name.tsx index 314858046..e276245d5 100644 --- a/ngui/ui/src/components/AssignmentRulesTable/columns/name.tsx +++ b/ngui/ui/src/components/AssignmentRulesTable/columns/name.tsx @@ -16,7 +16,7 @@ const name = () => ({ label={} tooltip={{ show: true, messageId: original.active ? "active" : "inactive", placement: "right" }} /> - ) + ), }); export default name; diff --git a/ngui/ui/src/components/AssignmentRulesTable/columns/owner.tsx b/ngui/ui/src/components/AssignmentRulesTable/columns/owner.tsx index b22a90d8d..2e0197b81 100644 --- a/ngui/ui/src/components/AssignmentRulesTable/columns/owner.tsx +++ b/ngui/ui/src/components/AssignmentRulesTable/columns/owner.tsx @@ -4,7 +4,7 @@ const owner = () => text({ headerMessageId: "owner", headerDataTestId: "lbl_owner", - accessorKey: "owner_name" + accessorKey: "owner_name", }); export default owner; diff --git a/ngui/ui/src/components/AssignmentRulesTable/columns/poolOwner.tsx b/ngui/ui/src/components/AssignmentRulesTable/columns/poolOwner.tsx index 2faccc4dd..e656f350f 100644 --- a/ngui/ui/src/components/AssignmentRulesTable/columns/poolOwner.tsx +++ b/ngui/ui/src/components/AssignmentRulesTable/columns/poolOwner.tsx @@ -14,7 +14,7 @@ const poolOwner = () => ({ - ) + ), }); export default poolOwner; diff --git a/ngui/ui/src/components/AssignmentRulesTable/columns/priority.tsx b/ngui/ui/src/components/AssignmentRulesTable/columns/priority.tsx index 5cca6ea44..758051bb8 100644 --- a/ngui/ui/src/components/AssignmentRulesTable/columns/priority.tsx +++ b/ngui/ui/src/components/AssignmentRulesTable/columns/priority.tsx @@ -8,7 +8,7 @@ const priority = () => ({ ), accessorKey: "priority", - defaultSort: "asc" + defaultSort: "asc", }); export default priority; diff --git a/ngui/ui/src/components/AssignmentRulesTable/utils/prepareData.tsx b/ngui/ui/src/components/AssignmentRulesTable/utils/prepareData.tsx index 91d6d6005..f38f024fe 100644 --- a/ngui/ui/src/components/AssignmentRulesTable/utils/prepareData.tsx +++ b/ngui/ui/src/components/AssignmentRulesTable/utils/prepareData.tsx @@ -10,7 +10,7 @@ import { CLOUD_IS, TAG_VALUE_STARTS_WITH, REGION_IS, - ASSIGNMENT_RULE_OPERATORS + ASSIGNMENT_RULE_OPERATORS, } from "utils/constants"; const ConditionHeaderMessage = ({ operator = ASSIGNMENT_RULE_OPERATORS.AND }) => { @@ -27,7 +27,7 @@ const ConditionHeaderMessage = ({ operator = ASSIGNMENT_RULE_OPERATORS.AND }) => const prepareData = ({ assignmentRules, entities }) => { const translateType = (type) => intl.formatMessage({ - id: CONDITION_TYPES[type] + id: CONDITION_TYPES[type], }); const getConditionsObject = (conditions, operator = ASSIGNMENT_RULE_OPERATORS.AND) => @@ -72,20 +72,20 @@ const prepareData = ({ assignmentRules, entities }) => { )}: ${value}`, conditionsRender: [ ...resultObject.conditionsRender, - - ] + , + ], }; }, { conditionsString: "", - conditionsRender: conditions.length > 1 ? [] : [] + conditionsRender: conditions.length > 1 ? [] : [], } ); return assignmentRules.map(({ conditions = {}, operator = ASSIGNMENT_RULE_OPERATORS.AND, ...rest }) => ({ ...rest, "pool/owner": `${rest.pool_name} ${rest.owner_name}`, - conditionsObject: getConditionsObject(conditions, operator) + conditionsObject: getConditionsObject(conditions, operator), })); }; diff --git a/ngui/ui/src/components/BIExport/BIExport.tsx b/ngui/ui/src/components/BIExport/BIExport.tsx index cfe340bb4..e5acbd1fc 100644 --- a/ngui/ui/src/components/BIExport/BIExport.tsx +++ b/ngui/ui/src/components/BIExport/BIExport.tsx @@ -7,8 +7,7 @@ import ActionBar from "components/ActionBar"; import PageContentWrapper from "components/PageContentWrapper"; import { BI_EXPORTS, INTEGRATIONS, getEditBIExportUrl } from "urls"; import { getBIExportActivityStatus, getBIExportStatus } from "utils/biExport"; -import { FilesSummaryList, TargetStorageSummaryList } from "./Components"; -import DetailsSummaryList from "./Components/DetailsSummaryList"; +import { FilesSummaryList, TargetStorageSummaryList, DetailsSummaryList } from "./components"; const BIExport = ({ biExport, isLoading = false }) => { const { @@ -22,7 +21,7 @@ const BIExport = ({ biExport, isLoading = false }) => { next_run: nextRun = 0, last_status_error: lastStatusError, meta, - files = [] + files = [], } = biExport; const status = getBIExportStatus(biExport); @@ -39,12 +38,12 @@ const BIExport = ({ biExport, isLoading = false }) => { , - + , ], title: { text: name, dataTestId: "lbl_bi_export", - isLoading + isLoading, }, items: [ { @@ -54,9 +53,9 @@ const BIExport = ({ biExport, isLoading = false }) => { type: "button", link: getEditBIExportUrl(id), isLoading, - requiredActions: ["EDIT_PARTNER"] - } - ] + requiredActions: ["EDIT_PARTNER"], + }, + ], }} /> diff --git a/ngui/ui/src/components/BIExport/Components/index.ts b/ngui/ui/src/components/BIExport/Components/index.ts deleted file mode 100644 index 12c270520..000000000 --- a/ngui/ui/src/components/BIExport/Components/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import FilesSummaryList from "./FilesSummaryList"; -import TargetStorageSummaryList from "./TargetStorageSummaryList"; - -export { FilesSummaryList, TargetStorageSummaryList }; diff --git a/ngui/ui/src/components/BIExport/Components/DetailsSummaryList/DetailsSummaryList.tsx b/ngui/ui/src/components/BIExport/components/DetailsSummaryList/DetailsSummaryList.tsx similarity index 92% rename from ngui/ui/src/components/BIExport/Components/DetailsSummaryList/DetailsSummaryList.tsx rename to ngui/ui/src/components/BIExport/components/DetailsSummaryList/DetailsSummaryList.tsx index 38ead780c..c6778f7c7 100644 --- a/ngui/ui/src/components/BIExport/Components/DetailsSummaryList/DetailsSummaryList.tsx +++ b/ngui/ui/src/components/BIExport/components/DetailsSummaryList/DetailsSummaryList.tsx @@ -32,7 +32,7 @@ const DetailsSummaryList = ({ status, nextRun, lastStatusError, - isLoading = false + isLoading = false, }) => ( } @@ -45,7 +45,7 @@ const DetailsSummaryList = ({ {id} @@ -65,7 +65,7 @@ const DetailsSummaryList = ({ ) @@ -81,7 +81,7 @@ const DetailsSummaryList = ({ ) @@ -99,11 +99,11 @@ const DetailsSummaryList = ({ keyMessageId="reason" value={lastStatusError} sx={{ - maxWidth: "600px" + maxWidth: "600px", }} /> ) : undefined, - } /> + } />, ].filter(Boolean)} /> ); diff --git a/ngui/ui/src/components/BIExport/Components/DetailsSummaryList/index.ts b/ngui/ui/src/components/BIExport/components/DetailsSummaryList/index.ts similarity index 100% rename from ngui/ui/src/components/BIExport/Components/DetailsSummaryList/index.ts rename to ngui/ui/src/components/BIExport/components/DetailsSummaryList/index.ts diff --git a/ngui/ui/src/components/BIExport/Components/FilesSummaryList/FilesSummaryList.tsx b/ngui/ui/src/components/BIExport/components/FilesSummaryList/FilesSummaryList.tsx similarity index 93% rename from ngui/ui/src/components/BIExport/Components/FilesSummaryList/FilesSummaryList.tsx rename to ngui/ui/src/components/BIExport/components/FilesSummaryList/FilesSummaryList.tsx index 2ee8a512b..2fcfa368d 100644 --- a/ngui/ui/src/components/BIExport/Components/FilesSummaryList/FilesSummaryList.tsx +++ b/ngui/ui/src/components/BIExport/components/FilesSummaryList/FilesSummaryList.tsx @@ -15,22 +15,22 @@ const getFiles = (files: string[]) => case file.includes("expenses.csv"): return { path: file, - type: "expenses" + type: "expenses", } as const; case file.includes("recommendations.csv"): return { path: file, - type: "recommendations" + type: "recommendations", } as const; case file.includes("resources.csv"): return { path: file, - type: "resources" + type: "resources", } as const; default: return { path: null, - type: "" + type: "", } as const; } }); diff --git a/ngui/ui/src/components/BIExport/Components/FilesSummaryList/index.ts b/ngui/ui/src/components/BIExport/components/FilesSummaryList/index.ts similarity index 100% rename from ngui/ui/src/components/BIExport/Components/FilesSummaryList/index.ts rename to ngui/ui/src/components/BIExport/components/FilesSummaryList/index.ts diff --git a/ngui/ui/src/components/BIExport/Components/TargetStorageSummaryList/TargetStorageSummaryList.tsx b/ngui/ui/src/components/BIExport/components/TargetStorageSummaryList/TargetStorageSummaryList.tsx similarity index 93% rename from ngui/ui/src/components/BIExport/Components/TargetStorageSummaryList/TargetStorageSummaryList.tsx rename to ngui/ui/src/components/BIExport/components/TargetStorageSummaryList/TargetStorageSummaryList.tsx index 95442dc78..ce9d78fda 100644 --- a/ngui/ui/src/components/BIExport/Components/TargetStorageSummaryList/TargetStorageSummaryList.tsx +++ b/ngui/ui/src/components/BIExport/components/TargetStorageSummaryList/TargetStorageSummaryList.tsx @@ -11,7 +11,7 @@ const TypeLabel = ({ type }) => { [BI_EXPORT_STORAGE_TYPE.AWS_RAW_EXPORT]: } />, [BI_EXPORT_STORAGE_TYPE.AZURE_RAW_EXPORT]: ( } /> - ) + ), })[type]; return ; @@ -26,15 +26,15 @@ const TargetStorageSummaryList = ({ type, meta, isLoading = false }) => ( ...(type === BI_EXPORT_STORAGE_TYPE.AWS_RAW_EXPORT ? [ , - + , ] : []), ...(type === BI_EXPORT_STORAGE_TYPE.AZURE_RAW_EXPORT ? [ , - + , ] - : []) + : []), ]} /> ); diff --git a/ngui/ui/src/components/BIExport/Components/TargetStorageSummaryList/index.ts b/ngui/ui/src/components/BIExport/components/TargetStorageSummaryList/index.ts similarity index 100% rename from ngui/ui/src/components/BIExport/Components/TargetStorageSummaryList/index.ts rename to ngui/ui/src/components/BIExport/components/TargetStorageSummaryList/index.ts diff --git a/ngui/ui/src/components/BIExport/components/index.ts b/ngui/ui/src/components/BIExport/components/index.ts new file mode 100644 index 000000000..aa52765aa --- /dev/null +++ b/ngui/ui/src/components/BIExport/components/index.ts @@ -0,0 +1,5 @@ +import DetailsSummaryList from "./DetailsSummaryList"; +import FilesSummaryList from "./FilesSummaryList"; +import TargetStorageSummaryList from "./TargetStorageSummaryList"; + +export { FilesSummaryList, TargetStorageSummaryList, DetailsSummaryList }; diff --git a/ngui/ui/src/components/BIExports/BIExports.tsx b/ngui/ui/src/components/BIExports/BIExports.tsx index 5e1c6d207..107a20279 100644 --- a/ngui/ui/src/components/BIExports/BIExports.tsx +++ b/ngui/ui/src/components/BIExports/BIExports.tsx @@ -15,12 +15,12 @@ const BIExports = ({ biExports, isLoading = false }) => ( breadcrumbs: [ - + , ], title: { text: , - dataTestId: "lbl_bi_exports" - } + dataTestId: "lbl_bi_exports", + }, }} /> @@ -28,7 +28,7 @@ const BIExports = ({ biExports, isLoading = false }) => ( diff --git a/ngui/ui/src/components/BIExportsTable/BIExportsTable.tsx b/ngui/ui/src/components/BIExportsTable/BIExportsTable.tsx index 40729f69f..2be6ca984 100644 --- a/ngui/ui/src/components/BIExportsTable/BIExportsTable.tsx +++ b/ngui/ui/src/components/BIExportsTable/BIExportsTable.tsx @@ -7,7 +7,7 @@ import { biExportLastSuccessfulExport, biExportName, biExportNextExport, - biExportTargetStorage + biExportTargetStorage, } from "utils/columns"; const BIExportsTable = ({ exports }) => { @@ -17,7 +17,7 @@ const BIExportsTable = ({ exports }) => { biExportTargetStorage(), biExportExportedDays(), biExportLastSuccessfulExport(), - biExportNextExport() + biExportNextExport(), ], [] ); @@ -40,15 +40,15 @@ const BIExportsTable = ({ exports }) => { type: "button", link: CREATE_BI_EXPORT, dataTestId: "btn_add", - requiredActions: ["EDIT_PARTNER"] - } - ] - } + requiredActions: ["EDIT_PARTNER"], + }, + ], + }, }} pageSize={50} columns={columns} localization={{ - emptyMessageId: "noBIExports" + emptyMessageId: "noBIExports", }} /> ); diff --git a/ngui/ui/src/components/BINextExportTimeLabel/BINextExportTimeLabel.tsx b/ngui/ui/src/components/BINextExportTimeLabel/BINextExportTimeLabel.tsx index 4d7de0e40..5932997a9 100644 --- a/ngui/ui/src/components/BINextExportTimeLabel/BINextExportTimeLabel.tsx +++ b/ngui/ui/src/components/BINextExportTimeLabel/BINextExportTimeLabel.tsx @@ -15,7 +15,7 @@ const BINextExportTimeLabel = ({ nextRun, activity }) => { ); diff --git a/ngui/ui/src/components/Backdrop/Backdrop.styles.ts b/ngui/ui/src/components/Backdrop/Backdrop.styles.ts index 818a016bb..088139651 100644 --- a/ngui/ui/src/components/Backdrop/Backdrop.styles.ts +++ b/ngui/ui/src/components/Backdrop/Backdrop.styles.ts @@ -7,17 +7,17 @@ const useStyles = makeStyles()((theme, aboveDrawers = false) => ({ backdrop: { zIndex: theme.zIndex.drawer + (aboveDrawers ? 1 : -1), // backdrop is one level below drawers by default. But in rare cases (whole app loader) — it is one level above backgroundColor: alpha(theme.palette.info.main, ALPHA), - transform: "translateZ(0)" // fix for safari "jumpy" behaviour with transitions https://stackoverflow.com/a/37820050 + https://stackoverflow.com/q/57960955 + transform: "translateZ(0)", // fix for safari "jumpy" behaviour with transitions https://stackoverflow.com/a/37820050 + https://stackoverflow.com/q/57960955 }, content: { position: "absolute", alignItems: "flex-start", - backgroundColor: alpha(theme.palette.common.white, 0.8) + backgroundColor: alpha(theme.palette.common.white, 0.8), }, contentLoader: { position: "absolute", - backgroundColor: alpha(theme.palette.common.white, 0.8) - } + backgroundColor: alpha(theme.palette.common.white, 0.8), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/BillingSubscription/BillingSubscription.tsx b/ngui/ui/src/components/BillingSubscription/BillingSubscription.tsx index 2224d0b2e..deec3abb2 100644 --- a/ngui/ui/src/components/BillingSubscription/BillingSubscription.tsx +++ b/ngui/ui/src/components/BillingSubscription/BillingSubscription.tsx @@ -5,7 +5,7 @@ import { useBillingSubscriptionPlansQuery, useBillingSubscriptionQuery, useOrganizationSummaryQuery, - BillingSubscriptionPlansQuery + BillingSubscriptionPlansQuery, } from "graphql/__generated__/hooks/restapi"; import { useIsManageBillingSubscriptionAllowed } from "hooks/useIsManageBillingSubscriptionAllowed"; import { useOrganizationInfo } from "hooks/useOrganizationInfo"; @@ -28,55 +28,55 @@ const useData = () => { const { data: subscriptionPlansData, loading: plansLoading, - error: plansError + error: plansError, } = useBillingSubscriptionPlansQuery({ variables: { - organizationId - } + organizationId, + }, }); const { data: subscriptionData, loading: subscriptionLoading, - error: subscriptionError + error: subscriptionError, } = useBillingSubscriptionQuery({ variables: { - organizationId + organizationId, }, pollInterval: 30 * MILLISECONDS_IN_SECOND, context: { - suppressAlertForErrorCodes: [ERROR_CODES.OE0002] - } + suppressAlertForErrorCodes: [ERROR_CODES.OE0002], + }, }); const { data: organizationSummaryData, loading: organizationSummaryLoading, - error: organizationSummaryError + error: organizationSummaryError, } = useOrganizationSummaryQuery({ variables: { organizationId, params: { - entity: ["month_expenses", "cloud_accounts", "employees"] - } - } + entity: ["month_expenses", "cloud_accounts", "employees"], + }, + }, }); return { loading: { plans: plansLoading, subscription: subscriptionLoading, - organizationSummary: organizationSummaryLoading + organizationSummary: organizationSummaryLoading, }, error: { plans: plansError, subscription: subscriptionError, - organizationSummary: organizationSummaryError + organizationSummary: organizationSummaryError, }, data: { billingSubscriptionPlans: subscriptionPlansData?.billingSubscriptionPlans, billingSubscription: subscriptionData?.billingSubscription, - organizationSummary: organizationSummaryData?.organizationSummary - } + organizationSummary: organizationSummaryData?.organizationSummary, + }, }; }; @@ -86,7 +86,7 @@ const BillingSubscription = () => { const { loading, error, - data: { billingSubscriptionPlans, billingSubscription, organizationSummary } + data: { billingSubscriptionPlans, billingSubscription, organizationSummary }, } = useData(); const isLoading = loading.plans || loading.subscription || loading.organizationSummary; @@ -123,12 +123,12 @@ const BillingSubscription = () => { monthlyPlan={{ id: monthlyProPlan.id, price: monthlyProPlan.price, - currency: monthlyProPlan.currency + currency: monthlyProPlan.currency, }} annualPlan={{ id: annualProPlan.id, price: annualProPlan.price, - currency: annualProPlan.currency + currency: annualProPlan.currency, }} /> )} diff --git a/ngui/ui/src/components/BillingSubscription/components/Actions/ManageSubscriptionButton.tsx b/ngui/ui/src/components/BillingSubscription/components/Actions/ManageSubscriptionButton.tsx index 10c5b4381..a9878b5fa 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Actions/ManageSubscriptionButton.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Actions/ManageSubscriptionButton.tsx @@ -12,8 +12,8 @@ const ManageSubscriptionButton = () => { const handleManageSubscription = async () => { const { data } = await createStripeBillingPortalSession({ variables: { - organizationId - } + organizationId, + }, }); if (data?.createStripeBillingPortalSession?.url) { diff --git a/ngui/ui/src/components/BillingSubscription/components/Actions/UpgradeSubscriptionButton.tsx b/ngui/ui/src/components/BillingSubscription/components/Actions/UpgradeSubscriptionButton.tsx index 44202d0d1..19aeba711 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Actions/UpgradeSubscriptionButton.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Actions/UpgradeSubscriptionButton.tsx @@ -20,9 +20,9 @@ const UpgradeSubscriptionButton = ({ text, billingSubscriptionPlanId }: UpgradeS variables: { organizationId, params: { - plan_id: billingSubscriptionPlanId - } - } + plan_id: billingSubscriptionPlanId, + }, + }, }); if (data?.createStripeCheckoutSession?.url) { diff --git a/ngui/ui/src/components/BillingSubscription/components/Actions/UpgradeToEnterpriseButton.tsx b/ngui/ui/src/components/BillingSubscription/components/Actions/UpgradeToEnterpriseButton.tsx index 2a5a086eb..022b99f42 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Actions/UpgradeToEnterpriseButton.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Actions/UpgradeToEnterpriseButton.tsx @@ -11,7 +11,7 @@ const UpgradeToEnterpriseButton = () => ( href={CONTACT_US_URL} startIcon={} sx={{ - whiteSpace: "nowrap" + whiteSpace: "nowrap", }} /> ); diff --git a/ngui/ui/src/components/BillingSubscription/components/Alerts/CanceledAlert.tsx b/ngui/ui/src/components/BillingSubscription/components/Alerts/CanceledAlert.tsx index 67c1b8363..c2bd41c43 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Alerts/CanceledAlert.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Alerts/CanceledAlert.tsx @@ -12,7 +12,7 @@ const CanceledAlert = ({ endDate }: CanceledAlertProps) => ( diff --git a/ngui/ui/src/components/BillingSubscription/components/Alerts/LimitExceededAlert.tsx b/ngui/ui/src/components/BillingSubscription/components/Alerts/LimitExceededAlert.tsx index eedf92e79..68fa15946 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Alerts/LimitExceededAlert.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Alerts/LimitExceededAlert.tsx @@ -15,7 +15,7 @@ const LimitExceededAlert = ({ gracePeriodStart, gracePeriodDays }: LimitExceeded chunks + manageSettingsLabel: (chunks) => chunks, }} /> diff --git a/ngui/ui/src/components/BillingSubscription/components/Cards/Plan/ProPlanCard.tsx b/ngui/ui/src/components/BillingSubscription/components/Cards/Plan/ProPlanCard.tsx index 7052b214c..b122e27b0 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Cards/Plan/ProPlanCard.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Cards/Plan/ProPlanCard.tsx @@ -34,13 +34,13 @@ const ProPlanCard = ({ monthlyPlan, annualPlan }: ProPlanCardProps) => { { id: BILLING_CYCLE.MONTHLY, messageId: "subscriptionBillingCycle.monthly", - action: () => setBillingCycle(BILLING_CYCLE.MONTHLY) + action: () => setBillingCycle(BILLING_CYCLE.MONTHLY), }, { id: BILLING_CYCLE.ANNUAL, messageId: "subscriptionBillingCycle.annual", - action: () => setBillingCycle(BILLING_CYCLE.ANNUAL) - } + action: () => setBillingCycle(BILLING_CYCLE.ANNUAL), + }, ]; const { id, monthlyPrice, annualPrice, currency } = @@ -49,13 +49,13 @@ const ProPlanCard = ({ monthlyPlan, annualPlan }: ProPlanCardProps) => { id: monthlyPlan.id, monthlyPrice: monthlyPlan.price, annualPrice: monthlyPlan.price * 12, - currency: monthlyPlan.currency + currency: monthlyPlan.currency, } : { id: annualPlan.id, monthlyPrice: annualPlan.price / 12, annualPrice: annualPlan.price, - currency: annualPlan.currency + currency: annualPlan.currency, }; return ( diff --git a/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/EnterpriseSubscriptionCard.tsx b/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/EnterpriseSubscriptionCard.tsx index 28a2ad881..0539fbf29 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/EnterpriseSubscriptionCard.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/EnterpriseSubscriptionCard.tsx @@ -16,7 +16,7 @@ const EnterpriseSubscriptionCard = ({ gracePeriodStart, gracePeriodDays, endDate, - cancelAtPeriodEnd + cancelAtPeriodEnd, }: EnterpriseSubscriptionCardProps) => ( } />} status={status} />} diff --git a/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/FreeSubscriptionCard.tsx b/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/FreeSubscriptionCard.tsx index 16b4b2efb..39a933625 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/FreeSubscriptionCard.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/FreeSubscriptionCard.tsx @@ -20,7 +20,7 @@ const FreeSubscriptionCard = ({ gracePeriodStart, gracePeriodDays, endDate, - cancelAtPeriodEnd + cancelAtPeriodEnd, }: FreeSubscriptionCardProps) => ( } />} status={status} />} diff --git a/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/ProSubscriptionCard.tsx b/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/ProSubscriptionCard.tsx index 5be13bbd7..b1859ba8e 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/ProSubscriptionCard.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/ProSubscriptionCard.tsx @@ -38,7 +38,7 @@ const ProSubscriptionCard = ({ limits, quantity, price, - currency + currency, }: ProSubscriptionCardProps) => { const intl = useIntl(); @@ -107,7 +107,7 @@ const ProSubscriptionCard = ({ values={{ price: , quantity, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> diff --git a/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/SubscriptionCard.tsx b/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/SubscriptionCard.tsx index 8c57ab3bb..0540b0a9c 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/SubscriptionCard.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Cards/Subscription/SubscriptionCard.tsx @@ -19,7 +19,7 @@ const SubscriptionCard = ({ billingSubscription, organizationSummary }: Subscrip status, grace_period_start: gracePeriodStart, end_date: endDate, - cancel_at_period_end: cancelAtPeriodEnd + cancel_at_period_end: cancelAtPeriodEnd, } = billingSubscription; const { @@ -29,7 +29,7 @@ const SubscriptionCard = ({ billingSubscription, organizationSummary }: Subscrip grace_period_days: gracePeriodDays, currency, qty_unit: quantityUnit, - customer_id: customerId + customer_id: customerId, } = plan; if (organizationId === customerId) { @@ -47,7 +47,7 @@ const SubscriptionCard = ({ billingSubscription, organizationSummary }: Subscrip const getLimit = (limitName: "cloud_accounts") => ({ current: organizationSummary?.entities?.[limitName] ?? 0, limit: (limits?.[limitName] ?? 1) as number, - quantity: quantityUnit === limitName ? quantity : 1 + quantity: quantityUnit === limitName ? quantity : 1, }); if (name === STRIPE_PLAN_NAME.PRO_MONTHLY || name === STRIPE_PLAN_NAME.PRO_YEARLY) { @@ -60,7 +60,7 @@ const SubscriptionCard = ({ billingSubscription, organizationSummary }: Subscrip endDate={endDate} cancelAtPeriodEnd={cancelAtPeriodEnd} limits={{ - dataSources: getLimit("cloud_accounts") + dataSources: getLimit("cloud_accounts"), }} quantity={quantity} price={price!} diff --git a/ngui/ui/src/components/BillingSubscription/components/Cards/common/BaseCard.tsx b/ngui/ui/src/components/BillingSubscription/components/Cards/common/BaseCard.tsx index 6794f64c7..71ef209e3 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Cards/common/BaseCard.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Cards/common/BaseCard.tsx @@ -11,7 +11,7 @@ type BaseCardProps = { export const sizeSpec = { maxWidth: 560, minWidth: 240, - minHeight: 220 + minHeight: 220, }; const BaseCard = ({ header, body, footer }: BaseCardProps) => ( @@ -22,7 +22,7 @@ const BaseCard = ({ header, body, footer }: BaseCardProps) => ( width: "100%", display: "flex", ...sizeSpec, - padding: SPACING_2 + padding: SPACING_2, }} > diff --git a/ngui/ui/src/components/BillingSubscription/components/Cards/common/SubscriptionCardBody.tsx b/ngui/ui/src/components/BillingSubscription/components/Cards/common/SubscriptionCardBody.tsx index 08aaef488..e22691333 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Cards/common/SubscriptionCardBody.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Cards/common/SubscriptionCardBody.tsx @@ -19,7 +19,7 @@ const SubscriptionCardBody = ({ gracePeriodStart, gracePeriodDays, endDate, - cancelAtPeriodEnd + cancelAtPeriodEnd, }: SubscriptionCardBodyProps) => ( ({ paddingInlineStart: theme.spacing(2), listStyleType: "'- '", "& > li + li": { - marginTop: theme.spacing(0.5) - } + marginTop: theme.spacing(0.5), + }, })); export default FeaturesList; diff --git a/ngui/ui/src/components/BillingSubscription/components/Features/PlanFeatures/EnterprisePlanFeatures.tsx b/ngui/ui/src/components/BillingSubscription/components/Features/PlanFeatures/EnterprisePlanFeatures.tsx index 7468cc39f..37b3e062a 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Features/PlanFeatures/EnterprisePlanFeatures.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Features/PlanFeatures/EnterprisePlanFeatures.tsx @@ -5,7 +5,7 @@ const featureMessageIds = [ "billingSubscriptionFeatures.privateDeployment", "billingSubscriptionFeatures.prioritizedPoolRequestReview", "billingSubscriptionFeatures.accessToRoadmap", - "billingSubscriptionFeatures.dedicated24HourSupportSevenDaysAWeek" + "billingSubscriptionFeatures.dedicated24HourSupportSevenDaysAWeek", ] as const; const EnterprisePlanFeatures = () => ( diff --git a/ngui/ui/src/components/BillingSubscription/components/Features/PlanFeatures/ProPlanFeatures.tsx b/ngui/ui/src/components/BillingSubscription/components/Features/PlanFeatures/ProPlanFeatures.tsx index 81527caaf..4f834efdc 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Features/PlanFeatures/ProPlanFeatures.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Features/PlanFeatures/ProPlanFeatures.tsx @@ -3,7 +3,7 @@ import FeaturesList from "../FeaturesList"; const featureMessageIds = [ "billingSubscriptionFeatures.unlimitedMonthlyExpenses", - "billingSubscriptionFeatures.24HourSupportSevenDaysAWeek" + "billingSubscriptionFeatures.24HourSupportSevenDaysAWeek", ] as const; const ProPlanFeatures = () => ( diff --git a/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/EnterpriseSubscriptionFeatures.tsx b/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/EnterpriseSubscriptionFeatures.tsx index 6ec71a52c..ba86c5835 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/EnterpriseSubscriptionFeatures.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/EnterpriseSubscriptionFeatures.tsx @@ -7,7 +7,7 @@ const features = [ "billingSubscriptionFeatures.privateDeployment", "billingSubscriptionFeatures.accessToRoadmap", "billingSubscriptionFeatures.prioritizedPoolRequestReview", - "billingSubscriptionFeatures.dedicated24HourSupportSevenDaysAWeek" + "billingSubscriptionFeatures.dedicated24HourSupportSevenDaysAWeek", ] as const; const EnterpriseSubscriptionFeatures = () => ( diff --git a/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/FreeSubscriptionFeatures/ExpensesLimit.tsx b/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/FreeSubscriptionFeatures/ExpensesLimit.tsx index e3b7d5f14..e715d49a1 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/FreeSubscriptionFeatures/ExpensesLimit.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/FreeSubscriptionFeatures/ExpensesLimit.tsx @@ -31,7 +31,7 @@ const ExpensesLimitLabel = ({ color, value, limit }: { color?: string; value: nu id="value / value" values={{ value1: moneyFormatter(FORMATTED_MONEY_TYPES.COMMON, value, { format: CURRENCY.USD }), - value2: moneyFormatter(FORMATTED_MONEY_TYPES.COMMON, limit, { format: CURRENCY.USD }) + value2: moneyFormatter(FORMATTED_MONEY_TYPES.COMMON, limit, { format: CURRENCY.USD }), }} /> @@ -40,7 +40,7 @@ const ExpensesLimitLabel = ({ color, value, limit }: { color?: string; value: nu const ExpensesLimit = ({ monthExpenses, - monthlyExpensesLimit + monthlyExpensesLimit, }: { monthExpenses: Record; monthlyExpensesLimit: number; @@ -64,7 +64,7 @@ const ExpensesLimit = ({ return { expenses, label: formatMonthLabel(monthKey), - isExceeded: expenses > monthlyExpensesLimit + isExceeded: expenses > monthlyExpensesLimit, }; }); @@ -112,7 +112,7 @@ const ExpensesLimit = ({ {moneyFormatter(FORMATTED_MONEY_TYPES.COMMON, monthlyExpensesLimit)} + limit: {moneyFormatter(FORMATTED_MONEY_TYPES.COMMON, monthlyExpensesLimit)}, }} /> @@ -122,8 +122,8 @@ const ExpensesLimit = ({ paddingInlineStart: (theme) => theme.spacing(2), listStyleType: "'- '", "& > li + li": { - marginTop: (theme) => theme.spacing(0.5) - } + marginTop: (theme) => theme.spacing(0.5), + }, }} > {monthsExpensesDataArray.map((month) => ( diff --git a/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/ProSubscriptionFeatures.tsx b/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/ProSubscriptionFeatures.tsx index 4f8ebda50..08a5d5f08 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/ProSubscriptionFeatures.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/Features/SubscriptionFeatures/ProSubscriptionFeatures.tsx @@ -14,7 +14,7 @@ export type ProFeaturesProps = { const features = [ "billingSubscriptionFeatures.unlimitedMonthlyExpenses", - "billingSubscriptionFeatures.24HourSupportSevenDaysAWeek" + "billingSubscriptionFeatures.24HourSupportSevenDaysAWeek", ] as const; const ProSubscriptionFeatures = ({ limits }: ProFeaturesProps) => { diff --git a/ngui/ui/src/components/BillingSubscription/components/Features/index.ts b/ngui/ui/src/components/BillingSubscription/components/Features/index.ts index 4e3ac021f..3fbd3d897 100644 --- a/ngui/ui/src/components/BillingSubscription/components/Features/index.ts +++ b/ngui/ui/src/components/BillingSubscription/components/Features/index.ts @@ -10,5 +10,5 @@ export { ProSubscriptionFeatures, FeaturesList, EnterprisePlanFeatures, - ProPlanFeatures + ProPlanFeatures, }; diff --git a/ngui/ui/src/components/BillingSubscription/components/LimitLabel/LimitLabel.tsx b/ngui/ui/src/components/BillingSubscription/components/LimitLabel/LimitLabel.tsx index 77c974697..0e7c44b51 100644 --- a/ngui/ui/src/components/BillingSubscription/components/LimitLabel/LimitLabel.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/LimitLabel/LimitLabel.tsx @@ -29,7 +29,7 @@ const LimitLabel = ({ value, entityName, limit, quantity = 1, formatValue, forma id="value / value" values={{ value1: typeof formatValue === "function" ? formatValue(value) : value, - value2: typeof formatLimit === "function" ? formatLimit(totalLimit) : totalLimit + value2: typeof formatLimit === "function" ? formatLimit(totalLimit) : totalLimit, }} />  {entityName} diff --git a/ngui/ui/src/components/BillingSubscription/components/StatusBadge/StatusBadge.tsx b/ngui/ui/src/components/BillingSubscription/components/StatusBadge/StatusBadge.tsx index 3b76f3f71..162f50efc 100644 --- a/ngui/ui/src/components/BillingSubscription/components/StatusBadge/StatusBadge.tsx +++ b/ngui/ui/src/components/BillingSubscription/components/StatusBadge/StatusBadge.tsx @@ -10,7 +10,7 @@ type StatusBadgeProps = { const STATUS_BADGE_MAP = { [BILLING_SUBSCRIPTION_STATUS.ACTIVE]: } color="success" />, [BILLING_SUBSCRIPTION_STATUS.LIMIT_EXCEEDED]: } color="error" />, - [BILLING_SUBSCRIPTION_STATUS.SUSPENDED]: } color="error" /> + [BILLING_SUBSCRIPTION_STATUS.SUSPENDED]: } color="error" />, }; const StatusBadge = ({ status }: StatusBadgeProps) => STATUS_BADGE_MAP[status] ?? ; diff --git a/ngui/ui/src/components/BillingSubscription/constants.ts b/ngui/ui/src/components/BillingSubscription/constants.ts index abbd90a4f..87a3a2172 100644 --- a/ngui/ui/src/components/BillingSubscription/constants.ts +++ b/ngui/ui/src/components/BillingSubscription/constants.ts @@ -3,16 +3,16 @@ export const YEARLY_PRICE_DISCOUNT = 0.2; export const STRIPE_PLAN_NAME = Object.freeze({ FREE: "Free", PRO_MONTHLY: "Pro monthly", - PRO_YEARLY: "Pro yearly" + PRO_YEARLY: "Pro yearly", }); export const BILLING_CYCLE = Object.freeze({ MONTHLY: "monthly", - ANNUAL: "annual" + ANNUAL: "annual", }); export const BILLING_SUBSCRIPTION_STATUS = Object.freeze({ ACTIVE: "active", LIMIT_EXCEEDED: "limit_exceeded", - SUSPENDED: "suspended" + SUSPENDED: "suspended", }); diff --git a/ngui/ui/src/components/BookingsCalendar/BookingsCalendar.styles.ts b/ngui/ui/src/components/BookingsCalendar/BookingsCalendar.styles.ts index c4dc1b072..c543b6beb 100644 --- a/ngui/ui/src/components/BookingsCalendar/BookingsCalendar.styles.ts +++ b/ngui/ui/src/components/BookingsCalendar/BookingsCalendar.styles.ts @@ -6,63 +6,63 @@ const useStyles = makeStyles()((theme) => { return { calendar: { "& .rbc-off-range-bg": { - background: lighten(theme.palette.info.light, 0.9) + background: lighten(theme.palette.info.light, 0.9), }, "& .rbc-off-range": { - color: theme.palette.common.black + color: theme.palette.common.black, }, "& .rbc-today": { - background: lighten(theme.palette.primary.main, 0.85) + background: lighten(theme.palette.primary.main, 0.85), }, "& .rbc-current-time-indicator": { - backgroundColor: theme.palette.success.main + backgroundColor: theme.palette.success.main, }, "& .rbc-show-more": { color: theme.palette.text.primary, - backgroundColor: "inherit" + backgroundColor: "inherit", }, "& .rbc-event.rbc-selected, .rbc-day-slot .rbc-selected.rbc-background-event": { - backgroundColor: SELECTED_EVENT_COLOR + backgroundColor: SELECTED_EVENT_COLOR, }, "& .rbc-day-slot .rbc-event, .rbc-day-slot .rbc-background-event": { - border: `1px solid ${theme.palette.common.white}` + border: `1px solid ${theme.palette.common.white}`, }, "& .rbc-event, .rbc-day-slot .rbc-background-event": { - borderRadius: "4px" - } + borderRadius: "4px", + }, }, event: { backgroundColor: theme.palette.info.main, - color: theme.palette.common.white + color: theme.palette.common.white, }, selectedEvent: { - backgroundColor: SELECTED_EVENT_COLOR + backgroundColor: SELECTED_EVENT_COLOR, }, eventPopupWrapper: { width: "380px", height: "150px", padding: theme.spacing(2) }, showMoreEventsPopupWrapper: { "& > *:not(:last-child)": { - marginBottom: theme.spacing(0.25) + marginBottom: theme.spacing(0.25), }, width: "250px", - padding: theme.spacing(1) + padding: theme.spacing(1), }, toolbar: { display: "flex", marginBottom: theme.spacing(2), justifyContent: "center", alignItems: "center", - flexWrap: "wrap" + flexWrap: "wrap", }, toolbarDateTitle: { - flexGrow: 1 + flexGrow: 1, }, toolbarTodayButtonWrapper: { marginRight: theme.spacing(1), - display: "flex" + display: "flex", }, toolbarTodayButton: { - width: "80px" - } + width: "80px", + }, }; }); diff --git a/ngui/ui/src/components/BookingsCalendar/BookingsCalendar.tsx b/ngui/ui/src/components/BookingsCalendar/BookingsCalendar.tsx index 1e1bccbd4..c5dfcf96b 100644 --- a/ngui/ui/src/components/BookingsCalendar/BookingsCalendar.tsx +++ b/ngui/ui/src/components/BookingsCalendar/BookingsCalendar.tsx @@ -15,7 +15,7 @@ import ShowMore from "./components/ShowMore"; import Toolbar from "./components/Toolbar"; const locales = { - "en-US": enUsLocale + "en-US": enUsLocale, }; const localizer = dateFnsLocalizer({ @@ -23,7 +23,7 @@ const localizer = dateFnsLocalizer({ parse, startOfWeek, getDay, - locales + locales, }); const getBookingEvents = (environments, eventProps) => @@ -41,7 +41,7 @@ const getBookingEvents = (environments, eventProps) => end: bookedUntil === 0 ? new Date(MAX_UTC_DATE_TIMESTAMP) : new Date(secondsToMilliseconds(bookedUntil)), environment: environmentWithBookings, booking, - props: eventProps + props: eventProps, }; }); }); @@ -68,14 +68,14 @@ const BookingsCalendar = ({ environments, isLoadingProps = {}, eventProps = {} } onShowMore={(events) => setShowMoreEvents(events)} scrollToTime={new Date()} eventPropGetter={() => ({ - className: classes.event + className: classes.event, })} messages={{ - showMore: (count) => + showMore: (count) => , }} components={{ event: Event, - toolbar: Toolbar + toolbar: Toolbar, }} /> ); diff --git a/ngui/ui/src/components/BookingsCalendar/components/Event.tsx b/ngui/ui/src/components/BookingsCalendar/components/Event.tsx index 4ea9af66f..ae0a971c5 100644 --- a/ngui/ui/src/components/BookingsCalendar/components/Event.tsx +++ b/ngui/ui/src/components/BookingsCalendar/components/Event.tsx @@ -18,7 +18,7 @@ const Event = ({ event }) => { const { environment, booking, - props: { linkedTitle = true } + props: { linkedTitle = true }, } = event; const { name: environmentName, @@ -26,10 +26,10 @@ const Event = ({ event }) => { pool_id: poolId, pool_name: poolName, pool_purpose: poolPurpose, - id: environmentId + id: environmentId, } = environment; const { - acquired_by: { name: employeeName } + acquired_by: { name: employeeName }, } = booking; const getTimeLabel = () => { diff --git a/ngui/ui/src/components/BookingsCalendar/components/Popover.tsx b/ngui/ui/src/components/BookingsCalendar/components/Popover.tsx index 104c2ef9a..b4fd48d43 100644 --- a/ngui/ui/src/components/BookingsCalendar/components/Popover.tsx +++ b/ngui/ui/src/components/BookingsCalendar/components/Popover.tsx @@ -30,11 +30,11 @@ const Popover = ({ children, popoverContent, popoverId, onClose }) => { onClose={handleClose} anchorOrigin={{ vertical: "bottom", - horizontal: "center" + horizontal: "center", }} transformOrigin={{ vertical: "top", - horizontal: "center" + horizontal: "center", }} > {popoverContent} diff --git a/ngui/ui/src/components/BookingsCalendar/components/Toolbar.tsx b/ngui/ui/src/components/BookingsCalendar/components/Toolbar.tsx index 47e4ff007..8d8e935f4 100644 --- a/ngui/ui/src/components/BookingsCalendar/components/Toolbar.tsx +++ b/ngui/ui/src/components/BookingsCalendar/components/Toolbar.tsx @@ -16,7 +16,7 @@ const Toolbar = ({ onNavigate, onView, localizer, label, views, view }) => { const buttonsDefinition = views.map((viewName) => ({ id: viewName, messageText: messages[viewName], - action: () => onView(viewName) + action: () => onView(viewName), })); return ( diff --git a/ngui/ui/src/components/Brackets/Brackets.test.tsx b/ngui/ui/src/components/Brackets/Brackets.test.tsx index bde71f2b9..68013478b 100644 --- a/ngui/ui/src/components/Brackets/Brackets.test.tsx +++ b/ngui/ui/src/components/Brackets/Brackets.test.tsx @@ -30,7 +30,7 @@ it("renders without crashing (with children)", () => { root.render( - {"brackets content"} + brackets content ); diff --git a/ngui/ui/src/components/Brackets/Brackets.tsx b/ngui/ui/src/components/Brackets/Brackets.tsx index e72e2518e..fbfc9af37 100644 --- a/ngui/ui/src/components/Brackets/Brackets.tsx +++ b/ngui/ui/src/components/Brackets/Brackets.tsx @@ -2,20 +2,20 @@ const getBrackets = (type) => ({ round: { opening: "(", - closing: ")" + closing: ")", }, curly: { opening: "{", - closing: "}" + closing: "}", }, square: { opening: "[", - closing: "]" + closing: "]", }, angle: { opening: "<", - closing: ">" - } + closing: ">", + }, })[type]; const Brackets = ({ children, type = "round", bold = false }) => { diff --git a/ngui/ui/src/components/Breadcrumbs/Breadcrumbs.styles.ts b/ngui/ui/src/components/Breadcrumbs/Breadcrumbs.styles.ts index ba0683f18..e9dc0d12b 100644 --- a/ngui/ui/src/components/Breadcrumbs/Breadcrumbs.styles.ts +++ b/ngui/ui/src/components/Breadcrumbs/Breadcrumbs.styles.ts @@ -3,8 +3,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ separator: { marginLeft: 0, - marginRight: 0 - } + marginRight: 0, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Breadcrumbs/Breadcrumbs.tsx b/ngui/ui/src/components/Breadcrumbs/Breadcrumbs.tsx index a10887515..edea4f46a 100644 --- a/ngui/ui/src/components/Breadcrumbs/Breadcrumbs.tsx +++ b/ngui/ui/src/components/Breadcrumbs/Breadcrumbs.tsx @@ -8,12 +8,12 @@ const Breadcrumbs = ({ children, withSlashAtTheEnd = false }) => { return ( { [RESOURCES_EXPENSES_DAILY_BREAKDOWN_BY.RESOURCE_TYPE]: () => getLabel(), [RESOURCES_EXPENSES_DAILY_BREAKDOWN_BY.K8S_NODE]: () => getLabel(), [RESOURCES_EXPENSES_DAILY_BREAKDOWN_BY.K8S_NAMESPACE]: () => getLabel(), - [RESOURCES_EXPENSES_DAILY_BREAKDOWN_BY.K8S_SERVICE]: () => getLabel() + [RESOURCES_EXPENSES_DAILY_BREAKDOWN_BY.K8S_SERVICE]: () => getLabel(), }[breakdownBy]; return renderer(); diff --git a/ngui/ui/src/components/BufferedProgressBar/BufferedProgressBar.styles.ts b/ngui/ui/src/components/BufferedProgressBar/BufferedProgressBar.styles.ts index 316bd2a85..ce0bb9d7b 100644 --- a/ngui/ui/src/components/BufferedProgressBar/BufferedProgressBar.styles.ts +++ b/ngui/ui/src/components/BufferedProgressBar/BufferedProgressBar.styles.ts @@ -5,24 +5,24 @@ const useStyles = makeStyles()((theme, { mainColor, secondaryColor, backgroundCo position: "relative", display: "flex", alignItems: "center", - justifyContent: "center" + justifyContent: "center", }, progress: { height: "0.5rem", borderRadius: "0.3rem", - width: "100%" + width: "100%", }, bar1Buffer: { - backgroundColor: mainColor + backgroundColor: mainColor, }, bar2Buffer: { - backgroundColor: secondaryColor + backgroundColor: secondaryColor, }, dashed: { backgroundColor, backgroundImage: "none", - animation: "none" - } + animation: "none", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/BufferedProgressBar/BufferedProgressBar.tsx b/ngui/ui/src/components/BufferedProgressBar/BufferedProgressBar.tsx index 6d18f58ea..4ae226feb 100644 --- a/ngui/ui/src/components/BufferedProgressBar/BufferedProgressBar.tsx +++ b/ngui/ui/src/components/BufferedProgressBar/BufferedProgressBar.tsx @@ -12,7 +12,7 @@ const BufferedProgressBar = ({ valueBufferColor, totalColor, tooltip = {}, - dataTestId + dataTestId, }) => { const { classes, cx } = useStyles({ mainColor: valueColor, secondaryColor: valueBufferColor, backgroundColor: totalColor }); @@ -22,7 +22,7 @@ const BufferedProgressBar = ({ valueBufferTooltipMessage = "", totalTooltipMessage = "", customTooltipMessage = "", - placement = "top" + placement = "top", } = tooltip; const renderProgress = () => ( @@ -33,9 +33,9 @@ const BufferedProgressBar = ({ classes={{ bar1Buffer: classes.bar1Buffer, bar2Buffer: classes.bar2Buffer, - dashed: classes.dashed + dashed: classes.dashed, }} - variant={"buffer"} + variant="buffer" value={Math.min(value, 100)} valueBuffer={valueBuffer} /> diff --git a/ngui/ui/src/components/Button/Button.styles.ts b/ngui/ui/src/components/Button/Button.styles.ts index 6ca353178..f76d655c9 100644 --- a/ngui/ui/src/components/Button/Button.styles.ts +++ b/ngui/ui/src/components/Button/Button.styles.ts @@ -2,23 +2,23 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ button: { - textTransform: "none" + textTransform: "none", }, dashed: { - border: "1px dashed" + border: "1px dashed", }, uppercase: { - textTransform: "uppercase" + textTransform: "uppercase", }, link: { textDecoration: "none", "&:hover": { - textDecoration: "none" - } + textDecoration: "none", + }, }, tooltipSpan: { - display: "block" // Required for disabled items in Safari (https://mui.com/components/tooltips/#disabled-elements). - } + display: "block", // Required for disabled items in Safari (https://mui.com/components/tooltips/#disabled-elements). + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Button/Button.tsx b/ngui/ui/src/components/Button/Button.tsx index bdd14aa46..2e39cb497 100644 --- a/ngui/ui/src/components/Button/Button.tsx +++ b/ngui/ui/src/components/Button/Button.tsx @@ -73,7 +73,7 @@ const Button = forwardRef( value = "", messageId: tooltipMessageId = "", body, - placement = "bottom" + placement = "bottom", } = tooltip || {}; const buttonClasses = cx( diff --git a/ngui/ui/src/components/ButtonGroup/ButtonGroup.styles.ts b/ngui/ui/src/components/ButtonGroup/ButtonGroup.styles.ts index 133ffb778..eacfa3a4b 100644 --- a/ngui/ui/src/components/ButtonGroup/ButtonGroup.styles.ts +++ b/ngui/ui/src/components/ButtonGroup/ButtonGroup.styles.ts @@ -2,29 +2,29 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ button: { - textTransform: "none" + textTransform: "none", }, link: { textDecoration: "none", "&:hover": { - textDecoration: "none" - } + textDecoration: "none", + }, }, activeButton: { backgroundColor: theme.palette.secondary.main, color: theme.palette.secondary.contrastText, "&:hover": { - backgroundColor: theme.palette.secondary.light - } + backgroundColor: theme.palette.secondary.light, + }, }, disabled: { border: "1px solid rgba(0,0,0,0.12)", color: "rgba(0,0,0,0.26)", cursor: "default", "&:hover": { - backgroundColor: "inherit" - } - } + backgroundColor: "inherit", + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ButtonGroup/ButtonGroup.test.tsx b/ngui/ui/src/components/ButtonGroup/ButtonGroup.test.tsx index 3afc0c1ff..f03d9a0ce 100644 --- a/ngui/ui/src/components/ButtonGroup/ButtonGroup.test.tsx +++ b/ngui/ui/src/components/ButtonGroup/ButtonGroup.test.tsx @@ -13,8 +13,8 @@ it("renders with action", () => { { id: "add", messageId: "add", - onClick: (e) => console.log(e) - } + onClick: (e) => console.log(e), + }, ]} /> diff --git a/ngui/ui/src/components/ButtonLoader/ButtonLoader.styles.ts b/ngui/ui/src/components/ButtonLoader/ButtonLoader.styles.ts index 94ab20cb9..74dfd6ab7 100644 --- a/ngui/ui/src/components/ButtonLoader/ButtonLoader.styles.ts +++ b/ngui/ui/src/components/ButtonLoader/ButtonLoader.styles.ts @@ -6,38 +6,38 @@ const useStyles = makeStyles()((theme) => ({ top: "50%", left: "50%", marginTop: theme.spacing(-1.5), - marginLeft: theme.spacing(-1.5) + marginLeft: theme.spacing(-1.5), }, primaryCircularProgressColor: { - color: theme.palette.primary.main + color: theme.palette.primary.main, }, successCircularProgressColor: { - color: theme.palette.success.main + color: theme.palette.success.main, }, errorCircularProgressColor: { - color: theme.palette.error.main + color: theme.palette.error.main, }, infoCircularProgressColor: { - color: theme.palette.info.main + color: theme.palette.info.main, }, wrapper: { maxWidth: "max-content", position: "relative", marginRight: theme.spacing(1), "&:last-child": { - marginRight: 0 - } + marginRight: 0, + }, }, wrapperFullWidth: { maxWidth: "initial", - width: "100%" + width: "100%", }, buttonFullWidth: { - width: "100%" + width: "100%", }, assignButton: { - height: theme.spacing(5) - } + height: theme.spacing(5), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ButtonLoader/ButtonLoader.tsx b/ngui/ui/src/components/ButtonLoader/ButtonLoader.tsx index 84a1d6bf1..421a24771 100644 --- a/ngui/ui/src/components/ButtonLoader/ButtonLoader.tsx +++ b/ngui/ui/src/components/ButtonLoader/ButtonLoader.tsx @@ -34,7 +34,7 @@ const ButtonLoader = ({ primary: classes.primaryCircularProgressColor, success: classes.successCircularProgressColor, error: classes.errorCircularProgressColor, - info: classes.infoCircularProgressColor + info: classes.infoCircularProgressColor, }; return ( diff --git a/ngui/ui/src/components/ButtonSwitch/ButtonSwitch.styles.ts b/ngui/ui/src/components/ButtonSwitch/ButtonSwitch.styles.ts index 28d816b0d..3628ab6d2 100644 --- a/ngui/ui/src/components/ButtonSwitch/ButtonSwitch.styles.ts +++ b/ngui/ui/src/components/ButtonSwitch/ButtonSwitch.styles.ts @@ -6,9 +6,9 @@ const useStyles = makeStyles()((theme) => ({ justifyContent: "center", flexWrap: "wrap", "& > *": { - margin: theme.spacing(1) - } - } + margin: theme.spacing(1), + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/CanvasBarChart/CanvasBarChart.styles.ts b/ngui/ui/src/components/CanvasBarChart/CanvasBarChart.styles.ts index 41806c699..49acea584 100644 --- a/ngui/ui/src/components/CanvasBarChart/CanvasBarChart.styles.ts +++ b/ngui/ui/src/components/CanvasBarChart/CanvasBarChart.styles.ts @@ -2,8 +2,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()({ hover: { - cursor: "pointer !important" - } + cursor: "pointer !important", + }, }); export default useStyles; diff --git a/ngui/ui/src/components/CanvasBarChart/CanvasBarChart.tsx b/ngui/ui/src/components/CanvasBarChart/CanvasBarChart.tsx index fd7f61c06..e9471cafe 100644 --- a/ngui/ui/src/components/CanvasBarChart/CanvasBarChart.tsx +++ b/ngui/ui/src/components/CanvasBarChart/CanvasBarChart.tsx @@ -21,7 +21,7 @@ import { DEFAULT_CHART_BORDER_WIDTH, FORMATTED_MONEY_TYPES, CHART_LEGEND_WIDTH, - CHART_LEGEND_LAYOUT_SETTINGS + CHART_LEGEND_LAYOUT_SETTINGS, } from "utils/constants"; import useStyles from "./CanvasBarChart.styles"; import CanvasBarChartPdf from "./CanvasBarChartPdf"; @@ -108,7 +108,7 @@ const findBarUnderCursor = (bars, cursorPosition) => x: bar.x, y: bar.y, width: bar.width, - height: bar.height + height: bar.height, }, cursorPosition ) @@ -147,7 +147,7 @@ const useClickableBarHover = ({ refs, margin, isClickable, selectedBar, wrapperD const cursorPosition = getRelativeCursorPosition(e, { left: margin.left, - top: margin.top + top: margin.top, }); const bar = findBarUnderCursor(bars, cursorPosition); @@ -189,7 +189,7 @@ const useClickableBarHover = ({ refs, margin, isClickable, selectedBar, wrapperD classes.hover, isClickable, selectedBar, - data + data, ]); }; @@ -229,7 +229,7 @@ const CanvasBarChart = ({ thresholdMarker, withLegend, legendLabel, - maxValue: maxValueProperty + maxValue: maxValueProperty, }) => { const wrapperRef = useRef(); const canvasRef = useRef(); @@ -241,13 +241,13 @@ const CanvasBarChart = ({ refs: { wrapperRef, canvasRef, - barsRef + barsRef, }, margin, isClickable: typeof onClick === "function", selectedBar, wrapperDimensions, - data + data, }); const chartTheme = useChartTheme(); @@ -266,13 +266,13 @@ const CanvasBarChart = ({ tickValues: valueTickValues, // ticks on Y axis for vertical layout and X axis for horizontal layout gridValues: valueGridValues, maxValue, - minValue + minValue, } = getBarTicks({ size: layout === "vertical" ? innerWidth : innerHeight, ticksCount: TICK_COUNT, maxValue: getMaxValue(), minValue: minBandValue, - allocateAdditionalTickAboveMaxValue + allocateAdditionalTickAboveMaxValue, }); const formatter = useMoneyFormatter(); @@ -281,7 +281,7 @@ const CanvasBarChart = ({ ({ [AXIS_FORMATS.MONEY]: (value) => formatter(FORMATTED_MONEY_TYPES.TINY_COMPACT, value, { format: currency }), [AXIS_FORMATS.RAW]: (value) => value, - [AXIS_FORMATS.PERCENTAGE]: (value) => `${value * 100}%` + [AXIS_FORMATS.PERCENTAGE]: (value) => `${value * 100}%`, })[format]; const { axisLeft, axisRight, axisBottom, enableGridX, enableGridY, gridXValues, gridYValues } = useChartLayoutOptions({ @@ -300,7 +300,7 @@ const CanvasBarChart = ({ axisLeft: axisLeftProperty, axisRight: axisRightProperty, minValue, - maxValue + maxValue, }); const getBarSettings = (bar) => { @@ -317,12 +317,12 @@ const CanvasBarChart = ({ return { bar: { ...bar, - color: barColor + color: barColor, }, borderColor: barBorderColor, borderWidth, labelColor: barLabelColor, - shouldRenderLabel: enableLabel + shouldRenderLabel: enableLabel, }; }; @@ -334,7 +334,7 @@ const CanvasBarChart = ({ chartTheme, drawBar, getBarSettings, - legendLabel + legendLabel, }); return ( @@ -416,8 +416,8 @@ const CanvasBarChart = ({ ? [ { dataFrom: "keys", - ...CHART_LEGEND_LAYOUT_SETTINGS - } + ...CHART_LEGEND_LAYOUT_SETTINGS, + }, ] : undefined } @@ -443,17 +443,17 @@ const ResponsiveCanvasBarChart = ({ const { margin = { ...DEFAULT_BAR_CHART_MARGIN, - right: withLegend ? CHART_LEGEND_WIDTH : DEFAULT_BAR_CHART_MARGIN.right + right: withLegend ? CHART_LEGEND_WIDTH : DEFAULT_BAR_CHART_MARGIN.right, }, height = DEFAULT_BAR_CHART_HEIGHT, padding = DEFAULT_BAR_CHART_PADDING, - innerPadding = DEFAULT_BAR_CHART_INNER_PADDING + innerPadding = DEFAULT_BAR_CHART_INNER_PADDING, } = style; return (
    @@ -481,7 +481,7 @@ const ResponsiveCanvasBarChart = ({ dataTestId={dataTestId} wrapperDimensions={{ width: wrapperWidth, - height: wrapperHeight + height: wrapperHeight, }} data={data} margin={margin} diff --git a/ngui/ui/src/components/CanvasBarChart/CanvasBarChartPdf.ts b/ngui/ui/src/components/CanvasBarChart/CanvasBarChartPdf.ts index 6b97c335b..ef04f9752 100644 --- a/ngui/ui/src/components/CanvasBarChart/CanvasBarChartPdf.ts +++ b/ngui/ui/src/components/CanvasBarChart/CanvasBarChartPdf.ts @@ -5,8 +5,8 @@ class CanvasBarChartPdf extends PDFAble { pdfRender = () => [ { type: TYPES.image, - value: this.data.canvasRef.current - } + value: this.data.canvasRef.current, + }, ]; } diff --git a/ngui/ui/src/components/CanvasBarChart/CanvasBarChartTooltip.tsx b/ngui/ui/src/components/CanvasBarChart/CanvasBarChartTooltip.tsx index b6d0d3767..2e74dcf61 100644 --- a/ngui/ui/src/components/CanvasBarChart/CanvasBarChartTooltip.tsx +++ b/ngui/ui/src/components/CanvasBarChart/CanvasBarChartTooltip.tsx @@ -35,7 +35,7 @@ const ChartTooltip = ({ bandData, renderTooltipBody, barsCount }) => { transform: `translate(${x}px, ${y}px)`, // Without this style rule, the tooltip wraps the text incorrectly when isLeftHalf is true. // For the bars on the right everything is displayed correctly. - width: "max-content" + width: "max-content", }} > { paddingTop: theme.spacing(0.5), paddingBottom: theme.spacing(0.5), paddingLeft: theme.spacing(1), - paddingRight: theme.spacing(1) + paddingRight: theme.spacing(1), })} component="div" > diff --git a/ngui/ui/src/components/CanvasBarChart/layers.ts b/ngui/ui/src/components/CanvasBarChart/layers.ts index dd8df69b4..f0bd23ffa 100644 --- a/ngui/ui/src/components/CanvasBarChart/layers.ts +++ b/ngui/ui/src/components/CanvasBarChart/layers.ts @@ -62,21 +62,21 @@ export const legendLayer = (ctx: CanvasRenderingContext2D, layerContext, { chart const { label, shouldTruncate } = typeof legendLabel === "function" ? legendLabel(item, ctx, { - maxWidth: MAX_LEGEND_LABEL_WIDTH + maxWidth: MAX_LEGEND_LABEL_WIDTH, }) : { label: item.id, - shouldTruncate: true + shouldTruncate: true, }; return { ...item, - label: shouldTruncate ? truncateCanvasText(ctx, label, MAX_LEGEND_LABEL_WIDTH) : label + label: shouldTruncate ? truncateCanvasText(ctx, label, MAX_LEGEND_LABEL_WIDTH) : label, }; }), containerWidth: innerWidth, containerHeight: innerHeight, - theme: chartTheme + theme: chartTheme, }); }); @@ -91,7 +91,7 @@ export const getChartLayers = ({ chartTheme, drawBar, getBarSettings, - legendLabel + legendLabel, }) => { const selectedBarLayerFn = (ctx: CanvasRenderingContext2D, layerContext) => selectedBarLayer(ctx, layerContext, { selectedBar, drawBar, getBarSettings }); @@ -110,6 +110,6 @@ export const getChartLayers = ({ selectedBarLayerFn, barsRefLayerFn, ...(thresholdMarker ? [thresholdMarkerLayerFn] : []), - ...(withLegend ? [legendLayerFn] : []) + ...(withLegend ? [legendLayerFn] : []), ]; }; diff --git a/ngui/ui/src/components/CaptionedCell/CaptionedCell.test.tsx b/ngui/ui/src/components/CaptionedCell/CaptionedCell.test.tsx index d2f4bde50..3899ea48a 100644 --- a/ngui/ui/src/components/CaptionedCell/CaptionedCell.test.tsx +++ b/ngui/ui/src/components/CaptionedCell/CaptionedCell.test.tsx @@ -21,7 +21,7 @@ it("renders without crashing with array caption", () => { test
    , key: "key2" } + { node:
    test
    , key: "key2" }, ]} > main diff --git a/ngui/ui/src/components/ChartExport/ChartExport.tsx b/ngui/ui/src/components/ChartExport/ChartExport.tsx index 8507d78f2..04ad47b41 100644 --- a/ngui/ui/src/components/ChartExport/ChartExport.tsx +++ b/ngui/ui/src/components/ChartExport/ChartExport.tsx @@ -24,7 +24,7 @@ type ChartExportProps = { const defaultConfig: FileNameConfig = { title: "OptScale_chart", fileFormat: "png", - withTime: true + withTime: true, }; const generateFileName = ({ title, fileFormat, withTime }: FileNameConfig): string => { diff --git a/ngui/ui/src/components/ChartLegendMarkerCard/ChartLegendMarkerCard.styles.ts b/ngui/ui/src/components/ChartLegendMarkerCard/ChartLegendMarkerCard.styles.ts index 79bd5bea9..9f8feaa4c 100644 --- a/ngui/ui/src/components/ChartLegendMarkerCard/ChartLegendMarkerCard.styles.ts +++ b/ngui/ui/src/components/ChartLegendMarkerCard/ChartLegendMarkerCard.styles.ts @@ -3,22 +3,22 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme, { markerColor }) => ({ wrapper: { height: theme.spacing(5), - display: "flex" + display: "flex", }, content: { display: "flex", flexDirection: "column", - justifyContent: "space-between" + justifyContent: "space-between", }, marker: { height: "100%", width: theme.spacing(0.5), borderRadius: theme.spacing(0.5), - marginRight: theme.spacing(0.5) + marginRight: theme.spacing(0.5), }, markerColor: { - backgroundColor: markerColor - } + backgroundColor: markerColor, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ChartTooltip/ChartTooltip.styles.ts b/ngui/ui/src/components/ChartTooltip/ChartTooltip.styles.ts index da1f5171b..4d2c0d371 100644 --- a/ngui/ui/src/components/ChartTooltip/ChartTooltip.styles.ts +++ b/ngui/ui/src/components/ChartTooltip/ChartTooltip.styles.ts @@ -19,8 +19,8 @@ const useStyles = makeStyles()((theme) => ({ 100% { opacity: 1; } - `} 0.1s normal forwards ease-out` - } + `} 0.1s normal forwards ease-out`, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ChartTooltip/ChartTooltip.tsx b/ngui/ui/src/components/ChartTooltip/ChartTooltip.tsx index 4ceb210c2..95271c620 100644 --- a/ngui/ui/src/components/ChartTooltip/ChartTooltip.tsx +++ b/ngui/ui/src/components/ChartTooltip/ChartTooltip.tsx @@ -4,8 +4,8 @@ import useStyles from "./ChartTooltip.styles"; const TooltipTypography = withStyles(Typography, { root: { - fontSize: "0.9rem" - } + fontSize: "0.9rem", + }, }); const ChartTooltip = ({ body }) => { diff --git a/ngui/ui/src/components/Checkbox/Checkbox.tsx b/ngui/ui/src/components/Checkbox/Checkbox.tsx index f3dd5f08b..08c8631e4 100644 --- a/ngui/ui/src/components/Checkbox/Checkbox.tsx +++ b/ngui/ui/src/components/Checkbox/Checkbox.tsx @@ -10,8 +10,8 @@ const Checkbox = forwardRef(({ cssColor, ...re ? { color: cssColor, "&.Mui-checked": { - color: cssColor - } + color: cssColor, + }, } : undefined; diff --git a/ngui/ui/src/components/Chip/Chip.styles.ts b/ngui/ui/src/components/Chip/Chip.styles.ts index 13946c0fa..9002c5715 100644 --- a/ngui/ui/src/components/Chip/Chip.styles.ts +++ b/ngui/ui/src/components/Chip/Chip.styles.ts @@ -2,19 +2,19 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ chip: { - maxWidth: "100%" + maxWidth: "100%", }, uppercase: { - textTransform: "uppercase" + textTransform: "uppercase", }, // https://mui.com/material-ui/react-chip/#multiline-chip multiline: { height: "auto", "& .MuiChip-label": { display: "block", - whiteSpace: "normal" - } - } + whiteSpace: "normal", + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ChipFiltersWrapper/ChipFiltersWrapper.styles.ts b/ngui/ui/src/components/ChipFiltersWrapper/ChipFiltersWrapper.styles.ts index f1c9b9ecf..356d88cb6 100644 --- a/ngui/ui/src/components/ChipFiltersWrapper/ChipFiltersWrapper.styles.ts +++ b/ngui/ui/src/components/ChipFiltersWrapper/ChipFiltersWrapper.styles.ts @@ -9,9 +9,9 @@ const useStyles = makeStyles()((theme) => { flexWrap: "wrap", margin: `-${gap} 0 0 -${gap}`, "& > *": { - margin: `${gap} 0 0 ${gap}` - } - } + margin: `${gap} 0 0 ${gap}`, + }, + }, }; }); diff --git a/ngui/ui/src/components/Circle/Circle.tsx b/ngui/ui/src/components/Circle/Circle.tsx index 92cb9c407..482d361df 100644 --- a/ngui/ui/src/components/Circle/Circle.tsx +++ b/ngui/ui/src/components/Circle/Circle.tsx @@ -15,7 +15,7 @@ const Circle = forwardRef((props, ref) => { sx={{ marginRight: theme.spacing(mr), marginLeft: theme.spacing(ml), - color: circleColor + color: circleColor, }} fontSize="inherit" {...rest} diff --git a/ngui/ui/src/components/CleanExpensesTable/CleanExpensesTable.tsx b/ngui/ui/src/components/CleanExpensesTable/CleanExpensesTable.tsx index 1bd7ae94a..c955a8dab 100644 --- a/ngui/ui/src/components/CleanExpensesTable/CleanExpensesTable.tsx +++ b/ngui/ui/src/components/CleanExpensesTable/CleanExpensesTable.tsx @@ -30,7 +30,7 @@ const LocationNodes = ({ region, service_name: serviceName, k8s_node: k8sNode, k { value: region, messageId: "region" }, { value: serviceName, messageId: "service" }, { value: k8sNode, messageId: "node" }, - { value: k8sNamespace, messageId: "namespace" } + { value: k8sNamespace, messageId: "namespace" }, ].filter(({ value }) => Boolean(value)); const toString = () => captionSettings.map(({ value, messageId }) => `${intl.formatMessage({ id: messageId })}: ${value}`); @@ -42,12 +42,12 @@ const LocationNodes = ({ region, service_name: serviceName, k8s_node: k8sNode, k {intl.formatMessage({ id: messageId })}: {value} - ) + ), })); return { toString, - getNodes + getNodes, }; }; @@ -59,7 +59,7 @@ const CleanExpensesTable = ({ startDateTimestamp, endDateTimestamp, assignmentRuleCreationLinkParameters, - totalResourcesCount + totalResourcesCount, }) => { const dispatch = useDispatch(); const { organizationId } = useOrganizationInfo(); @@ -82,7 +82,7 @@ const CleanExpensesTable = ({ cell: ({ row: { original, id } }) => ( ), - enableHiding: false + enableHiding: false, }, { header: ( @@ -100,7 +100,7 @@ const CleanExpensesTable = ({ /> ), defaultSort: "desc", - enableHiding: false + enableHiding: false, }, { header: ( @@ -111,23 +111,23 @@ const CleanExpensesTable = ({ columnSelector: { accessor: "paidNetworkTraffic", messageId: "paidNetworkTraffic", - dataTestId: "btn_toggle_paid_network_traffic" + dataTestId: "btn_toggle_paid_network_traffic", }, accessorKey: "traffic_expenses", enableSorting: false, style: { - minWidth: 320 + minWidth: 320, }, cell: ({ row: { - original: { traffic_expenses: trafficExpenses = [] } - } + original: { traffic_expenses: trafficExpenses = [] }, + }, }) => isEmptyArray(trafficExpenses) ? ( CELL_EMPTY_VALUE ) : ( - ) + ), }, tags({ headerDataTestId: "lbl_metadata", @@ -137,23 +137,23 @@ const CleanExpensesTable = ({ columnSelector: { accessor: "metadata", messageId: "metadata", - dataTestId: "btn_toggle_column_metadata" + dataTestId: "btn_toggle_column_metadata", }, - sorted: false + sorted: false, }), resourcePoolOwner({ accessorKey: "pool/owner", columnSelector: { accessor: "pool/owner", messageId: "pool/owner", - dataTestId: "btn_toggle_column_pool_owner" + dataTestId: "btn_toggle_column_pool_owner", }, getOwner: (rowOriginal) => { const { owner } = rowOriginal; return owner ? { - name: owner.name + name: owner.name, } : undefined; }, @@ -164,10 +164,10 @@ const CleanExpensesTable = ({ ? { id: pool.id, name: pool.name, - purpose: pool.purpose + purpose: pool.purpose, } : undefined; - } + }, }), { header: ( @@ -179,22 +179,22 @@ const CleanExpensesTable = ({ columnSelector: { accessor: "resourceType", messageId: "type", - dataTestId: "btn_toggle_column_type" + dataTestId: "btn_toggle_column_type", }, cell: ({ row: { - original: { resource_type: resourceType, cluster_type_id: clusterTypeId, is_environment: isEnvironment, shareable } - } + original: { resource_type: resourceType, cluster_type_id: clusterTypeId, is_environment: isEnvironment, shareable }, + }, }) => ( - ) + ), }, { header: ( @@ -205,11 +205,11 @@ const CleanExpensesTable = ({ columnSelector: { accessor: "location", messageId: "location", - dataTestId: "btn_toggle_column_location" + dataTestId: "btn_toggle_column_location", }, accessorKey: "locationString", style: { - whiteSpace: "nowrap" + whiteSpace: "nowrap", }, cell: ({ row: { original, id } }) => { const { cloud_account_type: cloudType, cloud_account_id: cloudId, cloud_account_name: cloudName } = original; @@ -237,7 +237,7 @@ const CleanExpensesTable = ({ ))} ); - } + }, }, tags({ accessorKey: "tagsString", @@ -245,9 +245,9 @@ const CleanExpensesTable = ({ columnSelector: { accessor: "tags", messageId: "tags", - dataTestId: "btn_toggle_column_tags" - } - }) + dataTestId: "btn_toggle_column_tags", + }, + }), ], [endDateTimestamp, startDateTimestamp] ); @@ -293,8 +293,8 @@ const CleanExpensesTable = ({ dataTestId: "btn_mark_as_environment", action: () => { dispatch(markResourcesAsEnvironments(organizationId, selectedResourceIds)); - } - } + }, + }, ]; if (typeof downloadResources === "function") { @@ -311,17 +311,17 @@ const CleanExpensesTable = ({ key: "xlsx", messageId: "xlsxFile", action: () => downloadResources(DOWNLOAD_FILE_FORMATS.XLSX), - dataTestId: "btn_download_xlsx" + dataTestId: "btn_download_xlsx", }, { key: "json", messageId: "jsonFile", action: () => downloadResources(DOWNLOAD_FILE_FORMATS.JSON), - dataTestId: "btn_download_json" - } - ] + dataTestId: "btn_download_json", + }, + ], }, - dataTestId: "btn_download" + dataTestId: "btn_download", }); } @@ -331,7 +331,7 @@ const CleanExpensesTable = ({ messageId: "addAssignmentRuleShort", icon: , type: "button", - link: getCreateAssignmentRuleUrl(assignmentRuleCreationLinkParameters) + link: getCreateAssignmentRuleUrl(assignmentRuleCreationLinkParameters), }); } @@ -350,8 +350,8 @@ const CleanExpensesTable = ({ actionBar={{ show: true, definition: { - items: getActionBarItems() - } + items: getActionBarItems(), + }, }} getRowId={(row) => row.resource_id} withSearch @@ -362,13 +362,13 @@ const CleanExpensesTable = ({ totalResourcesCount ? { total: totalResourcesCount } : { - hideTotal: true + hideTotal: true, } } dataTestIds={{ infoArea: { displayed: "counter_displayed", - selected: "counter_selected" + selected: "counter_selected", }, searchInput: "input_search", searchButton: "btn_search", @@ -376,8 +376,8 @@ const CleanExpensesTable = ({ columnsSelector: { container: "list_columns", button: "btn_columns", - clear: "btn_select_clear_all" - } + clear: "btn_select_clear_all", + }, }} /> ); diff --git a/ngui/ui/src/components/CleanExpensesTableGroup/CleanExpensesTableGroup.tsx b/ngui/ui/src/components/CleanExpensesTableGroup/CleanExpensesTableGroup.tsx index c0c647b23..3ca3a0909 100644 --- a/ngui/ui/src/components/CleanExpensesTableGroup/CleanExpensesTableGroup.tsx +++ b/ngui/ui/src/components/CleanExpensesTableGroup/CleanExpensesTableGroup.tsx @@ -17,7 +17,7 @@ import { ASSIGNMENT_RULE_CONDITIONS_QUERY_PARAMETER, TAG_IS, CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX, - CLEAN_EXPENSES_GROUP_TYPES_LIST + CLEAN_EXPENSES_GROUP_TYPES_LIST, } from "utils/constants"; import { SPACING_2 } from "utils/layouts"; import { updateSearchParams } from "utils/network"; @@ -47,7 +47,7 @@ const getGroupedExpenses = ({ expenses, groupType, groupBy, sortGroupsBy }) => { return EMPTY_GROUP_VALUE; } return tag ?? OTHER_TAG_GROUP_VALUE; - } + }, }[groupType]; const sortGroups = (groups) => [ @@ -57,12 +57,12 @@ const getGroupedExpenses = ({ expenses, groupType, groupBy, sortGroupsBy }) => { const bTotalExpenses = b[1][sortGroupsBy]; return bTotalExpenses - aTotalExpenses; - }) + }), ]; const getEmptyDisplayedMessageId = () => ({ - [CLEAN_EXPENSES_GROUP_TYPES.TAG]: "(empty)" + [CLEAN_EXPENSES_GROUP_TYPES.TAG]: "(empty)", })[groupType]; const getAssignmentRuleCreationQueryParameters = (groupValue) => { @@ -73,10 +73,10 @@ const getGroupedExpenses = ({ expenses, groupType, groupBy, sortGroupsBy }) => { type: TAG_IS, value: { tagKey: groupBy, - tagValue: groupValue - } - } - ] + tagValue: groupValue, + }, + }, + ], }; } @@ -91,13 +91,13 @@ const getGroupedExpenses = ({ expenses, groupType, groupBy, sortGroupsBy }) => { const groupNameGetter = { [CLEAN_EXPENSES_GROUP_TYPES.POOL]: () => { const { - pool: { name, purpose: type, id } + pool: { name, purpose: type, id }, } = expense; return ; }, [CLEAN_EXPENSES_GROUP_TYPES.OWNER]: () => expense.owner.name, [CLEAN_EXPENSES_GROUP_TYPES.TAG]: () => - groupValue === OTHER_TAG_GROUP_VALUE ? intl.formatMessage({ id: groupValue }) : groupValue + groupValue === OTHER_TAG_GROUP_VALUE ? intl.formatMessage({ id: groupValue }) : groupValue, }[groupType]; return groupNameGetter(); @@ -113,8 +113,8 @@ const getGroupedExpenses = ({ expenses, groupType, groupBy, sortGroupsBy }) => { expenses: groupData, [TOTAL_EXPENSES]: getTotalExpenses(groupData), [COUNT]: getLength(groupData), - assignmentRuleCreationQueryParameters: getAssignmentRuleCreationQueryParameters(groupValue) - } + assignmentRuleCreationQueryParameters: getAssignmentRuleCreationQueryParameters(groupValue), + }, ] ); @@ -134,11 +134,11 @@ const CleanExpensesTableGroup = ({ isDownloadingResources = false, startDateTimestamp, endDateTimestamp, - totalResourcesCount + totalResourcesCount, }) => { const { [GROUP_TYPE_PARAM_NAME]: groupTypeQueryParameter = "", - [GROUP_BY_PARAM_NAME]: groupByQueryParameter = groupTypeQueryParameter + [GROUP_BY_PARAM_NAME]: groupByQueryParameter = groupTypeQueryParameter, } = useReactiveSearchParams(SEARCH_PARAMS); const dispatch = useDispatch(); @@ -170,8 +170,8 @@ const CleanExpensesTableGroup = ({ expenses, groupType: groupTypeQueryParameter, groupBy: groupByQueryParameter, - sortGroupsBy - }) + sortGroupsBy, + }), })); } }, [expenses, groupByQueryParameter, groupTypeQueryParameter, sortGroupsBy, validateQueryParameters]); @@ -179,7 +179,7 @@ const CleanExpensesTableGroup = ({ const groupState = validateQueryParameters() ? { groupType: groupTypeQueryParameter, - groupBy: groupByQueryParameter + groupBy: groupByQueryParameter, } : DEFAULT_GROUP_STATE; @@ -187,7 +187,7 @@ const CleanExpensesTableGroup = ({ if (!cachedGroups[groupBy]) { setCachedGroups((cache) => ({ ...cache, - [groupBy]: getGroupedExpenses({ expenses, groupType, groupBy, sortGroupsBy }) + [groupBy]: getGroupedExpenses({ expenses, groupType, groupBy, sortGroupsBy }), })); } }; @@ -204,7 +204,7 @@ const CleanExpensesTableGroup = ({ ? {} : { name: groupState.groupType, - value: groupState.groupBy + value: groupState.groupBy, } } label={} @@ -213,11 +213,11 @@ const CleanExpensesTableGroup = ({ [getPaginationQueryKey(CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX)]: undefined, [getSearchQueryKey(CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX)]: undefined, [GROUP_TYPE_PARAM_NAME]: groupType, - [GROUP_BY_PARAM_NAME]: groupBy + [GROUP_BY_PARAM_NAME]: groupBy, }); handleGroupSelectorChange({ groupType, - groupBy + groupBy, }); }} onClear={() => { @@ -225,7 +225,7 @@ const CleanExpensesTableGroup = ({ [GROUP_TYPE_PARAM_NAME]: undefined, [GROUP_BY_PARAM_NAME]: undefined, [getPaginationQueryKey(CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX)]: undefined, - [getSearchQueryKey(CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX)]: undefined + [getSearchQueryKey(CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX)]: undefined, }); }} items={[ @@ -233,13 +233,13 @@ const CleanExpensesTableGroup = ({ name: CLEAN_EXPENSES_GROUP_TYPES.POOL, value: CLEAN_EXPENSES_GROUP_TYPES.POOL, type: LINEAR_SELECTOR_ITEMS_TYPES.TEXT, - dataTestId: "ls_item_pool" + dataTestId: "ls_item_pool", }, { name: CLEAN_EXPENSES_GROUP_TYPES.OWNER, value: CLEAN_EXPENSES_GROUP_TYPES.OWNER, type: LINEAR_SELECTOR_ITEMS_TYPES.TEXT, - dataTestId: "ls_item_owner" + dataTestId: "ls_item_owner", }, ...(!isEmptyArray(tags) ? [ @@ -252,14 +252,14 @@ const CleanExpensesTableGroup = ({ value: tag, label: tag, key: tag, - dataTestId: `ls_mi_tag_name_${index}` - })) - } + dataTestId: `ls_mi_tag_name_${index}`, + })), + }, ] - : []) + : []), ]} dataTestIds={{ - label: "ls_lbl_group" + label: "ls_lbl_group", }} /> {!isGroupStateEmpty && } @@ -273,7 +273,7 @@ const CleanExpensesTableGroup = ({ onAccordionChange={() => { updateSearchParams({ [getPaginationQueryKey(CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX)]: undefined, - [getSearchQueryKey(CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX)]: undefined + [getSearchQueryKey(CLEAN_EXPENSES_TABLE_QUERY_PARAM_PREFIX)]: undefined, }); }} groupedResources={cachedGroups[groupState.groupBy] ?? []} diff --git a/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/SortGroupsBySelector.styles.ts b/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/SortGroupsBySelector.styles.ts index d103b274a..680c409ea 100644 --- a/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/SortGroupsBySelector.styles.ts +++ b/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/SortGroupsBySelector.styles.ts @@ -2,11 +2,11 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ titleText: { - marginRight: theme.spacing(0.5) + marginRight: theme.spacing(0.5), }, sortGroupsByWrapper: { - marginLeft: theme.spacing(3) - } + marginLeft: theme.spacing(3), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/SortGroupsBySelector.tsx b/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/SortGroupsBySelector.tsx index 3a5174321..9f29c549b 100644 --- a/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/SortGroupsBySelector.tsx +++ b/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/SortGroupsBySelector.tsx @@ -7,12 +7,12 @@ import useStyles from "./SortGroupsBySelector.styles"; export const SORT_GROUPS_BY = [ { name: intl.formatMessage({ id: "expenses" }).toLowerCase(), - value: TOTAL_EXPENSES + value: TOTAL_EXPENSES, }, { name: intl.formatMessage({ id: "resourceCount" }).toLowerCase(), - value: COUNT - } + value: COUNT, + }, ]; const SortGroupsBySelector = ({ sortGroupsBy, setSortGroupsBy }) => { @@ -29,7 +29,7 @@ const SortGroupsBySelector = ({ sortGroupsBy, setSortGroupsBy }) => { }} value={sortGroupsBy} sx={{ - minWidth: "initial" + minWidth: "initial", }} > diff --git a/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/actionCreators.ts b/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/actionCreators.ts index b4c2f5060..a45d82a2d 100644 --- a/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/actionCreators.ts +++ b/ngui/ui/src/components/CleanExpensesTableGroup/SortGroupsBySelector/actionCreators.ts @@ -2,5 +2,5 @@ import { CHANGE_SORT_GROUPS_BY } from "./actionTypes"; export const changeSortGroupsBy = (value) => ({ type: CHANGE_SORT_GROUPS_BY, - value + value, }); diff --git a/ngui/ui/src/components/CloudAccountDetails/CloudAccountDetails.tsx b/ngui/ui/src/components/CloudAccountDetails/CloudAccountDetails.tsx index 9cae85cd6..e0e9258b8 100644 --- a/ngui/ui/src/components/CloudAccountDetails/CloudAccountDetails.tsx +++ b/ngui/ui/src/components/CloudAccountDetails/CloudAccountDetails.tsx @@ -14,7 +14,7 @@ import { UpdateDataSourceCredentialsModal, RenameDataSourceModal, KubernetesIntegrationModal, - DataSourceBillingReimportModal + DataSourceBillingReimportModal, } from "components/SideModalManager/SideModals"; import SummaryGrid from "components/SummaryGrid"; import TabsWrapper from "components/TabsWrapper"; @@ -39,7 +39,7 @@ import { GCP_CNR, ALIBABA_CNR, NEBIUS, - GCP_TENANT + GCP_TENANT, } from "utils/constants"; import { summarizeChildrenDetails } from "utils/dataSources"; import { SPACING_2 } from "utils/layouts"; @@ -50,7 +50,7 @@ const { UPLOAD: UPLOAD_TAB, NODES: NODES_TAB, ADVANCED: ADVANCED_TAB, - PRICING: PRICING_TAB + PRICING: PRICING_TAB, } = CLOUD_ACCOUNT_DETAILS_PAGE_TABS; const PageActionBar = ({ id, type, parentId, name, config, lastImportAt, isLoading }) => { @@ -82,9 +82,9 @@ const PageActionBar = ({ id, type, parentId, name, config, lastImportAt, isLoadi disabled: !hasPreviousImport, tooltip: { show: !hasPreviousImport, - value: - } - }) + value: , + }, + }), }; }; @@ -101,9 +101,9 @@ const PageActionBar = ({ id, type, parentId, name, config, lastImportAt, isLoadi action: () => openSideModal(KubernetesIntegrationModal, { dataSourceId: id, - user: config.user - }) - }) + user: config.user, + }), + }), }, { show: true, @@ -115,8 +115,8 @@ const PageActionBar = ({ id, type, parentId, name, config, lastImportAt, isLoadi type: "button", isLoading, action: () => openSideModal(RenameDataSourceModal, { name, id }), - requiredActions: ["MANAGE_CLOUD_CREDENTIALS"] - }) + requiredActions: ["MANAGE_CLOUD_CREDENTIALS"], + }), }, { show: type !== ENVIRONMENT, @@ -132,9 +132,9 @@ const PageActionBar = ({ id, type, parentId, name, config, lastImportAt, isLoadi disabled: parentId, tooltip: { show: parentId, - value: - } - }) + value: , + }, + }), }, getBillingReimportButton(), { @@ -147,9 +147,9 @@ const PageActionBar = ({ id, type, parentId, name, config, lastImportAt, isLoadi type: "button", isLoading, action: () => openSideModal(DisconnectCloudAccountModal, { name, id, type, parentId }), - requiredActions: ["MANAGE_CLOUD_CREDENTIALS"] - }) - } + requiredActions: ["MANAGE_CLOUD_CREDENTIALS"], + }), + }, ] .map(({ show, getItem }) => (show ? getItem() : null)) .filter((item) => item !== null); @@ -159,7 +159,7 @@ const PageActionBar = ({ id, type, parentId, name, config, lastImportAt, isLoadi breadcrumbs: [ - + , ], title: { text: name, @@ -169,12 +169,12 @@ const PageActionBar = ({ id, type, parentId, name, config, lastImportAt, isLoadi ? { src: logo, alt: type, - dataTestId: `img_${type}` + dataTestId: `img_${type}`, } : // TODO: icon is used fro Environment only, replace with custom svg and keep only `logo` - { icon: Icon && } + { icon: Icon && }, }, - items: getActionBarItems() + items: getActionBarItems(), }; return ; @@ -189,67 +189,67 @@ const Summary = ({ lastMonthCost, cost, forecast, isLoading }) => { type: SUMMARY_CARD_TYPES.EXTENDED, valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: cost + value: cost, }, captionMessageId: "totalExpensesMonthToDate", relativeValueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedNumber, relativeValueComponentProps: { value: getPercentageChangeModule(cost, lastMonthCost) / 100, - format: "percentage" + format: "percentage", }, relativeValueCaptionMessageId: cost > lastMonthCost ? "moreThanForPreviousMonth" : "lessThanForPreviousMonth", dataTestIds: { - cardTestId: "card_total_exp" + cardTestId: "card_total_exp", }, color: cost > lastMonthCost ? "error" : "success", - isLoading + isLoading, }, { key: "forecastForThisMonth", type: SUMMARY_CARD_TYPES.EXTENDED, valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: forecast + value: forecast, }, captionMessageId: "forecastForThisMonth", relativeValueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedNumber, relativeValueComponentProps: { value: getPercentageChangeModule(forecast, lastMonthCost) / 100, - format: "percentage" + format: "percentage", }, relativeValueCaptionMessageId: forecast > lastMonthCost ? "moreThanForPreviousMonth" : "lessThanForPreviousMonth", dataTestIds: { - cardTestId: "card_forecast" + cardTestId: "card_forecast", }, color: forecast > lastMonthCost ? "error" : "success", - isLoading - } + isLoading, + }, ] : [ { key: "totalExpensesMonthToDate", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: cost + value: cost, }, captionMessageId: "totalExpensesMonthToDate", dataTestIds: { - cardTestId: "card_total_exp" + cardTestId: "card_total_exp", }, - isLoading + isLoading, }, { key: "forecastForThisMonth", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: forecast + value: forecast, }, captionMessageId: "forecastForThisMonth", dataTestIds: { - cardTestId: "card_forecast" + cardTestId: "card_forecast", }, - isLoading - } + isLoading, + }, ]; return ; @@ -270,7 +270,7 @@ const Tabs = ({ discoveryInfos, config, isLoading, - isTenant + isTenant, }) => { const isAwsReportUploadEnabled = useIsFeatureEnabled("show_aws_upload_report"); @@ -288,7 +288,7 @@ const Tabs = ({ createdAt={createdAt} /> ), - renderCondition: () => type !== ENVIRONMENT + renderCondition: () => type !== ENVIRONMENT, }, { title: ADVANCED_TAB, @@ -304,26 +304,26 @@ const Tabs = ({ discoveryInfos={discoveryInfos} /> ), - renderCondition: () => !isTenant + renderCondition: () => !isTenant, }, { title: UPLOAD_TAB, dataTestId: "tab_upload", node: !!id && , - renderCondition: () => type === AWS_CNR && isAwsReportUploadEnabled + renderCondition: () => type === AWS_CNR && isAwsReportUploadEnabled, }, { title: NODES_TAB, dataTestId: "tab_cost_model", node: !!id && , - renderCondition: () => type === KUBERNETES_CNR + renderCondition: () => type === KUBERNETES_CNR, }, { title: PRICING_TAB, dataTestId: "tab_pricing", node: !!id && , - renderCondition: () => type === DATABRICKS - } + renderCondition: () => type === DATABRICKS, + }, ]; return ( @@ -332,7 +332,7 @@ const Tabs = ({ tabsProps={{ tabs, name: "cloud-account", - defaultTab: type === ENVIRONMENT ? ADVANCED_TAB : DETAILS_TAB + defaultTab: type === ENVIRONMENT ? ADVANCED_TAB : DETAILS_TAB, }} /> ); @@ -353,7 +353,7 @@ const CloudAccountDetails = ({ data = {}, isLoading = false }) => { last_getting_metric_attempt_at: lastMetricsRetrievalAttempt, last_getting_metric_attempt_error: lastGettingMetricAttemptError, details = {}, - config = {} + config = {}, } = data; const dataSources = useAllDataSources(); @@ -366,7 +366,7 @@ const CloudAccountDetails = ({ data = {}, isLoading = false }) => { cost = 0, last_month_cost: lastMonthCost = 0, forecast = 0, - discovery_infos: discoveryInfos + discovery_infos: discoveryInfos, } = { ...details, ...childrenDetails }; const isTenant = [AZURE_TENANT, GCP_TENANT].includes(type); diff --git a/ngui/ui/src/components/CloudAccountsOverview/CloudAccountsOverview.tsx b/ngui/ui/src/components/CloudAccountsOverview/CloudAccountsOverview.tsx index cfd4616ac..01a3ae613 100644 --- a/ngui/ui/src/components/CloudAccountsOverview/CloudAccountsOverview.tsx +++ b/ngui/ui/src/components/CloudAccountsOverview/CloudAccountsOverview.tsx @@ -20,8 +20,8 @@ type SummaryProps = { const actionBarDefinition = { title: { - messageId: "dataSourcesTitle" - } + messageId: "dataSourcesTitle", + }, }; const Summary = ({ totalExpenses, totalForecast, lastMonthCost, isLoading = false }: SummaryProps) => { @@ -33,69 +33,69 @@ const Summary = ({ totalExpenses, totalForecast, lastMonthCost, isLoading = fals type: SUMMARY_CARD_TYPES.EXTENDED, valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalExpenses + value: totalExpenses, }, captionMessageId: "totalExpensesMonthToDate", relativeValueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedNumber, relativeValueComponentProps: { value: getPercentageChangeModule(totalExpenses, lastMonthCost) / 100, - format: "percentage" + format: "percentage", }, relativeValueCaptionMessageId: totalExpenses > lastMonthCost ? "moreThanForPreviousMonth" : "lessThanForPreviousMonth", dataTestIds: { - cardTestId: "card_total_exp" + cardTestId: "card_total_exp", }, color: totalExpenses > lastMonthCost ? "error" : "success", - isLoading + isLoading, }, { key: "forecastForThisMonth", type: SUMMARY_CARD_TYPES.EXTENDED, valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalForecast + value: totalForecast, }, captionMessageId: "forecastForThisMonth", relativeValueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedNumber, relativeValueComponentProps: { value: getPercentageChangeModule(totalForecast, lastMonthCost) / 100, - format: "percentage" + format: "percentage", }, relativeValueCaptionMessageId: totalForecast > lastMonthCost ? "moreThanForPreviousMonth" : "lessThanForPreviousMonth", dataTestIds: { - cardTestId: "card_forecast" + cardTestId: "card_forecast", }, color: totalForecast > lastMonthCost ? "error" : "success", - isLoading - } + isLoading, + }, ] : [ { key: "totalExpensesMonthToDate", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalExpenses + value: totalExpenses, }, captionMessageId: "totalExpensesMonthToDate", dataTestIds: { - cardTestId: "card_total_exp" + cardTestId: "card_total_exp", }, - isLoading + isLoading, }, { key: "forecastForThisMonth", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalForecast + value: totalForecast, }, captionMessageId: "forecastForThisMonth", dataTestIds: { - cardTestId: "card_forecast" + cardTestId: "card_forecast", }, - isLoading - } + isLoading, + }, ]; return ; @@ -108,7 +108,7 @@ const AwsLinkedAccountsWarning = () => { diff --git a/ngui/ui/src/components/CloudAccountsOverview/CloudAccountsOverviewMocked.tsx b/ngui/ui/src/components/CloudAccountsOverview/CloudAccountsOverviewMocked.tsx index ee7dce0ce..5ef5cb3e9 100644 --- a/ngui/ui/src/components/CloudAccountsOverview/CloudAccountsOverviewMocked.tsx +++ b/ngui/ui/src/components/CloudAccountsOverview/CloudAccountsOverviewMocked.tsx @@ -11,11 +11,11 @@ const CloudAccountsOverviewMocked = () => ( resources: 16, last_month_cost: 18560.75036486765, forecast: 20110.78, - cost: 12785.47 + cost: 12785.47, }, name: "Azure trial", id: "11fddd0e-3ece-410c-8e68-003abcc44576", - type: "azure_cnr" + type: "azure_cnr", }, { config: {}, @@ -23,11 +23,11 @@ const CloudAccountsOverviewMocked = () => ( resources: 610, last_month_cost: 40120.98, forecast: 35270.79, - cost: 28385.59 + cost: 28385.59, }, name: "AWS HQ", id: "8c63e980-6572-4b36-be82-a2bc59705888", - type: "aws_cnr" + type: "aws_cnr", }, { config: {}, @@ -35,11 +35,11 @@ const CloudAccountsOverviewMocked = () => ( resources: 5, last_month_cost: 11750, forecast: 10750.8, - cost: 6102.09 + cost: 6102.09, }, name: "AWS Marketing", id: "8cqw980-6572-4b36-be82-a2bc59705888", - type: "aws_cnr" + type: "aws_cnr", }, { config: {}, @@ -47,11 +47,11 @@ const CloudAccountsOverviewMocked = () => ( resources: 5, last_month_cost: 6500.5523346274, forecast: 7850.19, - cost: 4334.18 + cost: 4334.18, }, name: "Azure enterprise agreement", id: "8c6ds80-6572-4b36-be82-a2bc59705888", - type: "azure_cnr" + type: "azure_cnr", }, { config: {}, @@ -59,11 +59,11 @@ const CloudAccountsOverviewMocked = () => ( resources: 12, last_month_cost: 5900.5523346274, forecast: 5226.19, - cost: 2512.18 + cost: 2512.18, }, name: "K8s cluster", id: "528e7e01-cf63-4041-980a-fd92a50da65d", - type: "kubernetes_cnr" + type: "kubernetes_cnr", }, { config: {}, @@ -71,12 +71,12 @@ const CloudAccountsOverviewMocked = () => ( resources: 125, last_month_cost: 0, forecast: 203.6, - cost: 203.59941599999996 + cost: 203.59941599999996, }, name: "Ali dev", id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", - type: "alibaba_cnr" - } + type: "alibaba_cnr", + }, ]} /> ); diff --git a/ngui/ui/src/components/CloudAccountsTable/CloudAccountsTable.styles.ts b/ngui/ui/src/components/CloudAccountsTable/CloudAccountsTable.styles.ts index e30232475..f62c8acd1 100644 --- a/ngui/ui/src/components/CloudAccountsTable/CloudAccountsTable.styles.ts +++ b/ngui/ui/src/components/CloudAccountsTable/CloudAccountsTable.styles.ts @@ -3,8 +3,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ nameCellWrapper: { display: "flex", - alignItems: "center" - } + alignItems: "center", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/CloudAccountsTable/CloudAccountsTable.tsx b/ngui/ui/src/components/CloudAccountsTable/CloudAccountsTable.tsx index 43ea7e427..78008e9d5 100644 --- a/ngui/ui/src/components/CloudAccountsTable/CloudAccountsTable.tsx +++ b/ngui/ui/src/components/CloudAccountsTable/CloudAccountsTable.tsx @@ -32,16 +32,16 @@ const NameCell = ({ last_import_at: lastImportAt, last_import_attempt_at: lastImportAttemptAt, last_import_attempt_error: lastImportAttemptError, - children + children, }, - index + index, }, - colorScale + colorScale, }) => { const importStatus = getBillingImportStatus({ timestamp: lastImportAt, attemptTimestamp: lastImportAttemptAt, - error: lastImportAttemptError + error: lastImportAttemptError, }); return ( @@ -61,7 +61,7 @@ const NameCell = ({ - ) + ), } : undefined } @@ -95,32 +95,32 @@ const CloudAccountsTable = ({ cloudAccounts = [], isLoading = false }) => { - ) + ), }, { header: intl.formatMessage({ id: "type" }), accessorKey: "type", - cell: ({ cell }) => + cell: ({ cell }) => , }, { header: intl.formatMessage({ id: "resourcesChargedThisMonth" }), id: "details.resources", accessorFn: (originalRow) => originalRow.details?.resources, - emptyValue: "0" + emptyValue: "0", }, { header: intl.formatMessage({ id: "expensesUpToDateThisMonth" }), id: "details.cost", accessorFn: (originalRow) => originalRow.details?.cost, cell: ({ cell }) => , - defaultSort: "desc" + defaultSort: "desc", }, { header: intl.formatMessage({ id: "expensesForecastThisMonth" }), id: "details.forecast", accessorFn: (originalRow) => originalRow.details?.forecast, - cell: ({ cell }) => - } + cell: ({ cell }) => , + }, ]; }, [theme.palette.chart, classes.nameCellWrapper]); @@ -148,9 +148,9 @@ const CloudAccountsTable = ({ cloudAccounts = [], isLoading = false }) => { variant: "contained", type: "button", action: () => navigate(CLOUD_ACCOUNT_CONNECT), - requiredActions: ["MANAGE_CLOUD_CREDENTIALS"] - } - ] + requiredActions: ["MANAGE_CLOUD_CREDENTIALS"], + }, + ], }; return isLoading ? ( @@ -158,18 +158,18 @@ const CloudAccountsTable = ({ cloudAccounts = [], isLoading = false }) => { ) : ( ); diff --git a/ngui/ui/src/components/CloudCostComparison/CloudCostComparison.tsx b/ngui/ui/src/components/CloudCostComparison/CloudCostComparison.tsx index 6e96f6b6c..7be0e2e61 100644 --- a/ngui/ui/src/components/CloudCostComparison/CloudCostComparison.tsx +++ b/ngui/ui/src/components/CloudCostComparison/CloudCostComparison.tsx @@ -10,8 +10,8 @@ import { SPACING_1 } from "utils/layouts"; const actionBarDefinition = { title: { messageId: "cloudCostComparisonTitle", - dataTestId: "lbl_cloud_cost_comparison" - } + dataTestId: "lbl_cloud_cost_comparison", + }, }; const CloudCostComparison = ({ relevantSizes, onFiltersApply, errors, isLoading = false }) => { @@ -44,7 +44,7 @@ const CloudCostComparison = ({ relevantSizes, onFiltersApply, errors, isLoading position="top" alertProps={{ messageId: "cloudCostComparisonDescription", - messageValues: { br:
    } + messageValues: { br:
    }, }} /> diff --git a/ngui/ui/src/components/CloudCostComparisonModalContent/CloudCostComparisonModalContent.tsx b/ngui/ui/src/components/CloudCostComparisonModalContent/CloudCostComparisonModalContent.tsx index 4833db15e..eb143c760 100644 --- a/ngui/ui/src/components/CloudCostComparisonModalContent/CloudCostComparisonModalContent.tsx +++ b/ngui/ui/src/components/CloudCostComparisonModalContent/CloudCostComparisonModalContent.tsx @@ -31,19 +31,19 @@ const ComparisonTable = ({ sizes }) => { ), - enableSorting: false + enableSorting: false, }, { header: intl.formatMessage({ id: "cpu" }), accessorKey: "cpu", cell: ({ row }) => row.original.cpu, - enableSorting: false + enableSorting: false, }, { header: intl.formatMessage({ id: "ram" }), accessorKey: "ram", cell: ({ row }) => row.original.ram, - enableSorting: false + enableSorting: false, }, { header: intl.formatMessage({ id: "cost" }), @@ -53,24 +53,24 @@ const ComparisonTable = ({ sizes }) => { { id: "valuePerHour" }, { value: moneyFormatter(FORMATTED_MONEY_TYPES.TINY, row.original.cost, { - format: row.original.currency - }) + format: row.original.currency, + }), } ), - defaultSort: "desc" + defaultSort: "desc", }, { header: intl.formatMessage({ id: "location" }), accessorKey: "location", cell: ({ row }) => row.original.location, - enableSorting: false + enableSorting: false, }, { header: intl.formatMessage({ id: "instanceFamily" }), accessorKey: "instance_family", cell: ({ row }) => row.original.instance_family, - enableSorting: false - } + enableSorting: false, + }, ], [intl, moneyFormatter, removeSize] ); @@ -80,7 +80,7 @@ const ComparisonTable = ({ sizes }) => { columns={columns} data={sizes} counters={{ - show: false + show: false, }} /> ); diff --git a/ngui/ui/src/components/CloudCostComparisonTable/CloudCostComparisonTable.tsx b/ngui/ui/src/components/CloudCostComparisonTable/CloudCostComparisonTable.tsx index 112fcc29d..e29ad5eba 100644 --- a/ngui/ui/src/components/CloudCostComparisonTable/CloudCostComparisonTable.tsx +++ b/ngui/ui/src/components/CloudCostComparisonTable/CloudCostComparisonTable.tsx @@ -63,7 +63,7 @@ const CloudCostComparisonTable = ({ relevantSizes, errors }) => { !cloudProvider || cloudProvider.includes(cloudType) ? flavorsColumn({ cloudType, - error: errors[cloudType] + error: errors[cloudType], }) : undefined; @@ -74,7 +74,7 @@ const CloudCostComparisonTable = ({ relevantSizes, errors }) => { getSizesColumn(AZURE_CNR), getSizesColumn(GCP_CNR), getSizesColumn(ALIBABA_CNR), - isNebiusConnectionEnabled ? getSizesColumn(NEBIUS) : undefined + isNebiusConnectionEnabled ? getSizesColumn(NEBIUS) : undefined, ].filter(Boolean); }, [cloudProvider, errors, isNebiusConnectionEnabled]); @@ -91,10 +91,10 @@ const CloudCostComparisonTable = ({ relevantSizes, errors }) => { cloud_type: cloudType, cpu, ram, - id: `${size.name}-${size.location}-${size.instance_family}-${size.cost}-${size.currency}` - })) + id: `${size.name}-${size.location}-${size.instance_family}-${size.cost}-${size.currency}`, + })), ]) - ) + ), })), [relevantSizes] ); @@ -113,15 +113,15 @@ const CloudCostComparisonTable = ({ relevantSizes, errors }) => { { key: "btn-compare", type: "custom", - node: + node: , }, { key: "btn-clear-selection", type: "custom", - node: - } - ] - } + node: , + }, + ], + }, }} columns={columns} data={tableData} diff --git a/ngui/ui/src/components/CloudCostComparisonTable/columns/cpu.tsx b/ngui/ui/src/components/CloudCostComparisonTable/columns/cpu.tsx index d38c79ff2..9e32757e9 100644 --- a/ngui/ui/src/components/CloudCostComparisonTable/columns/cpu.tsx +++ b/ngui/ui/src/components/CloudCostComparisonTable/columns/cpu.tsx @@ -8,5 +8,5 @@ export const cpu = () => ({ ), defaultSort: "asc", - accessorKey: "cpu" + accessorKey: "cpu", }); diff --git a/ngui/ui/src/components/CloudCostComparisonTable/columns/flavors.tsx b/ngui/ui/src/components/CloudCostComparisonTable/columns/flavors.tsx index db605ee33..752511eda 100644 --- a/ngui/ui/src/components/CloudCostComparisonTable/columns/flavors.tsx +++ b/ngui/ui/src/components/CloudCostComparisonTable/columns/flavors.tsx @@ -24,14 +24,14 @@ const Flavor = ({ flavor }) => { <>
    @@ -39,7 +39,7 @@ const Flavor = ({ flavor }) => { id="value / value" values={{ value1: name, - value2: location + value2: location, }} /> @@ -58,7 +58,7 @@ const Flavor = ({ flavor }) => { icon={isFlavorSelected ? : } sx={{ position: "absolute", - top: "-9px" + top: "-9px", }} /> @@ -68,7 +68,9 @@ const Flavor = ({ flavor }) => { + value: ( + + ), }} />
    @@ -83,8 +85,8 @@ const FlavorsCell = ({ flavors }) => ( key={flavor.id} sx={{ "&:not(:last-child)": { - marginBottom: 1 - } + marginBottom: 1, + }, }} > @@ -103,7 +105,7 @@ const Header = ({ cloudType, error }) => { [AZURE_CNR]: , [GCP_CNR]: , [ALIBABA_CNR]: , - [NEBIUS]: + [NEBIUS]: , }[cloudType]; return ( @@ -120,11 +122,11 @@ export const flavors = ({ cloudType, error }) => ({ enableSorting: false, style: { minWidth: "200px", - verticalAlign: "top" + verticalAlign: "top", }, cell: ({ row: { - original: { [cloudType]: cloudTypeFlavors } - } - }) => + original: { [cloudType]: cloudTypeFlavors }, + }, + }) => , }); diff --git a/ngui/ui/src/components/CloudCostComparisonTable/columns/ram.tsx b/ngui/ui/src/components/CloudCostComparisonTable/columns/ram.tsx index 03952da6c..754cb1c63 100644 --- a/ngui/ui/src/components/CloudCostComparisonTable/columns/ram.tsx +++ b/ngui/ui/src/components/CloudCostComparisonTable/columns/ram.tsx @@ -9,5 +9,5 @@ export const ram = () => ({ ), accessorKey: "ram", - cell: ({ cell }) => + cell: ({ cell }) => , }); diff --git a/ngui/ui/src/components/CloudExpensesChart/CloudExpensesChart.tsx b/ngui/ui/src/components/CloudExpensesChart/CloudExpensesChart.tsx index c65b8e51a..131c648b9 100644 --- a/ngui/ui/src/components/CloudExpensesChart/CloudExpensesChart.tsx +++ b/ngui/ui/src/components/CloudExpensesChart/CloudExpensesChart.tsx @@ -43,7 +43,7 @@ const CloudExpensesChart = ({ cloudAccounts, limit, forecast, isLoading = false } @@ -75,7 +75,7 @@ const CloudExpensesChart = ({ cloudAccounts, limit, forecast, isLoading = false } @@ -100,7 +100,7 @@ const CloudExpensesChart = ({ cloudAccounts, limit, forecast, isLoading = false ) : ( diff --git a/ngui/ui/src/components/CloudExpensesChartMarker/CloudExpensesChartMarker.tsx b/ngui/ui/src/components/CloudExpensesChartMarker/CloudExpensesChartMarker.tsx index 2887cb3a1..1fe4a1967 100644 --- a/ngui/ui/src/components/CloudExpensesChartMarker/CloudExpensesChartMarker.tsx +++ b/ngui/ui/src/components/CloudExpensesChartMarker/CloudExpensesChartMarker.tsx @@ -14,7 +14,7 @@ const CloudExpensesChartMarker = ({ chartBorderWidth, chartSegmentHeight, chartBase, - position = "bottom" + position = "bottom", }) => { const theme = useTheme(); const ref = useRef(); @@ -30,12 +30,12 @@ const CloudExpensesChartMarker = ({ const positionStyles = { top: { - bottom: `calc(${markerVerticalShift})` + bottom: `calc(${markerVerticalShift})`, }, bottom: { alignItems: "flex-end", - top: `calc(${markerVerticalShift})` - } + top: `calc(${markerVerticalShift})`, + }, }; return ( @@ -50,18 +50,18 @@ const CloudExpensesChartMarker = ({ justifyContent: isRightSideMarker ? "flex-start" : "flex-end", ...(isRightSideMarker ? { - left: `${leftShift}%` + left: `${leftShift}%`, } : { - left: `calc(${leftShift}% - ${markerWidth}px)` - }) + left: `calc(${leftShift}% - ${markerWidth}px)`, + }), }} > diff --git a/ngui/ui/src/components/CloudLabel/CloudLabel.tsx b/ngui/ui/src/components/CloudLabel/CloudLabel.tsx index 3f506c82e..6be5815b5 100644 --- a/ngui/ui/src/components/CloudLabel/CloudLabel.tsx +++ b/ngui/ui/src/components/CloudLabel/CloudLabel.tsx @@ -25,7 +25,7 @@ const CloudLabel = ({ iconProps = {}, disableLink = false, whiteSpace = "nowrap", - display = "flex" + display = "flex", }) => { const hasAdornment = startAdornment || endAdornment; @@ -48,7 +48,7 @@ const CloudLabel = ({ } return renderIconLabel({ - display + display, }); }; diff --git a/ngui/ui/src/components/CloudResourceId/CloudResourceId.styles.ts b/ngui/ui/src/components/CloudResourceId/CloudResourceId.styles.ts index a8de15060..23d5cdf67 100644 --- a/ngui/ui/src/components/CloudResourceId/CloudResourceId.styles.ts +++ b/ngui/ui/src/components/CloudResourceId/CloudResourceId.styles.ts @@ -2,8 +2,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ longNamesBreak: { - wordBreak: "break-all" - } + wordBreak: "break-all", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/CloudResourceId/CloudResourceId.tsx b/ngui/ui/src/components/CloudResourceId/CloudResourceId.tsx index 19ff69b8f..ba1e3c84e 100644 --- a/ngui/ui/src/components/CloudResourceId/CloudResourceId.tsx +++ b/ngui/ui/src/components/CloudResourceId/CloudResourceId.tsx @@ -12,10 +12,10 @@ const CloudResourceIdString = ({ resourceType, dataTestId, disableLink = false, - tooltip + tooltip, }) => { const { - classes: { longNamesBreak } + classes: { longNamesBreak }, } = useStyles(); const content = diff --git a/ngui/ui/src/components/ClusterSubResourcesTable/ClusterSubResourcesTable.tsx b/ngui/ui/src/components/ClusterSubResourcesTable/ClusterSubResourcesTable.tsx index 2cf86ca5b..64dc359b1 100644 --- a/ngui/ui/src/components/ClusterSubResourcesTable/ClusterSubResourcesTable.tsx +++ b/ngui/ui/src/components/ClusterSubResourcesTable/ClusterSubResourcesTable.tsx @@ -20,12 +20,12 @@ const ClusterSubResourcesTable = ({ data = [] }) => { { value: subResource.region, messageId: "region" }, { value: subResource.details?.service_name, messageId: "service" }, { value: subResource.details?.k8s_node, messageId: "node" }, - { value: subResource.details?.k8s_namespace, messageId: "namespace" } + { value: subResource.details?.k8s_namespace, messageId: "namespace" }, ] .filter(({ value }) => Boolean(value)) .map(({ value, messageId }) => ({ key: value, - node: getCaptionText(value, messageId) + node: getCaptionText(value, messageId), })); return { @@ -34,7 +34,7 @@ const ClusterSubResourcesTable = ({ data = [] }) => { .filter(Boolean) .join(" "), locationString: `${subResource.details?.cloud_name} ${subResource.region} ${subResource.details?.cloud_type} ${subResource.details?.service_name} ${subResource.details?.k8s_node} ${subResource.details?.k8s_namespace}`, - locationCaptionNodes: getLocationCaptionNodes() + locationCaptionNodes: getLocationCaptionNodes(), }; }), [data] @@ -59,10 +59,10 @@ const ClusterSubResourcesTable = ({ data = [] }) => { cloud_resource_id: original.cloud_resource_id, cloud_resource_hash: original.cloud_resource_hash, resource_id: original.id, - active: original.active + active: original.active, }} /> - ) + ), }, { header: ( @@ -70,7 +70,7 @@ const ClusterSubResourcesTable = ({ data = [] }) => { ), - accessorKey: "resource_type" + accessorKey: "resource_type", }, { header: ( @@ -80,7 +80,7 @@ const ClusterSubResourcesTable = ({ data = [] }) => { ), accessorKey: "locationString", style: { - whiteSpace: "nowrap" + whiteSpace: "nowrap", }, cell: ({ row: { original } }) => ( @@ -91,7 +91,7 @@ const ClusterSubResourcesTable = ({ data = [] }) => { type={original.details?.cloud_type} /> - ) + ), }, tags({ id: "tags", @@ -99,8 +99,8 @@ const ClusterSubResourcesTable = ({ data = [] }) => { Object.entries(originalRow.tags ?? {}) .map(([key, val]) => `${key}: ${val}`) .join(" "), - getTags: (originalRow) => originalRow.tags - }) + getTags: (originalRow) => originalRow.tags, + }), ], [isManageCloudCredentialsAllowed] ); @@ -111,7 +111,7 @@ const ClusterSubResourcesTable = ({ data = [] }) => { columns={columns} withSearch localization={{ - emptyMessageId: "noSubResources" + emptyMessageId: "noSubResources", }} pageSize={50} /> diff --git a/ngui/ui/src/components/ClusterTypes/ClusterTypes.tsx b/ngui/ui/src/components/ClusterTypes/ClusterTypes.tsx index b9a9404dc..8101c170f 100644 --- a/ngui/ui/src/components/ClusterTypes/ClusterTypes.tsx +++ b/ngui/ui/src/components/ClusterTypes/ClusterTypes.tsx @@ -11,12 +11,12 @@ const actionBarDefinition = { breadcrumbs: [ - + , ], title: { text: , - dataTestId: "lbl_cluster_types" - } + dataTestId: "lbl_cluster_types", + }, }; const ClusterTypes = ({ clusterTypes, onUpdatePriority, isLoading = false }) => ( @@ -34,8 +34,8 @@ const ClusterTypes = ({ clusterTypes, onUpdatePriority, isLoading = false }) => {chunks} - ) - } + ), + }, }} /> diff --git a/ngui/ui/src/components/ClusterTypes/ClusterTypesMocked.tsx b/ngui/ui/src/components/ClusterTypes/ClusterTypesMocked.tsx index 4113140e7..1a00f3c32 100644 --- a/ngui/ui/src/components/ClusterTypes/ClusterTypesMocked.tsx +++ b/ngui/ui/src/components/ClusterTypes/ClusterTypesMocked.tsx @@ -6,18 +6,18 @@ const ClusterTypesMocked = () => ( { name: "Purpose", tag_key: "purpose", - priority: 1 + priority: 1, }, { name: "Created by", tag_key: "aws:createdby", - priority: 2 + priority: 2, }, { name: "Marketing", tag_key: "marketing", - priority: 3 - } + priority: 3, + }, ]} /> ); diff --git a/ngui/ui/src/components/ClusterTypesTable/ClusterTypesTable.tsx b/ngui/ui/src/components/ClusterTypesTable/ClusterTypesTable.tsx index a8a8aa258..0a44c22cd 100644 --- a/ngui/ui/src/components/ClusterTypesTable/ClusterTypesTable.tsx +++ b/ngui/ui/src/components/ClusterTypesTable/ClusterTypesTable.tsx @@ -28,8 +28,8 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } icon: , action: ({ id, name }) => openSideModal(DeleteClusterTypeModal, { clusterTypeId: id, clusterTypeName: name }), dataTestId: "btn_delete", - color: "error" - } + color: "error", + }, ]; const clusterTypesCount = memoizedClusterTypes.length; @@ -42,7 +42,7 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } dataTestId: "btn_prioritize", action: ({ id }) => { onUpdatePriority(id, "prioritize"); - } + }, }, { messageId: "promote", @@ -51,7 +51,7 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } dataTestId: "btn_promote", action: ({ id }) => { onUpdatePriority(id, "promote"); - } + }, }, { messageId: "demote", @@ -60,7 +60,7 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } dataTestId: "btn_demote", action: ({ id }) => { onUpdatePriority(id, "demote"); - } + }, }, { messageId: "deprioritize", @@ -69,8 +69,8 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } dataTestId: "btn_deprioritize", action: ({ id }) => { onUpdatePriority(id, "deprioritize"); - } - } + }, + }, ]; const getActionsColumnDefinition = () => ({ @@ -91,16 +91,16 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } dataTestId: `${item.dataTestId}_${index}`, disabled: original.priority === item.disabledPriority, icon: item.icon, - action: () => item.action(original) + action: () => item.action(original), })), ...basicActions.map((item) => ({ ...item, dataTestId: `${item.dataTestId}_${index}`, - action: () => item.action(original) - })) + action: () => item.action(original), + })), ]} /> - ) + ), }); const basicColumns = [ @@ -110,7 +110,7 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } ), - accessorKey: "name" + accessorKey: "name", }, { header: ( @@ -118,7 +118,7 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } ), - accessorKey: "tag_key" + accessorKey: "tag_key", }, { header: ( @@ -127,8 +127,8 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } ), accessorKey: "priority", - defaultSort: "asc" - } + defaultSort: "asc", + }, ]; return isManageResourcesAllowed ? basicColumns.concat(getActionsColumnDefinition()) : basicColumns; @@ -150,7 +150,7 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } variant: "contained", type: "button", link: CLUSTER_TYPE_CREATE, - dataTestId: "btn_add" + dataTestId: "btn_add", }, { key: "bu-reapply", @@ -158,10 +158,10 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } messageId: "reapplyClusterTypes", type: "button", action: () => openSideModal(ReapplyClusterTypesModal), - dataTestId: "btn_re_apply" - } - ] - } + dataTestId: "btn_re_apply", + }, + ], + }, }} data={memoizedClusterTypes} columns={columns} @@ -170,7 +170,7 @@ const ClusterTypesTable = ({ clusterTypes, onUpdatePriority, isLoading = false } dataTestIds={{ searchInput: "input_search", searchButton: "btn_search", - deleteSearchButton: "btn_delete_search" + deleteSearchButton: "btn_delete_search", }} localization={{ emptyMessageId: "noClusterTypes" }} /> diff --git a/ngui/ui/src/components/CodeBlock/CodeBlock.styles.ts b/ngui/ui/src/components/CodeBlock/CodeBlock.styles.ts index 558a63b10..be336f056 100644 --- a/ngui/ui/src/components/CodeBlock/CodeBlock.styles.ts +++ b/ngui/ui/src/components/CodeBlock/CodeBlock.styles.ts @@ -7,14 +7,14 @@ const useStyles = makeStyles()((theme) => ({ padding: theme.spacing(1), display: "flex", alignItems: "flex-start", - justifyContent: "space-between" + justifyContent: "space-between", }, codeBlock: { margin: 0, width: "100%", height: "100%", - overflow: "auto" - } + overflow: "auto", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/CodeEditor/CodeEditor.tsx b/ngui/ui/src/components/CodeEditor/CodeEditor.tsx index 1b4b063ac..c13672bcc 100644 --- a/ngui/ui/src/components/CodeEditor/CodeEditor.tsx +++ b/ngui/ui/src/components/CodeEditor/CodeEditor.tsx @@ -19,7 +19,7 @@ const CodeEditor = forwardRef( fontSize: 14, fontFamily: theme.typography.mono.fontFamily, borderRadius: "4px", - ...style + ...style, }} readOnly={readOnly} data-color-mode="light" diff --git a/ngui/ui/src/components/CollapsableMenuDrawer/CollapsableMenuDrawer.styles.ts b/ngui/ui/src/components/CollapsableMenuDrawer/CollapsableMenuDrawer.styles.ts index 86a1ba88f..f72000984 100644 --- a/ngui/ui/src/components/CollapsableMenuDrawer/CollapsableMenuDrawer.styles.ts +++ b/ngui/ui/src/components/CollapsableMenuDrawer/CollapsableMenuDrawer.styles.ts @@ -16,27 +16,27 @@ const useStyles = makeStyles()((theme, { buttonOpacity, isExpanded }) => ({ display: "flex", flexDirection: "row", transition: `width ${ANIMATION_LENGTH}s ${ANIMATION_FUNCTION}`, - width: `${INTERACTIVE_BORDER_WIDTH}px` + width: `${INTERACTIVE_BORDER_WIDTH}px`, }, wrapperExpanded: { - width: `${DRAWER_WIDTH}px` + width: `${DRAWER_WIDTH}px`, }, // hiding menu using its margin menu: { width: DRAWER_WIDTH, transition: `margin ${ANIMATION_LENGTH}s ${ANIMATION_FUNCTION}`, marginLeft: 0, - height: "100%" + height: "100%", }, hiddenMenu: { - marginLeft: `${-DRAWER_WIDTH + INTERACTIVE_BORDER_WIDTH}px` + marginLeft: `${-DRAWER_WIDTH + INTERACTIVE_BORDER_WIDTH}px`, }, menuCollapseBorder: { right: `${INTERACTIVE_BORDER_WIDTH / 2}px`, zIndex: theme.zIndex.drawer, cursor: "pointer", position: "relative", - minWidth: `${INTERACTIVE_BORDER_WIDTH}px` + minWidth: `${INTERACTIVE_BORDER_WIDTH}px`, }, drawerPaper: { position: "relative", @@ -45,18 +45,18 @@ const useStyles = makeStyles()((theme, { buttonOpacity, isExpanded }) => ({ "& > *": { // opacity of drawer children helps to move away currently selected menu item background, when menu is collapsed opacity: 1, - transition: `opacity ${ANIMATION_LENGTH / 2}s ${ANIMATION_FUNCTION} 0s` - } + transition: `opacity ${ANIMATION_LENGTH / 2}s ${ANIMATION_FUNCTION} 0s`, + }, }, drawerPaperHidden: { "& > *": { opacity: 0, - transition: `opacity ${ANIMATION_LENGTH}s ${ANIMATION_FUNCTION} ${ANIMATION_LENGTH / 2}s` + transition: `opacity ${ANIMATION_LENGTH}s ${ANIMATION_FUNCTION} ${ANIMATION_LENGTH / 2}s`, }, scrollbarWidth: "none", "::-webkit-scrollbar": { - display: "none" - } + display: "none", + }, }, button: { position: "absolute", @@ -74,14 +74,14 @@ const useStyles = makeStyles()((theme, { buttonOpacity, isExpanded }) => ({ opacity: buttonOpacity, ":hover": { backgroundColor: theme.palette.primary.main, - color: theme.palette.common.white - } + color: theme.palette.common.white, + }, }, buttonIcon: { transition: "transform 0.2s ease-in", transform: `rotate(${isExpanded ? "180" : "0"}deg) scale(0.8)`, - fontSize: "inherit" - } + fontSize: "inherit", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/CollapsableMenuDrawer/CollapsableMenuDrawer.tsx b/ngui/ui/src/components/CollapsableMenuDrawer/CollapsableMenuDrawer.tsx index 0e82e4177..09b0e982a 100644 --- a/ngui/ui/src/components/CollapsableMenuDrawer/CollapsableMenuDrawer.tsx +++ b/ngui/ui/src/components/CollapsableMenuDrawer/CollapsableMenuDrawer.tsx @@ -29,7 +29,7 @@ const CollapsableMenuDrawer = ({ children }) => { variant="permanent" className={cx(classes.menu, hidden ? classes.hiddenMenu : undefined)} classes={{ - paper: cx(classes.drawerPaper, hidden ? classes.drawerPaperHidden : undefined) + paper: cx(classes.drawerPaper, hidden ? classes.drawerPaperHidden : undefined), }} open PaperProps={{ "data-product-tour-id": PRODUCT_TOUR_IDS.MENU_DRAWER }} diff --git a/ngui/ui/src/components/CollapsableMenuDrawer/actionCreators.ts b/ngui/ui/src/components/CollapsableMenuDrawer/actionCreators.ts index 855469965..1a6eae34f 100644 --- a/ngui/ui/src/components/CollapsableMenuDrawer/actionCreators.ts +++ b/ngui/ui/src/components/CollapsableMenuDrawer/actionCreators.ts @@ -2,5 +2,5 @@ import { UPDATE_MAIN_MENU_STATE } from "./actionTypes"; export const updateMainMenuState = (value) => ({ type: UPDATE_MAIN_MENU_STATE, - payload: value + payload: value, }); diff --git a/ngui/ui/src/components/ColumnSets/ColumnSets.tsx b/ngui/ui/src/components/ColumnSets/ColumnSets.tsx index 467546c3e..d23ac35c0 100644 --- a/ngui/ui/src/components/ColumnSets/ColumnSets.tsx +++ b/ngui/ui/src/components/ColumnSets/ColumnSets.tsx @@ -35,7 +35,7 @@ const ColumnSets = ({ columnSets, tableContext, onApply, onDelete, isLoadingProp ), - accessorKey: "name" + accessorKey: "name", }, { header: ( @@ -55,7 +55,7 @@ const ColumnSets = ({ columnSets, tableContext, onApply, onDelete, isLoadingProp messageId: "apply", icon: , isLoading: getIsGetColumnSetLoading(id), - action: () => onApply(id) + action: () => onApply(id), }, { key: "delete", @@ -63,13 +63,13 @@ const ColumnSets = ({ columnSets, tableContext, onApply, onDelete, isLoadingProp color: "error", icon: , isLoading: getIsDeleteColumnSetLoading(id), - action: () => onDelete(id) - } + action: () => onDelete(id), + }, ]} /> ); - } - } + }, + }, ], [getIsDeleteColumnSetLoading, getIsGetColumnSetLoading, onApply, onDelete] ); @@ -94,7 +94,7 @@ const ColumnSets = ({ columnSets, tableContext, onApply, onDelete, isLoadingProp enableSearchQueryParam={false} enablePaginationQueryParam={false} localization={{ - emptyMessageId: "noSets" + emptyMessageId: "noSets", }} /> )} diff --git a/ngui/ui/src/components/ConnectCloudAccount/ConnectCloudAccount.tsx b/ngui/ui/src/components/ConnectCloudAccount/ConnectCloudAccount.tsx index 4331f088a..8d9cfdfc6 100644 --- a/ngui/ui/src/components/ConnectCloudAccount/ConnectCloudAccount.tsx +++ b/ngui/ui/src/components/ConnectCloudAccount/ConnectCloudAccount.tsx @@ -10,11 +10,11 @@ const actionBarDefinition = { breadcrumbs: [ - + , ], title: { - text: - } + text: , + }, }; const ConnectCloudAccount = ({ isLoading, onSubmit, onCancel }) => ( diff --git a/ngui/ui/src/components/ConnectJira/ConnectJira.tsx b/ngui/ui/src/components/ConnectJira/ConnectJira.tsx index 08bb31333..fcd752945 100644 --- a/ngui/ui/src/components/ConnectJira/ConnectJira.tsx +++ b/ngui/ui/src/components/ConnectJira/ConnectJira.tsx @@ -39,7 +39,7 @@ const ConnectJira = ({ isLoading = false, isError = false }) => ( + supportEmail: (chunks) => , }} /> diff --git a/ngui/ui/src/components/ConnectSlack/ConnectSlack.tsx b/ngui/ui/src/components/ConnectSlack/ConnectSlack.tsx index 152c96f97..cfcfc091e 100644 --- a/ngui/ui/src/components/ConnectSlack/ConnectSlack.tsx +++ b/ngui/ui/src/components/ConnectSlack/ConnectSlack.tsx @@ -40,7 +40,7 @@ const ConnectSlack = ({ isLoading = false, isError = false }) => ( + supportEmail: (chunks) => , }} /> diff --git a/ngui/ui/src/components/ConstraintMessage/ConstraintHitMessage.tsx b/ngui/ui/src/components/ConstraintMessage/ConstraintHitMessage.tsx index 2265844dc..784b440f2 100644 --- a/ngui/ui/src/components/ConstraintMessage/ConstraintHitMessage.tsx +++ b/ngui/ui/src/components/ConstraintMessage/ConstraintHitMessage.tsx @@ -21,10 +21,10 @@ export const useFormatConstraintHitMessage = () => { if (ttlFormat === CONSTRAINT_MESSAGE_FORMAT.TEXT) { return intl.formatMessage( { - id: "hour" + id: "hour", }, { - value: limit + value: limit, } ); } diff --git a/ngui/ui/src/components/ConstraintMessage/TtlMessage.tsx b/ngui/ui/src/components/ConstraintMessage/TtlMessage.tsx index ba1f2c190..1ac9e2ed1 100644 --- a/ngui/ui/src/components/ConstraintMessage/TtlMessage.tsx +++ b/ngui/ui/src/components/ConstraintMessage/TtlMessage.tsx @@ -20,7 +20,7 @@ const TtlMessage = ({ type, limit, formats = {} }) => { value={format(secondsToMilliseconds(limit), EN_FULL_FORMAT)} dataTestIds={{ key: `p_${type}_expires_at`, - value: `p_${type}_expires_at_value` + value: `p_${type}_expires_at_value`, }} /> ); diff --git a/ngui/ui/src/components/ConstraintValue/ConstraintValue.tsx b/ngui/ui/src/components/ConstraintValue/ConstraintValue.tsx index 7e720eaeb..464ee0722 100644 --- a/ngui/ui/src/components/ConstraintValue/ConstraintValue.tsx +++ b/ngui/ui/src/components/ConstraintValue/ConstraintValue.tsx @@ -6,7 +6,7 @@ import { RECURRING_BUDGET_POLICY, QUOTA_POLICY, RESOURCE_COUNT_ANOMALY, - TAGGING_POLICY + TAGGING_POLICY, } from "utils/constants"; import { getPercentageChangeModule } from "utils/math"; @@ -61,7 +61,7 @@ const getValue = (hitValue, constraintLimit, type) => { ), - [TAGGING_POLICY]: + [TAGGING_POLICY]: , }[type] ?? null ); }; diff --git a/ngui/ui/src/components/ContentBackdrop/ContentBackdrop.styles.ts b/ngui/ui/src/components/ContentBackdrop/ContentBackdrop.styles.ts index efe07e92b..a3897db5d 100644 --- a/ngui/ui/src/components/ContentBackdrop/ContentBackdrop.styles.ts +++ b/ngui/ui/src/components/ContentBackdrop/ContentBackdrop.styles.ts @@ -12,14 +12,14 @@ const useStyles = makeStyles()((theme, { bannerMaxWidth = "450px" }) => ({ left: "50%", zIndex: theme.zIndex.drawer, transform: "translate(-50%, -50%)", - padding: theme.spacing(2) + padding: theme.spacing(2), }, icon: { width: "4rem", height: "4rem", marginTop: `calc(-2rem - ${theme.spacing(2)})`, - marginBottom: theme.spacing(1) - } + marginBottom: theme.spacing(1), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ContentBackdrop/ContentBackdrop.tsx b/ngui/ui/src/components/ContentBackdrop/ContentBackdrop.tsx index 689632c51..4c9623884 100644 --- a/ngui/ui/src/components/ContentBackdrop/ContentBackdrop.tsx +++ b/ngui/ui/src/components/ContentBackdrop/ContentBackdrop.tsx @@ -5,7 +5,7 @@ import useStyles from "./ContentBackdrop.styles"; const ContentBackdrop = ({ children, bannerContent, bannerMaxWidth, icon }) => { const { classes } = useStyles({ - bannerMaxWidth + bannerMaxWidth, }); return ( diff --git a/ngui/ui/src/components/CopyText/CopyText.tsx b/ngui/ui/src/components/CopyText/CopyText.tsx index 98ee17d4c..8b176743a 100644 --- a/ngui/ui/src/components/CopyText/CopyText.tsx +++ b/ngui/ui/src/components/CopyText/CopyText.tsx @@ -30,7 +30,7 @@ const CopyText = ({ dynamicCopyIcon = false, copyMessageId = "copy", copiedMessageId = "copied", - sx = {} + sx = {}, }: CopyTextProps) => { const { text: textDataTestId, button: buttonDataTestId } = dataTestIds; const [titleMessageId, setTitleMessageId] = useState(copyMessageId); @@ -48,7 +48,7 @@ const CopyText = ({ sx={{ display: "inline-flex", alignItems: "center", - ...sx + ...sx, }} data-test-id={textDataTestId} onMouseEnter={() => setIsHovered(true)} @@ -64,7 +64,7 @@ const CopyText = ({ display: "inline-flex", pointerEvents: dynamicCopyIcon && !isHovered ? "none" : "auto", visibility: dynamicCopyIcon && !isHovered ? "hidden" : "visible", - paddingLeft: children ? theme.spacing(0.5) : 0 + paddingLeft: children ? theme.spacing(0.5) : 0, })} > - ) + ), }} /> ); diff --git a/ngui/ui/src/components/CostExplorer/CostExplorer.test.tsx b/ngui/ui/src/components/CostExplorer/CostExplorer.test.tsx index f9b676eae..1c7a475b3 100644 --- a/ngui/ui/src/components/CostExplorer/CostExplorer.test.tsx +++ b/ngui/ui/src/components/CostExplorer/CostExplorer.test.tsx @@ -15,7 +15,7 @@ it("renders without crashing", () => { }, { messageId: "pool", link: EXPENSES_BY_POOL, icon: }, { messageId: "owner", link: EXPENSES_BY_OWNER, icon: }, - { messageId: "geography", link: EXPENSES_MAP, icon: } + { messageId: "geography", link: EXPENSES_MAP, icon: }, ]; const MAX_ORGANIZATION_NAME_LENGTH = 64; @@ -42,7 +42,7 @@ const CostExplorer = ({ onApply, startDateTimestamp, endDateTimestamp, - isInScopeOfPageMockup = false + isInScopeOfPageMockup = false, }) => { const navigate = useNavigate(); @@ -62,11 +62,11 @@ const CostExplorer = ({ {isNameLong ? sliceByLimitWithEllipsis(organizationName, MAX_ORGANIZATION_NAME_LENGTH) : organizationName} - ) + ), }} /> ), - isLoading + isLoading, }, items: [ { @@ -85,13 +85,13 @@ const CostExplorer = ({ parameters: { orgName: { data: organizationName, - type: "string" + type: "string", }, dateRange: { data: PDF_ELEMENTS.costExplorer.dates, - type: "object" - } - } + type: "object", + }, + }, }, { type: PDF_ELEMENTS.markup.logo }, @@ -106,11 +106,11 @@ const CostExplorer = ({ { type: PDF_ELEMENTS.markup.spacer }, { id: PDF_ELEMENTS.costExplorer.barChart }, - { type: PDF_ELEMENTS.markup.footer } + { type: PDF_ELEMENTS.markup.footer }, ]); - } - } - ] + }, + }, + ], }; const renderBarChart = (periodType) => { @@ -141,7 +141,7 @@ const CostExplorer = ({ navigate( getResourcesExpensesUrl({ sStartDate: bandDetails.startDate, - sEndDate: bandDetails.endDate + sEndDate: bandDetails.endDate, }) ); } @@ -163,7 +163,7 @@ const CostExplorer = ({ isLoading={isLoading} pdfIds={{ totalExpensesForSelectedPeriod: PDF_ELEMENTS.costExplorer.expensesSummary, - totalExpensesForPreviousPeriod: PDF_ELEMENTS.costExplorer.previousExpensesSummary + totalExpensesForPreviousPeriod: PDF_ELEMENTS.costExplorer.previousExpensesSummary, }} /> diff --git a/ngui/ui/src/components/CostExplorer/CostExplorerMocked.tsx b/ngui/ui/src/components/CostExplorer/CostExplorerMocked.tsx index 56a03f194..1aa2eeef1 100644 --- a/ngui/ui/src/components/CostExplorer/CostExplorerMocked.tsx +++ b/ngui/ui/src/components/CostExplorer/CostExplorerMocked.tsx @@ -8,45 +8,45 @@ const CostExplorerMocked = () => { [firstDateRangePoint]: [ { name: "expenses", - expense: 4627.5326954293 - } + expense: 4627.5326954293, + }, ], [addDaysToTimestamp(firstDateRangePoint, 1)]: [ { name: "expenses", - expense: 4172.8897778029 - } + expense: 4172.8897778029, + }, ], [addDaysToTimestamp(firstDateRangePoint, 2)]: [ { name: "expenses", - expense: 4721.1260492347 - } + expense: 4721.1260492347, + }, ], [addDaysToTimestamp(firstDateRangePoint, 3)]: [ { name: "expenses", - expense: 3345.0090466069 - } + expense: 3345.0090466069, + }, ], [addDaysToTimestamp(firstDateRangePoint, 4)]: [ { name: "expenses", - expense: 3321.3196469359 - } + expense: 3321.3196469359, + }, ], [addDaysToTimestamp(firstDateRangePoint, 5)]: [ { name: "expenses", - expense: 3778.3216464526 - } + expense: 3778.3216464526, + }, ], [lastDateRangePoint]: [ { name: "expenses", - expense: 1967.831646181 - } - ] + expense: 1967.831646181, + }, + ], }; return ( diff --git a/ngui/ui/src/components/CreateBIExport/CreateBIExport.tsx b/ngui/ui/src/components/CreateBIExport/CreateBIExport.tsx index ee498bc9b..277cce046 100644 --- a/ngui/ui/src/components/CreateBIExport/CreateBIExport.tsx +++ b/ngui/ui/src/components/CreateBIExport/CreateBIExport.tsx @@ -19,18 +19,18 @@ const CreateBIExport = ({ onSubmit, onCancel, isLoadingProps }) => ( , - + , ], title: { messageId: "createBIExportTitle", - dataTestId: "lbl_create_bi_export_title" - } + dataTestId: "lbl_create_bi_export_title", + }, }} /> diff --git a/ngui/ui/src/components/CreateEnvironmentProperties/CreateEnvironmentProperties.tsx b/ngui/ui/src/components/CreateEnvironmentProperties/CreateEnvironmentProperties.tsx index 65a71d895..a155995a3 100644 --- a/ngui/ui/src/components/CreateEnvironmentProperties/CreateEnvironmentProperties.tsx +++ b/ngui/ui/src/components/CreateEnvironmentProperties/CreateEnvironmentProperties.tsx @@ -31,8 +31,8 @@ const CreateEnvironmentProperties = ({ environmentId, existingProperties }) => { onCancel={() => removeContainer(containerId)} existingProperties={existingProperties} /> - ) - } + ), + }, ]; }); }; @@ -52,7 +52,7 @@ const CreateEnvironmentProperties = ({ environmentId, existingProperties }) => { disabled={isRestricted} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} /> diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/CreateOrganizationConstraintForm.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/CreateOrganizationConstraintForm.tsx index 10b061b34..243b82203 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/CreateOrganizationConstraintForm.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/CreateOrganizationConstraintForm.tsx @@ -18,7 +18,7 @@ import { MaxValueInput, StartDatePicker, TagsInputs, - TYPE_REQUIRED + TYPE_REQUIRED, } from "./FormElements"; const CreateOrganizationConstraintForm = ({ onSubmit, types, navigateAway }) => { @@ -43,8 +43,8 @@ const CreateOrganizationConstraintForm = ({ onSubmit, types, navigateAway }) => [CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.REQUIRED_TAG]: "", [CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.PROHIBITED_TAG]: "", [CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.CORRELATION_TAG_1]: "", - [CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.CORRELATION_TAG_2]: "" - } + [CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.CORRELATION_TAG_2]: "", + }, }); const { handleSubmit, watch } = methods; diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/EvaluationPeriodInput.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/EvaluationPeriodInput.tsx index 00079c135..671667f38 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/EvaluationPeriodInput.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/EvaluationPeriodInput.tsx @@ -9,7 +9,7 @@ const FIELD_NAME = CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.EVALUATION_PE const EvaluationPeriodInput = () => { const { register, - formState: { errors } + formState: { errors }, } = useFormContext(); const intl = useIntl(); @@ -24,18 +24,18 @@ const EvaluationPeriodInput = () => { {...register(FIELD_NAME, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, validate: { - positiveIntegerOrZero + positiveIntegerOrZero, }, max: { value: 180, - message: intl.formatMessage({ id: "lessOrEqual" }, { max: 180 }) - } + message: intl.formatMessage({ id: "lessOrEqual" }, { max: 180 }), + }, })} InputProps={{ - endAdornment: intl.formatMessage({ id: "days" }).toLowerCase() + endAdornment: intl.formatMessage({ id: "days" }).toLowerCase(), }} /> ); diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/Filters.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/Filters.tsx index 33821ff56..2ab720f84 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/Filters.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/Filters.tsx @@ -28,7 +28,7 @@ const FiltersView = ({ filterValues }) => { onAppliedFiltersChange={(newFilters) => { onChange({ ...appliedFilters, - ...newFilters + ...newFilters, }); }} /> @@ -48,7 +48,7 @@ const FiltersContainer = ({ exceptions }) => { return { startDate, - endDate + endDate, }; }, []); diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/MaxValueInput.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/MaxValueInput.tsx index 29bea8251..483ec39b9 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/MaxValueInput.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/MaxValueInput.tsx @@ -10,7 +10,7 @@ const FIELD_NAME = CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.MAX_VALUE; const MaxValueInput = () => { const { register, - formState: { errors } + formState: { errors }, } = useFormContext(); const intl = useIntl(); @@ -25,15 +25,15 @@ const MaxValueInput = () => { {...register(FIELD_NAME, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, validate: { - positiveInteger + positiveInteger, }, max: { value: MAX_INT_32, - message: intl.formatMessage({ id: "lessOrEqual" }, { max: MAX_INT_32 }) - } + message: intl.formatMessage({ id: "lessOrEqual" }, { max: MAX_INT_32 }), + }, })} /> ); diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/MonthlyBudgetInput.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/MonthlyBudgetInput.tsx index 6064c0380..729cf2720 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/MonthlyBudgetInput.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/MonthlyBudgetInput.tsx @@ -12,7 +12,7 @@ const FIELD_NAME = CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.MONTHLY_BUDGE const MonthlyBudgetInput = () => { const { register, - formState: { errors } + formState: { errors }, } = useFormContext(); const { currencySymbol } = useOrganizationInfo(); @@ -29,18 +29,18 @@ const MonthlyBudgetInput = () => { {...register(FIELD_NAME, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, validate: { - positiveNumber + positiveNumber, }, max: { value: MAX_INT_32, - message: intl.formatMessage({ id: "lessOrEqual" }, { max: MAX_INT_32 }) - } + message: intl.formatMessage({ id: "lessOrEqual" }, { max: MAX_INT_32 }), + }, })} InputProps={{ - startAdornment: {currencySymbol} + startAdornment: {currencySymbol}, }} /> ); diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/NameInput.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/NameInput.tsx index 1900c8d26..5ff864f9c 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/NameInput.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/NameInput.tsx @@ -10,7 +10,7 @@ const FIELD_NAME = CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.NAME; const NameInput = () => { const { register, - formState: { errors } + formState: { errors }, } = useFormContext(); const intl = useIntl(); @@ -25,18 +25,18 @@ const NameInput = () => { {...register(FIELD_NAME, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, maxLength: { value: NAME_MAX_SIZE, message: intl.formatMessage( { id: "maxLength" }, { inputName: intl.formatMessage({ id: "value" }), max: NAME_MAX_SIZE } - ) + ), }, validate: { - notOnlyWhiteSpaces - } + notOnlyWhiteSpaces, + }, })} /> ); diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/StartDatePicker.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/StartDatePicker.tsx index 36806b7eb..bfea95d82 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/StartDatePicker.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/StartDatePicker.tsx @@ -9,7 +9,7 @@ const StartDatePicker = () => { const { formState: { errors }, control, - trigger + trigger, } = useFormContext(); return ( @@ -31,14 +31,14 @@ const StartDatePicker = () => { validation={{ dataTestId: `input_${FIELD_NAME}`, error: !!errors[FIELD_NAME], - helperText: errors[FIELD_NAME]?.message + helperText: errors[FIELD_NAME]?.message, }} intervalMinutes={INTERVAL_TTL_CONSTRAINT} dataTestIds={{ field: { input: `input_${FIELD_NAME}`, - iconButton: "btn_select_date" - } + iconButton: "btn_select_date", + }, }} withTimePicker /> diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/SubmitButton.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/SubmitButton.tsx index 86de9f0b5..0e4da0b62 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/SubmitButton.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/SubmitButton.tsx @@ -23,7 +23,7 @@ const SubmitButton = () => { disabled={isRestricted} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} dataTestId="btn_create" /> diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TagsInputs.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TagsInputs.tsx index 1b4a0e4cd..81ae23e6e 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TagsInputs.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TagsInputs.tsx @@ -30,7 +30,7 @@ const AutocompleteInput = ({ labelMessageId, fieldName, tags, required = false } const { control, - formState: { errors } + formState: { errors }, } = useFormContext(); const sortedTags = tags.toSorted(); @@ -42,15 +42,15 @@ const AutocompleteInput = ({ labelMessageId, fieldName, tags, required = false } rules={{ required: { value: required, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, maxLength: { value: TAG_KEY_MAX_SIZE, message: intl.formatMessage( { id: "maxLength" }, { inputName: intl.formatMessage({ id: "value" }), max: TAG_KEY_MAX_SIZE } - ) - } + ), + }, }} render={({ field: { value: formFieldValue, onChange, ...rest } }) => ( { const buttons = [TYPE_REQUIRED, TYPE_PROHIBITED, TYPE_CORRELATION].map((strategy) => ({ id: strategy, messageId: strategy, - dataTestId: `tags_strategy_${strategy}` + dataTestId: `tags_strategy_${strategy}`, })); const { useGet } = AvailableFiltersService(); @@ -101,11 +101,11 @@ const TagsInputs = () => { return { startDate, - endDate + endDate, }; }, []); const { - filters: { tag = [] } + filters: { tag = [] }, } = useGet(params); return ( diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/ThresholdInput.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/ThresholdInput.tsx index c4737bf6c..19e1f540b 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/ThresholdInput.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/ThresholdInput.tsx @@ -9,7 +9,7 @@ const FIELD_NAME = CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.THRESHOLD; const ThresholdInput = () => { const { register, - formState: { errors } + formState: { errors }, } = useFormContext(); const intl = useIntl(); @@ -24,18 +24,18 @@ const ThresholdInput = () => { {...register(FIELD_NAME, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, validate: { - positiveIntegerOrZero + positiveIntegerOrZero, }, max: { value: 1000, - message: intl.formatMessage({ id: "lessOrEqual" }, { max: 1000 }) - } + message: intl.formatMessage({ id: "lessOrEqual" }, { max: 1000 }), + }, })} InputProps={{ - endAdornment: "%" + endAdornment: "%", }} /> ); diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TotalBudgetInput.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TotalBudgetInput.tsx index 9e743c4c1..d94e71dc9 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TotalBudgetInput.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TotalBudgetInput.tsx @@ -12,7 +12,7 @@ const FIELD_NAME = CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.TOTAL_BUDGET; const TotalBudgetInput = () => { const { register, - formState: { errors } + formState: { errors }, } = useFormContext(); const { currencySymbol } = useOrganizationInfo(); @@ -29,19 +29,19 @@ const TotalBudgetInput = () => { {...register(FIELD_NAME, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, validate: { positiveNumber: (value) => - isPositiveNumberOrZero(value) && value > 0 ? true : intl.formatMessage({ id: "positiveNumber" }) + isPositiveNumberOrZero(value) && value > 0 ? true : intl.formatMessage({ id: "positiveNumber" }), }, max: { value: MAX_INT_32, - message: intl.formatMessage({ id: "lessOrEqual" }, { max: MAX_INT_32 }) - } + message: intl.formatMessage({ id: "lessOrEqual" }, { max: MAX_INT_32 }), + }, })} InputProps={{ - startAdornment: {currencySymbol} + startAdornment: {currencySymbol}, }} /> ); diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TypeSelector.tsx b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TypeSelector.tsx index f4ca1747d..c6ec8ba20 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TypeSelector.tsx +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/TypeSelector.tsx @@ -9,7 +9,7 @@ const FIELD_NAME = CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES.TYPE; const TypeSelector = ({ types }) => { const { control, - formState: { errors } + formState: { errors }, } = useFormContext(); const intl = useIntl(); @@ -22,8 +22,8 @@ const TypeSelector = ({ types }) => { rules={{ required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) - } + message: intl.formatMessage({ id: "thisFieldIsRequired" }), + }, }} render={({ field: controllerField }) => ( { {intl.formatMessage({ - id: ANOMALY_TYPES[type] || QUOTAS_AND_BUDGETS_TYPES[type] || TAGGING_POLICY_TYPES[type] + id: ANOMALY_TYPES[type] || QUOTAS_AND_BUDGETS_TYPES[type] || TAGGING_POLICY_TYPES[type], })} diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/index.ts b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/index.ts index e2ced98ac..3567950ab 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/index.ts +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/FormElements/index.ts @@ -26,5 +26,5 @@ export { TagsInputs, TYPE_REQUIRED, TYPE_PROHIBITED, - TYPE_CORRELATION + TYPE_CORRELATION, }; diff --git a/ngui/ui/src/components/CreateOrganizationConstraintForm/constants.ts b/ngui/ui/src/components/CreateOrganizationConstraintForm/constants.ts index 54d8c9960..eded62ba4 100644 --- a/ngui/ui/src/components/CreateOrganizationConstraintForm/constants.ts +++ b/ngui/ui/src/components/CreateOrganizationConstraintForm/constants.ts @@ -12,5 +12,5 @@ export const CREATE_ORGANIZATION_CONSTRAINT_FORM_FIELD_NAMES = Object.freeze({ PROHIBITED_TAG: "prohibitedTagField", REQUIRED_TAG: "requiredTagField", CORRELATION_TAG_1: "tagsCorrelationPrimaryTag", - CORRELATION_TAG_2: "tagsCorrelationCorrelatedTag" + CORRELATION_TAG_2: "tagsCorrelationCorrelatedTag", }); diff --git a/ngui/ui/src/components/CreatePowerSchedule/CreatePowerSchedule.tsx b/ngui/ui/src/components/CreatePowerSchedule/CreatePowerSchedule.tsx index 37519b48e..62d82a4b4 100644 --- a/ngui/ui/src/components/CreatePowerSchedule/CreatePowerSchedule.tsx +++ b/ngui/ui/src/components/CreatePowerSchedule/CreatePowerSchedule.tsx @@ -10,12 +10,12 @@ const actionBarDefinition = { breadcrumbs: [ - + , ], title: { messageId: "createPowerScheduleTitle", - dataTestId: "lbl_create_power_schedule_title" - } + dataTestId: "lbl_create_power_schedule_title", + }, }; const CreatePowerSchedule = () => ( diff --git a/ngui/ui/src/components/CurrencyCodeAutocomplete/CurrencyCodeAutocomplete.tsx b/ngui/ui/src/components/CurrencyCodeAutocomplete/CurrencyCodeAutocomplete.tsx index 9132481e3..f2c9ab67a 100644 --- a/ngui/ui/src/components/CurrencyCodeAutocomplete/CurrencyCodeAutocomplete.tsx +++ b/ngui/ui/src/components/CurrencyCodeAutocomplete/CurrencyCodeAutocomplete.tsx @@ -24,7 +24,7 @@ const CurrencyCodeAutocomplete = forwardRef(({ name, onBlur, value, onChange, er onBlur={onBlur} filterOptions={createFilterOptions({ matchFrom: "any", - stringify: (option) => stringifyCurrency(option) + stringify: (option) => stringifyCurrency(option), })} renderOption={(props, option) =>
  • {stringifyCurrency(option)}
  • } renderInput={(params) => ( diff --git a/ngui/ui/src/components/CurrentBooking/AvailableIn/AvailableIn.tsx b/ngui/ui/src/components/CurrentBooking/AvailableIn/AvailableIn.tsx index 8ed9c0788..8bcbe3b8c 100644 --- a/ngui/ui/src/components/CurrentBooking/AvailableIn/AvailableIn.tsx +++ b/ngui/ui/src/components/CurrentBooking/AvailableIn/AvailableIn.tsx @@ -24,9 +24,9 @@ const AvailableIn = ({ remained }: AvailableInProps) => { INTERVAL_DURATION_VALUE_TYPES.WEEKS, INTERVAL_DURATION_VALUE_TYPES.DAYS, INTERVAL_DURATION_VALUE_TYPES.HOURS, - INTERVAL_DURATION_VALUE_TYPES.MINUTES + INTERVAL_DURATION_VALUE_TYPES.MINUTES, ], - duration: remained + duration: remained, })} /> ); diff --git a/ngui/ui/src/components/CustomersGallery/CustomersGallery.styles.ts b/ngui/ui/src/components/CustomersGallery/CustomersGallery.styles.ts index 32d35d730..3faea1a36 100644 --- a/ngui/ui/src/components/CustomersGallery/CustomersGallery.styles.ts +++ b/ngui/ui/src/components/CustomersGallery/CustomersGallery.styles.ts @@ -2,24 +2,24 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ meetCustomersWrapper: { - width: "100%" + width: "100%", }, logosWrapper: { width: "100%", display: "flex", [theme.breakpoints.down("md")]: { - flexWrap: "wrap" + flexWrap: "wrap", }, - justifyContent: "center" + justifyContent: "center", }, logoWrapper: { maxWidth: "120px", height: 54, - width: "100%" + width: "100%", }, logoImage: { - width: "100%" - } + width: "100%", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/CustomersGallery/CustomersGallery.tsx b/ngui/ui/src/components/CustomersGallery/CustomersGallery.tsx index 14bf18813..67dcf792e 100644 --- a/ngui/ui/src/components/CustomersGallery/CustomersGallery.tsx +++ b/ngui/ui/src/components/CustomersGallery/CustomersGallery.tsx @@ -12,32 +12,32 @@ import useStyles from "./CustomersGallery.styles"; const customersLogos = [ { src: airbus, - altMessageId: "airbus" + altMessageId: "airbus", }, { src: pwc, - altMessageId: "pwc" + altMessageId: "pwc", }, { src: nokia, - altMessageId: "nokia" + altMessageId: "nokia", }, { src: bentley, - altMessageId: "bentley" + altMessageId: "bentley", }, { src: yvesRocher, - altMessageId: "yvesRocher" + altMessageId: "yvesRocher", }, { src: dhl, - altMessageId: "dhl" + altMessageId: "dhl", }, { src: tSystems, - altMessageId: "tSystems" - } + altMessageId: "tSystems", + }, ]; const CustomersGallery = () => { diff --git a/ngui/ui/src/components/Dashboard/Dashboard.test.tsx b/ngui/ui/src/components/Dashboard/Dashboard.test.tsx index ce939cd95..b38fcde84 100644 --- a/ngui/ui/src/components/Dashboard/Dashboard.test.tsx +++ b/ngui/ui/src/components/Dashboard/Dashboard.test.tsx @@ -9,7 +9,7 @@ it("renders without crashing", () => { root.render( diff --git a/ngui/ui/src/components/Dashboard/Dashboard.tsx b/ngui/ui/src/components/Dashboard/Dashboard.tsx index 339e76515..3c4a38b9c 100644 --- a/ngui/ui/src/components/Dashboard/Dashboard.tsx +++ b/ngui/ui/src/components/Dashboard/Dashboard.tsx @@ -50,7 +50,7 @@ const Dashboard = () => { recommendationsCard: , poolsRequiringAttentionCard: , recentTasksCard: , - recentModelsCard: + recentModelsCard: , }; return ( @@ -65,7 +65,7 @@ const Dashboard = () => { dataTestIds={{ title: "lbl_privacy_policy", paper: "window_privacy_policy", - button: "btn_proceed" + button: "btn_proceed", }} header={} message={ @@ -82,7 +82,7 @@ const Dashboard = () => { ul: (chunks) =>
      {chunks}
    , li: (chunks) =>
  • {chunks}
  • , strong: (chunks) => {chunks}, - br:
    + br:
    , }} /> } diff --git a/ngui/ui/src/components/Dashboard/DashboardMocked.tsx b/ngui/ui/src/components/Dashboard/DashboardMocked.tsx index af997be51..33397e480 100644 --- a/ngui/ui/src/components/Dashboard/DashboardMocked.tsx +++ b/ngui/ui/src/components/Dashboard/DashboardMocked.tsx @@ -18,12 +18,12 @@ const cleanExpenses = [ pool: { purpose: "business_unit", id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Engineering" + name: "Engineering", }, region: "eu-central-1", owner: { id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Amy Smith" + name: "Amy Smith", }, cloud_account_type: "aws_cnr", service_name: "AmazonEC2", @@ -31,7 +31,7 @@ const cleanExpenses = [ cloud_account_id: "8c63e980-6572-4b36-be82-a2bc59705888", cloud_account_name: "AWS HQ", resource_name: "sunflower-us-east-2", - cost: 22.5719317827 + cost: 22.5719317827, }, { resource_id: "3dd84f76-b16b-48e1-a22b-a6078a1c4ba4", @@ -41,12 +41,12 @@ const cleanExpenses = [ pool: { purpose: "business_unit", id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Engineering" + name: "Engineering", }, region: "DE Zone 1", owner: { id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Marie Briggs" + name: "Marie Briggs", }, cloud_account_type: "azure_cnr", service_name: "Microsoft.Compute", @@ -55,7 +55,7 @@ const cleanExpenses = [ cloud_account_id: "11fddd0e-3ece-410c-8e68-003abcc44576", cloud_account_name: "Azure trial", resource_name: "spottest", - cost: 14.5 + cost: 14.5, }, { resource_id: "258804b8-e684-42b9-a148-21795e749168", @@ -65,12 +65,12 @@ const cleanExpenses = [ pool: { purpose: "team", id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "QA" + name: "QA", }, region: "eu-central-1", owner: { id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Katy Ali" + name: "Katy Ali", }, cloud_account_type: "aws_cnr", service_name: "AmazonEC2", @@ -78,7 +78,7 @@ const cleanExpenses = [ cloud_account_id: "8c63e980-6572-4b36-be82-a2bc59705888", cloud_account_name: "AWS HQ", resource_name: "sunflower-us-east-1", - cost: 28.7082291744 + cost: 28.7082291744, }, { resource_id: "c955ea30-349e-4fd1-8764-c766e676fd7a", @@ -88,12 +88,12 @@ const cleanExpenses = [ pool: { purpose: "business_unit", id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, region: "eu-central-1", owner: { id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Sally Wong" + name: "Sally Wong", }, cloud_account_type: "aws_cnr", service_name: "AmazonEC2", @@ -101,7 +101,7 @@ const cleanExpenses = [ cloud_account_id: "8c63e980-6572-4b36-be82-a2bc59705888", cloud_account_name: "AWS HQ", resource_name: "mail-server", - cost: 24.639862891499998 + cost: 24.639862891499998, }, { resource_id: "eb9c3b77-d5e6-48f8-b1f5-0a9c7a92e44a", @@ -111,12 +111,12 @@ const cleanExpenses = [ pool: { purpose: "team", id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" + name: "Dev", }, region: "eu-central-1", owner: { id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Ella Price" + name: "Ella Price", }, cloud_account_type: "aws_cnr", service_name: "AmazonEC2", @@ -124,8 +124,8 @@ const cleanExpenses = [ cloud_account_id: "8c63e980-6572-4b36-be82-a2bc59705888", cloud_account_name: "AWS HQ", resource_name: "jenkins-worker-1", - cost: 24.6400322778 - } + cost: 24.6400322778, + }, ].sort(({ cost: a }, { cost: b }) => b - a); const getOrganizationExpenses = () => { @@ -136,16 +136,16 @@ const getOrganizationExpenses = () => { expenses: { this_month: { total: 118080.90259006835, - date: todayUnix + date: todayUnix, }, this_month_forecast: { total: 141080.9, - date: todayUnix + date: todayUnix, }, last_month: { total: 169000.02920730546, - date: lastMonthRangeEndUnix - } + date: lastMonthRangeEndUnix, + }, }, total: 160000, pools: [ @@ -155,9 +155,9 @@ const getOrganizationExpenses = () => { purpose: "business_unit", pool: 160000, this_month_expenses: 95546.0502165, - id: MOCKED_ORGANIZATION_POOL_ID - } - ] + id: MOCKED_ORGANIZATION_POOL_ID, + }, + ], }; }; @@ -170,26 +170,26 @@ const constraints = [ organization_id: "1f12f2c0-4103-4d84-a20e-5ddbd9425e48 ", type: "resource_quota", definition: { - max_value: 3 + max_value: 3, }, filters: { region: [ { name: "us-east-1", - cloud_type: "aws_cnr" - } + cloud_type: "aws_cnr", + }, ], resource_type: [ { name: "Bucket", - type: "regular" - } - ] + type: "regular", + }, + ], }, last_run: 1705495803, last_run_result: { limit: 3, - current: 9 + current: 9, }, limit_hits: [ { @@ -202,8 +202,8 @@ const constraints = [ created_at: 1705278617, run_result: { limit: 3, - current: 9 - } + current: 9, + }, }, { deleted_at: 0, @@ -215,8 +215,8 @@ const constraints = [ created_at: 1705368316, run_result: { limit: 3, - current: 9 - } + current: 9, + }, }, { deleted_at: 0, @@ -228,10 +228,10 @@ const constraints = [ created_at: 1705450816, run_result: { limit: 3, - current: 9 - } - } - ] + current: 9, + }, + }, + ], }, { deleted_at: 0, @@ -241,22 +241,22 @@ const constraints = [ organization_id: "e318d2e2-b7db-4d68-aa01-f00d31890dcc", type: "recurring_budget", definition: { - monthly_budget: 100 + monthly_budget: 100, }, filters: { service_name: [ { name: "AmazonS3", - cloud_type: "aws_cnr" - } - ] + cloud_type: "aws_cnr", + }, + ], }, last_run: 1705478713, last_run_result: { limit: 100, - current: 161.28690293860004 + current: 161.28690293860004, }, - limit_hits: [] + limit_hits: [], }, { deleted_at: 0, @@ -269,8 +269,8 @@ const constraints = [ start_date: 1672531200, conditions: { tag: "aqa_uuid", - without_tag: "aqa" - } + without_tag: "aqa", + }, }, filters: { active: [true], @@ -278,13 +278,13 @@ const constraints = [ { id: "de0c6b2e-d442-4ded-8295-18d720c38ac4", name: "Azure QA", - type: "azure_cnr" - } - ] + type: "azure_cnr", + }, + ], }, last_run: 1705498214, last_run_result: { - value: 15 + value: 15, }, limit_hits: [ { @@ -296,8 +296,8 @@ const constraints = [ value: 15, created_at: 1705277406, run_result: { - value: 15 - } + value: 15, + }, }, { deleted_at: 0, @@ -308,8 +308,8 @@ const constraints = [ value: 15, created_at: 1705364411, run_result: { - value: 15 - } + value: 15, + }, }, { deleted_at: 0, @@ -320,10 +320,10 @@ const constraints = [ value: 15, created_at: 1705450816, run_result: { - value: 15 - } - } - ] + value: 15, + }, + }, + ], }, { deleted_at: 0, @@ -334,15 +334,15 @@ const constraints = [ type: "resource_count_anomaly", definition: { threshold_days: 7, - threshold: 20 + threshold: 20, }, filters: { resource_type: [ { name: "Instance", - type: "regular" - } - ] + type: "regular", + }, + ], }, last_run: 1705487411, last_run_result: { @@ -355,10 +355,10 @@ const constraints = [ "1705104000": 60, "1705190400": 59, "1705276800": 60, - "1705363200": 58 - } + "1705363200": 58, + }, }, - limit_hits: [] + limit_hits: [], }, { deleted_at: 0, @@ -369,16 +369,16 @@ const constraints = [ type: "expense_anomaly", definition: { threshold_days: 30, - threshold: 10 + threshold: 10, }, filters: { pool: [ { id: "c1bfe08c-b8cb-448b-a3c5-d81800f05e41+", name: "Marketing", - purpose: "business_unit" - } - ] + purpose: "business_unit", + }, + ], }, last_run: 1705478713, last_run_result: { @@ -414,10 +414,10 @@ const constraints = [ "1705104000": 0.7612058675000002, "1705190400": 0.7611413376, "1705276800": 0.7611680756000001, - "1705363200": 0.37186812160000005 - } + "1705363200": 0.37186812160000005, + }, }, - limit_hits: [] + limit_hits: [], }, { deleted_at: 0, @@ -428,15 +428,15 @@ const constraints = [ type: "resource_count_anomaly", definition: { threshold_days: 7, - threshold: 20 + threshold: 20, }, filters: { resource_type: [ { name: "Instance", - type: "regular" - } - ] + type: "regular", + }, + ], }, last_run: 1705487411, last_run_result: { @@ -449,11 +449,11 @@ const constraints = [ "1705104000": 45, "1705190400": 79, "1705276800": 20, - "1705363200": 80 - } + "1705363200": 80, + }, }, - limit_hits: [] - } + limit_hits: [], + }, ]; const tasks = [ @@ -469,7 +469,7 @@ const tasks = [ target_value: 3, name: "Iter", value: 57600, - reached: true + reached: true, }, loss: { id: "89b56825-6f37-41bb-9cea-6b5e88d0e416", @@ -477,7 +477,7 @@ const tasks = [ target_value: 1.1, name: "Data Loss", value: 0.7866795659065247, - reached: true + reached: true, }, epoch: { id: "ba8b5cbb-2e77-4326-91ea-756db9b43270", @@ -485,9 +485,9 @@ const tasks = [ target_value: 9, name: "Epochs", value: 10, - reached: false - } - } + reached: false, + }, + }, }, { name: "House Prices", @@ -501,7 +501,7 @@ const tasks = [ target_value: 60, name: "Accuracy", value: 70.67, - reached: true + reached: true, }, loss: { id: "89b56825-6f37-41bb-9cea-6b5e88d0e416", @@ -509,7 +509,7 @@ const tasks = [ target_value: 1.1, name: "Data Loss", value: 0.7786335945129395, - reached: true + reached: true, }, iter: { id: "4254aa87-0095-45bc-84e7-139a560d5729", @@ -517,9 +517,9 @@ const tasks = [ target_value: 3, name: "Iter", value: 57600, - reached: true - } - } + reached: true, + }, + }, }, { name: "Flower Classification", @@ -533,7 +533,7 @@ const tasks = [ target_value: 3, name: "Iter", value: 57600, - reached: true + reached: true, }, loss: { id: "89b56825-6f37-41bb-9cea-6b5e88d0e416", @@ -541,7 +541,7 @@ const tasks = [ target_value: 1.1, name: "Data Loss", value: 0.7814914584159851, - reached: true + reached: true, }, accuracy: { id: "95fded0b-dfdf-4a10-a154-7b2f390739f0", @@ -549,7 +549,7 @@ const tasks = [ target_value: 60, name: "Accuracy", value: 70.74000000000001, - reached: true + reached: true, }, epoch: { id: "ba8b5cbb-2e77-4326-91ea-756db9b43270", @@ -557,10 +557,10 @@ const tasks = [ target_value: 9, name: "Epochs", value: 10, - reached: false - } - } - } + reached: false, + }, + }, + }, ]; const models = [ @@ -569,7 +569,7 @@ const models = [ description: "Model for House Prices task", tags: { environment: "staging", - task: "House Prices" + task: "House Prices", }, key: "houses_prices_model", created_at: 1711707203, @@ -579,79 +579,79 @@ const models = [ aliases: ["latest"], version: "7", tags: { - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "511d178d-3c00-4d07-b764-d8ca2eb5e5c9", model_id: "86f6684f-cd42-4e79-aaa6-30e48005740b", created_at: 1711976089, alias: "latest", - id: "49cefad5-09b3-41f9-9767-83111bf4d248" + id: "49cefad5-09b3-41f9-9767-83111bf4d248", }, { path: "https://s3.amazonaws.com/ml-bucket/houses_model_6.pkl", aliases: ["staging"], version: "6", tags: { - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "fec45ced-ed0c-487c-97a2-a926e6fd4467", model_id: "86f6684f-cd42-4e79-aaa6-30e48005740b", created_at: 1711953447, alias: "staging", - id: "6564da92-e28e-411b-83af-881af824750c" + id: "6564da92-e28e-411b-83af-881af824750c", }, { path: "https://s3.amazonaws.com/ml-bucket/houses_model_4.pkl", aliases: ["prod", "champion"], version: "4", tags: { - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "73e84364-5a59-4c19-add0-d1592e46baea", model_id: "86f6684f-cd42-4e79-aaa6-30e48005740b", created_at: 1711952367, alias: "prod", - id: "63075ce9-9d8f-4e62-b534-400f1fd0aa2b" + id: "63075ce9-9d8f-4e62-b534-400f1fd0aa2b", }, { path: "https://s3.amazonaws.com/ml-bucket/houses_model_4.pkl", aliases: ["prod", "champion"], version: "4", tags: { - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "73e84364-5a59-4c19-add0-d1592e46baea", model_id: "86f6684f-cd42-4e79-aaa6-30e48005740b", created_at: 1711952367, alias: "champion", - id: "63075ce9-9d8f-4e62-b534-400f1fd0aa2b" - } + id: "63075ce9-9d8f-4e62-b534-400f1fd0aa2b", + }, ], last_version: { path: "https://s3.amazonaws.com/ml-bucket/houses_model_7.csv", aliases: ["latest"], version: "7", tags: { - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "511d178d-3c00-4d07-b764-d8ca2eb5e5c9", model_id: "86f6684f-cd42-4e79-aaa6-30e48005740b", created_at: 1711976089, - id: "49cefad5-09b3-41f9-9767-83111bf4d248" + id: "49cefad5-09b3-41f9-9767-83111bf4d248", }, - id: "86f6684f-cd42-4e79-aaa6-30e48005740b" + id: "86f6684f-cd42-4e79-aaa6-30e48005740b", }, { name: "Iris model prod", description: "Model for Flowers Classification task on prod", tags: { environment: "production", - task: "Flowers Classification" + task: "Flowers Classification", }, key: "iris_model_prod", created_at: 1711707084, @@ -661,37 +661,37 @@ const models = [ aliases: ["champion"], version: "Version 1", tags: { - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "e8ab8ed1-94a9-4f5e-b07d-603ed3598a37", model_id: "db626a7e-164f-4226-8e2e-9a1951fbcd7b", created_at: 1711707697, alias: "champion", - id: "ec6bd4f5-f7ef-4982-bf79-e38415f30f24" - } + id: "ec6bd4f5-f7ef-4982-bf79-e38415f30f24", + }, ], last_version: { path: "https://s3.amazonaws.com/ml-bucket/iris_model_prod_1.bin", aliases: ["champion"], version: "Version 1", tags: { - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "e8ab8ed1-94a9-4f5e-b07d-603ed3598a37", model_id: "db626a7e-164f-4226-8e2e-9a1951fbcd7b", created_at: 1711707697, - id: "ec6bd4f5-f7ef-4982-bf79-e38415f30f24" + id: "ec6bd4f5-f7ef-4982-bf79-e38415f30f24", }, - id: "db626a7e-164f-4226-8e2e-9a1951fbcd7b" + id: "db626a7e-164f-4226-8e2e-9a1951fbcd7b", }, { name: "Iris model testing", description: "Model for Flowers Classification task", tags: { task: "Flower Classification", - environment: "staging" + environment: "staging", }, key: "iris_model_testing", created_at: 1711698668, @@ -702,14 +702,14 @@ const models = [ version: "Version 2", tags: { task: "Flowers Classification", - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "96922c7b-bc80-400a-a846-4ddc8c32b8e0", model_id: "c8596b92-5ce1-4647-8e9d-7c0048aff8b6", created_at: 1717408535, alias: "champion", - id: "f417eda9-0894-45b5-ac81-21f5da5d9579" + id: "f417eda9-0894-45b5-ac81-21f5da5d9579", }, { path: "https://s3.amazonaws.com/ml-bucket/iris_model_1.pkl", @@ -717,31 +717,31 @@ const models = [ version: "Version 1", tags: { task: "Flower Classification", - validation_status: "-" + validation_status: "-", }, deleted_at: 0, run_id: "4e2c4970-9c44-4823-9d1e-dda297df207d", model_id: "c8596b92-5ce1-4647-8e9d-7c0048aff8b6", created_at: 1717408063, alias: "challenger", - id: "f49947b8-8d9b-4a95-9d7b-abee390264c7" - } + id: "f49947b8-8d9b-4a95-9d7b-abee390264c7", + }, ], last_version: { path: "https://s3.amazonaws.com/ml-bucket/iris_model_5.pkl", aliases: [], version: "Version 5", tags: { - validation_status: "+" + validation_status: "+", }, deleted_at: 0, run_id: "e352dd33-7742-4019-b0df-0d26a82e8261", model_id: "c8596b92-5ce1-4647-8e9d-7c0048aff8b6", created_at: 1717410085, - id: "6f4c4c0a-188a-40c7-9066-02191614a3bb" + id: "6f4c4c0a-188a-40c7-9066-02191614a3bb", }, - id: "c8596b92-5ce1-4647-8e9d-7c0048aff8b6" - } + id: "c8596b92-5ce1-4647-8e9d-7c0048aff8b6", + }, ]; const DashboardMocked = () => ( diff --git a/ngui/ui/src/components/DashboardGridLayout/DashboardGridLayout.tsx b/ngui/ui/src/components/DashboardGridLayout/DashboardGridLayout.tsx index e4496f3a6..85c52a091 100644 --- a/ngui/ui/src/components/DashboardGridLayout/DashboardGridLayout.tsx +++ b/ngui/ui/src/components/DashboardGridLayout/DashboardGridLayout.tsx @@ -21,36 +21,36 @@ const DashboardGridLayout = ({ recommendationsCard, poolsRequiringAttentionCard, recentTasksCard, - recentModelsCard + recentModelsCard, }: DashboardGridLayoutProps) => { const squareNodes = [ { key: "recentModelsCard", node: recentModelsCard, - capability: OPTSCALE_CAPABILITY.MLOPS + capability: OPTSCALE_CAPABILITY.MLOPS, }, { key: "recentTasksCard", node: recentTasksCard, - capability: OPTSCALE_CAPABILITY.MLOPS + capability: OPTSCALE_CAPABILITY.MLOPS, }, { key: "organizationExpenses", node: organizationExpenses }, { key: "topResourcesExpensesCard", node: topResourcesExpensesCard, - capability: OPTSCALE_CAPABILITY.FINOPS + capability: OPTSCALE_CAPABILITY.FINOPS, }, { key: "recommendationsCard", node: recommendationsCard }, { key: "policiesCard", node: policiesCard, - capability: OPTSCALE_CAPABILITY.FINOPS + capability: OPTSCALE_CAPABILITY.FINOPS, }, { key: "poolsRequiringAttentionCard", node: poolsRequiringAttentionCard, - capability: OPTSCALE_CAPABILITY.FINOPS - } + capability: OPTSCALE_CAPABILITY.FINOPS, + }, ].filter(({ node }) => Boolean(node)); return ( diff --git a/ngui/ui/src/components/DashedTypography/DashedTypography.styles.ts b/ngui/ui/src/components/DashedTypography/DashedTypography.styles.ts index 6e4e39840..cacc09405 100644 --- a/ngui/ui/src/components/DashedTypography/DashedTypography.styles.ts +++ b/ngui/ui/src/components/DashedTypography/DashedTypography.styles.ts @@ -11,17 +11,17 @@ const useStyles = makeStyles()(() => ({ bottom: -1, left: 0, width: "100%", - borderBottom: "1px dashed" - } + borderBottom: "1px dashed", + }, }, cursorPointer: { "&:hover": { - cursor: "pointer" - } + cursor: "pointer", + }, }, right: { - marginRight: "0.2rem" - } + marginRight: "0.2rem", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AlibabaCredentials/AlibabaCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AlibabaCredentials/AlibabaCredentials.tsx index e2dcfd595..2f87e6011 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AlibabaCredentials/AlibabaCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AlibabaCredentials/AlibabaCredentials.tsx @@ -4,7 +4,7 @@ import QuestionMark from "components/QuestionMark"; export const FIELD_NAMES = Object.freeze({ ACCESS_KEY_ID: "alibabaAccessKeyId", - SECRET_ACCESS_KEY: "alibabaSecretAccessKey" + SECRET_ACCESS_KEY: "alibabaSecretAccessKey", }); const AlibabaCredentials = () => ( @@ -18,11 +18,11 @@ const AlibabaCredentials = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_access_key" /> - ) + ), }} label={} autoComplete="off" @@ -37,11 +37,11 @@ const AlibabaCredentials = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_secret_key" /> - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsAssumedRoleCredentials/AwsAssumedRoleCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AwsAssumedRoleCredentials/AwsAssumedRoleCredentials.tsx index 70faa165d..776f6310e 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsAssumedRoleCredentials/AwsAssumedRoleCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsAssumedRoleCredentials/AwsAssumedRoleCredentials.tsx @@ -4,7 +4,7 @@ import QuestionMark from "components/QuestionMark"; export const FIELD_NAMES = Object.freeze({ ASSUME_ROLE_ACCOUNT_ID: "awsRoleAccountId", - ASSUME_ROLE_NAME: "awsRoleName" + ASSUME_ROLE_NAME: "awsRoleName", }); const AwsAssumedRoleCredentials = ({ readOnlyFields = [] }: { readOnlyFields: string[] }) => { @@ -18,7 +18,7 @@ const AwsAssumedRoleCredentials = ({ readOnlyFields = [] }: { readOnlyFields: st dataTestId="input_assume_role_account_id" InputProps={{ readOnly: isReadOnly(FIELD_NAMES.ASSUME_ROLE_ACCOUNT_ID), - endAdornment: + endAdornment: , }} label={} autoComplete="off" @@ -28,7 +28,7 @@ const AwsAssumedRoleCredentials = ({ readOnlyFields = [] }: { readOnlyFields: st required dataTestId="input_assume_role_name" InputProps={{ - endAdornment: + endAdornment: , }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsAssumedRoleInputs/AwsAssumedRoleInputs.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AwsAssumedRoleInputs/AwsAssumedRoleInputs.tsx index 4a735177c..1f90baf4f 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsAssumedRoleInputs/AwsAssumedRoleInputs.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsAssumedRoleInputs/AwsAssumedRoleInputs.tsx @@ -8,7 +8,7 @@ import AwsUseAwsEdpDiscount from "../AwsUseAwsEdpDiscount"; const AwsAssumedRoleInputs = ({ readOnlyFields = [], showAssumedRoleCredentialsInModal = false, - showAdvancedOptions = true + showAdvancedOptions = true, }: { readOnlyFields?: string[]; showAssumedRoleCredentialsInModal?: boolean; diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucket/AwsBillingBucket.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucket/AwsBillingBucket.tsx index ab32230a9..fe692f53f 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucket/AwsBillingBucket.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucket/AwsBillingBucket.tsx @@ -11,7 +11,7 @@ export const FIELD_NAMES = Object.freeze({ BUCKET_NAME: "bucketName", EXPORT_NAME: "exportName", BUCKET_PREFIX: "bucketPrefix", - REGION_NAME: "regionName" + REGION_NAME: "regionName", }); const DEFAULT_PATH_PREFIX = "reports"; @@ -21,7 +21,7 @@ const AwsBillingBucket = ({ showRoleButton }: AwsBillingBucketProps) => { const { register, - formState: { errors } + formState: { errors }, } = useFormContext(); return ( @@ -36,15 +36,15 @@ const AwsBillingBucket = ({ showRoleButton }: AwsBillingBucketProps) => { {...register(FIELD_NAMES.EXPORT_NAME, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, maxLength: { value: DEFAULT_MAX_INPUT_LENGTH, message: intl.formatMessage( { id: "maxLength" }, { inputName: intl.formatMessage({ id: "exportName" }), max: DEFAULT_MAX_INPUT_LENGTH } - ) - } + ), + }, })} /> @@ -56,21 +56,21 @@ const AwsBillingBucket = ({ showRoleButton }: AwsBillingBucketProps) => { error={!!errors[FIELD_NAMES.BUCKET_NAME]} helperText={errors[FIELD_NAMES.BUCKET_NAME] && errors[FIELD_NAMES.BUCKET_NAME].message} InputProps={{ - endAdornment: + endAdornment: , }} label={} {...register(FIELD_NAMES.BUCKET_NAME, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, maxLength: { value: DEFAULT_MAX_INPUT_LENGTH, message: intl.formatMessage( { id: "maxLength" }, { inputName: intl.formatMessage({ id: "exportS3BucketName" }), max: DEFAULT_MAX_INPUT_LENGTH } - ) - } + ), + }, })} />
    @@ -96,21 +96,21 @@ const AwsBillingBucket = ({ showRoleButton }: AwsBillingBucketProps) => { error={!!errors[FIELD_NAMES.BUCKET_PREFIX]} helperText={errors[FIELD_NAMES.BUCKET_PREFIX] && errors[FIELD_NAMES.BUCKET_PREFIX].message} InputProps={{ - endAdornment: + endAdornment: , }} label={} {...register(FIELD_NAMES.BUCKET_PREFIX, { required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, maxLength: { value: DEFAULT_MAX_INPUT_LENGTH, message: intl.formatMessage( { id: "maxLength" }, { inputName: intl.formatMessage({ id: "exportPathPrefix" }), max: DEFAULT_MAX_INPUT_LENGTH } - ) - } + ), + }, })} /> { error={!!errors[FIELD_NAMES.REGION_NAME]} helperText={errors[FIELD_NAMES.REGION_NAME] && errors[FIELD_NAMES.REGION_NAME].message} InputProps={{ - endAdornment: + endAdornment: , }} label={} {...register(FIELD_NAMES.REGION_NAME, { @@ -128,8 +128,8 @@ const AwsBillingBucket = ({ showRoleButton }: AwsBillingBucketProps) => { message: intl.formatMessage( { id: "maxLength" }, { inputName: intl.formatMessage({ id: "exportRegionName" }), max: DEFAULT_MAX_INPUT_LENGTH } - ) - } + ), + }, })} /> diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucketInputs/AwsBillingBucketInputs.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucketInputs/AwsBillingBucketInputs.tsx index 81d935b2c..927252750 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucketInputs/AwsBillingBucketInputs.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucketInputs/AwsBillingBucketInputs.tsx @@ -26,13 +26,13 @@ const AwsBillingBucketInputs = ({ showAssumedRoleCredentialsInModal = false }) = try { const { data } = await fetchPolicies({ organizationId, - params: { bucket_name: bucketName, cloud_type: AWS_CNR } + params: { bucket_name: bucketName, cloud_type: AWS_CNR }, }); if (showAssumedRoleCredentialsInModal) { openSideModal(AwsAssumedRoleCredentialsModal, { name: bucketName, - text: JSON.stringify(data?.cloudPolicies, null, 2) + text: JSON.stringify(data?.cloudPolicies, null, 2), }); } } catch (error) { @@ -55,7 +55,7 @@ const AwsBillingBucketInputs = ({ showAssumedRoleCredentialsInModal = false }) = justifyContent: "center", alignItems: "center", height: CODE_BLOCK_HEIGHT, - backgroundColor: (theme) => theme.palette.background.default + backgroundColor: (theme) => theme.palette.background.default, }} > diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucketInputs/hooks/useCloudPolicies.ts b/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucketInputs/hooks/useCloudPolicies.ts index 2f082253c..1b2afe3d9 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucketInputs/hooks/useCloudPolicies.ts +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsBillingBucketInputs/hooks/useCloudPolicies.ts @@ -5,7 +5,7 @@ const useCloudPolicies = () => { const [lastRequestedBucket, setLastRequestedBucket] = useState(); const [getPolicies, { data, loading }] = useCloudPoliciesLazyQuery({ - fetchPolicy: "no-cache" + fetchPolicy: "no-cache", }); const fetchPolicies = (variables: { organizationId: string; params: { bucket_name: string; cloud_type: string } }) => { @@ -23,7 +23,7 @@ const useCloudPolicies = () => { cloudPolicies: data?.cloudPolicies, isLoading: loading, lastRequestedBucket, - fetchPolicies + fetchPolicies, }; }; diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsExportType/AwsExportType.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AwsExportType/AwsExportType.tsx index 2c38fa1b9..dc7173c81 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsExportType/AwsExportType.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsExportType/AwsExportType.tsx @@ -3,7 +3,7 @@ import { RadioGroup } from "components/forms/common/fields"; import { AWS_ROOT_CONNECT_CUR_VERSION, AWS_ROOT_CONNECT_CUR_VERSION_MESSAGE_ID } from "utils/constants"; export const FIELD_NAMES = Object.freeze({ - CUR_VERSION: "curVersion" + CUR_VERSION: "curVersion", }); const AwsExportType = () => ( @@ -14,12 +14,12 @@ const AwsExportType = () => ( radioButtons={[ { value: String(AWS_ROOT_CONNECT_CUR_VERSION.CUR_2), - label: + label: , }, { value: String(AWS_ROOT_CONNECT_CUR_VERSION.CUR_1), - label: - } + label: , + }, ]} /> ); diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsLinkedCredentials/AwsLinkedCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AwsLinkedCredentials/AwsLinkedCredentials.tsx index eab8d2b22..05ffe9d9b 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsLinkedCredentials/AwsLinkedCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsLinkedCredentials/AwsLinkedCredentials.tsx @@ -4,7 +4,7 @@ import QuestionMark from "components/QuestionMark"; export const FIELD_NAMES = Object.freeze({ ACCESS_KEY_ID: "awsAccessKeyId", - SECRET_ACCESS_KEY: "awsSecretAccessKey" + SECRET_ACCESS_KEY: "awsSecretAccessKey", }); const AwsLinkedCredentials = () => ( @@ -18,11 +18,11 @@ const AwsLinkedCredentials = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_access_key" /> - ) + ), }} label={} autoComplete="off" @@ -37,11 +37,11 @@ const AwsLinkedCredentials = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_secret_key" /> - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsRootCredentials/AwsRootCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AwsRootCredentials/AwsRootCredentials.tsx index 3343f803e..cd01b1cbb 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsRootCredentials/AwsRootCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsRootCredentials/AwsRootCredentials.tsx @@ -4,7 +4,7 @@ import QuestionMark from "components/QuestionMark"; export const FIELD_NAMES = Object.freeze({ ACCESS_KEY_ID: "awsAccessKeyId", - SECRET_ACCESS_KEY: "awsSecretAccessKey" + SECRET_ACCESS_KEY: "awsSecretAccessKey", }); const AwsRootCredentials = () => ( @@ -18,11 +18,11 @@ const AwsRootCredentials = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_access_key" /> - ) + ), }} label={} autoComplete="off" @@ -37,11 +37,11 @@ const AwsRootCredentials = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_secret_key" /> - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AwsUseAwsEdpDiscount/AwsUseAwsEdpDiscount.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AwsUseAwsEdpDiscount/AwsUseAwsEdpDiscount.tsx index c46efccc6..d1856d8ed 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AwsUseAwsEdpDiscount/AwsUseAwsEdpDiscount.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AwsUseAwsEdpDiscount/AwsUseAwsEdpDiscount.tsx @@ -3,7 +3,7 @@ import { Checkbox } from "components/forms/common/fields"; import QuestionMark from "components/QuestionMark"; export const FIELD_NAMES = Object.freeze({ - USE_EDP_DISCOUNT: "useEdpDiscount" + USE_EDP_DISCOUNT: "useEdpDiscount", }); const AwsUseAwsEdpDiscount = () => ( diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AzureSubscriptionCredentials/AzureSubscriptionCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AzureSubscriptionCredentials/AzureSubscriptionCredentials.tsx index 3764e7b59..c740b9bad 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AzureSubscriptionCredentials/AzureSubscriptionCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AzureSubscriptionCredentials/AzureSubscriptionCredentials.tsx @@ -12,7 +12,7 @@ export const FIELD_NAMES = Object.freeze({ EXPORT_NAME: "exportName", STORAGE_ACCOUNT_CONNECTION_STRING: "storageAccountConnectionString", STORAGE_CONTAINER: "storageContainer", - STORAGE_DIRECTORY: "storageDirectory" + STORAGE_DIRECTORY: "storageDirectory", }); const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] }) => { @@ -35,11 +35,11 @@ const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] } {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_tenant_id" /> - ) + ), }} label={} autoComplete="off" @@ -50,7 +50,7 @@ const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] } required dataTestId="input_subscription_id" InputProps={{ - endAdornment: + endAdornment: , }} label={} autoComplete="off" @@ -65,11 +65,11 @@ const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] } {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_client_id" /> - ) + ), }} label={} autoComplete="off" @@ -83,11 +83,11 @@ const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] } {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_secret" /> - ) + ), }} dataTestId="input_azure_secret" label={} @@ -109,11 +109,11 @@ const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] } {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_export_name" /> - ) + ), }} dataTestId="input_azure_export_name" label={} @@ -127,11 +127,11 @@ const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] } {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_storage_account_connection_string" /> - ) + ), }} masked dataTestId="input_azure_storage_account_connection_string" @@ -146,11 +146,11 @@ const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] } {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_storage_container" /> - ) + ), }} dataTestId="input_azure_container" label={} @@ -164,11 +164,11 @@ const AzureSubscriptionCredentials = ({ hiddenFields = [], readOnlyFields = [] } {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_storage_directory" /> - ) + ), }} dataTestId="input_azure_directory" label={} diff --git a/ngui/ui/src/components/DataSourceCredentialFields/AzureTenantCredentials/AzureTenantCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/AzureTenantCredentials/AzureTenantCredentials.tsx index 5f857bf6a..f5f687e12 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/AzureTenantCredentials/AzureTenantCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/AzureTenantCredentials/AzureTenantCredentials.tsx @@ -5,7 +5,7 @@ import QuestionMark from "components/QuestionMark"; export const FIELD_NAMES = Object.freeze({ CLIENT_ID: "clientId", TENANT: "tenant", - SECRET: "secret" + SECRET: "secret", }); const AzureTenantCredentials = ({ readOnlyFields = [] }) => { @@ -23,11 +23,11 @@ const AzureTenantCredentials = ({ readOnlyFields = [] }) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_tenant_id" /> - ) + ), }} label={} autoComplete="off" @@ -41,11 +41,11 @@ const AzureTenantCredentials = ({ readOnlyFields = [] }) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_client_id" /> - ) + ), }} label={} autoComplete="off" @@ -60,11 +60,11 @@ const AzureTenantCredentials = ({ readOnlyFields = [] }) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_secret" /> - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/DatabricksCredentials/DatabricksCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/DatabricksCredentials/DatabricksCredentials.tsx index 326682701..4a60c6c17 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/DatabricksCredentials/DatabricksCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/DatabricksCredentials/DatabricksCredentials.tsx @@ -5,7 +5,7 @@ import QuestionMark from "components/QuestionMark"; export const FIELD_NAMES = Object.freeze({ ACCOUNT_ID: "accountId", CLIENT_ID: "clientId", - CLIENT_SECRET: "clientSecret" + CLIENT_SECRET: "clientSecret", }); const DatabricksCredentials = ({ readOnlyFields = [] }) => { @@ -22,11 +22,11 @@ const DatabricksCredentials = ({ readOnlyFields = [] }) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_tenant_id" /> - ) + ), }} label={} dataTestId="input_databricks_account_id" @@ -39,11 +39,11 @@ const DatabricksCredentials = ({ readOnlyFields = [] }) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_access_key" /> - ) + ), }} label={} dataTestId="input_databricks_client_id" @@ -57,11 +57,11 @@ const DatabricksCredentials = ({ readOnlyFields = [] }) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_access_key" /> - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/GcpCredentials/GcpCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/GcpCredentials/GcpCredentials.tsx index a94bcea5b..ca5f48d13 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/GcpCredentials/GcpCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/GcpCredentials/GcpCredentials.tsx @@ -14,7 +14,7 @@ export const FIELD_NAMES = Object.freeze({ AUTOMATICALLY_DETECT_PRICING_DATA: "automaticallyDetectPricingData", PRICING_DATA_DATASET: "pricingDataDatasetName", PRICING_DATA_TABLE: "pricingDataTableName", - PRICING_DATA_PROJECT_ID: "pricingDataProjectId" + PRICING_DATA_PROJECT_ID: "pricingDataProjectId", }); type FieldName = ObjectValues; @@ -29,7 +29,7 @@ const GcpCredentials = ({ hidden = [] }: GcpCredentialsProps) => { const anyPricingDataFieldVisible = [ FIELD_NAMES.PRICING_DATA_DATASET, FIELD_NAMES.PRICING_DATA_TABLE, - FIELD_NAMES.PRICING_DATA_PROJECT_ID + FIELD_NAMES.PRICING_DATA_PROJECT_ID, ].some((fieldName) => !isHidden(fieldName)); const { watch } = useFormContext(); @@ -51,11 +51,11 @@ const GcpCredentials = ({ hidden = [] }: GcpCredentialsProps) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_billing_data_dataset_name" /> - ) + ), }} label={} autoComplete="off" @@ -67,7 +67,7 @@ const GcpCredentials = ({ hidden = [] }: GcpCredentialsProps) => { dataTestId="input_billing_data_table_name" name={FIELD_NAMES.BILLING_DATA_TABLE} InputProps={{ - endAdornment: + endAdornment: , }} label={} autoComplete="off" @@ -78,7 +78,7 @@ const GcpCredentials = ({ hidden = [] }: GcpCredentialsProps) => { name={FIELD_NAMES.BILLING_DATA_PROJECT_ID} dataTestId="input_billing_data_project_id" InputProps={{ - endAdornment: + endAdornment: , }} label={} autoComplete="off" @@ -94,7 +94,7 @@ const GcpCredentials = ({ hidden = [] }: GcpCredentialsProps) => { + break:
    , }} dataTestId="qmark_automatically_detect_pricing_data" /> @@ -111,7 +111,7 @@ const GcpCredentials = ({ hidden = [] }: GcpCredentialsProps) => { InputProps={{ endAdornment: ( - ) + ), }} label={} autoComplete="off" @@ -125,7 +125,7 @@ const GcpCredentials = ({ hidden = [] }: GcpCredentialsProps) => { InputProps={{ endAdornment: ( - ) + ), }} label={} autoComplete="off" @@ -138,7 +138,7 @@ const GcpCredentials = ({ hidden = [] }: GcpCredentialsProps) => { InputProps={{ endAdornment: ( - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/GcpTenantCredentials/GcpTenantCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/GcpTenantCredentials/GcpTenantCredentials.tsx index 5986e158c..3aeab0c2b 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/GcpTenantCredentials/GcpTenantCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/GcpTenantCredentials/GcpTenantCredentials.tsx @@ -12,7 +12,7 @@ export const FIELD_NAMES = Object.freeze({ BILLING_DATA_TABLE: "billingDataTableName", AUTOMATICALLY_DETECT_PRICING_DATA: "automaticallyDetectPricingData", PRICING_DATA_DATASET: "pricingDataDatasetName", - PRICING_DATA_TABLE: "pricingDataTableName" + PRICING_DATA_TABLE: "pricingDataTableName", }); type FieldName = ObjectValues; @@ -47,11 +47,11 @@ const GcpTenantCredentials = ({ hidden = [] }: GcpTenantCredentialsProps) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_billing_data_dataset_name" /> - ) + ), }} label={} autoComplete="off" @@ -63,7 +63,7 @@ const GcpTenantCredentials = ({ hidden = [] }: GcpTenantCredentialsProps) => { dataTestId="input_billing_data_table_name" name={FIELD_NAMES.BILLING_DATA_TABLE} InputProps={{ - endAdornment: + endAdornment: , }} label={} autoComplete="off" @@ -95,11 +95,11 @@ const GcpTenantCredentials = ({ hidden = [] }: GcpTenantCredentialsProps) => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_pricing_data_dataset_name" /> - ) + ), }} label={} autoComplete="off" @@ -113,7 +113,7 @@ const GcpTenantCredentials = ({ hidden = [] }: GcpTenantCredentialsProps) => { InputProps={{ endAdornment: ( - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/KubernetesCredentials/KubernetesCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/KubernetesCredentials/KubernetesCredentials.tsx index 1efe2c37c..e9a81f4b1 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/KubernetesCredentials/KubernetesCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/KubernetesCredentials/KubernetesCredentials.tsx @@ -5,7 +5,7 @@ import QuestionMark from "components/QuestionMark"; export const FIELD_NAMES = Object.freeze({ PASSWORD: "password", USER: "user", - USE_FLAVOR_BASED_COST_MODEL: "flavor_based_cost_model" + USE_FLAVOR_BASED_COST_MODEL: "flavor_based_cost_model", }); const KubernetesCredentials = () => ( @@ -15,7 +15,7 @@ const KubernetesCredentials = () => ( required dataTestId="input_user" InputProps={{ - endAdornment: + endAdornment: , }} label={} /> @@ -24,7 +24,7 @@ const KubernetesCredentials = () => ( required dataTestId="input_password" InputProps={{ - endAdornment: + endAdornment: , }} label={} autoComplete="one-time-code" diff --git a/ngui/ui/src/components/DataSourceCredentialFields/NebiusCredentials/NebiusCredentials.tsx b/ngui/ui/src/components/DataSourceCredentialFields/NebiusCredentials/NebiusCredentials.tsx index 21e59a48e..7658eca8f 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/NebiusCredentials/NebiusCredentials.tsx +++ b/ngui/ui/src/components/DataSourceCredentialFields/NebiusCredentials/NebiusCredentials.tsx @@ -8,7 +8,7 @@ import { AuthorizedKeyPrivateKey, AuthorizedKeyTitle, ServiceAccountId, - FIELD_NAMES + FIELD_NAMES, } from "components/NebiusConfigFormElements"; import { readFileAsText } from "utils/files"; @@ -36,13 +36,13 @@ const NebiusCredentials = () => { display: "flex", flexWrap: "wrap-reverse", justifyContent: "center", - gap: 8 + gap: 8, }} >
    @@ -51,7 +51,7 @@ const NebiusCredentials = () => {
    diff --git a/ngui/ui/src/components/DataSourceCredentialFields/index.ts b/ngui/ui/src/components/DataSourceCredentialFields/index.ts index cdf103ec5..6a2911b48 100644 --- a/ngui/ui/src/components/DataSourceCredentialFields/index.ts +++ b/ngui/ui/src/components/DataSourceCredentialFields/index.ts @@ -7,7 +7,7 @@ import AwsLinkedCredentials, { FIELD_NAMES as AWS_LINKED_CREDENTIALS_FIELD_NAMES import AwsRootCredentials, { FIELD_NAMES as AWS_ROOT_CREDENTIALS_FIELD_NAMES } from "./AwsRootCredentials"; import AwsUseAwsEdpDiscount, { FIELD_NAMES as AWS_USE_AWS_EDP_DISCOUNT_FIELD_NAMES } from "./AwsUseAwsEdpDiscount"; import AzureSubscriptionCredentials, { - FIELD_NAMES as AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES + FIELD_NAMES as AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES, } from "./AzureSubscriptionCredentials"; import AzureTenantCredentials, { FIELD_NAMES as AZURE_TENANT_CREDENTIALS_FIELD_NAMES } from "./AzureTenantCredentials"; import DatabricksCredentials, { FIELD_NAMES as DATABRICKS_CREDENTIALS_FIELD_NAMES } from "./DatabricksCredentials"; @@ -44,5 +44,5 @@ export { ALIBABA_CREDENTIALS_FIELD_NAMES, NebiusCredentials, DatabricksCredentials, - DATABRICKS_CREDENTIALS_FIELD_NAMES + DATABRICKS_CREDENTIALS_FIELD_NAMES, }; diff --git a/ngui/ui/src/components/DataSourceDetails/DataSourceDetails.tsx b/ngui/ui/src/components/DataSourceDetails/DataSourceDetails.tsx index e5f33d4cd..614f4f802 100644 --- a/ngui/ui/src/components/DataSourceDetails/DataSourceDetails.tsx +++ b/ngui/ui/src/components/DataSourceDetails/DataSourceDetails.tsx @@ -11,7 +11,7 @@ import { KUBERNETES_CNR, NEBIUS, DATABRICKS, - GCP_TENANT + GCP_TENANT, } from "utils/constants"; import { formatUTC } from "utils/datetime"; import { SPACING_2 } from "utils/layouts"; @@ -24,7 +24,7 @@ import { NebiusProperties, GcpProperties, K8sProperties, - DatabricksProperties + DatabricksProperties, } from "./Properties"; import { K8sPropertiesProps } from "./Properties/types"; import type { ConfigMap, DataSourceDetailsProps, PropertiesMap } from "./types"; @@ -38,7 +38,7 @@ const propertiesMap: PropertiesMap = { [ALIBABA_CNR]: AlibabaProperties, [KUBERNETES_CNR]: K8sProperties, [NEBIUS]: NebiusProperties, - [DATABRICKS]: DatabricksProperties + [DATABRICKS]: DatabricksProperties, }; const renderHelpMap = (id: string, config: ConfigMap) => ({ @@ -50,7 +50,7 @@ const renderHelpMap = (id: string, config: ConfigMap) => ({ [GCP_TENANT]: null, [ALIBABA_CNR]: null, [NEBIUS]: null, - [DATABRICKS]: null + [DATABRICKS]: null, }); const childrenListMap = (id: string) => ({ @@ -62,7 +62,7 @@ const childrenListMap = (id: string) => ({ [GCP_CNR]: null, [ALIBABA_CNR]: null, [NEBIUS]: null, - [DATABRICKS]: null + [DATABRICKS]: null, }); const DataSourceDetails = ({ id, accountId, parentId, type, createdAt, config = {} }: DataSourceDetailsProps) => { diff --git a/ngui/ui/src/components/DataSourceDetails/Help/K8sHelp.tsx b/ngui/ui/src/components/DataSourceDetails/Help/K8sHelp.tsx index 7fc3ae33b..7b430bc48 100644 --- a/ngui/ui/src/components/DataSourceDetails/Help/K8sHelp.tsx +++ b/ngui/ui/src/components/DataSourceDetails/Help/K8sHelp.tsx @@ -19,18 +19,18 @@ const K8sHelp = ({ dataSourceId, user }: K8sHelpProps) => { openSideModal(KubernetesIntegrationModal, { dataSourceId, - user + user, }) } > {chunks} - ) + ), }} /> ); diff --git a/ngui/ui/src/components/DataSourceDetails/Properties/AlibabaProperties.tsx b/ngui/ui/src/components/DataSourceDetails/Properties/AlibabaProperties.tsx index 51c9202fe..7289a9ed0 100644 --- a/ngui/ui/src/components/DataSourceDetails/Properties/AlibabaProperties.tsx +++ b/ngui/ui/src/components/DataSourceDetails/Properties/AlibabaProperties.tsx @@ -12,7 +12,7 @@ const AlibabaProperties = ({ accountId, config, createdAt }: AlibabaPropertiesPr value={createdAt} dataTestIds={{ key: `p_connected_at_id`, - value: `p_connected_at_value` + value: `p_connected_at_value`, }} /> cur_version: curVersion, report_name: reportName, use_edp_discount: useEdpDiscount, - region_name: regionName + region_name: regionName, } = config; const isAssumeRole = Boolean(assumeRoleAccountId && assumeRoleName); @@ -42,7 +42,7 @@ const AwsProperties = ({ accountId, config, createdAt }: AwsPropertiesProps) => value={createdAt} dataTestIds={{ key: `p_connected_at_id`, - value: `p_connected_at_value` + value: `p_connected_at_value`, }} /> value={accountId} dataTestIds={{ key: `p_${AWS_CNR}_id`, - value: `p_${AWS_CNR}_value` + value: `p_${AWS_CNR}_value`, }} /> value={} dataTestIds={{ key: `p_${AWS_CNR}_key`, - value: `p_${AWS_CNR}_value` + value: `p_${AWS_CNR}_value`, }} /> {parentId && } @@ -45,7 +45,7 @@ const AzureProperties = ({ config, createdAt, parentId }: AzurePropertiesProps) value={subscriptionId} dataTestIds={{ key: `p_${AZURE_CNR}_id`, - value: `p_${AZURE_CNR}_value` + value: `p_${AZURE_CNR}_value`, }} /> )} diff --git a/ngui/ui/src/components/DataSourceDetails/Properties/DatabricksProperties.tsx b/ngui/ui/src/components/DataSourceDetails/Properties/DatabricksProperties.tsx index 5cd8957c6..12845f80b 100644 --- a/ngui/ui/src/components/DataSourceDetails/Properties/DatabricksProperties.tsx +++ b/ngui/ui/src/components/DataSourceDetails/Properties/DatabricksProperties.tsx @@ -12,7 +12,7 @@ const DatabricksProperties = ({ accountId, config, createdAt }: DatabricksProper value={createdAt} dataTestIds={{ key: `p_connected_at_id`, - value: `p_connected_at_value` + value: `p_connected_at_value`, }} /> diff --git a/ngui/ui/src/components/DataSourceDetails/Properties/GcpProperties.tsx b/ngui/ui/src/components/DataSourceDetails/Properties/GcpProperties.tsx index fc25188d4..4ff9dbb90 100644 --- a/ngui/ui/src/components/DataSourceDetails/Properties/GcpProperties.tsx +++ b/ngui/ui/src/components/DataSourceDetails/Properties/GcpProperties.tsx @@ -14,7 +14,7 @@ const GcpProperties = ({ accountId, createdAt, config = {} }: GcpPropertiesProps value={createdAt} dataTestIds={{ key: `p_connected_at_id`, - value: `p_connected_at_value` + value: `p_connected_at_value`, }} /> diff --git a/ngui/ui/src/components/DataSourceDetails/Properties/index.ts b/ngui/ui/src/components/DataSourceDetails/Properties/index.ts index 6f268447a..8ca501eb6 100644 --- a/ngui/ui/src/components/DataSourceDetails/Properties/index.ts +++ b/ngui/ui/src/components/DataSourceDetails/Properties/index.ts @@ -13,5 +13,5 @@ export { AwsProperties, AzureProperties, GcpProperties, - NebiusProperties + NebiusProperties, }; diff --git a/ngui/ui/src/components/DataSourceDetails/types.ts b/ngui/ui/src/components/DataSourceDetails/types.ts index 3a913403c..1e215d364 100644 --- a/ngui/ui/src/components/DataSourceDetails/types.ts +++ b/ngui/ui/src/components/DataSourceDetails/types.ts @@ -8,7 +8,7 @@ import { KUBERNETES_CNR, NEBIUS, DATABRICKS, - GCP_TENANT + GCP_TENANT, } from "utils/constants"; import { AlibabaPropertiesProps, @@ -17,7 +17,7 @@ import { DatabricksPropertiesProps, GcpPropertiesProps, K8sPropertiesProps, - NebiusPropertiesProps + NebiusPropertiesProps, } from "./Properties/types"; type CloudAccountType = diff --git a/ngui/ui/src/components/DataSourceMultiSelect/DataSourceMultiSelect.styles.ts b/ngui/ui/src/components/DataSourceMultiSelect/DataSourceMultiSelect.styles.ts index 7652a2487..18f703921 100644 --- a/ngui/ui/src/components/DataSourceMultiSelect/DataSourceMultiSelect.styles.ts +++ b/ngui/ui/src/components/DataSourceMultiSelect/DataSourceMultiSelect.styles.ts @@ -3,7 +3,7 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ formControl: { minWidth: "250px", - maxWidth: "100%" + maxWidth: "100%", }, // overriding theme style — no need for selected items background in this control menuItem: { @@ -11,13 +11,13 @@ const useStyles = makeStyles()((theme) => ({ backgroundColor: "unset", "&.Mui-focusVisible": { background: "unset" }, "&:hover": { - backgroundColor: "unset" - } - } + backgroundColor: "unset", + }, + }, }, checkbox: { - padding: `0 ${theme.spacing(1)} 0 0` - } + padding: `0 ${theme.spacing(1)} 0 0`, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/DataSourceMultiSelect/DataSourceMultiSelect.tsx b/ngui/ui/src/components/DataSourceMultiSelect/DataSourceMultiSelect.tsx index d76976b38..fb9ce1e94 100644 --- a/ngui/ui/src/components/DataSourceMultiSelect/DataSourceMultiSelect.tsx +++ b/ngui/ui/src/components/DataSourceMultiSelect/DataSourceMultiSelect.tsx @@ -16,11 +16,11 @@ const DataSourceMultiSelect = ({ helperText, name, onBlur, - inputRef + inputRef, }) => { const handleChange = (event) => { const { - target: { value } + target: { value }, } = event; onChange( @@ -77,17 +77,17 @@ const DataSourceMultiSelect = ({ MenuProps={{ PaperProps: { style: { - minWidth: menuPaperMinWidth - } + minWidth: menuPaperMinWidth, + }, }, anchorOrigin: { vertical: "bottom", - horizontal: "left" + horizontal: "left", }, transformOrigin: { vertical: "top", - horizontal: "left" - } + horizontal: "left", + }, }} error={error} input={} diff --git a/ngui/ui/src/components/DataSourceNodes/DataSourceNodes.tsx b/ngui/ui/src/components/DataSourceNodes/DataSourceNodes.tsx index 0d61efc55..48fef219d 100644 --- a/ngui/ui/src/components/DataSourceNodes/DataSourceNodes.tsx +++ b/ngui/ui/src/components/DataSourceNodes/DataSourceNodes.tsx @@ -16,9 +16,9 @@ const DataSourceNodes = ({ cloudAccountId, costModel = {}, nodes, isLoading = fa action: () => openSideModal(UpdateCostModelModal, { cloudAccountId, costModel }), type: "button", requiredActions: ["MANAGE_CLOUD_CREDENTIALS"], - dataTestId: "btn_update_cost_model" - } - ] + dataTestId: "btn_update_cost_model", + }, + ], }; return ( @@ -27,7 +27,7 @@ const DataSourceNodes = ({ cloudAccountId, costModel = {}, nodes, isLoading = fa isLoading={isLoading} actionBar={{ show: true, - definition: actionBarDefinition + definition: actionBarDefinition, }} /> ); diff --git a/ngui/ui/src/components/DataSourceNodesTable/DataSourceNodesTable.tsx b/ngui/ui/src/components/DataSourceNodesTable/DataSourceNodesTable.tsx index 4ffdf8170..b5e6f5eb9 100644 --- a/ngui/ui/src/components/DataSourceNodesTable/DataSourceNodesTable.tsx +++ b/ngui/ui/src/components/DataSourceNodesTable/DataSourceNodesTable.tsx @@ -37,7 +37,7 @@ const useDataSourceNodesTableData = (nodes) => { caption={[ { key: "cpu", - node: + node: , }, { key: "memory", @@ -47,13 +47,13 @@ const useDataSourceNodesTableData = (nodes) => { value={`${memory} ${intl.formatMessage({ id: "GB" })}`} variant={capacityLabelVariant} /> - ) - } + ), + }, ]} > {flavorName} - ) + ), }; }; @@ -64,7 +64,7 @@ const useDataSourceNodesTableData = (nodes) => { return { ...node, flavorInfoString: getFlavorInfoStringRepresentation(), - renderFlavorInfoCell + renderFlavorInfoCell, }; }; @@ -85,9 +85,9 @@ const DataSourceNodesTable = ({ nodes, actionBar, isLoading = false }) => { cell: ({ cell, row: { - original: { provider } - } - }) => + original: { provider }, + }, + }) => , }, { header: ( @@ -96,7 +96,7 @@ const DataSourceNodesTable = ({ nodes, actionBar, isLoading = false }) => { ), accessorKey: "flavorInfoString", - cell: ({ row: { original } }) => original.renderFlavorInfoCell() + cell: ({ row: { original } }) => original.renderFlavorInfoCell(), }, { header: ( @@ -106,7 +106,7 @@ const DataSourceNodesTable = ({ nodes, actionBar, isLoading = false }) => { ), accessorKey: "hourly_price", cell: ({ cell }) => , - defaultSort: "desc" + defaultSort: "desc", }, { header: ( @@ -119,8 +119,8 @@ const DataSourceNodesTable = ({ nodes, actionBar, isLoading = false }) => { const value = cell.getValue(); return value === 0 ? : unixTimestampToDateTime(value); - } - } + }, + }, ], [] ); @@ -134,7 +134,7 @@ const DataSourceNodesTable = ({ nodes, actionBar, isLoading = false }) => { data={tableData} columns={nodeTableColumns} localization={{ - emptyMessageId: "noNodes" + emptyMessageId: "noNodes", }} pageSize={50} queryParamPrefix="nodes" diff --git a/ngui/ui/src/components/DataSourceSkusTable/DataSourceSkusTable.tsx b/ngui/ui/src/components/DataSourceSkusTable/DataSourceSkusTable.tsx index c89907c3e..ed83b115a 100644 --- a/ngui/ui/src/components/DataSourceSkusTable/DataSourceSkusTable.tsx +++ b/ngui/ui/src/components/DataSourceSkusTable/DataSourceSkusTable.tsx @@ -42,7 +42,7 @@ const DataSourceSkusTable = ({ dataSourceId, skus, usedSkus, costModel, isLoadin sku ); }, - defaultSort: "asc" + defaultSort: "asc", }, { header: ( @@ -57,7 +57,7 @@ const DataSourceSkusTable = ({ dataSourceId, skus, usedSkus, costModel, isLoadin maximumFractionDigits={COST_MODEL_MONEY_MAXIMUM_FRACTION_DIGITS} value={cell.getValue()} /> - ) + ), }, { header: ( @@ -76,13 +76,13 @@ const DataSourceSkusTable = ({ dataSourceId, skus, usedSkus, costModel, isLoadin messageId: "edit", icon: , requiredActions: ["MANAGE_CLOUD_CREDENTIALS"], - action: () => openSideModal(UpdateDataSourceSkuModal, { sku, cost, dataSourceId, costModel }) - } + action: () => openSideModal(UpdateDataSourceSkuModal, { sku, cost, dataSourceId, costModel }), + }, ]} /> ); - } - } + }, + }, ], [usedSkus, openSideModal, dataSourceId, costModel] ); diff --git a/ngui/ui/src/components/DateRangePicker/DateRangePicker/DateRangePicker.styles.ts b/ngui/ui/src/components/DateRangePicker/DateRangePicker/DateRangePicker.styles.ts index afd17ea7a..54eb65552 100644 --- a/ngui/ui/src/components/DateRangePicker/DateRangePicker/DateRangePicker.styles.ts +++ b/ngui/ui/src/components/DateRangePicker/DateRangePicker/DateRangePicker.styles.ts @@ -2,30 +2,30 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ header: { - padding: "0.375rem" + padding: "0.375rem", }, headerItem: { flex: 1, - textAlign: "center" + textAlign: "center", }, divider: { borderLeft: `1px solid ${theme.palette.action.focus}`, [theme.breakpoints.down("md")]: { - display: "none" - } + display: "none", + }, }, wrapper: { [theme.breakpoints.down("md")]: { display: "flex", justifyContent: "center", - alignItems: "center" - } + alignItems: "center", + }, }, selectors: { [theme.breakpoints.down("md")]: { - width: "100%" - } - } + width: "100%", + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/DateRangePicker/DateRangePicker/DateRangePicker.tsx b/ngui/ui/src/components/DateRangePicker/DateRangePicker/DateRangePicker.tsx index b4412566b..dfc7473d9 100644 --- a/ngui/ui/src/components/DateRangePicker/DateRangePicker/DateRangePicker.tsx +++ b/ngui/ui/src/components/DateRangePicker/DateRangePicker/DateRangePicker.tsx @@ -21,7 +21,7 @@ import { secondsToMilliseconds, moveDateFromUTC, moveDateToUTC, - isToday as isTodayDateFNS + isToday as isTodayDateFNS, } from "utils/datetime"; import { objectMap } from "utils/objects"; import { getBasicRangesSet } from "../defaults"; @@ -31,7 +31,7 @@ import useStyles from "./DateRangePicker.styles"; export const MARKERS = Object.freeze({ FIRST_MONTH: 1, - SECOND_MONTH: 2 + SECOND_MONTH: 2, }); const DateRangePicker = (props) => { @@ -45,7 +45,7 @@ const DateRangePicker = (props) => { minDate, maxDate, isUtc = true, - definedRanges = getBasicRangesSet(isUtc) + definedRanges = getBasicRangesSet(isUtc), } = props; // Month component works only with local dates @@ -192,13 +192,13 @@ const DateRangePicker = (props) => { const helpers = { inHoverRange, - isToday + isToday, }; const handlers = { onDayClick, onDayHover, - onMonthNavigate + onMonthNavigate, }; const canNavigateCloser = differenceInCalendarMonths(secondMonth, firstMonth) >= 2; @@ -210,7 +210,7 @@ const DateRangePicker = (props) => { minDate: getTime(minDateValid), maxDate: getTime(maxDateValid), helpers, - handlers + handlers, }; return open ? ( @@ -225,13 +225,13 @@ const DateRangePicker = (props) => { marker={MARKERS.FIRST_MONTH} userBounds={{ minDate: getTime(minDateValid), - maxDate: getTime(subMonths(secondMonth, 1)) + maxDate: getTime(subMonths(secondMonth, 1)), }} dataTestIds={{ monthSelector: "selector_previous_month", yearSelector: "selector_previous_year", btnPrev: "btn_previous_left", - btnNext: "btn_previous_right" + btnNext: "btn_previous_right", }} />
    @@ -243,13 +243,13 @@ const DateRangePicker = (props) => { marker={MARKERS.SECOND_MONTH} userBounds={{ minDate: getTime(addMonths(firstMonth, 1)), - maxDate: getTime(maxDateValid) + maxDate: getTime(maxDateValid), }} dataTestIds={{ monthSelector: "selector_next_month", yearSelector: "selector_next_year", btnPrev: "btn_next_left", - btnNext: "btn_next_right" + btnNext: "btn_next_right", }} /> diff --git a/ngui/ui/src/components/DateRangePicker/Day/Day.styles.ts b/ngui/ui/src/components/DateRangePicker/Day/Day.styles.ts index fc846ec00..a822a1d30 100644 --- a/ngui/ui/src/components/DateRangePicker/Day/Day.styles.ts +++ b/ngui/ui/src/components/DateRangePicker/Day/Day.styles.ts @@ -3,31 +3,31 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ buttonContainer: { display: "flex", - borderRadius: "50%" + borderRadius: "50%", }, button: { height: 36, width: 36, - padding: 0 + padding: 0, }, buttonText: { - lineHeight: 1.6 + lineHeight: 1.6, }, outlined: { - border: `1px solid ${theme.palette.primary.main}` + border: `1px solid ${theme.palette.primary.main}`, }, filled: { "&:hover": { - backgroundColor: theme.palette.secondary.main + backgroundColor: theme.palette.secondary.main, }, - backgroundColor: theme.palette.secondary.main + backgroundColor: theme.palette.secondary.main, }, highlighted: { - backgroundColor: theme.palette.action.hover + backgroundColor: theme.palette.action.hover, }, contrast: { - color: theme.palette.secondary.contrastText - } + color: theme.palette.secondary.contrastText, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/DateRangePicker/Day/Day.tsx b/ngui/ui/src/components/DateRangePicker/Day/Day.tsx index cc9ddcf14..4a32e0ca8 100644 --- a/ngui/ui/src/components/DateRangePicker/Day/Day.tsx +++ b/ngui/ui/src/components/DateRangePicker/Day/Day.tsx @@ -6,13 +6,13 @@ const Day = ({ disabled, highlighted, outlined, filled, onClick, onHover, value return (
    diff --git a/ngui/ui/src/components/DateRangePicker/DefinedRanges/DefinedRanges.tsx b/ngui/ui/src/components/DateRangePicker/DefinedRanges/DefinedRanges.tsx index 2ab02732b..e282633e8 100644 --- a/ngui/ui/src/components/DateRangePicker/DefinedRanges/DefinedRanges.tsx +++ b/ngui/ui/src/components/DateRangePicker/DefinedRanges/DefinedRanges.tsx @@ -21,8 +21,8 @@ const DefinedRanges = ({ ranges, setRange, selectedRange }) => { {intl.formatMessage({ id: range.messageId })} diff --git a/ngui/ui/src/components/DateRangePicker/Header/Header.styles.ts b/ngui/ui/src/components/DateRangePicker/Header/Header.styles.ts index 25596631b..342374d30 100644 --- a/ngui/ui/src/components/DateRangePicker/Header/Header.styles.ts +++ b/ngui/ui/src/components/DateRangePicker/Header/Header.styles.ts @@ -2,11 +2,11 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ root: { - fontSize: "inherit" + fontSize: "inherit", }, wrapper: { - height: "40px" - } + height: "40px", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/DateRangePicker/Header/Header.tsx b/ngui/ui/src/components/DateRangePicker/Header/Header.tsx index 15d59830a..9437f2494 100644 --- a/ngui/ui/src/components/DateRangePicker/Header/Header.tsx +++ b/ngui/ui/src/components/DateRangePicker/Header/Header.tsx @@ -16,7 +16,7 @@ import { isWithinInterval, startOfMonth, endOfMonth, - fitDateIntoInterval + fitDateIntoInterval, } from "utils/datetime"; import useStyles from "./Header.styles"; @@ -30,7 +30,7 @@ const Header = ({ onClickNext, onClickPrevious, userBounds: { minDate: rowMinDate, maxDate: rowMaxDate }, - dataTestIds = {} + dataTestIds = {}, }) => { const { classes } = useStyles(); @@ -40,7 +40,7 @@ const Header = ({ monthSelector: monthDataTestId, yearSelector: yearDataTestId, btnPrev: btnPrevDataTestId, - btnNext: btnNextDataTestId + btnNext: btnNextDataTestId, } = dataTestIds; const [years] = useState(generateYears(yearsTo, yearsFrom)); diff --git a/ngui/ui/src/components/DateRangePicker/Month/Month.styles.ts b/ngui/ui/src/components/DateRangePicker/Month/Month.styles.ts index efb8abece..dd83c6c48 100644 --- a/ngui/ui/src/components/DateRangePicker/Month/Month.styles.ts +++ b/ngui/ui/src/components/DateRangePicker/Month/Month.styles.ts @@ -2,16 +2,16 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ root: { - width: 290 + width: 290, }, weekDaysContainer: { marginTop: 10, paddingLeft: 30, - paddingRight: 30 + paddingRight: 30, }, daysContainer: { - marginTop: 15 - } + marginTop: 15, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/DateRangePicker/Month/Month.tsx b/ngui/ui/src/components/DateRangePicker/Month/Month.tsx index 7be095d20..fb7e014af 100644 --- a/ngui/ui/src/components/DateRangePicker/Month/Month.tsx +++ b/ngui/ui/src/components/DateRangePicker/Month/Month.tsx @@ -10,7 +10,7 @@ import { getDate, isSameMonth, isToday, - isWithinInterval + isWithinInterval, } from "utils/datetime"; import Day from "../Day"; import Header from "../Header"; @@ -30,7 +30,7 @@ const Month = (props) => { maxDate, navState = [], userBounds, - dataTestIds + dataTestIds, } = props; const [back, forward] = navState; diff --git a/ngui/ui/src/components/DateRangePicker/defaults.ts b/ngui/ui/src/components/DateRangePicker/defaults.ts index 43f1a273e..51151fd1e 100644 --- a/ngui/ui/src/components/DateRangePicker/defaults.ts +++ b/ngui/ui/src/components/DateRangePicker/defaults.ts @@ -8,12 +8,12 @@ import { endOfDay, startOfDay, millisecondsToSeconds, - performDateTimeFunction + performDateTimeFunction, } from "utils/datetime"; export const getCustomRange = (args) => ({ key: uuidv4(), - ...args + ...args, }); const getBasicRangesSetRawMS = (isUtc) => { @@ -28,26 +28,26 @@ const getBasicRangesSetRawMS = (isUtc) => { messageId: "thisMonth", startDate: performDateTimeFunction(startOfMonth, isUtc, date), endDate: endOfToday, - dataTestId: "btn_this_month" + dataTestId: "btn_this_month", }, { messageId: "lastMonth", startDate: performDateTimeFunction(startOfMonth, isUtc, monthSubstracted), endDate: performDateTimeFunction(endOfMonth, isUtc, monthSubstracted), - dataTestId: "btn_last_month" + dataTestId: "btn_last_month", }, { messageId: "last7Days", startDate: performDateTimeFunction(subDays, isUtc, startOfToday, 6), endDate: endOfToday, - dataTestId: "btn_last_7_days" + dataTestId: "btn_last_7_days", }, { messageId: "last30Days", startDate: performDateTimeFunction(subDays, isUtc, startOfToday, 29), endDate: endOfToday, - dataTestId: "btn_last_30_days" - } + dataTestId: "btn_last_30_days", + }, ]; }; @@ -56,6 +56,6 @@ export const getBasicRangesSet = (isUtc = true) => .map(({ startDate, endDate, ...rest }) => ({ startDate: millisecondsToSeconds(startDate), endDate: millisecondsToSeconds(endDate), - ...rest + ...rest, })) .map((range) => getCustomRange(range)); diff --git a/ngui/ui/src/components/DeleteAssignmentRule/DeleteAssignmentRule.tsx b/ngui/ui/src/components/DeleteAssignmentRule/DeleteAssignmentRule.tsx index 3bf0a7e36..06fdcd7dc 100644 --- a/ngui/ui/src/components/DeleteAssignmentRule/DeleteAssignmentRule.tsx +++ b/ngui/ui/src/components/DeleteAssignmentRule/DeleteAssignmentRule.tsx @@ -7,7 +7,7 @@ const DeleteAssignmentRule = ({ isLoading, closeSideModal, onSubmit }) => { return ( { disabled: isRestricted, tooltip: { show: isRestricted, - value: restrictionReasonMessage - } + value: restrictionReasonMessage, + }, }} onCancel={closeSideModal} /> diff --git a/ngui/ui/src/components/DeleteEntity/DeleteEntity.test.tsx b/ngui/ui/src/components/DeleteEntity/DeleteEntity.test.tsx index 51f444cee..d6ac2456c 100644 --- a/ngui/ui/src/components/DeleteEntity/DeleteEntity.test.tsx +++ b/ngui/ui/src/components/DeleteEntity/DeleteEntity.test.tsx @@ -10,7 +10,7 @@ it("renders without crashing", () => { vi.fn + onDelete: () => vi.fn, }} onCancel={() => vi.fn} /> diff --git a/ngui/ui/src/components/DeleteEntity/DeleteEntity.tsx b/ngui/ui/src/components/DeleteEntity/DeleteEntity.tsx index bab8a49dc..549db8cc8 100644 --- a/ngui/ui/src/components/DeleteEntity/DeleteEntity.tsx +++ b/ngui/ui/src/components/DeleteEntity/DeleteEntity.tsx @@ -8,7 +8,7 @@ const DeleteEntity = ({ children, onCancel, message = {}, dataTestIds, isLoading const { text: textDataTestId, deleteButton: deleteButtonDataTestId, - cancelButton: cancelButtonDataTestId + cancelButton: cancelButtonDataTestId, } = dataTestIds || {}; const { messageId, values = {} } = message; const { @@ -17,7 +17,7 @@ const DeleteEntity = ({ children, onCancel, message = {}, dataTestIds, isLoading color: deleteButtonColor = "error", variant: deleteButtonVariant = "contained", tooltip, - onDelete + onDelete, } = deleteButtonProps; return ( diff --git a/ngui/ui/src/components/DeletePowerSchedule/DeletePowerSchedule.tsx b/ngui/ui/src/components/DeletePowerSchedule/DeletePowerSchedule.tsx index 52e6f47ac..2775534b3 100644 --- a/ngui/ui/src/components/DeletePowerSchedule/DeletePowerSchedule.tsx +++ b/ngui/ui/src/components/DeletePowerSchedule/DeletePowerSchedule.tsx @@ -23,20 +23,20 @@ const DeletePowerSchedule = ({ name, onSubmit, onCancel, isLoading = false }: De disabled: isRestricted, tooltip: { show: isRestricted, - value: restrictionReasonMessage - } + value: restrictionReasonMessage, + }, }} dataTestIds={{ text: "p_delete_power_schedule", deleteButton: "btn_delete_power_schedule", - cancelButton: "btn_cancel_delete_power_schedule" + cancelButton: "btn_cancel_delete_power_schedule", }} message={{ messageId: "deletePowerScheduleQuestion", values: { name, - strong: (chunks) => {chunks} - } + strong: (chunks) => {chunks}, + }, }} /> ); diff --git a/ngui/ui/src/components/DeleteResourcePerspective/DeleteResourcePerspective.tsx b/ngui/ui/src/components/DeleteResourcePerspective/DeleteResourcePerspective.tsx index 82215bbf1..05e421be7 100644 --- a/ngui/ui/src/components/DeleteResourcePerspective/DeleteResourcePerspective.tsx +++ b/ngui/ui/src/components/DeleteResourcePerspective/DeleteResourcePerspective.tsx @@ -4,10 +4,10 @@ const DeleteResourcePerspective = ({ perspectiveName, onDelete, onCancel, isLoad {chunks} } + values: { perspectiveName, strong: (chunks) => {chunks} }, }} deleteButtonProps={{ - onDelete + onDelete, }} onCancel={onCancel} isLoading={isLoading} diff --git a/ngui/ui/src/components/DeleteWebhook/DeleteWebhook.tsx b/ngui/ui/src/components/DeleteWebhook/DeleteWebhook.tsx index fb213da0f..d9732210f 100644 --- a/ngui/ui/src/components/DeleteWebhook/DeleteWebhook.tsx +++ b/ngui/ui/src/components/DeleteWebhook/DeleteWebhook.tsx @@ -17,7 +17,7 @@ const DeleteWebhook = ({ id, action, url }) => { disabled={isRestricted} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} /> ); diff --git a/ngui/ui/src/components/DetectedConstraintsHistory/DetectedConstraintsHistory.tsx b/ngui/ui/src/components/DetectedConstraintsHistory/DetectedConstraintsHistory.tsx index 1925eac84..00dff487b 100644 --- a/ngui/ui/src/components/DetectedConstraintsHistory/DetectedConstraintsHistory.tsx +++ b/ngui/ui/src/components/DetectedConstraintsHistory/DetectedConstraintsHistory.tsx @@ -10,7 +10,7 @@ import { QUOTA_POLICY, RECURRING_BUDGET_POLICY, TAGGING_POLICY, - RESOURCE_COUNT_ANOMALY + RESOURCE_COUNT_ANOMALY, } from "utils/constants"; const mapConstraintTypeToTitleMessageId = (type) => { @@ -24,7 +24,7 @@ const mapConstraintTypeToTitleMessageId = (type) => { [QUOTA_POLICY]: policyViolationsHistoryTitle, [RECURRING_BUDGET_POLICY]: policyViolationsHistoryTitle, [EXPIRING_BUDGET_POLICY]: policyViolationsHistoryTitle, - [TAGGING_POLICY]: policyViolationsHistoryTitle + [TAGGING_POLICY]: policyViolationsHistoryTitle, }[type] ?? detectedAnomaliesHistoryTitle ); }; diff --git a/ngui/ui/src/components/DetectedConstraintsHistoryTable/DetectedConstraintsHistoryTable.tsx b/ngui/ui/src/components/DetectedConstraintsHistoryTable/DetectedConstraintsHistoryTable.tsx index 30583cb17..db6ea308e 100644 --- a/ngui/ui/src/components/DetectedConstraintsHistoryTable/DetectedConstraintsHistoryTable.tsx +++ b/ngui/ui/src/components/DetectedConstraintsHistoryTable/DetectedConstraintsHistoryTable.tsx @@ -20,7 +20,7 @@ const DetectedConstraintsHistoryTable = ({ limitHits, constraint }) => { violatedAt(), ...statusChartColumn, constraintHitValue({ type: constraint.type }), - constraintHitActions({ navigate, constraint }) + constraintHitActions({ navigate, constraint }), ]; }, [navigate, constraint]); @@ -29,7 +29,7 @@ const DetectedConstraintsHistoryTable = ({ limitHits, constraint }) => { data={tableData} columns={columns} localization={{ - emptyMessageId: "noDetectedAnomalies" + emptyMessageId: "noDetectedAnomalies", }} pageSize={50} /> diff --git a/ngui/ui/src/components/DocsPanel/DocsPanel.styles.ts b/ngui/ui/src/components/DocsPanel/DocsPanel.styles.ts index da063bac3..f8fbad8a2 100644 --- a/ngui/ui/src/components/DocsPanel/DocsPanel.styles.ts +++ b/ngui/ui/src/components/DocsPanel/DocsPanel.styles.ts @@ -6,7 +6,7 @@ const BORDER_ALPHA = 0.8; const useStyles = makeStyles()((theme) => ({ wrapper: { height: "100%", - position: "relative" + position: "relative", }, content: { borderLeft: `1px solid ${lighten(theme.palette.info.main, BORDER_ALPHA)}`, @@ -14,17 +14,17 @@ const useStyles = makeStyles()((theme) => ({ overflow: "auto", height: `calc(100% - ${theme.spacing(7)})`, top: theme.spacing(7), - left: 0 + left: 0, }, loader: { display: "flex", justifyContent: "center", alignItems: "center", - height: "100%" + height: "100%", }, toolbar: { - height: theme.spacing(7) - } + height: theme.spacing(7), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/DocsPanel/DocsPanel.tsx b/ngui/ui/src/components/DocsPanel/DocsPanel.tsx index 0da18c521..12d36c7fb 100644 --- a/ngui/ui/src/components/DocsPanel/DocsPanel.tsx +++ b/ngui/ui/src/components/DocsPanel/DocsPanel.tsx @@ -17,7 +17,7 @@ const STATUSES = { LOADING: "loading", OK: "ok", ERROR: "error", - MISSING: "missing" + MISSING: "missing", }; const GithubLink = (chunks) => ( @@ -98,7 +98,7 @@ const DocsPanel = () => { messageValues={{ documentationUrl: , github: GithubLink, - action: intl.formatMessage({ id: "edit" }).toLocaleLowerCase() + action: intl.formatMessage({ id: "edit" }).toLocaleLowerCase(), }} /> @@ -114,10 +114,10 @@ const DocsPanel = () => { values={{ documentationUrl: , github: GithubLink, - action: intl.formatMessage({ id: "add" }).toLocaleLowerCase() + action: intl.formatMessage({ id: "add" }).toLocaleLowerCase(), }} /> - ) + ), }} /> )} diff --git a/ngui/ui/src/components/Dropzone/Dropzone.styles.ts b/ngui/ui/src/components/Dropzone/Dropzone.styles.ts index a21295b64..fe73e75ff 100644 --- a/ngui/ui/src/components/Dropzone/Dropzone.styles.ts +++ b/ngui/ui/src/components/Dropzone/Dropzone.styles.ts @@ -6,7 +6,7 @@ const useStyles = makeStyles()((theme) => ({ display: "flex", alignItems: "center", justifyContent: "center", - flexWrap: "wrap" + flexWrap: "wrap", }, dropzone: { minHeight: "200px", @@ -14,14 +14,14 @@ const useStyles = makeStyles()((theme) => ({ width: "100%", border: `1px ${theme.palette.primary.main} dashed`, cursor: "pointer", - flexDirection: "column" + flexDirection: "column", }, error: { - borderColor: theme.palette.error.main + borderColor: theme.palette.error.main, }, highlight: { - backgroundColor: alpha(theme.palette.primary.main, 0.04) - } + backgroundColor: alpha(theme.palette.primary.main, 0.04), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Dropzone/DropzoneArea.tsx b/ngui/ui/src/components/Dropzone/DropzoneArea.tsx index 89bdb8374..f9cd1f323 100644 --- a/ngui/ui/src/components/Dropzone/DropzoneArea.tsx +++ b/ngui/ui/src/components/Dropzone/DropzoneArea.tsx @@ -9,7 +9,7 @@ const DropzoneArea = ({ acceptedFiles, name = FIELD_NAME, maxFileSizeMb = 512 }) control, formState: { errors }, trigger, - clearErrors + clearErrors, } = useFormContext(); return ( @@ -19,12 +19,12 @@ const DropzoneArea = ({ acceptedFiles, name = FIELD_NAME, maxFileSizeMb = 512 }) rules={{ required: { value: true, - message: "selectFileToUpload" + message: "selectFileToUpload", }, validate: { type: (value) => (!acceptedFiles.includes(value.type) ? "fileTypeNotSupported" : true), - size: (value) => (value.size > maxFileSizeMb * MB ? "fileIsTooBig" : true) - } + size: (value) => (value.size > maxFileSizeMb * MB ? "fileIsTooBig" : true), + }, }} render={({ field: { onChange } }) => ( { const methods = useForm(); diff --git a/ngui/ui/src/components/Dropzone/useDropzone.ts b/ngui/ui/src/components/Dropzone/useDropzone.ts index 1a0a7f7c2..abba2c828 100644 --- a/ngui/ui/src/components/Dropzone/useDropzone.ts +++ b/ngui/ui/src/components/Dropzone/useDropzone.ts @@ -48,7 +48,7 @@ const useDropzone = ({ onChange }) => { openFileDialog, onDragOver, onDragLeave, - onDrop + onDrop, }; }; diff --git a/ngui/ui/src/components/DynamicFractionDigitsValue/DynamicFractionDigitsValue.ts b/ngui/ui/src/components/DynamicFractionDigitsValue/DynamicFractionDigitsValue.ts index 64b77ef99..930feea97 100644 --- a/ngui/ui/src/components/DynamicFractionDigitsValue/DynamicFractionDigitsValue.ts +++ b/ngui/ui/src/components/DynamicFractionDigitsValue/DynamicFractionDigitsValue.ts @@ -16,13 +16,13 @@ export const useFormatDynamicFractionDigitsValue = (): FormatFunctionType => { return useCallback( ({ value, maximumFractionDigits = 2, notation }) => { const props = { - maximumFractionDigits + maximumFractionDigits, }; if (notation === "compact") { return formatCompactNumber(intl.formatNumber)({ value, - ...props + ...props, }); } diff --git a/ngui/ui/src/components/EditBIExport/EditBIExport.tsx b/ngui/ui/src/components/EditBIExport/EditBIExport.tsx index 8351721dc..47b54c9ce 100644 --- a/ngui/ui/src/components/EditBIExport/EditBIExport.tsx +++ b/ngui/ui/src/components/EditBIExport/EditBIExport.tsx @@ -26,18 +26,18 @@ const EditBIExport = ({ biExport, onSubmit, onCancel, isLoadingProps }) => { , {name} - + , ], title: { messageId: "editBIExportTitle", - dataTestId: "lbl_edit_bi_export_title" - } + dataTestId: "lbl_edit_bi_export_title", + }, }} /> , {powerSchedule.name} - + , ], title: { isLoading: isGetDataLoading, messageId: "edit", - dataTestId: "lbl_create_power_schedule_title" - } + dataTestId: "lbl_create_power_schedule_title", + }, }} /> @@ -46,7 +46,7 @@ const EditPowerSchedule = ({ powerSchedule, onSubmit, onCancel, isLoadingProps = onCancel={onCancel} isLoadingProps={{ isGetDataLoading, - isSubmitLoading + isSubmitLoading, }} /> diff --git a/ngui/ui/src/components/EditablePoolPolicyLimit/EditablePoolPolicyLimit.tsx b/ngui/ui/src/components/EditablePoolPolicyLimit/EditablePoolPolicyLimit.tsx index 78dcdb594..baf585669 100644 --- a/ngui/ui/src/components/EditablePoolPolicyLimit/EditablePoolPolicyLimit.tsx +++ b/ngui/ui/src/components/EditablePoolPolicyLimit/EditablePoolPolicyLimit.tsx @@ -11,7 +11,7 @@ import { CONSTRAINT_MESSAGE_FORMAT } from "utils/constraints"; export const MODE = Object.freeze({ CREATE: "create", - UPDATE: "update" + UPDATE: "update", }); const EditablePoolPolicyLimit = ({ @@ -22,7 +22,7 @@ const EditablePoolPolicyLimit = ({ formattedPolicyLimit, onSubmit, isLoading = false, - dataTestIds = {} + dataTestIds = {}, }) => { const { isRestricted, restrictionReasonMessage } = useOrganizationActionRestrictions(); @@ -52,7 +52,7 @@ const EditablePoolPolicyLimit = ({ const formattedData = { ...formData, type: policyType, - limit: Number.isInteger(limitNumber) ? limitNumber : undefined + limit: Number.isInteger(limitNumber) ? limitNumber : undefined, }; if (policyId) { @@ -92,7 +92,7 @@ const EditablePoolPolicyLimit = ({ onClick={() => onEditMode()} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} dataTestId={editButtonDataTestId} /> diff --git a/ngui/ui/src/components/EmailVerification/EmailVerification.tsx b/ngui/ui/src/components/EmailVerification/EmailVerification.tsx index 5c3f5d82b..32a63f239 100644 --- a/ngui/ui/src/components/EmailVerification/EmailVerification.tsx +++ b/ngui/ui/src/components/EmailVerification/EmailVerification.tsx @@ -59,7 +59,7 @@ const EmailVerification = () => { navigate( `${INITIALIZE}?${stringifySearchParams({ [SHOW_POLICY_QUERY_PARAM]: true, - [OPTSCALE_CAPABILITY_QUERY_PARAMETER_NAME]: capability + [OPTSCALE_CAPABILITY_QUERY_PARAMETER_NAME]: capability, })}` ); }} @@ -69,7 +69,7 @@ const EmailVerification = () => {
    - ) + ), }[step]; return ; diff --git a/ngui/ui/src/components/Employees/Employees.tsx b/ngui/ui/src/components/Employees/Employees.tsx index 3da23550e..c0d96b72a 100644 --- a/ngui/ui/src/components/Employees/Employees.tsx +++ b/ngui/ui/src/components/Employees/Employees.tsx @@ -8,8 +8,8 @@ const Employees = ({ employees, isLoading }) => ( data={{ title: { messageId: "users", - dataTestId: "lbl_users" - } + dataTestId: "lbl_users", + }, }} /> diff --git a/ngui/ui/src/components/EmployeesTable/EmployeesTable.tsx b/ngui/ui/src/components/EmployeesTable/EmployeesTable.tsx index cda471408..089a681aa 100644 --- a/ngui/ui/src/components/EmployeesTable/EmployeesTable.tsx +++ b/ngui/ui/src/components/EmployeesTable/EmployeesTable.tsx @@ -30,7 +30,7 @@ const EmployeeCell = ({ rowId, rowOriginal }) => { slack_connected: isConnectedToSlack, jira_connected: itConnectedToJira, name: employeeName, - last_login: lastLogin + last_login: lastLogin, } = rowOriginal; const formatTimeAgo = useFormatIntervalTimeAgo(); @@ -43,8 +43,8 @@ const EmployeeCell = ({ rowId, rowOriginal }) => { caption: `${intl.formatMessage({ id: "lastLogin" })}: ${ lastLogin === 0 ? intl.formatMessage({ id: "never" }).toLocaleLowerCase() : formatTimeAgo(lastLogin, 1) }`, - key: "lastLogin" - } + key: "lastLogin", + }, ].filter(Boolean); const icons = [ @@ -67,7 +67,7 @@ const EmployeeCell = ({ rowId, rowOriginal }) => { dataTestId={`logo_jira_connected_${rowId}`} fontSize="small" /> - ) + ), ].filter(Boolean); return ( @@ -86,9 +86,9 @@ const renderRoles = ({ assignments = [], organizationName, rowId }, toStringsArr purpose: MEMBER, assignment_id: organizationName, assignment_resource_name: organizationName, - assignment_resource_type: SCOPE_TYPES.ORGANIZATION + assignment_resource_type: SCOPE_TYPES.ORGANIZATION, }, - ...assignments + ...assignments, ] .filter((assignment) => assignment.purpose !== null) .map((assignment, assignmentIndex) => { @@ -98,7 +98,7 @@ const renderRoles = ({ assignments = [], organizationName, rowId }, toStringsArr assignment_resource_id: assignmentResourceId, assignment_resource_purpose: assignmentResourcePurpose, assignment_resource_name: assignmentResourceName, - assignment_resource_type: assignmentResourceType + assignment_resource_type: assignmentResourceType, } = assignment; const isOrganizationScope = assignmentResourceType === SCOPE_TYPES.ORGANIZATION; @@ -144,7 +144,7 @@ const EmployeesTable = ({ isLoading = false, employees }) => { () => employees.map((el) => ({ ...el, - assignmentsStringified: renderRoles({ assignments: el.assignments, organizationName, id: el.id }, true, intl).join(" ") + assignmentsStringified: renderRoles({ assignments: el.assignments, organizationName, id: el.id }, true, intl).join(" "), })), [employees, organizationName, intl] ); @@ -159,7 +159,7 @@ const EmployeesTable = ({ isLoading = false, employees }) => { ), accessorKey: "name", defaultSort: "asc", - cell: ({ row: { id, original } }) => + cell: ({ row: { id, original } }) => , }, { header: ( @@ -167,7 +167,7 @@ const EmployeesTable = ({ isLoading = false, employees }) => { ), - accessorKey: "user_email" + accessorKey: "user_email", }, { header: ( @@ -177,7 +177,7 @@ const EmployeesTable = ({ isLoading = false, employees }) => { ), enableSorting: false, accessorKey: "assignmentsStringified", - cell: ({ row: { id, original: { assignments } = {} } }) => renderRoles({ assignments, organizationName, id }) + cell: ({ row: { id, original: { assignments } = {} } }) => renderRoles({ assignments, organizationName, id }), }, { header: ( @@ -199,12 +199,12 @@ const EmployeesTable = ({ isLoading = false, employees }) => { requiredActions: ["EDIT_PARTNER"], dataTestId: `btn_delete_${index}`, action: () => - openSideModal(DeleteEmployeeModal, { entityToBeDeleted: { employeeName, employeeId }, employees: data }) - } + openSideModal(DeleteEmployeeModal, { entityToBeDeleted: { employeeName, employeeId }, employees: data }), + }, ]} /> - ) - } + ), + }, ], [organizationName, openSideModal, data] ); @@ -214,7 +214,7 @@ const EmployeesTable = ({ isLoading = false, employees }) => { fetchAndDownload({ url: `${REST_API_URL}/organizations/${organizationId}/employees?format=${format}`, fallbackFilename: `employees.${format}`, - format + format, }); }; @@ -225,7 +225,7 @@ const EmployeesTable = ({ isLoading = false, employees }) => {
    { color: "success", variant: "contained", dataTestId: "btn_invite", - requiredActions: ["MANAGE_INVITES"] + requiredActions: ["MANAGE_INVITES"], }, { key: "slack", @@ -251,7 +251,7 @@ const EmployeesTable = ({ isLoading = false, employees }) => { messageId: "slack", action: () => openSideModal(SlackIntegrationModal), type: "button", - dataTestId: "btn_slack" + dataTestId: "btn_slack", }, { key: "jira", @@ -259,7 +259,7 @@ const EmployeesTable = ({ isLoading = false, employees }) => { messageId: "jira", link: getIntegrationsUrl(JIRA), type: "button", - dataTestId: "btn_jira" + dataTestId: "btn_jira", }, { key: "download", @@ -273,23 +273,23 @@ const EmployeesTable = ({ isLoading = false, employees }) => { key: "xlsx", messageId: "xlsxFile", action: () => downloadEmployees(DOWNLOAD_FILE_FORMATS.XLSX), - dataTestId: "btn_download_xlsx" + dataTestId: "btn_download_xlsx", }, { key: "json", messageId: "jsonFile", action: () => downloadEmployees(DOWNLOAD_FILE_FORMATS.JSON), - dataTestId: "btn_download_json" - } - ] + dataTestId: "btn_download_json", + }, + ], }, - dataTestId: "btn_download" - } - ] - } + dataTestId: "btn_download", + }, + ], + }, }} dataTestIds={{ - container: "table_employees" + container: "table_employees", }} /> diff --git a/ngui/ui/src/components/EnvironmentBookings/EnvironmentBookings.tsx b/ngui/ui/src/components/EnvironmentBookings/EnvironmentBookings.tsx index 41c180855..27ba6ada2 100644 --- a/ngui/ui/src/components/EnvironmentBookings/EnvironmentBookings.tsx +++ b/ngui/ui/src/components/EnvironmentBookings/EnvironmentBookings.tsx @@ -18,7 +18,7 @@ const AcquireReleaseHooksDescription = () => ( + br:
    , }} /> diff --git a/ngui/ui/src/components/EnvironmentCiCdIntegration/EnvironmentCiCdIntegration.tsx b/ngui/ui/src/components/EnvironmentCiCdIntegration/EnvironmentCiCdIntegration.tsx index 9120a203b..c492d9d3b 100644 --- a/ngui/ui/src/components/EnvironmentCiCdIntegration/EnvironmentCiCdIntegration.tsx +++ b/ngui/ui/src/components/EnvironmentCiCdIntegration/EnvironmentCiCdIntegration.tsx @@ -16,8 +16,7 @@ const EnvironmentCiCdIntegration = ({ text }) => ( - - {":"} + : @@ -29,7 +28,7 @@ const EnvironmentCiCdIntegration = ({ text }) => ( id="requestBodyMustContainPlainJSON" values={{ break:
    , - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> @@ -43,7 +42,7 @@ const EnvironmentCiCdIntegration = ({ text }) => ( {chunks} - ) + ), }} /> diff --git a/ngui/ui/src/components/EnvironmentCostModel/EnvironmentCostModel.test.tsx b/ngui/ui/src/components/EnvironmentCostModel/EnvironmentCostModel.test.tsx index 2b277f0bb..1978b327a 100644 --- a/ngui/ui/src/components/EnvironmentCostModel/EnvironmentCostModel.test.tsx +++ b/ngui/ui/src/components/EnvironmentCostModel/EnvironmentCostModel.test.tsx @@ -7,7 +7,7 @@ it("renders without crashing", () => { const root = createRoot(div); root.render( - + ); root.unmount(); diff --git a/ngui/ui/src/components/EnvironmentCostModel/EnvironmentCostModel.tsx b/ngui/ui/src/components/EnvironmentCostModel/EnvironmentCostModel.tsx index 12182cabb..0881f58d7 100644 --- a/ngui/ui/src/components/EnvironmentCostModel/EnvironmentCostModel.tsx +++ b/ngui/ui/src/components/EnvironmentCostModel/EnvironmentCostModel.tsx @@ -13,7 +13,7 @@ const EnvironmentCostModel = ({ resourceId, hourlyPrice, isLoadingProps = {} }) const isManageResourcesAllowed = useIsAllowed({ entityType: SCOPE_TYPES.RESOURCE, entityId: resourceId, - requiredActions: ["MANAGE_RESOURCES"] + requiredActions: ["MANAGE_RESOURCES"], }); const openSideModal = useOpenSideModal(); @@ -28,7 +28,7 @@ const EnvironmentCostModel = ({ resourceId, hourlyPrice, isLoadingProps = {} }) onClick={() => openSideModal(EnvironmentCostModelModal, { resourceId, hourlyPrice })} tooltip={{ show: true, - messageId: "edit" + messageId: "edit", }} /> )} diff --git a/ngui/ui/src/components/EnvironmentProperties/EnvironmentProperties.tsx b/ngui/ui/src/components/EnvironmentProperties/EnvironmentProperties.tsx index b0672003b..40da71855 100644 --- a/ngui/ui/src/components/EnvironmentProperties/EnvironmentProperties.tsx +++ b/ngui/ui/src/components/EnvironmentProperties/EnvironmentProperties.tsx @@ -17,13 +17,13 @@ const EnvironmentProperties = ({ environmentId, properties }) => {
    @@ -40,7 +40,7 @@ const EnvironmentProperties = ({ environmentId, properties }) => {
    )} diff --git a/ngui/ui/src/components/Environments/Environments.tsx b/ngui/ui/src/components/Environments/Environments.tsx index b34afaaf1..0863c3d47 100644 --- a/ngui/ui/src/components/Environments/Environments.tsx +++ b/ngui/ui/src/components/Environments/Environments.tsx @@ -52,7 +52,7 @@ const ButtonsGroupWithLabel = ({ labelId, buttons, activeButtonIndex, isMobile } const ENVIRONMENTS_VIEWS = Object.freeze({ TABLE: "table", - CALENDAR: "calendar" + CALENDAR: "calendar", }); const ENVIRONMENTS_VIEW_QUERY_PARAMETER = "view"; @@ -65,7 +65,7 @@ const Environments = ({ onUpdateActivity, entityId, isLoadingProps = {}, - startEnvironmentsTour + startEnvironmentsTour, }) => { const isMobile = useIsDownMediaQuery("sm"); const isTourAvailableForCurrentBreakpoint = useIsTourAvailableForCurrentBreakpoint(); @@ -75,7 +75,7 @@ const Environments = ({ title: { messageId: "environments", dataTestId: "lbl_environments", - dataProductTourId: ENVIRONMENTS_TOUR_IDS.HEADER + dataProductTourId: ENVIRONMENTS_TOUR_IDS.HEADER, }, items: [ { @@ -84,18 +84,18 @@ const Environments = ({ action: startEnvironmentsTour, tooltip: { show: true, - value: }} /> + value: }} />, }, show: isTourAvailableForCurrentBreakpoint, - type: "iconButton" - } - ] + type: "iconButton", + }, + ], }; const { [ENVIRONMENTS_STATUS_QUERY_PARAMETER]: filterByStatusQuery, [ENVIRONMENTS_ACCESS_QUERY_PARAMETER]: accessGrantedQuery, - [ENVIRONMENTS_VIEW_QUERY_PARAMETER]: view + [ENVIRONMENTS_VIEW_QUERY_PARAMETER]: view, } = getSearchParams(); const [showAccessGranted, setShowAccessGranted] = useState(() => accessGrantedQuery ?? true); @@ -114,7 +114,7 @@ const Environments = ({ updateSearchParams({ [ENVIRONMENTS_STATUS_QUERY_PARAMETER]: activeStatusFilter, [ENVIRONMENTS_ACCESS_QUERY_PARAMETER]: showAccessGranted, - [ENVIRONMENTS_VIEW_QUERY_PARAMETER]: activeViewFilter + [ENVIRONMENTS_VIEW_QUERY_PARAMETER]: activeViewFilter, }); }, [activeStatusFilter, activeViewFilter, showAccessGranted]); @@ -127,7 +127,7 @@ const Environments = ({ const environmentsWithBookingPermissionIds = useFilterByPermissions({ entitiesIds: environments.map(({ id }) => id), entitiesType: SCOPE_TYPES.RESOURCE, - permissions: ["BOOK_ENVIRONMENTS"] + permissions: ["BOOK_ENVIRONMENTS"], }); const filteredEnvironments = useMemo(() => { @@ -143,7 +143,7 @@ const Environments = ({ ({ [ENVIRONMENTS_STATUS_FILTERS.UNAVAILABLE]: !environment.active, [ENVIRONMENTS_STATUS_FILTERS.AVAILABLE]: environment.active && !getActiveBooking(environment, nowSecondsTimestamp), - [ENVIRONMENTS_STATUS_FILTERS.IN_USE]: environment.active && !!getActiveBooking(environment, nowSecondsTimestamp) + [ENVIRONMENTS_STATUS_FILTERS.IN_USE]: environment.active && !!getActiveBooking(environment, nowSecondsTimestamp), })[activeStatusFilter] ?? true ) .filter((environment) => (showAccessGranted ? environmentsWithBookingPermissionIds.includes(environment.id) : true)); @@ -155,7 +155,7 @@ const Environments = ({ id: filter, messageId: filter, action: () => setActiveViewFilter(filter), - dataTestId: `filter_${filter}_access` + dataTestId: `filter_${filter}_access`, })); const activeViewIndex = viewButtonsGroup.findIndex((button) => button.id === activeViewFilter); @@ -242,7 +242,7 @@ const Environments = ({ position="bottom" alertProps={{ messageId: "environmentsDescription", - messageDataTestId: "p_environments_list" + messageDataTestId: "p_environments_list", }} /> diff --git a/ngui/ui/src/components/Environments/EnvironmentsMocked.tsx b/ngui/ui/src/components/Environments/EnvironmentsMocked.tsx index f061e93bd..f24612097 100644 --- a/ngui/ui/src/components/Environments/EnvironmentsMocked.tsx +++ b/ngui/ui/src/components/Environments/EnvironmentsMocked.tsx @@ -16,15 +16,15 @@ const liveDemoData = [ { id: "5dcc90a7-8923-4530-9fdd-891ea66ae1d1", name: "Rule for Environment_1629717445", - pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd" - } + pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd", + }, ], first_seen: 1629676800, tags: {}, env_properties: { [ENVIRONMENT_SOFTWARE_FIELD]: "SunWare 1.3.423-integration", [ENVIRONMENT_JIRA_TICKETS_FIELD]: - "[NGUI-1242](https://jira.com.example/NGUI-1242) \n[NGUI-3214](jira.com.example/NGUI-3214)" + "[NGUI-1242](https://jira.com.example/NGUI-1242) \n[NGUI-3214](jira.com.example/NGUI-3214)", }, shareable: true, created_at: 1629787458, @@ -41,9 +41,9 @@ const liveDemoData = [ released_at: 0, acquired_by: { id: "58f99e3b-a480-4e12-944d-d0d91b260407", - name: "William Williams" - } - } + name: "William Williams", + }, + }, ], id: "efd9cb03-5e14-4222-bc59-2e55dfaff985", meta: {}, @@ -55,7 +55,7 @@ const liveDemoData = [ cloud_account_name: "Environment", cloud_account_type: "environment", pool_name: "Environment", - pool_purpose: "budget" + pool_purpose: "budget", }, { name: "feature-1", @@ -71,15 +71,15 @@ const liveDemoData = [ { id: "5dcc90a7-8923-4530-9fdd-891ea66ae1d1", name: "Rule for Environment_1629717445", - pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd" - } + pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd", + }, ], first_seen: 1629676800, tags: {}, shareable: true, env_properties: { [ENVIRONMENT_SOFTWARE_FIELD]: "SunWare 1.3.232-hotfix/support-fix", - [ENVIRONMENT_JIRA_TICKETS_FIELD]: "[TCS-2214](https://jira.com.example/TCS-2214)" + [ENVIRONMENT_JIRA_TICKETS_FIELD]: "[TCS-2214](https://jira.com.example/TCS-2214)", }, created_at: 1629787513, last_seen: 1632896806, @@ -95,9 +95,9 @@ const liveDemoData = [ released_at: 0, acquired_by: { id: "58f99e3b-a480-4e12-944d-d0d91b260407", - name: "William Williams" - } - } + name: "William Williams", + }, + }, ], id: "6b9a6d53-5131-4431-a0b8-8077ca713914", meta: {}, @@ -109,7 +109,7 @@ const liveDemoData = [ cloud_account_name: "Environment", cloud_account_type: "environment", pool_name: "Environment", - pool_purpose: "budget" + pool_purpose: "budget", }, { name: "dev-2", @@ -125,8 +125,8 @@ const liveDemoData = [ { id: "5dcc90a7-8923-4530-9fdd-891ea66ae1d1", name: "Rule for Environment_1629717445", - pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd" - } + pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd", + }, ], first_seen: 1629676800, tags: {}, @@ -134,7 +134,7 @@ const liveDemoData = [ env_properties: { [ENVIRONMENT_SOFTWARE_FIELD]: "SunWare 1.3.424-feature/sunrise_control", [ENVIRONMENT_JIRA_TICKETS_FIELD]: - "[TCS-1674](https://jira.com.example/TCS-1674) \n[TCS-2161](https://jira.com.example/TCS-2161)" + "[TCS-1674](https://jira.com.example/TCS-1674) \n[TCS-2161](https://jira.com.example/TCS-2161)", }, created_at: 1629787475, last_seen: 1632896806, @@ -150,8 +150,8 @@ const liveDemoData = [ released_at: 1633023063, acquired_by: { id: "58f99e3b-a480-4e12-944d-d0d91b260407", - name: "William Williams" - } + name: "William Williams", + }, }, { deleted_at: 0, @@ -163,9 +163,9 @@ const liveDemoData = [ released_at: 1633970896, acquired_by: { id: "58f99e3b-a480-4e12-944d-d0d91b260407", - name: "William Williams" - } - } + name: "William Williams", + }, + }, ], id: "b4053a50-13ab-4d7d-8279-537a2e5a5614", meta: {}, @@ -177,7 +177,7 @@ const liveDemoData = [ cloud_account_name: "Environment", cloud_account_type: "environment", pool_name: "Environment", - pool_purpose: "budget" + pool_purpose: "budget", }, { name: "pre-release", @@ -193,15 +193,15 @@ const liveDemoData = [ { id: "5dcc90a7-8923-4530-9fdd-891ea66ae1d1", name: "Rule for Environment_1629717445", - pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd" - } + pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd", + }, ], first_seen: 1629676800, tags: {}, shareable: true, env_properties: { [ENVIRONMENT_SOFTWARE_FIELD]: "SunWare 1.2.161-master", - [ENVIRONMENT_JIRA_TICKETS_FIELD]: "[QA-617](https://jira.com.example/QA-617)" + [ENVIRONMENT_JIRA_TICKETS_FIELD]: "[QA-617](https://jira.com.example/QA-617)", }, created_at: 1629787492, last_seen: 1632896806, @@ -217,7 +217,7 @@ const liveDemoData = [ cloud_account_name: "Environment", cloud_account_type: "environment", pool_name: "Environment", - pool_purpose: "budget" + pool_purpose: "budget", }, { name: "feature-2", @@ -233,8 +233,8 @@ const liveDemoData = [ { id: "5dcc90a7-8923-4530-9fdd-891ea66ae1d1", name: "Rule for Environment_1629717445", - pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd" - } + pool_id: "3f6aa54c-bc90-4145-b351-34284bd5c4cd", + }, ], first_seen: 1629676800, tags: {}, @@ -242,7 +242,7 @@ const liveDemoData = [ env_properties: { [ENVIRONMENT_SOFTWARE_FIELD]: "SunWare 1.2.162-master", [ENVIRONMENT_JIRA_TICKETS_FIELD]: - "[NGUI-2617](https://jira.com.example/NGUI-2617) \n[NGUI-2600](https://jira.com.example/NGUI-2600) \n[NGUI-2620](https://jira.com.example/NGUI-2620) \n[TCS-1355](https://jira.com.example/TCS-1355) \n[TCS-1558](https://jira.com.example/TCS-1558)" + "[NGUI-2617](https://jira.com.example/NGUI-2617) \n[NGUI-2600](https://jira.com.example/NGUI-2600) \n[NGUI-2620](https://jira.com.example/NGUI-2620) \n[TCS-1355](https://jira.com.example/TCS-1355) \n[TCS-1558](https://jira.com.example/TCS-1558)", }, created_at: 1629787527, last_seen: 1632896806, @@ -258,8 +258,8 @@ const liveDemoData = [ cloud_account_name: "Environment", cloud_account_type: "environment", pool_name: "Environment", - pool_purpose: "budget" - } + pool_purpose: "budget", + }, ]; const EnvironmentsMocked = () => ; diff --git a/ngui/ui/src/components/EnvironmentsTable/EnvironmentsTable.tsx b/ngui/ui/src/components/EnvironmentsTable/EnvironmentsTable.tsx index 4bf60c6d1..c231f938e 100644 --- a/ngui/ui/src/components/EnvironmentsTable/EnvironmentsTable.tsx +++ b/ngui/ui/src/components/EnvironmentsTable/EnvironmentsTable.tsx @@ -19,7 +19,7 @@ import { BookEnvironmentModal, DeleteEnvironmentBookingModal, DeleteEnvironmentModal, - ReleaseEnvironmentModal + ReleaseEnvironmentModal, } from "components/SideModalManager/SideModals"; import Table from "components/Table"; import TableCellActions from "components/TableCellActions"; @@ -96,7 +96,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = const { isGetEnvironmentsLoading = false, isUpdateEnvironmentLoading = false, - isGetResourceAllowedActionsLoading = false + isGetResourceAllowedActionsLoading = false, } = isLoadingProps; const tableData = useMemo(() => data, [data]); @@ -109,7 +109,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = color: "error", requiredActions: ["MANAGE_RESOURCES"], dataTestId: `btn_delete_${index}`, - action: () => openSideModal(DeleteEnvironmentModal, { id, name }) + action: () => openSideModal(DeleteEnvironmentModal, { id, name }), }); const getActivityAction = ({ id, isActive }, index) => { @@ -118,13 +118,13 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = key: "deactivate", messageId: "deactivate", dataTestId: "btn_deactivate", - color: "error" + color: "error", } : { key: "activate", messageId: "activate", dataTestId: "btn_activate", - color: "success" + color: "success", }; return { key, @@ -140,8 +140,8 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = disabled: isRestricted, tooltip: { show: isRestricted, - value: restrictionReasonMessage - } + value: restrictionReasonMessage, + }, }; }; @@ -161,7 +161,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = allBookings, index, isSshRequired, - isEnvironmentAvailable + isEnvironmentAvailable, }) => ({ key: "book", messageId: "book", @@ -174,11 +174,11 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = upcomingBookings, allBookings, isSshRequired, - isEnvironmentAvailable + isEnvironmentAvailable, }); }, dataTestId: `btn_book_${index}`, - requiredActions: ["BOOK_ENVIRONMENTS"] + requiredActions: ["BOOK_ENVIRONMENTS"], }); const getReleaseAction = (activeBooking, index) => ({ @@ -188,10 +188,10 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = action: () => openSideModal(ReleaseEnvironmentModal, { bookingId: activeBooking.id, - bookedSince: activeBooking.acquired_since + bookedSince: activeBooking.acquired_since, }), dataTestId: `btn_release_${index}`, - requiredActions: ["MANAGE_RESOURCES", "MANAGE_OWN_RESOURCES"] + requiredActions: ["MANAGE_RESOURCES", "MANAGE_OWN_RESOURCES"], }); const getDeleteBookingAction = (id, index) => ({ @@ -201,7 +201,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = color: "error", action: () => openSideModal(DeleteEnvironmentBookingModal, { bookingId: id }), dataTestId: `btn_delete_booking_${index}`, - requiredActions: ["MANAGE_RESOURCES", "MANAGE_OWN_RESOURCES"] + requiredActions: ["MANAGE_RESOURCES", "MANAGE_OWN_RESOURCES"], }); const defaultColumns = [ @@ -217,9 +217,9 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = cell: ({ row: { original, index } }) => renderEnvironmentCell({ resource: original, - index + index, }), - defaultSort: "asc" + defaultSort: "asc", }, { header: ( @@ -236,7 +236,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = name={original.pool_name} type={original.pool_purpose} /> - ) + ), }, { header: ( @@ -274,7 +274,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = index: rowIndex, allBookings: shareableBookings, isSshRequired, - isEnvironmentAvailable: !activeBooking + isEnvironmentAvailable: !activeBooking, }) : null; @@ -309,7 +309,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = )} ); - } + }, }, { header: ( @@ -322,13 +322,13 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = enableHiding: false, enableSorting: false, style: { - minWidth: "200px" + minWidth: "200px", }, cell: ({ cell, row: { - original: { id } - } + original: { id }, + }, }) => { const value = cell.getValue() ?? []; @@ -346,7 +346,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = id: bookingId, acquired_since: acquiredSince, released_at: releasedAt, - resource_id: resourceId + resource_id: resourceId, } = upcomingBooking; return ( @@ -365,8 +365,8 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = })} ); - } - } + }, + }, ]; const envPropertiesColumns = getUniqueSortedEnvironmentProperties(tableData).map((field) => ({ @@ -376,7 +376,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = columnSelector: { accessor: `env_properties.${field}`, title: field, - dataTestId: `btn_toggle_column_${field}` + dataTestId: `btn_toggle_column_${field}`, }, dataProductTourId: getProductTourIdForDynamicField(field), style: { @@ -385,7 +385,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = * The maximum width is set to prevent the table from becoming too wide when the content is long * The value of 550 is selected to match the maximum width based on the environment property name length, which is limited to 64 characters */ - maxWidth: 550 + maxWidth: 550, }, cell: ({ cell }) => { const value = cell.getValue(); @@ -399,7 +399,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = {cell.getValue()} ); - } + }, })); return [ @@ -420,8 +420,8 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = entityId={id} items={[...(isEnvironment ? getManuallyCreatedEnvironmentActions({ id, name, isActive }, index) : [])]} /> - ) - } + ), + }, ]; }, [ entityId, @@ -431,7 +431,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = onUpdateActivity, openSideModal, restrictionReasonMessage, - tableData + tableData, ]); return isGetEnvironmentsLoading ? ( @@ -453,10 +453,10 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = dataTestId: "btn_add", dataProductTourId: ENVIRONMENTS_TOUR_IDS.ADD_BUTTON, requiredActions: ["MANAGE_RESOURCES"], - isLoading: isGetResourceAllowedActionsLoading - } - ] - } + isLoading: isGetResourceAllowedActionsLoading, + }, + ], + }, }} data={tableData} columns={columns} @@ -466,7 +466,7 @@ const EnvironmentsTable = ({ data, onUpdateActivity, entityId, isLoadingProps = dataTestIds={{ searchInput: "input_search", searchButton: "btn_search", - deleteSearchButton: "btn_delete_search" + deleteSearchButton: "btn_delete_search", }} localization={{ emptyMessageId: "noEnvironments" }} /> diff --git a/ngui/ui/src/components/Error/Error.tsx b/ngui/ui/src/components/Error/Error.tsx index b6ba6c26d..0536ae9f9 100644 --- a/ngui/ui/src/components/Error/Error.tsx +++ b/ngui/ui/src/components/Error/Error.tsx @@ -11,7 +11,7 @@ const Error = ({ messageId }) => ( left: 0, display: "flex", alignItems: "center", - pointerEvents: "none" + pointerEvents: "none", }} > diff --git a/ngui/ui/src/components/Events/Events.tsx b/ngui/ui/src/components/Events/Events.tsx index d3847eb18..2ce5eed59 100644 --- a/ngui/ui/src/components/Events/Events.tsx +++ b/ngui/ui/src/components/Events/Events.tsx @@ -39,7 +39,7 @@ const Picker = ({ onApply }) => { onApply={(startDate, endDate) => onApply({ timeStart: startDate, - timeEnd: endDate + timeEnd: endDate, }) } notSetMessageId="latest" @@ -54,26 +54,26 @@ const EVENT_LEVEL_ITEMS = [ name: "all", value: EVENT_LEVEL.ALL, type: "text", - dataTestId: "event_lvl_all" + dataTestId: "event_lvl_all", }, { name: "info", value: EVENT_LEVEL.INFO, type: "text", - dataTestId: "event_lvl_info" + dataTestId: "event_lvl_info", }, { name: "warning", value: EVENT_LEVEL.WARNING, type: "text", - dataTestId: "event_lvl_warning" + dataTestId: "event_lvl_warning", }, { name: "error", value: EVENT_LEVEL.ERROR, type: "text", - dataTestId: "event_lvl_error" - } + dataTestId: "event_lvl_error", + }, ]; const DEFAULT_EVENT_LEVEL = EVENT_LEVEL_ITEMS.find(({ value: itemValue }) => itemValue === EVENT_LEVEL.ALL); @@ -86,7 +86,7 @@ const EventLevelSelector = ({ eventLevel, onApply }) => { return { name, - value + value, }; }; @@ -96,7 +96,7 @@ const EventLevelSelector = ({ eventLevel, onApply }) => { label={} onChange={({ value }) => onApply({ - level: value + level: value, }) } items={EVENT_LEVEL_ITEMS} @@ -109,7 +109,7 @@ const getEventsGroupedByTime = (events) => const groupKey = formatUTC(event.time); return { ...resultObject, - [groupKey]: [...(resultObject[groupKey] || []), event] + [groupKey]: [...(resultObject[groupKey] || []), event], }; }, {}); @@ -118,7 +118,7 @@ const EventIcon = ({ eventLevel }) => [EVENT_LEVEL.INFO]: , [EVENT_LEVEL.WARNING]: , [EVENT_LEVEL.ERROR]: , - [EVENT_LEVEL.DEBUG]: + [EVENT_LEVEL.DEBUG]: , })[eventLevel]; const Events = ({ @@ -129,13 +129,13 @@ const Events = ({ applyFilter, events, isLoading = false, - isFetchingMore = false + isFetchingMore = false, }) => { const actionBarDefinition = { title: { messageId: "events", - dataTestId: "lbl_events" - } + dataTestId: "lbl_events", + }, }; const [expanded, setExpanded] = useState(""); @@ -166,12 +166,12 @@ const Events = ({ accessorKey: "name", cell: ({ row: { original } }) =>
    {original.name}
    , style: { - whiteSpace: "nowrap" - } + whiteSpace: "nowrap", + }, }, { - accessorKey: "value" - } + accessorKey: "value", + }, ], [] ); @@ -187,30 +187,30 @@ const Events = ({ { name: , dataTestId: "lbl_date", - value: formatEventTime(event.time) + value: formatEventTime(event.time), }, { name: , dataTestId: "lbl_object_name", - value: event.object_name + value: event.object_name, }, { name: , dataTestId: "lbl_object_type", - value: event.object_type + value: event.object_type, }, { name: , dataTestId: "lbl_description", - value: event.description - } + value: event.description, + }, ]; // adding resolve by at second row if (event.acknowledged_user) { eventDataRaw.splice(1, 0, { name: , - value: event.acknowledged_user + value: event.acknowledged_user, }); } @@ -225,10 +225,10 @@ const Events = ({ localization={{ emptyMessageId: "noEvents" }} withHeader={false} dataTestIds={{ - container: "div_event_details" + container: "div_event_details", }} counters={{ - show: false + show: false, }} /> ) : null; @@ -314,7 +314,7 @@ const Events = ({ checked={includeDebugEvents} onChange={() => { applyFilter({ - includeDebugEvents: !includeDebugEvents + includeDebugEvents: !includeDebugEvents, }); }} /> @@ -329,21 +329,21 @@ const Events = ({ justifyContent="flex-end" flexWrap={{ sm: "nowrap", - xs: "wrap" + xs: "wrap", }} > { applyFilter({ - descriptionLike: text + descriptionLike: text, }); }} initialSearchText={descriptionLike} @@ -354,8 +354,8 @@ const Events = ({ sx={{ flexGrow: { sm: 0, - xs: 1 - } + xs: 1, + }, }} > diff --git a/ngui/ui/src/components/EventsOverviewList/EventsOverviewList.styles.ts b/ngui/ui/src/components/EventsOverviewList/EventsOverviewList.styles.ts index 95fcb3287..6811b7c52 100644 --- a/ngui/ui/src/components/EventsOverviewList/EventsOverviewList.styles.ts +++ b/ngui/ui/src/components/EventsOverviewList/EventsOverviewList.styles.ts @@ -4,26 +4,26 @@ const useStyles = makeStyles()((theme) => ({ wrapper: { width: theme.spacing(40), [theme.breakpoints.up("sm")]: { - width: theme.spacing(64) - } + width: theme.spacing(64), + }, }, customContainer: { - textAlign: "center" + textAlign: "center", }, customTypography: { fontWeight: "bold", - fontSize: "1rem" + fontSize: "1rem", }, listContainer: { paddingBottom: 0, - paddingTop: 0 + paddingTop: 0, }, buttonLink: { "&:hover": { - textDecoration: "none" + textDecoration: "none", }, - color: "black" - } + color: "black", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/EventsOverviewList/EventsOverviewList.tsx b/ngui/ui/src/components/EventsOverviewList/EventsOverviewList.tsx index 1bc665920..ddb6d96af 100644 --- a/ngui/ui/src/components/EventsOverviewList/EventsOverviewList.tsx +++ b/ngui/ui/src/components/EventsOverviewList/EventsOverviewList.tsx @@ -37,7 +37,7 @@ const EventsOverviewList = ({ events, isLoading }) => { - {} + diff --git a/ngui/ui/src/components/EventsOverviewListItem/EventsOverviewListItem.styles.ts b/ngui/ui/src/components/EventsOverviewListItem/EventsOverviewListItem.styles.ts index f387a0ea8..6e327d963 100644 --- a/ngui/ui/src/components/EventsOverviewListItem/EventsOverviewListItem.styles.ts +++ b/ngui/ui/src/components/EventsOverviewListItem/EventsOverviewListItem.styles.ts @@ -2,33 +2,33 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ listItem: { - padding: "0" + padding: "0", }, warning: { - backgroundColor: theme.palette.warning.main + backgroundColor: theme.palette.warning.main, }, error: { - backgroundColor: theme.palette.error.main + backgroundColor: theme.palette.error.main, }, success: { - backgroundColor: theme.palette.success.main + backgroundColor: theme.palette.success.main, }, info: { - backgroundColor: theme.palette.info.main + backgroundColor: theme.palette.info.main, }, level: { width: ".5rem", - minHeight: "100%" + minHeight: "100%", }, title: { - fontWeight: "bold" + fontWeight: "bold", }, timeAgo: { - fontWeight: "bold" + fontWeight: "bold", }, description: { - wordBreak: "break-word" - } + wordBreak: "break-word", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/EventsOverviewListItem/EventsOverviewListItem.tsx b/ngui/ui/src/components/EventsOverviewListItem/EventsOverviewListItem.tsx index 6b8bb9d3b..bf3bd8ef4 100644 --- a/ngui/ui/src/components/EventsOverviewListItem/EventsOverviewListItem.tsx +++ b/ngui/ui/src/components/EventsOverviewListItem/EventsOverviewListItem.tsx @@ -19,14 +19,14 @@ const EventsOverviewListItem = (props) => {
    - + {title} {sliceByLimitWithEllipsis(description, 350)} diff --git a/ngui/ui/src/components/ExcludePoolsFromRecommendation/ExcludePoolsFromRecommendation.tsx b/ngui/ui/src/components/ExcludePoolsFromRecommendation/ExcludePoolsFromRecommendation.tsx index d5c4ef619..4e22c9da5 100644 --- a/ngui/ui/src/components/ExcludePoolsFromRecommendation/ExcludePoolsFromRecommendation.tsx +++ b/ngui/ui/src/components/ExcludePoolsFromRecommendation/ExcludePoolsFromRecommendation.tsx @@ -34,14 +34,14 @@ const ExcludePoolsFromRecommendation = ({ recommendationType, onSuccess }: Exclu const onSubmit = () => { const newOptions = { ...options, - excluded_pools: selectedPools + excluded_pools: selectedPools, }; updateRecommendationOptions( recommendationType, { settingType: SETTINGS_TYPE_SUCCESS_MESSAGE.EXCLUSIONS, - options: newOptions + options: newOptions, }, onSuccess ); @@ -71,7 +71,7 @@ const ExcludePoolsFromRecommendation = ({ recommendationType, onSuccess }: Exclu disabled={!isChangeSettingsAllowed} tooltip={{ show: !isChangeSettingsAllowed, - messageId: "youDoNotHaveEnoughPermissions" + messageId: "youDoNotHaveEnoughPermissions", }} type="submit" onClick={onSubmit} diff --git a/ngui/ui/src/components/ExcludePoolsFromRecommendation/ExcludedPoolsTable.tsx b/ngui/ui/src/components/ExcludePoolsFromRecommendation/ExcludedPoolsTable.tsx index 2cf6fccc4..c9737adad 100644 --- a/ngui/ui/src/components/ExcludePoolsFromRecommendation/ExcludedPoolsTable.tsx +++ b/ngui/ui/src/components/ExcludePoolsFromRecommendation/ExcludedPoolsTable.tsx @@ -21,7 +21,7 @@ const ExcludedPoolsTable = ({ isChangeSettingsAllowed, isLoading = false, selectedPools, - onSelectedPoolChange + onSelectedPoolChange, }: ExcludedPoolsTableType) => { const tableData = useMemo(() => { const excludedPoolsIds = Object.keys(selectedPools); @@ -36,8 +36,8 @@ const ExcludedPoolsTable = ({ cell: ({ row: { original } }) => ( ), - defaultSort: "asc" - } + defaultSort: "asc", + }, ], [] ); @@ -45,7 +45,7 @@ const ExcludedPoolsTable = ({ const getRowSelectionProps = () => ({ withSelection: true, rowSelection: selectedPools, - onRowSelectionChange: (pools: SelectedPoolType) => onSelectedPoolChange(pools) + onRowSelectionChange: (pools: SelectedPoolType) => onSelectedPoolChange(pools), }); return isLoading ? ( @@ -55,7 +55,7 @@ const ExcludedPoolsTable = ({ data={tableData} columns={columns} localization={{ - emptyMessageId: "noExclusions" + emptyMessageId: "noExclusions", }} withSearch pageSize={50} diff --git a/ngui/ui/src/components/ExecutionBreakdown/Chart/Chart.tsx b/ngui/ui/src/components/ExecutionBreakdown/Chart/Chart.tsx index 83978824c..353c20bac 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/Chart/Chart.tsx +++ b/ngui/ui/src/components/ExecutionBreakdown/Chart/Chart.tsx @@ -21,7 +21,7 @@ const Chart = ({ breakdownLines, highlightedStage, milestonesLine, - colors + colors, }) => { const renderMilestonesLayer = useRenderMilestonesLayer(); const renderStagesLayer = useRenderStagesLayer(); @@ -40,12 +40,12 @@ const Chart = ({ const filteredMilestonesLine = { ...milestonesLine, - data: filterLineData(milestonesLine.data) + data: filterLineData(milestonesLine.data), }; const filteredBreakdownLines = breakdownLines.map((line) => ({ ...line, - data: filterLineData(line.data) + data: filterLineData(line.data), })); const filteredLines = [filteredMilestonesLine, ...filteredBreakdownLines].filter(({ data }) => !isEmptyArray(data)); @@ -55,18 +55,18 @@ const Chart = ({ data={filteredLines} {...(isEmptyArray(breakdownLines) ? { - emptyMessageId: "noDataToDisplay" + emptyMessageId: "noDataToDisplay", } : { emptyMessageId: "noDataIsAvailableWithinTheSelectedBrushRange", - emptyMessageValues: { br:
    } + emptyMessageValues: { br:
    }, })} xScale={{ type: "linear", - min: "auto" + min: "auto", }} yScale={{ - max: 1 + max: 1, }} renderTooltipBody={({ slice: { points: allPoints = [] } = {} }) => { const { milestonePoints = [], ...restPoints } = createGroupsObjectFromArray(allPoints, (point) => @@ -134,7 +134,7 @@ const Chart = ({ }} colors={colors} style={{ - margin: CHART_MARGIN_STYLES + margin: CHART_MARGIN_STYLES, }} overlayLayers={[ showMilestones @@ -142,8 +142,8 @@ const Chart = ({ key: "milestonesLayer", renderCanvasContent: renderMilestonesLayer({ milestones: filteredMilestonesGroupedByTimeTuples, - shouldShowMilestoneLabels - }) + shouldShowMilestoneLabels, + }), } : undefined, highlightedStage @@ -151,28 +151,28 @@ const Chart = ({ key: "stagesHighlightLayer", renderCanvasContent: renderStagesLayer({ highlightedStage, - withHeader: true - }) + withHeader: true, + }), } - : undefined + : undefined, ].filter(Boolean)} axisLeft={ [1, 2].includes(breakdownLines.length) ? { - format: breakdownLines[0].formatAxis + format: breakdownLines[0].formatAxis, } : null } axisRight={ breakdownLines.length === 2 ? { - format: breakdownLines[1].formatAxis + format: breakdownLines[1].formatAxis, } : null } axisBottom={{ format: (value) => formatSecondsToHHMMSS(value), - formatString: (value) => formatSecondsToHHMMSS(value) + formatString: (value) => formatSecondsToHHMMSS(value), }} /> ); diff --git a/ngui/ui/src/components/ExecutionBreakdown/ChartContainer/ChartContainer.tsx b/ngui/ui/src/components/ExecutionBreakdown/ChartContainer/ChartContainer.tsx index 49d44d862..caae24390 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/ChartContainer/ChartContainer.tsx +++ b/ngui/ui/src/components/ExecutionBreakdown/ChartContainer/ChartContainer.tsx @@ -11,7 +11,7 @@ import ChartDataSelector from "../ChartDataSelector"; const CHART_X_MARGINS = { mr: { xs: 0, md: `${CHART_MARGIN_STYLES.right}px` }, - ml: { xs: 0, md: `${CHART_MARGIN_STYLES.left}px` } + ml: { xs: 0, md: `${CHART_MARGIN_STYLES.left}px` }, }; const BREAKDOWN_BY_QUERY_PARAMETER = "breakdownBy"; @@ -33,12 +33,12 @@ const ChartContainer = ({ selectedBreakdowns, onSelectedBreakdownsChange, name, - showMilestones + showMilestones, }) => { const breakdownLines = useMlBreakdownLines({ breakdown, breakdownConfig, - selectedBreakdowns + selectedBreakdowns, }); return ( @@ -49,7 +49,7 @@ const ChartContainer = ({ display: "flex", flexDirection: "row", justifyContent: "flex-start", - alignItems: "center" + alignItems: "center", }} > {name} diff --git a/ngui/ui/src/components/ExecutionBreakdown/ChartDataSelector/ChartDataSelector.tsx b/ngui/ui/src/components/ExecutionBreakdown/ChartDataSelector/ChartDataSelector.tsx index 5d35017c4..48021153a 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/ChartDataSelector/ChartDataSelector.tsx +++ b/ngui/ui/src/components/ExecutionBreakdown/ChartDataSelector/ChartDataSelector.tsx @@ -12,7 +12,7 @@ const ChartDataSelector = ({ selectedBreakdowns, colorsMap, breakdownConfig, onC const breakdownsColored = breakdownConfig .map((item) => ({ color: colorsMap[item.name] || theme.palette.common.black, - ...item + ...item, })) .sort(({ isNotImplemented: a = false }, { isNotImplemented: b = false }) => a - b); diff --git a/ngui/ui/src/components/ExecutionBreakdown/ChartLayers/useRenderMilestonesLayer.ts b/ngui/ui/src/components/ExecutionBreakdown/ChartLayers/useRenderMilestonesLayer.ts index 50e90ffdd..0fd791932 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/ChartLayers/useRenderMilestonesLayer.ts +++ b/ngui/ui/src/components/ExecutionBreakdown/ChartLayers/useRenderMilestonesLayer.ts @@ -40,7 +40,7 @@ export const useRenderMilestonesLayer = () => { milestoneX + SPACING_BETWEEN_MILESTONE_LINE_AND_NAME + milestoneNameWidth > linesAreaRectangle.xEnd ? milestoneX - SPACING_BETWEEN_MILESTONE_LINE_AND_NAME - milestoneNameWidth : milestoneX + SPACING_BETWEEN_MILESTONE_LINE_AND_NAME, - y: linesAreaRectangle.yStart + namesCounter * Y_AXIS_SHIFT_COEFFICIENT + y: linesAreaRectangle.yStart + namesCounter * Y_AXIS_SHIFT_COEFFICIENT, }; ctx.fillText(milestoneName, position.x, position.y); diff --git a/ngui/ui/src/components/ExecutionBreakdown/DashboardControls/DashboardControls.tsx b/ngui/ui/src/components/ExecutionBreakdown/DashboardControls/DashboardControls.tsx index 09b76630a..3ee93a40a 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/DashboardControls/DashboardControls.tsx +++ b/ngui/ui/src/components/ExecutionBreakdown/DashboardControls/DashboardControls.tsx @@ -17,7 +17,7 @@ const DashboardControls = ({ createDashboard, removeDashboard, isPublicRun, - isLoadingProps = {} + isLoadingProps = {}, }) => { const isOwnedDashboard = currentEmployeeId === dashboard.ownerId; @@ -28,7 +28,7 @@ const DashboardControls = ({ dashboard, updateDashboard, isOwnedDashboard, - createDashboard + createDashboard, }); }; diff --git a/ngui/ui/src/components/ExecutionBreakdown/DashboardControls/NameSelector.tsx b/ngui/ui/src/components/ExecutionBreakdown/DashboardControls/NameSelector.tsx index f6d10e484..92e6af23f 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/DashboardControls/NameSelector.tsx +++ b/ngui/ui/src/components/ExecutionBreakdown/DashboardControls/NameSelector.tsx @@ -42,7 +42,7 @@ const NameSelector = ({ dashboards, currentEmployeeId, selected, onChange, saved ? { placement: "end", IconComponent: ShareOutlinedIcon, - tooltipTitle: + tooltipTitle: , } : undefined; @@ -60,7 +60,7 @@ const NameSelector = ({ dashboards, currentEmployeeId, selected, onChange, saved ? { placement: "end", IconComponent: ShareOutlinedIcon, - tooltipTitle: + tooltipTitle: , } : undefined; diff --git a/ngui/ui/src/components/ExecutionBreakdown/ExecutionBreakdown.tsx b/ngui/ui/src/components/ExecutionBreakdown/ExecutionBreakdown.tsx index 211c52d1d..b74b0b8db 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/ExecutionBreakdown.tsx +++ b/ngui/ui/src/components/ExecutionBreakdown/ExecutionBreakdown.tsx @@ -33,7 +33,7 @@ const MILESTONES_LINE_ID = "milestones"; const MUI_GRID_VALUES = Object.freeze({ [GRID_TYPES.ONE_COLUMN]: 12, [GRID_TYPES.TWO_COLUMN]: 6, - [GRID_TYPES.THREE_COLUMNS]: 4 + [GRID_TYPES.THREE_COLUMNS]: 4, }); const GridButton = ({ gridType, onClick }) => ( @@ -67,7 +67,7 @@ const ExecutionBreakdown = ({ stages, milestones, reachedGoals = {}, - taskId + taskId, }) => { const milestonesGroupedByTimeTuples = getMilestoneTuplesGroupedByTime(milestones); @@ -87,9 +87,9 @@ const ExecutionBreakdown = ({ formatDigitalUnit({ value, baseUnit: IEC_UNITS.MEBIBYTE, - maximumFractionDigits: 2 + maximumFractionDigits: 2, }), - unit: BREAKDOWN_LINE_UNIT.MEBIBYTE + unit: BREAKDOWN_LINE_UNIT.MEBIBYTE, }, { name: "host_cpu", @@ -98,9 +98,9 @@ const ExecutionBreakdown = ({ formatValue: (value) => , formatAxis: (value) => intl.formatNumber(value / 100, { - format: "percentage2" + format: "percentage2", }), - unit: BREAKDOWN_LINE_UNIT.PERCENT + unit: BREAKDOWN_LINE_UNIT.PERCENT, }, { name: "process_cpu", @@ -109,9 +109,9 @@ const ExecutionBreakdown = ({ formatValue: (value) => , formatAxis: (value) => intl.formatNumber(value / 100, { - format: "percentage2" + format: "percentage2", }), - unit: BREAKDOWN_LINE_UNIT.PERCENT + unit: BREAKDOWN_LINE_UNIT.PERCENT, }, { name: "process_ram", @@ -122,9 +122,9 @@ const ExecutionBreakdown = ({ formatDigitalUnit({ value, baseUnit: IEC_UNITS.MEBIBYTE, - maximumFractionDigits: 2 + maximumFractionDigits: 2, }), - unit: BREAKDOWN_LINE_UNIT.MEBIBYTE + unit: BREAKDOWN_LINE_UNIT.MEBIBYTE, }, { name: "gpu_load", @@ -133,9 +133,9 @@ const ExecutionBreakdown = ({ formatValue: (value) => , formatAxis: (value) => intl.formatNumber(value / 100, { - format: "percentage2" + format: "percentage2", }), - unit: BREAKDOWN_LINE_UNIT.PERCENT + unit: BREAKDOWN_LINE_UNIT.PERCENT, }, { name: "gpu_memory_used", @@ -146,9 +146,9 @@ const ExecutionBreakdown = ({ formatDigitalUnit({ value, baseUnit: IEC_UNITS.MEBIBYTE, - maximumFractionDigits: 2 + maximumFractionDigits: 2, }), - unit: BREAKDOWN_LINE_UNIT.MEBIBYTE + unit: BREAKDOWN_LINE_UNIT.MEBIBYTE, }, { name: "disc_read", @@ -156,7 +156,7 @@ const ExecutionBreakdown = ({ renderBreakdownName: () => intl.formatMessage({ id: "diskRead" }), getPointValue: (data) => data.metrics?.disc_read ?? null, formatValue: (value) => value, - formatAxis: (value) => value + formatAxis: (value) => value, }, { name: "disc_write", @@ -164,7 +164,7 @@ const ExecutionBreakdown = ({ renderBreakdownName: () => intl.formatMessage({ id: "diskWrite" }), getPointValue: (data) => data.metrics?.disc_write ?? null, formatValue: (value) => value, - formatAxis: (value) => value + formatAxis: (value) => value, }, { name: "network_input", @@ -172,7 +172,7 @@ const ExecutionBreakdown = ({ renderBreakdownName: () => intl.formatMessage({ id: "networkReceive" }), getPointValue: (data) => data.metrics?.network_input ?? null, formatValue: (value) => value, - formatAxis: (value) => value + formatAxis: (value) => value, }, { name: "network_output", @@ -180,8 +180,8 @@ const ExecutionBreakdown = ({ renderBreakdownName: () => intl.formatMessage({ id: "networkSend" }), getPointValue: (data) => data.metrics?.network_output ?? null, formatValue: (value) => value, - formatAxis: (value) => value - } + formatAxis: (value) => value, + }, ], [intl] ); @@ -199,8 +199,8 @@ const ExecutionBreakdown = ({ formatDynamicFractionDigitsValue({ value, maximumFractionDigits: 2, - notation: "compact" - }) + notation: "compact", + }), })), [formatDynamicFractionDigitsValue, reachedGoals] ); @@ -223,7 +223,7 @@ const ExecutionBreakdown = ({ const colorsMap = { [MILESTONES_LINE_ID]: "transparent", - ...getColorsMap(breakdownNames, theme.palette.chart) + ...getColorsMap(breakdownNames, theme.palette.chart), }; const breakdownSeconds = Object.keys(breakdown).map(Number); @@ -236,8 +236,8 @@ const ExecutionBreakdown = ({ data: milestonesGroupedByTimeTuples.map(([time, milestoneNames]) => ({ x: Number(time), y: 0, - names: milestoneNames - })) + names: milestoneNames, + })), }; const openSideModal = useOpenSideModal(); @@ -253,7 +253,7 @@ const ExecutionBreakdown = ({ secondsTimeRange: xValuesRange, stages, milestones, - milestonesGroupedByTimeTuples + milestonesGroupedByTimeTuples, }); const getSelectedSegment = () => selectedSegment ?? xValuesRange; @@ -279,18 +279,18 @@ const ExecutionBreakdown = ({ enableTooltipSync, disableTooltipSync, updateGridType, - isLoadingProps + isLoadingProps, } = useTaskRunChartState({ organizationId, arceeToken, taskId, implementedMetricsBreakdownNames, breakdownNames, - isPublicRun + isPublicRun, }); const { - data: { charts, show_milestones: showMilestones, sync_tooltips: syncTooltips, grid_type: gridType } + data: { charts, show_milestones: showMilestones, sync_tooltips: syncTooltips, grid_type: gridType }, } = dashboard; const [mousePosition, setMousePosition] = useState(undefined); @@ -303,7 +303,7 @@ const ExecutionBreakdown = ({ display: "flex", alignItems: "flex-start", justifyContent: "space-between", - flexDirection: { md: "row", xs: "column" } + flexDirection: { md: "row", xs: "column" }, }} > @@ -347,7 +347,7 @@ const ExecutionBreakdown = ({ onClick={addChart} tooltip={{ show: true, - messageId: "addChart" + messageId: "addChart", }} /> { updateChartName(chartId, newName); - } + }, }) } selectedBreakdowns={breakdowns} diff --git a/ngui/ui/src/components/ExecutionBreakdown/TimerangeSlider/TimerangeSlider.tsx b/ngui/ui/src/components/ExecutionBreakdown/TimerangeSlider/TimerangeSlider.tsx index 7e0f98903..52e728a41 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/TimerangeSlider/TimerangeSlider.tsx +++ b/ngui/ui/src/components/ExecutionBreakdown/TimerangeSlider/TimerangeSlider.tsx @@ -31,8 +31,8 @@ const CustomMarkComponent = (props) => { opacity: 0.38, "&.MuiSlider-markActive": { opacity: 1, - backgroundColor: theme.palette.primary.dark - } + backgroundColor: theme.palette.primary.dark, + }, }} onMouseEnter={() => getMarkTooltipText()} className={className} @@ -53,10 +53,10 @@ const TimerangeSlider = ({ milestonesGroupedByTimeTuples, selectedSegment, setSe return ( chartsTimerangeMessage} diff --git a/ngui/ui/src/components/ExecutionBreakdown/utils.ts b/ngui/ui/src/components/ExecutionBreakdown/utils.ts index 4dae11ecc..a53bf9691 100644 --- a/ngui/ui/src/components/ExecutionBreakdown/utils.ts +++ b/ngui/ui/src/components/ExecutionBreakdown/utils.ts @@ -5,7 +5,7 @@ export const getMilestoneTuplesGroupedByTime = (milestones) => { const milestonesTuplesGroupedByTime = Object.entries(milestonesGroupedByTime).map((el) => [ Number(el[0]), - el[1].map(({ milestone }) => milestone) + el[1].map(({ milestone }) => milestone), ]); return milestonesTuplesGroupedByTime; diff --git a/ngui/ui/src/components/ExecutorLabel/ExecutorLabel.tsx b/ngui/ui/src/components/ExecutorLabel/ExecutorLabel.tsx index 3b3309670..843faea57 100644 --- a/ngui/ui/src/components/ExecutorLabel/ExecutorLabel.tsx +++ b/ngui/ui/src/components/ExecutorLabel/ExecutorLabel.tsx @@ -6,7 +6,7 @@ import { AWS_CNR, AZURE_CNR } from "utils/constants"; // ML profiling: map cloud types to OptScale data source types const PLATFORM_TYPE_TO_DATA_SOURCE_TYPE = Object.freeze({ azure: AZURE_CNR, - aws: AWS_CNR + aws: AWS_CNR, }); const DiscoveredExecutorLabel = ({ resource, disableLink }) => { diff --git a/ngui/ui/src/components/ExecutorsPanel/ExecutorsPanel.tsx b/ngui/ui/src/components/ExecutorsPanel/ExecutorsPanel.tsx index 8f79a6eb4..63a3f1c98 100644 --- a/ngui/ui/src/components/ExecutorsPanel/ExecutorsPanel.tsx +++ b/ngui/ui/src/components/ExecutorsPanel/ExecutorsPanel.tsx @@ -8,7 +8,7 @@ import useDateRanges, { oneWeekRange, twoWeeksRange, oneMonthRange, - customRange + customRange, } from "hooks/useDateRanges"; import { SPACING_1 } from "utils/layouts"; @@ -19,7 +19,7 @@ const ExecutorsPanel = () => { oneWeekRange(true), twoWeeksRange(true), oneMonthRange(true), - customRange(true) + customRange(true), ]); return ( diff --git a/ngui/ui/src/components/ExpandableList/ExpandableList.tsx b/ngui/ui/src/components/ExpandableList/ExpandableList.tsx index 0fbab2af3..2ff001a57 100644 --- a/ngui/ui/src/components/ExpandableList/ExpandableList.tsx +++ b/ngui/ui/src/components/ExpandableList/ExpandableList.tsx @@ -40,7 +40,7 @@ const ExpandableList = ({ items, render, maxRows = undefined, - stopPropagationOnShowMore = false + stopPropagationOnShowMore = false, }: ExpandableListProps) => { if (maxRows && items.length > maxRows) { return ; diff --git a/ngui/ui/src/components/ExpenseCell/ExpenseCell.tsx b/ngui/ui/src/components/ExpenseCell/ExpenseCell.tsx index 6b73a661e..8a0994daf 100644 --- a/ngui/ui/src/components/ExpenseCell/ExpenseCell.tsx +++ b/ngui/ui/src/components/ExpenseCell/ExpenseCell.tsx @@ -26,7 +26,7 @@ const SavingsMessage = ({ saving, clusterTypeId, resourceId }: SavingsMessagePro + value: , }} /> ); diff --git a/ngui/ui/src/components/ExpensesBreakdown/ActionBar/ExpensesBreakdownActionBar.tsx b/ngui/ui/src/components/ExpensesBreakdown/ActionBar/ExpensesBreakdownActionBar.tsx index 774010ddc..1ef36865c 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/ActionBar/ExpensesBreakdownActionBar.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/ActionBar/ExpensesBreakdownActionBar.tsx @@ -8,28 +8,28 @@ import { COST_EXPLORER, CLOUD_DETAILS, OWNER_DETAILS, POOL_DETAILS, EXPENSES_FIL const ENTITY_TYPES = Object.freeze({ CLOUD: "cloud", OWNER: "owner", - POOL: "pool" + POOL: "pool", }); const getEntityTypeByBreakdownType = (expensesBreakdownType) => ({ [CLOUD_DETAILS]: ENTITY_TYPES.CLOUD, [OWNER_DETAILS]: ENTITY_TYPES.OWNER, - [POOL_DETAILS]: ENTITY_TYPES.POOL + [POOL_DETAILS]: ENTITY_TYPES.POOL, })[expensesBreakdownType]; const getEntityTypeByFilter = (filterBy) => ({ [EXPENSES_FILTERBY_TYPES.EMPLOYEE]: ENTITY_TYPES.OWNER, [EXPENSES_FILTERBY_TYPES.CLOUD]: ENTITY_TYPES.CLOUD, - [EXPENSES_FILTERBY_TYPES.POOL]: ENTITY_TYPES.POOL + [EXPENSES_FILTERBY_TYPES.POOL]: ENTITY_TYPES.POOL, })[filterBy]; const getCostExplorerExpensesBreakdownTitle = (entityType) => ( ); @@ -39,7 +39,7 @@ const getExpensesBreakdownTitle = (name, entityType) => ( id="expensesBreakdownForTitle" values={{ name, - entityType + entityType, }} /> ); @@ -57,8 +57,8 @@ const ExpensesBreakdownActionBar = ({ expensesBreakdownType, filterBy, name, isL breadcrumbs: [ - - ] + , + ], }; } @@ -77,14 +77,14 @@ const ExpensesBreakdownActionBar = ({ expensesBreakdownType, filterBy, name, isL { [ENTITY_TYPES.OWNER]: EXPENSES_BY_OWNER, [ENTITY_TYPES.CLOUD]: EXPENSES_BY_CLOUD, - [ENTITY_TYPES.POOL]: EXPENSES_BY_POOL + [ENTITY_TYPES.POOL]: EXPENSES_BY_POOL, }[entityType] } component={RouterLink} > {getCostExplorerExpensesBreakdownTitle(entityType)} - - ] + , + ], }; }; @@ -94,8 +94,8 @@ const ExpensesBreakdownActionBar = ({ expensesBreakdownType, filterBy, name, isL breadcrumbs, title: { text: titleText, - isLoading - } + isLoading, + }, }; return ; diff --git a/ngui/ui/src/components/ExpensesBreakdown/BarChart/ExpensesBreakdownBarChart.tsx b/ngui/ui/src/components/ExpensesBreakdown/BarChart/ExpensesBreakdownBarChart.tsx index 0d90108f1..486ec5eab 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/BarChart/ExpensesBreakdownBarChart.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/BarChart/ExpensesBreakdownBarChart.tsx @@ -14,8 +14,8 @@ const ExpensesBreakdownBarChart = ({ periodType, pdfId, breakdownData, fieldTool sourceData: { [EXPENSES_SPLIT_PERIODS.DAILY]: breakdownData.daily, [EXPENSES_SPLIT_PERIODS.WEEKLY]: breakdownData.weekly, - [EXPENSES_SPLIT_PERIODS.MONTHLY]: breakdownData.monthly - }[periodType] + [EXPENSES_SPLIT_PERIODS.MONTHLY]: breakdownData.monthly, + }[periodType], }); const onClickHandler = diff --git a/ngui/ui/src/components/ExpensesBreakdown/BreakdownByButtonsGroup/ExpensesBreakdownBreakdownByButtonsGroup.tsx b/ngui/ui/src/components/ExpensesBreakdown/BreakdownByButtonsGroup/ExpensesBreakdownBreakdownByButtonsGroup.tsx index 5a0a50057..83c060930 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/BreakdownByButtonsGroup/ExpensesBreakdownBreakdownByButtonsGroup.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/BreakdownByButtonsGroup/ExpensesBreakdownBreakdownByButtonsGroup.tsx @@ -11,14 +11,14 @@ const filters = [ id: EXPENSES_FILTERBY_TYPES.REGION, messageId: "region", forTypes: [CLOUD_DETAILS], - excludeFor: [KUBERNETES_CNR] + excludeFor: [KUBERNETES_CNR], }, { id: EXPENSES_FILTERBY_TYPES.NODE, messageId: "node", forTypes: [CLOUD_DETAILS], showOnlyFor: [KUBERNETES_CNR] }, { id: EXPENSES_FILTERBY_TYPES.NAMESPACE, messageId: "namespace", forTypes: [CLOUD_DETAILS], showOnlyFor: [KUBERNETES_CNR] }, { id: EXPENSES_FILTERBY_TYPES.POOL, messageId: "pool", forTypes: [POOL_DETAILS, CLOUD_DETAILS, OWNER_DETAILS] }, { id: EXPENSES_FILTERBY_TYPES.CLOUD, messageId: "source", forTypes: [POOL_DETAILS, OWNER_DETAILS] }, { id: EXPENSES_FILTERBY_TYPES.EMPLOYEE, messageId: "owner", forTypes: [POOL_DETAILS, CLOUD_DETAILS] }, - { id: EXPENSES_FILTERBY_TYPES.RESOURCE_TYPE, messageId: "resourceType", forTypes: [CLOUD_DETAILS] } + { id: EXPENSES_FILTERBY_TYPES.RESOURCE_TYPE, messageId: "resourceType", forTypes: [CLOUD_DETAILS] }, ]; const getButtonsGroup = (type, onClick, dataSourceType) => diff --git a/ngui/ui/src/components/ExpensesBreakdown/BreakdownByPeriodWidget/ExpensesBreakdownByPeriodWidget.tsx b/ngui/ui/src/components/ExpensesBreakdown/BreakdownByPeriodWidget/ExpensesBreakdownByPeriodWidget.tsx index 492594045..75ffc2e7d 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/BreakdownByPeriodWidget/ExpensesBreakdownByPeriodWidget.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/BreakdownByPeriodWidget/ExpensesBreakdownByPeriodWidget.tsx @@ -18,20 +18,20 @@ const breakdownLinearSelectorItems = [ name: EXPENSES_SPLIT_PERIODS.DAILY, value: EXPENSES_SPLIT_PERIODS.DAILY, type: LINEAR_SELECTOR_ITEMS_TYPES.TEXT, - dataTestId: "breakdown_ls_item_daily" + dataTestId: "breakdown_ls_item_daily", }, { name: EXPENSES_SPLIT_PERIODS.WEEKLY, value: EXPENSES_SPLIT_PERIODS.WEEKLY, type: LINEAR_SELECTOR_ITEMS_TYPES.TEXT, - dataTestId: "breakdown_ls_item_weekly" + dataTestId: "breakdown_ls_item_weekly", }, { name: EXPENSES_SPLIT_PERIODS.MONTHLY, value: EXPENSES_SPLIT_PERIODS.MONTHLY, type: LINEAR_SELECTOR_ITEMS_TYPES.TEXT, - dataTestId: "breakdown_ls_item_monthly" - } + dataTestId: "breakdown_ls_item_monthly", + }, ]; // todo: unify with resources selector @@ -64,7 +64,7 @@ const ExpensesBreakdownByPeriodWidget = ({ render }) => { useEffect(() => { updateSearchParams({ - [PERIOD_TYPE_QUERY_PARAMETER_NAME]: periodType.value + [PERIOD_TYPE_QUERY_PARAMETER_NAME]: periodType.value, }); dispatch(changePeriodType(periodType.value)); }, [dispatch, periodType]); @@ -88,9 +88,9 @@ const ExpensesBreakdownByPeriodWidget = ({ render }) => { text: { [EXPENSES_SPLIT_PERIODS.DAILY]: "dailyExpenses", [EXPENSES_SPLIT_PERIODS.WEEKLY]: "weeklyExpenses", - [EXPENSES_SPLIT_PERIODS.MONTHLY]: "monthlyExpenses" + [EXPENSES_SPLIT_PERIODS.MONTHLY]: "monthlyExpenses", }[periodType.value], - elementType: PDF_ELEMENTS.basics.H2 + elementType: PDF_ELEMENTS.basics.H2, })} /> {render(periodType.value)} diff --git a/ngui/ui/src/components/ExpensesBreakdown/BreakdownByPeriodWidget/actionCreator.ts b/ngui/ui/src/components/ExpensesBreakdown/BreakdownByPeriodWidget/actionCreator.ts index ecc01df74..b18ae9a45 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/BreakdownByPeriodWidget/actionCreator.ts +++ b/ngui/ui/src/components/ExpensesBreakdown/BreakdownByPeriodWidget/actionCreator.ts @@ -2,5 +2,5 @@ import { CHANGE_PERIOD_TYPE } from "./actionTypes"; export const changePeriodType = (type) => ({ type: CHANGE_PERIOD_TYPE, - payload: type + payload: type, }); diff --git a/ngui/ui/src/components/ExpensesBreakdown/ExpensesBreakdown.test.tsx b/ngui/ui/src/components/ExpensesBreakdown/ExpensesBreakdown.test.tsx index 2defc83a9..1460761d6 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/ExpensesBreakdown.test.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/ExpensesBreakdown.test.tsx @@ -13,7 +13,7 @@ it("renders without crashing", () => { root.render( { const navigate = useNavigate(); const theme = useTheme(); @@ -62,7 +62,7 @@ const ExpensesBreakdown = ({ const colorsMap = getColorsMapByIds({ data: filteredBreakdown, - colors: theme.palette.chart + colors: theme.palette.chart, }); const getEntityExpensesUrl = (targetEntityId, targetEntityType) => { @@ -77,24 +77,24 @@ const ExpensesBreakdown = ({ [EXPENSES_FILTERBY_TYPES.POOL]: type === POOL_DETAILS ? entityId !== targetEntityId && `${getPoolExpensesUrl(targetEntityId)}?filterBy=${EXPENSES_FILTERBY_TYPES.POOL}` - : `${getPoolExpensesUrl(targetEntityId)}?filterBy=${EXPENSES_FILTERBY_TYPES.POOL}` + : `${getPoolExpensesUrl(targetEntityId)}?filterBy=${EXPENSES_FILTERBY_TYPES.POOL}`, }[filterBy]; }; const getFilterByEntity = (isTableWrapper = false) => ({ [OWNER_DETAILS]: { - [OWNER_ID_FILTER]: entityId + [OWNER_ID_FILTER]: entityId, }, [CLOUD_DETAILS]: { - [CLOUD_ACCOUNT_ID_FILTER]: entityId + [CLOUD_ACCOUNT_ID_FILTER]: entityId, }, [POOL_DETAILS]: isTableWrapper ? { - [POOL_ID_FILTER]: entityId + [POOL_ID_FILTER]: entityId, } : {}, - [COST_EXPLORER]: {} + [COST_EXPLORER]: {}, })[type]; const getComputedParams = (details) => @@ -114,7 +114,7 @@ const ExpensesBreakdown = ({ // When/if a different type is added to calculations (e.g. 'cluster'), the API will have to return it. [EXPENSES_FILTERBY_TYPES.RESOURCE_TYPE]: `${RESOURCE_TYPE_FILTER}=${details.name}:${OPTSCALE_RESOURCE_TYPES.REGULAR}`, [EXPENSES_FILTERBY_TYPES.NODE]: `${K8S_NODE_FILTER}=${details.id}`, - [EXPENSES_FILTERBY_TYPES.NAMESPACE]: `${K8S_NAMESPACE_FILTER}=${details.id}` + [EXPENSES_FILTERBY_TYPES.NAMESPACE]: `${K8S_NAMESPACE_FILTER}=${details.id}`, })[filterBy]; const renderHeading = () => ( @@ -172,7 +172,7 @@ const ExpensesBreakdown = ({ ...getFilterByEntity(), computedParams: getComputedParams(bandDetails), sStartDate: bandDetails.startDate, - sEndDate: bandDetails.endDate + sEndDate: bandDetails.endDate, }) ); } @@ -219,7 +219,7 @@ const ExpensesBreakdown = ({ } } getCustomDetails={({ id, type: sectionEntityType }) => ({ - link: getEntityExpensesUrl(id, sectionEntityType) + link: getEntityExpensesUrl(id, sectionEntityType), })} getShouldApplyHoverStyles={(node) => { const { data: { details: { link = "" } = {} } = {} } = node; @@ -247,7 +247,7 @@ const ExpensesBreakdown = ({ getResourcesExpensesUrl({ ...getFilterByEntity(true), sStartDate: startDateTimestamp, - sEndDate: endDateTimestamp + sEndDate: endDateTimestamp, }) ) } @@ -259,7 +259,7 @@ const ExpensesBreakdown = ({ ...getFilterByEntity(), computedParams: getComputedParams(rowData), sStartDate: startDateTimestamp, - sEndDate: endDateTimestamp + sEndDate: endDateTimestamp, }) ) } @@ -274,7 +274,7 @@ const ExpensesBreakdown = ({ top={renderHeading()} center={{ left: renderBarChartWidget(), - right: renderPieChartWidget() + right: renderPieChartWidget(), }} bottom={renderTableWidget()} /> diff --git a/ngui/ui/src/components/ExpensesBreakdown/LayoutWrapper/ExpensesBreakdownLayoutWrapper.test.tsx b/ngui/ui/src/components/ExpensesBreakdown/LayoutWrapper/ExpensesBreakdownLayoutWrapper.test.tsx index abcf38b5e..228918dc4 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/LayoutWrapper/ExpensesBreakdownLayoutWrapper.test.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/LayoutWrapper/ExpensesBreakdownLayoutWrapper.test.tsx @@ -12,7 +12,7 @@ it("renders without crashing", () => { top={Child 1} center={{ left: Child 2, - right: Child 3 + right: Child 3, }} bottom={Child 4} /> diff --git a/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForCloudMocked.tsx b/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForCloudMocked.tsx index 038fe4def..30d87ade4 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForCloudMocked.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForCloudMocked.tsx @@ -11,267 +11,267 @@ const ExpensesBreakdownForCloudMocked = () => { id: "8c63e980-6572-4b36-be82-a2bc59705888", type: "aws_cnr", name: "AWS HQ", - expense: 4627.2909333465 + expense: 4627.2909333465, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure trial", - expense: 3541.3401215294 + expense: 3541.3401215294, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "AWS Marketing", - expense: 989.3401215294 + expense: 989.3401215294, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure enterprise agreement", - expense: 780.3401215294 + expense: 780.3401215294, }, { id: "528e7e01-cf63-4041-980a-fd92a50da65d", type: "kubernetes_cnr", name: "K8s cluster", - expense: 540.3401215294 + expense: 540.3401215294, }, { id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", name: "Ali dev", type: "alibaba_cnr", - expense: 26.627527999999998 - } + expense: 26.627527999999998, + }, ], [addDaysToTimestamp(firstDateRangePoint, 1)]: [ { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure trial", - expense: 1950.3397350166 + expense: 1950.3397350166, }, { id: "8c63e980-6572-4b36-be82-a2bc59705888", type: "aws_cnr", name: "AWS HQ", - expense: 4172.6371212522 + expense: 4172.6371212522, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "AWS Marketing", - expense: 1230.3401215294 + expense: 1230.3401215294, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure enterprise agreement", - expense: 1009.3401215294 + expense: 1009.3401215294, }, { id: "528e7e01-cf63-4041-980a-fd92a50da65d", type: "kubernetes_cnr", name: "K8s cluster", - expense: 230.3401215294 + expense: 230.3401215294, }, { id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", name: "Ali dev", type: "alibaba_cnr", - expense: 26.829112 - } + expense: 26.829112, + }, ], [addDaysToTimestamp(firstDateRangePoint, 2)]: [ { id: "8c63e980-6572-4b36-be82-a2bc59705888", type: "aws_cnr", name: "AWS HQ", - expense: 4720.8836990961 + expense: 4720.8836990961, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure trial", - expense: 2031.3381313975 + expense: 2031.3381313975, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "AWS Marketing", - expense: 510.3401215294 + expense: 510.3401215294, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure enterprise agreement", - expense: 678.3401215294 + expense: 678.3401215294, }, { id: "528e7e01-cf63-4041-980a-fd92a50da65d", type: "kubernetes_cnr", name: "K8s cluster", - expense: 642.3401215294 + expense: 642.3401215294, }, { id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", name: "Ali dev", type: "alibaba_cnr", - expense: 26.825112 - } + expense: 26.825112, + }, ], [addDaysToTimestamp(firstDateRangePoint, 3)]: [ { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure trial", - expense: 920.3376729567 + expense: 920.3376729567, }, { id: "8c63e980-6572-4b36-be82-a2bc59705888", type: "aws_cnr", name: "AWS HQ", - expense: 3344.6967370416 + expense: 3344.6967370416, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "AWS Marketing", - expense: 1441.3401215294 + expense: 1441.3401215294, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure enterprise agreement", - expense: 550.3401215294 + expense: 550.3401215294, }, { id: "528e7e01-cf63-4041-980a-fd92a50da65d", type: "kubernetes_cnr", name: "K8s cluster", - expense: 123.3401215294 + expense: 123.3401215294, }, { id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", name: "Ali dev", type: "alibaba_cnr", - expense: 26.452244 - } + expense: 26.452244, + }, ], [addDaysToTimestamp(firstDateRangePoint, 4)]: [ { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure trial", - expense: 1088.337899628 + expense: 1088.337899628, }, { id: "8c63e980-6572-4b36-be82-a2bc59705888", type: "aws_cnr", name: "AWS HQ", - expense: 3321.0078451299 + expense: 3321.0078451299, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "AWS Marketing", - expense: 996.3401215294 + expense: 996.3401215294, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure enterprise agreement", - expense: 503.3401215294 + expense: 503.3401215294, }, { id: "528e7e01-cf63-4041-980a-fd92a50da65d", type: "kubernetes_cnr", name: "K8s cluster", - expense: 242.3401215294 + expense: 242.3401215294, }, { id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", name: "Ali dev", type: "alibaba_cnr", - expense: 2.201825 - } + expense: 2.201825, + }, ], [addDaysToTimestamp(firstDateRangePoint, 5)]: [ { id: "8c63e980-6572-4b36-be82-a2bc59705888", type: "aws_cnr", name: "AWS HQ", - expense: 3778.0220649843004 + expense: 3778.0220649843004, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure trial", - expense: 2801.3387691288 + expense: 2801.3387691288, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "AWS Marketing", - expense: 647.3401215294 + expense: 647.3401215294, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure enterprise agreement", - expense: 624.3401215294 + expense: 624.3401215294, }, { id: "528e7e01-cf63-4041-980a-fd92a50da65d", type: "kubernetes_cnr", name: "K8s cluster", - expense: 581.3401215294 + expense: 581.3401215294, }, { id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", name: "Ali dev", type: "alibaba_cnr", - expense: 2.192313 - } + expense: 2.192313, + }, ], [lastDateRangePoint]: [ { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure trial", - expense: 454.3387909872 + expense: 454.3387909872, }, { id: "8c63e980-6572-4b36-be82-a2bc59705888", type: "aws_cnr", name: "AWS HQ", - expense: 3743.3238728661 + expense: 3743.3238728661, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "AWS Marketing", - expense: 289.3401215294 + expense: 289.3401215294, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", name: "Azure enterprise agreement", - expense: 190.3401215294 + expense: 190.3401215294, }, { id: "528e7e01-cf63-4041-980a-fd92a50da65d", type: "kubernetes_cnr", name: "K8s cluster", - expense: 154.3401215294 + expense: 154.3401215294, }, { id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", name: "Ali dev", type: "alibaba_cnr", - expense: 3.367908 - } - ] + expense: 3.367908, + }, + ], }; const filteredBreakdown = [ @@ -280,43 +280,43 @@ const ExpensesBreakdownForCloudMocked = () => { type: "aws_cnr", total: 28385.5937818932, name: "AWS HQ", - previous_total: 28159.6970880297 + previous_total: 28159.6970880297, }, { id: "11fddd0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", total: 12785.473881506799, name: "Azure trial", - previous_total: 4.779527628233333 + previous_total: 4.779527628233333, }, { id: "11fsa5d0e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", total: 6102.093881506799, name: "AWS Marketing", - previous_total: 4.779527628233333 + previous_total: 4.779527628233333, }, { id: "11fdd77e-3ece-410c-8e68-003abcc44576", type: "azure_cnr", total: 4334.183881506799, name: "Azure enterprise agreement", - previous_total: 4.779527628233333 + previous_total: 4.779527628233333, }, { id: "528e7e01-cf63-4041-980a-fd92a50da65d", type: "kubernetes_cnr", total: 2514.38085071, name: "K8s cluster", - previous_total: 612.38085071 + previous_total: 612.38085071, }, { id: "71ecf26d-ccae-4b0a-81dd-8f0ab56314c8", name: "Ali dev", type: "alibaba_cnr", total: 56.07, - previous_total: 0 - } + previous_total: 0, + }, ]; return ( diff --git a/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForOwnerMocked.tsx b/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForOwnerMocked.tsx index b7e92443e..f41be842f 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForOwnerMocked.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForOwnerMocked.tsx @@ -10,306 +10,306 @@ const ExpensesBreakdownForOwnerMocked = () => { { expense: 180.2017514556, id: "5153cb97-94e4-403b-ac9a-8f1343f1fbc5", - name: "Amy Smith" + name: "Amy Smith", }, { expense: 1613.2313672838, id: "ab9f39d4-d486-429a-814e-9717a1e12ac7", - name: "Taylor Everett" + name: "Taylor Everett", }, { expense: 24.639862891499998, id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Haris Price" + name: "Haris Price", }, { expense: 1280.9187834066, id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Sally Wong" + name: "Sally Wong", }, { expense: 936.8585263726, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 77.228119044, id: "8886a4df-37f1-4598-aa92-c39eae9567d4", - name: "Katy Ali" + name: "Katy Ali", }, { expense: 35.26463332349999, id: "29019351-df21-4a3b-84c3-42acb086317b", - name: "Ella Price" + name: "Ella Price", }, { expense: 24.6338124912, id: "87812acf-48f3-47ce-ac7d-0623ae3405ed", - name: "Aaron Simmons" - } + name: "Aaron Simmons", + }, ], [addDaysToTimestamp(firstDateRangePoint, 1)]: [ { expense: 180.2017514556, id: "5153cb97-94e4-403b-ac9a-8f1343f1fbc5", - name: "Amy Smith" + name: "Amy Smith", }, { expense: 1366.7838405633004, id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Sally Wong" + name: "Sally Wong", }, { expense: 222.8572994751, id: "c4c3a518-ab9c-4aba-912c-708cc51d9b5e", - name: "Oscar Walsh" + name: "Oscar Walsh", }, { expense: 24.6390672303, id: "87812acf-48f3-47ce-ac7d-0623ae3405ed", - name: "Aaron Simmons" + name: "Aaron Simmons", }, { expense: 1168.06019992, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 37.100665025100014, id: "29019351-df21-4a3b-84c3-42acb086317b", - name: "Ella Price" + name: "Ella Price", }, { expense: 24.6462867189, id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Haris Price" + name: "Haris Price", }, { expense: 1613.4434233713, id: "ab9f39d4-d486-429a-814e-9717a1e12ac7", - name: "Taylor Everett" + name: "Taylor Everett", }, { expense: 83.489296734, id: "8886a4df-37f1-4598-aa92-c39eae9567d4", - name: "Katy Ali" - } + name: "Katy Ali", + }, ], [addDaysToTimestamp(firstDateRangePoint, 2)]: [ { expense: 180.2017514556, id: "5153cb97-94e4-403b-ac9a-8f1343f1fbc5", - name: "Amy Smith" + name: "Amy Smith", }, { expense: 422.4723890391, id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Sally Wong" + name: "Sally Wong", }, { expense: 974.2399681978, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 24.6378574134, id: "87812acf-48f3-47ce-ac7d-0623ae3405ed", - name: "Aaron Simmons" + name: "Aaron Simmons", }, { expense: 27.929266884000004, id: "29019351-df21-4a3b-84c3-42acb086317b", - name: "Ella Price" + name: "Ella Price", }, { expense: 24.641445997800002, id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Haris Price" + name: "Haris Price", }, { expense: 77.78021599440001, id: "8886a4df-37f1-4598-aa92-c39eae9567d4", - name: "Katy Ali" + name: "Katy Ali", }, { expense: 1613.1315150162, id: "ab9f39d4-d486-429a-814e-9717a1e12ac7", - name: "Taylor Everett" - } + name: "Taylor Everett", + }, ], [addDaysToTimestamp(firstDateRangePoint, 3)]: [ { expense: 180.2017514556, id: "5153cb97-94e4-403b-ac9a-8f1343f1fbc5", - name: "Amy Smith" + name: "Amy Smith", }, { expense: 29.083829960699994, id: "29019351-df21-4a3b-84c3-42acb086317b", - name: "Ella Price" + name: "Ella Price", }, { expense: 420.2256436632, id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Sally Wong" + name: "Sally Wong", }, { expense: 24.651374382, id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Haris Price" + name: "Haris Price", }, { expense: 1613.2712527926, id: "ab9f39d4-d486-429a-814e-9717a1e12ac7", - name: "Taylor Everett" + name: "Taylor Everett", }, { expense: 24.643465261200003, id: "87812acf-48f3-47ce-ac7d-0623ae3405ed", - name: "Aaron Simmons" + name: "Aaron Simmons", }, { expense: 79.2107590635, id: "8886a4df-37f1-4598-aa92-c39eae9567d4", - name: "Katy Ali" + name: "Katy Ali", }, { expense: 950.0576681791, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" - } + name: "(not set)", + }, ], [addDaysToTimestamp(firstDateRangePoint, 4)]: [ { expense: 180.2017514556, id: "5153cb97-94e4-403b-ac9a-8f1343f1fbc5", - name: "Amy Smith" + name: "Amy Smith", }, { expense: 24.6567928158, id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Haris Price" + name: "Haris Price", }, { expense: 1613.0356802379, id: "ab9f39d4-d486-429a-814e-9717a1e12ac7", - name: "Taylor Everett" + name: "Taylor Everett", }, { expense: 24.639400433700004, id: "87812acf-48f3-47ce-ac7d-0623ae3405ed", - name: "Aaron Simmons" + name: "Aaron Simmons", }, { expense: 85.79208305699999, id: "8886a4df-37f1-4598-aa92-c39eae9567d4", - name: "Katy Ali" + name: "Katy Ali", }, { expense: 44.339432420700014, id: "29019351-df21-4a3b-84c3-42acb086317b", - name: "Ella Price" + name: "Ella Price", }, { expense: 582.9494233653002, id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Sally Wong" + name: "Sally Wong", }, { expense: 194.50590291359998, id: "c4c3a518-ab9c-4aba-912c-708cc51d9b5e", - name: "Oscar Walsh" + name: "Oscar Walsh", }, { expense: 1028.2403674135, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" - } + name: "(not set)", + }, ], [addDaysToTimestamp(firstDateRangePoint, 5)]: [ { expense: 180.2017514556, id: "5153cb97-94e4-403b-ac9a-8f1343f1fbc5", - name: "Amy Smith" + name: "Amy Smith", }, { expense: 24.641806221, id: "87812acf-48f3-47ce-ac7d-0623ae3405ed", - name: "Aaron Simmons" + name: "Aaron Simmons", }, { expense: 37.541113392599996, id: "29019351-df21-4a3b-84c3-42acb086317b", - name: "Ella Price" + name: "Ella Price", }, { expense: 24.640616003399998, id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Haris Price" + name: "Haris Price", }, { expense: 81.3030821055, id: "8886a4df-37f1-4598-aa92-c39eae9567d4", - name: "Katy Ali" + name: "Katy Ali", }, { expense: 812.5805639798999, id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Sally Wong" + name: "Sally Wong", }, { expense: 1612.8339342696, id: "ab9f39d4-d486-429a-814e-9717a1e12ac7", - name: "Taylor Everett" + name: "Taylor Everett", }, { expense: 969.9197964257, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" - } + name: "(not set)", + }, ], [lastDateRangePoint]: [ { expense: 2.8161423576, id: "c4c3a518-ab9c-4aba-912c-708cc51d9b5e", - name: "Oscar Walsh" + name: "Oscar Walsh", }, { expense: 31.0973209002, id: "29019351-df21-4a3b-84c3-42acb086317b", - name: "Ella Price" + name: "Ella Price", }, { expense: 15.409309717800001, id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Haris Price" + name: "Haris Price", }, { expense: 57.1035847473, id: "8886a4df-37f1-4598-aa92-c39eae9567d4", - name: "Katy Ali" + name: "Katy Ali", }, { expense: 273.35516935140004, id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Sally Wong" + name: "Sally Wong", }, { expense: 3.4420872366, id: "ab9f39d4-d486-429a-814e-9717a1e12ac7", - name: "Taylor Everett" + name: "Taylor Everett", }, { expense: 15.3958764096, id: "87812acf-48f3-47ce-ac7d-0623ae3405ed", - name: "Aaron Simmons" + name: "Aaron Simmons", }, { expense: 279.2147783186, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" - } - ] + name: "(not set)", + }, + ], }; const filteredBreakdown = [ @@ -317,56 +317,56 @@ const ExpensesBreakdownForOwnerMocked = () => { total: 9682.389260208, previous_total: 12904.245314669699, id: "ab9f39d4-d486-429a-814e-9717a1e12ac7", - name: "Taylor Everett" + name: "Taylor Everett", }, { total: 6306.5913048273, previous_total: 7008.8069736144325, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { total: 5159.2858133688005, previous_total: 5199.219195685199, id: "9c458a6d-13b4-47d5-b921-b75ee8bf8101", - name: "Sally Wong" + name: "Sally Wong", }, { total: 1081.2105087336001, previous_total: 1489.5603028008002, id: "5153cb97-94e4-403b-ac9a-8f1343f1fbc5", - name: "Amy Smith" + name: "Amy Smith", }, { total: 541.9071407457, previous_total: 559.1013787575, id: "8886a4df-37f1-4598-aa92-c39eae9567d4", - name: "Katy Ali" + name: "Katy Ali", }, { total: 420.1793447463, previous_total: 1310.0575567382998, id: "c4c3a518-ab9c-4aba-912c-708cc51d9b5e", - name: "Oscar Walsh" + name: "Oscar Walsh", }, { total: 242.35626190680006, previous_total: 183.1998652812, id: "29019351-df21-4a3b-84c3-42acb086317b", - name: "Ella Price" + name: "Ella Price", }, { total: 163.2856885272, previous_total: 197.1577110465, id: "015c36f9-5c05-4da8-b445-932560a00191", - name: "Haris Price" + name: "Haris Price", }, { total: 163.2312854604, previous_total: 197.1877353687, id: "87812acf-48f3-47ce-ac7d-0623ae3405ed", - name: "Aaron Simmons" - } + name: "Aaron Simmons", + }, ]; return ( diff --git a/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForPoolMocked.tsx b/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForPoolMocked.tsx index f4dd50835..5b2d074b6 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForPoolMocked.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/Mockups/ExpensesBreakdownForPoolMocked.tsx @@ -10,261 +10,261 @@ const ExpensesBreakdownForPoolMocked = () => { { expense: 1019.3258221514999, id: "a466e029-82cf-439d-b641-e4f65cfaaf71", - name: "Operations" + name: "Operations", }, { expense: 180.2017514556, id: "a7dade94-0877-4213-8aed-02be2030886e", - name: "QA" + name: "QA", }, { expense: 1613.2313672838, id: "e445ee8b-f062-4b45-9baf-05e11cf5635f", - name: "Ops" + name: "Ops", }, { expense: 276.1523412237, id: "2a03382a-a036-4881-b6b5-68c08192cc44", - name: "Sunflower corporation" + name: "Sunflower corporation", }, { expense: 74.4906655197, id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" + name: "Dev", }, { expense: 72.7163822619, id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, { expense: 936.8585263726, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" - } + name: "(not set)", + }, ], [addDaysToTimestamp(firstDateRangePoint, 1)]: [ { expense: 1102.6585871711998, id: "a466e029-82cf-439d-b641-e4f65cfaaf71", - name: "Operations" + name: "Operations", }, { expense: 280.91775902850003, id: "2a03382a-a036-4881-b6b5-68c08192cc44", - name: "Sunflower corporation" + name: "Sunflower corporation", }, { expense: 1390.8918817483, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 1613.4434233713, id: "e445ee8b-f062-4b45-9baf-05e11cf5635f", - name: "Ops" + name: "Ops", }, { expense: 76.9318762518, id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" + name: "Dev", }, { expense: 76.15093382010001, id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, { expense: 180.2273691024, id: "a7dade94-0877-4213-8aed-02be2030886e", - name: "QA" - } + name: "QA", + }, ], [addDaysToTimestamp(firstDateRangePoint, 2)]: [ { expense: 67.1536310895, id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" + name: "Dev", }, { expense: 974.2399681978, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 72.6631623288, id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, { expense: 1613.1315150162, id: "e445ee8b-f062-4b45-9baf-05e11cf5635f", - name: "Ops" + name: "Ops", }, { expense: 161.9679362166, id: "a466e029-82cf-439d-b641-e4f65cfaaf71", - name: "Operations" + name: "Operations", }, { expense: 275.6764456938, id: "2a03382a-a036-4881-b6b5-68c08192cc44", - name: "Sunflower corporation" + name: "Sunflower corporation", }, { expense: 180.2017514556, id: "a7dade94-0877-4213-8aed-02be2030886e", - name: "QA" - } + name: "QA", + }, ], [addDaysToTimestamp(firstDateRangePoint, 3)]: [ { expense: 158.44384362690002, id: "a466e029-82cf-439d-b641-e4f65cfaaf71", - name: "Operations" + name: "Operations", }, { expense: 950.0576681791, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 276.3570788622, id: "2a03382a-a036-4881-b6b5-68c08192cc44", - name: "Sunflower corporation" + name: "Sunflower corporation", }, { expense: 74.7105337719, id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, { expense: 1613.2712527926, id: "e445ee8b-f062-4b45-9baf-05e11cf5635f", - name: "Ops" + name: "Ops", }, { expense: 68.3036160696, id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" + name: "Dev", }, { expense: 180.2017514556, id: "a7dade94-0877-4213-8aed-02be2030886e", - name: "QA" - } + name: "QA", + }, ], [addDaysToTimestamp(firstDateRangePoint, 4)]: [ { expense: 274.10609124, id: "2a03382a-a036-4881-b6b5-68c08192cc44", - name: "Sunflower corporation" + name: "Sunflower corporation", }, { expense: 1613.0356802379, id: "e445ee8b-f062-4b45-9baf-05e11cf5635f", - name: "Ops" + name: "Ops", }, { expense: 80.08177620599999, id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, { expense: 180.2027137797, id: "a7dade94-0877-4213-8aed-02be2030886e", - name: "QA" + name: "QA", }, { expense: 1222.745308003, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 84.7720109736, id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" + name: "Dev", }, { expense: 323.4172536729001, id: "a466e029-82cf-439d-b641-e4f65cfaaf71", - name: "Operations" - } + name: "Operations", + }, ], [addDaysToTimestamp(firstDateRangePoint, 5)]: [ { expense: 180.2017514556, id: "a7dade94-0877-4213-8aed-02be2030886e", - name: "QA" + name: "QA", }, { expense: 555.2347831983001, id: "a466e029-82cf-439d-b641-e4f65cfaaf71", - name: "Operations" + name: "Operations", }, { expense: 271.9155268215, id: "2a03382a-a036-4881-b6b5-68c08192cc44", - name: "Sunflower corporation" + name: "Sunflower corporation", }, { expense: 969.9197964257, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 77.3725232439, id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" + name: "Dev", }, { expense: 76.1843484387, id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, { expense: 1612.8339342696, id: "e445ee8b-f062-4b45-9baf-05e11cf5635f", - name: "Ops" - } + name: "Ops", + }, ], [lastDateRangePoint]: [ { expense: 14.12412918, id: "a7dade94-0877-4213-8aed-02be2030886e", - name: "QA" + name: "QA", }, { expense: 1534.1528748738, id: "a466e029-82cf-439d-b641-e4f65cfaaf71", - name: "Operations" + name: "Operations", }, { expense: 310.1512353771, id: "2a03382a-a036-4881-b6b5-68c08192cc44", - name: "Sunflower corporation" + name: "Sunflower corporation", }, { expense: 5.089296, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { expense: 326.4942996365, id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" + name: "Dev", }, { expense: 229.7063507977, id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, { expense: 1612.8339342696, id: "e445ee8b-f062-4b45-9baf-05e11cf5635f", - name: "Ops" - } - ] + name: "Ops", + }, + ], }; const filteredBreakdown = [ @@ -272,44 +272,44 @@ const ExpensesBreakdownForPoolMocked = () => { total: 11295.2231945, previous_total: 12904.245314669699, id: "e445ee8b-f062-4b45-9baf-05e11cf5635f", - name: "Ops" + name: "Ops", }, { total: 6731.8333656, previous_total: 8318.801227306532, id: "00000000-0000-0000-0000-000000000000", - name: "(not set)" + name: "(not set)", }, { total: 5066.33862881, previous_total: 3112.1316210275995, id: "a466e029-82cf-439d-b641-e4f65cfaaf71", - name: "Operations" + name: "Operations", }, { total: 2034.16025902, previous_total: 2205.0221313149996, id: "31622be0-00f9-4138-b033-eee45aefb558", - name: "Sunflower corp" + name: "Sunflower corp", }, { total: 1095.36121788, previous_total: 1443.270115071, id: "a7dade94-0877-4213-8aed-02be2030886e", - name: "QA" + name: "QA", }, { total: 741.972982236, previous_total: 521.3964424356, id: "8ce779dc-cc2a-4210-9770-00a2ce7ccf39", - name: "Marketing" + name: "Marketing", }, { total: 336.40631981, previous_total: 497.3156913609, id: "65846b0e-d146-4932-adb0-20c4222c1e6f", - name: "Dev" - } + name: "Dev", + }, ]; return ( diff --git a/ngui/ui/src/components/ExpensesBreakdown/PieChart/ExpensesBreakdownPieChart.tsx b/ngui/ui/src/components/ExpensesBreakdown/PieChart/ExpensesBreakdownPieChart.tsx index 40ae191c6..4d017d7ca 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/PieChart/ExpensesBreakdownPieChart.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/PieChart/ExpensesBreakdownPieChart.tsx @@ -9,7 +9,7 @@ const ExpensesBreakdownPieChart = ({ filterBy, getCustomDetails, getShouldApplyHoverStyles, - onClick + onClick, }) => { const theme = useTheme(); @@ -18,14 +18,14 @@ const ExpensesBreakdownPieChart = ({ onClick, customDetails: getCustomDetails, shouldApplyHoverStyles: getShouldApplyHoverStyles, - colors: theme.palette.chart + colors: theme.palette.chart, }); const renderTooltipBody = (sectionData) => { const { value, label, - data: { details } + data: { details }, } = sectionData; return ; }; diff --git a/ngui/ui/src/components/ExpensesBreakdown/SummaryCards/ExpensesBreakdownSummaryCards.tsx b/ngui/ui/src/components/ExpensesBreakdown/SummaryCards/ExpensesBreakdownSummaryCards.tsx index 64dc62200..cc17d42dd 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/SummaryCards/ExpensesBreakdownSummaryCards.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/SummaryCards/ExpensesBreakdownSummaryCards.tsx @@ -11,23 +11,23 @@ const ExpensesBreakdownSummaryCards = ({ total = 0, previousTotal = 0, isLoading key: "totalExpensesForSelectedPeriod", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: total + value: total, }, color: getPoolColorStatus(percent), isLoading, captionMessageId: "totalExpensesForSelectedPeriod", - pdfId: pdfIds.totalExpensesForSelectedPeriod + pdfId: pdfIds.totalExpensesForSelectedPeriod, }, { key: "totalExpensesForPreviousPeriod", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: previousTotal + value: previousTotal, }, isLoading, captionMessageId: "totalExpensesForPreviousPeriod", - pdfId: pdfIds.totalExpensesForPreviousPeriod - } + pdfId: pdfIds.totalExpensesForPreviousPeriod, + }, ]; return ; }; diff --git a/ngui/ui/src/components/ExpensesBreakdown/Table/ExpensesBreakdownTable.tsx b/ngui/ui/src/components/ExpensesBreakdown/Table/ExpensesBreakdownTable.tsx index 3bef3f4e5..b0b7e99fb 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/Table/ExpensesBreakdownTable.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/Table/ExpensesBreakdownTable.tsx @@ -44,7 +44,7 @@ const getNameCellContentGetter = (filterBy) => { return ( { [EXPENSES_FILTERBY_TYPES.CLOUD]: getDataSourceNameCellContent, - [EXPENSES_FILTERBY_TYPES.POOL]: getPoolNameCellContent + [EXPENSES_FILTERBY_TYPES.POOL]: getPoolNameCellContent, }[filterBy] || getDefaultSourceNameCellContent ); }; @@ -65,7 +65,7 @@ const ExpensesBreakdownTable = ({ filterBy, isLoading = false, startDateTimestamp, - endDateTimestamp + endDateTimestamp, }) => { const tableData = useMemo(() => data, [data]); const columns = useMemo( @@ -73,18 +73,18 @@ const ExpensesBreakdownTable = ({ { accessorKey: "name", header: , - cell: ({ row }) => renderNameCell(row, filterBy) + cell: ({ row }) => renderNameCell(row, filterBy), }, { accessorKey: "total", header: , cell: ({ cell }) => , - defaultSort: "desc" + defaultSort: "desc", }, { accessorKey: "percent", header: , - cell: ({ cell }) => + cell: ({ cell }) => , }, { id: "actions", @@ -97,12 +97,12 @@ const ExpensesBreakdownTable = ({ icon={icon} tooltip={{ show: true, - value: + value: , }} /> )), - enableSorting: false - } + enableSorting: false, + }, ], [endDateTimestamp, filterBy, rowActions, startDateTimestamp] ); diff --git a/ngui/ui/src/components/ExpensesBreakdown/TableWidget/ExpensesBreakdownTableWidget.tsx b/ngui/ui/src/components/ExpensesBreakdown/TableWidget/ExpensesBreakdownTableWidget.tsx index 9be79eb4b..7b77b9f5d 100644 --- a/ngui/ui/src/components/ExpensesBreakdown/TableWidget/ExpensesBreakdownTableWidget.tsx +++ b/ngui/ui/src/components/ExpensesBreakdown/TableWidget/ExpensesBreakdownTableWidget.tsx @@ -21,7 +21,7 @@ const getTableWrapperCardTitleName = (filterBy) => [EXPENSES_FILTERBY_TYPES.EMPLOYEE]: OWNER, [EXPENSES_FILTERBY_TYPES.SERVICE]: SERVICE, [EXPENSES_FILTERBY_TYPES.REGION]: REGION, - [EXPENSES_FILTERBY_TYPES.RESOURCE_TYPE]: RESOURCE_TYPE + [EXPENSES_FILTERBY_TYPES.RESOURCE_TYPE]: RESOURCE_TYPE, })[filterBy]; const getTableEmptyMessageId = (filterBy) => @@ -31,7 +31,7 @@ const getTableEmptyMessageId = (filterBy) => [EXPENSES_FILTERBY_TYPES.SERVICE]: "noServiceExpenses", [EXPENSES_FILTERBY_TYPES.REGION]: "noRegionExpenses", [EXPENSES_FILTERBY_TYPES.EMPLOYEE]: "noOwnerExpenses", - [EXPENSES_FILTERBY_TYPES.RESOURCE_TYPE]: "noResourceTypeExpenses" + [EXPENSES_FILTERBY_TYPES.RESOURCE_TYPE]: "noResourceTypeExpenses", })[filterBy]; const getExpensesTableData = ({ filteredBreakdown, totalExpenses, urlGetter, colorsMap }) => @@ -39,7 +39,7 @@ const getExpensesTableData = ({ filteredBreakdown, totalExpenses, urlGetter, col percent: percentXofY(value.total, totalExpenses), link: urlGetter(value.id, value.type), color: colorsMap[value.name], - ...value + ...value, })); const ExpensesBreakdownTableWidget = ({ @@ -52,13 +52,13 @@ const ExpensesBreakdownTableWidget = ({ onTitleButtonClick, onRowActionClick, startDateTimestamp, - endDateTimestamp + endDateTimestamp, }) => { const title = ( ); @@ -68,10 +68,10 @@ const ExpensesBreakdownTableWidget = ({ filteredBreakdown, totalExpenses: total, urlGetter: getEntityExpensesUrl, - colorsMap + colorsMap, }), localization: { - emptyMessageId: getTableEmptyMessageId(filterBy) + emptyMessageId: getTableEmptyMessageId(filterBy), }, rowActions: [ { @@ -80,9 +80,9 @@ const ExpensesBreakdownTableWidget = ({ onClick: (rowData) => { onRowActionClick(rowData); }, - icon: - } - ] + icon: , + }, + ], }; return ( diff --git a/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownBy.tsx b/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownBy.tsx index b1ced8eb1..cb90b46a2 100644 --- a/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownBy.tsx +++ b/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownBy.tsx @@ -40,20 +40,20 @@ const ExpensesDailyBreakdownBy = ({ breakdown, breakdownByValue, onBreakdownByChange, - isLoading = false + isLoading = false, }: ExpensesDailyBreakdownByProps) => { const chartWrapperRef: RefObject = useRef(null); const [split, setSplit] = useSyncQueryParamWithState({ queryParamName: DAILY_EXPENSES_SPLIT_PARAMETER_NAME, possibleStates: SPLITS, - defaultValue: EXPENSES_SPLIT_PERIODS.DAILY + defaultValue: EXPENSES_SPLIT_PERIODS.DAILY, }); const [withLegend, setWithLegend] = useSyncQueryParamWithState({ queryParamName: WITH_LEGEND_QUERY_PARAMETER_NAME, possibleStates: [true, false], - defaultValue: true + defaultValue: true, }); return ( diff --git a/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownByBarChart.tsx b/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownByBarChart.tsx index df3144306..3c8b7e3f9 100644 --- a/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownByBarChart.tsx +++ b/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownByBarChart.tsx @@ -27,7 +27,7 @@ const getChartDataAndKeys = ({ breakdown, counts, split = EXPENSES_SPLIT_PERIODS const chartData = Object.entries(breakdown).map(([date, data]) => { const entry = { date, - ...Object.fromEntries(topKeys.map((id) => [id, getCostById(data, id)])) + ...Object.fromEntries(topKeys.map((id) => [id, getCostById(data, id)])), }; if (!isEmptyArray(otherKeys)) { @@ -42,14 +42,14 @@ const getChartDataAndKeys = ({ breakdown, counts, split = EXPENSES_SPLIT_PERIODS ...(isEmptyArray(otherKeys) ? {} : { - [OTHER_EXPENSES_NAME]: otherKeys.reduce((sum, key) => sum + counts[key].total, 0) - }) + [OTHER_EXPENSES_NAME]: otherKeys.reduce((sum, key) => sum + counts[key].total, 0), + }), }; return { keys: chartKeys, data: getResourceExpensesSplits(chartData)[split], - totals + totals, }; }; @@ -61,7 +61,7 @@ const ExpensesDailyBreakdownByBarChart = ({ split = EXPENSES_SPLIT_PERIODS.DAILY, isLoading = false, dataTestId, - showLegend = false + showLegend = false, }) => { const theme = useTheme(); @@ -70,7 +70,7 @@ const ExpensesDailyBreakdownByBarChart = ({ const { keys, data, totals } = getChartDataAndKeys({ breakdown, counts, - split + split, }); const moneyFormatter = useMoneyFormatter(); @@ -84,10 +84,10 @@ const ExpensesDailyBreakdownByBarChart = ({ } return getBreakdownLabelText({ id: legendItem.id, - ...counts[legendItem.id] + ...counts[legendItem.id], }); }, - getTotalLabel: (legendItem) => moneyFormatter(FORMATTED_MONEY_TYPES.COMPACT, totals[legendItem.id]) + getTotalLabel: (legendItem) => moneyFormatter(FORMATTED_MONEY_TYPES.COMPACT, totals[legendItem.id]), }); return ( @@ -103,7 +103,7 @@ const ExpensesDailyBreakdownByBarChart = ({ const details = { id: sectionData.id, - ...counts[sectionData.id] + ...counts[sectionData.id], }; const text = diff --git a/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownByMockup.tsx b/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownByMockup.tsx index b76957d14..9b2357fa7 100644 --- a/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownByMockup.tsx +++ b/ngui/ui/src/components/ExpensesDailyBreakdownBy/ExpensesDailyBreakdownByMockup.tsx @@ -7,130 +7,130 @@ const getBreakdown = (startDateSecondsTimestamp) => ({ { id: "65846b0e-d146-4932-adb0-20c4222c1e6f", cost: 9.3, - name: "Katy Ali" + name: "Katy Ali", }, { id: "11111111-d146-4932-adb0-20c4222c1e6f", cost: 2.1, - name: "Ella Price" + name: "Ella Price", }, { id: "21111111-d146-4932-adb0-20c4222c1e6f", cost: 3.21, - name: "Sally Wong" + name: "Sally Wong", }, { id: "31111111-d146-4932-adb0-20c4222c1e6f", cost: 6, - name: "Taylor Everett" + name: "Taylor Everett", }, { id: "41111111-d146-4932-adb0-20c4222c1e6f", cost: 1.6, - name: "Amy Smith" + name: "Amy Smith", }, { id: "51111111-d146-4932-adb0-20c4222c1e6f", cost: 9.9, - name: "Marie Briggs" - } + name: "Marie Briggs", + }, ], [addDaysToTimestamp(startDateSecondsTimestamp, 1)]: [ { id: "65846b0e-d146-4932-adb0-20c4222c1e6f", cost: 9.41, - name: "Katy Ali" + name: "Katy Ali", }, { id: "11111111-d146-4932-adb0-20c4222c1e6f", cost: 10.2, - name: "Ella Price" + name: "Ella Price", }, { id: "21111111-d146-4932-adb0-20c4222c1e6f", cost: 5.02, - name: "Sally Wong" + name: "Sally Wong", }, { id: "31111111-d146-4932-adb0-20c4222c1e6f", cost: 15.2, - name: "Taylor Everett" + name: "Taylor Everett", }, { id: "41111111-d146-4932-adb0-20c4222c1e6f", cost: 13.6, - name: "Amy Smith" + name: "Amy Smith", }, { id: "51111111-d146-4932-adb0-20c4222c1e6f", cost: 2.3, - name: "Marie Briggs" - } + name: "Marie Briggs", + }, ], [addDaysToTimestamp(startDateSecondsTimestamp, 2)]: [ { id: "65846b0e-d146-4932-adb0-20c4222c1e6f", cost: 7, - name: "Katy Ali" + name: "Katy Ali", }, { id: "11111111-d146-4932-adb0-20c4222c1e6f", cost: 4.02, - name: "Ella Price" + name: "Ella Price", }, { id: "21111111-d146-4932-adb0-20c4222c1e6f", cost: 12.32, - name: "Sally Wong" + name: "Sally Wong", }, { id: "31111111-d146-4932-adb0-20c4222c1e6f", cost: 2.43, - name: "Taylor Everett" + name: "Taylor Everett", }, { id: "41111111-d146-4932-adb0-20c4222c1e6f", cost: 4.16, - name: "Amy Smith" + name: "Amy Smith", }, { id: "51111111-d146-4932-adb0-20c4222c1e6f", cost: 1.98, - name: "Marie Briggs" - } + name: "Marie Briggs", + }, ], [addDaysToTimestamp(startDateSecondsTimestamp, 3)]: [ { id: "65846b0e-d146-4932-adb0-20c4222c1e6f", cost: 3, - name: "Katy Ali" + name: "Katy Ali", }, { id: "11111111-d146-4932-adb0-20c4222c1e6f", cost: 8.32, - name: "Ella Price" + name: "Ella Price", }, { id: "21111111-d146-4932-adb0-20c4222c1e6f", cost: 4.12, - name: "Sally Wong" + name: "Sally Wong", }, { id: "31111111-d146-4932-adb0-20c4222c1e6f", cost: 1, - name: "Taylor Everett" + name: "Taylor Everett", }, { id: "41111111-d146-4932-adb0-20c4222c1e6f", cost: 3.21, - name: "Amy Smith" + name: "Amy Smith", }, { id: "51111111-d146-4932-adb0-20c4222c1e6f", cost: 1.98, - name: "Marie Briggs" - } - ] + name: "Marie Briggs", + }, + ], }); const getCounts = (breakdown) => @@ -142,8 +142,8 @@ const getCounts = (breakdown) => [id]: { id, name, - total: (counts[id]?.total || 0) + cost - } + total: (counts[id]?.total || 0) + cost, + }, }), {} ); diff --git a/ngui/ui/src/components/ExpensesFilters/ExpensesFilters.tsx b/ngui/ui/src/components/ExpensesFilters/ExpensesFilters.tsx index 15e32bbd6..1bf1584f3 100644 --- a/ngui/ui/src/components/ExpensesFilters/ExpensesFilters.tsx +++ b/ngui/ui/src/components/ExpensesFilters/ExpensesFilters.tsx @@ -13,7 +13,7 @@ const ExpensesFilters = ({ items, appliedValues, onFilterAdd, onFilterDelete, on onChange={({ name: filterName, value, checked }) => { if ([POOL_ID_FILTER].includes(filterName)) { onFilterAdd({ - [filterName]: checked ? getPoolIdWithSubPools(value) : value + [filterName]: checked ? getPoolIdWithSubPools(value) : value, }); } else { onFilterAdd({ [filterName]: value }); @@ -21,7 +21,7 @@ const ExpensesFilters = ({ items, appliedValues, onFilterAdd, onFilterDelete, on }} onApply={({ name, value }) => { onFilterAdd({ - [name]: value + [name]: value, }); }} onClear={({ filterName, filterValue }) => { diff --git a/ngui/ui/src/components/FilterComponents/RangeFilter.tsx b/ngui/ui/src/components/FilterComponents/RangeFilter.tsx index 66970ed00..208747a82 100644 --- a/ngui/ui/src/components/FilterComponents/RangeFilter.tsx +++ b/ngui/ui/src/components/FilterComponents/RangeFilter.tsx @@ -45,14 +45,14 @@ const RangeFilter: React.FC = ({ label, buttonIcon = , onChange, - appliedRange + appliedRange, }) => { const intl = useIntl(); const [anchorEl, setAnchorEl] = React.useState(null); const [selectedRange, setSelectedRange] = React.useState({ from: undefined, - to: undefined + to: undefined, }); const popoverId = React.useId(); @@ -77,28 +77,28 @@ const RangeFilter: React.FC = ({ const handleFromChange = (value: Date) => { setSelectedRange((prev) => ({ ...prev, - from: +value + from: +value, })); }; const handleToChange = (value: Date) => { setSelectedRange((prev) => ({ ...prev, - to: +value + to: +value, })); }; const handleResetFrom = () => { setSelectedRange((prev) => ({ ...prev, - from: undefined + from: undefined, })); }; const handleResetTo = () => { setSelectedRange((prev) => ({ ...prev, - to: undefined + to: undefined, })); }; @@ -137,7 +137,7 @@ const RangeFilter: React.FC = ({ onClose={handleCancel} anchorOrigin={{ vertical: "bottom", - horizontal: "left" + horizontal: "left", }} > diff --git a/ngui/ui/src/components/FilterComponents/SelectionFilter.tsx b/ngui/ui/src/components/FilterComponents/SelectionFilter.tsx index ae15db5ea..aa4f9bd0e 100644 --- a/ngui/ui/src/components/FilterComponents/SelectionFilter.tsx +++ b/ngui/ui/src/components/FilterComponents/SelectionFilter.tsx @@ -9,7 +9,7 @@ import { Popover, TextField, Typography, - Divider + Divider, } from "@mui/material"; import Button from "@mui/material/Button"; import { FormattedMessage, useIntl } from "react-intl"; @@ -78,7 +78,7 @@ const SelectionFilter = ({ searchPredicate, onChange, appliedItems, - settings = [] + settings = [], }: FiltersProps) => { const intl = useIntl(); @@ -122,14 +122,14 @@ const SelectionFilter = ({ onChange?.({ values: selectedValues, - settings: selectedSettings + settings: selectedSettings, }); }; const handleSettingChange = (name: string) => (event: React.ChangeEvent) => { setSelectedSettings((prev) => ({ ...prev, - [name]: event.target.checked + [name]: event.target.checked, })); }; @@ -243,7 +243,7 @@ const SelectionFilter = ({ - ) + ), }} /> @@ -276,7 +276,7 @@ const SelectionFilter = ({ sx={{ px: 2, width: "100%", - overflowWrap: "anywhere" + overflowWrap: "anywhere", }} /> ))} @@ -329,7 +329,7 @@ const SelectionFilter = ({ onClose={handleCancel} anchorOrigin={{ vertical: "bottom", - horizontal: "left" + horizontal: "left", }} > diff --git a/ngui/ui/src/components/FilterComponents/SuggestionFilter.tsx b/ngui/ui/src/components/FilterComponents/SuggestionFilter.tsx index 75e62530c..41437599c 100644 --- a/ngui/ui/src/components/FilterComponents/SuggestionFilter.tsx +++ b/ngui/ui/src/components/FilterComponents/SuggestionFilter.tsx @@ -80,7 +80,7 @@ const SuggestionFilter = ({ suggestionGroups, label, onApplySuggestion, appliedF return [ type, // Keep non-suggested values and add selected suggested values - [...nonSuggestedValues, ...selectedValues] + [...nonSuggestedValues, ...selectedValues], ]; }) ); @@ -97,7 +97,7 @@ const SuggestionFilter = ({ suggestionGroups, label, onApplySuggestion, appliedF ...prev, [groupId]: currentValues.includes(suggestion) ? currentValues.filter((item) => item !== suggestion) - : [...currentValues, suggestion] + : [...currentValues, suggestion], }; }); }; @@ -129,7 +129,7 @@ const SuggestionFilter = ({ suggestionGroups, label, onApplySuggestion, appliedF onClose={handleCancel} anchorOrigin={{ vertical: "bottom", - horizontal: "left" + horizontal: "left", }} > diff --git a/ngui/ui/src/components/FilterComponents/constants.ts b/ngui/ui/src/components/FilterComponents/constants.ts index 7975620a2..53331430b 100644 --- a/ngui/ui/src/components/FilterComponents/constants.ts +++ b/ngui/ui/src/components/FilterComponents/constants.ts @@ -1,4 +1,4 @@ export const FILTER_TYPE = Object.freeze({ SELECTION: "selection", - RANGE: "range" + RANGE: "range", }); diff --git a/ngui/ui/src/components/Filters/DataSourceFilter/DataSourceFilter.tsx b/ngui/ui/src/components/Filters/DataSourceFilter/DataSourceFilter.tsx index 157fd8d73..f699e8a90 100644 --- a/ngui/ui/src/components/Filters/DataSourceFilter/DataSourceFilter.tsx +++ b/ngui/ui/src/components/Filters/DataSourceFilter/DataSourceFilter.tsx @@ -22,21 +22,21 @@ class DataSourceFilter extends Filter { additionalProperties: false, properties: { id: { - type: "string" + type: "string", }, name: { - type: "string" + type: "string", }, type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -59,10 +59,10 @@ class DataSourceFilter extends Filter { disableLink: false, dataTestId: `${this.constructor.filterName}_filter_link`, iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` - } + dataTestId: `${this.constructor.filterName}_filter_logo`, + }, })), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -70,7 +70,7 @@ class DataSourceFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/Filter.ts b/ngui/ui/src/components/Filters/Filter.ts index 58f331a7c..2c69f892d 100644 --- a/ngui/ui/src/components/Filters/Filter.ts +++ b/ngui/ui/src/components/Filters/Filter.ts @@ -63,7 +63,7 @@ class Filter { return this._sortFilterValues().map((filterValue) => ({ name: this.constructor.getName(filterValue), value: this.constructor.getValue(filterValue), - label: this.constructor.getDisplayedValueRenderer(filterValue) + label: this.constructor.getDisplayedValueRenderer(filterValue), })); } @@ -80,7 +80,7 @@ class Filter { const commonData = { name: this.constructor.filterName, displayedName: this.constructor.displayedName, - displayedNameString: this.constructor.displayedNameString + displayedNameString: this.constructor.displayedNameString, }; if (filterItem === undefined) { @@ -88,13 +88,13 @@ class Filter { ...commonData, value: appliedFilter, displayedValue: intl.formatMessage({ id: "notFound" }), - displayedValueString: intl.formatMessage({ id: "notFound" }) + displayedValueString: intl.formatMessage({ id: "notFound" }), }; } return { ...commonData, - ...this._getAppliedFilterItem(appliedFilter, filterItem) + ...this._getAppliedFilterItem(appliedFilter, filterItem), }; } diff --git a/ngui/ui/src/components/Filters/Filters.ts b/ngui/ui/src/components/Filters/Filters.ts index df87ca308..208726fcd 100644 --- a/ngui/ui/src/components/Filters/Filters.ts +++ b/ngui/ui/src/components/Filters/Filters.ts @@ -16,10 +16,10 @@ class Filters { getFilterSelectors() { const suggestionsFilter = new Suggestions({ filterValues: { - suggestions: this.filters.flatMap((filter) => filter.getSuggestionValues()) + suggestions: this.filters.flatMap((filter) => filter.getSuggestionValues()), }, appliedFilters: [], - scopeInfo: this.scopeInfo + scopeInfo: this.scopeInfo, }); const selectors = [suggestionsFilter, ...this.filters].map((filter) => this.constructor._getSelector(filter)); @@ -34,7 +34,7 @@ class Filters { type: filter.constructor.type, items: filter.getFilterItems(), enablePopoverCheckbox: filter.constructor.enablePopoverCheckbox, - checkboxLabel: filter.constructor.checkboxLabel + checkboxLabel: filter.constructor.checkboxLabel, }; } @@ -54,7 +54,7 @@ class Filters { displayedNameString: filter.constructor.displayedNameString, value: appliedFilterItem.value, displayedValue: appliedFilterItem.displayedValue, - displayedValueString: appliedFilterItem.displayedValueString + displayedValueString: appliedFilterItem.displayedValueString, })); }); } @@ -76,7 +76,7 @@ class Filters { this.filters .map((filter) => [ filter.constructor.apiName, - filter.appliedFilters.map((applied) => filter.findFilterValue(applied)).filter((el) => el !== undefined) + filter.appliedFilters.map((applied) => filter.findFilterValue(applied)).filter((el) => el !== undefined), ]) .filter(([, values]) => !isEmptyArray(values)) ); diff --git a/ngui/ui/src/components/Filters/GoalsFilter/GoalsFilter.tsx b/ngui/ui/src/components/Filters/GoalsFilter/GoalsFilter.tsx index 1eadb0974..6429385cf 100644 --- a/ngui/ui/src/components/Filters/GoalsFilter/GoalsFilter.tsx +++ b/ngui/ui/src/components/Filters/GoalsFilter/GoalsFilter.tsx @@ -21,7 +21,7 @@ class GoalsFilter extends Filter { _getAppliedFilterItem(appliedFilter, filterItem) { return { value: appliedFilter, - displayedValue: this.constructor.getDisplayedValueRenderer(filterItem) + displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), }; } @@ -29,7 +29,7 @@ class GoalsFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/K8sNamespaceFilter/K8sNamespaceFilter.tsx b/ngui/ui/src/components/Filters/K8sNamespaceFilter/K8sNamespaceFilter.tsx index 2a8823aef..3bf48aa69 100644 --- a/ngui/ui/src/components/Filters/K8sNamespaceFilter/K8sNamespaceFilter.tsx +++ b/ngui/ui/src/components/Filters/K8sNamespaceFilter/K8sNamespaceFilter.tsx @@ -22,18 +22,18 @@ class K8sNamespaceFilter extends Filter { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -53,10 +53,10 @@ class K8sNamespaceFilter extends Filter { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem, () => ({ iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` - } + dataTestId: `${this.constructor.filterName}_filter_logo`, + }, })), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -64,7 +64,7 @@ class K8sNamespaceFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/K8sNodeFilter/K8sNodeFilter.tsx b/ngui/ui/src/components/Filters/K8sNodeFilter/K8sNodeFilter.tsx index 9bcc320f9..9cb0a2613 100644 --- a/ngui/ui/src/components/Filters/K8sNodeFilter/K8sNodeFilter.tsx +++ b/ngui/ui/src/components/Filters/K8sNodeFilter/K8sNodeFilter.tsx @@ -22,18 +22,18 @@ class K8sNodeFilter extends Filter { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -53,10 +53,10 @@ class K8sNodeFilter extends Filter { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem, () => ({ iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` - } + dataTestId: `${this.constructor.filterName}_filter_logo`, + }, })), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -64,7 +64,7 @@ class K8sNodeFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/K8sServiceFilter/K8sServiceFilter.tsx b/ngui/ui/src/components/Filters/K8sServiceFilter/K8sServiceFilter.tsx index bcbb954dd..373b7bdd9 100644 --- a/ngui/ui/src/components/Filters/K8sServiceFilter/K8sServiceFilter.tsx +++ b/ngui/ui/src/components/Filters/K8sServiceFilter/K8sServiceFilter.tsx @@ -22,24 +22,24 @@ class K8sServiceFilter extends Filter { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; constructor({ filterValues, appliedFilters }) { super({ filterValues, - appliedFilters + appliedFilters, }); } @@ -60,10 +60,10 @@ class K8sServiceFilter extends Filter { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem, () => ({ iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` - } + dataTestId: `${this.constructor.filterName}_filter_logo`, + }, })), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -71,7 +71,7 @@ class K8sServiceFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/NetworkTrafficFromFilter/NetworkTrafficFromFilter.tsx b/ngui/ui/src/components/Filters/NetworkTrafficFromFilter/NetworkTrafficFromFilter.tsx index 1d474a600..cbb5536b7 100644 --- a/ngui/ui/src/components/Filters/NetworkTrafficFromFilter/NetworkTrafficFromFilter.tsx +++ b/ngui/ui/src/components/Filters/NetworkTrafficFromFilter/NetworkTrafficFromFilter.tsx @@ -7,7 +7,7 @@ import { CLOUD_ACCOUNT_TYPES_LIST, LINEAR_SELECTOR_ITEMS_TYPES, NETWORK_TRAFFIC_FROM_BE_FILTER, - NETWORK_TRAFFIC_FROM_FILTER + NETWORK_TRAFFIC_FROM_FILTER, } from "utils/constants"; import Filter from "../Filter"; @@ -31,24 +31,24 @@ class NetworkTrafficFromFilter extends Filter { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }, { type: "string", - const: "ANY" - } - ] + const: "ANY", + }, + ], }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -82,10 +82,10 @@ class NetworkTrafficFromFilter extends Filter { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem, () => ({ iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` - } + dataTestId: `${this.constructor.filterName}_filter_logo`, + }, })), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -94,7 +94,7 @@ class NetworkTrafficFromFilter extends Filter { sortObjects({ array: values, field: "name", - type: "asc" + type: "asc", }); const anyNetworkTrafficLocationValueIndex = items.findIndex( @@ -106,7 +106,7 @@ class NetworkTrafficFromFilter extends Filter { return isAnyNetworkTrafficLocationValueExist ? [ items[anyNetworkTrafficLocationValueIndex], - ...sortItems(items.filter((_, index) => index !== anyNetworkTrafficLocationValueIndex)) + ...sortItems(items.filter((_, index) => index !== anyNetworkTrafficLocationValueIndex)), ] : sortItems(items); } diff --git a/ngui/ui/src/components/Filters/NetworkTrafficToFilter/NetworkTrafficToFilter.tsx b/ngui/ui/src/components/Filters/NetworkTrafficToFilter/NetworkTrafficToFilter.tsx index 1428a6644..7c8666edd 100644 --- a/ngui/ui/src/components/Filters/NetworkTrafficToFilter/NetworkTrafficToFilter.tsx +++ b/ngui/ui/src/components/Filters/NetworkTrafficToFilter/NetworkTrafficToFilter.tsx @@ -7,7 +7,7 @@ import { CLOUD_ACCOUNT_TYPES_LIST, LINEAR_SELECTOR_ITEMS_TYPES, NETWORK_TRAFFIC_TO_BE_FILTER, - NETWORK_TRAFFIC_TO_FILTER + NETWORK_TRAFFIC_TO_FILTER, } from "utils/constants"; import Filter from "../Filter"; @@ -31,24 +31,24 @@ class NetworkTrafficToFilter extends Filter { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }, { type: "string", - const: "ANY" - } - ] + const: "ANY", + }, + ], }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -82,10 +82,10 @@ class NetworkTrafficToFilter extends Filter { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem, () => ({ iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` - } + dataTestId: `${this.constructor.filterName}_filter_logo`, + }, })), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -94,7 +94,7 @@ class NetworkTrafficToFilter extends Filter { sortObjects({ array: values, field: "name", - type: "asc" + type: "asc", }); const anyNetworkTrafficLocationValueIndex = items.findIndex( @@ -106,7 +106,7 @@ class NetworkTrafficToFilter extends Filter { return isAnyNetworkTrafficLocationValueExist ? [ items[anyNetworkTrafficLocationValueIndex], - ...sortItems(items.filter((_, index) => index !== anyNetworkTrafficLocationValueIndex)) + ...sortItems(items.filter((_, index) => index !== anyNetworkTrafficLocationValueIndex)), ] : sortItems(items); } diff --git a/ngui/ui/src/components/Filters/OwnerFilter/OwnerFilter.tsx b/ngui/ui/src/components/Filters/OwnerFilter/OwnerFilter.tsx index f7d24c2ab..efca31596 100644 --- a/ngui/ui/src/components/Filters/OwnerFilter/OwnerFilter.tsx +++ b/ngui/ui/src/components/Filters/OwnerFilter/OwnerFilter.tsx @@ -20,25 +20,25 @@ class OwnerFilter extends Filter { additionalProperties: false, properties: { id: { - type: "string" + type: "string", }, name: { - type: "string" - } - } + type: "string", + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; suggestions = [ { name: this.constructor.filterName, value: this.scopeInfo.currentEmployeeId, - label: - } + label: , + }, ]; static _getValue(filterItem) { @@ -57,7 +57,7 @@ class OwnerFilter extends Filter { return { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -65,7 +65,7 @@ class OwnerFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/PoolFilter/PoolFilter.tsx b/ngui/ui/src/components/Filters/PoolFilter/PoolFilter.tsx index 6a362366e..0f47ae07b 100644 --- a/ngui/ui/src/components/Filters/PoolFilter/PoolFilter.tsx +++ b/ngui/ui/src/components/Filters/PoolFilter/PoolFilter.tsx @@ -26,21 +26,21 @@ class PoolFilter extends Filter { additionalProperties: false, properties: { id: { - type: "string" + type: "string", }, name: { - type: "string" + type: "string", }, purpose: { type: "string", - enum: POOL_TYPES_LIST - } - } + enum: POOL_TYPES_LIST, + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -76,13 +76,13 @@ class PoolFilter extends Filter { disableLink: false, dataTestId: `${this.constructor.filterName}_filter_link`, iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` + dataTestId: `${this.constructor.filterName}_filter_logo`, }, - withSubpools: isPoolIdWithSubPools(appliedFilter) + withSubpools: isPoolIdWithSubPools(appliedFilter), })), displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem, () => ({ - withSubPools: isPoolIdWithSubPools(appliedFilter) - })) + withSubPools: isPoolIdWithSubPools(appliedFilter), + })), }; } @@ -90,7 +90,7 @@ class PoolFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/RegionFilter/RegionFilter.tsx b/ngui/ui/src/components/Filters/RegionFilter/RegionFilter.tsx index fa48b5afb..ac741338a 100644 --- a/ngui/ui/src/components/Filters/RegionFilter/RegionFilter.tsx +++ b/ngui/ui/src/components/Filters/RegionFilter/RegionFilter.tsx @@ -22,18 +22,18 @@ class RegionFilter extends Filter { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -53,10 +53,10 @@ class RegionFilter extends Filter { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem, () => ({ iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` - } + dataTestId: `${this.constructor.filterName}_filter_logo`, + }, })), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -64,7 +64,7 @@ class RegionFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/ResourceStateFilter/ResourceStateFilter.tsx b/ngui/ui/src/components/Filters/ResourceStateFilter/ResourceStateFilter.tsx index 64ffbdb33..02be22954 100644 --- a/ngui/ui/src/components/Filters/ResourceStateFilter/ResourceStateFilter.tsx +++ b/ngui/ui/src/components/Filters/ResourceStateFilter/ResourceStateFilter.tsx @@ -14,20 +14,20 @@ class ResourceStateFilter extends Filter { // TODO: Use ajv TS integration to create schema based on types def static filterItemSchema = { - type: "boolean" + type: "boolean", }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "boolean" + type: "boolean", }; suggestions = [ { name: this.constructor.filterName, value: true, - label: this.constructor._getDisplayedValueRenderer(true) - } + label: this.constructor._getDisplayedValueRenderer(true), + }, ]; static _getValue(filterItem) { @@ -46,7 +46,7 @@ class ResourceStateFilter extends Filter { return { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } } diff --git a/ngui/ui/src/components/Filters/ResourceTypeFilter/ResourceTypeFilter.tsx b/ngui/ui/src/components/Filters/ResourceTypeFilter/ResourceTypeFilter.tsx index c045149be..0fcb7bc8d 100644 --- a/ngui/ui/src/components/Filters/ResourceTypeFilter/ResourceTypeFilter.tsx +++ b/ngui/ui/src/components/Filters/ResourceTypeFilter/ResourceTypeFilter.tsx @@ -29,18 +29,18 @@ class ResourceTypeFilter extends Filter { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, type: { type: "string", - enum: Object.values(OPTSCALE_RESOURCE_TYPES) - } - } + enum: Object.values(OPTSCALE_RESOURCE_TYPES), + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -53,7 +53,7 @@ class ResourceTypeFilter extends Filter { resourceInfo={{ resourceType: filterItem.name, clusterTypeId: filterItem.type === OPTSCALE_RESOURCE_TYPES.CLUSTER, - isEnvironment: filterItem.type === OPTSCALE_RESOURCE_TYPES.ENVIRONMENT + isEnvironment: filterItem.type === OPTSCALE_RESOURCE_TYPES.ENVIRONMENT, }} /> ); @@ -75,24 +75,24 @@ class ResourceTypeFilter extends Filter { value: INSTANCE_REGULAR, label: this.constructor._getDisplayedValueRenderer({ name: INSTANCE, - type: OPTSCALE_RESOURCE_TYPES.REGULAR - }) + type: OPTSCALE_RESOURCE_TYPES.REGULAR, + }), }, { name: this.constructor.filterName, value: VOLUME_REGULAR, label: this.constructor._getDisplayedValueRenderer({ name: VOLUME, - type: OPTSCALE_RESOURCE_TYPES.REGULAR - }) - } + type: OPTSCALE_RESOURCE_TYPES.REGULAR, + }), + }, ]; _getAppliedFilterItem(appliedFilter, filterItem) { return { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -100,7 +100,7 @@ class ResourceTypeFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/ServiceType/ServiceFilter.tsx b/ngui/ui/src/components/Filters/ServiceType/ServiceFilter.tsx index 6b52cc0ee..7eeeb369a 100644 --- a/ngui/ui/src/components/Filters/ServiceType/ServiceFilter.tsx +++ b/ngui/ui/src/components/Filters/ServiceType/ServiceFilter.tsx @@ -22,18 +22,18 @@ class ServiceType extends Filter { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -53,10 +53,10 @@ class ServiceType extends Filter { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem, () => ({ iconProps: { - dataTestId: `${this.constructor.filterName}_filter_logo` - } + dataTestId: `${this.constructor.filterName}_filter_logo`, + }, })), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } @@ -64,7 +64,7 @@ class ServiceType extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/StatusFilter/StatusFilter.tsx b/ngui/ui/src/components/Filters/StatusFilter/StatusFilter.tsx index 15f1d38cf..9c6cfacaa 100644 --- a/ngui/ui/src/components/Filters/StatusFilter/StatusFilter.tsx +++ b/ngui/ui/src/components/Filters/StatusFilter/StatusFilter.tsx @@ -21,7 +21,7 @@ class StatusFilter extends Filter { _getAppliedFilterItem(appliedFilter, filterItem) { return { value: appliedFilter, - displayedValue: this.constructor.getDisplayedValueRenderer(filterItem) + displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), }; } @@ -29,7 +29,7 @@ class StatusFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/TagFilter/TagFilter.tsx b/ngui/ui/src/components/Filters/TagFilter/TagFilter.tsx index b9e03b146..cb592f797 100644 --- a/ngui/ui/src/components/Filters/TagFilter/TagFilter.tsx +++ b/ngui/ui/src/components/Filters/TagFilter/TagFilter.tsx @@ -14,12 +14,12 @@ class TagFilter extends Filter { // TODO: Use ajv TS integration to create schema based on types def static filterItemSchema = { - type: "string" + type: "string", }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -38,7 +38,7 @@ class TagFilter extends Filter { return { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } } diff --git a/ngui/ui/src/components/Filters/TasksFilter/TasksFilter.tsx b/ngui/ui/src/components/Filters/TasksFilter/TasksFilter.tsx index 11989cc96..f740e19e5 100644 --- a/ngui/ui/src/components/Filters/TasksFilter/TasksFilter.tsx +++ b/ngui/ui/src/components/Filters/TasksFilter/TasksFilter.tsx @@ -23,7 +23,7 @@ class TasksFilter extends Filter { _getAppliedFilterItem(appliedFilter, filterItem) { return { value: appliedFilter, - displayedValue: this.constructor.getDisplayedValueRenderer(filterItem) + displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), }; } @@ -31,7 +31,7 @@ class TasksFilter extends Filter { return sortObjects({ array: items, field: "name", - type: "asc" + type: "asc", }); } } diff --git a/ngui/ui/src/components/Filters/WithRecommendationsFilter/WithRecommendationsFilter.tsx b/ngui/ui/src/components/Filters/WithRecommendationsFilter/WithRecommendationsFilter.tsx index a39a1bab9..7647b2ef4 100644 --- a/ngui/ui/src/components/Filters/WithRecommendationsFilter/WithRecommendationsFilter.tsx +++ b/ngui/ui/src/components/Filters/WithRecommendationsFilter/WithRecommendationsFilter.tsx @@ -14,12 +14,12 @@ class WithRecommendationsFilter extends Filter { // TODO: Use ajv TS integration to create schema based on types def static filterItemSchema = { - type: "boolean" + type: "boolean", }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "boolean" + type: "boolean", }; static _getValue(filterItem) { @@ -38,7 +38,7 @@ class WithRecommendationsFilter extends Filter { return { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } } diff --git a/ngui/ui/src/components/Filters/WithViolatedConstraintsFilter/WithViolatedConstraintsFilter.tsx b/ngui/ui/src/components/Filters/WithViolatedConstraintsFilter/WithViolatedConstraintsFilter.tsx index 73ff00128..05c8b45e9 100644 --- a/ngui/ui/src/components/Filters/WithViolatedConstraintsFilter/WithViolatedConstraintsFilter.tsx +++ b/ngui/ui/src/components/Filters/WithViolatedConstraintsFilter/WithViolatedConstraintsFilter.tsx @@ -14,20 +14,20 @@ class WithViolatedConstraintsFilter extends Filter { // TODO: Use ajv TS integration to create schema based on types def static filterItemSchema = { - type: "boolean" + type: "boolean", }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "boolean" + type: "boolean", }; suggestions = [ { name: this.constructor.filterName, value: true, - label: - } + label: , + }, ]; static _getValue(filterItem) { @@ -46,7 +46,7 @@ class WithViolatedConstraintsFilter extends Filter { return { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } } diff --git a/ngui/ui/src/components/Filters/WithoutTagFilter/WithoutTagFilter.tsx b/ngui/ui/src/components/Filters/WithoutTagFilter/WithoutTagFilter.tsx index 9693eb1fa..f10e4995d 100644 --- a/ngui/ui/src/components/Filters/WithoutTagFilter/WithoutTagFilter.tsx +++ b/ngui/ui/src/components/Filters/WithoutTagFilter/WithoutTagFilter.tsx @@ -14,12 +14,12 @@ class WithoutTagFilter extends Filter { // TODO: Use ajv TS integration to create schema based on types def static filterItemSchema = { - type: "string" + type: "string", }; // TODO: Use ajv TS integration to create schema based on types def static appliedFilterSchema = { - type: "string" + type: "string", }; static _getValue(filterItem) { @@ -38,7 +38,7 @@ class WithoutTagFilter extends Filter { return { value: appliedFilter, displayedValue: this.constructor.getDisplayedValueRenderer(filterItem), - displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem) + displayedValueString: this.constructor.getDisplayedValueStringRenderer(filterItem), }; } } diff --git a/ngui/ui/src/components/Filters/constants.ts b/ngui/ui/src/components/Filters/constants.ts index e824912ff..51e16e4bd 100644 --- a/ngui/ui/src/components/Filters/constants.ts +++ b/ngui/ui/src/components/Filters/constants.ts @@ -27,7 +27,7 @@ export const SECURITY_CATEGORY = "security"; export const CATEGORIES = Object.freeze({ [ALL_CATEGORY]: "all", [COST_CATEGORY]: "costOptimization", - [SECURITY_CATEGORY]: "security" + [SECURITY_CATEGORY]: "security", }); export const SUPPORTED_CATEGORIES = Object.freeze(Object.keys(CATEGORIES)); @@ -50,7 +50,7 @@ export const RESOURCE_FILTERS = [ TagFilter, WithoutTagFilter, NetworkTrafficFromFilter, - NetworkTrafficToFilter + NetworkTrafficToFilter, ]; export const RESOURCE_FILTERS_NAMES = RESOURCE_FILTERS.map((ResourceFilter) => ResourceFilter.filterName); diff --git a/ngui/ui/src/components/FinOpsChecklist/AdoptionScore/AdoptionScore.styles.ts b/ngui/ui/src/components/FinOpsChecklist/AdoptionScore/AdoptionScore.styles.ts index 558bbcb91..be3556899 100644 --- a/ngui/ui/src/components/FinOpsChecklist/AdoptionScore/AdoptionScore.styles.ts +++ b/ngui/ui/src/components/FinOpsChecklist/AdoptionScore/AdoptionScore.styles.ts @@ -6,16 +6,16 @@ const useStyles = makeStyles()((theme) => ({ display: "flex", flexDirection: "column", alignItems: "center", - padding: theme.spacing(SPACING_2) + padding: theme.spacing(SPACING_2), }, badge: { position: "relative", display: "inline-flex", - marginTop: theme.spacing(SPACING_1) + marginTop: theme.spacing(SPACING_1), }, circleBack: { position: "absolute", - opacity: 0.2 + opacity: 0.2, }, scoreContainer: { position: "absolute", @@ -25,8 +25,8 @@ const useStyles = makeStyles()((theme) => ({ right: 0, display: "flex", alignItems: "center", - justifyContent: "center" - } + justifyContent: "center", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/FinOpsChecklist/AdoptionScore/AdoptionScore.tsx b/ngui/ui/src/components/FinOpsChecklist/AdoptionScore/AdoptionScore.tsx index 4c850c025..bb956e10a 100644 --- a/ngui/ui/src/components/FinOpsChecklist/AdoptionScore/AdoptionScore.tsx +++ b/ngui/ui/src/components/FinOpsChecklist/AdoptionScore/AdoptionScore.tsx @@ -48,7 +48,7 @@ const AdoptionScore = ({ isLoading, fraction }) => { {!isLoading && ( diff --git a/ngui/ui/src/components/FinOpsChecklist/ChecklistCard/ChecklistCard.styles.ts b/ngui/ui/src/components/FinOpsChecklist/ChecklistCard/ChecklistCard.styles.ts index b7a958611..8fad0d235 100644 --- a/ngui/ui/src/components/FinOpsChecklist/ChecklistCard/ChecklistCard.styles.ts +++ b/ngui/ui/src/components/FinOpsChecklist/ChecklistCard/ChecklistCard.styles.ts @@ -4,44 +4,44 @@ const useStyles = makeStyles()((theme) => ({ root: { height: 230, transition: theme.transitions.create("height", { - duration: theme.transitions.duration.shortest - }) + duration: theme.transitions.duration.shortest, + }), }, fullHeight: { - height: "100%" + height: "100%", }, title: { - justifyContent: "center" + justifyContent: "center", }, titleContainer: { - textAlign: "center" + textAlign: "center", }, descriptionContainer: { - wordBreak: "break-word" + wordBreak: "break-word", }, illustrationContainer: { display: "flex", - justifyContent: "center" + justifyContent: "center", }, illustration: { maxWidth: "120px", marginTop: "-60px", transition: theme.transitions.create("filter", { easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.standard - }) + duration: theme.transitions.duration.standard, + }), }, blackAndWhite: { - filter: "grayscale(1)" + filter: "grayscale(1)", }, subtitle: { display: "inline", borderBottom: "1px dashed", width: "fit-content", "&:hover": { - cursor: "pointer" - } - } + cursor: "pointer", + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/FinOpsChecklist/ChecklistCard/ChecklistCard.tsx b/ngui/ui/src/components/FinOpsChecklist/ChecklistCard/ChecklistCard.tsx index f27a6f6d3..c32e3ff3f 100644 --- a/ngui/ui/src/components/FinOpsChecklist/ChecklistCard/ChecklistCard.tsx +++ b/ngui/ui/src/components/FinOpsChecklist/ChecklistCard/ChecklistCard.tsx @@ -18,7 +18,7 @@ const ChecklistCard = ({ title, description, checked, canUpdate, onClick, dataTe return ( } /> @@ -27,7 +27,7 @@ const ChecklistCard = ({ title, description, checked, canUpdate, onClick, dataTe diff --git a/ngui/ui/src/components/FinOpsChecklist/FinOpsChecklist.tsx b/ngui/ui/src/components/FinOpsChecklist/FinOpsChecklist.tsx index 33feb906d..468221d1c 100644 --- a/ngui/ui/src/components/FinOpsChecklist/FinOpsChecklist.tsx +++ b/ngui/ui/src/components/FinOpsChecklist/FinOpsChecklist.tsx @@ -36,7 +36,7 @@ const FinOpsChecklist = ({ items, update, isLoading = false }) => { 5: createPoolsForAllTheDepartments, 6: inviteTeammates, 7: setTTLRulesForAllTheResources, - 8: tagAllTheResources + 8: tagAllTheResources, }[id]; return ( @@ -56,7 +56,7 @@ const FinOpsChecklist = ({ items, update, isLoading = false }) => { {text} ); - } + }, }} /> } diff --git a/ngui/ui/src/components/FormButtonsWrapper/FormButtonsWrapper.styles.ts b/ngui/ui/src/components/FormButtonsWrapper/FormButtonsWrapper.styles.ts index cddbc1034..30c68d9e4 100644 --- a/ngui/ui/src/components/FormButtonsWrapper/FormButtonsWrapper.styles.ts +++ b/ngui/ui/src/components/FormButtonsWrapper/FormButtonsWrapper.styles.ts @@ -5,10 +5,10 @@ const useStyles = makeStyles()((theme) => ({ "& > *": { marginRight: theme.spacing(1), "&:last-child": { - marginRight: 0 - } - } - } + marginRight: 0, + }, + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/FormButtonsWrapper/FormButtonsWrapper.tsx b/ngui/ui/src/components/FormButtonsWrapper/FormButtonsWrapper.tsx index f1e7afefa..dc15060c8 100644 --- a/ngui/ui/src/components/FormButtonsWrapper/FormButtonsWrapper.tsx +++ b/ngui/ui/src/components/FormButtonsWrapper/FormButtonsWrapper.tsx @@ -15,7 +15,7 @@ const FormButtonsWrapper = ({ justifyContent = "flex-start", alignItems, mt = 2, - mb = 0 + mb = 0, }: FormButtonsWrapperProps) => { const { classes } = useStyles(); return ( diff --git a/ngui/ui/src/components/FormattedDigitalUnit/FormattedDigitalUnit.test.tsx b/ngui/ui/src/components/FormattedDigitalUnit/FormattedDigitalUnit.test.tsx index 83980f5e1..78d3ac716 100644 --- a/ngui/ui/src/components/FormattedDigitalUnit/FormattedDigitalUnit.test.tsx +++ b/ngui/ui/src/components/FormattedDigitalUnit/FormattedDigitalUnit.test.tsx @@ -16,7 +16,7 @@ it("Common format IEC byte unit without crashing", () => { { value: 0.5, expected: "0.5 B" }, { value: 1023, expected: "1,023 B" }, { value: 1024, expected: "1 KiB" }, - { value: 312312312, expected: "297.844 MiB" } + { value: 312312312, expected: "297.844 MiB" }, ]; testCases.forEach(({ value, expected }) => { @@ -37,7 +37,7 @@ it("Common format SI byte unit without crashing", () => { { value: 0.5, expected: "0.5 B" }, { value: 1023, expected: "1.023 KB" }, { value: 1024, expected: "1.024 KB" }, - { value: 312312312, expected: "312.312 MB" } + { value: 312312312, expected: "312.312 MB" }, ]; testCases.forEach(({ value, expected }) => { diff --git a/ngui/ui/src/components/FormattedDigitalUnit/FormattedDigitalUnit.ts b/ngui/ui/src/components/FormattedDigitalUnit/FormattedDigitalUnit.ts index 07fdd4c1b..dd748f83a 100644 --- a/ngui/ui/src/components/FormattedDigitalUnit/FormattedDigitalUnit.ts +++ b/ngui/ui/src/components/FormattedDigitalUnit/FormattedDigitalUnit.ts @@ -7,7 +7,7 @@ export const IEC_UNITS = Object.freeze({ MEBIBYTE: "mebibyte", GIBIBYTE: "gibibyte", TEBIBYTE: "tebibyte", - PEBIBYTE: "pebibyte" + PEBIBYTE: "pebibyte", }); export const SI_UNITS = Object.freeze({ @@ -16,7 +16,7 @@ export const SI_UNITS = Object.freeze({ MEGABYTE: "megabyte", GIGABYTE: "gigabyte", TERABYTE: "terabyte", - PETABYTE: "petabyte" + PETABYTE: "petabyte", }); type IecUnitType = (typeof IEC_UNITS)[keyof typeof IEC_UNITS]; @@ -33,12 +33,12 @@ type FormattedDigitalUnitProps = { const IEC_SYSTEM_OF_UNITS = Object.freeze({ BASE: 1024, - UNITS: Object.values(IEC_UNITS) as readonly IecUnitType[] + UNITS: Object.values(IEC_UNITS) as readonly IecUnitType[], }); const SI_SYSTEM_OF_UNITS = Object.freeze({ BASE: 1000, - UNITS: Object.values(SI_UNITS) as readonly SiUnitType[] + UNITS: Object.values(SI_UNITS) as readonly SiUnitType[], }); const getSystemOfUnits = (unitName: UnitType) => { diff --git a/ngui/ui/src/components/FormattedDuration/FormattedDuration.ts b/ngui/ui/src/components/FormattedDuration/FormattedDuration.ts index 1f21c1641..e520763c9 100644 --- a/ngui/ui/src/components/FormattedDuration/FormattedDuration.ts +++ b/ngui/ui/src/components/FormattedDuration/FormattedDuration.ts @@ -15,12 +15,12 @@ const FormattedDuration = ({ durationInSeconds }) => { INTERVAL_DURATION_VALUE_TYPES.DAYS, INTERVAL_DURATION_VALUE_TYPES.HOURS, INTERVAL_DURATION_VALUE_TYPES.MINUTES, - INTERVAL_DURATION_VALUE_TYPES.SECONDS + INTERVAL_DURATION_VALUE_TYPES.SECONDS, ], duration: intervalToDuration({ start: 0, - end: durationInSeconds * 1000 - }) + end: durationInSeconds * 1000, + }), }); }; diff --git a/ngui/ui/src/components/FormattedMoney/FormattedMoney.test.tsx b/ngui/ui/src/components/FormattedMoney/FormattedMoney.test.tsx index e9ee4b3cd..45dd21140 100644 --- a/ngui/ui/src/components/FormattedMoney/FormattedMoney.test.tsx +++ b/ngui/ui/src/components/FormattedMoney/FormattedMoney.test.tsx @@ -14,44 +14,44 @@ it("Common renders without crashing", () => { const cases = [ { value: undefined, - expected: "$0" + expected: "$0", }, { value: null, - expected: "$0" + expected: "$0", }, { value: -10000, - expected: "-$10,000" + expected: "-$10,000", }, { value: -10.005, - expected: "-$10.01" + expected: "-$10.01", }, { value: -0.001, - expected: "\u2248$0" + expected: "\u2248$0", }, { value: 0, - expected: "$0" + expected: "$0", }, { value: 0.001, - expected: "\u2248$0" + expected: "\u2248$0", }, { value: 10.005, - expected: "$10.01" + expected: "$10.01", }, { value: 10.05, - expected: "$10.05" + expected: "$10.05", }, { value: 10000, - expected: "$10,000" - } + expected: "$10,000", + }, ]; const div = document.createElement("div"); const root = createRoot(div); @@ -67,44 +67,44 @@ it("Compact renders without crashing", () => { const cases = [ { value: undefined, - expected: "$0" + expected: "$0", }, { value: null, - expected: "$0" + expected: "$0", }, { value: -10000, - expected: "-$10k" + expected: "-$10k", }, { value: -10.005, - expected: "-$10.01" + expected: "-$10.01", }, { value: -0.001, - expected: "\u2248$0" + expected: "\u2248$0", }, { value: 0, - expected: "$0" + expected: "$0", }, { value: 0.001, - expected: "\u2248$0" + expected: "\u2248$0", }, { value: 10.005, - expected: "$10.01" + expected: "$10.01", }, { value: 10.05, - expected: "$10.05" + expected: "$10.05", }, { value: 10000, - expected: "$10k" - } + expected: "$10k", + }, ]; const div = document.createElement("div"); const root = createRoot(div); @@ -121,44 +121,44 @@ it("Tiny renders without crashing", () => { const cases = [ { value: undefined, - expected: "$0" + expected: "$0", }, { value: null, - expected: "$0" + expected: "$0", }, { value: -10000, - expected: "-$10,000" + expected: "-$10,000", }, { value: -10.005, - expected: "-$10.005" + expected: "-$10.005", }, { value: -0.001, - expected: "-$0.001" + expected: "-$0.001", }, { value: 0, - expected: "$0" + expected: "$0", }, { value: 0.001, - expected: "$0.001" + expected: "$0.001", }, { value: 10.005, - expected: "$10.005" + expected: "$10.005", }, { value: 10.05, - expected: "$10.05" + expected: "$10.05", }, { value: 10000, - expected: "$10,000" - } + expected: "$10,000", + }, ]; const div = document.createElement("div"); const root = createRoot(div); @@ -175,44 +175,44 @@ it("Tiny compact renders without crashing", () => { const cases = [ { value: undefined, - expected: "$0" + expected: "$0", }, { value: null, - expected: "$0" + expected: "$0", }, { value: -10000, - expected: "-$10k" + expected: "-$10k", }, { value: -10.005, - expected: "-$10.005" + expected: "-$10.005", }, { value: -0.001, - expected: "-$0.001" + expected: "-$0.001", }, { value: 0, - expected: "$0" + expected: "$0", }, { value: 0.001, - expected: "$0.001" + expected: "$0.001", }, { value: 10.005, - expected: "$10.005" + expected: "$10.005", }, { value: 10.05, - expected: "$10.05" + expected: "$10.05", }, { value: 10000, - expected: "$10k" - } + expected: "$10k", + }, ]; const div = document.createElement("div"); const root = createRoot(div); diff --git a/ngui/ui/src/components/FormattedMoney/useMoneyFormatter.test.tsx b/ngui/ui/src/components/FormattedMoney/useMoneyFormatter.test.tsx index e8edd9528..5fcd4b51b 100644 --- a/ngui/ui/src/components/FormattedMoney/useMoneyFormatter.test.tsx +++ b/ngui/ui/src/components/FormattedMoney/useMoneyFormatter.test.tsx @@ -20,44 +20,44 @@ it("Common renders without crashing", () => { const cases = [ { value: undefined, - expected: "$0" + expected: "$0", }, { value: null, - expected: "$0" + expected: "$0", }, { value: -10000, - expected: "-$10,000" + expected: "-$10,000", }, { value: -10.005, - expected: "-$10.01" + expected: "-$10.01", }, { value: -0.001, - expected: "\u2248$0" + expected: "\u2248$0", }, { value: 0, - expected: "$0" + expected: "$0", }, { value: 0.001, - expected: "\u2248$0" + expected: "\u2248$0", }, { value: 10.005, - expected: "$10.01" + expected: "$10.01", }, { value: 10.05, - expected: "$10.05" + expected: "$10.05", }, { value: 10000, - expected: "$10,000" - } + expected: "$10,000", + }, ]; const div = document.createElement("div"); const root = createRoot(div); @@ -74,44 +74,44 @@ it("Compact renders without crashing", () => { const cases = [ { value: undefined, - expected: "$0" + expected: "$0", }, { value: null, - expected: "$0" + expected: "$0", }, { value: -10000, - expected: "-$10k" + expected: "-$10k", }, { value: -10.005, - expected: "-$10.01" + expected: "-$10.01", }, { value: -0.001, - expected: "\u2248$0" + expected: "\u2248$0", }, { value: 0, - expected: "$0" + expected: "$0", }, { value: 0.001, - expected: "\u2248$0" + expected: "\u2248$0", }, { value: 10.005, - expected: "$10.01" + expected: "$10.01", }, { value: 10.05, - expected: "$10.05" + expected: "$10.05", }, { value: 10000, - expected: "$10k" - } + expected: "$10k", + }, ]; const div = document.createElement("div"); const root = createRoot(div); @@ -128,44 +128,44 @@ it("Tiny renders without crashing", () => { const cases = [ { value: undefined, - expected: "$0" + expected: "$0", }, { value: null, - expected: "$0" + expected: "$0", }, { value: -10000, - expected: "-$10,000" + expected: "-$10,000", }, { value: -10.005, - expected: "-$10.005" + expected: "-$10.005", }, { value: -0.001, - expected: "-$0.001" + expected: "-$0.001", }, { value: 0, - expected: "$0" + expected: "$0", }, { value: 0.001, - expected: "$0.001" + expected: "$0.001", }, { value: 10.005, - expected: "$10.005" + expected: "$10.005", }, { value: 10.05, - expected: "$10.05" + expected: "$10.05", }, { value: 10000, - expected: "$10,000" - } + expected: "$10,000", + }, ]; const div = document.createElement("div"); const root = createRoot(div); @@ -182,44 +182,44 @@ it("Tiny compact renders without crashing", () => { const cases = [ { value: undefined, - expected: "$0" + expected: "$0", }, { value: null, - expected: "$0" + expected: "$0", }, { value: -10000, - expected: "-$10k" + expected: "-$10k", }, { value: -10.005, - expected: "-$10.005" + expected: "-$10.005", }, { value: -0.001, - expected: "-$0.001" + expected: "-$0.001", }, { value: 0, - expected: "$0" + expected: "$0", }, { value: 0.001, - expected: "$0.001" + expected: "$0.001", }, { value: 10.005, - expected: "$10.005" + expected: "$10.005", }, { value: 10.05, - expected: "$10.05" + expected: "$10.05", }, { value: 10000, - expected: "$10k" - } + expected: "$10k", + }, ]; const div = document.createElement("div"); const root = createRoot(div); diff --git a/ngui/ui/src/components/FormattedMoney/useMoneyFormatter.ts b/ngui/ui/src/components/FormattedMoney/useMoneyFormatter.ts index 910ad03f1..cbc8451c5 100644 --- a/ngui/ui/src/components/FormattedMoney/useMoneyFormatter.ts +++ b/ngui/ui/src/components/FormattedMoney/useMoneyFormatter.ts @@ -58,7 +58,7 @@ export const useMoneyFormatter = () => { [FORMATTED_MONEY_TYPES.COMMON]: formatCommon, [FORMATTED_MONEY_TYPES.COMPACT]: formatCompact, [FORMATTED_MONEY_TYPES.TINY_COMPACT]: formatTinyCompact, - [FORMATTED_MONEY_TYPES.TINY]: formatTiny + [FORMATTED_MONEY_TYPES.TINY]: formatTiny, }[type]; return formatter(intl.formatNumber)({ value, absoluteValue: Math.abs(value), format: calculatedFormat, ...rest }); diff --git a/ngui/ui/src/components/GenerateLiveDemo/Loading.tsx b/ngui/ui/src/components/GenerateLiveDemo/Loading.tsx index ac6d8c7d2..442d1a36f 100644 --- a/ngui/ui/src/components/GenerateLiveDemo/Loading.tsx +++ b/ngui/ui/src/components/GenerateLiveDemo/Loading.tsx @@ -15,7 +15,7 @@ const Loading = () => ( diff --git a/ngui/ui/src/components/GenerateLiveDemo/Retry.tsx b/ngui/ui/src/components/GenerateLiveDemo/Retry.tsx index ee3a98227..70892b04d 100644 --- a/ngui/ui/src/components/GenerateLiveDemo/Retry.tsx +++ b/ngui/ui/src/components/GenerateLiveDemo/Retry.tsx @@ -26,7 +26,7 @@ const Retry = ({ retry }: RetryProps) => { + email: , }} /> diff --git a/ngui/ui/src/components/GoalLabel/GoalLabel.tsx b/ngui/ui/src/components/GoalLabel/GoalLabel.tsx index 50e84462c..b37cd08eb 100644 --- a/ngui/ui/src/components/GoalLabel/GoalLabel.tsx +++ b/ngui/ui/src/components/GoalLabel/GoalLabel.tsx @@ -33,7 +33,7 @@ const GoalLabel = ({ name, goalValue, targetGoalValue, reached, unit, displayInO id="value / value" values={{ value1: , - value2: + value2: , }} /> @@ -49,7 +49,7 @@ const GoalLabel = ({ name, goalValue, targetGoalValue, reached, unit, displayInO style={{ display: "flex", alignItems: "center", - ...(displayInOneLine ? { flexWrap: "nowrap", whiteSpace: "nowrap" } : { flexWrap: "wrap" }) + ...(displayInOneLine ? { flexWrap: "nowrap", whiteSpace: "nowrap" } : { flexWrap: "wrap" }), }} > diff --git a/ngui/ui/src/components/GoogleAuthButton/GoogleAuthButton.tsx b/ngui/ui/src/components/GoogleAuthButton/GoogleAuthButton.tsx index d662742d1..7c1726640 100644 --- a/ngui/ui/src/components/GoogleAuthButton/GoogleAuthButton.tsx +++ b/ngui/ui/src/components/GoogleAuthButton/GoogleAuthButton.tsx @@ -13,7 +13,7 @@ const GoogleAuthButton = ({ handleSignIn, isLoading, disabled }) => { const { message = "", type = "", ...rest } = response; console.warn(`Google response failure ${message}: ${type}`, rest); }, - clientId + clientId, }); const environmentNotSet = !clientId; @@ -30,7 +30,7 @@ const GoogleAuthButton = ({ handleSignIn, isLoading, disabled }) => { fullWidth tooltip={{ show: environmentNotSet, - messageId: "signInWithGoogleIsNotConfigured" + messageId: "signInWithGoogleIsNotConfigured", }} /> ); diff --git a/ngui/ui/src/components/GoogleAuthButton/hooks.ts b/ngui/ui/src/components/GoogleAuthButton/hooks.ts index 1cdb8fd89..2c369c532 100644 --- a/ngui/ui/src/components/GoogleAuthButton/hooks.ts +++ b/ngui/ui/src/components/GoogleAuthButton/hooks.ts @@ -42,7 +42,7 @@ const useGoogleLogin = ({ onSuccess, onError, clientId }) => { }, error_callback: (nonOAuthError) => { onErrorRef.current?.(nonOAuthError); - } + }, }); clientRef.current = client; diff --git a/ngui/ui/src/components/Greeter/Greeter.styles.ts b/ngui/ui/src/components/Greeter/Greeter.styles.ts index ce14ea6a7..9b74f475e 100644 --- a/ngui/ui/src/components/Greeter/Greeter.styles.ts +++ b/ngui/ui/src/components/Greeter/Greeter.styles.ts @@ -3,29 +3,29 @@ import { makeStyles } from "tss-react/mui"; const getFormAndMapWrapperClasses = (theme) => { const wrapperClass = { [theme.breakpoints.down("xl")]: { - width: 400 + width: 400, }, [theme.breakpoints.down("sm")]: { maxWidth: 400, - width: "100%" + width: "100%", }, - width: 600 + width: 600, }; return { - wrapper: wrapperClass + wrapper: wrapperClass, }; }; const useStyles = makeStyles()((theme) => ({ root: { - height: "100vh" + height: "100vh", }, centeredFlexColumnDirection: { display: "flex", alignItems: "center", justifyContent: "center", flexDirection: "column", - textAlign: "center" + textAlign: "center", }, linkWrapper: { width: "100%", @@ -33,46 +33,46 @@ const useStyles = makeStyles()((theme) => ({ justifyContent: "space-between", alignItems: "center", [theme.breakpoints.down("md")]: { - justifyContent: "space-around" - } + justifyContent: "space-around", + }, }, imagesWithCaptions: { maxWidth: "590px", [theme.breakpoints.down("md")]: { - justifyContent: "center" + justifyContent: "center", }, [theme.breakpoints.up("xl")]: { - maxWidth: "690px" - } + maxWidth: "690px", + }, }, imageWithCaptionWrapper: { alignItems: "center", display: "flex", flexDirection: "column", - width: "100%" + width: "100%", }, image: { maxWidth: "122px", width: "80%", marginBottom: theme.spacing(1.5), [theme.breakpoints.down("md")]: { - width: "50%" - } + width: "50%", + }, }, caption: { textAlign: "center", - lineHeight: 1.25 + lineHeight: 1.25, }, webIconMargin: { - marginRight: "0.5rem" + marginRight: "0.5rem", }, leftSideGrid: { - backgroundColor: theme.palette.common.white + backgroundColor: theme.palette.common.white, }, rightSideGrid: { - backgroundColor: "#333F53" + backgroundColor: "#333F53", }, - ...getFormAndMapWrapperClasses(theme) + ...getFormAndMapWrapperClasses(theme), })); export default useStyles; diff --git a/ngui/ui/src/components/Greeter/Greeter.tsx b/ngui/ui/src/components/Greeter/Greeter.tsx index c48ff1d62..0110406b3 100644 --- a/ngui/ui/src/components/Greeter/Greeter.tsx +++ b/ngui/ui/src/components/Greeter/Greeter.tsx @@ -75,7 +75,7 @@ const ImagesWithCaptions = () => { { caption: "optscale.welcome.caption3", src: anomalyDetectionToAvoidBudgetOverruns }, { caption: "optscale.welcome.caption4", src: finopsReadinessMaturityAssessment }, { caption: "optscale.welcome.caption5", src: itEnvironmentManagement }, - { caption: "optscale.welcome.caption6", src: geoNetworkTrafficCostMap } + { caption: "optscale.welcome.caption6", src: geoNetworkTrafficCostMap }, ].map(({ caption, src }, index) => ( { const { [OPTSCALE_CAPABILITY_QUERY_PARAMETER_NAME]: capability } = getSearchParams(); const url = buildQueryParameters(LIVE_DEMO, [ - capability ? `${OPTSCALE_CAPABILITY_QUERY_PARAMETER_NAME}=${capability}` : "" + capability ? `${OPTSCALE_CAPABILITY_QUERY_PARAMETER_NAME}=${capability}` : "", ]); navigate(url); @@ -158,7 +158,7 @@ const Greeter = ({ content }: GreeterProps) => { const gridDefinition = [ { - key: "empty" + key: "empty", }, { key: "link", @@ -167,7 +167,7 @@ const Greeter = ({ content }: GreeterProps) => {
    - ) + ), }, { key: "form", @@ -179,23 +179,23 @@ const Greeter = ({ content }: GreeterProps) => {
    {content}
    ), - className: classes.centeredFlexColumnDirection + className: classes.centeredFlexColumnDirection, }, { key: "bannerAndText", className: classes.centeredFlexColumnDirection, - children: + children: , }, { key: "customers", className: classes.centeredFlexColumnDirection, - children: + children: , }, { key: "integrations", className: classes.centeredFlexColumnDirection, - children: - } + children: , + }, ]; const spacing = SPACING_2; @@ -212,12 +212,12 @@ const Greeter = ({ content }: GreeterProps) => {
    { return ( { displayedGroupName: "displayedGroupName", count: 0, totalExpenses: 0, - expenses: [] - } - ] + expenses: [], + }, + ], ]} /> diff --git a/ngui/ui/src/components/GroupedTables/GroupedTables.tsx b/ngui/ui/src/components/GroupedTables/GroupedTables.tsx index 07645910f..6c0335619 100644 --- a/ngui/ui/src/components/GroupedTables/GroupedTables.tsx +++ b/ngui/ui/src/components/GroupedTables/GroupedTables.tsx @@ -14,7 +14,7 @@ const AccordionTitle = ({ name, count, totalExpenses }) => ( {name} @@ -31,14 +31,14 @@ const GroupedTables = ({ onAccordionChange, getGroupHeaderDataTestId, startDateTimestamp, - endDateTimestamp + endDateTimestamp, }) => { const [expanded, setExpanded] = useState({}); const toggleExpanded = (groupValue, state) => { const closeAll = (currentState) => Object.fromEntries(Object.keys(currentState).map((name) => [name, false])); setExpanded((currentState) => ({ ...closeAll(currentState), - [groupValue]: state + [groupValue]: state, })); }; @@ -89,7 +89,7 @@ const GroupedTables = ({ // override query param on open if (expandedAccordionState) { updateSearchParams({ - [GROUP_VALUE_QUERY_PARAM_NAME]: groupValue + [GROUP_VALUE_QUERY_PARAM_NAME]: groupValue, }); } else { // remove query param on close diff --git a/ngui/ui/src/components/HeaderButtons/HeaderButtons.styles.ts b/ngui/ui/src/components/HeaderButtons/HeaderButtons.styles.ts index 4113cea08..07d0515ef 100644 --- a/ngui/ui/src/components/HeaderButtons/HeaderButtons.styles.ts +++ b/ngui/ui/src/components/HeaderButtons/HeaderButtons.styles.ts @@ -5,20 +5,20 @@ const useStyles = makeStyles()((theme) => ({ display: "none", [theme.breakpoints.up("md")]: { display: "flex", - alignItems: "center" - } + alignItems: "center", + }, }, sectionMobile: { display: "flex", [theme.breakpoints.up("md")]: { - display: "none" - } + display: "none", + }, }, customMenuItem: { display: "flex", alignItems: "center", - flexDirection: "column" - } + flexDirection: "column", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/HeaderButtons/HeaderButtons.tsx b/ngui/ui/src/components/HeaderButtons/HeaderButtons.tsx index 6b10061df..10570527f 100644 --- a/ngui/ui/src/components/HeaderButtons/HeaderButtons.tsx +++ b/ngui/ui/src/components/HeaderButtons/HeaderButtons.tsx @@ -52,7 +52,7 @@ const HeaderButtons = ({ isProductTourAvailable = false }) => { icon={} tooltip={{ show: true, - value: + value: , }} /> { disabled={!isProductTourAvailable || !isTourAvailableForCurrentBreakpoint} tooltip={{ show: true, - value: + value: , }} /> { color="primary" tooltip={{ show: true, - value: + value: , }} /> { color="primary" tooltip={{ show: true, - value: + value: , }} /> } @@ -103,7 +103,7 @@ const HeaderButtons = ({ isProductTourAvailable = false }) => { color="primary" tooltip={{ show: true, - value: + value: , }} /> @@ -114,7 +114,7 @@ const HeaderButtons = ({ isProductTourAvailable = false }) => { color="primary" tooltip={{ show: true, - value: + value: , }} /> @@ -127,7 +127,7 @@ const HeaderButtons = ({ isProductTourAvailable = false }) => { color="primary" tooltip={{ show: true, - value: + value: , }} /> } diff --git a/ngui/ui/src/components/HeaderHelperCell/HeaderHelperCell.tsx b/ngui/ui/src/components/HeaderHelperCell/HeaderHelperCell.tsx index e7d9ae537..939eee32a 100644 --- a/ngui/ui/src/components/HeaderHelperCell/HeaderHelperCell.tsx +++ b/ngui/ui/src/components/HeaderHelperCell/HeaderHelperCell.tsx @@ -18,7 +18,7 @@ const HeaderHelperCell = ({ titleDataTestId, onTooltipTitleClick, helperMessageValues, - helperMessageId + helperMessageId, }: HeaderHelperCellProps) => { const intl = useIntl(); diff --git a/ngui/ui/src/components/HeartLineChart/HeartLineChart.test.tsx b/ngui/ui/src/components/HeartLineChart/HeartLineChart.test.tsx index ab80dc425..2c0b70739 100644 --- a/ngui/ui/src/components/HeartLineChart/HeartLineChart.test.tsx +++ b/ngui/ui/src/components/HeartLineChart/HeartLineChart.test.tsx @@ -13,7 +13,7 @@ it("renders without crashing", () => { height={100} thresholdArea={{ start: 2, - end: 2 + end: 2, }} /> diff --git a/ngui/ui/src/components/HeartLineChart/HeartLineChart.tsx b/ngui/ui/src/components/HeartLineChart/HeartLineChart.tsx index 374e12289..87e79e725 100644 --- a/ngui/ui/src/components/HeartLineChart/HeartLineChart.tsx +++ b/ngui/ui/src/components/HeartLineChart/HeartLineChart.tsx @@ -65,7 +65,7 @@ const getGradient = ( export const DEFAULT_COLORS = Object.freeze({ START_THRESHOLD: "#00BE41", - END_THRESHOLD: "#FF0000" + END_THRESHOLD: "#FF0000", }); const DOT_RADIUS = 3; @@ -74,7 +74,7 @@ const MARGIN = Object.freeze({ LEFT: DOT_RADIUS + 1, TOP: DOT_RADIUS + 1, BOTTOM: DOT_RADIUS + 1, - RIGHT: DOT_RADIUS + 1 + RIGHT: DOT_RADIUS + 1, }); const HeartLineChart = ({ values, width, height, thresholdArea, thresholdColors = {}, tooltip, debug = false }) => { @@ -91,17 +91,17 @@ const HeartLineChart = ({ values, width, height, thresholdArea, thresholdColors const yScale = getScale({ domain: [maxValue, minValue], - range: innerHeight + range: innerHeight, }); const xScale = getScale({ domain: [0, values.length - 1], - range: innerWidth + range: innerWidth, }); const points = values.map((value, index) => ({ x: xScale(index), - y: yScale(value) + y: yScale(value), })); const thresholdStart = yScale(thresholdArea.start); @@ -113,7 +113,7 @@ const HeartLineChart = ({ values, width, height, thresholdArea, thresholdColors xStart: 0, yStart: 0, xEnd: innerWidth, - yEnd: innerHeight + yEnd: innerHeight, }; const gradient = getGradient(ctx, { @@ -124,7 +124,7 @@ const HeartLineChart = ({ values, width, height, thresholdArea, thresholdColors thresholdEnd, startThresholdColor, endThresholdColor, - lineAreaRectangle + lineAreaRectangle, }); ctx.strokeStyle = gradient; @@ -137,11 +137,11 @@ const HeartLineChart = ({ values, width, height, thresholdArea, thresholdColors points, originRelativeToCanvas: { x: MARGIN.LEFT, - y: MARGIN.TOP + y: MARGIN.TOP, }, strokeStyle: gradient, fillStyle: gradient, - dotRadius: DOT_RADIUS + dotRadius: DOT_RADIUS, }); if (debug) { diff --git a/ngui/ui/src/components/HighlightsLayer/HighlightsLayer.test.tsx b/ngui/ui/src/components/HighlightsLayer/HighlightsLayer.test.tsx index de1410e26..bf240177a 100644 --- a/ngui/ui/src/components/HighlightsLayer/HighlightsLayer.test.tsx +++ b/ngui/ui/src/components/HighlightsLayer/HighlightsLayer.test.tsx @@ -11,12 +11,12 @@ it("renders without crashing", () => { chartOptions={{ data: [ { - data: [{ x: 1 }] - } + data: [{ x: 1 }], + }, ], xScale: vi.fn, innerHeight: 10, - areaOpacity: 0.1 + areaOpacity: 0.1, }} shouldHighlight={vi.fn} /> diff --git a/ngui/ui/src/components/HighlightsLayer/HighlightsLayer.tsx b/ngui/ui/src/components/HighlightsLayer/HighlightsLayer.tsx index a819d45a6..8b6465d9c 100644 --- a/ngui/ui/src/components/HighlightsLayer/HighlightsLayer.tsx +++ b/ngui/ui/src/components/HighlightsLayer/HighlightsLayer.tsx @@ -23,7 +23,7 @@ const getAreas = ({ shouldHighlight, xValues, getXCoordinateOfXValue }) => { const currentValueXCoordinate = getXCoordinateOfXValue(xValue); return { start: currentValueXCoordinate + getAreaStartShift(currentXValueIndex), - end: currentValueXCoordinate + getAreaEndShift(currentXValueIndex) + end: currentValueXCoordinate + getAreaEndShift(currentXValueIndex), }; } return null; @@ -41,7 +41,7 @@ const HighlightsLayer = ({ chartOptions, shouldHighlight }) => { const areas = getAreas({ shouldHighlight, xValues, - getXCoordinateOfXValue + getXCoordinateOfXValue, }); return !isEmptyArray(areas) ? ( diff --git a/ngui/ui/src/components/HtmlSymbol/HtmlSymbol.tsx b/ngui/ui/src/components/HtmlSymbol/HtmlSymbol.tsx index a44c62b9d..6bf19a198 100644 --- a/ngui/ui/src/components/HtmlSymbol/HtmlSymbol.tsx +++ b/ngui/ui/src/components/HtmlSymbol/HtmlSymbol.tsx @@ -3,7 +3,7 @@ export const HTML_SYMBOL = Object.freeze({ colon: <>:, comma: <>,, period: <>., - multiply: <>× + multiply: <>×, }); type HtmlSymbolProps = { diff --git a/ngui/ui/src/components/Icon/Icon.styles.ts b/ngui/ui/src/components/Icon/Icon.styles.ts index 98fc235eb..b16d59a67 100644 --- a/ngui/ui/src/components/Icon/Icon.styles.ts +++ b/ngui/ui/src/components/Icon/Icon.styles.ts @@ -2,35 +2,35 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ icon: { - verticalAlign: "middle" + verticalAlign: "middle", }, info: { - color: theme.palette.info.main + color: theme.palette.info.main, }, primary: { - color: theme.palette.primary.main + color: theme.palette.primary.main, }, warning: { - color: theme.palette.warning.main + color: theme.palette.warning.main, }, error: { - color: theme.palette.error.main + color: theme.palette.error.main, }, success: { - color: theme.palette.success.main + color: theme.palette.success.main, }, white: { - color: theme.palette.common.white + color: theme.palette.common.white, }, inherit: { - color: "inherit" + color: "inherit", }, right: { - marginRight: "0.2rem" + marginRight: "0.2rem", }, left: { - marginLeft: "0.2rem" - } + marginLeft: "0.2rem", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Icon/Icon.tsx b/ngui/ui/src/components/Icon/Icon.tsx index 801cb131f..5c085fbed 100644 --- a/ngui/ui/src/components/Icon/Icon.tsx +++ b/ngui/ui/src/components/Icon/Icon.tsx @@ -31,7 +31,7 @@ const Icon = ({ fontSize = "small", color = "info", tooltip = {}, - dataTestId + dataTestId, }: IconProps) => { const { classes, cx } = useStyles(); diff --git a/ngui/ui/src/components/IconButton/IconButton.styles.ts b/ngui/ui/src/components/IconButton/IconButton.styles.ts index 268a4166d..2a75c7106 100644 --- a/ngui/ui/src/components/IconButton/IconButton.styles.ts +++ b/ngui/ui/src/components/IconButton/IconButton.styles.ts @@ -2,11 +2,11 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ buttonProgress: { - margin: theme.spacing(1) + margin: theme.spacing(1), }, tooltipSpan: { - width: "max-content" - } + width: "max-content", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/IconError/IconError.styles.ts b/ngui/ui/src/components/IconError/IconError.styles.ts index 28e6e8279..d8feea193 100644 --- a/ngui/ui/src/components/IconError/IconError.styles.ts +++ b/ngui/ui/src/components/IconError/IconError.styles.ts @@ -3,8 +3,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ icon: { fontSize: "4rem", - color: theme.palette.error.main - } + color: theme.palette.error.main, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/InfoRow/InfoRow.test.tsx b/ngui/ui/src/components/InfoRow/InfoRow.test.tsx index fb200c918..088b9eb31 100644 --- a/ngui/ui/src/components/InfoRow/InfoRow.test.tsx +++ b/ngui/ui/src/components/InfoRow/InfoRow.test.tsx @@ -7,7 +7,7 @@ it("renders without crashing", () => { const root = createRoot(div); root.render( - + ); root.unmount(); diff --git a/ngui/ui/src/components/InlineSeverityAlert/InlineSeverityAlert.styles.ts b/ngui/ui/src/components/InlineSeverityAlert/InlineSeverityAlert.styles.ts index f6b50b622..2e2a62f3e 100644 --- a/ngui/ui/src/components/InlineSeverityAlert/InlineSeverityAlert.styles.ts +++ b/ngui/ui/src/components/InlineSeverityAlert/InlineSeverityAlert.styles.ts @@ -2,8 +2,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ alert: { - display: "inline-flex" - } + display: "inline-flex", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/InlineSeverityAlert/InlineSeverityAlert.tsx b/ngui/ui/src/components/InlineSeverityAlert/InlineSeverityAlert.tsx index 276e573c8..06b2de160 100644 --- a/ngui/ui/src/components/InlineSeverityAlert/InlineSeverityAlert.tsx +++ b/ngui/ui/src/components/InlineSeverityAlert/InlineSeverityAlert.tsx @@ -18,7 +18,7 @@ const InlineSeverityAlert = ({ messageValues, messageDataTestId, severity = "info", - sx = {} + sx = {}, }: InlineSeverityAlertProps) => { const { classes } = useStyles(); diff --git a/ngui/ui/src/components/Input/Input.styles.ts b/ngui/ui/src/components/Input/Input.styles.ts index 7fa00eb51..8020fae59 100644 --- a/ngui/ui/src/components/Input/Input.styles.ts +++ b/ngui/ui/src/components/Input/Input.styles.ts @@ -5,8 +5,8 @@ const useStyles = makeStyles()(() => ({ // this depends on text-security npm package fontFamily: "text-security-disc", // use -webkit-text-security if the browser supports it - WebkitTextSecurity: "disc" - } + WebkitTextSecurity: "disc", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Input/Input.tsx b/ngui/ui/src/components/Input/Input.tsx index 61ceada86..4409fcd95 100644 --- a/ngui/ui/src/components/Input/Input.tsx +++ b/ngui/ui/src/components/Input/Input.tsx @@ -35,18 +35,18 @@ const Input = forwardRef((props, ref) => { inputProps={{ ...inputProps, "data-test-id": dataTestId, - className: cx(inputClassName, inputProps.className) + className: cx(inputClassName, inputProps.className), }} sx={{ sx, fieldset: { ...sx?.fieldset, - border: readOnly ? "none" : undefined - } + border: readOnly ? "none" : undefined, + }, }} InputLabelProps={{ shrink: true, - ...InputLabelProps + ...InputLabelProps, }} InputProps={InputProps} minRows={minRows} diff --git a/ngui/ui/src/components/Integrations/BIExport/BIExport.tsx b/ngui/ui/src/components/Integrations/BIExport/BIExport.tsx index 7a0f8c9b5..d65809f86 100644 --- a/ngui/ui/src/components/Integrations/BIExport/BIExport.tsx +++ b/ngui/ui/src/components/Integrations/BIExport/BIExport.tsx @@ -21,9 +21,9 @@ const BIExport = ({ isLoading, exportsCount }) => ( messageId="numberOfBIExports" values={{ number: exportsCount, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} - /> + />, ]} /> ); diff --git a/ngui/ui/src/components/Integrations/GitHub/GitHub.tsx b/ngui/ui/src/components/Integrations/GitHub/GitHub.tsx index 2473b91e6..bd27f80c9 100644 --- a/ngui/ui/src/components/Integrations/GitHub/GitHub.tsx +++ b/ngui/ui/src/components/Integrations/GitHub/GitHub.tsx @@ -29,7 +29,7 @@ const GitHub = () => ( {chunks} - ) + ), }} />, , @@ -38,9 +38,9 @@ const GitHub = () => ( key="description3" messageId="integrationsGitHubDescription3" values={{ - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} - /> + />, ]} /> ); diff --git a/ngui/ui/src/components/Integrations/GitLab/GitLab.tsx b/ngui/ui/src/components/Integrations/GitLab/GitLab.tsx index 9e75ae7ee..708d28f76 100644 --- a/ngui/ui/src/components/Integrations/GitLab/GitLab.tsx +++ b/ngui/ui/src/components/Integrations/GitLab/GitLab.tsx @@ -31,7 +31,7 @@ const GitLab = () => ( {chunks} - ) + ), }} />, , @@ -40,9 +40,9 @@ const GitLab = () => ( key="description3" messageId="integrationsGitLabDescription3" values={{ - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} - /> + />, ]} /> ); diff --git a/ngui/ui/src/components/Integrations/GoogleCalendar/GoogleCalendar.tsx b/ngui/ui/src/components/Integrations/GoogleCalendar/GoogleCalendar.tsx index 67502cb85..1454b2247 100644 --- a/ngui/ui/src/components/Integrations/GoogleCalendar/GoogleCalendar.tsx +++ b/ngui/ui/src/components/Integrations/GoogleCalendar/GoogleCalendar.tsx @@ -18,7 +18,7 @@ export const GOOGLE_CALENDAR = "googleCalendar"; const GOOGLE_CALENDAR_STATUS = Object.freeze({ ALL_DISABLED: "allDisabled", CAN_CONNECT: "canConnect", - CAN_DISCONNECT: "canDisconnect" + CAN_DISCONNECT: "canDisconnect", }); const getBlocksDependingOnCalendarConnectionStatus = ({ googleCalendarStatus, isLoading, shareableLink, lastCompleted }) => { @@ -35,7 +35,7 @@ const getBlocksDependingOnCalendarConnectionStatus = ({ googleCalendarStatus, is key="description2" messageId="integrationsGoogleCalendarDescription2" values={{ - link: {shareableLink} + link: {shareableLink}, }} />, : + lastSync === 0 ? : , }} - /> + />, ]; } default: @@ -56,11 +56,11 @@ const getBlocksDependingOnCalendarConnectionStatus = ({ googleCalendarStatus, is const getBlocks = (googleCalendarStatus, isLoading, { shareable_link: shareableLink, last_completed: lastCompleted }) => { const defaultBlocks = [ - + , ]; return [ ...defaultBlocks, - ...getBlocksDependingOnCalendarConnectionStatus({ googleCalendarStatus, isLoading, shareableLink, lastCompleted }) + ...getBlocksDependingOnCalendarConnectionStatus({ googleCalendarStatus, isLoading, shareableLink, lastCompleted }), ]; }; @@ -77,7 +77,7 @@ const getButton = ({ googleCalendarStatus, isLoading, canUpdate, canDelete, open startIcon={} tooltip={{ show: !canUpdate, - messageId: "onlyOrganizationManagersCanSetThisUp" + messageId: "onlyOrganizationManagersCanSetThisUp", }} color="primary" messageId="connectCalendar" @@ -91,7 +91,7 @@ const getButton = ({ googleCalendarStatus, isLoading, canUpdate, canDelete, open disabled={!canDelete} tooltip={{ show: !canDelete, - messageId: "onlyOrganizationManagersCanDisconnectThis" + messageId: "onlyOrganizationManagersCanDisconnectThis", }} color="error" variant="contained" @@ -135,15 +135,15 @@ const GoogleCalendar = ({ isLoading, serviceAccount, calendarSynchronization }) canUpdate, canDelete, openConnectModal, - openDisconnectModal + openDisconnectModal, })} withBackdrop={!serviceAccount && !isLoading} backdropMessage={{ id: "notAvailableOnYourSetup", values: { email: , - br:
    - } + br:
    , + }, }} blocks={getBlocks(googleCalendarStatus, isLoading, calendarSynchronization)} /> diff --git a/ngui/ui/src/components/Integrations/Integration/Integration.styles.ts b/ngui/ui/src/components/Integrations/Integration/Integration.styles.ts index faad14723..4c2790de7 100644 --- a/ngui/ui/src/components/Integrations/Integration/Integration.styles.ts +++ b/ngui/ui/src/components/Integrations/Integration/Integration.styles.ts @@ -3,12 +3,12 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ blocksWrapper: { "& > *:not(:last-child)": { - marginBottom: theme.spacing(1) - } + marginBottom: theme.spacing(1), + }, }, paper: { - padding: theme.spacing(2) - } + padding: theme.spacing(2), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Integrations/Integrations.tsx b/ngui/ui/src/components/Integrations/Integrations.tsx index b919d317f..7856b0481 100644 --- a/ngui/ui/src/components/Integrations/Integrations.tsx +++ b/ngui/ui/src/components/Integrations/Integrations.tsx @@ -19,39 +19,39 @@ import { SLACK_INTEGRATION } from "./Slack/Slack"; const actionBarDefinition = { title: { - messageId: "integrations" - } + messageId: "integrations", + }, }; const integrationsGridItems = [ { node: , - key: SLACK_INTEGRATION + key: SLACK_INTEGRATION, }, { node: , - key: GOOGLE_CALENDAR + key: GOOGLE_CALENDAR, }, { node: , - key: JIRA + key: JIRA, }, { node: , - key: BI_EXPORT + key: BI_EXPORT, }, { node: , - key: GITLAB + key: GITLAB, }, { node: , - key: GITHUB + key: GITHUB, }, { node: , - key: JENKINS - } + key: JENKINS, + }, ]; const Integrations = () => ( diff --git a/ngui/ui/src/components/Integrations/Jenkins/Jenkins.tsx b/ngui/ui/src/components/Integrations/Jenkins/Jenkins.tsx index cbf23464c..40ab3ea54 100644 --- a/ngui/ui/src/components/Integrations/Jenkins/Jenkins.tsx +++ b/ngui/ui/src/components/Integrations/Jenkins/Jenkins.tsx @@ -33,7 +33,7 @@ const Jenkins = () => ( {chunks} - ) + ), }} />, , @@ -42,9 +42,9 @@ const Jenkins = () => ( key="description3" messageId="integrationsJenkinsDescription3" values={{ - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} - /> + />, ]} /> ); diff --git a/ngui/ui/src/components/Integrations/Jira/Jira.tsx b/ngui/ui/src/components/Integrations/Jira/Jira.tsx index 4b4da2467..53a0c9107 100644 --- a/ngui/ui/src/components/Integrations/Jira/Jira.tsx +++ b/ngui/ui/src/components/Integrations/Jira/Jira.tsx @@ -14,7 +14,7 @@ const Jira = ({ connectedEmployees, connectedWorkspaces, isCurrentEmployeeConnectedToJira, - isLoadingProps = {} + isLoadingProps = {}, }) => { const { isGetEmployeesLoading = false, isGetJiraOrganizationStatusLoading = false } = isLoadingProps; @@ -46,7 +46,7 @@ const Jira = ({ values={{ total: totalEmployees, connected: connectedEmployees, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} />, {url} ))} - ) + ), ]} /> ); diff --git a/ngui/ui/src/components/Integrations/Slack/Slack.tsx b/ngui/ui/src/components/Integrations/Slack/Slack.tsx index 0f05d43ca..b66c48097 100644 --- a/ngui/ui/src/components/Integrations/Slack/Slack.tsx +++ b/ngui/ui/src/components/Integrations/Slack/Slack.tsx @@ -12,7 +12,7 @@ const Slack = ({ totalEmployees, connectedEmployees, isCurrentEmployeeConnectedToSlack, - isLoadingProps = {} + isLoadingProps = {}, }) => { const { isGetEmployeesLoading = false, isGetSlackInstallationPathLoading = false } = isLoadingProps; @@ -44,10 +44,10 @@ const Slack = ({ values={{ total: totalEmployees, connected: connectedEmployees, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} />, - + , ]} /> ); diff --git a/ngui/ui/src/components/Integrations/Title.tsx b/ngui/ui/src/components/Integrations/Title.tsx index a12840996..33c695b27 100644 --- a/ngui/ui/src/components/Integrations/Title.tsx +++ b/ngui/ui/src/components/Integrations/Title.tsx @@ -5,7 +5,7 @@ const Title = ({ icon, label }) => ( sx={{ display: "flex", alignItems: "center", - columnGap: (theme) => theme.spacing(1) + columnGap: (theme) => theme.spacing(1), }} > {icon} diff --git a/ngui/ui/src/components/IntegrationsGallery/IntegrationsGallery.styles.ts b/ngui/ui/src/components/IntegrationsGallery/IntegrationsGallery.styles.ts index 7596c9345..6625bc073 100644 --- a/ngui/ui/src/components/IntegrationsGallery/IntegrationsGallery.styles.ts +++ b/ngui/ui/src/components/IntegrationsGallery/IntegrationsGallery.styles.ts @@ -2,7 +2,7 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ title: { - color: theme.palette.common.white + color: theme.palette.common.white, }, logosWrapper: { width: "100%", @@ -10,16 +10,16 @@ const useStyles = makeStyles()((theme) => ({ flexWrap: "wrap", rowGap: "10px", columnGap: "45px", - justifyContent: "center" + justifyContent: "center", }, logoWrapper: { width: 25, height: 54, - display: "flex" + display: "flex", }, logoImage: { - width: "100%" - } + width: "100%", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/IntegrationsGallery/IntegrationsGallery.tsx b/ngui/ui/src/components/IntegrationsGallery/IntegrationsGallery.tsx index 64e7ac819..a50e50de1 100644 --- a/ngui/ui/src/components/IntegrationsGallery/IntegrationsGallery.tsx +++ b/ngui/ui/src/components/IntegrationsGallery/IntegrationsGallery.tsx @@ -16,48 +16,48 @@ import useStyles from "./IntegrationsGallery.styles"; const integrationsLogos = [ { src: slack, - altMessageId: "slack" + altMessageId: "slack", }, { src: jenkins, - altMessageId: "jenkins" + altMessageId: "jenkins", }, { src: jira, - altMessageId: "jira" + altMessageId: "jira", }, { src: gitlab, - altMessageId: "gitLab" + altMessageId: "gitLab", }, { src: github, - altMessageId: "gitHub" + altMessageId: "gitHub", }, { src: terraform, - altMessageId: "terraform" + altMessageId: "terraform", }, { src: dataBricks, - altMessageId: "databricks" + altMessageId: "databricks", }, { src: pytorch, - altMessageId: "pytorch" + altMessageId: "pytorch", }, { src: kubeflow, - altMessageId: "kubeflow" + altMessageId: "kubeflow", }, { src: spark, - altMessageId: "spark" + altMessageId: "spark", }, { src: tensorflow, - altMessageId: "tensorflow" - } + altMessageId: "tensorflow", + }, ]; const IntegrationsGallery = () => { diff --git a/ngui/ui/src/components/IntervalTimePicker/IntervalTimePicker.tsx b/ngui/ui/src/components/IntervalTimePicker/IntervalTimePicker.tsx index fd9877eda..806dc072b 100644 --- a/ngui/ui/src/components/IntervalTimePicker/IntervalTimePicker.tsx +++ b/ngui/ui/src/components/IntervalTimePicker/IntervalTimePicker.tsx @@ -11,7 +11,7 @@ import { addMinutes, addDays, roundTimeToInterval, - AMOUNT_30_MINUTES + AMOUNT_30_MINUTES, } from "utils/datetime"; import { capitalize } from "utils/strings"; import IntervalTimePopoverContent from "./IntervalTimePopoverContent"; @@ -20,40 +20,40 @@ const quickValuesItemsDefinition = [ { key: "now", label: "now", - getValue: () => undefined + getValue: () => undefined, }, { key: "3h", label: "valueHours", translateValues: { value: "3", - symbol: "+" + symbol: "+", }, - getValue: (roundTo) => +addMinutes(roundTimeToInterval(+new Date(), roundTo), 180) + getValue: (roundTo) => +addMinutes(roundTimeToInterval(+new Date(), roundTo), 180), }, { key: "1d", label: "valueDays", translateValues: { value: "1", - symbol: "+" + symbol: "+", }, - getValue: (roundTo) => +addDays(roundTimeToInterval(+new Date(), roundTo), 1) + getValue: (roundTo) => +addDays(roundTimeToInterval(+new Date(), roundTo), 1), }, { key: "3d", label: "valueDays", translateValues: { value: "3", - symbol: "+" + symbol: "+", }, - getValue: (roundTo) => +addDays(roundTimeToInterval(+new Date(), roundTo), 3) + getValue: (roundTo) => +addDays(roundTimeToInterval(+new Date(), roundTo), 3), }, { key: "noLimit", label: "noLimit", - getValue: () => null - } + getValue: () => null, + }, ]; const QuickValues = ({ quickValues, orQuickValues, onApply, intervalMinutes, dataTestIds = {} }) => { @@ -65,7 +65,7 @@ const QuickValues = ({ quickValues, orQuickValues, onApply, intervalMinutes, dat .map((item) => ({ ...item, dataTestId: `${itemDataTestId}_${item.key}`, - onClick: () => onApply(item.getValue(intervalMinutes)) + onClick: () => onApply(item.getValue(intervalMinutes)), })); const itemsDefinition = getItemsDefinition(quickValues); @@ -90,7 +90,7 @@ const Field = ({ onApply, onClose, margin, - dataTestIds = {} + dataTestIds = {}, }) => { const { input: inputDataTestId, iconButton: iconButtonDataTestId } = dataTestIds; @@ -124,8 +124,8 @@ const Field = ({ messageId: "set", variant: "contained", onClick: onApply, - closable: true - } + closable: true, + }, ]} handleClose={onClose} /> @@ -148,7 +148,7 @@ const IntervalTimePicker = ({ quickValues, intervalMinutes = AMOUNT_30_MINUTES, dataTestIds = {}, - withTimePicker = false + withTimePicker = false, }) => { const intl = useIntl(); @@ -194,7 +194,7 @@ const IntervalTimePicker = ({ return (
    { const { classes, cx } = useStyles(); const today = new Date(); @@ -103,13 +103,13 @@ const IntervalTimePopoverContent = ({ const inHoverRange = () => false; const helpers = { - inHoverRange + inHoverRange, }; const handlers = { onDayClick: onDayClickHandler, onDayHover, - onMonthNavigate + onMonthNavigate, }; const canNavigatePast = differenceInCalendarMonths(monthToShow, minDateValid) >= 1; @@ -131,13 +131,13 @@ const IntervalTimePopoverContent = ({ marker={1} userBounds={{ minDate: getTime(minDateValid), - maxDate: getTime(maxDateValid) + maxDate: getTime(maxDateValid), }} dataTestIds={{ monthSelector: "selector_previous_month", yearSelector: "selector_previous_year", btnPrev: "btn_previous_left", - btnNext: "btn_previous_right" + btnNext: "btn_previous_right", }} /> diff --git a/ngui/ui/src/components/IntervalTimePicker/IntervalTimeSelectors.tsx b/ngui/ui/src/components/IntervalTimePicker/IntervalTimeSelectors.tsx index 8a424e79b..00c825e42 100644 --- a/ngui/ui/src/components/IntervalTimePicker/IntervalTimeSelectors.tsx +++ b/ngui/ui/src/components/IntervalTimePicker/IntervalTimeSelectors.tsx @@ -10,7 +10,7 @@ import { roundTimeToInterval, AMOUNT_30_MINUTES, generateDayHours, - MERIDIEM_NAMES + MERIDIEM_NAMES, } from "utils/datetime"; const IntervalTimeSelectors = ({ value = +new Date(), setValue, stepMinutes = AMOUNT_30_MINUTES }) => { diff --git a/ngui/ui/src/components/Invitation/Invitation.tsx b/ngui/ui/src/components/Invitation/Invitation.tsx index 3332addae..9850f3f5d 100644 --- a/ngui/ui/src/components/Invitation/Invitation.tsx +++ b/ngui/ui/src/components/Invitation/Invitation.tsx @@ -55,7 +55,7 @@ const PermissionsList = ({ roleTargetMessageId, invites }: PermissionsListProps) ), - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> } @@ -82,7 +82,7 @@ const AcceptInvitationTitle = ({ ownerName, ownerEmail, organizationNameInvitedT : organizationNameInvitedTo} - ) + ), }} /> diff --git a/ngui/ui/src/components/InviteEmployees/InviteEmployees.tsx b/ngui/ui/src/components/InviteEmployees/InviteEmployees.tsx index 2d0c1884c..5c51c2096 100644 --- a/ngui/ui/src/components/InviteEmployees/InviteEmployees.tsx +++ b/ngui/ui/src/components/InviteEmployees/InviteEmployees.tsx @@ -10,12 +10,12 @@ const actionBarDefinition = { breadcrumbs: [ - + , ], title: { text: , - dataTestId: "lbl_users_invitation" - } + dataTestId: "lbl_users_invitation", + }, }; const InviteEmployees = ({ onSubmit, availablePools, isLoadingProps = {} }) => { diff --git a/ngui/ui/src/components/JiraIssuesAttachments/JiraIssuesAttachments.styles.ts b/ngui/ui/src/components/JiraIssuesAttachments/JiraIssuesAttachments.styles.ts index 7551b678a..9039ca966 100644 --- a/ngui/ui/src/components/JiraIssuesAttachments/JiraIssuesAttachments.styles.ts +++ b/ngui/ui/src/components/JiraIssuesAttachments/JiraIssuesAttachments.styles.ts @@ -3,11 +3,11 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ list: { margin: 0, - paddingInlineStart: theme.spacing(3) + paddingInlineStart: theme.spacing(3), }, toggleListItem: { - listStyleType: "none" - } + listStyleType: "none", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/JiraIssuesAttachments/JiraIssuesAttachments.tsx b/ngui/ui/src/components/JiraIssuesAttachments/JiraIssuesAttachments.tsx index e799c4e68..bc5a367c9 100644 --- a/ngui/ui/src/components/JiraIssuesAttachments/JiraIssuesAttachments.tsx +++ b/ngui/ui/src/components/JiraIssuesAttachments/JiraIssuesAttachments.tsx @@ -17,7 +17,11 @@ const JiraIssueListItem = ({ issueName, link }) => ( const ToggleListItem = ({ onClick, label }) => { const { classes } = useStyles(); - return
  • {{label}}
  • ; + return ( +
  • + {label} +
  • + ); }; const JiraIssuesListItems = ({ issues }) => diff --git a/ngui/ui/src/components/JsonView/JsonView.tsx b/ngui/ui/src/components/JsonView/JsonView.tsx index 96cbbe026..a5614ef91 100644 --- a/ngui/ui/src/components/JsonView/JsonView.tsx +++ b/ngui/ui/src/components/JsonView/JsonView.tsx @@ -13,13 +13,13 @@ const JsonView = ({ value, onChange, id, viewOnly = false }) => { height="auto" width="100%" onChange={onChange} - waitAfterKeyPress={0} + waitAfterKeyPress={1000} confirmGood={false} colors={theme.palette.json} viewOnly={viewOnly} style={{ warningBox: { display: "none" }, - body: { fontSize: theme.typography.pxToRem(14), fontFamily: "monospace" } + body: { fontSize: theme.typography.pxToRem(14), fontFamily: "monospace" }, }} /> ); diff --git a/ngui/ui/src/components/K8sRightsizing/K8sRightsizing.tsx b/ngui/ui/src/components/K8sRightsizing/K8sRightsizing.tsx index 763a4ea78..9adef0c77 100644 --- a/ngui/ui/src/components/K8sRightsizing/K8sRightsizing.tsx +++ b/ngui/ui/src/components/K8sRightsizing/K8sRightsizing.tsx @@ -11,7 +11,7 @@ const K8sRightsizing = ({ actionBarDefinition, namespaces, isLoading = false, ta diff --git a/ngui/ui/src/components/K8sRightsizing/K8sRightsizingMocked.tsx b/ngui/ui/src/components/K8sRightsizing/K8sRightsizingMocked.tsx index ec941dcb7..232c6d6a9 100644 --- a/ngui/ui/src/components/K8sRightsizing/K8sRightsizingMocked.tsx +++ b/ngui/ui/src/components/K8sRightsizing/K8sRightsizingMocked.tsx @@ -32,7 +32,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -65,7 +65,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -98,7 +98,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -131,7 +131,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -164,7 +164,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -197,7 +197,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -230,7 +230,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -263,7 +263,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -296,7 +296,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5944524-387e-4017-b5de-faeecab0f30a", @@ -329,7 +329,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -362,7 +362,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -395,7 +395,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -428,7 +428,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -461,7 +461,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -494,7 +494,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -527,7 +527,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -560,7 +560,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -593,7 +593,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -626,7 +626,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -659,7 +659,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -692,7 +692,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -725,7 +725,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -758,7 +758,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -791,7 +791,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "c5599567-3582-4824-a72f-24d19edc6e27", @@ -824,7 +824,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "1293fca8-d363-4d1e-999f-74723a843676", @@ -857,7 +857,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "1293fca8-d363-4d1e-999f-74723a843676", @@ -890,7 +890,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "1293fca8-d363-4d1e-999f-74723a843676", @@ -923,7 +923,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "1293fca8-d363-4d1e-999f-74723a843676", @@ -956,7 +956,7 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 + namespace_quota_memory_requests_low: 0.0, }, { cloud_account_id: "1293fca8-d363-4d1e-999f-74723a843676", @@ -989,8 +989,8 @@ const namespacesMockData = [ namespace_quota_cpu_requests_medium: 0.0, namespace_quota_memory_requests_medium: 0.0, namespace_quota_cpu_requests_low: 0.0, - namespace_quota_memory_requests_low: 0.0 - } + namespace_quota_memory_requests_low: 0.0, + }, ]; const K8sRightsizingMocked = ({ actionBarDefinition }) => ( diff --git a/ngui/ui/src/components/K8sRightsizingTable/K8sRightsizingTable.tsx b/ngui/ui/src/components/K8sRightsizingTable/K8sRightsizingTable.tsx index 910ac35ff..00dc89d67 100644 --- a/ngui/ui/src/components/K8sRightsizingTable/K8sRightsizingTable.tsx +++ b/ngui/ui/src/components/K8sRightsizingTable/K8sRightsizingTable.tsx @@ -25,7 +25,7 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi () => namespaces.map((obj) => ({ ...obj, - location: [obj.cloud_account_name, obj.namespace].join() + location: [obj.cloud_account_name, obj.namespace].join(), })), [namespaces] ); @@ -41,9 +41,9 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi accessorKey: "name", defaultSort: "asc", style: { - maxWidth: 200 + maxWidth: 200, }, - cell: ({ cell }) => {cell.getValue()} + cell: ({ cell }) => {cell.getValue()}, }, { header: ( @@ -55,11 +55,11 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi defaultSort: "asc", cell: ({ row: { - original: { application, namespace, cloud_account_id: cloudAccountId, cloud_account_name: cloudAccountName } - } + original: { application, namespace, cloud_account_id: cloudAccountId, cloud_account_name: cloudAccountName }, + }, }) => { const link = ( - }> + }> @@ -77,14 +77,14 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi ); const namespaceCaption = { key: `${application}_${cloudAccountId}`, - node: {link} + node: {link}, }; return ( ); - } + }, }, resourcesMeter({ id: "cpu_utilization", @@ -107,7 +107,7 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi ) : ( - ) + ), }), resourcesUsed({ headerDataTestId: "lbl_total_pod_cpu_hours", @@ -116,7 +116,7 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi questionMarkMessageId: "cpuUsedTooltip", accessorKey: "total_pod_cpu_hours", totalAccessor: "total_pod_cpu_hours", - totalRequestsAccessor: "total_pod_cpu_requests" + totalRequestsAccessor: "total_pod_cpu_requests", }), resourcesMeter({ id: "memory_utilization", @@ -136,7 +136,7 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi mismatchedLimitMessageId: "memoryUtilizationProgressbarTooltip.mismatchedLimit", valueFormatterFn: (value) => ( - ) + ), }), resourcesUsed({ headerDataTestId: "lbl_total_pod_memory_gb", @@ -145,8 +145,8 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi questionMarkMessageId: "totalPodMemoryUsedTooltip", accessorKey: "total_pod_memory_gb", totalAccessor: "total_pod_memory_gb", - totalRequestsAccessor: "total_pod_memory_requests_gb" - }) + totalRequestsAccessor: "total_pod_memory_requests_gb", + }), ], [startOfMonth, today] ); @@ -159,7 +159,7 @@ const K8sRightsizingTable = ({ namespaces, isLoading = false, tableActionBarDefi dataTestIds={{ searchInput: "input_search", searchButton: "btn_search", - deleteSearchButton: "btn_delete_search" + deleteSearchButton: "btn_delete_search", }} localization={{ emptyMessageId: "noApplications" }} actionBar={tableActionBarDefinition} diff --git a/ngui/ui/src/components/KeyValueChartTooltipBody/KeyValueChartTooltipBody.tsx b/ngui/ui/src/components/KeyValueChartTooltipBody/KeyValueChartTooltipBody.tsx index eeda32f62..f6afd1ec1 100644 --- a/ngui/ui/src/components/KeyValueChartTooltipBody/KeyValueChartTooltipBody.tsx +++ b/ngui/ui/src/components/KeyValueChartTooltipBody/KeyValueChartTooltipBody.tsx @@ -8,8 +8,8 @@ import { FORMATTED_MONEY_TYPES } from "utils/constants"; // TODO: Check the connection between this style and the styles in the style file (https://gitlab.com/hystax/ngui/-/merge_requests/2017#note_637241676) const TooltipTypography = withStyles(Typography, { root: { - fontSize: "0.9rem" - } + fontSize: "0.9rem", + }, }); const KeyValueChartTooltipBody = ({ title, boldTitle = false, text, icon, value }) => { diff --git a/ngui/ui/src/components/KeyValueLabel/KeyValueLabel.tsx b/ngui/ui/src/components/KeyValueLabel/KeyValueLabel.tsx index 7490287fb..2bfe45b0e 100644 --- a/ngui/ui/src/components/KeyValueLabel/KeyValueLabel.tsx +++ b/ngui/ui/src/components/KeyValueLabel/KeyValueLabel.tsx @@ -57,7 +57,7 @@ const KeyValueLabel = forwardRef( display: "flex", alignItems: "center", flexWrap: "wrap", - ...sx + ...sx, }} > ( display: "flex", flexWrap: "nowrap", whiteSpace: "normal", - overflowWrap: "anywhere" + overflowWrap: "anywhere", }} > {renderKey()} - {<>: } + <>:  diff --git a/ngui/ui/src/components/KubernetesIntegration/KubernetesIntegration.tsx b/ngui/ui/src/components/KubernetesIntegration/KubernetesIntegration.tsx index b34b7369d..6d362b83b 100644 --- a/ngui/ui/src/components/KubernetesIntegration/KubernetesIntegration.tsx +++ b/ngui/ui/src/components/KubernetesIntegration/KubernetesIntegration.tsx @@ -77,7 +77,7 @@ const KubernetesIntegration = ({ dataSourceId, user }: KubernetesIntegrationProp {GITHUB_HYSTAX_K8S_COST_METRICS_COLLECTOR} - ) + ), }} /> diff --git a/ngui/ui/src/components/LabelChip/LabelChip.tsx b/ngui/ui/src/components/LabelChip/LabelChip.tsx index d9d80432a..7851dbd86 100644 --- a/ngui/ui/src/components/LabelChip/LabelChip.tsx +++ b/ngui/ui/src/components/LabelChip/LabelChip.tsx @@ -28,11 +28,11 @@ const LabelChip = ({ label, colorizeBy = label, labelSymbolsLimit = DEFAULT_LABEL_SYMBOLS_LIMIT, - labelTypographyProps + labelTypographyProps, }: LabelChipProps) => { const theme = useTheme(); const { - palette: { getContrastText } + palette: { getContrastText }, } = theme; const { r, g, b } = calculateColorFromString(colorizeBy); @@ -50,7 +50,7 @@ const LabelChip = ({ sx={{ color: getContrastText(rgbColor), backgroundColor: rgbColor, - borderColor: rgbColor + borderColor: rgbColor, }} size="small" /> diff --git a/ngui/ui/src/components/LastTaskRunGoals/LastTaskRunGoals.tsx b/ngui/ui/src/components/LastTaskRunGoals/LastTaskRunGoals.tsx index 369dbd8ed..cf5e9d7db 100644 --- a/ngui/ui/src/components/LastTaskRunGoals/LastTaskRunGoals.tsx +++ b/ngui/ui/src/components/LastTaskRunGoals/LastTaskRunGoals.tsx @@ -17,12 +17,12 @@ const LastTaskRunGoals = ({ lastRunMetrics, taskReachedGoals }) => display: "flex", flexWrap: "wrap", alignItems: "center", - minHeight: "30px" + minHeight: "30px", }} >
    diff --git a/ngui/ui/src/components/LayoutWrapper/LayoutWrapper.styles.ts b/ngui/ui/src/components/LayoutWrapper/LayoutWrapper.styles.ts index 33b61a616..052b67906 100644 --- a/ngui/ui/src/components/LayoutWrapper/LayoutWrapper.styles.ts +++ b/ngui/ui/src/components/LayoutWrapper/LayoutWrapper.styles.ts @@ -6,8 +6,8 @@ const useStyles = makeStyles()(() => ({ paddingLeft: "0", paddingRight: "0", margin: "auto", - maxWidth: "none" - } + maxWidth: "none", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/LeaderboardCandidateDetailsModalContent.tsx b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/LeaderboardCandidateDetailsModalContent.tsx index edc06c444..c31e9543b 100644 --- a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/LeaderboardCandidateDetailsModalContent.tsx +++ b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/LeaderboardCandidateDetailsModalContent.tsx @@ -8,7 +8,7 @@ const LeaderboardCandidateDetailsModalContent = ({ taskId, candidateDetails, lea hyperparams: hyperparameters = {}, metrics: groupSecondaryMetrics = {}, primary_metric: groupPrimaryMetric = {}, - coverage + coverage, } = candidateDetails; return ( @@ -19,7 +19,7 @@ const LeaderboardCandidateDetailsModalContent = ({ taskId, candidateDetails, lea hyperparameters={hyperparameters} metrics={Object.fromEntries([ ...Object.values(groupPrimaryMetric).map(({ name, value, unit }) => [name, { value, unit }]), - ...Object.values(groupSecondaryMetrics).map(({ name, value, unit }) => [name, { value, unit }]) + ...Object.values(groupSecondaryMetrics).map(({ name, value, unit }) => [name, { value, unit }]), ])} coverage={coverage} /> diff --git a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/CoverageTab.tsx b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/CoverageTab.tsx index 2b48bfec2..6730d989e 100644 --- a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/CoverageTab.tsx +++ b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/CoverageTab.tsx @@ -25,18 +25,18 @@ const DatasetsTable = ({ datasets }) => { ), id: "dataset", style: { - width: "500px" + width: "500px", }, cell: ({ row: { - original: { name, path } - } + original: { name, path }, + }, }) => ( <> {name} {path} - ) + ), }, { header: ( @@ -48,8 +48,8 @@ const DatasetsTable = ({ datasets }) => { enableSorting: false, cell: ({ row: { - original: { covered_by: coveredBy } - } + original: { covered_by: coveredBy }, + }, }) => { if (coveredBy) { const { task_id: taskId, id: runId, number: runNumber, name: runName } = coveredBy; @@ -71,8 +71,8 @@ const DatasetsTable = ({ datasets }) => { ); - } - } + }, + }, ], [] ); @@ -82,10 +82,10 @@ const DatasetsTable = ({ datasets }) => { data={tableData} columns={columns} localization={{ - emptyMessageId: "noDataset" + emptyMessageId: "noDataset", }} counters={{ - show: false + show: false, }} /> ); @@ -112,7 +112,7 @@ const CoverageTab = ({ datasets, datasetCoverage, isLoading = false }) => ( colorizeBy={label} labelTypographyProps={{ variant: "subtitle1", - component: "h4" + component: "h4", }} /> diff --git a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/CoverageTabContainer.tsx b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/CoverageTabContainer.tsx index a5af2defe..83289a829 100644 --- a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/CoverageTabContainer.tsx +++ b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/CoverageTabContainer.tsx @@ -26,15 +26,15 @@ const CoverageTabContainer = ({ taskId, qualifiedRunIds, leaderboard, candidateD return { ...dataset, - covered_by: runs.find((run) => run.dataset?.id === datasetId) + covered_by: runs.find((run) => run.dataset?.id === datasetId), }; }) - .filter(Boolean) + .filter(Boolean), ]) ?? [] )} datasets={leaderboard.datasets.map((datum) => ({ ...datum, - covered_by: runs.find(({ dataset: { id: datasetId } = {} }) => datasetId === datum.id) + covered_by: runs.find(({ dataset: { id: datasetId } = {} }) => datasetId === datum.id), }))} isLoading={isGetRunsBulkLoading || isDatasetsLoading} /> diff --git a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/RunsTab.tsx b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/RunsTab.tsx index 9d1dd7697..92a64354e 100644 --- a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/RunsTab.tsx +++ b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/RunsTab.tsx @@ -38,13 +38,13 @@ const RunsTable = ({ candidatePrimaryMetric, candidateSecondaryMetrics, runsData accessorFn: ({ number, name }) => formatRunFullName(number, name), defaultSort: "desc", style: { - width: "200px" + width: "200px", }, searchFn: (runName, filterValue, { row }) => { const search = filterValue.toLocaleLowerCase(); const { - original: { runset_name: runsetName, finish } + original: { runset_name: runsetName, finish }, } = row; const timeAgo = formatRunTimeAgo(finish); @@ -53,7 +53,7 @@ const RunsTable = ({ candidatePrimaryMetric, candidateSecondaryMetrics, runsData runName, timeAgo, // runsetName can be null - runsetName ?? "" + runsetName ?? "", ].some((str) => str.toLocaleLowerCase().includes(search)); }, sortingFn: "alphanumeric", @@ -65,7 +65,7 @@ const RunsTable = ({ candidatePrimaryMetric, candidateSecondaryMetrics, runsData caption={[ { node: {formatRunTimeAgo(finish)}, - key: "timeAgo" + key: "timeAgo", }, ...(runsetName ? [ @@ -81,10 +81,10 @@ const RunsTable = ({ candidatePrimaryMetric, candidateSecondaryMetrics, runsData } /> ), - key: "template" - } + key: "template", + }, ] - : []) + : []), ]} > @@ -92,11 +92,11 @@ const RunsTable = ({ candidatePrimaryMetric, candidateSecondaryMetrics, runsData ); - } + }, }, dataset({ id: "dataset", - accessorFn: (originalRow) => originalRow.dataset?.name + accessorFn: (originalRow) => originalRow.dataset?.name, }), ...[candidatePrimaryMetric, ...candidateSecondaryMetrics].map(({ key, name, unit }) => ({ header: {name}, @@ -107,8 +107,10 @@ const RunsTable = ({ candidatePrimaryMetric, candidateSecondaryMetrics, runsData return formatDynamicFractionDigitsValue({ value }).includes(search); }, accessorFn: (originalRow) => originalRow.data?.[key]?.value, - cell: ({ cell }) => - })) + cell: ({ cell }) => ( + + ), + })), ], [formatDynamicFractionDigitsValue, formatRunTimeAgo, candidatePrimaryMetric, candidateSecondaryMetrics] ); @@ -118,14 +120,14 @@ const RunsTable = ({ candidatePrimaryMetric, candidateSecondaryMetrics, runsData data={tableData} columns={columns} localization={{ - emptyMessageId: "noRuns" + emptyMessageId: "noRuns", }} withSearch pageSize={RUNS_TABLE_ROWS_PER_PAGE} enablePaginationQueryParam={false} enableSearchQueryParam={false} counters={{ - show: false + show: false, }} /> ); diff --git a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/RunsTabContainer.tsx b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/RunsTabContainer.tsx index 16ac7f471..c90d10dae 100644 --- a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/RunsTabContainer.tsx +++ b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/RunsTabContainer.tsx @@ -19,14 +19,14 @@ const RunsTabContainer = ({ taskId, candidateDetails, qualifiedRunIds, otherData key: primaryMetricKey, name: primaryMetricName, aggregateFunction: primaryMetricAggregationFunction, - unit: primaryMetricUnit + unit: primaryMetricUnit, }; const candidateSecondaryMetrics = Object.entries(candidateDetails.metrics ?? {}).map(([key, payload]) => ({ key, name: payload.name, aggregateFunction: payload.func, - unit: payload.unit + unit: payload.unit, })); return ( diff --git a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/Tabs.tsx b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/Tabs.tsx index 08b708e27..6527404c2 100644 --- a/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/Tabs.tsx +++ b/ngui/ui/src/components/LeaderboardCandidateDetailsModalContent/components/Tabs.tsx @@ -8,7 +8,7 @@ import RunsTabContainer from "./RunsTabContainer"; const TABS = Object.freeze({ RUNS: "runs", COVERAGE: "coverage", - DISCUSSION: "discussion" + DISCUSSION: "discussion", }); const Tabs = ({ taskId, candidateDetails, leaderboard }) => { @@ -29,7 +29,7 @@ const Tabs = ({ taskId, candidateDetails, leaderboard }) => { qualifiedRunIds={qualifiedRunIds} otherDatasetRunIds={otherDatasetRunIds} /> - ) + ), }, { title: TABS.COVERAGE, @@ -41,13 +41,13 @@ const Tabs = ({ taskId, candidateDetails, leaderboard }) => { leaderboard={leaderboard} candidateDetails={candidateDetails} /> - ) + ), }, { title: TABS.DISCUSSION, dataTestId: "tab_discussion", - node: - } + node: , + }, ]; return ( @@ -56,7 +56,7 @@ const Tabs = ({ taskId, candidateDetails, leaderboard }) => { tabs, defaultTab: TABS.RUNS, name: "candidate-details-tabs", - queryTabName: "candidateDetailsTab" + queryTabName: "candidateDetailsTab", }} /> ); diff --git a/ngui/ui/src/components/LeaderboardDatasetsCoverageRules/LeaderboardDatasetsCoverageRules.tsx b/ngui/ui/src/components/LeaderboardDatasetsCoverageRules/LeaderboardDatasetsCoverageRules.tsx index 2da92ae77..e1fe90c20 100644 --- a/ngui/ui/src/components/LeaderboardDatasetsCoverageRules/LeaderboardDatasetsCoverageRules.tsx +++ b/ngui/ui/src/components/LeaderboardDatasetsCoverageRules/LeaderboardDatasetsCoverageRules.tsx @@ -47,7 +47,7 @@ const CoverageStatus = ({ covered, all }: CoverageStatusProps) => ( id="value / value" values={{ value1: covered, - value2: all + value2: all, }} /> @@ -64,7 +64,7 @@ const NoDatasetsCoverageRulesMessage = ({ message = {} }: NoDatasetsCoverageRule const LeaderboardDatasetsCoverageRules = ({ datasets, coverageRules, - noDatasetsCoverageRulesMessage + noDatasetsCoverageRulesMessage, }: LeaderboardDatasetsCoverageRulesProps) => { const hasDatasetsCovered = datasets.all > 0; const hasCoverageRules = !isEmptyArray(coverageRules); diff --git a/ngui/ui/src/components/LeaderboardForm/FormElements/DatasetLabelsCoverageField.tsx b/ngui/ui/src/components/LeaderboardForm/FormElements/DatasetLabelsCoverageField.tsx index 384d11e35..d54c4333b 100644 --- a/ngui/ui/src/components/LeaderboardForm/FormElements/DatasetLabelsCoverageField.tsx +++ b/ngui/ui/src/components/LeaderboardForm/FormElements/DatasetLabelsCoverageField.tsx @@ -19,8 +19,8 @@ import { FormValues } from "../types"; const { DATASETS_COVERAGE_ARRAY_FIELD_NAMES: { NAME: FIELD_NAME, - ARRAY_FIELD_NAMES: { DATASET_LABEL, LAST_DATASETS_COVERED } - } + ARRAY_FIELD_NAMES: { DATASET_LABEL, LAST_DATASETS_COVERED }, + }, } = FIELD_NAMES; const filter = createFilterOptions(); @@ -30,7 +30,7 @@ const MAX_DATASETS_COVERED = 100; const LastDatasetsCoveredInput = ({ index }) => { const { formState: { isSubmitted }, - trigger + trigger, } = useFormContext(); return ( @@ -55,7 +55,7 @@ const DatasetLabelSelect = ({ index, labels, selectorsCount }) => { const { control, formState: { errors, isSubmitted }, - trigger + trigger, } = useFormContext(); const fieldName = `${FIELD_NAME}.${index}.${DATASET_LABEL}`; @@ -75,8 +75,8 @@ const DatasetLabelSelect = ({ index, labels, selectorsCount }) => { return selectedLabels.filter((label) => label === value).length <= 1 ? true : intl.formatMessage({ id: "entitiesMustBeUnique" }, { name: intl.formatMessage({ id: "datasetLabels" }) }); - } - } + }, + }, }} render={({ field: { value: datasetLabel, onChange } }) => ( { if (inputValue !== "" && !isExisting) { filtered.push({ inputValue, - title: `${intl.formatMessage({ id: "add" })} ${inputValue}` + title: `${intl.formatMessage({ id: "add" })} ${inputValue}`, }); } @@ -140,13 +140,13 @@ const DatasetLabelsCoverageField = ({ labels = [], isLoading = false }) => { const { fields, append, remove } = useFieldArray({ control, - name: FIELD_NAME + name: FIELD_NAME, }); const onAppend = () => append({ [DATASET_LABEL]: "", - [LAST_DATASETS_COVERED]: "" + [LAST_DATASETS_COVERED]: "", }); return isLoading ? ( @@ -175,7 +175,7 @@ const DatasetLabelsCoverageField = ({ labels = [], isLoading = false }) => { onClick={() => remove(index)} tooltip={{ show: true, - value: + value: , }} dataTestId={`btn_delete_restriction_${index}`} /> diff --git a/ngui/ui/src/components/LeaderboardForm/FormElements/DatasetNavigator.tsx b/ngui/ui/src/components/LeaderboardForm/FormElements/DatasetNavigator.tsx index 6f375edd5..f80720368 100644 --- a/ngui/ui/src/components/LeaderboardForm/FormElements/DatasetNavigator.tsx +++ b/ngui/ui/src/components/LeaderboardForm/FormElements/DatasetNavigator.tsx @@ -55,9 +55,9 @@ const DatasetNavigator = ({ datasets, isLoading = false }) => { { id: "timerange" }, { from: format(secondsToMilliseconds(range[0]), EN_FULL_FORMAT), - to: format(secondsToMilliseconds(range[1]), EN_FULL_FORMAT) + to: format(secondsToMilliseconds(range[1]), EN_FULL_FORMAT), } - ) + ), }; }; @@ -82,27 +82,27 @@ const DatasetNavigator = ({ datasets, isLoading = false }) => { icon: , action: () => { setValue(FIELD_NAMES.SELECTED_DATASETS, [...selectedDatasets, original]); - } - } + }, + }, ]} /> - ) + ), }, leaderboardDataset({ nameAccessor: "name", pathAccessor: "path", - deletedAccessor: "deleted" + deletedAccessor: "deleted", }), localTime({ id: "created_at", accessorFn: (originalRow) => secondsToMilliseconds(originalRow.created_at), headerDataTestId: "lbl_updated_at", headerMessageId: "createdAt", - defaultSort: "desc" + defaultSort: "desc", }), leaderboardDatasetLabels(), - datasetTimespan() + datasetTimespan(), ], [selectedDatasets, setValue] ); @@ -118,11 +118,11 @@ const DatasetNavigator = ({ datasets, isLoading = false }) => { enableSearchQueryParam={false} enablePaginationQueryParam={false} localization={{ - emptyMessageId: "noDatasets" + emptyMessageId: "noDatasets", }} rangeFilter={getRangeFilterDefinition()} counters={{ - show: false + show: false, }} /> ); diff --git a/ngui/ui/src/components/LeaderboardForm/FormElements/FormButtons.tsx b/ngui/ui/src/components/LeaderboardForm/FormElements/FormButtons.tsx index 87df3bbc4..2f1036827 100644 --- a/ngui/ui/src/components/LeaderboardForm/FormElements/FormButtons.tsx +++ b/ngui/ui/src/components/LeaderboardForm/FormElements/FormButtons.tsx @@ -17,7 +17,7 @@ const FormButtons = ({ onCancel, isLoading = false }) => { disabled={isRestricted} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} />
    ; diff --git a/ngui/ui/src/components/MlEditModel/MlEditModel.tsx b/ngui/ui/src/components/MlEditModel/MlEditModel.tsx index 7416eab2c..f6f25a78f 100644 --- a/ngui/ui/src/components/MlEditModel/MlEditModel.tsx +++ b/ngui/ui/src/components/MlEditModel/MlEditModel.tsx @@ -22,13 +22,13 @@ const MlEditModel = ({ model, isLoading }: MlEditModelProps) => { , {name} - + , ], title: { messageId: "editModelTitle", isLoading, - dataTestId: "lbl_edit_model" - } + dataTestId: "lbl_edit_model", + }, }; return ( @@ -37,7 +37,7 @@ const MlEditModel = ({ model, isLoading }: MlEditModelProps) => { diff --git a/ngui/ui/src/components/MlEditTask/MlEditTask.tsx b/ngui/ui/src/components/MlEditTask/MlEditTask.tsx index 5e7e37ae1..62629c670 100644 --- a/ngui/ui/src/components/MlEditTask/MlEditTask.tsx +++ b/ngui/ui/src/components/MlEditTask/MlEditTask.tsx @@ -13,7 +13,7 @@ import { isEmptyObject } from "utils/objects"; const SETTING_TABS = Object.freeze({ COMMON: "common", METRICS: "metrics", - LEADERBOARD_TEMPLATE: "leaderboardTemplate" + LEADERBOARD_TEMPLATE: "leaderboardTemplate", }); const MlEditTask = ({ leaderboardTemplate, task, isLoading = false }) => { @@ -26,35 +26,35 @@ const MlEditTask = ({ leaderboardTemplate, task, isLoading = false }) => { , {name} - + , ], title: { messageId: "editTaskTitle", isLoading, - dataTestId: "lbl_edit_task" - } + dataTestId: "lbl_edit_task", + }, }; const tabs = [ { title: SETTING_TABS.COMMON, dataTestId: "tab_common", - node: + node: , }, { title: SETTING_TABS.METRICS, dataTestId: "tab_metrics", - node: + node: , }, ...(!isEmptyObject(leaderboardTemplate) ? [ { title: SETTING_TABS.LEADERBOARD_TEMPLATE, dataTestId: "tab_leaderboard_template", - node: - } + node: , + }, ] - : []) + : []), ]; return ( @@ -66,7 +66,7 @@ const MlEditTask = ({ leaderboardTemplate, task, isLoading = false }) => { tabsProps={{ tabs, defaultTab: SETTING_TABS.COMMON, - name: "edit-task" + name: "edit-task", }} /> diff --git a/ngui/ui/src/components/MlEditTaskMetrics/MlEditTaskMetrics.tsx b/ngui/ui/src/components/MlEditTaskMetrics/MlEditTaskMetrics.tsx index 12c77d8b8..18f15091c 100644 --- a/ngui/ui/src/components/MlEditTaskMetrics/MlEditTaskMetrics.tsx +++ b/ngui/ui/src/components/MlEditTaskMetrics/MlEditTaskMetrics.tsx @@ -10,7 +10,7 @@ const MlEditTaskMetrics = ({ metrics, onAttachChange, isLoading = false, isUpdat diff --git a/ngui/ui/src/components/MlEditTaskMetrics/MlTaskMetricsTable/MlTaskMetricsTable.tsx b/ngui/ui/src/components/MlEditTaskMetrics/MlTaskMetricsTable/MlTaskMetricsTable.tsx index 2ea18853f..cef2f7462 100644 --- a/ngui/ui/src/components/MlEditTaskMetrics/MlTaskMetricsTable/MlTaskMetricsTable.tsx +++ b/ngui/ui/src/components/MlEditTaskMetrics/MlTaskMetricsTable/MlTaskMetricsTable.tsx @@ -22,10 +22,10 @@ const tableActionBar = { messageId: "manageMetricsLibrary", variant: "text", type: "button", - link: ML_METRICS - } - ] - } + link: ML_METRICS, + }, + ], + }, }; const MlTaskMetricsTable = ({ metrics, onAttachChange, isLoading }) => { @@ -49,14 +49,14 @@ const MlTaskMetricsTable = ({ metrics, onAttachChange, isLoading }) => { const action = event.target.checked ? "attach" : "detach"; onAttachChange({ - [action]: [original.id] + [action]: [original.id], }); }} checked={original.is_attached} /> - ) + ), }, { header: ( @@ -65,7 +65,7 @@ const MlTaskMetricsTable = ({ metrics, onAttachChange, isLoading }) => { ), accessorKey: "name", - cell: ({ cell }) => {cell.getValue()} + cell: ({ cell }) => {cell.getValue()}, }, text({ headerMessageId: "key", headerDataTestId: "lbl_key", accessorKey: "key", copy: true }), tendency(), @@ -77,8 +77,8 @@ const MlTaskMetricsTable = ({ metrics, onAttachChange, isLoading }) => { ), - accessorKey: "target_value" - } + accessorKey: "target_value", + }, ], [isRestricted, onAttachChange, restrictionReasonMessage] ); @@ -91,7 +91,7 @@ const MlTaskMetricsTable = ({ metrics, onAttachChange, isLoading }) => { data={metrics} columns={columns} localization={{ - emptyMessageId: "noMetrics" + emptyMessageId: "noMetrics", }} pageSize={50} /> diff --git a/ngui/ui/src/components/MlExecutorsBreakdownLineChart/MlExecutorsBreakdownLineChart.tsx b/ngui/ui/src/components/MlExecutorsBreakdownLineChart/MlExecutorsBreakdownLineChart.tsx index e869f0be6..22348735e 100644 --- a/ngui/ui/src/components/MlExecutorsBreakdownLineChart/MlExecutorsBreakdownLineChart.tsx +++ b/ngui/ui/src/components/MlExecutorsBreakdownLineChart/MlExecutorsBreakdownLineChart.tsx @@ -13,7 +13,7 @@ const MlExecutorsBreakdownLineChart = ({ breakdown, isLoading }) => ( isLoading={isLoading} style={{ margin: { top: 25, right: 25, left: 70, bottom: 50 } }} axisLeft={{ - format: (value) => value + format: (value) => value, }} /> ); diff --git a/ngui/ui/src/components/MlExecutorsTable/MlExecutorsTable.tsx b/ngui/ui/src/components/MlExecutorsTable/MlExecutorsTable.tsx index 6f7b7f19e..387043ce1 100644 --- a/ngui/ui/src/components/MlExecutorsTable/MlExecutorsTable.tsx +++ b/ngui/ui/src/components/MlExecutorsTable/MlExecutorsTable.tsx @@ -8,7 +8,7 @@ const MlExecutorsTable = ({ withExpenses = false, disableExecutorLink = false, disableLocationLink = false, - isLoading = false + isLoading = false, }) => { const memoizedExecutors = useMemo(() => executors, [executors]); @@ -17,7 +17,7 @@ const MlExecutorsTable = ({ getColumns({ withExpenses, disableExecutorLink, - disableLocationLink + disableLocationLink, }), [disableExecutorLink, disableLocationLink, withExpenses] ); diff --git a/ngui/ui/src/components/MlExecutorsTable/utils.ts b/ngui/ui/src/components/MlExecutorsTable/utils.ts index 0260bffe6..d8018480c 100644 --- a/ngui/ui/src/components/MlExecutorsTable/utils.ts +++ b/ngui/ui/src/components/MlExecutorsTable/utils.ts @@ -3,10 +3,10 @@ import executor from "utils/columns/executor"; export const getColumns = ({ withExpenses = false, disableExecutorLink = false, disableLocationLink = false } = {}) => [ executor({ - disableLink: disableExecutorLink + disableLink: disableExecutorLink, }), mlExecutorLocation({ - disableLink: disableLocationLink + disableLink: disableLocationLink, }), ...(withExpenses ? [ @@ -14,10 +14,10 @@ export const getColumns = ({ withExpenses = false, disableExecutorLink = false, id: "expenses", headerDataTestId: "lbl_expenses", headerMessageId: "expenses", - accessorFn: (rowData) => rowData.resource?.total_cost - }) + accessorFn: (rowData) => rowData.resource?.total_cost, + }), ] : []), lastUsed({ headerDataTestId: "lbl_last_used", accessorFn: (rowData) => rowData.last_used }), - firstSeen({ headerDataTestId: "lbl_first_seen", accessorFn: (rowData) => rowData.resource?.first_seen }) + firstSeen({ headerDataTestId: "lbl_first_seen", accessorFn: (rowData) => rowData.resource?.first_seen }), ]; diff --git a/ngui/ui/src/components/MlMetrics/MlMetrics.tsx b/ngui/ui/src/components/MlMetrics/MlMetrics.tsx index bd059745e..5f162df23 100644 --- a/ngui/ui/src/components/MlMetrics/MlMetrics.tsx +++ b/ngui/ui/src/components/MlMetrics/MlMetrics.tsx @@ -20,8 +20,8 @@ import aggregateFunction from "utils/columns/aggregateFunction"; const actionBarDefinition = { title: { messageId: "mlMetricsLibraryTitle", - dataTestId: "lbl_ml_global_metrics" - } + dataTestId: "lbl_ml_global_metrics", + }, }; const tableActionBarDefinition = { @@ -35,9 +35,9 @@ const tableActionBarDefinition = { type: "button", link: ML_METRIC_CREATE, requiredActions: ["EDIT_PARTNER"], - dataTestId: "btn_add" - } - ] + dataTestId: "btn_add", + }, + ], }; const MlMetrics = ({ metrics, isLoading }) => { @@ -56,7 +56,7 @@ const MlMetrics = ({ metrics, isLoading }) => { tendency(), dynamicFractionDigitsValue({ accessorKey: "target_value", - titleMessageId: "targetValue" + titleMessageId: "targetValue", }), text({ headerMessageId: "unit", headerDataTestId: "lbl_unit", accessorKey: "unit" }), aggregateFunction(), @@ -69,8 +69,8 @@ const MlMetrics = ({ metrics, isLoading }) => { cell: ({ row: { id: index, - original: { id, name: metricName } - } + original: { id, name: metricName }, + }, }) => ( { messageId: "edit", icon: , dataTestId: `btn_edit_${index}`, - action: () => navigate(getEditMetricUrl(id)) + action: () => navigate(getEditMetricUrl(id)), }, { key: "delete", @@ -88,17 +88,17 @@ const MlMetrics = ({ metrics, isLoading }) => { action: () => openSideModal(DeleteMlMetricModal, { id, - name: metricName + name: metricName, }), color: "error", - dataTestId: `btn_delete_${index}` - } + dataTestId: `btn_delete_${index}`, + }, ]} /> - ) - } + ), + }, ] - : []) + : []), ], [areActionsAllowed, navigate, openSideModal] ); @@ -115,10 +115,10 @@ const MlMetrics = ({ metrics, isLoading }) => { columns={columns} actionBar={{ show: true, - definition: tableActionBarDefinition + definition: tableActionBarDefinition, }} localization={{ - emptyMessageId: "noMetrics" + emptyMessageId: "noMetrics", }} pageSize={50} /> @@ -126,7 +126,7 @@ const MlMetrics = ({ metrics, isLoading }) => { diff --git a/ngui/ui/src/components/MlModel/MlModel.tsx b/ngui/ui/src/components/MlModel/MlModel.tsx index 94c1d244d..70b961f53 100644 --- a/ngui/ui/src/components/MlModel/MlModel.tsx +++ b/ngui/ui/src/components/MlModel/MlModel.tsx @@ -19,7 +19,7 @@ import PageContentWrapper from "components/PageContentWrapper"; import { EditModelPathModal, EditModelVersionAliasModal, - EditModelVersionTagsModal + EditModelVersionTagsModal, } from "components/SideModalManager/SideModals"; import SubTitle from "components/SubTitle"; import SummaryList from "components/SummaryList"; @@ -80,7 +80,7 @@ const Summary = ({ name = "", modelKey = "", createdAt = 0, tags = {}, isLoading items={[ , , - + , ]} isLoading={isLoading} /> @@ -124,14 +124,14 @@ const Version = ({ versions = [], isLoading = false }: VersionProps) => { mlModelVersion({ headerMessageId: "version", headerDataTestId: "lbl_version", - accessorKey: "version" + accessorKey: "version", }), utcTime({ id: "registeredAt", accessorFn: (originalRow) => originalRow.created_at, headerMessageId: "registeredAt", headerDataTestId: "lbl_registered_at", - defaultSort: "desc" + defaultSort: "desc", }), { header: ( @@ -164,7 +164,7 @@ const Version = ({ versions = [], isLoading = false }: VersionProps) => { {isManageVersionAllowed && renderButton()} ); - } + }, }, mlModelPath({ accessorKey: "path", @@ -190,7 +190,7 @@ const Version = ({ versions = [], isLoading = false }: VersionProps) => { {isManageVersionAllowed && renderButton()} ); - } + }, }), { header: ( @@ -200,7 +200,7 @@ const Version = ({ versions = [], isLoading = false }: VersionProps) => { ), id: "tags", style: { - minWidth: "200px" + minWidth: "200px", }, enableSorting: false, accessorFn: (originalRow) => @@ -229,7 +229,7 @@ const Version = ({ versions = [], isLoading = false }: VersionProps) => { {isManageVersionAllowed && renderButton()} ); - } + }, }, run({ id: "run", @@ -239,8 +239,8 @@ const Version = ({ versions = [], isLoading = false }: VersionProps) => { getTaskId: ({ run: { task_id: taskId } }) => taskId, getTaskName: ({ run: { task_name: taskName } }) => taskName, headerMessageId: "run", - headerDataTestId: "lbl_run" - }) + headerDataTestId: "lbl_run", + }), ], [isManageVersionAllowed, modelId, openSideModal, aliasToVersionMap] ); @@ -259,7 +259,7 @@ const Version = ({ versions = [], isLoading = false }: VersionProps) => { withSearch pageSize={50} localization={{ - emptyMessageId: "noVersions" + emptyMessageId: "noVersions", }} /> )} @@ -280,12 +280,12 @@ const MlModel = ({ model, isLoading = false }: MlModelProps) => { breadcrumbs: [ - + , ], title: { text: name, isLoading, - dataTestId: "lbl_model" + dataTestId: "lbl_model", }, items: [ { @@ -294,7 +294,7 @@ const MlModel = ({ model, isLoading = false }: MlModelProps) => { messageId: "refresh", dataTestId: "btn_refresh", type: "button", - action: () => refetch([GET_ML_MODEL]) + action: () => refetch([GET_ML_MODEL]), }, { key: "edit", @@ -306,9 +306,9 @@ const MlModel = ({ model, isLoading = false }: MlModelProps) => { type: "button", isLoading, requiredActions: ["EDIT_PARTNER"], - dataTestId: "btn_edit" - } - ] + dataTestId: "btn_edit", + }, + ], }} /> diff --git a/ngui/ui/src/components/MlModels/MlModels.tsx b/ngui/ui/src/components/MlModels/MlModels.tsx index f998cfc1d..934964396 100644 --- a/ngui/ui/src/components/MlModels/MlModels.tsx +++ b/ngui/ui/src/components/MlModels/MlModels.tsx @@ -30,25 +30,25 @@ const ModelsTable = ({ models }: ModelsTableProps) => { getId: (rowOriginal) => rowOriginal.id, headerMessageId: "name", headerDataTestId: "lbl_model", - defaultSort: "asc" + defaultSort: "asc", }), text({ headerMessageId: "key", headerDataTestId: "lbl_key", - accessorKey: "key" + accessorKey: "key", }), mlModelVersion({ headerMessageId: "version", headerDataTestId: "lbl_latest_versions", id: "latestVersion", - accessorFn: (originalRow) => originalRow.last_version?.version + accessorFn: (originalRow) => originalRow.last_version?.version, }), mlModelUsedAliases(), utcTime({ id: "createdAt", accessorFn: (originalRow) => originalRow.created_at, headerMessageId: "createdAt", - headerDataTestId: "lbl_created_at" + headerDataTestId: "lbl_created_at", }), { header: ( @@ -62,7 +62,7 @@ const ModelsTable = ({ models }: ModelsTableProps) => { const description = cell.getValue(); return description ? {description} : CELL_EMPTY_VALUE; - } + }, }, tags({ id: "tags", @@ -70,8 +70,8 @@ const ModelsTable = ({ models }: ModelsTableProps) => { Object.entries(originalRow.tags ?? {}) .map(([key, val]) => `${key}: ${val}`) .join(" "), - getTags: (rowOriginal) => rowOriginal.tags ?? {} - }) + getTags: (rowOriginal) => rowOriginal.tags ?? {}, + }), ], [] ); @@ -89,10 +89,10 @@ const ModelsTable = ({ models }: ModelsTableProps) => { type: "button", dataTestId: "btn-create-model", link: ML_MODEL_CREATE, - requiredActions: ["EDIT_PARTNER"] - } - ] - } + requiredActions: ["EDIT_PARTNER"], + }, + ], + }, }; return ( @@ -103,7 +103,7 @@ const ModelsTable = ({ models }: ModelsTableProps) => { actionBar={tableActionBarDefinition} pageSize={50} localization={{ - emptyMessageId: "noModels" + emptyMessageId: "noModels", }} /> ); diff --git a/ngui/ui/src/components/MlRunHistoryChart/MlRunHistoryChart.tsx b/ngui/ui/src/components/MlRunHistoryChart/MlRunHistoryChart.tsx index a58834052..cd63605ec 100644 --- a/ngui/ui/src/components/MlRunHistoryChart/MlRunHistoryChart.tsx +++ b/ngui/ui/src/components/MlRunHistoryChart/MlRunHistoryChart.tsx @@ -28,17 +28,17 @@ const MlRunHistoryChart = ({ history, targetValue, tendency, width = 100, height } thresholdArea={{ start: targetValue, - end: targetValue + end: targetValue, }} thresholdColors={ tendency === GOALS_FILTER_TYPES.LESS_IS_BETTER ? { start: goalMetColor, - end: goalNotMetColor + end: goalNotMetColor, } : { start: goalNotMetColor, - end: goalMetColor + end: goalMetColor, } } debug={debug} diff --git a/ngui/ui/src/components/MlRunStatus/MlRunStatus.tsx b/ngui/ui/src/components/MlRunStatus/MlRunStatus.tsx index c5cec7152..7fa210a01 100644 --- a/ngui/ui/src/components/MlRunStatus/MlRunStatus.tsx +++ b/ngui/ui/src/components/MlRunStatus/MlRunStatus.tsx @@ -12,7 +12,7 @@ export const MlRunStatusLabel = ({ status }) => { [ML_RUN_STATUS.ABORTED]: "aborted", [ML_RUN_STATUS.RUNNING]: "running", [ML_RUN_STATUS.COMPLETED]: "completed", - [ML_RUN_STATUS.FAILED]: "failed" + [ML_RUN_STATUS.FAILED]: "failed", }[status]; return ; @@ -24,7 +24,7 @@ export const MlRunStatusIcon = ({ status, iconSize = "small" }) => { [ML_RUN_STATUS.ABORTED]: , [ML_RUN_STATUS.COMPLETED]: , [ML_RUN_STATUS.RUNNING]: , - [ML_RUN_STATUS.FAILED]: + [ML_RUN_STATUS.FAILED]: , }[status]; return icon; diff --git a/ngui/ui/src/components/MlRunStatusCell/MlRunStatusCell.tsx b/ngui/ui/src/components/MlRunStatusCell/MlRunStatusCell.tsx index 6d918b793..917d0828a 100644 --- a/ngui/ui/src/components/MlRunStatusCell/MlRunStatusCell.tsx +++ b/ngui/ui/src/components/MlRunStatusCell/MlRunStatusCell.tsx @@ -9,7 +9,7 @@ const MlRunStatusCell = ({ reason, status, // Used only in live demo mockups - status_description: { type: statusDescriptionType, payload: statusDescriptionPayload = {} } = {} + status_description: { type: statusDescriptionType, payload: statusDescriptionPayload = {} } = {}, }) => { const { isDemo } = useOrganizationInfo(); @@ -24,13 +24,13 @@ const MlRunStatusCell = ({ values={{ name: goalName, value: goalValue, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> ); }, time_exceeded: () => , - goals_met: () => + goals_met: () => , })[statusDescriptionType]; const handler = getFormatStatusDescriptionHandler(); @@ -41,7 +41,7 @@ const MlRunStatusCell = ({ diff --git a/ngui/ui/src/components/MlRunStatusHeaderCell/MlRunStatusHeaderCell.tsx b/ngui/ui/src/components/MlRunStatusHeaderCell/MlRunStatusHeaderCell.tsx index 441dc1f32..8de72b25a 100644 --- a/ngui/ui/src/components/MlRunStatusHeaderCell/MlRunStatusHeaderCell.tsx +++ b/ngui/ui/src/components/MlRunStatusHeaderCell/MlRunStatusHeaderCell.tsx @@ -5,19 +5,19 @@ import { MlRunStatusIcon } from "components/MlRunStatus"; const StatusDescription = ({ messageId, icon }) => (
    {icon} {chunks} + strong: (chunks) => {chunks}, }} /> @@ -34,7 +34,7 @@ const MlRunStatusHeaderCell = () => ( aborted: } messageId="abortedStatusDescription" />, completed: } messageId="completedStatusDescription" />, failed: } messageId="failedStatusDescription" />, - br:
    + br:
    , }} onTooltipTitleClick={(e) => { // Prevent triggering sorting when clicking on the tooltip area diff --git a/ngui/ui/src/components/MlRunsetConfiguration/MlRunsetConfiguration.tsx b/ngui/ui/src/components/MlRunsetConfiguration/MlRunsetConfiguration.tsx index b10e07863..f8660b43f 100644 --- a/ngui/ui/src/components/MlRunsetConfiguration/MlRunsetConfiguration.tsx +++ b/ngui/ui/src/components/MlRunsetConfiguration/MlRunsetConfiguration.tsx @@ -16,18 +16,18 @@ const MlRunsetConfiguration = ({ runsetTemplate, latestRunset, onSubmit, onCance , {runsetTemplate.name} - + , ], title: { messageId: "runsetConfiguration", - isLoading: isLoading.isGetRunsetTemplateLoading - } + isLoading: isLoading.isGetRunsetTemplateLoading, + }, }} /> { const theme = useTheme(); const refetch = useRefetchApis(); @@ -38,7 +37,7 @@ const MlRunsetOverview = ({ runs_count: runsCount = 0, succeeded_runs: completedRuns = 0, cost = 0, - destroyed_at: destroyedAt + destroyed_at: destroyedAt, } = runset; const actionBarDefinition = { @@ -49,11 +48,11 @@ const MlRunsetOverview = ({ {runsetTemplateName} , - + , ], title: { isLoading: isGetRunsetLoading, - text: {formatRunFullName(runsetNumber, runsetName)} + text: {formatRunFullName(runsetNumber, runsetName)}, }, items: [ { @@ -62,7 +61,7 @@ const MlRunsetOverview = ({ messageId: "refresh", dataTestId: "btn_refresh", type: "button", - action: () => refetch([GET_ML_RUNSET, GET_ML_RUNSETS_RUNS, GET_ML_RUNSET_EXECUTORS]) + action: () => refetch([GET_ML_RUNSET, GET_ML_RUNSETS_RUNS, GET_ML_RUNSET_EXECUTORS]), }, { key: "btn-stop", @@ -75,10 +74,10 @@ const MlRunsetOverview = ({ isLoading: isGetRunsetLoading || isStopMlRunsetLoading, tooltip: { show: true, - messageId: "stopRunsetButtonDescription" - } - } - ] + messageId: "stopRunsetButtonDescription", + }, + }, + ], }; const [selectedRunNumbers, setSelectedRunNumbers] = useState(); @@ -88,7 +87,7 @@ const MlRunsetOverview = ({ const runs = runsetRuns.map((run, index) => ({ ...run, index, - color: colorScale(index) + color: colorScale(index), })); return ( diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Correlations/Correlations.styles.ts b/ngui/ui/src/components/MlRunsetOverview/components/Correlations/Correlations.styles.ts similarity index 79% rename from ngui/ui/src/components/MlRunsetOverview/Components/Correlations/Correlations.styles.ts rename to ngui/ui/src/components/MlRunsetOverview/components/Correlations/Correlations.styles.ts index 803b0a9a2..1482e7c81 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/Correlations/Correlations.styles.ts +++ b/ngui/ui/src/components/MlRunsetOverview/components/Correlations/Correlations.styles.ts @@ -3,20 +3,20 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ fullWidthHeight: { height: "100%", - width: "100%" + width: "100%", }, wrapper: { "& line.highlight": { stroke: theme.palette.primary.light, - strokeWidth: 4 + strokeWidth: 4, }, /** * Disable drag-n-drop for vertical lines (dimensions) */ "& text.axis-title": { - pointerEvents: "none !important" - } - } + pointerEvents: "none !important", + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Correlations/Correlations.tsx b/ngui/ui/src/components/MlRunsetOverview/components/Correlations/Correlations.tsx similarity index 95% rename from ngui/ui/src/components/MlRunsetOverview/Components/Correlations/Correlations.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/Correlations/Correlations.tsx index 77209854d..ce83e45d4 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/Correlations/Correlations.tsx +++ b/ngui/ui/src/components/MlRunsetOverview/components/Correlations/Correlations.tsx @@ -25,7 +25,7 @@ import { getChartRunsData, getParametersDimensions, getRunNamesDimensionTicks, - getSelectedRuns + getSelectedRuns, } from "./utils"; // https://github.com/plotly/react-plotly.js#customizing-the-plotlyjs-bundle @@ -58,8 +58,8 @@ const getHyperparametersValueToTickValueMap = (chartRunsData) => { name, { valueToTick, - tickToValue - } + tickToValue, + }, ]; }) ); @@ -70,7 +70,7 @@ const Chart = ({ setSelectedRunNumbers, dimensionsState, setDimensionsState, - hyperparametersValueToTickValueMap + hyperparametersValueToTickValueMap, }) => { const wrapperRef = useRef(null); const theme = useTheme(); @@ -99,7 +99,7 @@ const Chart = ({ const updateRunNamesDimensionTicks = () => { const { tickvals, ticktext } = getRunNamesDimensionTicks({ chartRunsData, - selectedChartRunsData: selectedRuns + selectedChartRunsData: selectedRuns, }); const [runsDimension, ...restDimensions] = dimensions; @@ -107,7 +107,7 @@ const Chart = ({ const updatedRunsDimension = { ...runsDimension, tickvals, - ticktext + ticktext, }; return [updatedRunsDimension, ...restDimensions]; @@ -139,35 +139,35 @@ const Chart = ({ chartRunsData.length === 1 ? [ [0, chartRunsData[0].color], - [1, chartRunsData[0].color] + [1, chartRunsData[0].color], ] : chartRunsData.map(({ index, color }) => [ chartRunsData.length === 1 ? 0 : index / (chartRunsData.length - 1), - color - ]) - } - } + color, + ]), + }, + }, ]} layout={{ margin: { l: MARGIN.LEFT, t: MARGIN.TOP, b: MARGIN.BOTTOM, - r: MARGIN.RIGHT + r: MARGIN.RIGHT, }, font: { color: theme.palette.text.primary, family: theme.typography.fontFamily, - size: FONT_SIZE + size: FONT_SIZE, }, width, - height + height, }} frames={[]} config={{ displayModeBar: true, displaylogo: false, - modeBarButtonsToRemove: ["toImage"] + modeBarButtonsToRemove: ["toImage"], }} className={ /** @@ -211,7 +211,7 @@ const Correlations = ({ runs = [], setSelectedRunNumbers }) => { const initializeRunNamesDimension = () => { const { tickvals, ticktext } = getRunNamesDimensionTicks({ chartRunsData, - selectedChartRunsData: chartRunsData + selectedChartRunsData: chartRunsData, }); return { @@ -220,7 +220,7 @@ const Correlations = ({ runs = [], setSelectedRunNumbers }) => { dimensionGroup: DIMENSION_GROUPS.RUN_NAMES, tickvals, ticktext, - values: chartRunsData.map((d) => d.index) + values: chartRunsData.map((d) => d.index), }; }; @@ -243,7 +243,7 @@ const Correlations = ({ runs = [], setSelectedRunNumbers }) => { dimensionGroup: DIMENSION_GROUPS.HYPERPARAMETERS, tickvals, ticktext, - values + values, }; }; @@ -255,7 +255,7 @@ const Correlations = ({ runs = [], setSelectedRunNumbers }) => { const { value = 0 } = run.reachedGoals?.[goalKey] ?? {}; return value; - }) + }), }); /** @@ -331,7 +331,7 @@ const Correlations = ({ runs = [], setSelectedRunNumbers }) => { onClick={clearFilters} startIcon={} sx={{ - ml: 1 + ml: 1, }} /> )} diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Correlations/index.ts b/ngui/ui/src/components/MlRunsetOverview/components/Correlations/index.ts similarity index 100% rename from ngui/ui/src/components/MlRunsetOverview/Components/Correlations/index.ts rename to ngui/ui/src/components/MlRunsetOverview/components/Correlations/index.ts diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Correlations/utils.ts b/ngui/ui/src/components/MlRunsetOverview/components/Correlations/utils.ts similarity index 96% rename from ngui/ui/src/components/MlRunsetOverview/Components/Correlations/utils.ts rename to ngui/ui/src/components/MlRunsetOverview/components/Correlations/utils.ts index cfa5a4cec..64f10c59f 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/Correlations/utils.ts +++ b/ngui/ui/src/components/MlRunsetOverview/components/Correlations/utils.ts @@ -4,7 +4,7 @@ import { formatRunFullName } from "utils/ml"; export const DIMENSION_GROUPS = Object.freeze({ RUN_NAMES: "runNames", HYPERPARAMETERS: "hyperparameters", - GOALS: "goals" + GOALS: "goals", }); export const HEIGHT = 350; @@ -13,7 +13,7 @@ export const MARGIN = Object.freeze({ TOP: 50, BOTTOM: 40, LEFT: 200, - RIGHT: 60 + RIGHT: 60, }); const CHART_AREA_HEIGH = HEIGHT - MARGIN.TOP - MARGIN.BOTTOM; @@ -27,7 +27,7 @@ export const getChartRunsData = (runs) => reachedGoals, hyperparameters, index, - color + color, })); const doTickLabelsIntersect = (labelACoordinates, labelBCoordinates) => { @@ -57,7 +57,7 @@ export const getRunNamesDimensionTicks = ({ chartRunsData, selectedChartRunsData // tickvals and ticktext must be applied together tickvals: chartRunsData.map((d) => d.index), // Using "" ticktext values in order to hide ticks from the chart - ticktext: chartRunsData.map(() => "") + ticktext: chartRunsData.map(() => ""), }; } @@ -104,7 +104,7 @@ export const getRunNamesDimensionTicks = ({ chartRunsData, selectedChartRunsData * So there is little hack to show a string consisting (i+1) spaces */ return Array(i + 1).join(" "); - }) + }), }; }; @@ -116,7 +116,7 @@ export const getSelectedRuns = (data, runsCorrelationsTraceDimensions, hyperpara const range = constraintrange ?? []; return { dimensionName, - range: isArrayOfArrays(range) ? range : [range] + range: isArrayOfArrays(range) ? range : [range], }; }); diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/GoalsSelector.tsx b/ngui/ui/src/components/MlRunsetOverview/components/GoalsSelector.tsx similarity index 100% rename from ngui/ui/src/components/MlRunsetOverview/Components/GoalsSelector.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/GoalsSelector.tsx diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/InputParameters.tsx b/ngui/ui/src/components/MlRunsetOverview/components/InputParameters.tsx similarity index 98% rename from ngui/ui/src/components/MlRunsetOverview/Components/InputParameters.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/InputParameters.tsx index fb74fa052..3ae739992 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/InputParameters.tsx +++ b/ngui/ui/src/components/MlRunsetOverview/components/InputParameters.tsx @@ -28,7 +28,7 @@ const InputParameters = ({ runset, isLoading = false }) => { commands, image, venv: virtualEnvironmentPath, - spot_settings: spotSettings = {} + spot_settings: spotSettings = {}, } = runset; return ( @@ -91,7 +91,7 @@ const InputParameters = ({ runset, isLoading = false }) => { id="xAttemptsBeforePayAsYouGo" values={{ value: spotSettings.tries, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> @@ -115,7 +115,7 @@ const InputParameters = ({ runset, isLoading = false }) => { value={} dataTestIds={{ key: "p_using_spot_instances_max_cost_per_hour_key", - value: "p_using_spot_instances_max_cost_per_hour_value" + value: "p_using_spot_instances_max_cost_per_hour_value", }} /> )} @@ -199,7 +199,7 @@ const InputParameters = ({ runset, isLoading = false }) => { * which is an empirical value chosen to accommodate four rows of code. */ overflowY: "auto", - height: "95px" + height: "95px", }} readOnly /> diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/SummaryCards.tsx b/ngui/ui/src/components/MlRunsetOverview/components/SummaryCards.tsx similarity index 84% rename from ngui/ui/src/components/MlRunsetOverview/Components/SummaryCards.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/SummaryCards.tsx index e236776d4..1797d932a 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/SummaryCards.tsx +++ b/ngui/ui/src/components/MlRunsetOverview/components/SummaryCards.tsx @@ -22,9 +22,9 @@ const SummaryCards = ({ runsCount, completedRuns, cost, isLoading = false }: Sum color: "primary", captionMessageId: "configurationsTried", dataTestIds: { - cardTestId: "card_configurations_tries" + cardTestId: "card_configurations_tries", }, - isLoading + isLoading, }, { key: "completed_runs", @@ -33,9 +33,9 @@ const SummaryCards = ({ runsCount, completedRuns, cost, isLoading = false }: Sum color: "primary", captionMessageId: "completedRuns", dataTestIds: { - cardTestId: "card_completed_runs" + cardTestId: "card_completed_runs", }, - isLoading + isLoading, }, ...(isFinOpsEnabled ? [ @@ -43,17 +43,17 @@ const SummaryCards = ({ runsCount, completedRuns, cost, isLoading = false }: Sum key: "totalExpenses", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: cost + value: cost, }, color: "primary", captionMessageId: "totalExpenses", dataTestIds: { - cardTestId: "card_total_expenses" + cardTestId: "card_total_expenses", }, - isLoading - } + isLoading, + }, ] - : []) + : []), ]} /> ); diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Executors/Executors.tsx b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Executors/Executors.tsx similarity index 90% rename from ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Executors/Executors.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/Tabs/Executors/Executors.tsx index 19309efcc..f6c638e74 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Executors/Executors.tsx +++ b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Executors/Executors.tsx @@ -24,7 +24,7 @@ const STATE = Object.freeze({ DESTROYED: "destroyed", ERROR: "error", WAITING_ARCEE: "waiting arcee", - UNKNOWN: "unknown" + UNKNOWN: "unknown", }); const STATE_TRANSLATION_MAP = Object.freeze({ @@ -37,7 +37,7 @@ const STATE_TRANSLATION_MAP = Object.freeze({ [STATE.DESTROYED]: "terminated", [STATE.ERROR]: "error", [STATE.WAITING_ARCEE]: "waitingOptscaleArcee", - [STATE.UNKNOWN]: "unknown" + [STATE.UNKNOWN]: "unknown", }); const Executors = ({ executors, isLoading }) => { @@ -56,8 +56,8 @@ const Executors = ({ executors, isLoading }) => { cell: ({ cell, row: { - original: { reason } - } + original: { reason }, + }, }) => { const state = cell.getValue(); @@ -70,7 +70,7 @@ const Executors = ({ executors, isLoading }) => { ) : ( CELL_EMPTY_VALUE ); - } + }, }, { header: ( @@ -85,12 +85,12 @@ const Executors = ({ executors, isLoading }) => { instance_id: instanceId, name = "", instance_size: { name: instanceName, cloud_type: instanceCloudType }, - ip_addr: ipAddress - } - } + ip_addr: ipAddress, + }, + }, }) => { const cloudResourceIdentifier = getCloudResourceIdentifier({ - cloud_resource_id: instanceId + cloud_resource_id: instanceId, }); return ( { value={name ? : undefined} /> ), - show: name !== cloudResourceIdentifier + show: name !== cloudResourceIdentifier, }, { key: "instance_size", @@ -114,27 +114,27 @@ const Executors = ({ executors, isLoading }) => { keyMessageId="size" value={{instanceName}
    } type={instanceCloudType} disableLink />} /> - ) + ), }, { key: "ip", - node: - } + node: , + }, ]} > ); - } + }, }, resourceLocation({ headerDataTestId: "lbl_location", idAccessor: "cloud_id", typeAccessor: "cloud_type", locationAccessors: { - region: "region_name" + region: "region_name", }, - accessorKey: "cloud_name" + accessorKey: "cloud_name", }), ...(isFinOpsEnabled ? [ @@ -142,10 +142,10 @@ const Executors = ({ executors, isLoading }) => { id: "expenses", headerDataTestId: "lbl_expenses", headerMessageId: "expenses", - accessorKey: "cost" - }) + accessorKey: "cost", + }), ] - : []) + : []), ], [isFinOpsEnabled] ); @@ -157,7 +157,7 @@ const Executors = ({ executors, isLoading }) => { cloud_id: executor.cloud_account?.id ?? "", cloud_type: executor.cloud_account?.type ?? "", region_name: executor.region?.name ?? "", - cloud_name: executor.cloud_account?.name ?? "" + cloud_name: executor.cloud_account?.name ?? "", })), [executors] ); diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Executors/index.ts b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Executors/index.ts similarity index 100% rename from ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Executors/index.ts rename to ngui/ui/src/components/MlRunsetOverview/components/Tabs/Executors/index.ts diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/Runs.tsx b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/Runs.tsx similarity index 93% rename from ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/Runs.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/Runs.tsx index 35df8fc8d..c6f93f88b 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/Runs.tsx +++ b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/Runs.tsx @@ -15,7 +15,7 @@ const Runs = ({ runs, isLoading = false }) => { return ML_RUNS_FILTERS_NAMES.reduce( (params, queryKey) => ({ ...params, - [queryKey]: queryParams[queryKey] + [queryKey]: queryParams[queryKey], }), {} ); @@ -27,21 +27,21 @@ const Runs = ({ runs, isLoading = false }) => { runs.map(({ status }) => [ status, { - name: status - } + name: status, + }, ]) - ).values() + ).values(), ], [GOALS_BE_FILTER]: [ { name: GOAL_STATUS.MET, - value: true + value: true, }, { name: GOAL_STATUS.NOT_MET, - value: false - } - ] + value: false, + }, + ], }; useEffect(() => { diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/RunsFilter.tsx b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/RunsFilter.tsx similarity index 96% rename from ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/RunsFilter.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/RunsFilter.tsx index 2cd3c7765..76be5e0c6 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/RunsFilter.tsx +++ b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/RunsFilter.tsx @@ -8,7 +8,7 @@ const RunsFilter = ({ filterValues, appliedFilters, onChange: onChangeHandler, i const mlRunsFilters = new Filters({ filters: ML_RUNS_FILTERS, filterValues, - appliedFilters + appliedFilters, }); const onChange = ({ name, value }) => { @@ -24,7 +24,7 @@ const RunsFilter = ({ filterValues, appliedFilters, onChange: onChangeHandler, i Object.entries(currentlyAppliedFilters).reduce( (newRequestParams, [filterName]) => ({ ...newRequestParams, - [filterName]: undefined + [filterName]: undefined, }), {} ) diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/RunsTable.tsx b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/RunsTable.tsx similarity index 90% rename from ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/RunsTable.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/RunsTable.tsx index 42a4167af..159108b30 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/RunsTable.tsx +++ b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/RunsTable.tsx @@ -59,8 +59,8 @@ const RunsTable = ({ runs, isLoading = false }) => { cell: ({ cell, row: { - original: { id, color, task_id: taskId } - } + original: { id, color, task_id: taskId }, + }, }) => ( { } /> - ) + ), }, { header: , accessorKey: "status", cell: ({ row: { - original: { reason, status } - } - }) => + original: { reason, status }, + }, + }) => , }, metrics({ accessorKey: "reached_goals", onSortByMetricKeyChange: (newKey) => setSortByMetricKey(newKey), metricsKeyNameEntries, - sortByMetricKey + sortByMetricKey, }), dataset({ id: "dataset", - accessorFn: (originalRow) => originalRow.dataset?.name + accessorFn: (originalRow) => originalRow.dataset?.name, }), hyperparameters(), startedAt({ @@ -98,16 +98,16 @@ const RunsTable = ({ runs, isLoading = false }) => { headerDataTestId: "lbl_started_at", accessorKey: "start", options: { - enableGlobalFilter: false - } + enableGlobalFilter: false, + }, }), duration({ headerMessageId: "duration", headerDataTestId: "lbl_duration", accessorKey: "duration", options: { - enableGlobalFilter: false - } + enableGlobalFilter: false, + }, }), { header: ( @@ -118,10 +118,10 @@ const RunsTable = ({ runs, isLoading = false }) => { id: "executors", cell: ({ row: { - original: { executors } - } - }) => - } + original: { executors }, + }, + }) => , + }, ], [metricsKeyNameEntries, sortByMetricKey] ); @@ -137,12 +137,12 @@ const RunsTable = ({ runs, isLoading = false }) => { borderLeft: !isEmptyObject(reachedGoals) && Object.values(reachedGoals).every(({ reached }) => reached) ? `4px solid ${theme.palette.success.main}` - : undefined + : undefined, })} data={tableData} withSearch localization={{ - emptyMessageId: "noRuns" + emptyMessageId: "noRuns", }} pageSize={50} queryParamPrefix="runs" diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/index.ts b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/index.ts similarity index 100% rename from ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Runs/index.ts rename to ngui/ui/src/components/MlRunsetOverview/components/Tabs/Runs/index.ts diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Tabs.tsx b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Tabs.tsx similarity index 90% rename from ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Tabs.tsx rename to ngui/ui/src/components/MlRunsetOverview/components/Tabs/Tabs.tsx index e47ccbf27..9a0df15c2 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/Tabs.tsx +++ b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/Tabs.tsx @@ -5,7 +5,7 @@ import Runs from "./Runs"; const TABS = Object.freeze({ RUNS: "runs", - RUNNERS: "executors" + RUNNERS: "executors", }); const Tabs = ({ runs, isGetRunsetRunsLoading }) => { @@ -15,13 +15,13 @@ const Tabs = ({ runs, isGetRunsetRunsLoading }) => { { title: TABS.RUNS, dataTestId: "tab_runs", - node: + node: , }, { title: TABS.RUNNERS, dataTestId: "tab_executors", - node: - } + node: , + }, ]; return ( @@ -33,7 +33,7 @@ const Tabs = ({ runs, isGetRunsetRunsLoading }) => { activeTab, handleChange: (event, value) => { setActiveTab(value); - } + }, }} /> ); diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/Tabs/index.ts b/ngui/ui/src/components/MlRunsetOverview/components/Tabs/index.ts similarity index 100% rename from ngui/ui/src/components/MlRunsetOverview/Components/Tabs/index.ts rename to ngui/ui/src/components/MlRunsetOverview/components/Tabs/index.ts diff --git a/ngui/ui/src/components/MlRunsetOverview/Components/index.ts b/ngui/ui/src/components/MlRunsetOverview/components/index.ts similarity index 53% rename from ngui/ui/src/components/MlRunsetOverview/Components/index.ts rename to ngui/ui/src/components/MlRunsetOverview/components/index.ts index 86c16003f..74f14afb2 100644 --- a/ngui/ui/src/components/MlRunsetOverview/Components/index.ts +++ b/ngui/ui/src/components/MlRunsetOverview/components/index.ts @@ -1,5 +1,6 @@ +import Correlations from "./Correlations"; import InputParameters from "./InputParameters"; import SummaryCards from "./SummaryCards"; import Tabs from "./Tabs"; -export { Tabs, InputParameters, SummaryCards }; +export { Tabs, InputParameters, SummaryCards, Correlations }; diff --git a/ngui/ui/src/components/MlRunsetTemplate/MlRunsetTemplate.tsx b/ngui/ui/src/components/MlRunsetTemplate/MlRunsetTemplate.tsx index e2096b21f..ec578e391 100644 --- a/ngui/ui/src/components/MlRunsetTemplate/MlRunsetTemplate.tsx +++ b/ngui/ui/src/components/MlRunsetTemplate/MlRunsetTemplate.tsx @@ -10,7 +10,7 @@ import PageContentWrapper from "components/PageContentWrapper"; import { useRefetchApis } from "hooks/useRefetchApis"; import { getMlEditRunsetTemplateUrl, getMlRunsetConfigurationUrl, ML_RUNSET_TEMPLATES } from "urls"; import { SPACING_2 } from "utils/layouts"; -import { RunsetsTable, Summary, Details } from "./Components"; +import { RunsetsTable, Summary, Details } from "./components"; const MlRunsetTemplate = ({ runsetTemplate, @@ -19,7 +19,7 @@ const MlRunsetTemplate = ({ runsets, runsCount = 0, totalCost = 0, - lastRunsetCost = 0 + lastRunsetCost = 0, }) => { const refetch = useRefetchApis(); @@ -34,19 +34,19 @@ const MlRunsetTemplate = ({ tasks = [], instance_types: instanceTypes = [], regions = [], - max_runner_num: maximumRunsetRunners + max_runner_num: maximumRunsetRunners, } = runsetTemplate; const actionBarDefinition = { breadcrumbs: [ - + , ], title: { isLoading: isGetRunsetTemplateLoading, text: name, - dataTestId: "lbl_ml_runsets" + dataTestId: "lbl_ml_runsets", }, items: [ { @@ -55,7 +55,7 @@ const MlRunsetTemplate = ({ messageId: "refresh", dataTestId: "btn_refresh", type: "button", - action: () => refetch([GET_ML_RUNSET_TEMPLATE, GET_ML_RUNSETS]) + action: () => refetch([GET_ML_RUNSET_TEMPLATE, GET_ML_RUNSETS]), }, { key: "launch", @@ -64,7 +64,7 @@ const MlRunsetTemplate = ({ link: getMlRunsetConfigurationUrl(id), type: "button", isLoading: isGetRunsetTemplateLoading, - requiredActions: ["EDIT_PARTNER"] + requiredActions: ["EDIT_PARTNER"], }, { key: "edit", @@ -73,9 +73,9 @@ const MlRunsetTemplate = ({ type: "button", link: getMlEditRunsetTemplateUrl(id), isLoading: isGetRunsetTemplateLoading, - requiredActions: ["EDIT_PARTNER"] - } - ] + requiredActions: ["EDIT_PARTNER"], + }, + ], }; return ( diff --git a/ngui/ui/src/components/MlRunsetTemplate/Components/Details.tsx b/ngui/ui/src/components/MlRunsetTemplate/components/Details.tsx similarity index 98% rename from ngui/ui/src/components/MlRunsetTemplate/Components/Details.tsx rename to ngui/ui/src/components/MlRunsetTemplate/components/Details.tsx index 97e45647e..87aebca5d 100644 --- a/ngui/ui/src/components/MlRunsetTemplate/Components/Details.tsx +++ b/ngui/ui/src/components/MlRunsetTemplate/components/Details.tsx @@ -28,7 +28,7 @@ const Details = ({ resourceNamePrefix, tags, hyperparameters, - isLoading + isLoading, }) => { const { isDemo } = useOrganizationInfo(); @@ -156,10 +156,10 @@ const Details = ({ id="{key}:{value}" values={{ key: intl.formatMessage({ id: "name" }).toLowerCase(), - value: intl.formatMessage({ id: "environmentVariable" }).toLowerCase() + value: intl.formatMessage({ id: "environmentVariable" }).toLowerCase(), }} /> - ) + ), }} /> @@ -177,7 +177,7 @@ const Details = ({ value={ diff --git a/ngui/ui/src/components/MlRunsetTemplate/Components/RunsetsTable.tsx b/ngui/ui/src/components/MlRunsetTemplate/components/RunsetsTable.tsx similarity index 90% rename from ngui/ui/src/components/MlRunsetTemplate/Components/RunsetsTable.tsx rename to ngui/ui/src/components/MlRunsetTemplate/components/RunsetsTable.tsx index 0aa08236a..a96bfd914 100644 --- a/ngui/ui/src/components/MlRunsetTemplate/Components/RunsetsTable.tsx +++ b/ngui/ui/src/components/MlRunsetTemplate/components/RunsetsTable.tsx @@ -18,8 +18,8 @@ import { formatRunFullName } from "utils/ml"; const RunsetNameCell = ({ cell, row: { - original: { id, state } - } + original: { id, state }, + }, }) => ( - ) + ), } : undefined } @@ -58,7 +58,7 @@ const RunsetsTable = ({ runsets, isLoading }) => { accessorFn: ({ number, name }) => formatRunFullName(number, name), defaultSort: "desc", sortingFn: "alphanumeric", - cell: ({ cell, row }) => + cell: ({ cell, row }) => , }, { header: ( @@ -71,8 +71,8 @@ const RunsetsTable = ({ runsets, isLoading }) => { cell: ({ cell, row: { - original: { task } - } + original: { task }, + }, }) => { const { id, deleted } = task; @@ -83,47 +83,47 @@ const RunsetsTable = ({ runsets, isLoading }) => { {cell.getValue()} ); - } + }, }, startedAt({ headerMessageId: "startedAt", headerDataTestId: "lbl_started_at", accessorKey: "created_at", options: { - enableGlobalFilter: false - } + enableGlobalFilter: false, + }, }), text({ id: "started_by", accessorFn: ({ owner }) => owner?.name, headerMessageId: "startedBy", headerDataTestId: "lbl_started_by", - accessorKey: "started_by" + accessorKey: "started_by", }), duration({ headerMessageId: "duration", headerDataTestId: "lbl_duration", - accessorKey: "duration" + accessorKey: "duration", }), text({ headerMessageId: "configurationsTried", headerDataTestId: "lbl_configurations_tried", - accessorKey: "runs_count" + accessorKey: "runs_count", }), text({ headerMessageId: "completedRuns", headerDataTestId: "lbl_completed_runs", - accessorKey: "succeeded_runs" + accessorKey: "succeeded_runs", }), ...(isFinOpsEnabled ? [ expenses({ headerDataTestId: "lbl_expenses", headerMessageId: "expenses", - accessorKey: "cost" - }) + accessorKey: "cost", + }), ] - : []) + : []), ], [isFinOpsEnabled] ); @@ -143,7 +143,7 @@ const RunsetsTable = ({ runsets, isLoading }) => { data={data} pageSize={50} localization={{ - emptyMessageId: "noRunsets" + emptyMessageId: "noRunsets", }} /> )} diff --git a/ngui/ui/src/components/MlRunsetTemplate/Components/Summary.tsx b/ngui/ui/src/components/MlRunsetTemplate/components/Summary.tsx similarity index 82% rename from ngui/ui/src/components/MlRunsetTemplate/Components/Summary.tsx rename to ngui/ui/src/components/MlRunsetTemplate/components/Summary.tsx index d28e99720..17b260dde 100644 --- a/ngui/ui/src/components/MlRunsetTemplate/Components/Summary.tsx +++ b/ngui/ui/src/components/MlRunsetTemplate/components/Summary.tsx @@ -22,9 +22,9 @@ const Summary = ({ runsCount, lastRunsetExpenses, totalExpenses, isLoading = fal color: "primary", captionMessageId: "runs", dataTestIds: { - cardTestId: "card_runs" + cardTestId: "card_runs", }, - isLoading + isLoading, }, ...(isFinOpsEnabled ? [ @@ -32,30 +32,30 @@ const Summary = ({ runsCount, lastRunsetExpenses, totalExpenses, isLoading = fal key: "lastRunsetExpenses", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: lastRunsetExpenses + value: lastRunsetExpenses, }, color: "primary", captionMessageId: "lastRunsetExpenses", dataTestIds: { - cardTestId: "card_last_run_expenses" + cardTestId: "card_last_run_expenses", }, - isLoading + isLoading, }, { key: "totalExpenses", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalExpenses + value: totalExpenses, }, color: "primary", captionMessageId: "totalExpenses", dataTestIds: { - cardTestId: "card_last_total_expenses" + cardTestId: "card_last_total_expenses", }, - isLoading - } + isLoading, + }, ] - : []) + : []), ]} /> ); diff --git a/ngui/ui/src/components/MlRunsetTemplate/Components/index.ts b/ngui/ui/src/components/MlRunsetTemplate/components/index.ts similarity index 100% rename from ngui/ui/src/components/MlRunsetTemplate/Components/index.ts rename to ngui/ui/src/components/MlRunsetTemplate/components/index.ts diff --git a/ngui/ui/src/components/MlRunsetTemplateCreate/MlRunsetTemplateCreate.tsx b/ngui/ui/src/components/MlRunsetTemplateCreate/MlRunsetTemplateCreate.tsx index bcf6eb8b7..b3b4c2ed6 100644 --- a/ngui/ui/src/components/MlRunsetTemplateCreate/MlRunsetTemplateCreate.tsx +++ b/ngui/ui/src/components/MlRunsetTemplateCreate/MlRunsetTemplateCreate.tsx @@ -10,12 +10,12 @@ const actionBarDefinition = { breadcrumbs: [ - + , ], title: { messageId: "addRunsetTemplateTitle", - dataTestId: "lbl_add_runset_template" - } + dataTestId: "lbl_add_runset_template", + }, }; const MlRunsetTemplateCreate = () => ( @@ -24,7 +24,7 @@ const MlRunsetTemplateCreate = () => ( diff --git a/ngui/ui/src/components/MlRunsetTemplateEdit/MlRunsetTemplateEdit.tsx b/ngui/ui/src/components/MlRunsetTemplateEdit/MlRunsetTemplateEdit.tsx index 3a1dd9144..fee9a26d4 100644 --- a/ngui/ui/src/components/MlRunsetTemplateEdit/MlRunsetTemplateEdit.tsx +++ b/ngui/ui/src/components/MlRunsetTemplateEdit/MlRunsetTemplateEdit.tsx @@ -13,7 +13,7 @@ const MlRunsetTemplateEdit = ({ runsetTemplate, tasks, dataSources, onSubmit, on const { isUpdateMlRunsetTemplateLoading = false, isGetAllTasksLoading = false, - isGetRunsetTemplateLoading = false + isGetRunsetTemplateLoading = false, } = isLoading; const defaultValues = useMemo(() => { @@ -27,7 +27,7 @@ const MlRunsetTemplateEdit = ({ runsetTemplate, tasks, dataSources, onSubmit, on cloud_accounts: runsetTemplateDataSources = [], tasks: runsetTemplateTasks = [], instance_types: runsetTemplateInstanceTypes = [], - regions: runsetTemplateRegions = [] + regions: runsetTemplateRegions = [], } = runsetTemplate; const [tagKey, tagName] = Object.entries(tags)[0] ?? []; @@ -42,7 +42,7 @@ const MlRunsetTemplateEdit = ({ runsetTemplate, tasks, dataSources, onSubmit, on [FIELD_NAMES.HYPERPARAMETERS_FIELD_ARRAY.FIELD_NAME]: Object.entries(hyperparameters).map( ([hyperparameterName, hyperparameterEnvironmentVariable]) => ({ [FIELD_NAMES.HYPERPARAMETERS_FIELD_ARRAY.HYPERPARAMETER_NAME]: hyperparameterName, - [FIELD_NAMES.HYPERPARAMETERS_FIELD_ARRAY.ENVIRONMENT_VARIABLE]: hyperparameterEnvironmentVariable + [FIELD_NAMES.HYPERPARAMETERS_FIELD_ARRAY.ENVIRONMENT_VARIABLE]: hyperparameterEnvironmentVariable, }) ), [FIELD_NAMES.TASKS]: runsetTemplateTasks.filter( @@ -60,7 +60,7 @@ const MlRunsetTemplateEdit = ({ runsetTemplate, tasks, dataSources, onSubmit, on runsetTemplateInstanceTypes.find( (runsetTemplateInstanceType) => runsetTemplateInstanceType.name === instanceType.name ) !== undefined - ) + ), }; }, [tasks, dataSources, runsetTemplate]); @@ -71,13 +71,13 @@ const MlRunsetTemplateEdit = ({ runsetTemplate, tasks, dataSources, onSubmit, on , {runsetTemplate.name} - + , ], title: { messageId: "editRunsetTemplateTitle", isLoading: isGetRunsetTemplateLoading, - dataTestId: "lbl_edit_runset_template" - } + dataTestId: "lbl_edit_runset_template", + }, }; return ( @@ -86,7 +86,7 @@ const MlRunsetTemplateEdit = ({ runsetTemplate, tasks, dataSources, onSubmit, on { cell: ({ cell, row: { - original: { id } - } + original: { id }, + }, }) => { const name = cell.getValue(); @@ -37,10 +37,10 @@ const MlRunsetTemplatesTable = ({ data, isLoading }) => { {name} ); - } + }, }, mlRunsCount({ - accessorKey: "total_runs" + accessorKey: "total_runs", }), ...(isFinOpsEnabled ? [ @@ -53,9 +53,9 @@ const MlRunsetTemplatesTable = ({ data, isLoading }) => { accessorKey: "last_runset_cost", cell: ({ row: { - original: { last_runset_cost: lastRunsetExpenses } - } - }) => + original: { last_runset_cost: lastRunsetExpenses }, + }, + }) => , }, { header: ( @@ -66,12 +66,12 @@ const MlRunsetTemplatesTable = ({ data, isLoading }) => { accessorKey: "total_cost", cell: ({ row: { - original: { total_cost: total } - } - }) => - } + original: { total_cost: total }, + }, + }) => , + }, ] - : []) + : []), ], [isFinOpsEnabled] ); @@ -89,10 +89,10 @@ const MlRunsetTemplatesTable = ({ data, isLoading }) => { type: "button", dataTestId: "btn-create-runset-template", link: ML_RUNSET_TEMPLATE_CREATE, - requiredActions: ["EDIT_PARTNER"] - } - ] - } + requiredActions: ["EDIT_PARTNER"], + }, + ], + }, }; return ( diff --git a/ngui/ui/src/components/MlTaskCreate/MlTaskCreate.tsx b/ngui/ui/src/components/MlTaskCreate/MlTaskCreate.tsx index 54cf6682d..0b0d568c4 100644 --- a/ngui/ui/src/components/MlTaskCreate/MlTaskCreate.tsx +++ b/ngui/ui/src/components/MlTaskCreate/MlTaskCreate.tsx @@ -10,12 +10,12 @@ const actionBarDefinition = { breadcrumbs: [ - + , ], title: { messageId: "addTaskTitle", - dataTestId: "lbl_add_task" - } + dataTestId: "lbl_add_task", + }, }; const MlTaskCreate = () => ( @@ -24,7 +24,7 @@ const MlTaskCreate = () => ( diff --git a/ngui/ui/src/components/MlTaskDetails/MlTaskDetails.tsx b/ngui/ui/src/components/MlTaskDetails/MlTaskDetails.tsx index dd3aabb17..4fdfecb9f 100644 --- a/ngui/ui/src/components/MlTaskDetails/MlTaskDetails.tsx +++ b/ngui/ui/src/components/MlTaskDetails/MlTaskDetails.tsx @@ -23,37 +23,37 @@ const Tabs = ({ task, isLoading = false }) => { { title: ML_TASK_DETAILS_TABS.OVERVIEW, dataTestId: "tab_overview", - node: + node: , }, { title: ML_TASK_DETAILS_TABS.RUNS, dataTestId: "tab_runs", - node: + node: , }, { title: ML_TASK_DETAILS_TABS.MODEL_VERSIONS, dataTestId: "tab_model_versions", - node: + node: , }, { title: ML_TASK_DETAILS_TABS.LEADERBOARDS, dataTestId: "tab_leaderboards", - node: + node: , }, ...(isFinOpsEnabled ? [ { title: ML_TASK_DETAILS_TABS.RECOMMENDATIONS, dataTestId: "tab_recommendations", - node: - } + node: , + }, ] : []), { title: ML_TASK_DETAILS_TABS.EXECUTORS, dataTestId: "tab_executors", - node: - } + node: , + }, ]; return ( @@ -71,7 +71,7 @@ const Tabs = ({ task, isLoading = false }) => { activeTab, handleChange: (event, value) => { setActiveTab(value); - } + }, }} />
    diff --git a/ngui/ui/src/components/MlTaskDetails/TaskActionBar/TaskActionBar.tsx b/ngui/ui/src/components/MlTaskDetails/TaskActionBar/TaskActionBar.tsx index 04444a353..aabe935ab 100644 --- a/ngui/ui/src/components/MlTaskDetails/TaskActionBar/TaskActionBar.tsx +++ b/ngui/ui/src/components/MlTaskDetails/TaskActionBar/TaskActionBar.tsx @@ -12,7 +12,7 @@ import { GET_ML_LEADERBOARDS, GET_ML_LEADERBOARD, GET_ML_LEADERBOARD_CANDIDATES, - GET_ML_TASK_TAGS + GET_ML_TASK_TAGS, } from "api/restapi/actionTypes"; import ActionBar from "components/ActionBar"; import { ProfilingIntegrationModal } from "components/SideModalManager/SideModals"; @@ -46,9 +46,9 @@ const TaskActionBar = ({ isLoading, isDataReady, name, taskKey, taskId }) => { GET_ML_LEADERBOARD_TEMPLATE, GET_ML_LEADERBOARDS, GET_ML_LEADERBOARD, - GET_ML_LEADERBOARD_CANDIDATES + GET_ML_LEADERBOARD_CANDIDATES, ]); - } + }, }, { key: "btn-profiling-integration", @@ -57,7 +57,7 @@ const TaskActionBar = ({ isLoading, isDataReady, name, taskKey, taskId }) => { dataTestId: "btn_profiling_integration", type: "button", isLoading: !isDataReady, - action: () => openSideModal(ProfilingIntegrationModal, { taskKey }) + action: () => openSideModal(ProfilingIntegrationModal, { taskKey }), }, { key: "edit", @@ -67,29 +67,29 @@ const TaskActionBar = ({ isLoading, isDataReady, name, taskKey, taskId }) => { const { [ML_TASK_DETAILS_TAB_NAME]: tab } = getSearchParams(); navigate( getEditMlTaskUrl(taskId, { - [ML_TASK_DETAILS_TAB_NAME]: tab + [ML_TASK_DETAILS_TAB_NAME]: tab, }) ); }, type: "button", isLoading: !isDataReady, requiredActions: ["EDIT_PARTNER"], - dataTestId: "btn_edit" - } + dataTestId: "btn_edit", + }, ]; const actionBarDefinition = { breadcrumbs: [ - + , ], title: { text: name || "", isLoading, - dataTestId: "lbl_task_overview" + dataTestId: "lbl_task_overview", }, - items: baseActionBarItems + items: baseActionBarItems, }; return ; diff --git a/ngui/ui/src/components/MlTaskDetails/TaskDetailsSummary/TaskDetailsSummary.tsx b/ngui/ui/src/components/MlTaskDetails/TaskDetailsSummary/TaskDetailsSummary.tsx index 862dc740c..9a266b992 100644 --- a/ngui/ui/src/components/MlTaskDetails/TaskDetailsSummary/TaskDetailsSummary.tsx +++ b/ngui/ui/src/components/MlTaskDetails/TaskDetailsSummary/TaskDetailsSummary.tsx @@ -28,7 +28,7 @@ const LastRunExecutorSummary = ({ isLoading, lastRunExecutor }) => { instance_type: instanceType, platform_type: platformType, resource, - discovered + discovered, } = lastRunExecutor ?? {}; return ( @@ -61,7 +61,7 @@ const LastRunExecutorSummary = ({ isLoading, lastRunExecutor }) => { />, , , - + , ]} /> ); @@ -77,7 +77,7 @@ const SummaryInfo = ({ lastSuccessfulRunTimestamp, lastRunCost, ownerName, - lastRunExecutor + lastRunExecutor, }) => { const navigate = useNavigate(); @@ -93,10 +93,10 @@ const SummaryInfo = ({ navigate( getEditMlTaskUrl(taskId, { tab: "metrics", - [ML_TASK_DETAILS_TAB_NAME]: mlTaskDetailsTabName + [ML_TASK_DETAILS_TAB_NAME]: mlTaskDetailsTabName, }) ); - } + }, }} isLoading={isLoading} items={ @@ -122,7 +122,7 @@ const SummaryInfo = ({ } @@ -130,7 +130,7 @@ const SummaryInfo = ({ } /> , - + , ]} /> @@ -151,7 +151,7 @@ const TaskDetailsSummary = ({ task, isTaskDetailsLoading = false }) => { last_successful_run: lastSuccessfulRunTimestamp, runs_count: runsCount = 0, last_run_executor: lastRunExecutor, - last_run_reached_goals: lastRunReachedGoals = {} + last_run_reached_goals: lastRunReachedGoals = {}, } = task; return ( diff --git a/ngui/ui/src/components/MlTaskDetails/TaskSummaryGrid/TaskSummaryGrid.tsx b/ngui/ui/src/components/MlTaskDetails/TaskSummaryGrid/TaskSummaryGrid.tsx index ec2ba5e13..51e6094de 100644 --- a/ngui/ui/src/components/MlTaskDetails/TaskSummaryGrid/TaskSummaryGrid.tsx +++ b/ngui/ui/src/components/MlTaskDetails/TaskSummaryGrid/TaskSummaryGrid.tsx @@ -21,63 +21,63 @@ const TaskSummaryGrid = ({ task, recommendations, isGetRecommendationsLoading, i [ML_TASK_STATUS.RUNNING]: "primary", [ML_TASK_STATUS.ABORTED]: "info", [ML_TASK_STATUS.COMPLETED]: "success", - [ML_TASK_STATUS.FAILED]: "error" + [ML_TASK_STATUS.FAILED]: "error", }[status], captionMessageId: "status", renderCondition: () => status !== undefined, isLoading: isTaskDetailsLoading, dataTestIds: { - cardTestId: "card_run_status" - } + cardTestId: "card_run_status", + }, }, { key: "duration", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.Custom, CustomValueComponent: FormattedDuration, valueComponentProps: { - durationInSeconds: lastRunDuration + durationInSeconds: lastRunDuration, }, renderCondition: () => lastRunDuration && lastRunDuration !== 0, captionMessageId: "lastRunDuration", dataTestIds: { - cardTestId: "card_last_task_duration" + cardTestId: "card_last_task_duration", }, - isLoading: isTaskDetailsLoading + isLoading: isTaskDetailsLoading, }, { key: "lifetimeCost", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalCost + value: totalCost, }, captionMessageId: "lifetimeCost", isLoading: isTaskDetailsLoading, - renderCondition: () => isFinOpsEnabled + renderCondition: () => isFinOpsEnabled, }, { key: "recommendations", type: SUMMARY_CARD_TYPES.EXTENDED, valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalSaving + value: totalSaving, }, help: { show: true, - messageId: "projectedMonthlySavingsForRelatedInfrastructure" + messageId: "projectedMonthlySavingsForRelatedInfrastructure", }, captionMessageId: "summarySavings", relativeValueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedNumber, relativeValueComponentProps: { - value: recommendationsCount + value: recommendationsCount, }, relativeValueCaptionMessageId: "recommendationsCount", dataTestIds: { - cardTestId: "card_total_exp" + cardTestId: "card_total_exp", }, color: totalSaving || recommendationsCount > 20 ? "error" : "success", isLoading: isGetRecommendationsLoading, - renderCondition: () => isFinOpsEnabled - } + renderCondition: () => isFinOpsEnabled, + }, ]; return ; diff --git a/ngui/ui/src/components/MlTaskLeaderboards/MlTaskLeaderboards.tsx b/ngui/ui/src/components/MlTaskLeaderboards/MlTaskLeaderboards.tsx index 777c0c893..bf66210cf 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/MlTaskLeaderboards.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/MlTaskLeaderboards.tsx @@ -12,7 +12,7 @@ const MlTaskLeaderboards = ({ onCreateLeaderboard, onUpdateLeaderboard, onDeleteLeaderboard, - isLoadingProps = {} + isLoadingProps = {}, }) => { if (isLoadingProps.isGetLeaderboardTemplateLoading || isLoadingProps.isGetLeaderboardsLoading) { return ; @@ -33,7 +33,7 @@ const MlTaskLeaderboards = ({ onDeleteLeaderboard={onDeleteLeaderboard} isLoadingProps={{ isGetLeaderboardLoading: isLoadingProps.isGetLeaderboardLoading, - isGetLeaderboardCandidatesLoading: isLoadingProps.isGetLeaderboardCandidatesLoading + isGetLeaderboardCandidatesLoading: isLoadingProps.isGetLeaderboardCandidatesLoading, }} /> ); diff --git a/ngui/ui/src/components/MlTaskLeaderboards/components/CopyLeaderboardIconButton.tsx b/ngui/ui/src/components/MlTaskLeaderboards/components/CopyLeaderboardIconButton.tsx index b155e492d..237cb0f96 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/components/CopyLeaderboardIconButton.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/components/CopyLeaderboardIconButton.tsx @@ -11,7 +11,7 @@ const CopyLeaderboardIconButton = ({ task, leaderboardTemplate, leaderboard, onS icon={} tooltip={{ show: true, - messageId: "clone" + messageId: "clone", }} onClick={() => openSideModal(CloneLeaderboardModal, { task, leaderboardTemplate, leaderboard, onSuccess })} /> diff --git a/ngui/ui/src/components/MlTaskLeaderboards/components/CreateLeaderboardIconButton.tsx b/ngui/ui/src/components/MlTaskLeaderboards/components/CreateLeaderboardIconButton.tsx index 8e7866027..d66c2a368 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/components/CreateLeaderboardIconButton.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/components/CreateLeaderboardIconButton.tsx @@ -11,7 +11,7 @@ const CreateLeaderboardIconButton = ({ leaderboardTemplate, task, onSuccess }) = icon={} tooltip={{ show: true, - messageId: "add" + messageId: "add", }} onClick={() => openSideModal(CreateLeaderboardModal, { leaderboardTemplate, task, onSuccess })} /> diff --git a/ngui/ui/src/components/MlTaskLeaderboards/components/DeleteLeaderboardButton.tsx b/ngui/ui/src/components/MlTaskLeaderboards/components/DeleteLeaderboardButton.tsx index 69c6ff767..47c5a66db 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/components/DeleteLeaderboardButton.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/components/DeleteLeaderboardButton.tsx @@ -12,7 +12,7 @@ const DeleteLeaderboardButton = ({ leaderboard, onSuccess }) => { color="error" tooltip={{ show: true, - messageId: "delete" + messageId: "delete", }} onClick={() => openSideModal(DeleteLeaderboardModal, { leaderboard, onSuccess })} /> diff --git a/ngui/ui/src/components/MlTaskLeaderboards/components/EditLeaderboardIconButton.tsx b/ngui/ui/src/components/MlTaskLeaderboards/components/EditLeaderboardIconButton.tsx index bb23c8d8e..82ec0b254 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/components/EditLeaderboardIconButton.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/components/EditLeaderboardIconButton.tsx @@ -11,7 +11,7 @@ const EditLeaderboardIconButton = ({ task, leaderboard, onSuccess }) => { icon={} tooltip={{ show: true, - messageId: "edit" + messageId: "edit", }} onClick={() => openSideModal(EditLeaderboardModal, { task, leaderboard, onSuccess })} /> diff --git a/ngui/ui/src/components/MlTaskLeaderboards/components/LeaderboardCandidatesTable.tsx b/ngui/ui/src/components/MlTaskLeaderboards/components/LeaderboardCandidatesTable.tsx index 9aeb36bd2..64dae7b36 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/components/LeaderboardCandidatesTable.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/components/LeaderboardCandidatesTable.tsx @@ -28,7 +28,7 @@ const METRIC_NAME_LENGTH_LIMIT = 15; const RANKINGS = Object.freeze({ TOP_ONE: 1, TOP_TWO: 2, - TOP_THREE: 3 + TOP_THREE: 3, }); const RANKING_ICON_SIZE = "1.5rem"; @@ -49,14 +49,14 @@ const QualificationTableDivider = () => { textAlign="center" sx={{ backgroundColor: () => theme.palette.background.paper, - left: "calc(50% - 45px)" + left: "calc(50% - 45px)", }} > @@ -75,7 +75,7 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { () => ({ [RANKINGS.TOP_ONE]: theme.palette.gold.main, [RANKINGS.TOP_TWO]: theme.palette.silver.main, - [RANKINGS.TOP_THREE]: theme.palette.bronze.main + [RANKINGS.TOP_THREE]: theme.palette.bronze.main, }), [theme.palette.bronze.main, theme.palette.gold.main, theme.palette.silver.main] ); @@ -108,14 +108,14 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { coverage: { datasets: { covered: getIntersection(datum.qualification, leaderboard.dataset_ids).length, - all: leaderboard.dataset_ids.length + all: leaderboard.dataset_ids.length, }, coverageRules: Object.entries(leaderboard.dataset_coverage_rules ?? {}).map(([label, datasetsCount]) => ({ label, all: datasetsCount, - covered: datum.dataset_coverage[label]?.length ?? 0 - })) - } + covered: datum.dataset_coverage[label]?.length ?? 0, + })), + }, }; }), [leaderboard.dataset_coverage_rules, leaderboard.dataset_ids, leaderboardCandidates] @@ -139,7 +139,7 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { emptyValue: " ", enableSorting: false, style: { - width: "80px" + width: "80px", }, cell: ({ cell }) => { const ranking = cell.getValue(); @@ -160,13 +160,13 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { } /> ); - } + }, }, { header: ( @@ -177,21 +177,21 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { id: "coverage", enableSorting: false, style: { - width: "320px" + width: "320px", }, cell: ({ row: { - original: { coverage: { datasets, coverageRules } = {} } - } + original: { coverage: { datasets, coverageRules } = {} }, + }, }) => ( - ) + ), }, { header: ( @@ -213,13 +213,13 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { accessorFn: (originalRow) => originalRow.primary_metric?.[primaryMetric.key]?.value, style: { width: "150px", - backgroundColor: lighten(theme.palette.success.main, 0.95) + backgroundColor: lighten(theme.palette.success.main, 0.95), }, cell: ({ cell, row: { original } }) => { const unit = original.primary_metric?.[primaryMetric.key]?.unit ?? ""; return } unit={unit} />; - } + }, }, { header: ( @@ -230,12 +230,12 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { id: "secondaryMetrics", enableSorting: false, style: { - width: "200px" + width: "200px", }, cell: ({ row: { - original: { metrics = {} } - } + original: { metrics = {} }, + }, }) => isEmptyObject(metrics) ? ( CELL_EMPTY_VALUE @@ -255,7 +255,7 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { )} maxRows={5} /> - ) + ), }, { header: ( @@ -266,13 +266,13 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { id: "tags", enableSorting: false, style: { - width: "500px" + width: "500px", }, cell: ({ row: { - original: { tags = {} } - } - }) => (isEmptyObject(tags) ? CELL_EMPTY_VALUE : ) + original: { tags = {} }, + }, + }) => (isEmptyObject(tags) ? CELL_EMPTY_VALUE : ), }, { header: ( @@ -283,12 +283,12 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { id: "hyperparameters", enableSorting: false, style: { - width: "500px" + width: "500px", }, cell: ({ row: { - original: { hyperparams = {} } - } + original: { hyperparams = {} }, + }, }) => isEmptyObject(hyperparams) ? ( CELL_EMPTY_VALUE @@ -297,8 +297,8 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { maxRows={5} tags={Object.fromEntries(Object.entries(hyperparams).filter(([, value]) => value !== null))} /> - ) - } + ), + }, ]; }, [leaderboard, theme.palette.success.main, RANKING_COLORS]); @@ -313,18 +313,18 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { openSideModal(LeaderboardCandidateDetailsModal, { candidateDetails: row, leaderboard, - taskId + taskId, }); }} localization={{ - emptyMessageId: "noQualifiedGroups" + emptyMessageId: "noQualifiedGroups", }} tableLayout="fixed" isSelectedRow={(row) => !!selectedRow && row.id === selectedRow.id} overflowX="initial" disableBottomBorderForLastRow counters={{ - show: false + show: false, }} /> @@ -341,14 +341,14 @@ const LeaderboardCandidatesTable = ({ leaderboard, leaderboardCandidates }) => { openSideModal(LeaderboardCandidateDetailsModal, { candidateDetails: row, leaderboard, - taskId + taskId, }); }} tableLayout="fixed" isSelectedRow={(row) => !!selectedRow && row.id === selectedRow.id} overflowX="initial" counters={{ - show: false + show: false, }} /> diff --git a/ngui/ui/src/components/MlTaskLeaderboards/components/LeaderboardDetails.tsx b/ngui/ui/src/components/MlTaskLeaderboards/components/LeaderboardDetails.tsx index 848d51e58..f930911d9 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/components/LeaderboardDetails.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/components/LeaderboardDetails.tsx @@ -24,7 +24,7 @@ const Summary = ({ groupByHyperparameters = false, primaryMetric = {}, secondaryMetrics = [], - isLoading = false + isLoading = false, }) => ( } @@ -62,7 +62,7 @@ const Summary = ({ )) } - /> + />, ]} isLoading={isLoading} /> @@ -113,7 +113,7 @@ const DatasetCoverageRules = ({ datasets = [], coverageRules = {}, isLoading = f component="span" sx={{ display: "flex", - alignItems: "center" + alignItems: "center", }} > @@ -135,7 +135,7 @@ const DatasetCoverageRules = ({ datasets = [], coverageRules = {}, isLoading = f @@ -159,7 +159,7 @@ const DatasetCoverageRules = ({ datasets = [], coverageRules = {}, isLoading = f component="span" sx={{ display: "flex", - alignItems: "center" + alignItems: "center", }} > @@ -202,7 +202,7 @@ const LeaderboardDetails = ({ leaderboard, leaderboardCandidates, isLoadingProps group_by_hp: groupByHyperparameters = false, primary_metric: primaryMetric = {}, other_metrics: secondaryMetrics = [], - filters: qualificationProtocol = [] + filters: qualificationProtocol = [], } = leaderboard; return ( diff --git a/ngui/ui/src/components/MlTaskLeaderboards/components/Leaderboards.tsx b/ngui/ui/src/components/MlTaskLeaderboards/components/Leaderboards.tsx index 57b460cb1..20e309c08 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/components/Leaderboards.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/components/Leaderboards.tsx @@ -36,7 +36,7 @@ const LeaderboardsListSection = ({ onSelectedLeaderboardIdChange, onCreateLeaderboard, onUpdateLeaderboard, - onDeleteLeaderboard + onDeleteLeaderboard, }) => { const isManageLeaderboardAllowed = useIsAllowed({ requiredActions: ["EDIT_PARTNER"] }); @@ -57,7 +57,7 @@ const LeaderboardsListSection = ({ sx={{ maxWidth: "450px", flexBasis: "280px", - flexGrow: 1 + flexGrow: 1, }} renderOption={(props, option) => { const { name, primary_metric: { name: primaryMetricName, value: primaryMetricValue, unit: primaryMetricUnit } = {} } = @@ -117,7 +117,7 @@ const Leaderboards = ({ onCreateLeaderboard, onUpdateLeaderboard, onDeleteLeaderboard, - isLoadingProps = {} + isLoadingProps = {}, }) => ( {isEmptyArray(leaderboards) ? ( @@ -143,7 +143,7 @@ const Leaderboards = ({ leaderboardCandidates={leaderboardCandidates} isLoadingProps={{ isGetLeaderboardLoading: isLoadingProps.isGetLeaderboardLoading, - isGetLeaderboardCandidatesLoading: isLoadingProps.isGetLeaderboardCandidatesLoading + isGetLeaderboardCandidatesLoading: isLoadingProps.isGetLeaderboardCandidatesLoading, }} /> diff --git a/ngui/ui/src/components/MlTaskLeaderboards/components/SetupLeaderboardTemplateInvitation.tsx b/ngui/ui/src/components/MlTaskLeaderboards/components/SetupLeaderboardTemplateInvitation.tsx index 3c8781cdf..c71ab3eb5 100644 --- a/ngui/ui/src/components/MlTaskLeaderboards/components/SetupLeaderboardTemplateInvitation.tsx +++ b/ngui/ui/src/components/MlTaskLeaderboards/components/SetupLeaderboardTemplateInvitation.tsx @@ -17,7 +17,7 @@ const SetupLeaderboardTemplateInvitation = () => { {intl.formatMessage({ rowOriginal.model.name, getId: (rowOriginal) => rowOriginal.model.id, headerMessageId: "model", - headerDataTestId: "lbl_model" + headerDataTestId: "lbl_model", }), run({ id: "run", @@ -38,12 +38,12 @@ const MlTaskModelVersions = ({ modelVersions, isLoading }: MlTaskModelVersionsPr getRunId: ({ run: { id } }) => id, getTaskId: () => taskId, headerMessageId: "run", - headerDataTestId: "lbl_run" + headerDataTestId: "lbl_run", }), mlModelVersion({ headerMessageId: "version", headerDataTestId: "lbl_version", - accessorKey: "version" + accessorKey: "version", }), { header: ( @@ -68,13 +68,13 @@ const MlTaskModelVersions = ({ modelVersions, isLoading }: MlTaskModelVersionsPr ))} ); - } + }, }, mlModelPath({ accessorKey: "path", headerMessageId: "path", - headerDataTestId: "lbl_path" - }) + headerDataTestId: "lbl_path", + }), ], [taskId] ); @@ -89,7 +89,7 @@ const MlTaskModelVersions = ({ modelVersions, isLoading }: MlTaskModelVersionsPr queryParamPrefix="modelVersion" pageSize={50} localization={{ - emptyMessageId: "noModelVersions" + emptyMessageId: "noModelVersions", }} /> ); diff --git a/ngui/ui/src/components/MlTaskRecommendations/MlTaskRecommendations.tsx b/ngui/ui/src/components/MlTaskRecommendations/MlTaskRecommendations.tsx index f0030d292..d7ea42d38 100644 --- a/ngui/ui/src/components/MlTaskRecommendations/MlTaskRecommendations.tsx +++ b/ngui/ui/src/components/MlTaskRecommendations/MlTaskRecommendations.tsx @@ -28,7 +28,7 @@ const MlTaskRecommendations = ({ taskId, recommendations, isLoading }) => { type: recommendation.type, titleMessageId: recommendation.title, limit: downloadLimit, - mlTaskId: taskId + mlTaskId: taskId, }); }, [downloadLimit, openSideModal, taskId] @@ -39,7 +39,7 @@ const MlTaskRecommendations = ({ taskId, recommendations, isLoading }) => { return [ , , - + , ]; } diff --git a/ngui/ui/src/components/MlTaskRun/MlTaskRun.tsx b/ngui/ui/src/components/MlTaskRun/MlTaskRun.tsx index 34734ae07..9adcfd172 100644 --- a/ngui/ui/src/components/MlTaskRun/MlTaskRun.tsx +++ b/ngui/ui/src/components/MlTaskRun/MlTaskRun.tsx @@ -14,7 +14,7 @@ import { useRefetchApis } from "hooks/useRefetchApis"; import { ML_TASKS, getMlTaskDetailsUrl } from "urls"; import { SPACING_2 } from "utils/layouts"; import { formatRunFullName } from "utils/ml"; -import { Charts, Executors, Overview, Status, Tabs } from "./Components"; +import { Charts, Executors, Overview, Status, Tabs } from "./components"; const MlTaskRun = ({ run, @@ -23,7 +23,7 @@ const MlTaskRun = ({ isFinOpsEnabled = false, isPublicRun = false, isLoading = false, - isDataReady = false + isDataReady = false, }) => { const { task: { id: taskId, name: taskName } = {}, name: runName, number } = run; @@ -53,11 +53,11 @@ const MlTaskRun = ({ )} , - + , ], title: { isLoading, - text: {formatRunFullName(number, runName)} + text: {formatRunFullName(number, runName)}, }, items: [ { @@ -66,7 +66,7 @@ const MlTaskRun = ({ messageId: "refresh", dataTestId: "btn_refresh", type: "button", - action: () => refetch([GET_ML_RUN_DETAILS, GET_ML_EXECUTORS, GET_ML_RUN_DETAILS_BREAKDOWN, GET_ML_ARTIFACTS]) + action: () => refetch([GET_ML_RUN_DETAILS, GET_ML_EXECUTORS, GET_ML_RUN_DETAILS_BREAKDOWN, GET_ML_ARTIFACTS]), }, ...(isPublicRun ? [] @@ -80,12 +80,12 @@ const MlTaskRun = ({ isLoading, action: () => { openSideModal(ShareRunLinkModal, { - runId: run.id + runId: run.id, }); - } - } - ]) - ] + }, + }, + ]), + ], }; const overviewTab = ; diff --git a/ngui/ui/src/components/MlTaskRun/Components/Charts/Charts.tsx b/ngui/ui/src/components/MlTaskRun/components/Charts/Charts.tsx similarity index 95% rename from ngui/ui/src/components/MlTaskRun/Components/Charts/Charts.tsx rename to ngui/ui/src/components/MlTaskRun/components/Charts/Charts.tsx index d55bb3705..43e7eac30 100644 --- a/ngui/ui/src/components/MlTaskRun/Components/Charts/Charts.tsx +++ b/ngui/ui/src/components/MlTaskRun/components/Charts/Charts.tsx @@ -10,7 +10,7 @@ const Charts = ({ arceeToken, isPublicRun = false, isTaskRunLoading = false, - isTaskRunDataReady = false + isTaskRunDataReady = false, }) => { const { useGetRunBreakdown } = MlTasksService(); @@ -18,7 +18,7 @@ const Charts = ({ const runBreakdownParams = useMemo( () => ({ - arceeToken + arceeToken, }), [arceeToken] ); @@ -28,7 +28,7 @@ const Charts = ({ isDataReady: isGetRunBreakdownDataReady, breakdown: apiBreakdown = {}, milestones: apiMilestones = [], - stages: apiStages = [] + stages: apiStages = [], } = useGetRunBreakdown(organizationId, runId, runBreakdownParams); if (isGetRunBreakdownLoading || !isGetRunBreakdownDataReady || isTaskRunLoading || !isTaskRunDataReady) { diff --git a/ngui/ui/src/components/MlTaskRun/Components/Charts/utils.ts b/ngui/ui/src/components/MlTaskRun/components/Charts/utils.ts similarity index 89% rename from ngui/ui/src/components/MlTaskRun/Components/Charts/utils.ts rename to ngui/ui/src/components/MlTaskRun/components/Charts/utils.ts index 0ecd9ed6b..009747dd5 100644 --- a/ngui/ui/src/components/MlTaskRun/Components/Charts/utils.ts +++ b/ngui/ui/src/components/MlTaskRun/components/Charts/utils.ts @@ -5,7 +5,7 @@ export const getData = ({ breakdown = {}, milestones = [], stages = [] }) => { return { breakdown: {}, milestones: [], - stages: [] + stages: [], }; } @@ -24,7 +24,7 @@ export const getData = ({ breakdown = {}, milestones = [], stages = [] }) => { const { timestamp } = milestone; return { ...milestone, - time: timestampToSeconds(timestamp) + time: timestampToSeconds(timestamp), }; }), stages: stages.map((stage) => { @@ -35,8 +35,8 @@ export const getData = ({ breakdown = {}, milestones = [], stages = [] }) => { startTimestamp: start, endTimestamp: end, start: timestampToSeconds(start), - end: end ? timestampToSeconds(end) : null + end: end ? timestampToSeconds(end) : null, }; - }) + }), }; }; diff --git a/ngui/ui/src/components/MlTaskRun/Components/Executors/Executors.tsx b/ngui/ui/src/components/MlTaskRun/components/Executors/Executors.tsx similarity index 100% rename from ngui/ui/src/components/MlTaskRun/Components/Executors/Executors.tsx rename to ngui/ui/src/components/MlTaskRun/components/Executors/Executors.tsx diff --git a/ngui/ui/src/components/MlTaskRun/Components/Overview/Overview.tsx b/ngui/ui/src/components/MlTaskRun/components/Overview/Overview.tsx similarity index 99% rename from ngui/ui/src/components/MlTaskRun/Components/Overview/Overview.tsx rename to ngui/ui/src/components/MlTaskRun/components/Overview/Overview.tsx index 906ce5f4f..813cde8c4 100644 --- a/ngui/ui/src/components/MlTaskRun/Components/Overview/Overview.tsx +++ b/ngui/ui/src/components/MlTaskRun/components/Overview/Overview.tsx @@ -20,7 +20,7 @@ const LOADER_LINES = 5; const GIT_CHANGES_STATUS = Object.freeze({ CLEAN: "clean", - DIRTY: "dirty" + DIRTY: "dirty", }); const Goals = ({ reachedGoals, isLoading }) => { diff --git a/ngui/ui/src/components/MlTaskRun/Components/Status/Status.tsx b/ngui/ui/src/components/MlTaskRun/components/Status/Status.tsx similarity index 83% rename from ngui/ui/src/components/MlTaskRun/Components/Status/Status.tsx rename to ngui/ui/src/components/MlTaskRun/components/Status/Status.tsx index fde292b08..577757530 100644 --- a/ngui/ui/src/components/MlTaskRun/Components/Status/Status.tsx +++ b/ngui/ui/src/components/MlTaskRun/components/Status/Status.tsx @@ -15,42 +15,42 @@ const StatusSummaryGrid = ({ cost, status, duration, withCost = false, isLoading [ML_RUN_STATUS.RUNNING]: "primary", [ML_RUN_STATUS.ABORTED]: "info", [ML_RUN_STATUS.COMPLETED]: "success", - [ML_RUN_STATUS.FAILED]: "error" + [ML_RUN_STATUS.FAILED]: "error", }[status], captionMessageId: "status", renderCondition: () => status !== undefined, isLoading, dataTestIds: { - cardTestId: "card_run_status" - } + cardTestId: "card_run_status", + }, }, { key: "duration", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.Custom, CustomValueComponent: FormattedDuration, valueComponentProps: { - durationInSeconds: duration + durationInSeconds: duration, }, renderCondition: () => status !== ML_RUN_STATUS.FAILED, captionMessageId: "duration", isLoading, dataTestIds: { - cardTestId: "card_run_duration" - } + cardTestId: "card_run_duration", + }, }, { key: "cost", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: cost + value: cost, }, captionMessageId: "expenses", dataTestIds: { - cardTestId: "card_expenses" + cardTestId: "card_expenses", }, isLoading, - renderCondition: () => withCost - } + renderCondition: () => withCost, + }, ]} /> ); diff --git a/ngui/ui/src/components/MlTaskRun/Components/Tabs.tsx b/ngui/ui/src/components/MlTaskRun/components/Tabs.tsx similarity index 86% rename from ngui/ui/src/components/MlTaskRun/Components/Tabs.tsx rename to ngui/ui/src/components/MlTaskRun/components/Tabs.tsx index 7df28ec22..ee581cf85 100644 --- a/ngui/ui/src/components/MlTaskRun/Components/Tabs.tsx +++ b/ngui/ui/src/components/MlTaskRun/components/Tabs.tsx @@ -5,7 +5,7 @@ export const TABS = Object.freeze({ OVERVIEW: "overview", ARTIFACTS: "artifacts", CHARTS: "charts", - EXECUTORS: "executors" + EXECUTORS: "executors", }); const Tabs = ({ overviewTab, chartsTab, artifactsTab, executorsTab }) => { @@ -15,23 +15,23 @@ const Tabs = ({ overviewTab, chartsTab, artifactsTab, executorsTab }) => { { title: TABS.OVERVIEW, dataTestId: "tab_overview", - node: overviewTab + node: overviewTab, }, { title: TABS.CHARTS, dataTestId: "tab_charts", - node: chartsTab + node: chartsTab, }, { title: TABS.ARTIFACTS, dataTestId: "tab_artifact", - node: artifactsTab + node: artifactsTab, }, { title: TABS.EXECUTORS, dataTestId: "tab_executors", - node: executorsTab - } + node: executorsTab, + }, ]; return ( @@ -43,7 +43,7 @@ const Tabs = ({ overviewTab, chartsTab, artifactsTab, executorsTab }) => { activeTab, handleChange: (event, value) => { setActiveTab(value); - } + }, }} /> ); diff --git a/ngui/ui/src/components/MlTaskRun/Components/index.ts b/ngui/ui/src/components/MlTaskRun/components/index.ts similarity index 100% rename from ngui/ui/src/components/MlTaskRun/Components/index.ts rename to ngui/ui/src/components/MlTaskRun/components/index.ts diff --git a/ngui/ui/src/components/MlTaskRunsList/MlTaskRunsList.tsx b/ngui/ui/src/components/MlTaskRunsList/MlTaskRunsList.tsx index 6d72698d4..fd33824ae 100644 --- a/ngui/ui/src/components/MlTaskRunsList/MlTaskRunsList.tsx +++ b/ngui/ui/src/components/MlTaskRunsList/MlTaskRunsList.tsx @@ -8,7 +8,7 @@ import useDateRanges, { oneDayRange, oneMonthRange, oneWeekRange, - twoWeeksRange + twoWeeksRange, } from "hooks/useDateRanges"; import { GOALS_FILTER, STATUS_FILTER } from "utils/constants"; import { secondsToMilliseconds, inDateRange } from "utils/datetime"; @@ -27,7 +27,7 @@ const MlTaskRunsList = ({ runs, isLoading }) => { oneWeekRange(true), twoWeeksRange(true), oneMonthRange(true), - customRange(true) + customRange(true), ]); const { interval } = selectedRange; @@ -42,7 +42,7 @@ const MlTaskRunsList = ({ runs, isLoading }) => { return inDateRange( { startDate: interval.startDate, - endDate: interval.endDate + endDate: interval.endDate, }, millisecondsRunStartTimestamp ); diff --git a/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Breakdown.tsx b/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Breakdown.tsx index ba7c377d7..9ea573b31 100644 --- a/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Breakdown.tsx +++ b/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Breakdown.tsx @@ -29,13 +29,13 @@ const getDurationFormatter = INTERVAL_DURATION_VALUE_TYPES.DAYS, INTERVAL_DURATION_VALUE_TYPES.HOURS, INTERVAL_DURATION_VALUE_TYPES.MINUTES, - INTERVAL_DURATION_VALUE_TYPES.SECONDS + INTERVAL_DURATION_VALUE_TYPES.SECONDS, ], duration: intervalToDuration({ start: 0, - end: value * 1000 + end: value * 1000, }), - compact + compact, }); const METRIC_BREAKDOWN_NAME = Object.freeze({ @@ -44,7 +44,7 @@ const METRIC_BREAKDOWN_NAME = Object.freeze({ TASK_CPU: "task_cpu", CPU_UPTIME: "cpu_uptime", DATA_READ: "data_read", - DATA_WRITTEN: "data_written" + DATA_WRITTEN: "data_written", }); const Breakdown = ({ runs }) => { @@ -56,7 +56,7 @@ const Breakdown = ({ runs }) => { const formatInterval = useFormatIntervalDuration(); const formatDuration = getDurationFormatter({ formatInterval, - formatMessage: intl.formatMessage + formatMessage: intl.formatMessage, }); const formatMoney = useMoneyFormatter(); @@ -70,15 +70,15 @@ const Breakdown = ({ runs }) => { formatValue: (value) => formatDuration(value), formatAxis: (value) => formatDuration(value, { - compact: true - }) + compact: true, + }), }, { name: METRIC_BREAKDOWN_NAME.EXPENSES, renderBreakdownName: () => , getPointValue: (run) => run.cost ?? null, formatValue: (value) => , - formatAxis: (value) => formatMoney(FORMATTED_MONEY_TYPES.COMPACT, value) + formatAxis: (value) => formatMoney(FORMATTED_MONEY_TYPES.COMPACT, value), }, { name: METRIC_BREAKDOWN_NAME.TASK_CPU, @@ -88,8 +88,8 @@ const Breakdown = ({ runs }) => { formatValue: (value) => formatDuration(value), formatAxis: (value) => formatDuration(value, { - compact: true - }) + compact: true, + }), }, { name: METRIC_BREAKDOWN_NAME.CPU_UPTIME, @@ -99,8 +99,8 @@ const Breakdown = ({ runs }) => { formatValue: (value) => formatDuration(value), formatAxis: (value) => formatDuration(value, { - compact: true - }) + compact: true, + }), }, { name: METRIC_BREAKDOWN_NAME.DATA_READ, @@ -112,8 +112,8 @@ const Breakdown = ({ runs }) => { formatDigitalUnit({ value, baseUnit: IEC_UNITS.MEBIBYTE, - maximumFractionDigits: 2 - }) + maximumFractionDigits: 2, + }), }, { name: METRIC_BREAKDOWN_NAME.DATA_WRITTEN, @@ -125,9 +125,9 @@ const Breakdown = ({ runs }) => { formatDigitalUnit({ value, baseUnit: IEC_UNITS.MEBIBYTE, - maximumFractionDigits: 2 - }) - } + maximumFractionDigits: 2, + }), + }, ]; const getMetricsBreakdownConfig = () => { @@ -139,8 +139,8 @@ const Breakdown = ({ runs }) => { key, { name, - unit - } + unit, + }, ]) ) ); @@ -164,8 +164,8 @@ const Breakdown = ({ runs }) => { formatDynamicFractionDigitsValue({ value, maximumFractionDigits: 2, - notation: "compact" - }) + notation: "compact", + }), })); }; @@ -192,7 +192,7 @@ const Breakdown = ({ runs }) => { breakdownNames, initialSelectedBreakdowns: metricsBreakdownNames, fallbackBreakdowns: [METRIC_BREAKDOWN_NAME.DURATION, METRIC_BREAKDOWN_NAME.EXPENSES], - queryParamName: BREAKDOWN_BY_QUERY_PARAMETER + queryParamName: BREAKDOWN_BY_QUERY_PARAMETER, }); return ( diff --git a/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Chart.tsx b/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Chart.tsx index 16be24a29..b9af66e6f 100644 --- a/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Chart.tsx +++ b/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Chart.tsx @@ -11,7 +11,7 @@ const Chart = ({ runs = [], breakdownConfig = [], selectedBreakdowns = [], isLoa const breakdownLines = useMlBreakdownLines({ breakdown: Object.fromEntries(runs.map((run) => [run.number, run])), breakdownConfig, - selectedBreakdowns + selectedBreakdowns, }); return ( @@ -20,7 +20,7 @@ const Chart = ({ runs = [], breakdownConfig = [], selectedBreakdowns = [], isLoa data={breakdownLines} xScale={{ type: "linear", - min: "auto" + min: "auto", }} renderTooltipBody={({ slice: { points = [] } = {} }) => { const { x: runNumber } = points[0]?.data ?? {}; @@ -43,26 +43,26 @@ const Chart = ({ runs = [], breakdownConfig = [], selectedBreakdowns = [], isLoa }} colors={colors} style={{ - margin: CHART_MARGIN_STYLES + margin: CHART_MARGIN_STYLES, }} axisLeft={ [1, 2].includes(breakdownLines.length) ? { - format: breakdownLines[0].formatAxis + format: breakdownLines[0].formatAxis, } : null } axisRight={ breakdownLines.length === 2 ? { - format: breakdownLines[1].formatAxis + format: breakdownLines[1].formatAxis, } : null } animate={false} axisBottom={{ format: (runNumber) => formatRunNumber(runNumber), - formatString: (runNumber) => formatRunNumber(runNumber) + formatString: (runNumber) => formatRunNumber(runNumber), }} /> ); diff --git a/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Layout.tsx b/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Layout.tsx index 579bd64f1..26aa68a2e 100644 --- a/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Layout.tsx +++ b/ngui/ui/src/components/MlTaskRunsList/RunsBreakdowns/Layout.tsx @@ -11,7 +11,7 @@ const Layout = ({ removeBreakdown, runs, getRunNameByNumber, - colors + colors, }) => (
    diff --git a/ngui/ui/src/components/MlTaskRunsList/RunsFilters/RunsFilters.tsx b/ngui/ui/src/components/MlTaskRunsList/RunsFilters/RunsFilters.tsx index d01a26975..965ecbfc0 100644 --- a/ngui/ui/src/components/MlTaskRunsList/RunsFilters/RunsFilters.tsx +++ b/ngui/ui/src/components/MlTaskRunsList/RunsFilters/RunsFilters.tsx @@ -17,18 +17,18 @@ const RunsFilters = ({ datePicker, runs, appliedFilters, onChange, isLoading }) return { [STATUS_BE_FILTER]: statuses.map((status) => ({ - name: status + name: status, })), [GOALS_BE_FILTER]: [ { name: GOAL_STATUS.MET, - value: true + value: true, }, { name: GOAL_STATUS.NOT_MET, - value: false - } - ] + value: false, + }, + ], }; }, [runs]); @@ -37,7 +37,7 @@ const RunsFilters = ({ datePicker, runs, appliedFilters, onChange, isLoading }) new Filters({ filters: ML_TASK_RUNS_FILTERS, filterValues, - appliedFilters + appliedFilters, }), [filterValues, appliedFilters] ); diff --git a/ngui/ui/src/components/MlTaskRunsList/RunsTable/RunsTable.tsx b/ngui/ui/src/components/MlTaskRunsList/RunsTable/RunsTable.tsx index ee8d0ab22..e33f75cd8 100644 --- a/ngui/ui/src/components/MlTaskRunsList/RunsTable/RunsTable.tsx +++ b/ngui/ui/src/components/MlTaskRunsList/RunsTable/RunsTable.tsx @@ -42,7 +42,7 @@ const RunsTable = ({ runs }) => { const search = filterValue.toLocaleLowerCase(); const { - original: { runset: { name: runsetName = "" } = {} } + original: { runset: { name: runsetName = "" } = {} }, } = row; return [runName, runsetName].some((str) => str.toLocaleLowerCase().includes(search)); @@ -67,8 +67,8 @@ const RunsTable = ({ runs }) => { } /> ), - key: "template" - } + key: "template", + }, ] : null } @@ -78,7 +78,7 @@ const RunsTable = ({ runs }) => { ); - } + }, }, { header: , @@ -86,19 +86,19 @@ const RunsTable = ({ runs }) => { cell: ({ cell, row: { - original: { reason } - } - }) => + original: { reason }, + }, + }) => , }, metrics({ accessorKey: "reached_goals", onSortByMetricKeyChange: (newKey) => setSortByMetricKey(newKey), metricsKeyNameEntries, - sortByMetricKey + sortByMetricKey, }), dataset({ id: "dataset", - accessorFn: (originalRow) => originalRow.dataset?.name + accessorFn: (originalRow) => originalRow.dataset?.name, }), hyperparameters(), ...(isFinOpsEnabled @@ -111,8 +111,8 @@ const RunsTable = ({ runs }) => { ), accessorKey: "cost", accessorFn: ({ cost }) => formatMoney(FORMATTED_MONEY_TYPES.COMMON, cost), - cell: ({ cell }) => cell.getValue() - } + cell: ({ cell }) => cell.getValue(), + }, ] : []), tags({ @@ -121,24 +121,24 @@ const RunsTable = ({ runs }) => { Object.entries(originalRow.tags ?? {}) .map(([key, val]) => `${key}: ${val}`) .join(" "), - getTags: (originalRow) => originalRow.tags + getTags: (originalRow) => originalRow.tags, }), startedAt({ headerMessageId: "startedAt", headerDataTestId: "lbl_started_at", accessorKey: "start", options: { - enableGlobalFilter: false - } + enableGlobalFilter: false, + }, }), duration({ headerMessageId: "duration", headerDataTestId: "lbl_duration", accessorKey: "duration", options: { - enableGlobalFilter: false - } - }) + enableGlobalFilter: false, + }, + }), ]; }, [formatMoney, isFinOpsEnabled, metricsKeyNameEntries, sortByMetricKey]); @@ -153,11 +153,11 @@ const RunsTable = ({ runs }) => { borderLeft: !isEmptyObject(reachedGoals) && Object.values(reachedGoals).every(({ reached }) => reached) ? `4px solid ${theme.palette.success.main}` - : undefined + : undefined, })} pageSize={50} localization={{ - emptyMessageId: "noRuns" + emptyMessageId: "noRuns", }} /> ); diff --git a/ngui/ui/src/components/MlTasks/MlTasks.tsx b/ngui/ui/src/components/MlTasks/MlTasks.tsx index 79bd18674..7dfe75978 100644 --- a/ngui/ui/src/components/MlTasks/MlTasks.tsx +++ b/ngui/ui/src/components/MlTasks/MlTasks.tsx @@ -20,7 +20,7 @@ import { STATUS_BE_FILTER, GOALS_FILTER, OWNER_ID_FILTER, - EMPTY_UUID + EMPTY_UUID, } from "utils/constants"; import { getSearchParams, updateSearchParams } from "utils/network"; import { isEmptyObject } from "utils/objects"; @@ -33,7 +33,7 @@ const PageActionBar = () => { const actionBarDefinition = { title: { messageId: "tasks", - dataTestId: "lbl_ml_tasks" + dataTestId: "lbl_ml_tasks", }, items: [ { @@ -42,7 +42,7 @@ const PageActionBar = () => { messageId: "refresh", dataTestId: "btn_refresh", type: "button", - action: () => refetch([GET_ML_TASKS]) + action: () => refetch([GET_ML_TASKS]), }, { key: "btn-profiling-integration", @@ -50,7 +50,7 @@ const PageActionBar = () => { messageId: "profilingIntegration", dataTestId: "btn_profiling_integration", type: "button", - action: () => openSideModal(ProfilingIntegrationModal, {}) + action: () => openSideModal(ProfilingIntegrationModal, {}), }, { key: "btn-manage-metrics", @@ -58,7 +58,7 @@ const PageActionBar = () => { messageId: "manageMetrics", dataTestId: "btn_manage_metrics", type: "button", - link: ML_METRICS + link: ML_METRICS, }, { key: "btn-executors", @@ -66,9 +66,9 @@ const PageActionBar = () => { messageId: "executors", dataTestId: "btn_executors", type: "button", - link: ML_EXECUTORS - } - ] + link: ML_EXECUTORS, + }, + ], }; return ; @@ -88,11 +88,11 @@ const getFilterValues = ({ tasks }) => { id, { id, - name - } + name, + }, ]; }) - ).values() + ).values(), ]; const statuses = [ @@ -100,27 +100,27 @@ const getFilterValues = ({ tasks }) => { tasks.map(({ status }) => [ status, { - name: status - } + name: status, + }, ]) - ).values() + ).values(), ]; const goals = [ { name: GOAL_STATUS.MET, - value: true + value: true, }, { name: GOAL_STATUS.NOT_MET, - value: false - } + value: false, + }, ]; return { [OWNER_BE_FILTER]: owners, [STATUS_BE_FILTER]: statuses, - [GOALS_BE_FILTER]: goals + [GOALS_BE_FILTER]: goals, }; }; @@ -131,7 +131,7 @@ const getRequestParams = () => { ML_TASKS_FILTERS_NAMES.reduce( (params, queryKey) => ({ ...params, - [queryKey]: queryParams[queryKey] + [queryKey]: queryParams[queryKey], }), {} ); @@ -198,7 +198,7 @@ const MlTasks = ({ tasks, isLoading }) => { diff --git a/ngui/ui/src/components/MlTasksFilters/MlTasksFilters.tsx b/ngui/ui/src/components/MlTasksFilters/MlTasksFilters.tsx index dce55815c..fdbb062bf 100644 --- a/ngui/ui/src/components/MlTasksFilters/MlTasksFilters.tsx +++ b/ngui/ui/src/components/MlTasksFilters/MlTasksFilters.tsx @@ -7,7 +7,7 @@ const MlTasksFilters = ({ appliedFilters, filterValues, onChange: onChangeHandle const mlTasksFilters = new Filters({ filters: ML_TASKS_FILTERS, filterValues, - appliedFilters + appliedFilters, }); const onChange = ({ name, value }) => { @@ -23,7 +23,7 @@ const MlTasksFilters = ({ appliedFilters, filterValues, onChange: onChangeHandle Object.entries(currentlyAppliedFilters).reduce( (newRequestParams, [filterName]) => ({ ...newRequestParams, - [filterName]: undefined + [filterName]: undefined, }), {} ) diff --git a/ngui/ui/src/components/MlTasksTable/MlTasksTable.tsx b/ngui/ui/src/components/MlTasksTable/MlTasksTable.tsx index 670e1ac95..55eacfcb8 100644 --- a/ngui/ui/src/components/MlTasksTable/MlTasksTable.tsx +++ b/ngui/ui/src/components/MlTasksTable/MlTasksTable.tsx @@ -24,7 +24,7 @@ const MlTasksTable = ({ tasks, filterValues, appliedFilters, onFilterChange }) = const columns = useMemo( () => [ mlTaskName({ - enableHiding: false + enableHiding: false, }), { header: ( @@ -34,7 +34,7 @@ const MlTasksTable = ({ tasks, filterValues, appliedFilters, onFilterChange }) = ), accessorKey: "key", enableHiding: false, - cell: ({ cell }) => cell.getValue() + cell: ({ cell }) => cell.getValue(), }, { header: ( @@ -47,15 +47,15 @@ const MlTasksTable = ({ tasks, filterValues, appliedFilters, onFilterChange }) = columnSelector: { accessor: "owner", messageId: "owner", - dataTestId: "btn_toggle_column_owner" - } + dataTestId: "btn_toggle_column_owner", + }, }, mlTaskLastRun({ columnSelector: { accessor: "lastRun", messageId: "lastRun", - dataTestId: "btn_toggle_column_last_run" - } + dataTestId: "btn_toggle_column_last_run", + }, }), duration({ headerMessageId: "lastRunDuration", @@ -65,9 +65,9 @@ const MlTasksTable = ({ tasks, filterValues, appliedFilters, onFilterChange }) = columnSelector: { accessor: "lastRunDuration", messageId: "lastRunDuration", - dataTestId: "btn_toggle_column_last_run_durations" - } - } + dataTestId: "btn_toggle_column_last_run_durations", + }, + }, }), metrics({ accessorKey: "last_run_reached_goals", @@ -77,8 +77,8 @@ const MlTasksTable = ({ tasks, filterValues, appliedFilters, onFilterChange }) = columnSelector: { accessor: "metrics", messageId: "metrics", - dataTestId: "btn_toggle_column_metrics" - } + dataTestId: "btn_toggle_column_metrics", + }, }), ...(isFinOpsEnabled ? [ @@ -92,22 +92,22 @@ const MlTasksTable = ({ tasks, filterValues, appliedFilters, onFilterChange }) = columnSelector: { accessor: "expenses", messageId: "expenses", - dataTestId: "btn_toggle_column_expenses" + dataTestId: "btn_toggle_column_expenses", }, cell: ({ row: { - original: { total_cost: total, last_30_days_cost: last30DaysCost, last_run_cost: lastRunCost } - } + original: { total_cost: total, last_30_days_cost: last30DaysCost, last_run_cost: lastRunCost }, + }, }) => ( <> } /> } /> } /> - ) - } + ), + }, ] - : []) + : []), ], [isFinOpsEnabled, metricsKeyNameEntries, sortByMetricKey] ); @@ -127,10 +127,10 @@ const MlTasksTable = ({ tasks, filterValues, appliedFilters, onFilterChange }) = type: "button", dataTestId: "btn-create-task", link: ML_TASK_CREATE, - requiredActions: ["EDIT_PARTNER"] - } - ] - } + requiredActions: ["EDIT_PARTNER"], + }, + ], + }, }; return ( @@ -146,7 +146,7 @@ const MlTasksTable = ({ tasks, filterValues, appliedFilters, onFilterChange }) = actionBar={tableActionBarDefinition} withSearch localization={{ - emptyMessageId: "noTasks" + emptyMessageId: "noTasks", }} columnsSelectorUID="mlTasksTable" pageSize={50} diff --git a/ngui/ui/src/components/Mocked/BannerContent.styles.ts b/ngui/ui/src/components/Mocked/BannerContent.styles.ts index aa1ea462d..ccdb5bd54 100644 --- a/ngui/ui/src/components/Mocked/BannerContent.styles.ts +++ b/ngui/ui/src/components/Mocked/BannerContent.styles.ts @@ -2,29 +2,29 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ buttonMargin: { - marginBottom: theme.spacing(1) + marginBottom: theme.spacing(1), }, bold: { - fontWeight: "bold" + fontWeight: "bold", }, icon: { width: "4rem", height: "4rem", marginTop: `calc(-2rem - ${theme.spacing(2)})`, - marginBottom: theme.spacing(1) + marginBottom: theme.spacing(1), }, buttonsWrapper: { display: "flex", flexDirection: "column", "& >*": { "&:not(:last-child)": { - marginBottom: theme.spacing(1) - } - } + marginBottom: theme.spacing(1), + }, + }, }, buttonsWrapperMargin: { - marginBottom: theme.spacing(1) - } + marginBottom: theme.spacing(1), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Mocked/BannerContent.tsx b/ngui/ui/src/components/Mocked/BannerContent.tsx index e72372d01..ee0471e98 100644 --- a/ngui/ui/src/components/Mocked/BannerContent.tsx +++ b/ngui/ui/src/components/Mocked/BannerContent.tsx @@ -17,7 +17,7 @@ import { CLOUD_ACCOUNT_CONNECT_K8S, ANOMALY_CREATE, QUOTA_AND_BUDGET_CREATE, - TAGGING_POLICY_CREATE + TAGGING_POLICY_CREATE, } from "urls"; import { isEmptyArray } from "utils/arrays"; import useStyles from "./BannerContent.styles"; @@ -42,48 +42,48 @@ export const getBannerIcon = (messageType) => ({ cloudAccounts: { Component: DataSourceIcon, - dataTestId: "img_connect_data_source" + dataTestId: "img_connect_data_source", }, dashboard: { Component: DataSourceIcon, - dataTestId: "img_connect_data_source" + dataTestId: "img_connect_data_source", }, recommendations: { Component: DataSourceIcon, - dataTestId: "img_connect_data_source" + dataTestId: "img_connect_data_source", }, pools: { Component: PoolLimitIcon, - dataTestId: "img_set_pool_limit" + dataTestId: "img_set_pool_limit", }, assignmentRules: { Component: AssignmentRuleIcon, - dataTestId: "img_add_rule" + dataTestId: "img_add_rule", }, environments: { Component: EnvironmentIcon, - dataTestId: "img_add_env" + dataTestId: "img_add_env", }, k8sRightsizing: { Component: DataSourceIcon, - dataTestId: "img_connect_data_source" + dataTestId: "img_connect_data_source", }, anomalyDetectionPolicy: { Component: DataSourceIcon, - dataTestId: "img_add_anomaly_detection_policy" + dataTestId: "img_add_anomaly_detection_policy", }, quotasAndBudgetsPolicy: { Component: DataSourceIcon, - dataTestId: "img_add_quotas_and_budget_policy" + dataTestId: "img_add_quotas_and_budget_policy", }, taggingPolicy: { Component: DataSourceIcon, - dataTestId: "img_add_tagging_policy" + dataTestId: "img_add_tagging_policy", }, awsCloudAccounts: { Component: DataSourceIcon, - dataTestId: "img_connect_data_source" - } + dataTestId: "img_connect_data_source", + }, })[messageType]; const getConfiguration = (messageType) => @@ -99,13 +99,13 @@ const getConfiguration = (messageType) => mainMessage: ["p_sample", "p_connect_ca"], button: "btn_connect_ca", wrapper: "banner_mockup", - subMessage: ["p_connection"] + subMessage: ["p_connection"], }, renderIfNotAllowed: { - mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "dataSourcesContactManagerBackdropMessage"] + mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "dataSourcesContactManagerBackdropMessage"], }, - Icon: DataSourceIcon - } + Icon: DataSourceIcon, + }, }, awsCloudAccounts: { item: { @@ -118,13 +118,13 @@ const getConfiguration = (messageType) => mainMessage: ["p_sample", "p_connect_ca"], button: "btn_connect_ca", wrapper: "banner_mockup", - subMessage: ["p_connection"] + subMessage: ["p_connection"], }, renderIfNotAllowed: { - mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "awsDataSourcesContactManagerBackdropMessage"] + mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "awsDataSourcesContactManagerBackdropMessage"], }, - Icon: DataSourceIcon - } + Icon: DataSourceIcon, + }, }, dashboard: { item: { @@ -136,24 +136,24 @@ const getConfiguration = (messageType) => { messageId: ADD_ENVIRONMENT, onClick: redirectToCreateEnvironment, - dataTestId: "btn_add_env" + dataTestId: "btn_add_env", }, { messageId: CONNECT_DATA_SOURCE, onClick: redirectToCreateCloudAccount, - dataTestId: "btn_connect_ca" - } + dataTestId: "btn_connect_ca", + }, ], dataTestIds: { mainMessage: ["p_sample", "p_connect_ca"], wrapper: "banner_mockup", - subMessage: ["p_connection"] + subMessage: ["p_connection"], }, renderIfNotAllowed: { - mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "dashboardContactManagerBackdropMessage"] + mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "dashboardContactManagerBackdropMessage"], }, - Icon: DataSourceIcon - } + Icon: DataSourceIcon, + }, }, recommendations: { item: { @@ -166,13 +166,13 @@ const getConfiguration = (messageType) => mainMessage: ["p_sample"], button: "btn_connect_ca", subMessage: ["p_connection"], - wrapper: "banner_mockup" + wrapper: "banner_mockup", }, renderIfNotAllowed: { - mainMessageIds: ["recommendationsContactManagerBackdropMessage"] + mainMessageIds: ["recommendationsContactManagerBackdropMessage"], }, - Icon: DataSourceIcon - } + Icon: DataSourceIcon, + }, }, pools: { item: { @@ -183,13 +183,13 @@ const getConfiguration = (messageType) => dataTestIds: { mainMessage: ["p_sample", "p_set_pool"], button: "btn_set_pool", - wrapper: "banner_mockup" + wrapper: "banner_mockup", }, renderIfNotAllowed: { - mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "poolsContactManagerBackdropMessage"] + mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "poolsContactManagerBackdropMessage"], }, - Icon: PoolLimitIcon - } + Icon: PoolLimitIcon, + }, }, assignmentRules: { item: { @@ -199,10 +199,10 @@ const getConfiguration = (messageType) => dataTestIds: { mainMessage: ["p_no_automatic_rules", "p_add_an_assignment_rule"], button: "btn_add_rule", - wrapper: "banner_mockup" + wrapper: "banner_mockup", }, - Icon: AssignmentRuleIcon - } + Icon: AssignmentRuleIcon, + }, }, environments: { item: { @@ -213,13 +213,13 @@ const getConfiguration = (messageType) => dataTestIds: { mainMessage: ["p_sample", "p_add_env"], button: "btn_add_env", - wrapper: "banner_mockup" + wrapper: "banner_mockup", }, renderIfNotAllowed: { - mainMessageIds: ["youDontHaveAnyEnvironmentsCreatedYet", "environmentsContactManagerBackdropMessage"] + mainMessageIds: ["youDontHaveAnyEnvironmentsCreatedYet", "environmentsContactManagerBackdropMessage"], }, - Icon: EnvironmentIcon - } + Icon: EnvironmentIcon, + }, }, k8sRightsizing: { item: { @@ -232,13 +232,13 @@ const getConfiguration = (messageType) => mainMessage: ["p_sample", "p_connect_ca"], button: "btn_connect_ca", wrapper: "banner_mockup", - subMessage: ["p_connection"] + subMessage: ["p_connection"], }, renderIfNotAllowed: { - mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "dataSourcesContactManagerBackdropMessage"] + mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "dataSourcesContactManagerBackdropMessage"], }, - Icon: DataSourceIcon - } + Icon: DataSourceIcon, + }, }, anomalyDetectionPolicy: { item: { @@ -249,13 +249,13 @@ const getConfiguration = (messageType) => dataTestIds: { mainMessage: ["p_sample", "p_add_anomaly_detection_policy"], button: "btn_add_anomaly_detection_policy", - wrapper: "banner_mockup" + wrapper: "banner_mockup", }, renderIfNotAllowed: { - mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "anomalyDetectionPolicyContactManagerBackdropMessage"] + mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "anomalyDetectionPolicyContactManagerBackdropMessage"], }, - Icon: DataSourceIcon - } + Icon: DataSourceIcon, + }, }, quotasAndBudgetsPolicy: { item: { @@ -266,13 +266,13 @@ const getConfiguration = (messageType) => dataTestIds: { mainMessage: ["p_sample", "p_add_quotas_and_budget_policy"], button: "btn_add_quotas_and_budget_policy", - wrapper: "banner_mockup" + wrapper: "banner_mockup", }, renderIfNotAllowed: { - mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "quotasAndBudgetPolicyContactManagerBackdropMessage"] + mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "quotasAndBudgetPolicyContactManagerBackdropMessage"], }, - Icon: DataSourceIcon - } + Icon: DataSourceIcon, + }, }, taggingPolicy: { item: { @@ -284,14 +284,14 @@ const getConfiguration = (messageType) => mainMessage: ["p_sample", "p_add_tagging_policy"], button: "btn_add_tagging_policy", wrapper: "banner_mockup", - img: "img_add_tagging_policy" + img: "img_add_tagging_policy", }, renderIfNotAllowed: { - mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "taggingPolicyContactManagerBackdropMessage"] + mainMessageIds: ["sampleDataToGiveSenseOfTheProduct", "taggingPolicyContactManagerBackdropMessage"], }, - Icon: DataSourceIcon - } - } + Icon: DataSourceIcon, + }, + }, })[messageType]; const BannerContent = ({ messageType }) => { @@ -305,7 +305,7 @@ const BannerContent = ({ messageType }) => { const [{ mainMessageIds = [], buttons, buttonMessageId, subMessageIds = [], onButtonClick, dataTestIds = {} } = {}] = useAllowedItems({ - items: [item] + items: [item], }); const renderTypography = (messageIds, messageDataTestIds, isSubMessage = false) => diff --git a/ngui/ui/src/components/Mocked/Mocked.test.tsx b/ngui/ui/src/components/Mocked/Mocked.test.tsx index 99028933c..24c7888a2 100644 --- a/ngui/ui/src/components/Mocked/Mocked.test.tsx +++ b/ngui/ui/src/components/Mocked/Mocked.test.tsx @@ -9,7 +9,7 @@ it("renders without crashing", () => { root.render( Mock
    }> diff --git a/ngui/ui/src/components/Mocked/Mocked.tsx b/ngui/ui/src/components/Mocked/Mocked.tsx index 0310b8c4d..a2bb23e35 100644 --- a/ngui/ui/src/components/Mocked/Mocked.tsx +++ b/ngui/ui/src/components/Mocked/Mocked.tsx @@ -15,7 +15,7 @@ const MESSAGE_TYPES = Object.freeze({ DASHBOARD: "dashboard", ANOMALY_DETECTION_POLICY: "anomalyDetectionPolicy", QUOTAS_AND_BUDGETS_POLICY: "quotasAndBudgetsPolicy", - TAGGING_POLICY: "taggingPolicy" + TAGGING_POLICY: "taggingPolicy", }); const renderMock = (backdropCondition, mock, backdropMessageType) => @@ -34,7 +34,7 @@ const connectCloudAccountMocksTypes = [ MESSAGE_TYPES.CLOUD_ACCOUNTS, MESSAGE_TYPES.DASHBOARD, MESSAGE_TYPES.RECOMMENDATIONS, - MESSAGE_TYPES.K8S_RIGHTSIZING + MESSAGE_TYPES.K8S_RIGHTSIZING, ]; const Mocked = ({ @@ -42,7 +42,7 @@ const Mocked = ({ mock = children, backdropMessageType = MESSAGE_TYPES.CLOUD_ACCOUNTS, backdropCondition = true, - mockCondition = false + mockCondition = false, }) => { const { rootData: tours = {} } = useRootData(TOURS); diff --git a/ngui/ui/src/components/MonoTypography/MonoTypography.styles.ts b/ngui/ui/src/components/MonoTypography/MonoTypography.styles.ts index 2de307680..243c9d9a8 100644 --- a/ngui/ui/src/components/MonoTypography/MonoTypography.styles.ts +++ b/ngui/ui/src/components/MonoTypography/MonoTypography.styles.ts @@ -2,8 +2,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ mono: { - ...theme.typography.mono - } + ...theme.typography.mono, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/NebiusConfigFormElements/BillingReportBucketDescription/BillingReportBucketDescription.tsx b/ngui/ui/src/components/NebiusConfigFormElements/BillingReportBucketDescription/BillingReportBucketDescription.tsx index ee3cdf08c..9f893a960 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/BillingReportBucketDescription/BillingReportBucketDescription.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/BillingReportBucketDescription/BillingReportBucketDescription.tsx @@ -11,7 +11,7 @@ const BillingReportBucketDescription = () => ( {chunks} + i: (chunks) => {chunks}, }} /> @@ -23,7 +23,7 @@ const BillingReportBucketDescription = () => ( {chunks} - ) + ), }} /> diff --git a/ngui/ui/src/components/NebiusConfigFormElements/Fields/AccessKeyId/AccessKeyId.tsx b/ngui/ui/src/components/NebiusConfigFormElements/Fields/AccessKeyId/AccessKeyId.tsx index c07ac09dc..732e72eae 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/Fields/AccessKeyId/AccessKeyId.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/Fields/AccessKeyId/AccessKeyId.tsx @@ -17,11 +17,11 @@ const AccessKeyId = () => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_access_key_id`" /> - ) + ), }} multiline label={intl.formatMessage({ id: "id" }).toUpperCase()} diff --git a/ngui/ui/src/components/NebiusConfigFormElements/Fields/AccessKeySecretKey/AccessKeySecretKey.tsx b/ngui/ui/src/components/NebiusConfigFormElements/Fields/AccessKeySecretKey/AccessKeySecretKey.tsx index d7c12d65d..d59ec7ae5 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/Fields/AccessKeySecretKey/AccessKeySecretKey.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/Fields/AccessKeySecretKey/AccessKeySecretKey.tsx @@ -14,16 +14,16 @@ const AccessKeySecretKey = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_secret_access_key" /> - ) + ), }} label={} autoComplete="off" sx={{ - marginBottom: (theme) => theme.spacing(1) + marginBottom: (theme) => theme.spacing(1), }} /> ); diff --git a/ngui/ui/src/components/NebiusConfigFormElements/Fields/AuthorizedKeyId/AuthorizedKeyId.tsx b/ngui/ui/src/components/NebiusConfigFormElements/Fields/AuthorizedKeyId/AuthorizedKeyId.tsx index c79817adc..ef2bd8fd8 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/Fields/AuthorizedKeyId/AuthorizedKeyId.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/Fields/AuthorizedKeyId/AuthorizedKeyId.tsx @@ -17,11 +17,11 @@ const AuthorizedKeyId = () => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_authorized_key_id" /> - ) + ), }} label={intl.formatMessage({ id: "id" }).toUpperCase()} autoComplete="off" diff --git a/ngui/ui/src/components/NebiusConfigFormElements/Fields/AuthorizedKeyPrivateKey/AuthorizedKeyPrivateKey.tsx b/ngui/ui/src/components/NebiusConfigFormElements/Fields/AuthorizedKeyPrivateKey/AuthorizedKeyPrivateKey.tsx index ccad56987..2064f31f5 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/Fields/AuthorizedKeyPrivateKey/AuthorizedKeyPrivateKey.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/Fields/AuthorizedKeyPrivateKey/AuthorizedKeyPrivateKey.tsx @@ -14,11 +14,11 @@ const AuthorizedKeyPrivateKey = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_private_authorized_key" /> - ) + ), }} multiline minRows={4} @@ -26,7 +26,7 @@ const AuthorizedKeyPrivateKey = () => ( label={} autoComplete="off" sx={{ - marginBottom: (theme) => theme.spacing(1) + marginBottom: (theme) => theme.spacing(1), }} /> ); diff --git a/ngui/ui/src/components/NebiusConfigFormElements/Fields/CloudName/CloudName.tsx b/ngui/ui/src/components/NebiusConfigFormElements/Fields/CloudName/CloudName.tsx index bd9612ff0..76a11d5e1 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/Fields/CloudName/CloudName.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/Fields/CloudName/CloudName.tsx @@ -15,11 +15,11 @@ const CloudName = ({ disabled = false }) => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_cloud_name" /> - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/NebiusConfigFormElements/Fields/ReportBucketName/ReportBucketName.tsx b/ngui/ui/src/components/NebiusConfigFormElements/Fields/ReportBucketName/ReportBucketName.tsx index cc3ac7c5e..51fbb91ca 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/Fields/ReportBucketName/ReportBucketName.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/Fields/ReportBucketName/ReportBucketName.tsx @@ -15,11 +15,11 @@ const ReportBucketName = ({ disabled = false }) => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_report_bucket_name" /> - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/NebiusConfigFormElements/Fields/ReportBucketPathPrefix/ReportBucketPathPrefix.tsx b/ngui/ui/src/components/NebiusConfigFormElements/Fields/ReportBucketPathPrefix/ReportBucketPathPrefix.tsx index 47e7c98b8..76709ce4d 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/Fields/ReportBucketPathPrefix/ReportBucketPathPrefix.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/Fields/ReportBucketPathPrefix/ReportBucketPathPrefix.tsx @@ -14,11 +14,11 @@ const ReportBucketPathPrefix = ({ disabled = false }) => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_report_path_prefix" /> - ) + ), }} label={} autoComplete="off" diff --git a/ngui/ui/src/components/NebiusConfigFormElements/Fields/ServiceAccountId/ServiceAccountId.tsx b/ngui/ui/src/components/NebiusConfigFormElements/Fields/ServiceAccountId/ServiceAccountId.tsx index e077fb912..ac18f76f5 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/Fields/ServiceAccountId/ServiceAccountId.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/Fields/ServiceAccountId/ServiceAccountId.tsx @@ -14,16 +14,16 @@ const ServiceAccountId = () => ( {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_service_account_id" /> - ) + ), }} label={} autoComplete="off" sx={{ - marginBottom: (theme) => theme.spacing(1) + marginBottom: (theme) => theme.spacing(1), }} /> ); diff --git a/ngui/ui/src/components/NebiusConfigFormElements/ServiceAccountCredentialsDescription/ServiceAccountCredentialsDescription.tsx b/ngui/ui/src/components/NebiusConfigFormElements/ServiceAccountCredentialsDescription/ServiceAccountCredentialsDescription.tsx index b3ce94910..55c387714 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/ServiceAccountCredentialsDescription/ServiceAccountCredentialsDescription.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/ServiceAccountCredentialsDescription/ServiceAccountCredentialsDescription.tsx @@ -8,7 +8,7 @@ const ServiceAccountCredentialsDescription = () => ( {chunks} + strong: (chunks) => {chunks}, }} /> @@ -22,7 +22,7 @@ const ServiceAccountCredentialsDescription = () => (
    • diff --git a/ngui/ui/src/components/NebiusConfigFormElements/UpdateServiceAccountCredentialsDescription/UpdateServiceAccountCredentialsDescription.tsx b/ngui/ui/src/components/NebiusConfigFormElements/UpdateServiceAccountCredentialsDescription/UpdateServiceAccountCredentialsDescription.tsx index 35e3b4e65..29a095c5a 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/UpdateServiceAccountCredentialsDescription/UpdateServiceAccountCredentialsDescription.tsx +++ b/ngui/ui/src/components/NebiusConfigFormElements/UpdateServiceAccountCredentialsDescription/UpdateServiceAccountCredentialsDescription.tsx @@ -18,7 +18,7 @@ const UpdateServiceAccountCredentialsDescription = () => ( > {chunks} - ) + ), }} /> diff --git a/ngui/ui/src/components/NebiusConfigFormElements/index.ts b/ngui/ui/src/components/NebiusConfigFormElements/index.ts index b6f0238f0..ab4782f83 100644 --- a/ngui/ui/src/components/NebiusConfigFormElements/index.ts +++ b/ngui/ui/src/components/NebiusConfigFormElements/index.ts @@ -20,7 +20,7 @@ const FIELD_NAMES = { ACCESS_KEY_ID, SECRET_ACCESS_KEY, BUCKET_NAME, - BUCKET_PREFIX + BUCKET_PREFIX, }; export { @@ -37,5 +37,5 @@ export { BillingReportBucketTitle, BillingReportBucketDescription, ReportBucketName, - ReportBucketPathPrefix + ReportBucketPathPrefix, }; diff --git a/ngui/ui/src/components/OnScheduleLabel/OnScheduleLabel.tsx b/ngui/ui/src/components/OnScheduleLabel/OnScheduleLabel.tsx index 5cf4a2b02..11da5207d 100644 --- a/ngui/ui/src/components/OnScheduleLabel/OnScheduleLabel.tsx +++ b/ngui/ui/src/components/OnScheduleLabel/OnScheduleLabel.tsx @@ -19,7 +19,7 @@ const useShowLink = (powerScheduleId: PowerScheduleId) => { if (powerSchedulePath) { const { - params: { powerScheduleId: routePowerScheduleId } + params: { powerScheduleId: routePowerScheduleId }, } = powerSchedulePath; if (routePowerScheduleId === powerScheduleId) { diff --git a/ngui/ui/src/components/OrganizationConstraint/BreakdownChart/BreakdownChart.tsx b/ngui/ui/src/components/OrganizationConstraint/BreakdownChart/BreakdownChart.tsx index e1768fd2b..b15d49790 100644 --- a/ngui/ui/src/components/OrganizationConstraint/BreakdownChart/BreakdownChart.tsx +++ b/ngui/ui/src/components/OrganizationConstraint/BreakdownChart/BreakdownChart.tsx @@ -16,7 +16,7 @@ const ResourceCountBreakdownContainer = ({ constraint }) => { const { organizationId } = useOrganizationInfo(); const [{ value: breakdownByValue }, onBreakdownByChange] = useBreakdownBy({ - queryParamName: DAILY_RESOURCE_COUNT_BREAKDOWN_BY_PARAMETER_NAME + queryParamName: DAILY_RESOURCE_COUNT_BREAKDOWN_BY_PARAMETER_NAME, }); const resourceCountBreakdownRequestParams = useMemo(() => { @@ -30,7 +30,7 @@ const ResourceCountBreakdownContainer = ({ constraint }) => { start_date: dateRange.startDate, end_date: dateRange.endDate, breakdown_by: breakdownByValue, - ...mapFiltersToApiParams(constraint.filters) + ...mapFiltersToApiParams(constraint.filters), }; }, [breakdownByValue, constraint]); @@ -38,8 +38,8 @@ const ResourceCountBreakdownContainer = ({ constraint }) => { skip: isEmptyObject(constraint), variables: { organizationId, - params: resourceCountBreakdownRequestParams - } + params: resourceCountBreakdownRequestParams, + }, }); return ( @@ -56,7 +56,7 @@ const ExpensesDailyBreakdownByContainer = ({ constraint }) => { const { organizationId } = useOrganizationInfo(); const [{ value: breakdownByValue }, onBreakdownByChange] = useBreakdownBy({ - queryParamName: DAILY_EXPENSES_BREAKDOWN_BY_PARAMETER_NAME + queryParamName: DAILY_EXPENSES_BREAKDOWN_BY_PARAMETER_NAME, }); const expensesDailyBreakdownRequestParams = useMemo(() => { @@ -70,7 +70,7 @@ const ExpensesDailyBreakdownByContainer = ({ constraint }) => { start_date: dateRange.startDate, end_date: dateRange.endDate, breakdown_by: breakdownByValue, - ...mapFiltersToApiParams(constraint.filters) + ...mapFiltersToApiParams(constraint.filters), }; }, [breakdownByValue, constraint]); @@ -78,8 +78,8 @@ const ExpensesDailyBreakdownByContainer = ({ constraint }) => { skip: isEmptyObject(constraint), variables: { organizationId, - params: expensesDailyBreakdownRequestParams - } + params: expensesDailyBreakdownRequestParams, + }, }); const breakdown = useMemo(() => reformatBreakdown(expensesDailyBreakdown?.breakdown ?? {}), [expensesDailyBreakdown]); @@ -97,7 +97,7 @@ const ExpensesDailyBreakdownByContainer = ({ constraint }) => { const BreakdownChart = ({ constraint, isGetConstraintLoading }) => { if (isGetConstraintLoading) { - return ; + return ; } if (constraint.type === RESOURCE_COUNT_ANOMALY) { diff --git a/ngui/ui/src/components/OrganizationConstraint/OrganizationConstraint.tsx b/ngui/ui/src/components/OrganizationConstraint/OrganizationConstraint.tsx index 70e8a528f..9e98afa70 100644 --- a/ngui/ui/src/components/OrganizationConstraint/OrganizationConstraint.tsx +++ b/ngui/ui/src/components/OrganizationConstraint/OrganizationConstraint.tsx @@ -26,7 +26,7 @@ import { QUOTA_POLICY, RECURRING_BUDGET_POLICY, TAGGING_POLICY, - TAGGING_POLICY_TYPES + TAGGING_POLICY_TYPES, } from "utils/constants"; import { EN_FULL_FORMAT, format, secondsToMilliseconds } from "utils/datetime"; import { SPACING_1 } from "utils/layouts"; @@ -53,7 +53,7 @@ const ConstraintName = ({ id, name }) => { keyMessageId="name" value={} sx={{ - marginRight: 1 + marginRight: 1, }} /> {id && name && isAllowed ? ( @@ -64,7 +64,7 @@ const ConstraintName = ({ id, name }) => { disabled={isRestricted} tooltip={{ show: true, - value: isRestricted ? restrictionReasonMessage : + value: isRestricted ? restrictionReasonMessage : , }} /> ) : null} @@ -86,7 +86,7 @@ const ConstraintProperties = ({ id, name, type, definition = {} }) => { monthly_budget: monthlyBudget, total_budget: totalBudget, start_date: startDate, - conditions + conditions, } = definition; return ( @@ -152,7 +152,7 @@ const OrganizationConstraint = ({ actionBarTitleDefinition, constraint, limitHits, - isLoadingProps = {} + isLoadingProps = {}, }) => { const { anomalyId } = useParams(); @@ -180,7 +180,7 @@ const OrganizationConstraint = ({ action: () => { const link = getResourcesLink(constraint); navigate(link); - } + }, }, { key: "delete", @@ -190,9 +190,9 @@ const OrganizationConstraint = ({ isLoading: isGetConstraintLoading, show: isAllowed, dataTestId: "btn_delete", - action: () => openSideModal(DeleteOrganizationConstraintModal, { id, name, type }) - } - ] + action: () => openSideModal(DeleteOrganizationConstraintModal, { id, name, type }), + }, + ], }; const renderFiltersSection = () => { diff --git a/ngui/ui/src/components/OrganizationConstraintsCard/OrganizationConstraintsCard.tsx b/ngui/ui/src/components/OrganizationConstraintsCard/OrganizationConstraintsCard.tsx index f0f7618f7..af78156d8 100644 --- a/ngui/ui/src/components/OrganizationConstraintsCard/OrganizationConstraintsCard.tsx +++ b/ngui/ui/src/components/OrganizationConstraintsCard/OrganizationConstraintsCard.tsx @@ -23,15 +23,15 @@ const ConstraintsTable = ({ constraints }) => { accessorKey: "typeMessageId", cell: ({ row: { - original: { typeMessageId, typeLink } - } + original: { typeMessageId, typeLink }, + }, }) => ( - ) + ), }, - organizationConstraintStatus() + organizationConstraintStatus(), ], [] ); @@ -54,7 +54,7 @@ const OrganizationConstraintsCard = ({ constraints, isLoading = false }) => ( title={} dataTestIds={{ wrapper: "block_policies_violations", - title: "lbl_policies_violations" + title: "lbl_policies_violations", }} elevation={0} > diff --git a/ngui/ui/src/components/OrganizationConstraintsMocked/OrganizationConstraintsMocked.tsx b/ngui/ui/src/components/OrganizationConstraintsMocked/OrganizationConstraintsMocked.tsx index 23bf98d75..c06782e8c 100644 --- a/ngui/ui/src/components/OrganizationConstraintsMocked/OrganizationConstraintsMocked.tsx +++ b/ngui/ui/src/components/OrganizationConstraintsMocked/OrganizationConstraintsMocked.tsx @@ -14,9 +14,9 @@ const mockedData = { definition: { conditions: { tag: "aqa_uuid", - without_tag: "aqa" + without_tag: "aqa", }, - start_date: 1648897200 + start_date: 1648897200, }, filters: { active: [true], @@ -24,11 +24,11 @@ const mockedData = { { id: "2ceda346-26af-478c-bd9b-d1293e33dfae", name: "Azure QA", - type: "azure_cnr" - } - ] + type: "azure_cnr", + }, + ], }, - last_run: 1651064162 + last_run: 1651064162, }, { deleted_at: 0, @@ -39,28 +39,28 @@ const mockedData = { type: "tagging_policy", definition: { conditions: { - tag: "00000000-0000-0000-0000-000000000000" + tag: "00000000-0000-0000-0000-000000000000", }, - start_date: 1648898100 + start_date: 1648898100, }, filters: { resource_type: [ { name: "Bucket", - type: "regular" - } + type: "regular", + }, ], active: [true], cloud_account: [ { id: "32f4375a-dead-45e0-9f70-0635ff0f6b23", name: "AWS HQ", - type: "aws_cnr" - } - ] + type: "aws_cnr", + }, + ], }, - last_run: 1651064162 - } + last_run: 1651064162, + }, ], [QUOTAS_AND_BUDGETS]: [ { @@ -71,23 +71,23 @@ const mockedData = { organization_id: "dc31d34a-8684-42a3-88c7-fb0877b94eae", type: "resource_quota", definition: { - max_value: 3 + max_value: 3, }, filters: { region: [ { name: "us-east-1", - cloud_type: "aws_cnr" - } + cloud_type: "aws_cnr", + }, ], resource_type: [ { name: "Bucket", - type: "regular" - } - ] + type: "regular", + }, + ], }, - last_run: 1651064162 + last_run: 1651064162, }, { deleted_at: 0, @@ -97,17 +97,17 @@ const mockedData = { organization_id: "dc31d34a-8684-42a3-88c7-fb0877b94eae", type: "recurring_budget", definition: { - monthly_budget: 5300 + monthly_budget: 5300, }, filters: { service_name: [ { name: "AmazonS3", - cloud_type: "aws_cnr" - } - ] + cloud_type: "aws_cnr", + }, + ], }, - last_run: 1651064162 + last_run: 1651064162, }, { deleted_at: 0, @@ -117,23 +117,23 @@ const mockedData = { organization_id: "dc31d34a-8684-42a3-88c7-fb0877b94eae", type: "resource_quota", definition: { - max_value: 10 + max_value: 10, }, filters: { region: [ { name: "eu-west-2", - cloud_type: "aws_cnr" - } + cloud_type: "aws_cnr", + }, ], resource_type: [ { name: "Bucket", - type: "regular" - } - ] + type: "regular", + }, + ], }, - last_run: 1651064162 + last_run: 1651064162, }, { deleted_at: 0, @@ -144,19 +144,19 @@ const mockedData = { type: "expiring_budget", definition: { total_budget: 2650, - start_date: 1646203500 + start_date: 1646203500, }, filters: { pool: [ { id: "e67869b2-035e-440a-8d54-bd91b86a4a48", name: "Environment", - purpose: "budget" - } - ] + purpose: "budget", + }, + ], }, - last_run: 1651064162 - } + last_run: 1651064162, + }, ], [ANOMALIES]: [ { @@ -168,23 +168,23 @@ const mockedData = { type: "expense_anomaly", definition: { threshold_days: 4, - threshold: 10 + threshold: 10, }, filters: { cloud_account: [ { id: "be176e7c-e233-4225-9fef-6df899567875", name: "AWS HQ", - type: "aws_cnr" - } + type: "aws_cnr", + }, ], pool: [ { id: "8ac078ee-69cb-43d3-9814-41d21280ecbf+", name: "Engineering", - purpose: "business_unit" - } - ] + purpose: "business_unit", + }, + ], }, last_run: 1660285844, last_run_result: { @@ -194,10 +194,10 @@ const mockedData = { 1659916800: 18.5225175343, 1660003200: 16.339856684600004, 1660089600: 12.989782186100001, - 1660176000: 8.478992506600001 - } + 1660176000: 8.478992506600001, + }, }, - limit_hits: [] + limit_hits: [], }, { deleted_at: 0, @@ -208,15 +208,15 @@ const mockedData = { type: "resource_count_anomaly", definition: { threshold_days: 7, - threshold: 20 + threshold: 20, }, filters: { resource_type: [ { name: "Instance", - type: "regular" - } - ] + type: "regular", + }, + ], }, last_run: 1660285844, last_run_result: { @@ -229,8 +229,8 @@ const mockedData = { 1659916800: 65, 1660003200: 94, 1660089600: 79, - 1660176000: 49 - } + 1660176000: 49, + }, }, limit_hits: [ { @@ -251,11 +251,11 @@ const mockedData = { 1659744000: 49, 1659830400: 49, 1659916800: 65, - 1660003200: 94 - } - } - } - ] + 1660003200: 94, + }, + }, + }, + ], }, { deleted_at: 0, @@ -266,16 +266,16 @@ const mockedData = { type: "expense_anomaly", definition: { threshold_days: 30, - threshold: 10 + threshold: 10, }, filters: { pool: [ { id: "f85a2ef0-0c03-41f2-9973-a6057076516b+", name: "Marketing", - purpose: "business_unit" - } - ] + purpose: "business_unit", + }, + ], }, last_run: 1660285844, last_run_result: { @@ -311,12 +311,12 @@ const mockedData = { 1659916800: 0.06422027, 1660003200: 0.06422027, 1660089600: 0.06422027, - 1660176000: 0.03242796 - } + 1660176000: 0.03242796, + }, }, - limit_hits: [] - } - ] + limit_hits: [], + }, + ], }; const OrganizationConstraintsMocked = ({ actionBarDefinition }) => { @@ -329,7 +329,7 @@ const OrganizationConstraintsMocked = ({ actionBarDefinition }) => { actionBarDefinition={actionBarDefinition} constraints={constraints} isLoading={false} - addButtonLink={""} + addButtonLink="" /> ); }; diff --git a/ngui/ui/src/components/OrganizationConstraintsTable/OrganizationConstraintsTable.tsx b/ngui/ui/src/components/OrganizationConstraintsTable/OrganizationConstraintsTable.tsx index 3b3efbbe5..06411bf66 100644 --- a/ngui/ui/src/components/OrganizationConstraintsTable/OrganizationConstraintsTable.tsx +++ b/ngui/ui/src/components/OrganizationConstraintsTable/OrganizationConstraintsTable.tsx @@ -24,7 +24,7 @@ import { ANOMALY_TYPES, TAGGING_POLICY, EMPTY_UUID, - FORMATTED_MONEY_TYPES + FORMATTED_MONEY_TYPES, } from "utils/constants"; import { EN_FULL_FORMAT, format, secondsToMilliseconds } from "utils/datetime"; import { getResourcesLink } from "utils/organizationConstraints/getResourcesLink"; @@ -39,7 +39,7 @@ const buildDescription = ({ type, definition, formatter, rawString = false }) => sentenceType: intl.formatMessage({ id: ANOMALY_TYPES[type] }).toLowerCase(), period, threshold, - strong: (chunks) => (rawString ? chunks : {chunks}) + strong: (chunks) => (rawString ? chunks : {chunks}), } ); } @@ -50,7 +50,7 @@ const buildDescription = ({ type, definition, formatter, rawString = false }) => { id: "quotaPolicyDescription" }, { value: maxValue, - strong: (chunks) => (rawString ? chunks : {chunks}) + strong: (chunks) => (rawString ? chunks : {chunks}), } ); } @@ -61,7 +61,7 @@ const buildDescription = ({ type, definition, formatter, rawString = false }) => { id: "recurringBudgetPolicyDescription" }, { budget: formatter(FORMATTED_MONEY_TYPES.COMMON, monthlyBudget), - strong: (chunks) => (rawString ? chunks : {chunks}) + strong: (chunks) => (rawString ? chunks : {chunks}), } ); } @@ -73,7 +73,7 @@ const buildDescription = ({ type, definition, formatter, rawString = false }) => { budget: formatter(FORMATTED_MONEY_TYPES.COMMON, totalBudget), startDate: format(secondsToMilliseconds(startDate), EN_FULL_FORMAT), - strong: (chunks) => (rawString ? chunks : {chunks}) + strong: (chunks) => (rawString ? chunks : {chunks}), } ); } @@ -81,12 +81,12 @@ const buildDescription = ({ type, definition, formatter, rawString = false }) => if (type === TAGGING_POLICY) { const { conditions: { tag: prohibitedTag, without_tag: requiredTag }, - start_date: startDate + start_date: startDate, } = definition; const commonValues = { startDate: format(secondsToMilliseconds(startDate), EN_FULL_FORMAT), - strong: (chunks) => (rawString ? chunks : {chunks}) + strong: (chunks) => (rawString ? chunks : {chunks}), }; if (prohibitedTag === EMPTY_UUID) { @@ -137,7 +137,7 @@ const OrganizationConstraintsTable = ({ constraints, addButtonLink, isLoading = displayedName: config.label, displayedValue: config.renderPerspectiveItem(value, appliedFilters), displayedNameString: config.labelString, - displayedValueString: config.renderPerspectiveItem(value, appliedFilters, { stringify: true }) + displayedValueString: config.renderPerspectiveItem(value, appliedFilters, { stringify: true }), }; }); } @@ -155,8 +155,8 @@ const OrganizationConstraintsTable = ({ constraints, addButtonLink, isLoading = displayedName: config.label, displayedValue: config.renderPerspectiveItem({ from, to }), displayedNameString: config.labelString, - displayedValueString: config.renderPerspectiveItem({ from, to }) - } + displayedValueString: config.renderPerspectiveItem({ from, to }), + }, ]; } @@ -170,8 +170,8 @@ const OrganizationConstraintsTable = ({ constraints, addButtonLink, isLoading = type: constraint.type, definition: constraint.definition, formatter, - rawString: true - }) + rawString: true, + }), }; }), [constraints, formatter] @@ -189,7 +189,7 @@ const OrganizationConstraintsTable = ({ constraints, addButtonLink, isLoading = ), accessorKey: "descriptionForSearch", cell: ({ row: { original: { type, definition } = {} } }) => buildDescription({ type, definition, formatter }), - enableSorting: false + enableSorting: false, }, { header: ( @@ -220,7 +220,7 @@ const OrganizationConstraintsTable = ({ constraints, addButtonLink, isLoading = maxRows={5} /> ); - } + }, }, { header: ( @@ -240,11 +240,11 @@ const OrganizationConstraintsTable = ({ constraints, addButtonLink, isLoading = }} tooltip={{ show: true, - value: + value: , }} /> - ) - } + ), + }, ], [formatter, navigate] ); @@ -265,10 +265,10 @@ const OrganizationConstraintsTable = ({ constraints, addButtonLink, isLoading = variant: "contained", type: "button", link: addButtonLink, - dataTestId: "btn_add" - } - ] - } + dataTestId: "btn_add", + }, + ], + }, }} data={tableData} columns={columns} @@ -276,7 +276,7 @@ const OrganizationConstraintsTable = ({ constraints, addButtonLink, isLoading = dataTestIds={{ searchInput: "input_search", searchButton: "btn_search", - deleteSearchButton: "btn_delete_search" + deleteSearchButton: "btn_delete_search", }} localization={{ emptyMessageId: "noPolicies" }} pageSize={50} diff --git a/ngui/ui/src/components/OrganizationExpenses/OrganizationExpenses.test.tsx b/ngui/ui/src/components/OrganizationExpenses/OrganizationExpenses.test.tsx index a9d798455..72ab623cf 100644 --- a/ngui/ui/src/components/OrganizationExpenses/OrganizationExpenses.test.tsx +++ b/ngui/ui/src/components/OrganizationExpenses/OrganizationExpenses.test.tsx @@ -8,17 +8,17 @@ const data = { expenses: { last_month: { total: 60, - date: 1585688400 // timestamp of last day of last month + date: 1585688400, // timestamp of last day of last month }, this_month: { total: 45, - date: 1585697200 // today's timestamp + date: 1585697200, // today's timestamp }, this_month_forecast: { total: 55, - date: 1585715100 // timestamp of last day of this month - } - } + date: 1585715100, // timestamp of last day of this month + }, + }, }; it("renders without crashing", () => { diff --git a/ngui/ui/src/components/OrganizationExpenses/OrganizationExpenses.tsx b/ngui/ui/src/components/OrganizationExpenses/OrganizationExpenses.tsx index 0f30801f2..2744157cf 100644 --- a/ngui/ui/src/components/OrganizationExpenses/OrganizationExpenses.tsx +++ b/ngui/ui/src/components/OrganizationExpenses/OrganizationExpenses.tsx @@ -18,7 +18,7 @@ import { isEmptyObject, idx } from "utils/objects"; const getOrderedExpenses = (expenses) => ({ [LAST_MONTH]: expenses[LAST_MONTH], [THIS_MONTH]: expenses[THIS_MONTH], - [THIS_MONTH_FORECAST]: expenses[THIS_MONTH_FORECAST] + [THIS_MONTH_FORECAST]: expenses[THIS_MONTH_FORECAST], }); const HEIGHT = 35; @@ -30,7 +30,7 @@ const getChartData = (expenses) => return { ...expensesData, expensesPeriod: EXPENSES_PERIOD[periodName], - index: periodName === THIS_MONTH_FORECAST ? intl.formatMessage({ id: "monthNameForecast" }, { monthName }) : monthName + index: periodName === THIS_MONTH_FORECAST ? intl.formatMessage({ id: "monthNameForecast" }, { monthName }) : monthName, }; }); @@ -62,18 +62,18 @@ const OrganizationExpenses = ({ data, isLoading }) => { titleButton={{ type: "icon", tooltip: { - title: + title: , }, buttonProps: { icon: , isLoading, onClick: goToExpensesByPool, - dataTestId: "btn_go_to_org_expenses" - } + dataTestId: "btn_go_to_org_expenses", + }, }} dataTestIds={{ wrapper: "block_org_expenses", - title: "lbl_org_expenses" + title: "lbl_org_expenses", }} elevation={0} > @@ -92,7 +92,7 @@ const OrganizationExpenses = ({ data, isLoading }) => { maxValue={total} thresholdMarker={{ value: total, - format: (value) => intl.formatNumber(value, { format: currency }) + format: (value) => intl.formatNumber(value, { format: currency }), }} emptyMessageId="noOrganizationExpensesMessage" /> diff --git a/ngui/ui/src/components/OrganizationInfoSetting/OrganizationCurrency/OrganizationCurrency.tsx b/ngui/ui/src/components/OrganizationInfoSetting/OrganizationCurrency/OrganizationCurrency.tsx index e3c79fcad..6e25354ff 100644 --- a/ngui/ui/src/components/OrganizationInfoSetting/OrganizationCurrency/OrganizationCurrency.tsx +++ b/ngui/ui/src/components/OrganizationInfoSetting/OrganizationCurrency/OrganizationCurrency.tsx @@ -36,7 +36,7 @@ const OrganizationCurrency = () => { onClick={enableEditMode} tooltip={{ show: true, - messageId: "edit" + messageId: "edit", }} /> ) : null} diff --git a/ngui/ui/src/components/OrganizationInfoSetting/OrganizationInfoSetting.tsx b/ngui/ui/src/components/OrganizationInfoSetting/OrganizationInfoSetting.tsx index 6f098f7d7..1023ea95c 100644 --- a/ngui/ui/src/components/OrganizationInfoSetting/OrganizationInfoSetting.tsx +++ b/ngui/ui/src/components/OrganizationInfoSetting/OrganizationInfoSetting.tsx @@ -34,7 +34,7 @@ const OrganizationId = ({ id }: OrganizationIdProps) => ( variant="inherit" text={id} sx={{ - fontWeight: "inherit" + fontWeight: "inherit", }} > {id} @@ -72,7 +72,7 @@ const OrganizationName = ({ name }: OrganizationNameProps) => { onClick={enableEditMode} tooltip={{ show: true, - messageId: "edit" + messageId: "edit", }} /> )} diff --git a/ngui/ui/src/components/OrganizationLabel/OrganizationLabel.tsx b/ngui/ui/src/components/OrganizationLabel/OrganizationLabel.tsx index ce0c6f286..e139a76ef 100644 --- a/ngui/ui/src/components/OrganizationLabel/OrganizationLabel.tsx +++ b/ngui/ui/src/components/OrganizationLabel/OrganizationLabel.tsx @@ -36,7 +36,7 @@ const LabelLink = forwardRef( onClick={() => updateScope({ newScopeId: organizationId, - redirectTo: HOME + redirectTo: HOME, }) } {...rest} @@ -53,7 +53,7 @@ const OrganizationLabel = ({ id, name, dataTestId, disableLink = false, isInacti const { displayName, isNameLong, originalName } = getOrganizationDisplayName({ name, isInactive, - maxLength: MAX_ORGANIZATION_NAME_LENGTH + maxLength: MAX_ORGANIZATION_NAME_LENGTH, }); return ( diff --git a/ngui/ui/src/components/OrganizationOptions/OrganizationOptions.tsx b/ngui/ui/src/components/OrganizationOptions/OrganizationOptions.tsx index af86d1ec5..90d8e3afe 100644 --- a/ngui/ui/src/components/OrganizationOptions/OrganizationOptions.tsx +++ b/ngui/ui/src/components/OrganizationOptions/OrganizationOptions.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useEffect, useState } from "react"; import AddOutlinedIcon from "@mui/icons-material/AddOutlined"; import { CircularProgress } from "@mui/material"; import Box from "@mui/material/Box"; @@ -26,12 +26,12 @@ const OrganizationOptions = ({ handleExpand, options, onSave, - isLoadingProps = {} + isLoadingProps = {}, }) => { const { isGetOrganizationOptionsLoading = false, isGetOrganizationOptionLoading = false, - isUpdateOrganizationOptionLoading = false + isUpdateOrganizationOptionLoading = false, } = isLoadingProps; const [updatedValue, setUpdatedValue] = useState(value); @@ -39,6 +39,10 @@ const OrganizationOptions = ({ const openSideModal = useOpenSideModal(); + useEffect(() => { + setUpdatedValue(value); + }, [value]); + const onJsonChange = ({ error, jsObject }) => { setUpdatedValue(jsObject); setIsValidJson(error === false); @@ -59,7 +63,7 @@ const OrganizationOptions = ({ const actionBarDefinition = { title: { messageId: "organizationOptions", - dataTestId: "lbl_organization_options" + dataTestId: "lbl_organization_options", }, items: [ { @@ -71,9 +75,9 @@ const OrganizationOptions = ({ action: () => openSideModal(CreateOrganizationOptionModal), type: "button", requiredActions: ["EDIT_PARTNER"], - dataTestId: "btn_add_organization_option" - } - ] + dataTestId: "btn_add_organization_option", + }, + ], }; const isChangeSettingsAllowed = useIsAllowed({ requiredActions: ["EDIT_PARTNER"] }); diff --git a/ngui/ui/src/components/OrganizationSelector/OrganizationSelector.test.tsx b/ngui/ui/src/components/OrganizationSelector/OrganizationSelector.test.tsx index b93bb884c..13cbd8698 100644 --- a/ngui/ui/src/components/OrganizationSelector/OrganizationSelector.test.tsx +++ b/ngui/ui/src/components/OrganizationSelector/OrganizationSelector.test.tsx @@ -8,8 +8,8 @@ const pools = [ id: "a2e75d53-4a90-4f28-9a97-dead860b3d58", created_at: null, name: "Partner", - parent_id: null - } + parent_id: null, + }, ]; it("renders without crashing", () => { diff --git a/ngui/ui/src/components/OrganizationSelector/OrganizationSelector.tsx b/ngui/ui/src/components/OrganizationSelector/OrganizationSelector.tsx index 4896b6dfd..c48b03f58 100644 --- a/ngui/ui/src/components/OrganizationSelector/OrganizationSelector.tsx +++ b/ngui/ui/src/components/OrganizationSelector/OrganizationSelector.tsx @@ -31,26 +31,26 @@ const SELECTOR_SX = { */ minWidth: 270, "& label": { - color: (theme) => theme.palette.primary.main + color: (theme) => theme.palette.primary.main, }, "& div": { color: (theme) => theme.palette.primary.main, "&.Mui-focused": { "& fieldset": { - borderColor: (theme) => theme.palette.primary.main - } - } + borderColor: (theme) => theme.palette.primary.main, + }, + }, }, "& svg": { - color: (theme) => theme.palette.primary.main + color: (theme) => theme.palette.primary.main, }, "& fieldset": { - borderColor: (theme) => theme.palette.primary.main + borderColor: (theme) => theme.palette.primary.main, }, "&:hover fieldset": { - borderColor: (theme) => theme.palette.primary.main - } - } + borderColor: (theme) => theme.palette.primary.main, + }, + }, }; type OrganizationSelectorProps = { @@ -68,7 +68,7 @@ const OrganizationSelector = ({ organizations, organizationId = "", onChange, - isLoading = false + isLoading = false, }: OrganizationSelectorProps) => { const { isDemo } = useOrganizationInfo(); const openSideModal = useOpenSideModal(); @@ -108,12 +108,12 @@ const OrganizationSelector = ({ const { displayName, isNameLong, originalName } = getOrganizationDisplayName({ name: organization.name, isInactive: organization.disabled, - maxLength: MAX_ORGANIZATION_NAME_LENGTH + maxLength: MAX_ORGANIZATION_NAME_LENGTH, }); const tooltip = isNameLong ? { - title: originalName + title: originalName, } : undefined; @@ -121,7 +121,7 @@ const OrganizationSelector = ({ @@ -133,7 +133,7 @@ const OrganizationSelector = ({
    • @@ -248,7 +248,7 @@ arcee.error() {chunks} + strong: (chunks) => {chunks}, }} /> @@ -256,7 +256,7 @@ arcee.error() {chunks} + strong: (chunks) => {chunks}, }} /> @@ -264,7 +264,7 @@ arcee.error() {chunks} + strong: (chunks) => {chunks}, }} /> @@ -273,7 +273,7 @@ arcee.error() + br:
      , }} /> @@ -309,7 +309,7 @@ arcee.error() @@ -318,7 +318,7 @@ arcee.error() @@ -339,8 +339,8 @@ const SendingMetrics = () => ( {chunks} - ) - } + ), + }, }} parameterMessageIds={["mlProfilingIntegration.sendingMetrics.parameters.1.data"]} method={`arcee.send({ "YOUR-METRIC-1-KEY": YOUR_METRIC_1_VALUE, "YOUR-METRIC-2-KEY": YOUR_METRIC_2_VALUE })`} @@ -360,12 +360,12 @@ const AddingHyperparameters = () => ( {chunks} - ) - } + ), + }, }} parameterMessageIds={[ "mlProfilingIntegration.addingHyperparameters.parameters.1.key", - "mlProfilingIntegration.addingHyperparameters.parameters.2.value" + "mlProfilingIntegration.addingHyperparameters.parameters.2.value", ]} method={`arcee.hyperparam(key="YOUR-PARAM-KEY", value=YOUR_PARAM_VALUE)`} example={`arcee.hyperparam("EPOCHS", 100)`} @@ -378,11 +378,11 @@ const TaggingTaskRun = () => ( ( ( const AddingStage = () => ( <> - + ( ( ( ( ( ( ( ( ); @@ -568,9 +568,9 @@ const FailTaskRun = () => ( ); @@ -586,7 +586,7 @@ const ProfilingIntegration = ({ profilingToken, taskKey, isLoading = false }: Pr {chunks} - ) + ), }} /> diff --git a/ngui/ui/src/components/ProgressBar/ProgressBar.styles.ts b/ngui/ui/src/components/ProgressBar/ProgressBar.styles.ts index e3651b90a..8c73e6b3b 100644 --- a/ngui/ui/src/components/ProgressBar/ProgressBar.styles.ts +++ b/ngui/ui/src/components/ProgressBar/ProgressBar.styles.ts @@ -10,41 +10,41 @@ const useStyles = makeStyles()((theme, { height }) => ({ display: "inline-flex", alignItems: "center", justifyContent: "center", - height + height, }, progress: { position: "absolute", borderRadius: "0.3rem", width: "100%", height: "100%", - backgroundColor: lighten(theme.palette.common.black, 0.95) + backgroundColor: lighten(theme.palette.common.black, 0.95), }, valuePrimary: { - color: theme.palette.primary.main + color: theme.palette.primary.main, }, barPrimary: { - backgroundColor: lighten(theme.palette.primary.main, ALPHA) + backgroundColor: lighten(theme.palette.primary.main, ALPHA), }, valueSuccess: { - color: theme.palette.success.main + color: theme.palette.success.main, }, barSuccess: { - backgroundColor: lighten(theme.palette.success.main, ALPHA) + backgroundColor: lighten(theme.palette.success.main, ALPHA), }, valueError: { - color: theme.palette.error.main + color: theme.palette.error.main, }, barError: { - backgroundColor: lighten(theme.palette.error.main, ALPHA) + backgroundColor: lighten(theme.palette.error.main, ALPHA), }, valueWarning: { - color: theme.palette.warning.main + color: theme.palette.warning.main, }, barWarning: { - backgroundColor: lighten(theme.palette.warning.main, ALPHA) + backgroundColor: lighten(theme.palette.warning.main, ALPHA), }, valueWrapper: { width: "100%", @@ -52,8 +52,8 @@ const useStyles = makeStyles()((theme, { height }) => ({ textAlign: "center", paddingLeft: theme.spacing(SPACING_1), paddingRight: theme.spacing(SPACING_1), - fontWeight: "bold" - } + fontWeight: "bold", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ProgressBar/ProgressBar.tsx b/ngui/ui/src/components/ProgressBar/ProgressBar.tsx index c29cdf239..264d0fce4 100644 --- a/ngui/ui/src/components/ProgressBar/ProgressBar.tsx +++ b/ngui/ui/src/components/ProgressBar/ProgressBar.tsx @@ -15,7 +15,7 @@ const ProgressBar = ({ children, height = "2rem", value, color = "primary", tool 100 ? 100 : value || 0} diff --git a/ngui/ui/src/components/QuestionMark/QuestionMark.styles.ts b/ngui/ui/src/components/QuestionMark/QuestionMark.styles.ts index 355ada646..c8c48533a 100644 --- a/ngui/ui/src/components/QuestionMark/QuestionMark.styles.ts +++ b/ngui/ui/src/components/QuestionMark/QuestionMark.styles.ts @@ -5,15 +5,15 @@ const useStyles = makeStyles()((theme) => ({ questionMark: { cursor: "default", "&:hover": { - backgroundColor: "inherit" - } + backgroundColor: "inherit", + }, }, leftMargin: { - marginLeft: theme.spacing(SPACING_1) + marginLeft: theme.spacing(SPACING_1), }, rightSide: { - paddingRight: 0 - } + paddingRight: 0, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/QuestionMark/QuestionMark.tsx b/ngui/ui/src/components/QuestionMark/QuestionMark.tsx index 5e03e581d..676681d56 100644 --- a/ngui/ui/src/components/QuestionMark/QuestionMark.tsx +++ b/ngui/ui/src/components/QuestionMark/QuestionMark.tsx @@ -47,7 +47,7 @@ const QuestionMark = ({ /** * TODO: Consider replacing it with a "margin" (or just "m") setting that utilizes theme.spacing(1) as the default left margin. */ - withLeftMargin = true + withLeftMargin = true, }: QuestionMarkProps) => { const { classes, cx } = useStyles(); diff --git a/ngui/ui/src/components/QuickDatePickerValues/QuickDatePickerValues.styles.ts b/ngui/ui/src/components/QuickDatePickerValues/QuickDatePickerValues.styles.ts index 8295f48e0..b8dd887d9 100644 --- a/ngui/ui/src/components/QuickDatePickerValues/QuickDatePickerValues.styles.ts +++ b/ngui/ui/src/components/QuickDatePickerValues/QuickDatePickerValues.styles.ts @@ -7,10 +7,10 @@ const useStyles = makeStyles()((theme) => ({ "& > *": { marginRight: theme.spacing(1), "&:last-child": { - marginRight: 0 - } - } - } + marginRight: 0, + }, + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/RadioGroupField/RadioGroupField.styles.ts b/ngui/ui/src/components/RadioGroupField/RadioGroupField.styles.ts index 1cdd9ffdd..1730e7732 100644 --- a/ngui/ui/src/components/RadioGroupField/RadioGroupField.styles.ts +++ b/ngui/ui/src/components/RadioGroupField/RadioGroupField.styles.ts @@ -2,11 +2,11 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ radioGroup: { - paddingLeft: theme.spacing(1.75) + paddingLeft: theme.spacing(1.75), }, fullWidthSkeleton: { - maxWidth: "100%" - } + maxWidth: "100%", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/RadioGroupField/RadioGroupField.tsx b/ngui/ui/src/components/RadioGroupField/RadioGroupField.tsx index 67cd2ac0a..a42fa72dd 100644 --- a/ngui/ui/src/components/RadioGroupField/RadioGroupField.tsx +++ b/ngui/ui/src/components/RadioGroupField/RadioGroupField.tsx @@ -16,7 +16,7 @@ const RadioGroupField = ({ required = false, error = false, helperText, - margin + margin, }) => { const { classes, cx } = useStyles(); diff --git a/ngui/ui/src/components/RangePicker/RangePicker.tsx b/ngui/ui/src/components/RangePicker/RangePicker.tsx index 44543c549..e110edac7 100644 --- a/ngui/ui/src/components/RangePicker/RangePicker.tsx +++ b/ngui/ui/src/components/RangePicker/RangePicker.tsx @@ -11,7 +11,7 @@ import { fitRangeIntoInterval, formatRangeToShortNotation, millisecondsToSeconds, - secondsToMilliseconds + secondsToMilliseconds, } from "utils/datetime"; import { objectMap } from "utils/objects"; @@ -25,7 +25,7 @@ const RangePicker = ({ fullWidth = false, isUtc = true, minTimestamp = getMinPickerDateSec(isUtc), - maxTimestamp = getMaxPickerDateSec(isUtc) + maxTimestamp = getMaxPickerDateSec(isUtc), }) => { const intl = useIntl(); @@ -93,7 +93,7 @@ const RangePicker = ({ size="small" edge="end" style={{ marginRight: "-11px" }} - dataTestId={"btn_select_date"} + dataTestId="btn_select_date" /> } helperText={validation.helperText} @@ -111,8 +111,8 @@ const RangePicker = ({ variant: "contained", onClick: onApplyWrapper, closable: true, - dataTestId: "btn_apply_date" - } + dataTestId: "btn_apply_date", + }, ]} handleClose={onClose} rightLabelPosition diff --git a/ngui/ui/src/components/RangePickerForm/RangePickerForm.tsx b/ngui/ui/src/components/RangePickerForm/RangePickerForm.tsx index 482868dc7..aa84ad5a3 100644 --- a/ngui/ui/src/components/RangePickerForm/RangePickerForm.tsx +++ b/ngui/ui/src/components/RangePickerForm/RangePickerForm.tsx @@ -15,7 +15,7 @@ const RangePickerForm = ({ minDate, maxDate, notSetMessageId, - fullWidth + fullWidth, }) => { const intl = useIntl(); @@ -26,12 +26,12 @@ const RangePickerForm = ({ watch, getValues, clearErrors, - formState: { errors } + formState: { errors }, } = useForm({ defaultValues: { [START_DATE]: initialStartDateValue, - [END_DATE]: initialEndDateValue - } + [END_DATE]: initialEndDateValue, + }, }); const onSubmit = ({ [START_DATE]: startDate, [END_DATE]: endDate }) => { @@ -43,16 +43,16 @@ const RangePickerForm = ({ const { startDateValidationRules, endDateValidationRules } = useRangePickerValidationRules({ startDatePickerName: START_DATE, endDatePickerName: END_DATE, - formValuesGetter: getValues + formValuesGetter: getValues, }); useEffect(() => { register(START_DATE, { - validate: startDateValidationRules + validate: startDateValidationRules, }); register(END_DATE, { - validate: endDateValidationRules + validate: endDateValidationRules, }); }, [register, intl, startDateValidationRules, endDateValidationRules]); @@ -62,14 +62,15 @@ const RangePickerForm = ({
      { setValue(START_DATE, dateRange.startDate); diff --git a/ngui/ui/src/components/RawExpensesTable/RawExpensesTable.test.tsx b/ngui/ui/src/components/RawExpensesTable/RawExpensesTable.test.tsx index f14316e04..64d49005b 100644 --- a/ngui/ui/src/components/RawExpensesTable/RawExpensesTable.test.tsx +++ b/ngui/ui/src/components/RawExpensesTable/RawExpensesTable.test.tsx @@ -10,8 +10,8 @@ it("renders without crashing", () => { diff --git a/ngui/ui/src/components/RawExpensesTable/RawExpensesTable.tsx b/ngui/ui/src/components/RawExpensesTable/RawExpensesTable.tsx index 91c546277..e9f136ed8 100644 --- a/ngui/ui/src/components/RawExpensesTable/RawExpensesTable.tsx +++ b/ngui/ui/src/components/RawExpensesTable/RawExpensesTable.tsx @@ -17,9 +17,9 @@ const buildColumnsDefinition = (fields) => columnSelector: { accessor: field, title: field, - dataTestId: `btn_toggle_column_${field}` + dataTestId: `btn_toggle_column_${field}`, }, - cell: ({ cell }) => cell.getValue() + cell: ({ cell }) => cell.getValue(), })); const RawExpensesTable = ({ expenses, isLoading }) => { @@ -48,17 +48,17 @@ const RawExpensesTable = ({ expenses, isLoading }) => { totalKey: "lbl_total", totalValue: "lbl_total_value", displayedKey: "lbl_displayed", - displayedValue: "lbl_displayed_value" + displayedValue: "lbl_displayed_value", }, columnsSelector: { button: "btn_columns_selector", - clear: "btn_select_clear_all" - } + clear: "btn_select_clear_all", + }, }} data={data} columns={columns} localization={{ - emptyMessageId: "noExpenses" + emptyMessageId: "noExpenses", }} columnOrder={STATIC_RAW_EXPENSES_COLUMNS} pageSize={50} diff --git a/ngui/ui/src/components/RecentModelsCard/RecentModelsCard.tsx b/ngui/ui/src/components/RecentModelsCard/RecentModelsCard.tsx index 7b2d9cb81..7b9ec7542 100644 --- a/ngui/ui/src/components/RecentModelsCard/RecentModelsCard.tsx +++ b/ngui/ui/src/components/RecentModelsCard/RecentModelsCard.tsx @@ -34,16 +34,16 @@ const RecentModelsTable = ({ models }: RecentModelsTableProps) => { getId: (rowOriginal) => rowOriginal.id, headerMessageId: "name", headerDataTestId: "lbl_model", - enableSorting: false + enableSorting: false, }), mlModelVersion({ headerMessageId: "version", headerDataTestId: "lbl_latest_versions", id: "latestVersion", accessorFn: (originalRow) => originalRow.last_version?.version, - enableSorting: false + enableSorting: false, }), - mlModelUsedAliases() + mlModelUsedAliases(), ], [] ); @@ -55,7 +55,7 @@ const RecentModelsTable = ({ models }: RecentModelsTableProps) => { pageSize={5} enablePaginationQueryParam={false} localization={{ - emptyMessageId: "noTasks" + emptyMessageId: "noTasks", }} /> ); @@ -79,7 +79,7 @@ const RecentModelsCard = ({ models, isLoading = false }: RecentModelsCardProps) icon={} tooltip={{ show: true, - messageId: "goToModels" + messageId: "goToModels", }} onClick={goToTasks} isLoading={isLoading} @@ -91,7 +91,7 @@ const RecentModelsCard = ({ models, isLoading = false }: RecentModelsCardProps) dataTestIds={{ wrapper: "block_recent_models", title: "lbl_recent_models", - titleCaption: "p_recent_models" + titleCaption: "p_recent_models", }} elevation={0} > diff --git a/ngui/ui/src/components/RecentTasksCard/RecentTasksCard.tsx b/ngui/ui/src/components/RecentTasksCard/RecentTasksCard.tsx index 1b41f2e6d..9165aad76 100644 --- a/ngui/ui/src/components/RecentTasksCard/RecentTasksCard.tsx +++ b/ngui/ui/src/components/RecentTasksCard/RecentTasksCard.tsx @@ -17,14 +17,14 @@ const RecentTasksTable = ({ tasks }) => { () => [ mlTaskName({ enableSorting: false, - enableHiding: false + enableHiding: false, }), mlTaskLastRun({ columnSelector: { accessor: "lastRun", messageId: "lastRun", - dataTestId: "btn_toggle_column_last_run" - } + dataTestId: "btn_toggle_column_last_run", + }, }), metrics({ accessorKey: "last_run_reached_goals", @@ -32,9 +32,9 @@ const RecentTasksTable = ({ tasks }) => { columnSelector: { accessor: "metrics", messageId: "metrics", - dataTestId: "btn_toggle_column_metrics" - } - }) + dataTestId: "btn_toggle_column_metrics", + }, + }), ], [] ); @@ -46,7 +46,7 @@ const RecentTasksTable = ({ tasks }) => { pageSize={5} enablePaginationQueryParam={false} localization={{ - emptyMessageId: "noTasks" + emptyMessageId: "noTasks", }} /> ); @@ -70,7 +70,7 @@ const RecentTasksCard = ({ tasks, isLoading = false }) => { icon={} tooltip={{ show: true, - messageId: "goToTasks" + messageId: "goToTasks", }} onClick={goToTasks} isLoading={isLoading} @@ -82,7 +82,7 @@ const RecentTasksCard = ({ tasks, isLoading = false }) => { dataTestIds={{ wrapper: "block_recent_tasks", title: "lbl_recent_tasks", - titleCaption: "p_recent_tasks" + titleCaption: "p_recent_tasks", }} elevation={0} > diff --git a/ngui/ui/src/components/RecommendationDetails/Details/Details.tsx b/ngui/ui/src/components/RecommendationDetails/Details/Details.tsx index 09743b7bd..e3c3054b5 100644 --- a/ngui/ui/src/components/RecommendationDetails/Details/Details.tsx +++ b/ngui/ui/src/components/RecommendationDetails/Details/Details.tsx @@ -35,7 +35,7 @@ const useActionBarItems = ({ downloadLimit, recommendation, dataSourceIds, withD limit: downloadLimit, type, status, - dataSourceIds + dataSourceIds, }); const { download: downloadCleanupScript, isLoading: isDownloadCleanupScriptLoading } = useDownloadCleanupScript({ type }); @@ -55,16 +55,16 @@ const useActionBarItems = ({ downloadLimit, recommendation, dataSourceIds, withD { key: "xlsx", messageId: "xlsxFile", - action: () => downloadItems(DOWNLOAD_FILE_FORMATS.XLSX) + action: () => downloadItems(DOWNLOAD_FILE_FORMATS.XLSX), }, { key: "json", messageId: "jsonFile", - action: () => downloadItems(DOWNLOAD_FILE_FORMATS.JSON) - } - ] - } - } + action: () => downloadItems(DOWNLOAD_FILE_FORMATS.JSON), + }, + ], + }, + }, ]; if (isActive && withCleanupScripts) { @@ -88,10 +88,10 @@ const useActionBarItems = ({ downloadLimit, recommendation, dataSourceIds, withD {chunks} - ) + ), }} /> - ) + ), }, disabled: !hasItems, isLoading: isDownloadCleanupScriptLoading, @@ -100,10 +100,10 @@ const useActionBarItems = ({ downloadLimit, recommendation, dataSourceIds, withD ({ cloud_account_name: dataSourceName, cloud_type: dataSourceType, cloud_account_id: dataSourceId }) => ({ key: dataSourceId, text: , - action: () => downloadCleanupScript(dataSourceId) + action: () => downloadCleanupScript(dataSourceId), }) - ) - } + ), + }, }); } @@ -113,7 +113,7 @@ const useActionBarItems = ({ downloadLimit, recommendation, dataSourceIds, withD icon: , messageId: "excludePools", action: () => openSideModal(ExcludePoolsFromRecommendationModal, { recommendationName: name, recommendationType: type }), - type: "button" + type: "button", }); } @@ -123,7 +123,7 @@ const useActionBarItems = ({ downloadLimit, recommendation, dataSourceIds, withD icon: , messageId: "settings", action: () => openSideModal(settingsSidemodalClass, { recommendationType: type }), - type: "button" + type: "button", }); } @@ -134,7 +134,7 @@ const ActionCell = ({ setting, resourceId, index, isGetResourceAllowedActionsLoa const isAllowedAction = useIsAllowed({ entityType: SCOPE_TYPES.RESOURCE, entityId: resourceId, - requiredActions: ["MANAGE_RESOURCES", "MANAGE_OWN_RESOURCES"] + requiredActions: ["MANAGE_RESOURCES", "MANAGE_OWN_RESOURCES"], }); return ( @@ -146,7 +146,7 @@ const ActionCell = ({ setting, resourceId, index, isGetResourceAllowedActionsLoa dataTestId={`btn_${setting.dataTestIdPrefix}_${index}`} tooltip={{ show: true, - value: + value: , }} /> ); @@ -169,7 +169,7 @@ const Details = ({ type, limit, status, data, dataSourceIds = [], withDownload } downloadLimit: limit, recommendation, dataSourceIds, - withDownload + withDownload, }); if (isEmptyObject(data)) { @@ -183,12 +183,12 @@ const Details = ({ type, limit, status, data, dataSourceIds = [], withDownload } ? { icon: , tooltipMessageId: "dismissRecommendation", - dataTestIdPrefix: "dismiss" + dataTestIdPrefix: "dismiss", } : { icon: , tooltipMessageId: "activateRecommendation", - dataTestIdPrefix: "activate" + dataTestIdPrefix: "activate", }; columns = [ @@ -204,8 +204,8 @@ const Details = ({ type, limit, status, data, dataSourceIds = [], withDownload } cell: ({ row: { original: { resource_id: resourceId }, - index - } + index, + }, }) => ( patchResource(id)} /> - ) - } + ), + }, ]; } @@ -226,7 +226,7 @@ const Details = ({ type, limit, status, data, dataSourceIds = [], withDownload } position="top" alertProps={{ messageId: recommendation.descriptionMessageId, - messageValues: { strong: (chunks) => {chunks}, ...recommendation.descriptionMessageValues } + messageValues: { strong: (chunks) => {chunks}, ...recommendation.descriptionMessageValues }, }} /> )} @@ -234,8 +234,8 @@ const Details = ({ type, limit, status, data, dataSourceIds = [], withDownload } actionBar={{ show: true, definition: { - items: actionBarItems - } + items: actionBarItems, + }, }} columns={columns} pageSize={50} diff --git a/ngui/ui/src/components/RecommendationDetails/RecommendationDetails.tsx b/ngui/ui/src/components/RecommendationDetails/RecommendationDetails.tsx index 5b310cf5d..fa8fa8c7a 100644 --- a/ngui/ui/src/components/RecommendationDetails/RecommendationDetails.tsx +++ b/ngui/ui/src/components/RecommendationDetails/RecommendationDetails.tsx @@ -12,7 +12,7 @@ import type { RecommendationsProps, RecommendationsContainerProps, MlRecommendationsContainerProps, - RecommendationDetailsProps + RecommendationDetailsProps, } from "./types"; const QUERY_TAB_NAME = "recommendationDetailsTab"; @@ -61,7 +61,7 @@ const RecommendationDetails = ({ limit, mlTaskId, dismissible = false, - withExclusions = false + withExclusions = false, }: RecommendationDetailsProps) => { useEffect( () => () => { @@ -78,7 +78,7 @@ const RecommendationDetails = ({ ) : ( - ) + ), })); return ( @@ -94,7 +94,7 @@ const RecommendationDetails = ({ queryTabName: QUERY_TAB_NAME, tabs, defaultTab: STATUS.ACTIVE, - name: "recommendations-data" + name: "recommendations-data", }} /> diff --git a/ngui/ui/src/components/RecommendationDetails/RecommendationDetailsService.ts b/ngui/ui/src/components/RecommendationDetails/RecommendationDetailsService.ts index 4861dce61..f1fe02452 100644 --- a/ngui/ui/src/components/RecommendationDetails/RecommendationDetailsService.ts +++ b/ngui/ui/src/components/RecommendationDetails/RecommendationDetailsService.ts @@ -21,7 +21,7 @@ const useGetOptimizations = ({ type, limit, status, cloudAccountIds }) => { cloudAccountIds, type, status, - limit + limit, }); const allRecommendations = useAllRecommendations(); @@ -55,7 +55,7 @@ const usePatchResource = (recommendationType, status) => { dispatch( updateResourceVisibility(resourceId, { recommendation: recommendationType, - action: status === STATUS.ACTIVE ? RESOURCE_VISIBILITY_ACTIONS.DISMISS : RESOURCE_VISIBILITY_ACTIONS.ACTIVATE + action: status === STATUS.ACTIVE ? RESOURCE_VISIBILITY_ACTIONS.DISMISS : RESOURCE_VISIBILITY_ACTIONS.ACTIVATE, }) ); }; @@ -63,7 +63,7 @@ const usePatchResource = (recommendationType, status) => { function RecommendationDetailsService() { return { useGetOptimizations, - usePatchResource + usePatchResource, }; } diff --git a/ngui/ui/src/components/RecommendationsCard/RecommendationsCard.tsx b/ngui/ui/src/components/RecommendationsCard/RecommendationsCard.tsx index d7db25ea0..25f756acb 100644 --- a/ngui/ui/src/components/RecommendationsCard/RecommendationsCard.tsx +++ b/ngui/ui/src/components/RecommendationsCard/RecommendationsCard.tsx @@ -11,7 +11,7 @@ import { CATEGORY } from "containers/RecommendationsOverviewContainer/recommenda import { ALL_SERVICES } from "hooks/useRecommendationServices"; import { RECOMMENDATIONS, RECOMMENDATION_CATEGORY_QUERY_PARAMETER, RECOMMENDATION_SERVICE_QUERY_PARAMETER } from "urls"; import { SPACING_2 } from "utils/layouts"; -import { InfoCard, PossibleSavingsCard } from "./Components"; +import { InfoCard, PossibleSavingsCard } from "./components"; const RecommendationsCard = ({ isLoading, @@ -19,7 +19,7 @@ const RecommendationsCard = ({ costRecommendationsCount, securityRecommendationsCount, criticalRecommendationsCount, - thisMonthExpensesForecast + thisMonthExpensesForecast, }) => { const navigate = useNavigate(); @@ -28,8 +28,8 @@ const RecommendationsCard = ({ pathname: RECOMMENDATIONS, search: `?${createSearchParams({ [RECOMMENDATION_CATEGORY_QUERY_PARAMETER]: CATEGORY.ALL, - [RECOMMENDATION_SERVICE_QUERY_PARAMETER]: CATEGORY.ALL - })}` + [RECOMMENDATION_SERVICE_QUERY_PARAMETER]: CATEGORY.ALL, + })}`, }); return ( @@ -39,18 +39,18 @@ const RecommendationsCard = ({ titleButton={{ type: "icon", tooltip: { - title: + title: , }, buttonProps: { icon: , isLoading, onClick: seeAllRecommendations, - dataTestId: "btn_see_all_recommendations" - } + dataTestId: "btn_see_all_recommendations", + }, }} dataTestIds={{ wrapper: "block_recommendations", - title: "lbl_recommendations" + title: "lbl_recommendations", }} elevation={0} > @@ -74,7 +74,7 @@ const RecommendationsCard = ({ value={} isLoading={isLoading} dataTestIds={{ - value: "block_recommendations_cost_value" + value: "block_recommendations_cost_value", }} /> @@ -94,7 +94,7 @@ const RecommendationsCard = ({ value={} isLoading={isLoading} dataTestIds={{ - value: "block_recommendations_security_value" + value: "block_recommendations_security_value", }} /> @@ -114,7 +114,7 @@ const RecommendationsCard = ({ value={} isLoading={isLoading} dataTestIds={{ - value: "block_recommendations_critical_value" + value: "block_recommendations_critical_value", }} /> diff --git a/ngui/ui/src/components/RecommendationsCard/Components/InfoCard/InfoCard.styles.ts b/ngui/ui/src/components/RecommendationsCard/components/InfoCard/InfoCard.styles.ts similarity index 87% rename from ngui/ui/src/components/RecommendationsCard/Components/InfoCard/InfoCard.styles.ts rename to ngui/ui/src/components/RecommendationsCard/components/InfoCard/InfoCard.styles.ts index 804c73c80..098924e2f 100644 --- a/ngui/ui/src/components/RecommendationsCard/Components/InfoCard/InfoCard.styles.ts +++ b/ngui/ui/src/components/RecommendationsCard/components/InfoCard/InfoCard.styles.ts @@ -7,8 +7,8 @@ const useStyles = makeStyles()((theme) => ({ flexDirection: "column", alignItems: "center", justifyContent: "center", - padding: theme.spacing(2) - } + padding: theme.spacing(2), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/RecommendationsCard/Components/InfoCard/InfoCard.tsx b/ngui/ui/src/components/RecommendationsCard/components/InfoCard/InfoCard.tsx similarity index 95% rename from ngui/ui/src/components/RecommendationsCard/Components/InfoCard/InfoCard.tsx rename to ngui/ui/src/components/RecommendationsCard/components/InfoCard/InfoCard.tsx index 1a681b52b..aaffa557e 100644 --- a/ngui/ui/src/components/RecommendationsCard/Components/InfoCard/InfoCard.tsx +++ b/ngui/ui/src/components/RecommendationsCard/components/InfoCard/InfoCard.tsx @@ -15,7 +15,7 @@ const InfoCard = ({ title, value, isLoading, dataTestIds = {}, icon, color }) => elevation={0} className={classes.infoCard} sx={{ - backgroundColor: color ? (theme) => lighten(theme.palette[color].main, 0.95) : undefined + backgroundColor: color ? (theme) => lighten(theme.palette[color].main, 0.95) : undefined, }} > align="center" data-test-id={titleDataTestId} sx={{ - ml: 1 + ml: 1, }} > {title} diff --git a/ngui/ui/src/components/RecommendationsCard/Components/InfoCard/index.ts b/ngui/ui/src/components/RecommendationsCard/components/InfoCard/index.ts similarity index 100% rename from ngui/ui/src/components/RecommendationsCard/Components/InfoCard/index.ts rename to ngui/ui/src/components/RecommendationsCard/components/InfoCard/index.ts diff --git a/ngui/ui/src/components/RecommendationsCard/Components/PossibleSavingsCard/PossibleSavingsCard.styles.ts b/ngui/ui/src/components/RecommendationsCard/components/PossibleSavingsCard/PossibleSavingsCard.styles.ts similarity index 80% rename from ngui/ui/src/components/RecommendationsCard/Components/PossibleSavingsCard/PossibleSavingsCard.styles.ts rename to ngui/ui/src/components/RecommendationsCard/components/PossibleSavingsCard/PossibleSavingsCard.styles.ts index 5a0f47a2a..e9027d767 100644 --- a/ngui/ui/src/components/RecommendationsCard/Components/PossibleSavingsCard/PossibleSavingsCard.styles.ts +++ b/ngui/ui/src/components/RecommendationsCard/components/PossibleSavingsCard/PossibleSavingsCard.styles.ts @@ -3,19 +3,19 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme, options) => ({ progressBarPaper: { - position: "relative" + position: "relative", }, progressBar: { position: "absolute", height: "100%", backgroundColor: lighten(theme.palette[options.progressBar.color].main, 0.9), - width: options.progressBar.width + width: options.progressBar.width, }, possibleSavingsTitle: { display: "flex", alignItems: "center", - justifyContent: "center" - } + justifyContent: "center", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/RecommendationsCard/Components/PossibleSavingsCard/PossibleSavingsCard.tsx b/ngui/ui/src/components/RecommendationsCard/components/PossibleSavingsCard/PossibleSavingsCard.tsx similarity index 98% rename from ngui/ui/src/components/RecommendationsCard/Components/PossibleSavingsCard/PossibleSavingsCard.tsx rename to ngui/ui/src/components/RecommendationsCard/components/PossibleSavingsCard/PossibleSavingsCard.tsx index 3d46e940b..0902428b5 100644 --- a/ngui/ui/src/components/RecommendationsCard/Components/PossibleSavingsCard/PossibleSavingsCard.tsx +++ b/ngui/ui/src/components/RecommendationsCard/components/PossibleSavingsCard/PossibleSavingsCard.tsx @@ -23,8 +23,8 @@ const PossibleSavingsCard = ({ possibleMonthlySavings = 0, thisMonthExpensesFore const { classes } = useStyles({ progressBar: { color: getProgressBarColor(), - width: `${percent}%` - } + width: `${percent}%`, + }, }); const body = ( diff --git a/ngui/ui/src/components/RecommendationsCard/Components/PossibleSavingsCard/index.ts b/ngui/ui/src/components/RecommendationsCard/components/PossibleSavingsCard/index.ts similarity index 100% rename from ngui/ui/src/components/RecommendationsCard/Components/PossibleSavingsCard/index.ts rename to ngui/ui/src/components/RecommendationsCard/components/PossibleSavingsCard/index.ts diff --git a/ngui/ui/src/components/RecommendationsCard/Components/index.ts b/ngui/ui/src/components/RecommendationsCard/components/index.ts similarity index 100% rename from ngui/ui/src/components/RecommendationsCard/Components/index.ts rename to ngui/ui/src/components/RecommendationsCard/components/index.ts diff --git a/ngui/ui/src/components/Redirector/Redirector.test.tsx b/ngui/ui/src/components/Redirector/Redirector.test.tsx index ca959f418..faa445b88 100644 --- a/ngui/ui/src/components/Redirector/Redirector.test.tsx +++ b/ngui/ui/src/components/Redirector/Redirector.test.tsx @@ -7,7 +7,7 @@ it("renders without crashing", () => { const root = createRoot(div); root.render( - 0} to={"/"}> + 0} to="/">
      test
      diff --git a/ngui/ui/src/components/RegionExpenses/RegionExpenses.test.tsx b/ngui/ui/src/components/RegionExpenses/RegionExpenses.test.tsx index 88a29fb30..95ff3dfdc 100644 --- a/ngui/ui/src/components/RegionExpenses/RegionExpenses.test.tsx +++ b/ngui/ui/src/components/RegionExpenses/RegionExpenses.test.tsx @@ -12,7 +12,7 @@ it("renders without crashing", () => { root.render( getResourcesExpensesUrl({ computedParams: `${REGION_FILTER}=${name}`, sStartDate: startDate, - sEndDate: endDate + sEndDate: endDate, }); const getFilteredMarkers = (markers, total, getColor) => @@ -50,18 +50,18 @@ const getColumns = (navigate, startDate, endDate) => [ const value = cell.getValue(); return original.type ? : (value ?? ); - } + }, }, { header: , accessorKey: "total", cell: ({ cell }) => , - defaultSort: "desc" + defaultSort: "desc", }, { header: intl.formatMessage({ id: "percent" }), accessorKey: "percent", - cell: ({ cell }) => + cell: ({ cell }) => , }, { header: intl.formatMessage({ id: "actions" }), @@ -72,12 +72,12 @@ const getColumns = (navigate, startDate, endDate) => [ icon={} tooltip={{ show: true, - value: + value: , }} /> ), - enableSorting: true - } + enableSorting: true, + }, ]; const RegionExpenses = ({ expenses, isLoading = false }) => { @@ -102,21 +102,21 @@ const RegionExpenses = ({ expenses, isLoading = false }) => { key: "totalExpensesForSelectedPeriod", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: total + value: total, }, color: getPoolColorStatus(percent), captionMessageId: "totalExpensesForSelectedPeriod", - isLoading + isLoading, }, { key: "totalExpensesForPreviousPeriod", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: previousTotal + value: previousTotal, }, captionMessageId: "totalExpensesForPreviousPeriod", - isLoading - } + isLoading, + }, ]; const notSetSum = markers.find((marker) => marker.id === EMPTY_UUID)?.total || 0; @@ -125,10 +125,10 @@ const RegionExpenses = ({ expenses, isLoading = false }) => { key: "expensesWithoutRegion", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: notSetSum + value: notSetSum, }, captionMessageId: "expensesWithoutRegion", - isLoading + isLoading, }); } @@ -158,7 +158,7 @@ const RegionExpenses = ({ expenses, isLoading = false }) => { {isLoading ? ( @@ -168,7 +168,7 @@ const RegionExpenses = ({ expenses, isLoading = false }) => { data={data} columns={columns} localization={{ - emptyMessageId: "noRegionExpenses" + emptyMessageId: "noRegionExpenses", }} pageSize={50} /> diff --git a/ngui/ui/src/components/RegionExpenses/RegionExpensesMocked.tsx b/ngui/ui/src/components/RegionExpenses/RegionExpensesMocked.tsx index 24ae65d5a..6a7a88d07 100644 --- a/ngui/ui/src/components/RegionExpenses/RegionExpensesMocked.tsx +++ b/ngui/ui/src/components/RegionExpenses/RegionExpensesMocked.tsx @@ -12,7 +12,7 @@ const RegionExpensesMocked = () => ( previous_total: 0, longitude: 113.987274, latitude: 22.3526629, - type: "alibaba_cnr" + type: "alibaba_cnr", }, { name: "Singapore", @@ -21,7 +21,7 @@ const RegionExpensesMocked = () => ( previous_total: 0, longitude: 103.7038234, latitude: 1.3139961, - type: "alibaba_cnr" + type: "alibaba_cnr", }, { name: "Indonesia (Jakarta)", @@ -30,7 +30,7 @@ const RegionExpensesMocked = () => ( previous_total: 0, longitude: 106.7593066, latitude: -6.2297419, - type: "alibaba_cnr" + type: "alibaba_cnr", }, { name: "UAE (Dubai)", @@ -39,7 +39,7 @@ const RegionExpensesMocked = () => ( previous_total: 0, longitude: 55.087321, latitude: 25.0759564, - type: "alibaba_cnr" + type: "alibaba_cnr", }, { name: "Germany (Frankfurt)", @@ -48,7 +48,7 @@ const RegionExpensesMocked = () => ( previous_total: 0, longitude: 8.5663531, latitude: 50.1211908, - type: "alibaba_cnr" + type: "alibaba_cnr", }, { type: "azure_cnr", @@ -57,7 +57,7 @@ const RegionExpensesMocked = () => ( id: "koreasouth", longitude: 129.0756, total: 0, - name: "Korea South" + name: "Korea South", }, { type: "azure_cnr", @@ -66,7 +66,7 @@ const RegionExpensesMocked = () => ( id: "germanywestcentral", longitude: 8.682127, total: 14.749990683655554, - name: "Germany West Central" + name: "Germany West Central", }, { type: "azure_cnr", @@ -75,7 +75,7 @@ const RegionExpensesMocked = () => ( id: "westus2", longitude: -119.852, total: 0, - name: "West US 2" + name: "West US 2", }, { type: "azure_cnr", @@ -84,7 +84,7 @@ const RegionExpensesMocked = () => ( id: "westcentralus", longitude: -110.234, total: 0.000374184, - name: "West Central US" + name: "West Central US", }, { type: "azure_cnr", @@ -93,7 +93,7 @@ const RegionExpensesMocked = () => ( id: "australiacentral", longitude: 149.1244, total: 0, - name: "Australia Central" + name: "Australia Central", }, { type: "azure_cnr", @@ -102,7 +102,7 @@ const RegionExpensesMocked = () => ( id: "japaneast", longitude: 139.77, total: 0, - name: "Japan East" + name: "Japan East", }, { type: "aws_cnr", @@ -111,7 +111,7 @@ const RegionExpensesMocked = () => ( id: "cn-north-1", longitude: 116.3857, total: 0, - name: "cn-north-1" + name: "cn-north-1", }, { type: "aws_cnr", @@ -120,7 +120,7 @@ const RegionExpensesMocked = () => ( id: "ap-southeast-2", longitude: 151.2, total: 195.77215367999995, - name: "ap-southeast-2" + name: "ap-southeast-2", }, { type: "azure_cnr", @@ -129,7 +129,7 @@ const RegionExpensesMocked = () => ( id: "westeurope", longitude: 4.9, total: 0, - name: "West Europe" + name: "West Europe", }, { type: "azure_cnr", @@ -138,7 +138,7 @@ const RegionExpensesMocked = () => ( id: "canadaeast", longitude: -71.217, total: 0, - name: "Canada East" + name: "Canada East", }, { type: "azure_cnr", @@ -147,7 +147,7 @@ const RegionExpensesMocked = () => ( id: "francecentral", longitude: 2.373, total: 0, - name: "France Central" + name: "France Central", }, { type: "azure_cnr", @@ -156,7 +156,7 @@ const RegionExpensesMocked = () => ( id: "northeurope", longitude: -6.2597, total: 0, - name: "North Europe" + name: "North Europe", }, { type: "azure_cnr", @@ -165,7 +165,7 @@ const RegionExpensesMocked = () => ( id: "eastasia", longitude: 114.188, total: 0, - name: "East Asia" + name: "East Asia", }, { type: "aws_cnr", @@ -174,7 +174,7 @@ const RegionExpensesMocked = () => ( id: "ap-northeast-2", longitude: 126.99272, total: 1280.9649869892003, - name: "ap-northeast-2" + name: "ap-northeast-2", }, { type: "aws_cnr", @@ -183,7 +183,7 @@ const RegionExpensesMocked = () => ( id: "us-gov-west-1", longitude: -97.09434, total: 0, - name: "us-gov-west-1" + name: "us-gov-west-1", }, { type: "aws_cnr", @@ -192,7 +192,7 @@ const RegionExpensesMocked = () => ( id: "us-east-2", longitude: -83, total: 1504.055617722001, - name: "us-east-2" + name: "us-east-2", }, { type: "azure_cnr", @@ -201,7 +201,7 @@ const RegionExpensesMocked = () => ( id: "norwayeast", longitude: 10.752245, total: 0, - name: "Norway East" + name: "Norway East", }, { type: "aws_cnr", @@ -210,7 +210,7 @@ const RegionExpensesMocked = () => ( id: "ap-southeast-1", longitude: 103.851959, total: 629.0815152312, - name: "ap-southeast-1" + name: "ap-southeast-1", }, { type: "azure_cnr", @@ -219,7 +219,7 @@ const RegionExpensesMocked = () => ( id: "chinanorth2", longitude: 116.383, total: 0, - name: "China North 2" + name: "China North 2", }, { type: "azure_cnr", @@ -228,7 +228,7 @@ const RegionExpensesMocked = () => ( id: "uaenorth", longitude: 55.316666, total: 0, - name: "UAE North" + name: "UAE North", }, { type: "azure_cnr", @@ -237,7 +237,7 @@ const RegionExpensesMocked = () => ( id: "southeastasia", longitude: 103.833, total: 0, - name: "Southeast Asia" + name: "Southeast Asia", }, { type: "aws_cnr", @@ -246,7 +246,7 @@ const RegionExpensesMocked = () => ( id: "ap-east-1", longitude: 114.13624, total: 0, - name: "ap-east-1" + name: "ap-east-1", }, { type: "azure_cnr", @@ -255,7 +255,7 @@ const RegionExpensesMocked = () => ( id: "usgovvirginia", longitude: -78.39411, total: 0, - name: "US Gov Virginia" + name: "US Gov Virginia", }, { type: "aws_cnr", @@ -264,7 +264,7 @@ const RegionExpensesMocked = () => ( id: "eu-central-1", longitude: 8.65399, total: 58858.9825857804, - name: "eu-central-1" + name: "eu-central-1", }, { type: "aws_cnr", @@ -273,7 +273,7 @@ const RegionExpensesMocked = () => ( id: "eu-west-3", longitude: 2.34293, total: 0, - name: "eu-west-3" + name: "eu-west-3", }, { type: "azure_cnr", @@ -282,7 +282,7 @@ const RegionExpensesMocked = () => ( id: "francesouth", longitude: 2.1972, total: 0, - name: "France South" + name: "France South", }, { type: "azure_cnr", @@ -291,7 +291,7 @@ const RegionExpensesMocked = () => ( id: "australiacentral2", longitude: 149.1244, total: 0, - name: "Australia Central 2" + name: "Australia Central 2", }, { type: "azure_cnr", @@ -300,7 +300,7 @@ const RegionExpensesMocked = () => ( id: "koreacentral", longitude: 126.978, total: 0, - name: "Korea Central" + name: "Korea Central", }, { type: "azure_cnr", @@ -309,7 +309,7 @@ const RegionExpensesMocked = () => ( id: "usgovarizona", longitude: -111.7046, total: 0, - name: "US Gov Arizona" + name: "US Gov Arizona", }, { type: "aws_cnr", @@ -318,7 +318,7 @@ const RegionExpensesMocked = () => ( id: "ca-central-1", longitude: -73.6, total: 0, - name: "ca-central-1" + name: "ca-central-1", }, { type: "aws_cnr", @@ -327,7 +327,7 @@ const RegionExpensesMocked = () => ( id: "eu-west-1", longitude: -6.266155, total: 1929.5802080757005, - name: "eu-west-1" + name: "eu-west-1", }, { type: "aws_cnr", @@ -336,7 +336,7 @@ const RegionExpensesMocked = () => ( id: "me-south-1", longitude: 50.6377716, total: 0, - name: "me-south-1" + name: "me-south-1", }, { type: "azure_cnr", @@ -345,7 +345,7 @@ const RegionExpensesMocked = () => ( id: "uaecentral", longitude: 54.366669, total: 0, - name: "UAE Central" + name: "UAE Central", }, { type: "aws_cnr", @@ -354,7 +354,7 @@ const RegionExpensesMocked = () => ( id: "eu-west-2", longitude: -0.11362, total: 599.7906845478003, - name: "eu-west-2" + name: "eu-west-2", }, { type: "azure_cnr", @@ -363,7 +363,7 @@ const RegionExpensesMocked = () => ( id: "chinaeast", longitude: 121.474, total: 0, - name: "China East" + name: "China East", }, { type: "azure_cnr", @@ -372,7 +372,7 @@ const RegionExpensesMocked = () => ( id: "eastus2", longitude: -78.3889, total: 0, - name: "East US 2" + name: "East US 2", }, { type: "aws_cnr", @@ -381,7 +381,7 @@ const RegionExpensesMocked = () => ( id: "ap-northeast-1", longitude: 139.42, total: 0, - name: "ap-northeast-1" + name: "ap-northeast-1", }, { type: "azure_cnr", @@ -390,7 +390,7 @@ const RegionExpensesMocked = () => ( id: "brazilsouth", longitude: -46.633, total: 0, - name: "Brazil South" + name: "Brazil South", }, { type: "aws_cnr", @@ -399,7 +399,7 @@ const RegionExpensesMocked = () => ( id: "ap-south-1", longitude: 72.8673, total: 0, - name: "ap-south-1" + name: "ap-south-1", }, { type: "azure_cnr", @@ -408,7 +408,7 @@ const RegionExpensesMocked = () => ( id: "chinaeast2", longitude: 121.474, total: 0, - name: "China East 2" + name: "China East 2", }, { type: "azure_cnr", @@ -417,7 +417,7 @@ const RegionExpensesMocked = () => ( id: "eastus", longitude: -79.8164, total: 0, - name: "East US" + name: "East US", }, { type: "aws_cnr", @@ -426,7 +426,7 @@ const RegionExpensesMocked = () => ( id: "cn-northwest-1", longitude: 103.73, total: 0, - name: "cn-northwest-1" + name: "cn-northwest-1", }, { type: "azure_cnr", @@ -435,7 +435,7 @@ const RegionExpensesMocked = () => ( id: "ukwest", longitude: -3.084, total: 0, - name: "UK West" + name: "UK West", }, { type: "azure_cnr", @@ -444,7 +444,7 @@ const RegionExpensesMocked = () => ( id: "brazilsoutheast", longitude: -43.2075, total: 0, - name: "Brazil Southeast" + name: "Brazil Southeast", }, { type: "azure_cnr", @@ -453,7 +453,7 @@ const RegionExpensesMocked = () => ( id: "westus", longitude: -122.417, total: 0, - name: "West US" + name: "West US", }, { type: "azure_cnr", @@ -462,7 +462,7 @@ const RegionExpensesMocked = () => ( id: "usgovtexas", longitude: -99.208076, total: 0, - name: "US Gov Texas" + name: "US Gov Texas", }, { type: "azure_cnr", @@ -471,7 +471,7 @@ const RegionExpensesMocked = () => ( id: "germanycentral", longitude: 8.6833, total: 0, - name: "Germany Central" + name: "Germany Central", }, { type: "azure_cnr", @@ -480,7 +480,7 @@ const RegionExpensesMocked = () => ( id: "southcentralus", longitude: -98.5, total: 0, - name: "South Central US" + name: "South Central US", }, { type: "azure_cnr", @@ -489,7 +489,7 @@ const RegionExpensesMocked = () => ( id: "australiasoutheast", longitude: 144.9631, total: 0, - name: "Australia Southeast" + name: "Australia Southeast", }, { type: "azure_cnr", @@ -498,7 +498,7 @@ const RegionExpensesMocked = () => ( id: "norwaywest", longitude: 5.733107, total: 0, - name: "Norway West" + name: "Norway West", }, { type: "azure_cnr", @@ -507,7 +507,7 @@ const RegionExpensesMocked = () => ( id: "australiaeast", longitude: 151.2094, total: 0, - name: "Australia East" + name: "Australia East", }, { type: "azure_cnr", @@ -516,7 +516,7 @@ const RegionExpensesMocked = () => ( id: "usdodcentral", longitude: -92.561731, total: 0, - name: "US DoD Central" + name: "US DoD Central", }, { type: "azure_cnr", @@ -525,7 +525,7 @@ const RegionExpensesMocked = () => ( id: "germanynortheast", longitude: 11.616, total: 0, - name: "Germany Northeast" + name: "Germany Northeast", }, { type: "azure_cnr", @@ -534,7 +534,7 @@ const RegionExpensesMocked = () => ( id: "canadacentral", longitude: -79.383, total: 0, - name: "Canada Central" + name: "Canada Central", }, { type: "aws_cnr", @@ -543,7 +543,7 @@ const RegionExpensesMocked = () => ( id: "us-west-2", longitude: -123.88, total: 125.1266180184, - name: "us-west-2" + name: "us-west-2", }, { type: "aws_cnr", @@ -552,7 +552,7 @@ const RegionExpensesMocked = () => ( id: "sa-east-1", longitude: -46.8754, total: 241.25487509700002, - name: "sa-east-1" + name: "sa-east-1", }, { type: "aws_cnr", @@ -561,7 +561,7 @@ const RegionExpensesMocked = () => ( id: "ap-northeast-3", longitude: 135.50674, total: 0, - name: "ap-northeast-3" + name: "ap-northeast-3", }, { type: "azure_cnr", @@ -570,7 +570,7 @@ const RegionExpensesMocked = () => ( id: "usdodeast", longitude: -77.84588, total: 0, - name: "US DoD East" + name: "US DoD East", }, { type: "aws_cnr", @@ -579,7 +579,7 @@ const RegionExpensesMocked = () => ( id: "af-south-1", longitude: 18.417396, total: 0, - name: "af-south-1" + name: "af-south-1", }, { type: "azure_cnr", @@ -588,7 +588,7 @@ const RegionExpensesMocked = () => ( id: "northcentralus", longitude: -87.6278, total: 0, - name: "North Central US" + name: "North Central US", }, { type: "azure_cnr", @@ -597,7 +597,7 @@ const RegionExpensesMocked = () => ( id: "southafricawest", longitude: 18.843266, total: 0, - name: "South Africa West" + name: "South Africa West", }, { type: "azure_cnr", @@ -606,7 +606,7 @@ const RegionExpensesMocked = () => ( id: "germanynorth", longitude: 8.806422, total: 0, - name: "Germany North" + name: "Germany North", }, { type: "azure_cnr", @@ -615,7 +615,7 @@ const RegionExpensesMocked = () => ( id: "switzerlandwest", longitude: 6.143158, total: 0, - name: "Switzerland West" + name: "Switzerland West", }, { type: "aws_cnr", @@ -624,7 +624,7 @@ const RegionExpensesMocked = () => ( id: "us-west-1", longitude: -121.96, total: 1879.1553467852998, - name: "us-west-1" + name: "us-west-1", }, { type: "azure_cnr", @@ -633,7 +633,7 @@ const RegionExpensesMocked = () => ( id: "uksouth", longitude: -0.799, total: 0, - name: "UK South" + name: "UK South", }, { type: "azure_cnr", @@ -642,7 +642,7 @@ const RegionExpensesMocked = () => ( id: "centralus", longitude: -93.6208, total: 0, - name: "Central US" + name: "Central US", }, { type: "azure_cnr", @@ -651,7 +651,7 @@ const RegionExpensesMocked = () => ( id: "southindia", longitude: 80.1636, total: 0, - name: "South India" + name: "South India", }, { type: "azure_cnr", @@ -660,7 +660,7 @@ const RegionExpensesMocked = () => ( id: "westindia", longitude: 72.868, total: 0, - name: "West India" + name: "West India", }, { type: "aws_cnr", @@ -669,7 +669,7 @@ const RegionExpensesMocked = () => ( id: "eu-north-1", longitude: 18.04856, total: 0, - name: "eu-north-1" + name: "eu-north-1", }, { type: "azure_cnr", @@ -678,7 +678,7 @@ const RegionExpensesMocked = () => ( id: "switzerlandnorth", longitude: 8.564572, total: 0, - name: "Switzerland North" + name: "Switzerland North", }, { type: "azure_cnr", @@ -687,7 +687,7 @@ const RegionExpensesMocked = () => ( id: "chinanorth", longitude: 116.383, total: 0, - name: "China North" + name: "China North", }, { type: "azure_cnr", @@ -696,7 +696,7 @@ const RegionExpensesMocked = () => ( id: "southafricanorth", longitude: 28.21837, total: 0, - name: "South Africa North" + name: "South Africa North", }, { type: "aws_cnr", @@ -705,7 +705,7 @@ const RegionExpensesMocked = () => ( id: "us-east-1", longitude: -78.45, total: 36136.0079320788, - name: "us-east-1" + name: "us-east-1", }, { type: "aws_cnr", @@ -714,7 +714,7 @@ const RegionExpensesMocked = () => ( id: "eu-south-1", longitude: 9.1905, total: 41.293080234899996, - name: "eu-south-1" + name: "eu-south-1", }, { type: "azure_cnr", @@ -723,7 +723,7 @@ const RegionExpensesMocked = () => ( id: "usseceast", longitude: -78.536422, total: 0, - name: "US Sec East" + name: "US Sec East", }, { type: "azure_cnr", @@ -732,7 +732,7 @@ const RegionExpensesMocked = () => ( id: "ussecwest", longitude: -122.481734, total: 0, - name: "US Sec West" + name: "US Sec West", }, { type: "azure_cnr", @@ -741,7 +741,7 @@ const RegionExpensesMocked = () => ( id: "centralindia", longitude: 73.9197, total: 0, - name: "Central India" + name: "Central India", }, { type: "aws_cnr", @@ -750,7 +750,7 @@ const RegionExpensesMocked = () => ( id: "us-gov-east-1", longitude: -83.0235, total: 0, - name: "us-gov-east-1" + name: "us-gov-east-1", }, { type: "azure_cnr", @@ -759,12 +759,12 @@ const RegionExpensesMocked = () => ( id: "japanwest", longitude: 135.5022, total: 0, - name: "Japan West" - } + name: "Japan West", + }, ], total: 103639.415385108, previous_total: 83559.3877584106, - previous_range_start: 1596326400 + previous_range_start: 1596326400, }} applyFilter={() => console.log("apply")} startDateTimestamp={getStartOfTodayInUTCinSeconds()} diff --git a/ngui/ui/src/components/RelativeDateTimePicker/RelativeDateTimePicker.tsx b/ngui/ui/src/components/RelativeDateTimePicker/RelativeDateTimePicker.tsx index 8c0ad8fa9..95b49eac5 100644 --- a/ngui/ui/src/components/RelativeDateTimePicker/RelativeDateTimePicker.tsx +++ b/ngui/ui/src/components/RelativeDateTimePicker/RelativeDateTimePicker.tsx @@ -15,7 +15,7 @@ const RelativeDateTimePicker = ({ definedRanges, defaultActiveRange, onChange }) name: id, value: id, dataTestId, - type: LINEAR_SELECTOR_ITEMS_TYPES.TEXT + type: LINEAR_SELECTOR_ITEMS_TYPES.TEXT, })); const selectedTimeItem = timeItems.find(({ value }) => value === selectedRange); diff --git a/ngui/ui/src/components/RelativeDateTimePicker/defaults.ts b/ngui/ui/src/components/RelativeDateTimePicker/defaults.ts index 30b1f01b5..09bc13294 100644 --- a/ngui/ui/src/components/RelativeDateTimePicker/defaults.ts +++ b/ngui/ui/src/components/RelativeDateTimePicker/defaults.ts @@ -7,7 +7,7 @@ const getRelativePeriodItem = ({ id, messageId, xCount, fn, dataTestId, isUtc = messageValues: { x: xCount }, startDateFn: () => millisecondsToSeconds(performDateTimeFunction(fn, isUtc, getCurrentTimeInMsec(), xCount)), endDateFn: () => getCurrentUTCTimeInSec(), - dataTestId + dataTestId, }); const RELATIVE_PERIODS = Object.freeze({ @@ -17,55 +17,55 @@ const RELATIVE_PERIODS = Object.freeze({ ONE_DAY: "oneDay", ONE_WEEK: "oneWeek", TWO_WEEKS: "twoWeeks", - ONE_MONTH: "oneMonth" + ONE_MONTH: "oneMonth", }); const all = getRelativePeriodItem({ id: RELATIVE_PERIODS.ALL, messageId: "all", - dataTestId: "btn_all" + dataTestId: "btn_all", }); const oneHour = getRelativePeriodItem({ id: RELATIVE_PERIODS.ONE_HOUR, messageId: "xHours", xCount: 1, fn: subHours, - dataTestId: "btn_one_hour" + dataTestId: "btn_one_hour", }); const sixHours = getRelativePeriodItem({ id: RELATIVE_PERIODS.SIX_HOURS, messageId: "xHours", xCount: 6, fn: subHours, - dataTestId: "btn_six_hours" + dataTestId: "btn_six_hours", }); const oneDay = getRelativePeriodItem({ id: RELATIVE_PERIODS.ONE_DAY, messageId: "xDays", xCount: 1, fn: subDays, - dataTestId: "btn_one_day" + dataTestId: "btn_one_day", }); const oneWeek = getRelativePeriodItem({ id: RELATIVE_PERIODS.ONE_WEEK, messageId: "xWeeks", xCount: 1, fn: subWeeks, - dataTestId: "btn_one_week" + dataTestId: "btn_one_week", }); const twoWeeks = getRelativePeriodItem({ id: RELATIVE_PERIODS.TWO_WEEKS, messageId: "xWeeks", xCount: 2, fn: subWeeks, - dataTestId: "btn_two_weeks" + dataTestId: "btn_two_weeks", }); const oneMonth = getRelativePeriodItem({ id: RELATIVE_PERIODS.ONE_MONTH, messageId: "xMonth", xCount: 1, fn: subMonths, - dataTestId: "btn_one_month" + dataTestId: "btn_one_month", }); export const k8sRightsizingRelativeDates = [oneHour, sixHours, oneDay, oneWeek, oneMonth]; diff --git a/ngui/ui/src/components/RemoveInstancesFromSchedule/RemoveInstancesFromSchedule.tsx b/ngui/ui/src/components/RemoveInstancesFromSchedule/RemoveInstancesFromSchedule.tsx index 9e5c97eab..8b9ff5588 100644 --- a/ngui/ui/src/components/RemoveInstancesFromSchedule/RemoveInstancesFromSchedule.tsx +++ b/ngui/ui/src/components/RemoveInstancesFromSchedule/RemoveInstancesFromSchedule.tsx @@ -29,17 +29,17 @@ const RemoveInstancesFromSchedule = ({ instancesToRemove, onDelete, onCancel, is - ) + ), }, resourceLocation({ idAccessor: "cloud_account_id", typeAccessor: "cloud_type", locationAccessors: { - region: "region" + region: "region", }, accessorKey: "cloud_account_name", - headerDataTestId: "lbl_location" - }) + headerDataTestId: "lbl_location", + }), ], [] ); @@ -54,23 +54,23 @@ const RemoveInstancesFromSchedule = ({ instancesToRemove, onDelete, onCancel, is disabled: isRestricted, tooltip: { show: isRestricted, - value: restrictionReasonMessage - } + value: restrictionReasonMessage, + }, }} dataTestIds={{ text: "p_remove_instances_from_schedule", deleteButton: "btn_remove_instances_from_schedule_delete", - cancelButton: "btn_remove_instances_from_schedule_cancel" + cancelButton: "btn_remove_instances_from_schedule_cancel", }} message={{ - messageId: "removeInstancedFromScheduleQuestion" + messageId: "removeInstancedFromScheduleQuestion", }} >
    { @@ -50,8 +50,8 @@ const getTitleLogo = ({ cloudType, logo, imgDataTestId, clusterTypeId, isEnviron return { icon: [ , - - ] + , + ], }; } if (clusterTypeId) { @@ -63,7 +63,7 @@ const getTitleLogo = ({ cloudType, logo, imgDataTestId, clusterTypeId, isEnviron return { src: logo, alt: cloudType, - dataTestId: imgDataTestId + dataTestId: imgDataTestId, }; }; @@ -104,7 +104,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc service_name: serviceName, active = false, first_seen: firstSeen, - last_seen: lastSeen + last_seen: lastSeen, } = resource; const { cloud_console_link: cloudConsoleLink } = meta; @@ -121,7 +121,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc pool_name: poolName, pool_purpose: poolPurpose, owner_name: ownerName, - cloud_name: cloudName + cloud_name: cloudName, } = details; const savings = getSumByObjectKey(modules, "saving"); @@ -134,7 +134,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc breadcrumbs: [ - + , ], title: { text: () => { @@ -149,7 +149,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc }, dataTestId: "lbl_resource_name", isLoading: isGetResourceLoading, - logo: getTitleLogo({ cloudType, logo, imgDataTestId: `img_{cloud_type}`, clusterTypeId, isEnvironment, shareable }) + logo: getTitleLogo({ cloudType, logo, imgDataTestId: `img_{cloud_type}`, clusterTypeId, isEnvironment, shareable }), }, items: [ { @@ -160,7 +160,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc href: cloudConsoleLink, show: !!cloudConsoleLink, dataTestId: "btn_cloud_console", - isLoading: isGetResourceLoading + isLoading: isGetResourceLoading, }, { key: "envPropertiesCollectorLink", @@ -170,7 +170,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc action: () => openSideModal(CiCdIntegrationModal, { envPropertiesCollectorLink }), show: !!envPropertiesCollectorLink, dataTestId: "btn_env_properties_collector_link", - isLoading: isGetResourceLoading + isLoading: isGetResourceLoading, }, { key: "assignmentRule", @@ -180,7 +180,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc action: () => navigate(getCreateResourceAssignmentRuleUrl(id)), dataTestId: "btn_add_rule", show: !isPartOfCluster, - isLoading: isGetResourceLoading + isLoading: isGetResourceLoading, }, { key: "unmarkEnvironment", @@ -191,9 +191,9 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc dataTestId: "btn_unmark_environment", requiredActions: ["MANAGE_RESOURCES"], show: !isEnvironment && shareable, - isLoading: isGetResourceLoading - } - ] + isLoading: isGetResourceLoading, + }, + ], }; const getSummaryData = [ @@ -201,37 +201,37 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc key: "totalExpenses", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalCost + value: totalCost, }, captionMessageId: "totalExpenses", isLoading: isGetResourceLoading, dataTestIds: { - cardTestId: "card_total_exp" - } + cardTestId: "card_total_exp", + }, }, { key: "expensesThisMonth", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: cost + value: cost, }, captionMessageId: "expensesThisMonth", isLoading: isGetResourceLoading, dataTestIds: { - cardTestId: "card_exp_this_month" - } + cardTestId: "card_exp_this_month", + }, }, { key: "forecastThisMonth", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: forecast + value: forecast, }, captionMessageId: "forecastThisMonth", isLoading: isGetResourceLoading, dataTestIds: { - cardTestId: "card_forecast_this_month" - } + cardTestId: "card_forecast_this_month", + }, }, { key: "totalPaidNetworkTraffic", @@ -240,14 +240,14 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc captionMessageId: "totalPaidNetworkTraffic", isLoading: isGetResourceLoading, dataTestIds: { - cardTestId: "card_total_paid_network_traffic" - } + cardTestId: "card_total_paid_network_traffic", + }, }, { key: "possibleMonthlySavings", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: savings + value: savings, }, captionMessageId: "possibleMonthlySavings", renderCondition: () => savings !== 0, @@ -258,14 +258,14 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc tooltip: { show: true, messageId: "seeAllRecommendations", - placement: "top" - } + placement: "top", + }, }, isLoading: isGetResourceLoading || isLoadingPatch, dataTestIds: { - cardTestId: "card_savings" - } - } + cardTestId: "card_savings", + }, + }, ]; const tabs = [ @@ -305,7 +305,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc powerScheduleName={powerScheduleName} /> - ) + ), }, { title: BOOKINGS_TAB, @@ -321,13 +321,13 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc resourceType={resourceType} /> ), - renderCondition: () => isEnvironment || shareable + renderCondition: () => isEnvironment || shareable, }, { title: SUB_RESOURCES_TAB, dataTestId: "tab_sub_resources", node: !!id && , - renderCondition: () => !!clusterTypeId + renderCondition: () => !!clusterTypeId, }, { title: CONSTRAINTS_TAB, @@ -344,7 +344,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc billingOnly={!active} isResourceActive={active} /> - ) + ), }, { title: COST_MODEL_TAB, @@ -356,7 +356,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc )} ), - renderCondition: () => isEnvironment + renderCondition: () => isEnvironment, }, { title: EXPENSES_TAB, @@ -368,7 +368,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc resourceId={id} hasNetworkTrafficExpenses={totalTrafficExpenses !== 0 || totalTrafficUsage !== 0} /> - ) + ), }, { title: RECOMMENDATIONS_TAB, @@ -387,14 +387,14 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc ), // Temporary hide recommendations for clusters - "!clusterTypeId" - renderCondition: () => !clusterTypeId && !(isEmptyArray(modules) && isEmptyArray(dismissedModules)) + renderCondition: () => !clusterTypeId && !(isEmptyArray(modules) && isEmptyArray(dismissedModules)), }, { title: MONITORING_TAB, dataTestId: "tab_monitoring", node: !!id && , - renderCondition: () => hasMetrics - } + renderCondition: () => hasMetrics, + }, ]; const handleChange = (event, value) => { @@ -420,7 +420,7 @@ const Resource = ({ resource, isGetResourceLoading, patchResource, isLoadingPatc defaultTab: DETAILS_TAB, activeTab, handleChange, - name: "resources-details" + name: "resources-details", }} /> diff --git a/ngui/ui/src/components/ResourceCell/ResourceCell.tsx b/ngui/ui/src/components/ResourceCell/ResourceCell.tsx index d5a87cc37..87bc51b6a 100644 --- a/ngui/ui/src/components/ResourceCell/ResourceCell.tsx +++ b/ngui/ui/src/components/ResourceCell/ResourceCell.tsx @@ -18,7 +18,7 @@ const ResourceCell = ({ rowData, disableActivityIcon, disableConstraintViolation resource_name: resourceName, active: isActive = false, constraint_violated: isConstraintViolated = false, - power_schedule: powerScheduleId + power_schedule: powerScheduleId, } = rowData; const { labelIds: labelDataTestIds } = dataTestIds; @@ -58,7 +58,7 @@ const ResourceCell = ({ rowData, disableActivityIcon, disableConstraintViolation variant="caption" sx={{ fontWeight: "normal", - whiteSpace: "nowrap" + whiteSpace: "nowrap", }} > diff --git a/ngui/ui/src/components/ResourceConstraintCard/ResourceConstraintCard.styles.ts b/ngui/ui/src/components/ResourceConstraintCard/ResourceConstraintCard.styles.ts index 62a16c59c..8fda9fc6f 100644 --- a/ngui/ui/src/components/ResourceConstraintCard/ResourceConstraintCard.styles.ts +++ b/ngui/ui/src/components/ResourceConstraintCard/ResourceConstraintCard.styles.ts @@ -2,8 +2,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ resourceSpecific: { - color: theme.palette.warning.dark - } + color: theme.palette.warning.dark, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ResourceConstraintCard/ResourceConstraintCard.tsx b/ngui/ui/src/components/ResourceConstraintCard/ResourceConstraintCard.tsx index 3b7ad03c6..769ed5fbc 100644 --- a/ngui/ui/src/components/ResourceConstraintCard/ResourceConstraintCard.tsx +++ b/ngui/ui/src/components/ResourceConstraintCard/ResourceConstraintCard.tsx @@ -25,7 +25,7 @@ import useStyles from "./ResourceConstraintCard.styles"; const CONSTRAINT_STATUS = Object.freeze({ RESOURCE_SPECIFIC: "resource_specific", - POOL_POLICY: "pool_policy" + POOL_POLICY: "pool_policy", }); const getStatus = (constraintStatus, { classes, constraintType, poolId }) => { @@ -54,7 +54,7 @@ const getStatus = (constraintStatus, { classes, constraintType, poolId }) => { > {chunks} - ) + ), }} /> @@ -75,7 +75,7 @@ const ResourceConstraintCard = ({ limitHit, canEdit, poolId, - isLoadingProps = {} + isLoadingProps = {}, }) => { const { isRestricted, restrictionReasonMessage } = useOrganizationActionRestrictions(); @@ -83,7 +83,7 @@ const ResourceConstraintCard = ({ isGetDataLoading = false, isUpdateLoading = false, isCreateLoading = false, - isDeleteLoading = false + isDeleteLoading = false, } = isLoadingProps; const { classes } = useStyles(); @@ -191,7 +191,7 @@ const ResourceConstraintCard = ({ disabled={isRestricted} tooltip={{ show: true, - value: isRestricted ? restrictionReasonMessage : + value: isRestricted ? restrictionReasonMessage : , }} /> )} @@ -204,7 +204,7 @@ const ResourceConstraintCard = ({ show: true, value: format(secondsToMilliseconds(limitHit.time), EN_FULL_FORMAT), messageId: "violatedAt", - placement: "right" + placement: "right", }} /> ) : null} diff --git a/ngui/ui/src/components/ResourceConstraints/ResourceConstraints.tsx b/ngui/ui/src/components/ResourceConstraints/ResourceConstraints.tsx index 4c4ca86da..17e1599a7 100644 --- a/ngui/ui/src/components/ResourceConstraints/ResourceConstraints.tsx +++ b/ngui/ui/src/components/ResourceConstraints/ResourceConstraints.tsx @@ -23,7 +23,7 @@ const BillingOnly = () => ( @@ -58,7 +58,7 @@ const ResourceConstraints = ({ clusterId, isLoading, billingOnly = false, - isResourceActive + isResourceActive, }) => { const renderCommonConstraintsContent = () => ( @@ -81,7 +81,7 @@ const ResourceConstraints = ({ @@ -107,7 +107,7 @@ const ResourceConstraints = ({ {chunks} - ) + ), }} /> @@ -129,7 +129,7 @@ const ResourceConstraints = ({ messageDataTestId="p_tracking_status" messageValues={{ status: , - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> diff --git a/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdown.tsx b/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdown.tsx index 0efa46997..99af626ba 100644 --- a/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdown.tsx +++ b/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdown.tsx @@ -30,7 +30,7 @@ const useColors = (countKeys) => { return { tableColors: getColorsMap(countKeys, chartPalette), - chartColors: getColorsMap([...countKeys, OTHER_LINE_NAME], chartPalette) + chartColors: getColorsMap([...countKeys, OTHER_LINE_NAME], chartPalette), }; }; @@ -63,7 +63,7 @@ const useLineData = (breakdown, countKeys) => { id = countKey, name, purpose, - type + type, } = getResourceTypeBreakdownByDate(date, countKey); return { @@ -76,10 +76,10 @@ const useLineData = (breakdown, countKeys) => { deletedDayBefore, name, purpose, - type - } + type, + }, }; - }) + }), })) .reverse(); @@ -100,9 +100,9 @@ const useLineData = (breakdown, countKeys) => { translatedSerieId: translatedOtherLineName, details: { deletedDayBefore: getOtherDeletedDayBeforeResourcesCountSum(date), - created: getOtherCreatedResourcesCountSum(date) - } - })) + created: getOtherCreatedResourcesCountSum(date), + }, + })), }); if (!isEmptyArray(otherCountKeys)) { @@ -122,13 +122,13 @@ const ResourceCountBreakdown = ({ breakdownByValue, onBreakdownByChange, isLoading = false, - showTable = false + showTable = false, }) => { const { breakdown = {}, start_date: startDate = 0, end_date: endDate = 0, counts = {} } = resourceCountBreakdown; const appliedRange = { startSecondsTimestamp: startDate, - endSecondsTimestamp: endDate + endSecondsTimestamp: endDate, }; const countKeys = useMemo(() => getCountKeysSortedByAverageInDescendingOrder(counts), [counts]); @@ -149,7 +149,7 @@ const ResourceCountBreakdown = ({ const [withLegend, setWithLegend] = useSyncQueryParamWithState({ queryParamName: WITH_LEGEND_QUERY_PARAMETER_NAME, possibleStates: [true, false], - defaultValue: true + defaultValue: true, }); return ( diff --git a/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownLineChart/Layer/useRenderWeekendsHighlightLayer.ts b/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownLineChart/Layer/useRenderWeekendsHighlightLayer.ts index 42503f771..434b002fa 100644 --- a/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownLineChart/Layer/useRenderWeekendsHighlightLayer.ts +++ b/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownLineChart/Layer/useRenderWeekendsHighlightLayer.ts @@ -23,7 +23,7 @@ const getAreas = ({ shouldHighlight, xValues, getXCoordinateOfXValue }) => { return { xStart, xEnd, - width + width, }; } return null; @@ -44,7 +44,7 @@ export const useRenderWeekendsHighlightLayer = () => { return isOrganizationWeekend(date); }, xValues: x.all, - getXCoordinateOfXValue: xScale + getXCoordinateOfXValue: xScale, }); ctx.save(); diff --git a/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownLineChart/ResourceCountBreakdownLineChart.tsx b/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownLineChart/ResourceCountBreakdownLineChart.tsx index 7ae94fb3d..2c39619dd 100644 --- a/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownLineChart/ResourceCountBreakdownLineChart.tsx +++ b/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownLineChart/ResourceCountBreakdownLineChart.tsx @@ -58,7 +58,7 @@ const ChartTooltip = ({ points: allPoints, isOrganizationWeekend, breakdownBy }) <> {pointData.y} @@ -67,7 +67,7 @@ const ChartTooltip = ({ points: allPoints, isOrganizationWeekend, breakdownBy }) +{pointData.details.created} @@ -96,7 +96,7 @@ const ResourceCountBreakdownLineChart = ({ data, colors, isLoading, style, break dataTestId={dataTestId} data={data} yScale={{ - stacked: true + stacked: true, }} style={style} colors={({ id }) => colors[id]} @@ -114,15 +114,15 @@ const ResourceCountBreakdownLineChart = ({ data, colors, isLoading, style, break return sliceByLimitWithEllipsis(label, 30); }} axisLeft={{ - format: (value) => value + format: (value) => value, }} overlayLayers={ showWeekends ? [ { key: "weekendHighlight", - renderCanvasContent: renderWeekendsHighlightLayer - } + renderCanvasContent: renderWeekendsHighlightLayer, + }, ] : [] } diff --git a/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownTable/ResourceCountBreakdownTable.tsx b/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownTable/ResourceCountBreakdownTable.tsx index cf7265163..c3523067c 100644 --- a/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownTable/ResourceCountBreakdownTable.tsx +++ b/ngui/ui/src/components/ResourceCountBreakdown/ResourceCountBreakdownTable/ResourceCountBreakdownTable.tsx @@ -20,7 +20,7 @@ const getTotalBreakdownTableData = (counts) => Object.entries(counts).map(([id, { name = "", ...details }]) => ({ id: id ?? name, name, - ...details + ...details, })); const ResourceCountBreakdownTable = ({ @@ -31,7 +31,7 @@ const ResourceCountBreakdownTable = ({ onToggleResourceCountDisplay, onToggleAllResourceCountsDisplay, hiddenLines, - breakdownBy + breakdownBy, }) => { const tableData = useMemo(() => getTotalBreakdownTableData(counts), [counts]); const columns = useMemo( @@ -49,7 +49,7 @@ const ResourceCountBreakdownTable = ({ label={} textFirst={false} /> - ) + ), }, { header: ( @@ -71,7 +71,7 @@ const ResourceCountBreakdownTable = ({ ) : ( ); - } + }, }, { header: ( @@ -87,18 +87,18 @@ const ResourceCountBreakdownTable = ({ helperMessageId="totalResourceCountForSelectedPeriod" /> ), - accessorKey: "total" + accessorKey: "total", }, { header: () => { const { messageId, Icon } = isEmptyArray(hiddenLines) ? { messageId: "hideAllBreakdowns", - Icon: VisibilityOffOutlinedIcon + Icon: VisibilityOffOutlinedIcon, } : { messageId: "showAllBreakdown", - Icon: VisibilityOutlinedIcon + Icon: VisibilityOutlinedIcon, }; return ( @@ -107,7 +107,7 @@ const ResourceCountBreakdownTable = ({ dataTestId="btn_toggle_all" tooltip={{ show: true, - messageId + messageId, }} icon={} /> @@ -120,11 +120,11 @@ const ResourceCountBreakdownTable = ({ const { messageId, Icon } = isLineVisible ? { messageId: "hideBreakdown", - Icon: VisibilityOffOutlinedIcon + Icon: VisibilityOffOutlinedIcon, } : { messageId: "showBreakdown", - Icon: VisibilityOutlinedIcon + Icon: VisibilityOutlinedIcon, }; return ( @@ -135,13 +135,13 @@ const ResourceCountBreakdownTable = ({ messageId, icon: , dataTestId: `btn_toggle_${index}`, - action: () => onToggleResourceCountDisplay(id) - } + action: () => onToggleResourceCountDisplay(id), + }, ]} /> ); - } - } + }, + }, ], [ appliedRange.startSecondsTimestamp, @@ -150,7 +150,7 @@ const ResourceCountBreakdownTable = ({ breakdownBy, hiddenLines, onToggleAllResourceCountsDisplay, - onToggleResourceCountDisplay + onToggleResourceCountDisplay, ] ); @@ -163,7 +163,7 @@ const ResourceCountBreakdownTable = ({ columns={columns} localization={{ emptyMessageId: "noResources" }} dataTestIds={{ - container: "resources_count_table" + container: "resources_count_table", }} queryParamPrefix="resourceType" pageSize={50} diff --git a/ngui/ui/src/components/ResourceDetails/ResourceDetails.tsx b/ngui/ui/src/components/ResourceDetails/ResourceDetails.tsx index 243600b82..c887a9342 100644 --- a/ngui/ui/src/components/ResourceDetails/ResourceDetails.tsx +++ b/ngui/ui/src/components/ResourceDetails/ResourceDetails.tsx @@ -35,14 +35,14 @@ const getIdLabelDefinition = ({ cloudResourceIdentifier, isActive }) => ({ keyMessageId: "id", dataTestIds: { key: "lbl_id", - value: "lbl_id_value" - } + value: "lbl_id_value", + }, }); const getLabelDefinition = ({ value, keyMessageId, dataTestIds }) => ({ value, keyMessageId, - dataTestIds + dataTestIds, }); const getNameLabelDefinition = (resourceName) => @@ -51,8 +51,8 @@ const getNameLabelDefinition = (resourceName) => keyMessageId: "name", dataTestIds: { key: "lbl_name", - value: "lbl_name_value" - } + value: "lbl_name_value", + }, }); const getSubResourcesLabelDefinition = (count) => @@ -61,8 +61,8 @@ const getSubResourcesLabelDefinition = (count) => keyMessageId: "subResources", dataTestIds: { key: "lbl_sub_resources", - value: "lbl_sub_resources_value" - } + value: "lbl_sub_resources_value", + }, }); const getCloudNameLabelDefinition = (cloudName, cloudAccountId, cloudType) => @@ -71,8 +71,8 @@ const getCloudNameLabelDefinition = (cloudName, cloudAccountId, cloudType) => keyMessageId: "dataSource", dataTestIds: { key: "lbl_cloud", - value: "lbl_cloud_value" - } + value: "lbl_cloud_value", + }, }); const getResourceTypeLabelDefinition = (value) => @@ -81,8 +81,8 @@ const getResourceTypeLabelDefinition = (value) => keyMessageId: "type", dataTestIds: { key: "lbl_type", - value: "lbl_type_value" - } + value: "lbl_type_value", + }, }); const getServiceNameLabelDefinition = (serviceName) => @@ -91,8 +91,8 @@ const getServiceNameLabelDefinition = (serviceName) => keyMessageId: "service", dataTestIds: { key: "lbl_service", - value: "lbl_service_value" - } + value: "lbl_service_value", + }, }); const getRegionLabelDefinition = (region) => @@ -101,8 +101,8 @@ const getRegionLabelDefinition = (region) => keyMessageId: "region", dataTestIds: { key: "lbl_region", - value: "lbl_region_value" - } + value: "lbl_region_value", + }, }); const getK8sNodeLabelDefinition = (node) => @@ -111,8 +111,8 @@ const getK8sNodeLabelDefinition = (node) => keyMessageId: "node", dataTestIds: { key: "lbl_k8s_node", - value: "lbl_k8s_node_value" - } + value: "lbl_k8s_node_value", + }, }); const getK8sNamespaceLabelDefinition = (namespace) => @@ -121,8 +121,8 @@ const getK8sNamespaceLabelDefinition = (namespace) => keyMessageId: "namespace", dataTestIds: { key: "lbl_k8s_namespace", - value: "lbl_k8s_namespace_value" - } + value: "lbl_k8s_namespace_value", + }, }); const getPoolNameLabelDefinition = (poolId, poolName, poolType) => @@ -131,8 +131,8 @@ const getPoolNameLabelDefinition = (poolId, poolName, poolType) => keyMessageId: "pool", dataTestIds: { key: "lbl_pool", - value: "lbl_pool_value" - } + value: "lbl_pool_value", + }, }); const getOwnerNameLabelDefinition = (ownerName) => @@ -141,8 +141,8 @@ const getOwnerNameLabelDefinition = (ownerName) => keyMessageId: "owner", dataTestIds: { key: "lbl_owner", - value: "lbl_owner_value" - } + value: "lbl_owner_value", + }, }); const getFirstSeenLabelDefinition = (firstSeen) => @@ -151,8 +151,8 @@ const getFirstSeenLabelDefinition = (firstSeen) => keyMessageId: "firstSeenOn", dataTestIds: { key: "lbl_first_seen", - value: "lbl_first_seen_value" - } + value: "lbl_first_seen_value", + }, }); const getLastSeenLabelDefinition = (lastSeen) => @@ -161,8 +161,8 @@ const getLastSeenLabelDefinition = (lastSeen) => keyMessageId: "lastSeenOn", dataTestIds: { key: "lbl_last_seen", - value: "lbl_last_seen_value" - } + value: "lbl_last_seen_value", + }, }); const getPowerScheduleLabelDefinition = (powerScheduleId, powerScheduleName) => @@ -175,8 +175,8 @@ const getPowerScheduleLabelDefinition = (powerScheduleId, powerScheduleName) => keyMessageId: "powerSchedule", dataTestIds: { key: "lbl_power_schedule", - value: "lbl_power_schedule_value" - } + value: "lbl_power_schedule_value", + }, }); const getCommonLabelsDefinition = ({ @@ -191,7 +191,7 @@ const getCommonLabelsDefinition = ({ lastSeen, resourceType, isEnvironment, - shareable + shareable, }) => ({ idLabelDefinition: getIdLabelDefinition({ cloudResourceIdentifier, isActive }), resourceTypeLabelDefinition: getResourceTypeLabelDefinition( @@ -200,7 +200,7 @@ const getCommonLabelsDefinition = ({ clusterTypeId, resourceType, isEnvironment, - shareable + shareable, }} iconDataTestId={clusterTypeId ? "img_type_cluster_logo" : ""} /> @@ -208,7 +208,7 @@ const getCommonLabelsDefinition = ({ poolNameLabelDefinition: getPoolNameLabelDefinition(poolId, poolName, poolType), ownerNameLabelDefinition: getOwnerNameLabelDefinition(ownerName), firstSeenLabelDefinition: getFirstSeenLabelDefinition(firstSeen), - lastSeenLabelDefinition: getLastSeenLabelDefinition(lastSeen) + lastSeenLabelDefinition: getLastSeenLabelDefinition(lastSeen), }); const ClusterDetails = ({ commonLabels, resourceDetails }) => { @@ -220,7 +220,7 @@ const ClusterDetails = ({ commonLabels, resourceDetails }) => { poolNameLabelDefinition, ownerNameLabelDefinition, firstSeenLabelDefinition, - lastSeenLabelDefinition + lastSeenLabelDefinition, } = commonLabels; return ( @@ -234,7 +234,7 @@ const ClusterDetails = ({ commonLabels, resourceDetails }) => { poolNameLabelDefinition, ownerNameLabelDefinition, firstSeenLabelDefinition, - lastSeenLabelDefinition + lastSeenLabelDefinition, ].filter(Boolean) )} @@ -251,7 +251,7 @@ const SimpleResourceDetails = ({ commonLabels, resourceDetails }) => { firstSeenLabelDefinition, lastSeenLabelDefinition, vpcNameLabelDefinition, - vpcIdLabelDefinition + vpcIdLabelDefinition, } = commonLabels; const { @@ -265,7 +265,7 @@ const SimpleResourceDetails = ({ commonLabels, resourceDetails }) => { cloudAccountId, cloudType, powerScheduleId, - powerScheduleName + powerScheduleName, } = resourceDetails; return ( @@ -287,7 +287,7 @@ const SimpleResourceDetails = ({ commonLabels, resourceDetails }) => { firstSeenLabelDefinition, lastSeenLabelDefinition, vpcIdLabelDefinition, - vpcNameLabelDefinition + vpcNameLabelDefinition, ].filter(Boolean) )} @@ -315,7 +315,7 @@ const getResourceProperties = (props) => { {chunks} - ) + ), }} /> diff --git a/ngui/ui/src/components/ResourceExpenses/ResourceExpenses.tsx b/ngui/ui/src/components/ResourceExpenses/ResourceExpenses.tsx index 2f95ae4bd..d69f754cb 100644 --- a/ngui/ui/src/components/ResourceExpenses/ResourceExpenses.tsx +++ b/ngui/ui/src/components/ResourceExpenses/ResourceExpenses.tsx @@ -28,13 +28,13 @@ const ExpensesModeButtonGroup = ({ activeExpensesMode, onClick, hasNetworkTraffi id: RESOURCE_PAGE_EXPENSES_TABS.GROUPED, messageId: "grouped", action: () => onClick(RESOURCE_PAGE_EXPENSES_TABS.GROUPED), - dataTestId: "btn_grouped" + dataTestId: "btn_grouped", }, { id: RESOURCE_PAGE_EXPENSES_TABS.DETAILED, messageId: "detailed", action: () => onClick(RESOURCE_PAGE_EXPENSES_TABS.DETAILED), - dataTestId: "btn_detailed" + dataTestId: "btn_detailed", }, ...(hasNetworkTrafficExpenses ? [ @@ -42,10 +42,10 @@ const ExpensesModeButtonGroup = ({ activeExpensesMode, onClick, hasNetworkTraffi id: RESOURCE_PAGE_EXPENSES_TABS.PAID_NETWORK_TRAFFIC, messageId: "paidNetworkTraffic", action: () => onClick(RESOURCE_PAGE_EXPENSES_TABS.PAID_NETWORK_TRAFFIC), - dataTestId: "btn_paid_network_traffic" - } + dataTestId: "btn_paid_network_traffic", + }, ] - : []) + : []), ]; return ( @@ -59,23 +59,23 @@ const ExpensesModeButtonGroup = ({ activeExpensesMode, onClick, hasNetworkTraffi const ResourceExpenses = ({ resourceId, firstSeen, lastSeen, hasNetworkTrafficExpenses = false }) => { const [startDate, endDate] = useResourceDetailsDefaultDateRange({ lastSeen, - firstSeen + firstSeen, }); const [activeExpensesMode, setActiveExpensesMode] = useActiveExpensesMode({ modes: Object.values(RESOURCE_PAGE_EXPENSES_TABS), - defaultMode: RESOURCE_PAGE_EXPENSES_TABS.GROUPED + defaultMode: RESOURCE_PAGE_EXPENSES_TABS.GROUPED, }); const [requestParams, setRequestParams] = useState({ startDate, - endDate + endDate, }); useEffect(() => { updateSearchParams({ startDate: requestParams.startDate, - endDate: requestParams.endDate + endDate: requestParams.endDate, }); }, [requestParams.startDate, requestParams.endDate]); @@ -88,7 +88,7 @@ const ResourceExpenses = ({ resourceId, firstSeen, lastSeen, hasNetworkTrafficEx const params = { ...requestParams, startDate: newStartDate, - endDate: newEndDate + endDate: newEndDate, }; setRequestParams(params); }; @@ -112,9 +112,9 @@ const ResourceExpenses = ({ resourceId, firstSeen, lastSeen, hasNetworkTrafficEx messageId: DATE_RANGE_FILTERS.ALL, startDate: firstSeenStartOfDay || millisecondsToSeconds(+new Date()), endDate: lastSeenEndOfDay || millisecondsToSeconds(+new Date()), - dataTestId: "btn_all" + dataTestId: "btn_all", }), - ...getBasicRangesSet() + ...getBasicRangesSet(), ]} rangeType={DATE_RANGE_TYPE.RESOURCES} minDate={firstSeenStartOfDay} diff --git a/ngui/ui/src/components/ResourceGroupedExpensesTable/ResourceGroupedExpensesTable.tsx b/ngui/ui/src/components/ResourceGroupedExpensesTable/ResourceGroupedExpensesTable.tsx index 3bed9b903..bcfbfc793 100644 --- a/ngui/ui/src/components/ResourceGroupedExpensesTable/ResourceGroupedExpensesTable.tsx +++ b/ngui/ui/src/components/ResourceGroupedExpensesTable/ResourceGroupedExpensesTable.tsx @@ -28,7 +28,7 @@ const ResourceGroupedExpensesTable = ({ data, isLoading, startDate, endDate, sho ), cell: ({ row: { original = {} } }) => ( - ) + ), }, { accessorKey: "expenses", @@ -38,7 +38,7 @@ const ResourceGroupedExpensesTable = ({ data, isLoading, startDate, endDate, sho ), cell: ({ row: { original = {} } }) => , - defaultSort: "desc" + defaultSort: "desc", }, ...(shouldShowUsageColumn ? [ @@ -54,10 +54,10 @@ const ResourceGroupedExpensesTable = ({ data, isLoading, startDate, endDate, sho ) : ( "-" - ) - } + ), + }, ] - : []) + : []), ]; }, [endDate, shouldShowUsageColumn, startDate, theme.palette.chart]); @@ -69,13 +69,13 @@ const ResourceGroupedExpensesTable = ({ data, isLoading, startDate, endDate, sho container: "table_grouped", searchInput: "input_search", searchButton: "btn_search", - deleteSearchButton: "btn_delete_search" + deleteSearchButton: "btn_delete_search", }} withSearch data={tableData} columns={columns} localization={{ - emptyMessageId: "noExpenses" + emptyMessageId: "noExpenses", }} pageSize={50} queryParamPrefix="grouped" diff --git a/ngui/ui/src/components/ResourceLifecycle/ResourceLifecycle.tsx b/ngui/ui/src/components/ResourceLifecycle/ResourceLifecycle.tsx index 79789835d..1060ce35f 100644 --- a/ngui/ui/src/components/ResourceLifecycle/ResourceLifecycle.tsx +++ b/ngui/ui/src/components/ResourceLifecycle/ResourceLifecycle.tsx @@ -9,13 +9,13 @@ import ResourceLifecycleGlobalResourceConstraintsContainer from "containers/Reso const actionBarDefinition = { title: { messageId: "resourceLifecycleTitle", - dataTestId: "lbl_resource_lifecycle_detection" - } + dataTestId: "lbl_resource_lifecycle_detection", + }, }; export const TABS = Object.freeze({ POOL_POLICIES: "poolPolicies", - RESOURCE_CONSTRAINTS: "resourceConstraints" + RESOURCE_CONSTRAINTS: "resourceConstraints", }); const tabs = [ @@ -26,13 +26,13 @@ const tabs = [ ), - dataTestId: "btn_tab_pool_policies" + dataTestId: "btn_tab_pool_policies", }, { title: TABS.RESOURCE_CONSTRAINTS, node: , - dataTestId: "btn_tab_resource_constraints" - } + dataTestId: "btn_tab_resource_constraints", + }, ]; const ResourceLifecycle = () => ( @@ -44,7 +44,7 @@ const ResourceLifecycle = () => ( tabs, defaultTab: TABS.POOL_POLICIES, name: "resource-lifecycle", - queryParamsOnChangeBlacklist: ["search"] + queryParamsOnChangeBlacklist: ["search"], }} /> diff --git a/ngui/ui/src/components/ResourceLifecycleGlobalPoolPolicies/ResourceLifecycleGlobalPoolPolicies.tsx b/ngui/ui/src/components/ResourceLifecycleGlobalPoolPolicies/ResourceLifecycleGlobalPoolPolicies.tsx index 044c4e304..3d722386a 100644 --- a/ngui/ui/src/components/ResourceLifecycleGlobalPoolPolicies/ResourceLifecycleGlobalPoolPolicies.tsx +++ b/ngui/ui/src/components/ResourceLifecycleGlobalPoolPolicies/ResourceLifecycleGlobalPoolPolicies.tsx @@ -32,7 +32,7 @@ const UpdatePoolPolicyActivityContainer = ({ policyId, poolId, active }) => { const isManagePoolAllowed = useIsAllowed({ entityId: poolId, entityType: SCOPE_TYPES.POOL, - requiredActions: ["MANAGE_POOLS"] + requiredActions: ["MANAGE_POOLS"], }); const onActivityChange = () => { @@ -40,11 +40,11 @@ const UpdatePoolPolicyActivityContainer = ({ policyId, poolId, active }) => { updatePolicyActivity( { policyId, - isActive: !active + isActive: !active, }, { onSuccess: () => setIsUpdateActivityLoading(false), - onError: () => setIsUpdateActivityLoading(false) + onError: () => setIsUpdateActivityLoading(false), } ); }; @@ -62,7 +62,7 @@ const UpdatePoolPolicyActivityContainer = ({ policyId, poolId, active }) => { height: 20, borderRadius: "50%", backgroundColor: (theme) => (isChecked ? theme.palette.secondary.main : theme.palette.background.default), - boxShadow: (theme) => theme.shadows[1] + boxShadow: (theme) => theme.shadows[1], }} > {isUpdateActivityLoading && } @@ -94,7 +94,7 @@ const UpdatePoolPolicyContainer = ({ policyId, policyLimit, policyType, poolId, const isManagePoolAllowed = useIsAllowed({ entityId: poolId, entityType: SCOPE_TYPES.POOL, - requiredActions: ["MANAGE_POOLS"] + requiredActions: ["MANAGE_POOLS"], }); // Need to handle the loading state locally since it is possible dispatch multiple requests with the same API label @@ -111,7 +111,7 @@ const UpdatePoolPolicyContainer = ({ policyId, policyLimit, policyType, poolId, setIsUpdateLimitLoading(false); onSuccess(); }, - onError: () => setIsUpdateLimitLoading(false) + onError: () => setIsUpdateLimitLoading(false), } ); }; @@ -120,7 +120,7 @@ const UpdatePoolPolicyContainer = ({ policyId, policyLimit, policyType, poolId, policy.pool_id))].map((poolId) => ({ entityId: poolId, entityType: SCOPE_TYPES.POOL, - requiredActions: ["MANAGE_POOLS"] + requiredActions: ["MANAGE_POOLS"], })) ); @@ -177,7 +177,7 @@ const ResourceLifecycleGlobalPoolPolicies = ({ poolPolicies, isLoading = false } cell: ({ row: { original } }) => ( ), - defaultSort: "asc" + defaultSort: "asc", }, { header: ( @@ -185,7 +185,7 @@ const ResourceLifecycleGlobalPoolPolicies = ({ poolPolicies, isLoading = false } ), - accessorKey: "translatedType" + accessorKey: "translatedType", }, { header: ( @@ -206,8 +206,8 @@ const ResourceLifecycleGlobalPoolPolicies = ({ poolPolicies, isLoading = false } poolId={poolId} /> ); - } - } + }, + }, ]; return [ ...baseColumns, @@ -225,10 +225,10 @@ const ResourceLifecycleGlobalPoolPolicies = ({ poolPolicies, isLoading = false } const { id, pool_id: poolId, active } = original; return ; - } - } + }, + }, ] - : []) + : []), ]; }, [isAllowedToManageAnyPool]); @@ -242,9 +242,9 @@ const ResourceLifecycleGlobalPoolPolicies = ({ poolPolicies, isLoading = false } variant: "contained", type: "button", dataTestId: "btn_add", - action: () => navigate(RESOURCE_LIFECYCLE_CREATE_POOL_POLICY) - } - ] + action: () => navigate(RESOURCE_LIFECYCLE_CREATE_POOL_POLICY), + }, + ], }; return ( @@ -256,12 +256,12 @@ const ResourceLifecycleGlobalPoolPolicies = ({ poolPolicies, isLoading = false } withSearch data={data} localization={{ - emptyMessageId: "noPoolPolicies" + emptyMessageId: "noPoolPolicies", }} columns={columns} actionBar={{ show: true, - definition: actionBarDefinition + definition: actionBarDefinition, }} pageSize={50} queryParamPrefix="poolPolicies" @@ -270,7 +270,7 @@ const ResourceLifecycleGlobalPoolPolicies = ({ poolPolicies, isLoading = false } diff --git a/ngui/ui/src/components/ResourceLifecycleGlobalPoolPoliciesContainerMocked/ResourceLifecycleGlobalPoolPoliciesContainerMocked.tsx b/ngui/ui/src/components/ResourceLifecycleGlobalPoolPoliciesContainerMocked/ResourceLifecycleGlobalPoolPoliciesContainerMocked.tsx index 0e8913080..92b56739e 100644 --- a/ngui/ui/src/components/ResourceLifecycleGlobalPoolPoliciesContainerMocked/ResourceLifecycleGlobalPoolPoliciesContainerMocked.tsx +++ b/ngui/ui/src/components/ResourceLifecycleGlobalPoolPoliciesContainerMocked/ResourceLifecycleGlobalPoolPoliciesContainerMocked.tsx @@ -21,8 +21,8 @@ const mockedData = [ purpose: "business_unit", default_owner_id: "48c2bf0f-e6c0-4060-93ff-c04c3599ac20", default_owner_name: "Charlie Skywalker", - unallocated_limit: 26765 - } + unallocated_limit: 26765, + }, }, { deleted_at: 0, @@ -44,8 +44,8 @@ const mockedData = [ purpose: "business_unit", default_owner_id: "b09bcb1a-ad62-4eee-8283-bcc7b7e5b61d", default_owner_name: "Demo User", - unallocated_limit: 18179 - } + unallocated_limit: 18179, + }, }, { deleted_at: 0, @@ -67,8 +67,8 @@ const mockedData = [ purpose: "cicd", default_owner_id: "60b5c2ec-dd76-4e5b-8a2e-1c932396829d", default_owner_name: "Luke Roberts", - unallocated_limit: 2915 - } + unallocated_limit: 2915, + }, }, { deleted_at: 0, @@ -90,9 +90,9 @@ const mockedData = [ purpose: "team", default_owner_id: "a2459c67-d6f0-4131-83d5-1393f59cb8a1", default_owner_name: "Ellie Black", - unallocated_limit: 1325 - } - } + unallocated_limit: 1325, + }, + }, ]; const ResourceLifecycleGlobalPoolPoliciesContainerMocked = () => ( diff --git a/ngui/ui/src/components/ResourceLifecycleGlobalResourceConstraints/ResourceLifecycleGlobalResourceConstraints.tsx b/ngui/ui/src/components/ResourceLifecycleGlobalResourceConstraints/ResourceLifecycleGlobalResourceConstraints.tsx index 41dadb142..cbeed25de 100644 --- a/ngui/ui/src/components/ResourceLifecycleGlobalResourceConstraints/ResourceLifecycleGlobalResourceConstraints.tsx +++ b/ngui/ui/src/components/ResourceLifecycleGlobalResourceConstraints/ResourceLifecycleGlobalResourceConstraints.tsx @@ -22,7 +22,7 @@ import { useOpenSideModal } from "hooks/useOpenSideModal"; import { useOrganizationActionRestrictions } from "hooks/useOrganizationActionRestrictions"; import { useIsAllowedToManageAnyResourceConstraint, - useIsAllowedToManageResourceConstraint + useIsAllowedToManageResourceConstraint, } from "hooks/useResourceConstraintPermissions"; import { RESOURCES } from "urls"; import { checkError } from "utils/api"; @@ -77,7 +77,7 @@ const UpdateConstraintLimitContainer = ({ limit, formattedConstraintLimit, const disabled={isRestricted} tooltip={{ show: true, - value: isRestricted ? restrictionReasonMessage : + value: isRestricted ? restrictionReasonMessage : , }} /> )} @@ -96,7 +96,7 @@ const DeleteResourceConstraintButton = ({ employeeId, resourceId, onClick }) => onClick={onClick} tooltip={{ show: true, - value: + value: , }} /> ) @@ -122,8 +122,8 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f formattedConstraintLimit: formatConstraintLimitMessage({ limit: constraint.limit, type: constraint.type, - formats: { ttl: CONSTRAINT_MESSAGE_FORMAT.EXPIRES_AT_DATETIME } - }) + formats: { ttl: CONSTRAINT_MESSAGE_FORMAT.EXPIRES_AT_DATETIME }, + }), })), [constraints, formatConstraintLimitMessage, intl] ); @@ -131,7 +131,7 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f const isAllowedToEditAnyResourcePolicy = useIsAllowedToManageAnyResourceConstraint([ ...new Set( constraints.map(({ details: { employee_id: employeeId } = {}, resource_id: resourceId }) => ({ resourceId, employeeId })) - ) + ), ]); const columns = useMemo(() => { @@ -151,7 +151,7 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f cloud_resource_hash: original.details.cloud_resource_hash, resource_name: original.details.name, active: original.details.active, - constraint_violated: original.details.constraint_violated + constraint_violated: original.details.constraint_violated, }; return ( @@ -163,7 +163,7 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f ); }, defaultSort: "asc", - enableHiding: false + enableHiding: false, }, { header: ( @@ -173,14 +173,14 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f ), accessorKey: "pool/owner", style: { - whiteSpace: "nowrap" + whiteSpace: "nowrap", }, cell: ({ row: { original } }) => { const { details: { pool: { id: poolId, name: poolName, purpose: poolPurpose } = {}, - owner: { id: ownerId, name: ownerName } = {} - } = {} + owner: { id: ownerId, name: ownerName } = {}, + } = {}, } = original; return poolId || ownerId ? ( @@ -188,7 +188,7 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f {poolId && } ) : null; - } + }, }, { header: ( @@ -196,7 +196,7 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f ), - accessorKey: "translatedType" + accessorKey: "translatedType", }, { header: ( @@ -206,7 +206,7 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f ), accessorKey: "formattedConstraintLimit", style: { - minWidth: "400px" + minWidth: "400px", }, enableSorting: false, cell: ({ row: { original } }) => { @@ -216,7 +216,7 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f type, id, resource_id: resourceId, - details: { employee_id: employeeId } = {} + details: { employee_id: employeeId } = {}, } = original; return ( @@ -229,8 +229,8 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f employeeId={employeeId} /> ); - } - } + }, + }, ]; return [ @@ -250,7 +250,7 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f id, type, resource_id: resourceId, - details: { name: resourceName, employee_id: employeeId } = {} + details: { name: resourceName, employee_id: employeeId } = {}, } = original; return ( @@ -262,15 +262,15 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f id, type, resourceName, - resourceDisplayedName: getResourceDisplayedName(original.details) + resourceDisplayedName: getResourceDisplayedName(original.details), }); }} /> ); - } - } + }, + }, ] - : []) + : []), ]; }, [isAllowedToEditAnyResourcePolicy, openSideModal]); @@ -297,8 +297,8 @@ const ResourceLifecycleGlobalResourceConstraints = ({ constraints, isLoading = f {chunks} - ) - } + ), + }, }} /> diff --git a/ngui/ui/src/components/ResourceLimitHitEvent/ResourceLimitHitEvent.tsx b/ngui/ui/src/components/ResourceLimitHitEvent/ResourceLimitHitEvent.tsx index 45ab219fc..40f75c53e 100644 --- a/ngui/ui/src/components/ResourceLimitHitEvent/ResourceLimitHitEvent.tsx +++ b/ngui/ui/src/components/ResourceLimitHitEvent/ResourceLimitHitEvent.tsx @@ -5,13 +5,13 @@ import { RESOURCE_LIMIT_HIT_STATE } from "utils/constants"; const getLabel = (state) => ({ [RESOURCE_LIMIT_HIT_STATE.RED]: , - [RESOURCE_LIMIT_HIT_STATE.GREEN]: + [RESOURCE_LIMIT_HIT_STATE.GREEN]: , })[state]; const getColor = (state) => ({ [RESOURCE_LIMIT_HIT_STATE.RED]: "error", - [RESOURCE_LIMIT_HIT_STATE.GREEN]: "success" + [RESOURCE_LIMIT_HIT_STATE.GREEN]: "success", })[state]; const ResourceLimitHitEvent = ({ state }) => { diff --git a/ngui/ui/src/components/ResourceLimitHits/ResourceLimitHits.tsx b/ngui/ui/src/components/ResourceLimitHits/ResourceLimitHits.tsx index c93aad50b..0190721ff 100644 --- a/ngui/ui/src/components/ResourceLimitHits/ResourceLimitHits.tsx +++ b/ngui/ui/src/components/ResourceLimitHits/ResourceLimitHits.tsx @@ -32,37 +32,37 @@ const ResourceLimitHits = ({ limitHits, isLoading }) => { { header: , accessorKey: "type", - cell: ({ cell }) => + cell: ({ cell }) => , }, { header: , id: "scope", cell: ({ row: { original } }) => - original.pool_id ? : + original.pool_id ? : , }, { header: , id: "event", - cell: ({ row: { original } }) => + cell: ({ row: { original } }) => , }, { header: , accessorKey: "constraint_limit", - cell: ({ row: { original } }) => + cell: ({ row: { original } }) => , }, { header: , id: "hit_value", cell: ({ row: { original } }) => ( - ) + ), }, { header: , accessorKey: "time", defaultSort: "desc", - cell: ({ cell }) => format(secondsToMilliseconds(cell.getValue()), EN_FULL_FORMAT) - } + cell: ({ cell }) => format(secondsToMilliseconds(cell.getValue()), EN_FULL_FORMAT), + }, ]; }, []); @@ -79,12 +79,12 @@ const ResourceLimitHits = ({ limitHits, isLoading }) => {
    { const tabQueryParameter = { - [TAB_QUERY_PARAM_NAME]: tabName + [TAB_QUERY_PARAM_NAME]: tabName, }; if (tabName === RESOURCE_PAGE_TABS.EXPENSES) { diff --git a/ngui/ui/src/components/ResourceLocationCell/ResourceLocationCell.test.tsx b/ngui/ui/src/components/ResourceLocationCell/ResourceLocationCell.test.tsx index 253de7568..33da5e4ff 100644 --- a/ngui/ui/src/components/ResourceLocationCell/ResourceLocationCell.test.tsx +++ b/ngui/ui/src/components/ResourceLocationCell/ResourceLocationCell.test.tsx @@ -11,7 +11,7 @@ it("renders without crashing", () => { dataSource={{ id: "id", name: "name", - type: "aws_cnr" + type: "aws_cnr", }} /> diff --git a/ngui/ui/src/components/ResourceMetrics/MetricChart/MetricChart.tsx b/ngui/ui/src/components/ResourceMetrics/MetricChart/MetricChart.tsx index 510421365..35be1d1e6 100644 --- a/ngui/ui/src/components/ResourceMetrics/MetricChart/MetricChart.tsx +++ b/ngui/ui/src/components/ResourceMetrics/MetricChart/MetricChart.tsx @@ -20,18 +20,18 @@ const MetricChart = ({ lines, formatYAxis, emptyMessageId, legend, yFormat, isLo left: marginLeft, top: 5, bottom: 25, - right: 32 - } + right: 32, + }, }} axisLeft={{ - format: formatYAxis + format: formatYAxis, }} colors={({ color }) => color} pointSize={1} shouldRenderOnlyFirstAndLastBottomTickValues renderTooltipBody={({ slice }) => } axisBottom={{ - format: (value) => unixTimestampToDateTime(value, EN_FORMAT) + format: (value) => unixTimestampToDateTime(value, EN_FORMAT), }} isLoading={isLoading} yFormat={yFormat} diff --git a/ngui/ui/src/components/ResourceMetrics/ResourceMetrics.tsx b/ngui/ui/src/components/ResourceMetrics/ResourceMetrics.tsx index 5aa20667c..85066cda4 100644 --- a/ngui/ui/src/components/ResourceMetrics/ResourceMetrics.tsx +++ b/ngui/ui/src/components/ResourceMetrics/ResourceMetrics.tsx @@ -17,26 +17,26 @@ const ResourceMetrics = ({ metrics, isLoading = false }) => { const memoryMetric = useMetric(METRIC_TYPES.MEMORY, { memoryMetricData: metrics.ram }); const diskOperationsMetric = useMetric(METRIC_TYPES.DISK_IO, { readMetricData: metrics.disk_read_io, - writeMetricData: metrics.disk_write_io + writeMetricData: metrics.disk_write_io, }); const networkMetric = useMetric(METRIC_TYPES.NETWORK, { memoryInMetricData: metrics.network_in_io, - memoryOutMetricData: metrics.network_out_io + memoryOutMetricData: metrics.network_out_io, }); const bytesSentMetric = useMetric(METRIC_TYPES.BYTES_SENT, { - bytesSentMetricData: metrics.bytes_sent + bytesSentMetricData: metrics.bytes_sent, }); const packetsSentMetric = useMetric(METRIC_TYPES.PACKETS_SENT, { - packetsSentMetricData: metrics.packets_sent + packetsSentMetricData: metrics.packets_sent, }); const diskIOUsageMetric = useMetric(METRIC_TYPES.DISK_IO_USAGE, { - diskIOUsageMetricData: metrics.disk_io_usage + diskIOUsageMetricData: metrics.disk_io_usage, }); const consolidatedDiskIOMetric = useMetric(METRIC_TYPES.CONSOLIDATED_DISK_IO, { - consolidatedDiskIOMetricData: metrics.disk_io + consolidatedDiskIOMetricData: metrics.disk_io, }); const requestsMetric = useMetric(METRIC_TYPES.REQUESTS, { - requestsMetricData: metrics.requests + requestsMetricData: metrics.requests, }); return ( @@ -59,7 +59,7 @@ const ResourceMetrics = ({ metrics, isLoading = false }) => { packetsSentMetric, diskIOUsageMetric, consolidatedDiskIOMetric, - requestsMetric + requestsMetric, ] .filter((metric) => !isEmptyArray(metric.chartProps.lines)) .map((metric) => ( diff --git a/ngui/ui/src/components/ResourceMetrics/utils/constants.ts b/ngui/ui/src/components/ResourceMetrics/utils/constants.ts index 802457a8c..4c3e01878 100644 --- a/ngui/ui/src/components/ResourceMetrics/utils/constants.ts +++ b/ngui/ui/src/components/ResourceMetrics/utils/constants.ts @@ -4,5 +4,5 @@ export const CHART_VALUE_TYPES = Object.freeze({ PER_SECOND: "perSecond", IEC_BYTE_BASE: "iecByteBase", IEC_BYTE_PER_SECOND: "iecBytePerSecond", - INPUT_OUTPUT_OPERATIONS_PER_SECOND: "inputOutputOperationsPerSecond" + INPUT_OUTPUT_OPERATIONS_PER_SECOND: "inputOutputOperationsPerSecond", }); diff --git a/ngui/ui/src/components/ResourceMetrics/utils/getChartProps.tsx b/ngui/ui/src/components/ResourceMetrics/utils/getChartProps.tsx index 63e8c914b..1f37fa20e 100644 --- a/ngui/ui/src/components/ResourceMetrics/utils/getChartProps.tsx +++ b/ngui/ui/src/components/ResourceMetrics/utils/getChartProps.tsx @@ -24,7 +24,7 @@ const getValuesFormatter = (valueType) => values={{ value: ( - ) + ), }} /> ), @@ -36,7 +36,7 @@ const getValuesFormatter = (valueType) => id="inputOutputOperationsPerSecond" values={{ value: }} /> - ) + ), })[valueType]; const getMarginLeftByValueType = (valueType) => @@ -46,7 +46,7 @@ const getMarginLeftByValueType = (valueType) => [CHART_VALUE_TYPES.PER_SECOND]: 45, [CHART_VALUE_TYPES.IEC_BYTE_PER_SECOND]: 69, [CHART_VALUE_TYPES.IEC_BYTE_BASE]: 69, - [CHART_VALUE_TYPES.INPUT_OUTPUT_OPERATIONS_PER_SECOND]: 69 + [CHART_VALUE_TYPES.INPUT_OUTPUT_OPERATIONS_PER_SECOND]: 69, })[valueType]; const getChartProps = ({ metricType, valueType, linesWithMarkerData, colors, formatYValue }) => { @@ -63,9 +63,9 @@ const getChartProps = ({ metricType, valueType, linesWithMarkerData, colors, for value: valuesFormatter(markerData.value), dataTestIds: { title: `lbl_${markerData.dataTestIdName}`, - value: `lbl_${markerData.dataTestIdName}_value` - } - } + value: `lbl_${markerData.dataTestIdName}_value`, + }, + }, })), colors ); @@ -79,7 +79,7 @@ const getChartProps = ({ metricType, valueType, linesWithMarkerData, colors, for // Formats values in a tooltip yFormat: (value) => valuesFormatter(value), dataTestId: `chart_${metricType}`, - emptyMessageId: "noDataIsAvailableForThePeriod" + emptyMessageId: "noDataIsAvailableForThePeriod", }; }; diff --git a/ngui/ui/src/components/ResourceMetrics/utils/getChartPropsByMetricType.ts b/ngui/ui/src/components/ResourceMetrics/utils/getChartPropsByMetricType.ts index b6bf730c2..f8164ad5a 100644 --- a/ngui/ui/src/components/ResourceMetrics/utils/getChartPropsByMetricType.ts +++ b/ngui/ui/src/components/ResourceMetrics/utils/getChartPropsByMetricType.ts @@ -20,18 +20,18 @@ const cpuMetricChartProps = ({ metricType, metrics, colors, intl }) => { return { line: { id: "cpu", - data: formattedData + data: formattedData, }, markerData: { name: "cpuAverage", value: getAverageLineValue(formattedData), - dataTestIdName: "cpu_average" - } + dataTestIdName: "cpu_average", + }, }; }; const definitionGetters = { - cpuMetricData: getCpuMetricLineDefinition + cpuMetricData: getCpuMetricLineDefinition, }; return getChartProps({ @@ -42,8 +42,8 @@ const cpuMetricChartProps = ({ metricType, metrics, colors, intl }) => { formatYValue: (value) => intl.formatNumber(value, { format: "percentage", - maximumFractionDigits: 1 - }) + maximumFractionDigits: 1, + }), }); }; @@ -53,18 +53,18 @@ const memoryMetricChartProps = ({ metricType, metrics, colors, intl }) => { return { line: { id: "memory", - data: formattedData + data: formattedData, }, markerData: { name: "memoryAverage", value: getAverageLineValue(formattedData), - dataTestIdName: "memory_average" - } + dataTestIdName: "memory_average", + }, }; }; const definitionGetters = { - memoryMetricData: getMemoryMetricLineDefinition + memoryMetricData: getMemoryMetricLineDefinition, }; return getChartProps({ @@ -75,8 +75,8 @@ const memoryMetricChartProps = ({ metricType, metrics, colors, intl }) => { formatYValue: (value) => intl.formatNumber(value, { format: "percentage", - maximumFractionDigits: 1 - }) + maximumFractionDigits: 1, + }), }); }; @@ -84,30 +84,30 @@ const diskOperationsChartProps = ({ metricType, metrics, colors, intl }) => { const getReadMetricLineDefinition = (data) => ({ line: { id: "read", - data + data, }, markerData: { name: "readAverage", value: getAverageLineValue(data), - dataTestIdName: "disk_read_average" - } + dataTestIdName: "disk_read_average", + }, }); const getWriteMetricLineDefinition = (data) => ({ line: { id: "write", - data + data, }, markerData: { name: "writeAverage", value: getAverageLineValue(data), - dataTestIdName: "disk_write_average" - } + dataTestIdName: "disk_write_average", + }, }); const definitionGetters = { readMetricData: getReadMetricLineDefinition, - writeMetricData: getWriteMetricLineDefinition + writeMetricData: getWriteMetricLineDefinition, }; return getChartProps({ @@ -118,10 +118,10 @@ const diskOperationsChartProps = ({ metricType, metrics, colors, intl }) => { formatYValue: (value) => intl.formatMessage( { - id: "valuePerSec" + id: "valuePerSec", }, { value: intl.formatNumber(value, { maximumFractionDigits: 1 }) } - ) + ), }); }; @@ -129,30 +129,30 @@ const networkChartProps = ({ metricType, metrics, colors, intl }) => { const getNetworkInLineDefinition = (data) => ({ line: { id: "in", - data + data, }, markerData: { name: "inTotal", value: getTotalLineValue(data), - dataTestIdName: "network_in_total" - } + dataTestIdName: "network_in_total", + }, }); const getNetworkOutLineDefinition = (data) => ({ line: { id: "out", - data + data, }, markerData: { name: "outTotal", value: getTotalLineValue(data), - dataTestIdName: "network_out_total" - } + dataTestIdName: "network_out_total", + }, }); const definitionGetters = { memoryInMetricData: getNetworkInLineDefinition, - memoryOutMetricData: getNetworkOutLineDefinition + memoryOutMetricData: getNetworkOutLineDefinition, }; return getChartProps({ @@ -163,16 +163,16 @@ const networkChartProps = ({ metricType, metrics, colors, intl }) => { formatYValue: (value) => intl.formatMessage( { - id: "valuePerSec" + id: "valuePerSec", }, { value: formatDigitalUnit({ value, baseUnit: IEC_UNITS.BYTE, - maximumFractionDigits: 1 - }) + maximumFractionDigits: 1, + }), } - ) + ), }); }; @@ -180,17 +180,17 @@ const bytesSentChartProps = ({ metricType, metrics, colors }) => { const getBytesSentMetricLineDefinition = (data) => ({ line: { id: "bytesSent", - data + data, }, markerData: { name: "bytesSentAverage", value: getAverageLineValue(data), - dataTestIdName: "bytes_sent" - } + dataTestIdName: "bytes_sent", + }, }); const definitionGetters = { - bytesSentMetricData: getBytesSentMetricLineDefinition + bytesSentMetricData: getBytesSentMetricLineDefinition, }; return getChartProps({ @@ -202,8 +202,8 @@ const bytesSentChartProps = ({ metricType, metrics, colors }) => { formatDigitalUnit({ value, baseUnit: IEC_UNITS.BYTE, - maximumFractionDigits: 1 - }) + maximumFractionDigits: 1, + }), }); }; @@ -211,17 +211,17 @@ const packetsSentChartProps = ({ metricType, metrics, colors, intl }) => { const getPacketsSentMetricLineDefinition = (data) => ({ line: { id: "packetsSent", - data + data, }, markerData: { name: "packetsSentAverage", value: getAverageLineValue(data), - dataTestIdName: "packets_sent" - } + dataTestIdName: "packets_sent", + }, }); const definitionGetters = { - packetsSentMetricData: getPacketsSentMetricLineDefinition + packetsSentMetricData: getPacketsSentMetricLineDefinition, }; return getChartProps({ @@ -231,8 +231,8 @@ const packetsSentChartProps = ({ metricType, metrics, colors, intl }) => { colors, formatYValue: (value) => formatCompactNumber(intl.formatNumber)({ - value: value - }) + value: value, + }), }); }; @@ -240,17 +240,17 @@ const diskIOUsageChartProps = ({ metricType, metrics, colors, intl }) => { const getDiskIOUsageMetricLineDefinition = (data) => ({ line: { id: "diskIOUsage", - data + data, }, markerData: { name: "diskIOUsageAverage", value: getAverageLineValue(data), - dataTestIdName: "disk_io_usage" - } + dataTestIdName: "disk_io_usage", + }, }); const definitionGetters = { - diskIOUsageMetricData: getDiskIOUsageMetricLineDefinition + diskIOUsageMetricData: getDiskIOUsageMetricLineDefinition, }; return getChartProps({ @@ -261,8 +261,8 @@ const diskIOUsageChartProps = ({ metricType, metrics, colors, intl }) => { formatYValue: (value) => intl.formatNumber(value, { format: "percentage", - maximumFractionDigits: 1 - }) + maximumFractionDigits: 1, + }), }); }; @@ -270,17 +270,17 @@ const consolidatedDiskIOChartProps = ({ metricType, metrics, colors, intl }) => const getConsolidatedDiskIOMetricLineDefinition = (data) => ({ line: { id: "diskIO", - data + data, }, markerData: { name: "diskIOAverage", value: getAverageLineValue(data), - dataTestIdName: "consolidated_disk_io" - } + dataTestIdName: "consolidated_disk_io", + }, }); const definitionGetters = { - consolidatedDiskIOMetricData: getConsolidatedDiskIOMetricLineDefinition + consolidatedDiskIOMetricData: getConsolidatedDiskIOMetricLineDefinition, }; return getChartProps({ @@ -291,14 +291,14 @@ const consolidatedDiskIOChartProps = ({ metricType, metrics, colors, intl }) => formatYValue: (value) => intl.formatMessage( { - id: "inputOutputOperationsPerSecond" + id: "inputOutputOperationsPerSecond", }, { value: formatCompactNumber(intl.formatNumber)({ - value: value - }) + value: value, + }), } - ) + ), }); }; @@ -306,17 +306,17 @@ const requestsChartProps = ({ metricType, metrics, colors, intl }) => { const getRequestsMetricLineDefinition = (data) => ({ line: { id: "requests", - data + data, }, markerData: { name: "requestsTotal", value: getTotalLineValue(data), - dataTestIdName: "requests" - } + dataTestIdName: "requests", + }, }); const definitionGetters = { - requestsMetricData: getRequestsMetricLineDefinition + requestsMetricData: getRequestsMetricLineDefinition, }; return getChartProps({ @@ -326,15 +326,15 @@ const requestsChartProps = ({ metricType, metrics, colors, intl }) => { colors, formatYValue: (value) => formatCompactNumber(intl.formatNumber)({ - value: value - }) + value: value, + }), }); }; const convertMetricDataToLineData = (metricData) => metricData.map(({ date, value }) => ({ x: date, - y: value + y: value, })); const getMetricsLineData = (metrics) => { diff --git a/ngui/ui/src/components/ResourceMetrics/utils/getColorizedMetricChartLinesAndLegend.ts b/ngui/ui/src/components/ResourceMetrics/utils/getColorizedMetricChartLinesAndLegend.ts index 6ed7b0517..dd2c20007 100644 --- a/ngui/ui/src/components/ResourceMetrics/utils/getColorizedMetricChartLinesAndLegend.ts +++ b/ngui/ui/src/components/ResourceMetrics/utils/getColorizedMetricChartLinesAndLegend.ts @@ -4,12 +4,12 @@ const colorizeChartLinesAndLegend = (linesAndMarkers, colors) => return { line: { ...line, - color + color, }, marker: { ...marker, - color - } + color, + }, }; }); @@ -21,7 +21,7 @@ const getColorizedMetricChartLinesAndLegend = (linesWithMarkers, colors) => { return { lines: getLines(colorizedLinesAndLegend), - legend: getMarkers(colorizedLinesAndLegend) + legend: getMarkers(colorizedLinesAndLegend), }; }; diff --git a/ngui/ui/src/components/ResourceMetrics/utils/getTitleMessageIdByMetricType.ts b/ngui/ui/src/components/ResourceMetrics/utils/getTitleMessageIdByMetricType.ts index 53079be57..d5faadaf1 100644 --- a/ngui/ui/src/components/ResourceMetrics/utils/getTitleMessageIdByMetricType.ts +++ b/ngui/ui/src/components/ResourceMetrics/utils/getTitleMessageIdByMetricType.ts @@ -11,7 +11,7 @@ const getTitleMessageIdByMetricType = (metricType: string) => [METRIC_TYPES.PACKETS_SENT]: "packetsSent", [METRIC_TYPES.DISK_IO_USAGE]: "diskIOUsage", [METRIC_TYPES.CONSOLIDATED_DISK_IO]: "diskIO", - [METRIC_TYPES.REQUESTS]: "requests" + [METRIC_TYPES.REQUESTS]: "requests", }) as const )[metricType]; diff --git a/ngui/ui/src/components/ResourcePaidNetworkTraffic/ResourcePaidNetworkTraffic.tsx b/ngui/ui/src/components/ResourcePaidNetworkTraffic/ResourcePaidNetworkTraffic.tsx index 57ac11285..97728a69c 100644 --- a/ngui/ui/src/components/ResourcePaidNetworkTraffic/ResourcePaidNetworkTraffic.tsx +++ b/ngui/ui/src/components/ResourcePaidNetworkTraffic/ResourcePaidNetworkTraffic.tsx @@ -52,7 +52,7 @@ const ResourcePaidNetworkTraffic = ({ trafficExpenses, isLoading }) => { data={tableData} columns={columns} localization={{ - emptyMessageId: "noTrafficExpenses" + emptyMessageId: "noTrafficExpenses", }} /> )} diff --git a/ngui/ui/src/components/ResourcePaidNetworkTrafficList/ResourcePaidNetworkTrafficList.tsx b/ngui/ui/src/components/ResourcePaidNetworkTrafficList/ResourcePaidNetworkTrafficList.tsx index bde3ef70e..d1fcbc6a1 100644 --- a/ngui/ui/src/components/ResourcePaidNetworkTrafficList/ResourcePaidNetworkTrafficList.tsx +++ b/ngui/ui/src/components/ResourcePaidNetworkTrafficList/ResourcePaidNetworkTrafficList.tsx @@ -35,7 +35,7 @@ const ResourcePaidNetworkTrafficList = ({ trafficExpenses = [] }) => { const trafficExpensesSorted = sortObjects({ array: trafficExpenses, field: "cost", - type: "desc" + type: "desc", }); return ( diff --git a/ngui/ui/src/components/ResourceRawExpenses/ResourceRawExpenses.tsx b/ngui/ui/src/components/ResourceRawExpenses/ResourceRawExpenses.tsx index fb5e30003..f6838be78 100644 --- a/ngui/ui/src/components/ResourceRawExpenses/ResourceRawExpenses.tsx +++ b/ngui/ui/src/components/ResourceRawExpenses/ResourceRawExpenses.tsx @@ -26,7 +26,7 @@ const ResourceRawExpenses = ({ expenses, shownExpenses, startDate, endDate, isLo value={} dataTestIds={{ value: "lbl_expenses_value", - key: "lbl_expenses" + key: "lbl_expenses", }} /> )} @@ -37,11 +37,11 @@ const ResourceRawExpenses = ({ expenses, shownExpenses, startDate, endDate, isLo data={chartData} isLoading={isLoading} yScale={{ - stacked: true + stacked: true, }} renderTooltipBody={({ slice, stacked }) => } axisLeft={{ - format: (value) => formatMoney(FORMATTED_MONEY_TYPES.COMPACT, value) + format: (value) => formatMoney(FORMATTED_MONEY_TYPES.COMPACT, value), }} /> diff --git a/ngui/ui/src/components/ResourceRawExpenses/ResourceRawExpensesChartTooltipBody/ResourceRawExpensesChartTooltipBody.tsx b/ngui/ui/src/components/ResourceRawExpenses/ResourceRawExpensesChartTooltipBody/ResourceRawExpensesChartTooltipBody.tsx index f547d6e51..13b5bd032 100644 --- a/ngui/ui/src/components/ResourceRawExpenses/ResourceRawExpensesChartTooltipBody/ResourceRawExpensesChartTooltipBody.tsx +++ b/ngui/ui/src/components/ResourceRawExpenses/ResourceRawExpensesChartTooltipBody/ResourceRawExpensesChartTooltipBody.tsx @@ -35,7 +35,7 @@ const ResourceRawExpensesChartTooltipBody = ({ slice, stacked }) => { + value: , }} /> diff --git a/ngui/ui/src/components/ResourceRawExpenses/utils/getData.ts b/ngui/ui/src/components/ResourceRawExpenses/utils/getData.ts index 2d1701895..d82f5cfe0 100644 --- a/ngui/ui/src/components/ResourceRawExpenses/utils/getData.ts +++ b/ngui/ui/src/components/ResourceRawExpenses/utils/getData.ts @@ -6,23 +6,23 @@ import { formatISO } from "utils/datetime"; const AWS = Object.freeze({ LINE_ITEM_DESCRIPTION: "lineItem/LineItemDescription", LINE_ITEM_BLENDED_RATE: "lineItem/BlendedRate", - PRICING_UNIT: "pricing/unit" + PRICING_UNIT: "pricing/unit", }); const ALIBABA = Object.freeze({ - BILLING_ITEM: "BillingItem" + BILLING_ITEM: "BillingItem", }); const NEBIUS = Object.freeze({ SKU_NAME: "sku_name", COST: "cost", PRICING_QUANTITY: "pricing_quantity", - PRICING_UNIT: "pricing_unit" + PRICING_UNIT: "pricing_unit", }); const getFormattedOrdinateValues = (currentValue, currentPointValue) => { const values = { - y: (currentPointValue.y || 0) + currentValue.expense + y: (currentPointValue.y || 0) + currentValue.expense, }; if (currentValue.cloudType === AWS_CNR) { @@ -56,7 +56,7 @@ const getCategory = (cloudType, item) => [ALIBABA_CNR]: item?.[ALIBABA.BILLING_ITEM], [NEBIUS_DATA_SOURCE]: item?.[NEBIUS.SKU_NAME], // If we could not identify cloud_type by the raw_data -> place it in the default group - "Total expenses" - [NOT_SET_CLOUD_TYPE]: intl.formatMessage({ id: "totalExpenses" }) + [NOT_SET_CLOUD_TYPE]: intl.formatMessage({ id: "totalExpenses" }), })[cloudType]; const getUsage = (cloudType, item) => @@ -68,27 +68,27 @@ const getUsage = (cloudType, item) => if (!lineItemBlendedRate || !pricingUnit) { return { usage: 0, - usageUnit: undefined + usageUnit: undefined, }; } const cost = item.cost ?? 0; const usage = lineItemBlendedRate === 0 ? 0 : cost / lineItemBlendedRate; return { usage, - usageUnit: pricingUnit + usageUnit: pricingUnit, }; }, [NEBIUS_DATA_SOURCE]: () => ({ usage: +item[NEBIUS.PRICING_QUANTITY], - usageUnit: item[NEBIUS.PRICING_UNIT] - }) + usageUnit: item[NEBIUS.PRICING_UNIT], + }), })[cloudType] ?? (() => {}) )(); const buildData = (cloudType, item) => ({ date: formatISO(item.start_date), expense: item.cost ?? 0, - ...getUsage(cloudType, item) + ...getUsage(cloudType, item), }); /** @@ -122,9 +122,9 @@ const prepareTableData = (groupedExpenses) => ...(categoryPayload.some(({ usage, usageUnit }) => !!usage && !!usageUnit) ? { usage: categoryPayload.reduce((usageSum, { usage = 0 }) => usageSum + usage, 0), - usageUnit: categoryPayload.find(({ usageUnit }) => Boolean(usageUnit)).usageUnit + usageUnit: categoryPayload.find(({ usageUnit }) => Boolean(usageUnit)).usageUnit, } - : {}) + : {}), })) .filter(({ expenses: expensesSum }) => expensesSum !== 0); @@ -143,7 +143,7 @@ const prepareChartData = (groupedData, expenses) => { const diff = getDifference(uniqueDays, xValues); diff.forEach((missingXValue) => { pointsMap.set(missingXValue, { - y: 0 + y: 0, }); }); @@ -160,7 +160,7 @@ const prepareChartData = (groupedData, expenses) => { return { ...result, - [groupName]: data + [groupName]: data, }; }, {}); @@ -192,7 +192,7 @@ export const getData = (expenses) => { return { ...result, - [category]: [...(result[category] ?? []), data] + [category]: [...(result[category] ?? []), data], }; }, {}); diff --git a/ngui/ui/src/components/ResourceRecommendations/ResourceRecommendations.tsx b/ngui/ui/src/components/ResourceRecommendations/ResourceRecommendations.tsx index fcb1d6ce4..16f04ee76 100644 --- a/ngui/ui/src/components/ResourceRecommendations/ResourceRecommendations.tsx +++ b/ngui/ui/src/components/ResourceRecommendations/ResourceRecommendations.tsx @@ -23,7 +23,7 @@ const descriptionColumn = (state) => ({ accessorKey: "name", cell: ({ row: { original } }) => ( - ) + ), }); const actionsColumn = ({ active = true, isLoading, patchResource, havePermissionsToPerformActions }) => ({ @@ -50,10 +50,10 @@ const actionsColumn = ({ active = true, isLoading, patchResource, havePermission ) : ( - ) + ), }} /> - ) + ), }); const ResourceRecommendationTitle = ({ messageId }) => ( @@ -73,13 +73,13 @@ const DismissedResourceRecommendations = ({ patchResource, dismissedRecommendations = [], havePermissionsToPerformActions, - isLoading + isLoading, }) => { const data = useMemo(() => dismissedRecommendations, [dismissedRecommendations]); const columns = useMemo( () => [ descriptionColumn("dismissed"), - actionsColumn({ active: false, isLoading, patchResource, havePermissionsToPerformActions }) + actionsColumn({ active: false, isLoading, patchResource, havePermissionsToPerformActions }), ], [isLoading, patchResource, havePermissionsToPerformActions] ); @@ -89,15 +89,15 @@ const DismissedResourceRecommendations = ({ table={
    } @@ -109,7 +109,7 @@ const ActiveResourceRecommendations = ({ patchResource, activeRecommendations = [], havePermissionsToPerformActions, - isLoading + isLoading, }) => { const data = useMemo(() => activeRecommendations, [activeRecommendations]); const columns = useMemo(() => { @@ -125,11 +125,11 @@ const ActiveResourceRecommendations = ({ ), accessorKey: "saving", defaultSort: "desc", - cell: ({ cell }) => + cell: ({ cell }) => , }, ...(includesAnyDismissible ? [actionsColumn({ active: true, isLoading, patchResource, havePermissionsToPerformActions })] - : []) + : []), ]; }, [activeRecommendations, isLoading, patchResource, havePermissionsToPerformActions]); return ( @@ -138,15 +138,15 @@ const ActiveResourceRecommendations = ({ table={
    } @@ -158,7 +158,7 @@ const patchRecommendationWithDescriptions = (backendData, RecommendationClass) = ...backendData, descriptionMessageId: RecommendationClass.resourceDescriptionMessageId, descriptionMessageValues: RecommendationClass.getResourceDescriptionMessageValues(backendData), - dismissible: new RecommendationClass("active", {}).dismissible + dismissible: new RecommendationClass("active", {}).dismissible, }); const ResourceRecommendations = ({ @@ -166,12 +166,12 @@ const ResourceRecommendations = ({ dismissedRecommendations, patchResource, resourceId, - isLoading = false + isLoading = false, }) => { const havePermissionsToPerformActions = useIsAllowed({ entityType: SCOPE_TYPES.RESOURCE, entityId: resourceId, - requiredActions: ["MANAGE_RESOURCES", "MANAGE_OWN_RESOURCES"] + requiredActions: ["MANAGE_RESOURCES", "MANAGE_OWN_RESOURCES"], }); const allRecommendations = useAllRecommendations(); diff --git a/ngui/ui/src/components/ResourceTypeLabel/ResourceTypeLabel.tsx b/ngui/ui/src/components/ResourceTypeLabel/ResourceTypeLabel.tsx index c0abff429..53dc4fd4e 100644 --- a/ngui/ui/src/components/ResourceTypeLabel/ResourceTypeLabel.tsx +++ b/ngui/ui/src/components/ResourceTypeLabel/ResourceTypeLabel.tsx @@ -53,7 +53,7 @@ const ClusterIcon = ({ dataTestId, hasRightMargin = false }: ClusterIconProps) = hasRightMargin={hasRightMargin} tooltip={{ show: true, - messageId: "cluster" + messageId: "cluster", }} /> ); @@ -65,7 +65,7 @@ const EnvironmentIcon = ({ dataTestId, hasRightMargin = false }: EnvironmentIcon hasRightMargin={hasRightMargin} tooltip={{ show: true, - messageId: "environment" + messageId: "environment", }} /> ); diff --git a/ngui/ui/src/components/Resources/Filters.tsx b/ngui/ui/src/components/Resources/Filters.tsx index 6b20cffcf..9c9bc7fb0 100644 --- a/ngui/ui/src/components/Resources/Filters.tsx +++ b/ngui/ui/src/components/Resources/Filters.tsx @@ -19,13 +19,13 @@ const getSelectionFilterProps = ({ config, onChange, appliedFilters, data }) => searchPredicate: config.searchPredicate, onChange: onChange(config.id), appliedItems: appliedFilters[config.id], - settings: config.settings + settings: config.settings, }); const getRangeFilterProps = ({ config, onChange, appliedFilters }) => ({ label: config.label, onChange: onChange(config.id), - appliedRange: config.transformers.getAppliedRange(appliedFilters[config.id]) + appliedRange: config.transformers.getAppliedRange(appliedFilters[config.id]), }); const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => { @@ -33,7 +33,7 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => const handleChange = (type) => (selectedItems) => { onAppliedFiltersChange({ - [type]: selectedItems + [type]: selectedItems, }); }; @@ -41,8 +41,8 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => onAppliedFiltersChange({ [type]: { from: selectedRange.from ? moveDateFromUTC(startOfDay(selectedRange.from)) : undefined, - to: selectedRange.to ? moveDateFromUTC(endOfDay(selectedRange.to)) : undefined - } + to: selectedRange.to ? moveDateFromUTC(endOfDay(selectedRange.to)) : undefined, + }, }); }; @@ -69,9 +69,9 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => ?.filter((item) => item.id === currentEmployeeId) .map((item) => ({ name: intl.formatMessage({ id: "assignedToMe" }), - value: item.id + value: item.id, })) ?? [], - renderItem: (item) => item.name + renderItem: (item) => item.name, }, { id: "resourceType", @@ -81,9 +81,9 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => ?.filter((item) => ["Volume", "Instance"].includes(item.name)) .map((item) => ({ name: item.name, - value: `${item.name}:${item.type}` + value: `${item.name}:${item.type}`, })) ?? [], - renderItem: (item) => item.name + renderItem: (item) => item.name, }, { id: "active", @@ -93,9 +93,9 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => ?.filter((item) => item === true) .map((item) => ({ name: intl.formatMessage({ id: "active" }), - value: item + value: item, })) ?? [], - renderItem: (item) => item.name + renderItem: (item) => item.name, }, { id: "constraintViolated", @@ -105,10 +105,10 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => ?.filter((item) => item === true) .map((item) => ({ name: intl.formatMessage({ id: "violated" }), - value: item + value: item, })) ?? [], - renderItem: (item) => item.name - } + renderItem: (item) => item.name, + }, ]; const handleApplySuggestion = (updates: Record) => { @@ -116,7 +116,7 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => ownerId: { values: updates.ownerId || [] }, resourceType: { values: updates.resourceType || [] }, active: { values: updates.active || [] }, - constraintViolated: { values: updates.constraintViolated || [] } + constraintViolated: { values: updates.constraintViolated || [] }, }); }; @@ -130,7 +130,7 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => { key: "resourceType", data: filters.resource_type }, { key: "active", data: filters.active }, { key: "recommendations", data: filters.recommendations }, - { key: "constraintViolated", data: filters.constraint_violated } + { key: "constraintViolated", data: filters.constraint_violated }, ], range: [{ key: "firstSeen" }, { key: "lastSeen" }], secondary: [ @@ -141,8 +141,8 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => { key: "networkTrafficTo", data: filters.traffic_to }, { key: "k8sNode", data: filters.k8s_node }, { key: "k8sService", data: filters.k8s_service }, - { key: "k8sNamespace", data: filters.k8s_namespace } - ] + { key: "k8sNamespace", data: filters.k8s_namespace }, + ], }; const hasAppliedValue = (key) => { @@ -162,7 +162,7 @@ const ResourceFilters = ({ filters, appliedFilters, onAppliedFiltersChange }) => ownerId: appliedFilters.ownerId.values, resourceType: appliedFilters.resourceType.values, active: appliedFilters.active.values, - constraintViolated: appliedFilters.constraintViolated.values + constraintViolated: appliedFilters.constraintViolated.values, }} /> {FILTER_GROUPS.primary.map(({ key, data }) => ( diff --git a/ngui/ui/src/components/Resources/Resources.test.tsx b/ngui/ui/src/components/Resources/Resources.test.tsx index 4ec437589..369363b47 100644 --- a/ngui/ui/src/components/Resources/Resources.test.tsx +++ b/ngui/ui/src/components/Resources/Resources.test.tsx @@ -24,14 +24,14 @@ it("renders without crashing", () => { requestParams={{}} activeBreakdown={{ name: CLEAN_EXPENSES_BREAKDOWN_TYPES.EXPENSES, - value: "expenses" + value: "expenses", }} expensesBreakdownPageState={{ breakdownBy: [RESOURCES_EXPENSES_DAILY_BREAKDOWN_BY.EMPLOYEE_ID, null], - groupBy: [{}, null] + groupBy: [{}, null], }} resourceCountBreakdownPageState={{ - breakdownBy: [RESOURCES_EXPENSES_DAILY_BREAKDOWN_BY.EMPLOYEE_ID, null] + breakdownBy: [RESOURCES_EXPENSES_DAILY_BREAKDOWN_BY.EMPLOYEE_ID, null], }} perspectives={{}} onBreakdownChange={vi.fn} diff --git a/ngui/ui/src/components/Resources/Resources.tsx b/ngui/ui/src/components/Resources/Resources.tsx index 58ba6e7b6..6e1a6ec5d 100644 --- a/ngui/ui/src/components/Resources/Resources.tsx +++ b/ngui/ui/src/components/Resources/Resources.tsx @@ -24,7 +24,7 @@ import { DAILY_RESOURCE_COUNT_BREAKDOWN_BY_PARAMETER_NAME, getResourcesExpensesUrl, RESOURCES_BREAKDOWN_BY_QUERY_PARAMETER_NAME, - RESOURCES_PERSPECTIVE_PARAMETER_NAME + RESOURCES_PERSPECTIVE_PARAMETER_NAME, } from "urls"; import { CLEAN_EXPENSES_BREAKDOWN_TYPES, DATE_RANGE_TYPE } from "utils/constants"; import { SPACING_2 } from "utils/layouts"; @@ -46,8 +46,8 @@ const SelectedPerspectiveTitle = ({ perspectiveName }) => { window.location.origin, getResourcesExpensesUrl({ [RESOURCES_PERSPECTIVE_PARAMETER_NAME]: perspectiveName, - organizationId - }) + organizationId, + }), ].join(""); const isPerspectiveNameLong = perspectiveName.length > MAX_PERSPECTIVE_NAME_LENGTH; @@ -66,7 +66,7 @@ const SelectedPerspectiveTitle = ({ perspectiveName }) => { : perspectiveName} - ) + ), }} /> @@ -86,7 +86,7 @@ const Resources = ({ appliedFilters, onAppliedFiltersChange, isFilterValuesLoading = false, - onBreakdownChange + onBreakdownChange, }) => { const openSideModal = useOpenSideModal(); @@ -101,7 +101,7 @@ const Resources = ({ ) : ( intl.formatMessage({ id: "resources" }) ), - dataTestId: "lbl_resources" + dataTestId: "lbl_resources", }, items: [ ...(isEmptyObject(perspectives) @@ -116,10 +116,10 @@ const Resources = ({ openSideModal(ApplyResourcePerspectiveModal, { perspectives, appliedPerspectiveName: selectedPerspectiveName, - onApply: onPerspectiveApply + onApply: onPerspectiveApply, }); - } - } + }, + }, ]), { key: "savePerspectiveTitle", @@ -136,20 +136,20 @@ const Resources = ({ breakdownBy: searchParams[DAILY_EXPENSES_BREAKDOWN_BY_PARAMETER_NAME], groupBy: { groupBy: searchParams.groupBy, - groupType: searchParams.groupType - } + groupType: searchParams.groupType, + }, }; } if (activeBreakdown === CLEAN_EXPENSES_BREAKDOWN_TYPES.RESOURCE_COUNT) { return { - breakdownBy: searchParams[DAILY_RESOURCE_COUNT_BREAKDOWN_BY_PARAMETER_NAME] + breakdownBy: searchParams[DAILY_RESOURCE_COUNT_BREAKDOWN_BY_PARAMETER_NAME], }; } if (activeBreakdown === CLEAN_EXPENSES_BREAKDOWN_TYPES.META) { return { - breakdownBy: searchParams[DAILY_META_BREAKDOWN_BY_PARAMETER_NAME] + breakdownBy: searchParams[DAILY_META_BREAKDOWN_BY_PARAMETER_NAME], }; } @@ -160,11 +160,11 @@ const Resources = ({ breakdownBy: activeBreakdown, breakdownData: getBreakdownData(), filterValues, - appliedFilters + appliedFilters, }); }, requiredActions: ["EDIT_PARTNER"], - dataTestId: "btn_create_perspective" + dataTestId: "btn_create_perspective", }, { key: "configureClusterTypes", @@ -172,32 +172,32 @@ const Resources = ({ messageId: "configureClusterTypes", type: "button", link: CLUSTER_TYPES, - dataTestId: "btn_configure_cluster_types" - } - ] + dataTestId: "btn_configure_cluster_types", + }, + ], }; const tabs = [ { title: CLEAN_EXPENSES_BREAKDOWN_TYPES.EXPENSES, dataTestId: "tab_expenses", - node: + node: , }, { title: CLEAN_EXPENSES_BREAKDOWN_TYPES.RESOURCE_COUNT, dataTestId: "tab_counts", - node: + node: , }, { title: CLEAN_EXPENSES_BREAKDOWN_TYPES.TAGS, dataTestId: "tab_tags", - node: + node: , }, { title: CLEAN_EXPENSES_BREAKDOWN_TYPES.META, dataTestId: "tab_meta", - node: - } + node: , + }, ]; return ( @@ -234,7 +234,7 @@ const Resources = ({ }, queryTabName: RESOURCES_BREAKDOWN_BY_QUERY_PARAMETER_NAME, defaultTab: CLEAN_EXPENSES_BREAKDOWN_TYPES.EXPENSES, - name: "resource-breakdowns" + name: "resource-breakdowns", }} /> diff --git a/ngui/ui/src/components/Resources/ResourcesMocked.tsx b/ngui/ui/src/components/Resources/ResourcesMocked.tsx index 1e457fccb..034367a0f 100644 --- a/ngui/ui/src/components/Resources/ResourcesMocked.tsx +++ b/ngui/ui/src/components/Resources/ResourcesMocked.tsx @@ -6,7 +6,7 @@ import Resources from "./Resources"; export const data = { filterValues: {}, - requestParams: { [START_DATE_FILTER]: 1637452800, [END_DATE_FILTER]: 1638057599, limit: 5000 } + requestParams: { [START_DATE_FILTER]: 1637452800, [END_DATE_FILTER]: 1638057599, limit: 5000 }, }; const ResourcesMocked = () => { diff --git a/ngui/ui/src/components/Resources/components/MetaTab/BreakdownBySelector.tsx b/ngui/ui/src/components/Resources/components/MetaTab/BreakdownBySelector.tsx index 44b0de7e9..6ad8e19df 100644 --- a/ngui/ui/src/components/Resources/components/MetaTab/BreakdownBySelector.tsx +++ b/ngui/ui/src/components/Resources/components/MetaTab/BreakdownBySelector.tsx @@ -26,7 +26,7 @@ const BreakdownBySelector = ({ value, onChange, metaNames, isLoading = false }: {metaNames .map((name) => ({ value: name, - name: getMetaFormattedName(name) + name: getMetaFormattedName(name), })) .sort((a, b) => a.name.localeCompare(b.name)) .map((breakdown) => ( diff --git a/ngui/ui/src/components/Resources/components/MetaTab/BreakdownChart.tsx b/ngui/ui/src/components/Resources/components/MetaTab/BreakdownChart.tsx index a59b4142b..46bc233ab 100644 --- a/ngui/ui/src/components/Resources/components/MetaTab/BreakdownChart.tsx +++ b/ngui/ui/src/components/Resources/components/MetaTab/BreakdownChart.tsx @@ -19,7 +19,7 @@ const BreakdownChart = ({ field = BREAKDOWN_FIELD_NAME.COST, isPercentBreakdownType, withLegend = false, - isLoading = false + isLoading = false, }: BreakdownChartProps) => { const intl = useIntl(); const theme = useTheme(); @@ -38,7 +38,7 @@ const BreakdownChart = ({ const chartTotals = Object.fromEntries([ ...topKeys.map((key) => [key, breakdownTotals[key] ?? 0]), - ...(withOther ? [[OTHER_CHART_BREAKDOWN_GROUP_NAME, sum(otherKeys.map((key) => breakdownTotals[key] ?? 0))]] : []) + ...(withOther ? [[OTHER_CHART_BREAKDOWN_GROUP_NAME, sum(otherKeys.map((key) => breakdownTotals[key] ?? 0))]] : []), ]); const dailyTotals = Object.fromEntries( @@ -69,7 +69,7 @@ const BreakdownChart = ({ return { date: formatUTC(date, EN_FORMAT_SHORT_YEAR), ...topValues, - [OTHER_CHART_BREAKDOWN_GROUP_NAME]: otherValue + [OTHER_CHART_BREAKDOWN_GROUP_NAME]: otherValue, }; }); @@ -138,7 +138,7 @@ const BreakdownChart = ({ } return intl.formatNumber(chartTotals[legendItemId]); - } + }, }); return ( diff --git a/ngui/ui/src/components/Resources/components/MetaTab/BreakdownTypeSelector.tsx b/ngui/ui/src/components/Resources/components/MetaTab/BreakdownTypeSelector.tsx index a244c218c..d6e1120ef 100644 --- a/ngui/ui/src/components/Resources/components/MetaTab/BreakdownTypeSelector.tsx +++ b/ngui/ui/src/components/Resources/components/MetaTab/BreakdownTypeSelector.tsx @@ -6,20 +6,20 @@ import { BreakdownTypeSelectorProps } from "./types"; const items = [ { value: BREAKDOWN_TYPE.EXPENSES, - name: + name: , }, { value: BREAKDOWN_TYPE.EXPENSES_PERCENT, - name: + name: , }, { value: BREAKDOWN_TYPE.COUNT, - name: + name: , }, { value: BREAKDOWN_TYPE.COUNT_PERCENT, - name: - } + name: , + }, ]; const BreakdownTypeSelector = ({ value, onChange }: BreakdownTypeSelectorProps) => ( diff --git a/ngui/ui/src/components/Resources/components/MetaTab/Heading.tsx b/ngui/ui/src/components/Resources/components/MetaTab/Heading.tsx index 8e54b3aa4..13d32f1cf 100644 --- a/ngui/ui/src/components/Resources/components/MetaTab/Heading.tsx +++ b/ngui/ui/src/components/Resources/components/MetaTab/Heading.tsx @@ -27,7 +27,7 @@ const Heading = ({ applyFilterByCategory, onApplyFilterByCategoryChange, withLegend, - onWithLegendChange + onWithLegendChange, }: HeadingProps) => ( diff --git a/ngui/ui/src/components/Resources/components/MetaTab/MetaTab.tsx b/ngui/ui/src/components/Resources/components/MetaTab/MetaTab.tsx index fb6485fd7..510db7de9 100644 --- a/ngui/ui/src/components/Resources/components/MetaTab/MetaTab.tsx +++ b/ngui/ui/src/components/Resources/components/MetaTab/MetaTab.tsx @@ -7,7 +7,7 @@ import { APPLY_FILTER_BY_CATEGORY_QUERY_PARAMETER_NAME, DAILY_META_BREAKDOWN_BY_PARAMETER_NAME, DAILY_META_BREAKDOWN_TYPE_PARAMETER_NAME, - WITH_LEGEND_QUERY_PARAMETER_NAME + WITH_LEGEND_QUERY_PARAMETER_NAME, } from "urls"; import { isEmptyArray } from "utils/arrays"; import { SPACING_1 } from "utils/layouts"; @@ -24,25 +24,25 @@ const MetaTab = ({ dateRange, requestParams, metaNames = [] }: MetaProps) => { const [breakdownBy, setBreakdownBy] = useSyncQueryParamWithState({ queryParamName: DAILY_META_BREAKDOWN_BY_PARAMETER_NAME, defaultValue: metaNames[0] ?? "", - possibleStates: metaNames + possibleStates: metaNames, }); const [breakdownType, setBreakdownType] = useSyncQueryParamWithState({ queryParamName: DAILY_META_BREAKDOWN_TYPE_PARAMETER_NAME, defaultValue: BREAKDOWN_TYPE.EXPENSES, - possibleStates: Object.values(BREAKDOWN_TYPE) + possibleStates: Object.values(BREAKDOWN_TYPE), }); const [withLegend, setWithLegend] = useSyncQueryParamWithState({ queryParamName: WITH_LEGEND_QUERY_PARAMETER_NAME, possibleStates: [true, false], - defaultValue: true + defaultValue: true, }); const [applyFilterByCategory, setApplyFilterByCategory] = useSyncQueryParamWithState({ queryParamName: APPLY_FILTER_BY_CATEGORY_QUERY_PARAMETER_NAME, possibleStates: [true, false], - defaultValue: false + defaultValue: false, }); const filters = mapAvailableFilterKeys(requestParams); @@ -55,10 +55,10 @@ const MetaTab = ({ dateRange, requestParams, metaNames = [] }: MetaProps) => { meta: applyFilterByCategory ? Array.from(new Set([breakdownBy, ...filters.meta])) : filters.meta, start_date: dateRange.startDate, end_date: dateRange.endDate, - breakdown_by: breakdownBy - } + breakdown_by: breakdownBy, + }, }, - skip: isEmptyArray(metaNames) + skip: isEmptyArray(metaNames), }); const field = @@ -113,7 +113,7 @@ const AvailableMetaFilters = ({ requestParams }: AvailableMetaFiltersProps) => { const dateRange = { startDate: Number(startDateString), - endDate: Number(endDateString) + endDate: Number(endDateString), }; const { data: availableFiltersData, loading: isAvailableFiltersLoading } = useAvailableFiltersQuery({ @@ -122,9 +122,9 @@ const AvailableMetaFilters = ({ requestParams }: AvailableMetaFiltersProps) => { params: { ...mapAvailableFilterKeys(restRequestParams), start_date: dateRange.startDate, - end_date: dateRange.endDate - } - } + end_date: dateRange.endDate, + }, + }, }); const metaNames = diff --git a/ngui/ui/src/components/Resources/components/MetaTab/TotalsTable.tsx b/ngui/ui/src/components/Resources/components/MetaTab/TotalsTable.tsx index b7af007e0..de04e2a5c 100644 --- a/ngui/ui/src/components/Resources/components/MetaTab/TotalsTable.tsx +++ b/ngui/ui/src/components/Resources/components/MetaTab/TotalsTable.tsx @@ -17,7 +17,7 @@ const TotalsTable = ({ startDate, endDate, totals, metaName }: TotalsTableProps) Object.entries(totals).map(([key, datum]) => ({ name: key, count: datum.count, - cost: datum.cost + cost: datum.cost, })), [totals] ); @@ -42,8 +42,8 @@ const TotalsTable = ({ startDate, endDate, totals, metaName }: TotalsTableProps) }, style: { maxWidth: "500px", - overflowWrap: "anywhere" - } + overflowWrap: "anywhere", + }, }, { header: ( @@ -56,7 +56,7 @@ const TotalsTable = ({ startDate, endDate, totals, metaName }: TotalsTableProps) ), accessorKey: "count", - cell: ({ cell }) => + cell: ({ cell }) => , }, { header: ( @@ -66,8 +66,8 @@ const TotalsTable = ({ startDate, endDate, totals, metaName }: TotalsTableProps) ), accessorKey: "cost", cell: ({ cell }) => , - defaultSort: "desc" - } + defaultSort: "desc", + }, ], [startDate, endDate, metaName, intl] ); diff --git a/ngui/ui/src/components/Resources/components/MetaTab/constants.ts b/ngui/ui/src/components/Resources/components/MetaTab/constants.ts index b1fab35f9..ccb85ec02 100644 --- a/ngui/ui/src/components/Resources/components/MetaTab/constants.ts +++ b/ngui/ui/src/components/Resources/components/MetaTab/constants.ts @@ -2,7 +2,7 @@ export const BREAKDOWN_TYPE = Object.freeze({ EXPENSES: "expenses", EXPENSES_PERCENT: "expensesPercentage", COUNT: "count", - COUNT_PERCENT: "countPercentage" + COUNT_PERCENT: "countPercentage", }); export const OTHER_CHART_BREAKDOWN_GROUP_NAME = "__other__"; @@ -11,5 +11,5 @@ export const OTHER_THRESHOLD = 10; export const BREAKDOWN_FIELD_NAME = Object.freeze({ COST: "cost", - COUNT: "count" + COUNT: "count", }); diff --git a/ngui/ui/src/components/Resources/containers/CleanExpensesBreakdownContainer.tsx b/ngui/ui/src/components/Resources/containers/CleanExpensesBreakdownContainer.tsx index 0e8ce0a55..5b0ecb9d7 100644 --- a/ngui/ui/src/components/Resources/containers/CleanExpensesBreakdownContainer.tsx +++ b/ngui/ui/src/components/Resources/containers/CleanExpensesBreakdownContainer.tsx @@ -25,10 +25,10 @@ const LimitWarning = ({ limit }) => { messageId="rowsLimitWarning" messageValues={{ entities: intl.formatMessage({ id: "resources" }).toLocaleLowerCase(), - count: limit + count: limit, }} sx={{ - mb: 1 + mb: 1, }} /> ); @@ -48,7 +48,7 @@ const CleanExpensesBreakdownContainer = ({ requestParams }) => { url: `${REST_API_URL}/organizations/${organizationId}/clean_expenses?${stringifySearchParams( mapCleanExpensesRequestParamsToApiParams(params) )}`, - fallbackFilename: `resources_list.${format}` + fallbackFilename: `resources_list.${format}`, }); }; diff --git a/ngui/ui/src/components/Resources/containers/ResourceCountBreakdownContainer.tsx b/ngui/ui/src/components/Resources/containers/ResourceCountBreakdownContainer.tsx index b64cb3d1e..4528ffda8 100644 --- a/ngui/ui/src/components/Resources/containers/ResourceCountBreakdownContainer.tsx +++ b/ngui/ui/src/components/Resources/containers/ResourceCountBreakdownContainer.tsx @@ -7,7 +7,7 @@ const ResourceCountBreakdownContainer = ({ requestParams }) => { const { useGet } = ResourcesCountBreakdownService(); const [{ value: breakdownByValue }, onBreakdownByChange] = useBreakdownBy({ - queryParamName: DAILY_RESOURCE_COUNT_BREAKDOWN_BY_PARAMETER_NAME + queryParamName: DAILY_RESOURCE_COUNT_BREAKDOWN_BY_PARAMETER_NAME, }); const { isGetResourceCountBreakdownLoading, data } = useGet(breakdownByValue, requestParams); diff --git a/ngui/ui/src/components/Resources/containers/TagsBreakdownContainer.tsx b/ngui/ui/src/components/Resources/containers/TagsBreakdownContainer.tsx index ce986b5e2..ae724f542 100644 --- a/ngui/ui/src/components/Resources/containers/TagsBreakdownContainer.tsx +++ b/ngui/ui/src/components/Resources/containers/TagsBreakdownContainer.tsx @@ -18,7 +18,7 @@ const useSelectedTagSetting = () => { return { selectedTag, - updateSelectedTag + updateSelectedTag, }; }; @@ -29,12 +29,12 @@ const TagsBreakdownContainer = ({ requestParams }) => { const { isGetTagsBreakdownLoading, - data: { breakdown: tagsBreakdown } + data: { breakdown: tagsBreakdown }, } = useTagsBreakdownGet(requestParams); const resourceCountRequestParams = useMemo( () => ({ ...requestParams, - tag: selectedTag === null ? EMPTY_UUID : selectedTag + tag: selectedTag === null ? EMPTY_UUID : selectedTag, }), [requestParams, selectedTag] ); @@ -42,7 +42,7 @@ const TagsBreakdownContainer = ({ requestParams }) => { const { isGetResourceCountBreakdownLoading, - data: { breakdown } + data: { breakdown }, } = useResourcesCountBreakdownGet(undefined, resourceCountRequestParams); return ( @@ -55,7 +55,7 @@ const TagsBreakdownContainer = ({ requestParams }) => { updateSelectedTag={updateSelectedTag} appliedRange={{ startSecondsTimestamp: Number(requestParams.startDate), - endSecondsTimestamp: Number(requestParams.endDate) + endSecondsTimestamp: Number(requestParams.endDate), }} /> ); diff --git a/ngui/ui/src/components/Resources/filterConfigs.tsx b/ngui/ui/src/components/Resources/filterConfigs.tsx index 8e0d3bbb8..bcff7a63c 100644 --- a/ngui/ui/src/components/Resources/filterConfigs.tsx +++ b/ngui/ui/src/components/Resources/filterConfigs.tsx @@ -26,7 +26,7 @@ import { OPTSCALE_RESOURCE_TYPES, ANY_NETWORK_TRAFFIC_LOCATION, CLOUD_ACCOUNT_TYPES_LIST, - POOL_TYPES_LIST + POOL_TYPES_LIST, } from "utils/constants"; import { EN_FORMAT, formatUTC, millisecondsToSeconds, moveDateToUTC, secondsToMilliseconds } from "utils/datetime"; import { getMetaFormattedName } from "utils/metadata"; @@ -52,12 +52,12 @@ const getRangeAppliedFilterValuesFromSearchParams = (fromParameterName, toParame const range = { from: Number(from), - to: Number(to) + to: Number(to), }; return { from: isNumber(range.from) ? secondsToMilliseconds(range.from) : undefined, - to: isNumber(range.to) ? secondsToMilliseconds(range.to) : undefined + to: isNumber(range.to) ? secondsToMilliseconds(range.to) : undefined, }; }; @@ -82,10 +82,10 @@ export const FILTER_CONFIGS = { }, searchPredicate: (item, query) => item.name.toLowerCase().includes(query.toLowerCase()), getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("cloudAccountId") + values: getSelectionAppliedValuesFromSearchParams("cloudAccountId"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { @@ -94,11 +94,11 @@ export const FILTER_CONFIGS = { ?.filter((item) => item !== null) .map((item) => ({ ...item, - value: item.id + value: item.id, })) ?? [], getValue: (item) => item.id, toApi: (appliedFilter) => ({ - cloudAccountId: appliedFilter.values + cloudAccountId: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => filterValues.filter((filterValue) => { @@ -107,7 +107,7 @@ export const FILTER_CONFIGS = { } return appliedFilters.includes(filterValue.id); - }) + }), }, schema: { filterValues: { @@ -120,28 +120,32 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { id: { - type: "string" + type: "string", }, name: { - type: "string" + type: "string", }, type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + account_id: { + type: "string", + nullable: true, + }, + }, + }, + }, }, appliedFilter: { cloudAccountId: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, poolId: { id: "poolId", @@ -183,43 +187,45 @@ export const FILTER_CONFIGS = { return { values: values.filter((value) => isPoolIdWithSubPools(value)).map((value) => value.slice(0, -1)), settings: { - withSubpools: true - } + withSubpools: true, + }, }; } return { values: values, settings: { - withSubpools: false - } + withSubpools: false, + }, }; }, getDefaultValue: () => ({ values: [], settings: { - withSubpools: false - } + withSubpools: false, + }, }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { getItems: (pools) => pools?.map((item) => ({ ...item, - value: item.id + value: item.id, })) ?? [], getValue: (item) => item.id, toApi: (appliedFilter) => ({ - poolId: appliedFilter.settings?.withSubpools ? appliedFilter.values.map((poolId) => `${poolId}+`) : appliedFilter.values + poolId: appliedFilter.settings?.withSubpools + ? appliedFilter.values.map((poolId) => `${poolId}+`) + : appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(filterValue.id)) + filterValues.filter((filterValue) => appliedFilters.includes(filterValue.id)), }, settings: [ { name: "withSubpools", - label: - } + label: , + }, ], schema: { filterValues: { @@ -231,28 +237,28 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { id: { - type: "string" + type: "string", }, name: { - type: "string" + type: "string", }, purpose: { type: "string", - enum: POOL_TYPES_LIST - } - } - } - } + enum: POOL_TYPES_LIST, + }, + }, + }, + }, }, appliedFilter: { poolId: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, ownerId: { id: "ownerId", @@ -274,24 +280,24 @@ export const FILTER_CONFIGS = { return item.name; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("ownerId") + values: getSelectionAppliedValuesFromSearchParams("ownerId"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { getItems: (owners) => owners?.map((item) => ({ ...item, - value: item.id + value: item.id, })) ?? [], getValue: (item) => item.id, toApi: (appliedFilter) => ({ - ownerId: appliedFilter.values + ownerId: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(filterValue.id)) + filterValues.filter((filterValue) => appliedFilters.includes(filterValue.id)), }, schema: { filterValues: { @@ -303,24 +309,24 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { id: { - type: "string" + type: "string", }, name: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, appliedFilter: { ownerId: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, region: { id: "region", @@ -357,10 +363,10 @@ export const FILTER_CONFIGS = { return stringify ? item.name : ; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("region") + values: getSelectionAppliedValuesFromSearchParams("region"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { @@ -369,17 +375,17 @@ export const FILTER_CONFIGS = { if (item === null) { return { name: intl.formatMessage({ id: "notSet" }), - value: EMPTY_UUID + value: EMPTY_UUID, }; } return { ...item, - value: item.name + value: item.name, }; }) ?? [], getValue: (item) => (item === null ? EMPTY_UUID : item.name), toApi: (appliedFilter) => ({ - region: appliedFilter.values + region: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => filterValues.filter((filterValue) => { @@ -388,7 +394,7 @@ export const FILTER_CONFIGS = { } return appliedFilters.includes(filterValue.name); - }) + }), }, schema: { filterValues: { @@ -401,25 +407,25 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, + }, + }, }, appliedFilter: { region: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, serviceName: { id: "serviceName", @@ -456,10 +462,10 @@ export const FILTER_CONFIGS = { return stringify ? item.name : ; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("serviceName") + values: getSelectionAppliedValuesFromSearchParams("serviceName"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { @@ -468,17 +474,17 @@ export const FILTER_CONFIGS = { if (item === null) { return { name: intl.formatMessage({ id: "notSet" }), - value: EMPTY_UUID + value: EMPTY_UUID, }; } return { ...item, - value: item.name + value: item.name, }; }) ?? [], getValue: (item) => (item === null ? EMPTY_UUID : item.name), toApi: (appliedFilter) => ({ - serviceName: appliedFilter.values + serviceName: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => filterValues.filter((filterValue) => { @@ -487,7 +493,7 @@ export const FILTER_CONFIGS = { } return appliedFilters.includes(filterValue.name); - }) + }), }, schema: { filterValues: { @@ -500,25 +506,25 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, + }, + }, }, appliedFilter: { serviceName: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, resourceType: { id: "resourceType", @@ -532,7 +538,7 @@ export const FILTER_CONFIGS = { resourceInfo={{ resourceType: item.name, clusterTypeId: item.type === OPTSCALE_RESOURCE_TYPES.CLUSTER, - isEnvironment: item.type === OPTSCALE_RESOURCE_TYPES.ENVIRONMENT + isEnvironment: item.type === OPTSCALE_RESOURCE_TYPES.ENVIRONMENT, }} /> ), @@ -554,30 +560,30 @@ export const FILTER_CONFIGS = { resourceInfo={{ resourceType: item.name, clusterTypeId: item.type === OPTSCALE_RESOURCE_TYPES.CLUSTER, - isEnvironment: item.type === OPTSCALE_RESOURCE_TYPES.ENVIRONMENT + isEnvironment: item.type === OPTSCALE_RESOURCE_TYPES.ENVIRONMENT, }} /> ); }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("resourceType") + values: getSelectionAppliedValuesFromSearchParams("resourceType"), }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { getItems: (resourceTypes) => resourceTypes?.map((item) => ({ ...item, - value: `${item.name}:${item.type}` + value: `${item.name}:${item.type}`, })) ?? [], getValue: (item) => `${item.name}:${item.type}`, toApi: (appliedFilter) => ({ - resourceType: appliedFilter.values + resourceType: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(`${filterValue.name}:${filterValue.type}`)) + filterValues.filter((filterValue) => appliedFilters.includes(`${filterValue.name}:${filterValue.type}`)), }, getDefaultValue: () => ({ - values: [] + values: [], }), schema: { filterValues: { @@ -589,25 +595,25 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, type: { type: "string", - enum: Object.values(OPTSCALE_RESOURCE_TYPES) - } - } - } - } + enum: Object.values(OPTSCALE_RESOURCE_TYPES), + }, + }, + }, + }, }, appliedFilter: { resourceType: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, active: { id: "active", @@ -629,43 +635,43 @@ export const FILTER_CONFIGS = { return item ? intl.formatMessage({ id: "active" }) : intl.formatMessage({ id: "billingOnly" }); }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("active") + values: getSelectionAppliedValuesFromSearchParams("active"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { getItems: (active) => active?.map((value) => ({ name: value ? intl.formatMessage({ id: "active" }) : intl.formatMessage({ id: "billingOnly" }), - value: value + value: value, })) ?? [], getValue: (item) => item, toApi: (appliedFilter) => ({ - active: appliedFilter.values + active: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(filterValue)) + filterValues.filter((filterValue) => appliedFilters.includes(filterValue)), }, schema: { filterValues: { active: { type: "array", items: { - type: "boolean" - } - } + type: "boolean", + }, + }, }, appliedFilter: { active: { type: "array", items: { - type: "boolean" - } - } - } - } + type: "boolean", + }, + }, + }, + }, }, recommendations: { id: "recommendations", @@ -687,10 +693,10 @@ export const FILTER_CONFIGS = { return item ? intl.formatMessage({ id: "withRecommendations" }) : intl.formatMessage({ id: "withoutRecommendations" }); }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("recommendations") + values: getSelectionAppliedValuesFromSearchParams("recommendations"), }), getDefaultValue: () => ({ - values: [] + values: [], }), transformers: { getItems: (recommendations) => @@ -698,14 +704,14 @@ export const FILTER_CONFIGS = { name: value ? intl.formatMessage({ id: "withRecommendations" }) : intl.formatMessage({ id: "withoutRecommendations" }), - value: value + value: value, })) ?? [], getValue: (item) => item, toApi: (appliedFilter) => ({ - recommendations: appliedFilter.values + recommendations: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(filterValue)) + filterValues.filter((filterValue) => appliedFilters.includes(filterValue)), }, isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), schema: { @@ -713,19 +719,19 @@ export const FILTER_CONFIGS = { recommendations: { type: "array", items: { - type: "boolean" - } - } + type: "boolean", + }, + }, }, appliedFilter: { recommendations: { type: "array", items: { - type: "boolean" - } - } - } - } + type: "boolean", + }, + }, + }, + }, }, constraintViolated: { id: "constraintViolated", @@ -747,43 +753,43 @@ export const FILTER_CONFIGS = { return item ? intl.formatMessage({ id: "violated" }) : intl.formatMessage({ id: "notViolated" }); }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("constraintViolated") + values: getSelectionAppliedValuesFromSearchParams("constraintViolated"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { getItems: (constraintViolated) => constraintViolated?.map((value) => ({ name: value ? intl.formatMessage({ id: "violated" }) : intl.formatMessage({ id: "notViolated" }), - value: value + value: value, })) ?? [], getValue: (item) => item, toApi: (appliedFilter) => ({ - constraintViolated: appliedFilter.values + constraintViolated: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(filterValue)) + filterValues.filter((filterValue) => appliedFilters.includes(filterValue)), }, schema: { filterValues: { constraint_violated: { type: "array", items: { - type: "boolean" - } - } + type: "boolean", + }, + }, }, appliedFilter: { constraintViolated: { type: "array", items: { - type: "boolean" - } - } - } - } + type: "boolean", + }, + }, + }, + }, }, firstSeen: { id: "firstSeen", @@ -813,33 +819,33 @@ export const FILTER_CONFIGS = { getValuesFromSearchParams: () => getRangeAppliedFilterValuesFromSearchParams("firstSeenFrom", "firstSeenTo"), getDefaultValue: () => ({ from: undefined, - to: undefined + to: undefined, }), isApplied: (appliedFilter) => !!(appliedFilter.from || appliedFilter.to), transformers: { getAppliedRange: (range) => ({ from: range.from ? moveDateToUTC(range.from) : undefined, - to: range.to ? moveDateToUTC(range.to) : undefined + to: range.to ? moveDateToUTC(range.to) : undefined, }), getValue: (item) => ({ from: item.from, - to: item.to + to: item.to, }), toApi: (appliedFilter) => ({ firstSeenFrom: appliedFilter.from ? millisecondsToSeconds(appliedFilter.from) : undefined, - firstSeenTo: appliedFilter.to ? millisecondsToSeconds(appliedFilter.to) : undefined - }) + firstSeenTo: appliedFilter.to ? millisecondsToSeconds(appliedFilter.to) : undefined, + }), }, schema: { appliedFilter: { firstSeenFrom: { - type: "number" + type: "number", }, firstSeenTo: { - type: "number" - } - } - } + type: "number", + }, + }, + }, }, lastSeen: { id: "lastSeen", @@ -869,33 +875,33 @@ export const FILTER_CONFIGS = { getValuesFromSearchParams: () => getRangeAppliedFilterValuesFromSearchParams("lastSeenFrom", "lastSeenTo"), getDefaultValue: () => ({ from: undefined, - to: undefined + to: undefined, }), isApplied: (appliedFilter) => !!(appliedFilter.from || appliedFilter.to), transformers: { getAppliedRange: (range) => ({ from: range.from ? moveDateToUTC(range.from) : undefined, - to: range.to ? moveDateToUTC(range.to) : undefined + to: range.to ? moveDateToUTC(range.to) : undefined, }), getValue: (item) => ({ from: item.from, - to: item.to + to: item.to, }), toApi: (appliedFilter) => ({ lastSeenFrom: appliedFilter.from ? millisecondsToSeconds(appliedFilter.from) : undefined, - lastSeenTo: appliedFilter.to ? millisecondsToSeconds(appliedFilter.to) : undefined - }) + lastSeenTo: appliedFilter.to ? millisecondsToSeconds(appliedFilter.to) : undefined, + }), }, schema: { appliedFilter: { lastSeenFrom: { - type: "number" + type: "number", }, lastSeenTo: { - type: "number" - } - } - } + type: "number", + }, + }, + }, }, tag: { id: "tag", @@ -917,43 +923,43 @@ export const FILTER_CONFIGS = { return item; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("tag") + values: getSelectionAppliedValuesFromSearchParams("tag"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { getItems: (tags) => tags?.map((tag) => ({ name: tag, - value: tag + value: tag, })) ?? [], getValue: (item) => item, toApi: (appliedFilter) => ({ - tag: appliedFilter.values + tag: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(filterValue)) + filterValues.filter((filterValue) => appliedFilters.includes(filterValue)), }, schema: { filterValues: { tag: { type: "array", items: { - type: "string" - } - } + type: "string", + }, + }, }, appliedFilter: { tag: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, meta: { id: "meta", @@ -975,43 +981,43 @@ export const FILTER_CONFIGS = { return getMetaFormattedName(item); }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("meta") + values: getSelectionAppliedValuesFromSearchParams("meta"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { getItems: (metaKeys) => metaKeys?.map((meta) => ({ name: meta, - value: meta + value: meta, })) ?? [], getValue: (item) => item, toApi: (appliedFilter) => ({ - meta: appliedFilter.values + meta: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(filterValue)) + filterValues.filter((filterValue) => appliedFilters.includes(filterValue)), }, schema: { filterValues: { meta: { type: "array", items: { - type: "string" - } - } + type: "string", + }, + }, }, appliedFilter: { meta: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, withoutTag: { id: "withoutTag", @@ -1033,43 +1039,43 @@ export const FILTER_CONFIGS = { return item; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("withoutTag") + values: getSelectionAppliedValuesFromSearchParams("withoutTag"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { getItems: (withoutTags) => withoutTags?.map((tag) => ({ name: tag, - value: tag + value: tag, })) ?? [], getValue: (item) => item, toApi: (appliedFilter) => ({ - withoutTag: appliedFilter.values + withoutTag: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => - filterValues.filter((filterValue) => appliedFilters.includes(filterValue)) + filterValues.filter((filterValue) => appliedFilters.includes(filterValue)), }, schema: { filterValues: { without_tag: { type: "array", items: { - type: "string" - } - } + type: "string", + }, + }, }, appliedFilter: { withoutTag: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, networkTrafficFrom: { id: "networkTrafficFrom", @@ -1110,10 +1116,10 @@ export const FILTER_CONFIGS = { return ; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("networkTrafficFrom") + values: getSelectionAppliedValuesFromSearchParams("networkTrafficFrom"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { @@ -1122,19 +1128,19 @@ export const FILTER_CONFIGS = { if (item === ANY_NETWORK_TRAFFIC_LOCATION) { return { name: intl.formatMessage({ id: "any" }), - value: item + value: item, }; } return { name: item.name, value: `${item.name}:${item.cloud_type}`, - cloud_type: item.cloud_type + cloud_type: item.cloud_type, }; }) ?? [], getValue: (item) => `${item.name}:${item.cloud_type}`, toApi: (appliedFilter) => ({ - networkTrafficFrom: appliedFilter.values + networkTrafficFrom: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => filterValues.filter((filterValue) => { @@ -1143,7 +1149,7 @@ export const FILTER_CONFIGS = { } return appliedFilters.includes(`${filterValue.name}:${filterValue.cloud_type}`); - }) + }), }, schema: { filterValues: { @@ -1157,31 +1163,31 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }, { type: "string", - const: "ANY" - } - ] - } - } + const: "ANY", + }, + ], + }, + }, }, appliedFilter: { networkTrafficFrom: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, networkTrafficTo: { id: "networkTrafficTo", @@ -1222,10 +1228,10 @@ export const FILTER_CONFIGS = { return ; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("networkTrafficTo") + values: getSelectionAppliedValuesFromSearchParams("networkTrafficTo"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { @@ -1234,18 +1240,18 @@ export const FILTER_CONFIGS = { if (item === ANY_NETWORK_TRAFFIC_LOCATION) { return { name: intl.formatMessage({ id: "any" }), - value: item + value: item, }; } return { name: item.name, value: `${item.name}:${item.cloud_type}`, - cloud_type: item.cloud_type + cloud_type: item.cloud_type, }; }) ?? [], getValue: (item) => `${item.name}:${item.cloud_type}`, toApi: (appliedFilter) => ({ - networkTrafficTo: appliedFilter.values + networkTrafficTo: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => filterValues.filter((filterValue) => { @@ -1254,7 +1260,7 @@ export const FILTER_CONFIGS = { } return appliedFilters.includes(`${filterValue.name}:${filterValue.cloud_type}`); - }) + }), }, schema: { filterValues: { @@ -1268,31 +1274,31 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, }, { type: "string", - const: "ANY" - } - ] - } - } + const: "ANY", + }, + ], + }, + }, }, appliedFilter: { networkTrafficTo: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, k8sNode: { id: "k8sNode", @@ -1328,10 +1334,10 @@ export const FILTER_CONFIGS = { return ; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("k8sNode") + values: getSelectionAppliedValuesFromSearchParams("k8sNode"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { @@ -1340,18 +1346,18 @@ export const FILTER_CONFIGS = { if (item === null) { return { name: intl.formatMessage({ id: "notSet" }), - value: EMPTY_UUID + value: EMPTY_UUID, }; } return { name: item.name, value: item.name, - cloud_type: item.cloud_type + cloud_type: item.cloud_type, }; }) ?? [], getValue: (item) => (item === null ? EMPTY_UUID : item.name), toApi: (appliedFilter) => ({ - k8sNode: appliedFilter.values + k8sNode: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => filterValues.filter((filterValue) => { @@ -1360,7 +1366,7 @@ export const FILTER_CONFIGS = { } return appliedFilters.includes(filterValue.name); - }) + }), }, schema: { filterValues: { @@ -1373,25 +1379,25 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, + }, + }, }, appliedFilter: { k8sNode: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, k8sService: { id: "k8sService", @@ -1427,10 +1433,10 @@ export const FILTER_CONFIGS = { return ; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("k8sService") + values: getSelectionAppliedValuesFromSearchParams("k8sService"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { @@ -1439,18 +1445,18 @@ export const FILTER_CONFIGS = { if (item === null) { return { name: intl.formatMessage({ id: "notSet" }), - value: EMPTY_UUID + value: EMPTY_UUID, }; } return { name: item.name, value: item.name, - cloud_type: item.cloud_type + cloud_type: item.cloud_type, }; }) ?? [], getValue: (item) => (item === null ? EMPTY_UUID : item.name), toApi: (appliedFilter) => ({ - k8sService: appliedFilter.values + k8sService: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => filterValues.filter((filterValue) => { @@ -1459,7 +1465,7 @@ export const FILTER_CONFIGS = { } return appliedFilters.includes(filterValue.name); - }) + }), }, schema: { filterValues: { @@ -1472,25 +1478,25 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, + }, + }, }, appliedFilter: { k8sService: { type: "array", items: { - type: "string" - } - } - } - } + type: "string", + }, + }, + }, + }, }, k8sNamespace: { id: "k8sNamespace", @@ -1526,10 +1532,10 @@ export const FILTER_CONFIGS = { return ; }, getValuesFromSearchParams: () => ({ - values: getSelectionAppliedValuesFromSearchParams("k8sNamespace") + values: getSelectionAppliedValuesFromSearchParams("k8sNamespace"), }), getDefaultValue: () => ({ - values: [] + values: [], }), isApplied: (appliedFilter) => !isEmptyArray(appliedFilter.values), transformers: { @@ -1538,18 +1544,18 @@ export const FILTER_CONFIGS = { if (item === null) { return { name: intl.formatMessage({ id: "notSet" }), - value: EMPTY_UUID + value: EMPTY_UUID, }; } return { name: item.name, value: item.name, - cloud_type: item.cloud_type + cloud_type: item.cloud_type, }; }) ?? [], getValue: (item) => (item === null ? EMPTY_UUID : item.name), toApi: (appliedFilter) => ({ - k8sNamespace: appliedFilter.values + k8sNamespace: appliedFilter.values, }), filterFilterValuesByAppliedFilters: (filterValues, appliedFilters) => filterValues.filter((filterValue) => { @@ -1558,7 +1564,7 @@ export const FILTER_CONFIGS = { } return appliedFilters.includes(filterValue.name); - }) + }), }, schema: { filterValues: { @@ -1571,24 +1577,24 @@ export const FILTER_CONFIGS = { additionalProperties: false, properties: { name: { - type: "string" + type: "string", }, cloud_type: { type: "string", - enum: CLOUD_ACCOUNT_TYPES_LIST - } - } - } - } + enum: CLOUD_ACCOUNT_TYPES_LIST, + }, + }, + }, + }, }, appliedFilter: { k8sNamespace: { type: "array", items: { - type: "string" - } - } - } - } - } + type: "string", + }, + }, + }, + }, + }, }; diff --git a/ngui/ui/src/components/ResourcesPerspective/ResourcesPerspectiveValuesDescription.tsx b/ngui/ui/src/components/ResourcesPerspective/ResourcesPerspectiveValuesDescription.tsx index 3c6d79f7d..2ad3b7c16 100644 --- a/ngui/ui/src/components/ResourcesPerspective/ResourcesPerspectiveValuesDescription.tsx +++ b/ngui/ui/src/components/ResourcesPerspective/ResourcesPerspectiveValuesDescription.tsx @@ -11,7 +11,7 @@ import { isEmptyObject } from "utils/objects"; const getBreakdownByRenderData = (breakdownBy) => ({ controlName: "categorizeBy", - renderValue: () => breakdowns.find((breakdown) => breakdown.value === breakdownBy)?.name ?? null + renderValue: () => breakdowns.find((breakdown) => breakdown.value === breakdownBy)?.name ?? null, }); const getGroupByRenderData = (groupBy) => ({ @@ -24,20 +24,20 @@ const getGroupByRenderData = (groupBy) => ({ return ; } return ; - } + }, }); const getBreakdownStateValueRenderer = (name) => ({ breakdownBy: getBreakdownByRenderData, - groupBy: getGroupByRenderData + groupBy: getGroupByRenderData, })[name] ?? (() => null); const ResourcesPerspectiveValuesDescription = ({ breakdownBy, breakdownData = {}, perspectiveFilterValues = {}, - perspectiveAppliedFilters = {} + perspectiveAppliedFilters = {}, }) => ( } /> diff --git a/ngui/ui/src/components/ResourcesPerspectiveValuesDescription/ResourcesPerspectiveValuesDescription.tsx b/ngui/ui/src/components/ResourcesPerspectiveValuesDescription/ResourcesPerspectiveValuesDescription.tsx index bc67ab553..99fa789fe 100644 --- a/ngui/ui/src/components/ResourcesPerspectiveValuesDescription/ResourcesPerspectiveValuesDescription.tsx +++ b/ngui/ui/src/components/ResourcesPerspectiveValuesDescription/ResourcesPerspectiveValuesDescription.tsx @@ -13,13 +13,13 @@ import { MetaBreakdownData, ResourceCountBreakdownData, RenderDataItem, - ExpensesBreakdownData + ExpensesBreakdownData, } from "./types"; const getExpensesBreakdownByRenderData = ({ breakdownBy, groupBy }: ExpensesBreakdownData): RenderDataItem[] => [ { controlName: "categorizeBy", - renderValue: () => breakdowns.find((breakdown) => breakdown.value === breakdownBy)?.name ?? null + renderValue: () => breakdowns.find((breakdown) => breakdown.value === breakdownBy)?.name ?? null, }, { controlName: "groupBy", @@ -31,22 +31,22 @@ const getExpensesBreakdownByRenderData = ({ breakdownBy, groupBy }: ExpensesBrea return ; } return ; - } - } + }, + }, ]; const getResourceCountBreakdownByRenderData = ({ breakdownBy }: ResourceCountBreakdownData): RenderDataItem[] => [ { controlName: "categorizeBy", - renderValue: () => breakdowns.find((breakdown) => breakdown.value === breakdownBy)?.name ?? null - } + renderValue: () => breakdowns.find((breakdown) => breakdown.value === breakdownBy)?.name ?? null, + }, ]; const getMetaBreakdownByRenderData = ({ breakdownBy }: MetaBreakdownData): RenderDataItem[] => [ { controlName: "categorizeBy", - renderValue: () => getMetaFormattedName(breakdownBy) - } + renderValue: () => getMetaFormattedName(breakdownBy), + }, ]; const getBreakdownStateValueRendererByType = (name: string): ((data: BreakdownData) => RenderDataItem[]) => @@ -54,14 +54,14 @@ const getBreakdownStateValueRendererByType = (name: string): ((data: BreakdownDa [CLEAN_EXPENSES_BREAKDOWN_TYPES.EXPENSES]: getExpensesBreakdownByRenderData, [CLEAN_EXPENSES_BREAKDOWN_TYPES.RESOURCE_COUNT]: getResourceCountBreakdownByRenderData, [CLEAN_EXPENSES_BREAKDOWN_TYPES.TAGS]: () => [], - [CLEAN_EXPENSES_BREAKDOWN_TYPES.META]: getMetaBreakdownByRenderData + [CLEAN_EXPENSES_BREAKDOWN_TYPES.META]: getMetaBreakdownByRenderData, })[name] ?? (() => []); const ResourcesPerspectiveValuesDescription = ({ breakdownBy, breakdownData, perspectiveFilterValues = {}, - perspectiveAppliedFilters = {} + perspectiveAppliedFilters = {}, }: ResourcesPerspectiveValuesDescriptionProps) => ( } /> diff --git a/ngui/ui/src/components/ResourcesPerspectives/ResourcesPerspectives.tsx b/ngui/ui/src/components/ResourcesPerspectives/ResourcesPerspectives.tsx index b4005a43a..6f0f0d227 100644 --- a/ngui/ui/src/components/ResourcesPerspectives/ResourcesPerspectives.tsx +++ b/ngui/ui/src/components/ResourcesPerspectives/ResourcesPerspectives.tsx @@ -66,13 +66,13 @@ const ResourcesPerspectives = () => { ) : ( {original.name} - ) + ), }, { header: ( @@ -80,7 +80,7 @@ const ResourcesPerspectives = () => { ), - accessorKey: "breakdownBy" + accessorKey: "breakdownBy", }, { header: ( @@ -88,7 +88,7 @@ const ResourcesPerspectives = () => { ), - accessorKey: "categorizeBy" + accessorKey: "categorizeBy", }, { header: ( @@ -107,7 +107,7 @@ const ResourcesPerspectives = () => { return ; } return ; - } + }, }, { header: ( @@ -127,7 +127,7 @@ const ResourcesPerspectives = () => { value={displayedValue} /> )); - } + }, }, ...(isAllowedToDeletePerspectives ? [ @@ -151,14 +151,14 @@ const ResourcesPerspectives = () => { dataTestId: `btn_delete_perspective_${index}`, action: () => { openSideModal(DeletePerspectiveSideModal, { perspectiveName: original.name }); - } - } + }, + }, ]} /> - ) - } + ), + }, ] - : []) + : []), ], [isAllowedToDeletePerspectives, openSideModal] ); @@ -182,8 +182,8 @@ const ResourcesPerspectives = () => { { breakdownBy, breakdownData: { groupBy, breakdownBy: categorizeBy }, - filters: { filterValues, appliedFilters } - } + filters: { filterValues, appliedFilters }, + }, ]) => { const perspectiveFilters = Object.values(FILTER_CONFIGS).flatMap((filterConfig) => { if (filterConfig.type === FILTER_TYPE.SELECTION) { @@ -201,7 +201,7 @@ const ResourcesPerspectives = () => { appliedFilterValue, filterValues[filterConfig.apiName], { stringify: true } - ) + ), })); } if (filterConfig.type === FILTER_TYPE.RANGE) { @@ -217,14 +217,14 @@ const ResourcesPerspectives = () => { displayedName: filterConfig.label, displayedValue: filterConfig.renderPerspectiveItem({ from, - to + to, }), displayedNameString: filterConfig.labelString, displayedValueString: filterConfig.renderPerspectiveItem({ from, - to - }) - } + to, + }), + }, ]; } return []; @@ -249,7 +249,7 @@ const ResourcesPerspectives = () => { breakdownBy: intl.formatMessage({ id: breakdownBy }), categorizeBy: categorizeBy ? getCategorizeBy() : undefined, groupBy, - groupByString: groupBy ? getGroupByString(groupBy) : undefined + groupByString: groupBy ? getGroupByString(groupBy) : undefined, }; } ); @@ -258,7 +258,7 @@ const ResourcesPerspectives = () => { const invalidPerspectivesToTableData = () => Object.keys(invalidPerspectives).map((perspectiveName) => ({ name: perspectiveName, - isInvalid: true + isInvalid: true, })); return [...validPerspectivesToTableData(), ...invalidPerspectivesToTableData()]; @@ -270,7 +270,7 @@ const ResourcesPerspectives = () => { columns={columns} data={tableData} localization={{ - emptyMessageId: "noPerspectives" + emptyMessageId: "noPerspectives", }} withSearch pageSize={50} @@ -278,7 +278,7 @@ const ResourcesPerspectives = () => { diff --git a/ngui/ui/src/components/RiSpCoverage/RiSpCoverage.tsx b/ngui/ui/src/components/RiSpCoverage/RiSpCoverage.tsx index 5d9c14911..3f1bf4baf 100644 --- a/ngui/ui/src/components/RiSpCoverage/RiSpCoverage.tsx +++ b/ngui/ui/src/components/RiSpCoverage/RiSpCoverage.tsx @@ -33,13 +33,13 @@ const DescriptionMarker = ({ label, color }) => { */} {" "} {firstLabelWord} @@ -63,7 +63,7 @@ const UsageDescription = () => ( uncoveredUsageMarker: ([label]) => ( ), - br:
    + br:
    , }} /> @@ -109,7 +109,7 @@ const ExpensesDescription = () => ( uncoveredExpensesMarker: ([label]) => ( ), - br:
    + br:
    , }} /> @@ -125,7 +125,7 @@ const RiSpCoverage = ({ usageBreakdown, expensesBreakdown, isLoadingProps }) => ); diff --git a/ngui/ui/src/components/RiSpCoverageBarChart/RiSpCoverageBarChart.tsx b/ngui/ui/src/components/RiSpCoverageBarChart/RiSpCoverageBarChart.tsx index e802ce936..ca6141bce 100644 --- a/ngui/ui/src/components/RiSpCoverageBarChart/RiSpCoverageBarChart.tsx +++ b/ngui/ui/src/components/RiSpCoverageBarChart/RiSpCoverageBarChart.tsx @@ -25,14 +25,14 @@ const getChartData = (breakdown) => ...{ sp_usage_hrs: spUsageHrsAggregated, ri_usage_hrs: riUsageHrsAggregated, - total_usage_hrs: totalUsageHrsAggregated - } + total_usage_hrs: totalUsageHrsAggregated, + }, }; }, { ri_usage_hrs: 0, sp_usage_hrs: 0, - total_usage_hrs: 0 + total_usage_hrs: 0, } ); @@ -48,7 +48,7 @@ const getChartData = (breakdown) => ri_usage_percent: riUsagePercent, // intPercentXofY works not as expected when working with floating numbers // When is it essential to have 100% as a sum of all the addends - uncovered_usage_percent: 1 - spUsagePercent - riUsagePercent + uncovered_usage_percent: 1 - spUsagePercent - riUsagePercent, }; return [...data, finalItem]; @@ -59,13 +59,13 @@ const getTooltipItem = (id, paletteColorIndex, value) => ({ keyText: ( } textFirst={false} /> ), - value: + value: , }); export const RI_SP_COVERAGE_COLOR_INDEXES = { SP_USAGE: 0, RI_USAGE: 1, - UNCOVERED_USAGE: 2 + UNCOVERED_USAGE: 2, }; const getRenderTooltipBody = (sectionData) => { @@ -74,14 +74,14 @@ const getRenderTooltipBody = (sectionData) => { date, sp_usage_percent: spUsagePercent = 0, ri_usage_percent: riUsagePercent = 0, - uncovered_usage_percent: uncoveredUsagePercent = 0 - } + uncovered_usage_percent: uncoveredUsagePercent = 0, + }, } = sectionData; const items = [ getTooltipItem("uncoveredUsage", RI_SP_COVERAGE_COLOR_INDEXES.UNCOVERED_USAGE, uncoveredUsagePercent), getTooltipItem("riUsage", RI_SP_COVERAGE_COLOR_INDEXES.RI_USAGE, riUsagePercent), - getTooltipItem("spUsage", RI_SP_COVERAGE_COLOR_INDEXES.SP_USAGE, spUsagePercent) + getTooltipItem("spUsage", RI_SP_COVERAGE_COLOR_INDEXES.SP_USAGE, spUsagePercent), ]; return ( diff --git a/ngui/ui/src/components/RiSpCoverageTable/RiSpCoverageTable.tsx b/ngui/ui/src/components/RiSpCoverageTable/RiSpCoverageTable.tsx index 35ff0e087..e93b0baa4 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/RiSpCoverageTable.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/RiSpCoverageTable.tsx @@ -14,7 +14,7 @@ const getData = (breakdown) => { sp_cost_with_offer: spCostWithOffer = 0, ri_cost_with_offer: riCostWithOffer = 0, total_cost_with_offer: totalCostWithOffer = 0, - total_cost_without_offer: totalCostWithoutOffer = 0 + total_cost_without_offer: totalCostWithoutOffer = 0, } = res[index]; const { @@ -23,7 +23,7 @@ const getData = (breakdown) => { total_usage_hrs: itemTotalUsageHrs = 0, sp: { cost_with_offer: itemSpCostWithOffer = 0 } = {}, ri: { cost_with_offer: itemRiCostWithOffer = 0 } = {}, - total: { cost_with_offer: itemTotalCostWithOffer = 0, cost_without_offer: itemTotalCostWithoutOffer = 0 } = {} + total: { cost_with_offer: itemTotalCostWithOffer = 0, cost_without_offer: itemTotalCostWithoutOffer = 0 } = {}, } = item; // eslint-disable-next-line no-param-reassign @@ -35,7 +35,7 @@ const getData = (breakdown) => { sp_cost_with_offer: spCostWithOffer + itemSpCostWithOffer, ri_cost_with_offer: riCostWithOffer + itemRiCostWithOffer, total_cost_with_offer: totalCostWithOffer + itemTotalCostWithOffer, - total_cost_without_offer: totalCostWithoutOffer + itemTotalCostWithoutOffer + total_cost_without_offer: totalCostWithoutOffer + itemTotalCostWithoutOffer, }; return res; @@ -52,7 +52,7 @@ const getData = (breakdown) => { total_sp_cost_with_offer: acc.total_sp_cost_with_offer + datum.sp_cost_with_offer || 0, total_ri_cost_with_offer: acc.total_ri_cost_with_offer + datum.ri_cost_with_offer || 0, total_total_cost_with_offer: acc.total_total_cost_with_offer + datum.total_cost_with_offer || 0, - total_total_cost_without_offer: acc.total_total_cost_without_offer + datum.total_cost_without_offer || 0 + total_total_cost_without_offer: acc.total_total_cost_without_offer + datum.total_cost_without_offer || 0, }), { total_sp_usage_hrs: 0, @@ -61,13 +61,13 @@ const getData = (breakdown) => { total_sp_cost_with_offer: 0, total_ri_cost_with_offer: 0, total_total_cost_with_offer: 0, - total_total_cost_without_offer: 0 + total_total_cost_without_offer: 0, } ); return { tableData, - totals + totals, }; }; @@ -79,30 +79,30 @@ const RiSpCoverageTable = ({ breakdown, isLoading = false }) => { dataSource(), spUsage({ totalSpUsageHrs: totals.total_sp_usage_hrs, - totalTotalUsageHrs: totals.total_total_usage_hrs + totalTotalUsageHrs: totals.total_total_usage_hrs, }), riUsage({ totalRiUsageHrs: totals.total_ri_usage_hrs, - totalTotalUsageHrs: totals.total_total_usage_hrs + totalTotalUsageHrs: totals.total_total_usage_hrs, }), totalUsage({ - totalTotalUsageHrs: totals.total_total_usage_hrs + totalTotalUsageHrs: totals.total_total_usage_hrs, }), spExpenses({ totalSpCostWithOffer: totals.total_sp_cost_with_offer, - totalTotalCostWithOffer: totals.total_total_cost_with_offer + totalTotalCostWithOffer: totals.total_total_cost_with_offer, }), riExpenses({ totalRiCostWithOffer: totals.total_ri_cost_with_offer, - totalTotalCostWithOffer: totals.total_total_cost_with_offer + totalTotalCostWithOffer: totals.total_total_cost_with_offer, }), savings({ totalTotalCostWithoutOffer: totals.total_total_cost_without_offer, - totalTotalCostWithOffer: totals.total_total_cost_with_offer + totalTotalCostWithOffer: totals.total_total_cost_with_offer, }), totalExpenses({ - totalTotalCostWithOffer: totals.total_total_cost_with_offer - }) + totalTotalCostWithOffer: totals.total_total_cost_with_offer, + }), ], [totals] ); @@ -114,12 +114,12 @@ const RiSpCoverageTable = ({ breakdown, isLoading = false }) => { data={tableData} withFooter localization={{ - emptyMessageId: "noRiSpUsageData" + emptyMessageId: "noRiSpUsageData", }} columns={columns} pageSize={50} dataTestIds={{ - container: "table_ri_sp_usage" + container: "table_ri_sp_usage", }} /> ); diff --git a/ngui/ui/src/components/RiSpCoverageTable/columns/dataSource.tsx b/ngui/ui/src/components/RiSpCoverageTable/columns/dataSource.tsx index e03414189..38ea3d308 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/columns/dataSource.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/columns/dataSource.tsx @@ -6,7 +6,7 @@ const dataSource = ({ accessorKey = "cloud_account_name", dataSourceNameAccessor = "cloud_account_name", dataSourceIdAccessor = "cloud_account_id", - dataSourceTypeAccessor = "cloud_account_type" + dataSourceTypeAccessor = "cloud_account_type", } = {}) => ({ header: ( @@ -16,10 +16,10 @@ const dataSource = ({ accessorKey, cell: ({ row: { - original: { [dataSourceIdAccessor]: id, [dataSourceNameAccessor]: name, [dataSourceTypeAccessor]: type } - } + original: { [dataSourceIdAccessor]: id, [dataSourceNameAccessor]: name, [dataSourceTypeAccessor]: type }, + }, }) => , - footer: () => + footer: () => , }); export default dataSource; diff --git a/ngui/ui/src/components/RiSpCoverageTable/columns/riExpenses.tsx b/ngui/ui/src/components/RiSpCoverageTable/columns/riExpenses.tsx index e2aa0f1e8..686786d3f 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/columns/riExpenses.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/columns/riExpenses.tsx @@ -21,10 +21,10 @@ const riExpenses = ({ totalRiCostWithOffer, totalTotalCostWithOffer }) => ({ cell: ({ cell, row: { - original: { total_cost_with_offer: totalExpenses } - } + original: { total_cost_with_offer: totalExpenses }, + }, }) => , - footer: () => + footer: () => , }); export default riExpenses; diff --git a/ngui/ui/src/components/RiSpCoverageTable/columns/riUsage.tsx b/ngui/ui/src/components/RiSpCoverageTable/columns/riUsage.tsx index a0c0cdfd9..a1e3310d3 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/columns/riUsage.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/columns/riUsage.tsx @@ -24,10 +24,10 @@ const riUsage = ({ totalRiUsageHrs, totalTotalUsageHrs }) => ({ cell: ({ cell, row: { - original: { total_usage_hrs: totalUsageHrs } - } + original: { total_usage_hrs: totalUsageHrs }, + }, }) => , - footer: () => + footer: () => , }); export default riUsage; diff --git a/ngui/ui/src/components/RiSpCoverageTable/columns/savings.tsx b/ngui/ui/src/components/RiSpCoverageTable/columns/savings.tsx index 2eee36c63..b61238acc 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/columns/savings.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/columns/savings.tsx @@ -26,7 +26,7 @@ const savings = ({ totalTotalCostWithoutOffer, totalTotalCostWithOffer }) => ({ footer: () => { const value = totalTotalCostWithoutOffer - totalTotalCostWithOffer; return ; - } + }, }); export default savings; diff --git a/ngui/ui/src/components/RiSpCoverageTable/columns/spExpenses.tsx b/ngui/ui/src/components/RiSpCoverageTable/columns/spExpenses.tsx index 1646395fe..baad8dbda 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/columns/spExpenses.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/columns/spExpenses.tsx @@ -22,10 +22,10 @@ const spExpenses = ({ totalSpCostWithOffer, totalTotalCostWithOffer }) => ({ cell: ({ cell, row: { - original: { total_cost_with_offer: totalExpenses } - } + original: { total_cost_with_offer: totalExpenses }, + }, }) => , - footer: () => + footer: () => , }); export default spExpenses; diff --git a/ngui/ui/src/components/RiSpCoverageTable/columns/spUsage.tsx b/ngui/ui/src/components/RiSpCoverageTable/columns/spUsage.tsx index 6e1c89c43..95adf3f1f 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/columns/spUsage.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/columns/spUsage.tsx @@ -24,10 +24,10 @@ const spUsage = ({ totalSpUsageHrs, totalTotalUsageHrs }) => ({ cell: ({ cell, row: { - original: { total_usage_hrs: totalUsageHrs } - } + original: { total_usage_hrs: totalUsageHrs }, + }, }) => , - footer: () => + footer: () => , }); export default spUsage; diff --git a/ngui/ui/src/components/RiSpCoverageTable/columns/totalExpenses.tsx b/ngui/ui/src/components/RiSpCoverageTable/columns/totalExpenses.tsx index 4bc79ccea..eb2809ec6 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/columns/totalExpenses.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/columns/totalExpenses.tsx @@ -14,7 +14,7 @@ const totalExpenses = ({ totalTotalCostWithOffer }) => ({ accessorKey: "total_cost_with_offer", cell: ({ cell }) => , footer: () => , - defaultSort: "desc" + defaultSort: "desc", }); export default totalExpenses; diff --git a/ngui/ui/src/components/RiSpCoverageTable/columns/totalUsage.tsx b/ngui/ui/src/components/RiSpCoverageTable/columns/totalUsage.tsx index 28dbdc2a8..5d448c6d6 100644 --- a/ngui/ui/src/components/RiSpCoverageTable/columns/totalUsage.tsx +++ b/ngui/ui/src/components/RiSpCoverageTable/columns/totalUsage.tsx @@ -6,7 +6,7 @@ const CellValue = ({ usage }) => ( ); @@ -19,7 +19,7 @@ const totalUsage = ({ totalTotalUsageHrs }) => ({ ), accessorKey: "total_usage_hrs", cell: ({ cell }) => , - footer: () => + footer: () => , }); export default totalUsage; diff --git a/ngui/ui/src/components/RiSpExpensesBarChart/RiSpExpensesBarChart.tsx b/ngui/ui/src/components/RiSpExpensesBarChart/RiSpExpensesBarChart.tsx index da83a50b8..e096913fc 100644 --- a/ngui/ui/src/components/RiSpExpensesBarChart/RiSpExpensesBarChart.tsx +++ b/ngui/ui/src/components/RiSpExpensesBarChart/RiSpExpensesBarChart.tsx @@ -18,14 +18,14 @@ const getChartData = (breakdown) => const { sp: { cost_with_offer: itemSpCostWithOffer }, ri: { cost_with_offer: itemRiCostWithOffer }, - total: { cost_with_offer: itemTotalCostWithOffer, cost_without_offer: itemTotalCostWithoutOffer } + total: { cost_with_offer: itemTotalCostWithOffer, cost_without_offer: itemTotalCostWithoutOffer }, } = item; const { sp_cost_with_offer: spCostWithOffer, ri_cost_with_offer: riCostWithOffer, total_cost_with_offer: totalCostWithOffer, - total_cost_without_offer: totalCostWithoutOffer + total_cost_without_offer: totalCostWithoutOffer, } = result; const spCostHrsAggregated = round(spCostWithOffer + itemSpCostWithOffer, 2); @@ -39,15 +39,15 @@ const getChartData = (breakdown) => sp_cost_with_offer: spCostHrsAggregated, ri_cost_with_offer: riCostHrsAggregated, total_cost_with_offer: totalCostWithHrsAggregated, - total_cost_without_offer: totalCostWithoutHrsAggregated - } + total_cost_without_offer: totalCostWithoutHrsAggregated, + }, }; }, { ri_cost_with_offer: 0, sp_cost_with_offer: 0, total_cost_with_offer: 0, - total_cost_without_offer: 0 + total_cost_without_offer: 0, } ); @@ -55,7 +55,7 @@ const getChartData = (breakdown) => sp_cost_with_offer: tempSpCostWithOffer, ri_cost_with_offer: tempRiCostWithOffer, total_cost_with_offer: tempTotalCostWithOffer, - total_cost_without_offer: tempTotalCostWithoutOffer + total_cost_without_offer: tempTotalCostWithoutOffer, } = temp; const finalItem = { @@ -65,7 +65,7 @@ const getChartData = (breakdown) => ri_expenses: tempRiCostWithOffer, total_expenses: tempTotalCostWithOffer, total_savings: round(tempTotalCostWithoutOffer - tempTotalCostWithOffer, 2), - uncovered_expenses: round(tempTotalCostWithOffer - tempSpCostWithOffer - tempRiCostWithOffer, 2) + uncovered_expenses: round(tempTotalCostWithOffer - tempSpCostWithOffer - tempRiCostWithOffer, 2), }; return [...data, finalItem]; @@ -83,14 +83,14 @@ const getTooltipItem = (id, paletteColorIndex, value) => ({ textFirst={false} /> ), - value: + value: , }); export const RI_SP_EXPENSES_COLOR_INDEXES = { SP_EXPENSES: 0, RI_EXPENSES: 1, UNCOVERED_EXPENSES: 2, - SAVINGS: 3 + SAVINGS: 3, }; const getRenderTooltipBody = (sectionData, showSavings) => { @@ -101,8 +101,8 @@ const getRenderTooltipBody = (sectionData, showSavings) => { total_savings: totalSavings = 0, sp_cost_with_offer: spCostWithOffer = 0, ri_cost_with_offer: riCostWithOffer = 0, - uncovered_expenses: uncoveredExpenses = 0 - } + uncovered_expenses: uncoveredExpenses = 0, + }, } = sectionData; const items = [ @@ -110,7 +110,7 @@ const getRenderTooltipBody = (sectionData, showSavings) => { showSavings && getTooltipItem("savings", RI_SP_EXPENSES_COLOR_INDEXES.SAVINGS, totalSavings), getTooltipItem("uncoveredExpenses", RI_SP_EXPENSES_COLOR_INDEXES.UNCOVERED_EXPENSES, uncoveredExpenses), getTooltipItem("riExpenses", RI_SP_EXPENSES_COLOR_INDEXES.RI_EXPENSES, riCostWithOffer), - getTooltipItem("spExpenses", RI_SP_EXPENSES_COLOR_INDEXES.SP_EXPENSES, spCostWithOffer) + getTooltipItem("spExpenses", RI_SP_EXPENSES_COLOR_INDEXES.SP_EXPENSES, spCostWithOffer), ].filter(Boolean); return ( diff --git a/ngui/ui/src/components/RightsizingFlavorCell/RightsizingFlavorCell.tsx b/ngui/ui/src/components/RightsizingFlavorCell/RightsizingFlavorCell.tsx index 8da1bc2e3..5c6349eb8 100644 --- a/ngui/ui/src/components/RightsizingFlavorCell/RightsizingFlavorCell.tsx +++ b/ngui/ui/src/components/RightsizingFlavorCell/RightsizingFlavorCell.tsx @@ -4,7 +4,7 @@ import KeyValueLabel from "components/KeyValueLabel/KeyValueLabel"; const RightsizingFlavorCell = ({ flavorName, flavorCpu }) => ( + node: , }} > {flavorName} diff --git a/ngui/ui/src/components/RunArtifactsTable/RunArtifactsTable.tsx b/ngui/ui/src/components/RunArtifactsTable/RunArtifactsTable.tsx index 625cb98db..7f9d0b284 100644 --- a/ngui/ui/src/components/RunArtifactsTable/RunArtifactsTable.tsx +++ b/ngui/ui/src/components/RunArtifactsTable/RunArtifactsTable.tsx @@ -29,7 +29,7 @@ const RunArtifactsTable = ({ artifacts, pagination, search }: RunArtifactsTableP const openSideModal = useOpenSideModal(); const isManageArtifactsAllowed = useIsAllowed({ - requiredActions: ["EDIT_PARTNER"] + requiredActions: ["EDIT_PARTNER"], }); const tableData = useMemo(() => artifacts, [artifacts]); @@ -45,8 +45,8 @@ const RunArtifactsTable = ({ artifacts, pagination, search }: RunArtifactsTableP id: "actions", cell: ({ row: { - original: { id: artifactId, name, run: { task_id: artifactRunTaskId, id: artifactRunId } = {}, index } - } + original: { id: artifactId, name, run: { task_id: artifactRunTaskId, id: artifactRunId } = {}, index }, + }, }) => ( , requiredActions: ["EDIT_PARTNER"], dataTestId: `btn_edit_${index}`, - action: () => navigate(getEditMlRunArtifactUrl(artifactRunTaskId, artifactRunId, artifactId)) + action: () => navigate(getEditMlRunArtifactUrl(artifactRunTaskId, artifactRunId, artifactId)), }, { key: "delete", @@ -75,12 +75,12 @@ const RunArtifactsTable = ({ artifacts, pagination, search }: RunArtifactsTableP if (isLastArtifactOnPage) { pagination.onPageIndexChange(Math.max(pagination.pageIndex - 1, 0)); } - } - }) - } + }, + }), + }, ]} /> - ) + ), }); return [ @@ -89,7 +89,7 @@ const RunArtifactsTable = ({ artifacts, pagination, search }: RunArtifactsTableP headerDataTestId: "lbl_name", accessorKey: "name", maxTextLength: 70, - enableSorting: false + enableSorting: false, }), slicedText({ headerMessageId: "path", @@ -97,21 +97,21 @@ const RunArtifactsTable = ({ artifacts, pagination, search }: RunArtifactsTableP accessorKey: "path", maxTextLength: 70, copy: true, - enableSorting: false + enableSorting: false, }), markdown({ id: "description", accessorFn: (originalRow) => originalRow.description, headerMessageId: "description", headerDataTestId: "lbl_description", - enableSorting: false + enableSorting: false, }), utcTime({ id: "createdAt", accessorFn: (originalRow) => originalRow.created_at, headerMessageId: "createdAt", headerDataTestId: "lbl_created_at", - enableSorting: false + enableSorting: false, }), tags({ id: "tags", @@ -120,9 +120,9 @@ const RunArtifactsTable = ({ artifacts, pagination, search }: RunArtifactsTableP .map(([key, val]) => `${key}: ${val}`) .join(" "), getTags: (originalRow) => originalRow.tags, - enableSorting: false + enableSorting: false, }), - ...(isManageArtifactsAllowed ? [getActionsColumn()] : []) + ...(isManageArtifactsAllowed ? [getActionsColumn()] : []), ]; }, [artifacts.length, isManageArtifactsAllowed, navigate, openSideModal, pagination]); @@ -143,16 +143,16 @@ const RunArtifactsTable = ({ artifacts, pagination, search }: RunArtifactsTableP type: "button", link: getCreateMlRunArtifactUrl(taskId, runId), dataTestId: "btn_add", - requiredActions: ["EDIT_PARTNER"] - } - ] - } + requiredActions: ["EDIT_PARTNER"], + }, + ], + }, }} localization={{ emptyMessageId: "noArtifacts" }} manualPagination={pagination} withSearch manualGlobalFiltering={{ - search + search, }} /> ); diff --git a/ngui/ui/src/components/RunDataset/RunDataset.tsx b/ngui/ui/src/components/RunDataset/RunDataset.tsx index aac7d3816..112b656be 100644 --- a/ngui/ui/src/components/RunDataset/RunDataset.tsx +++ b/ngui/ui/src/components/RunDataset/RunDataset.tsx @@ -15,7 +15,7 @@ const DatasetTimespan = ({ timespanFrom, timespanTo }) => { const fromLabel = intl.formatMessage({ id: "from" }).toLocaleLowerCase(); const toLabel = intl .formatMessage({ - id: "to" + id: "to", }) .toLocaleLowerCase(); @@ -51,7 +51,7 @@ const RunDataset = ({ dataset }) => { display: "flex", alignItems: "center", gap: 0.5, - flexWrap: "wrap" + flexWrap: "wrap", }} > diff --git a/ngui/ui/src/components/S3DuplicateFinder/S3DuplicateFinder.tsx b/ngui/ui/src/components/S3DuplicateFinder/S3DuplicateFinder.tsx index 847963cd4..f0c77e87e 100644 --- a/ngui/ui/src/components/S3DuplicateFinder/S3DuplicateFinder.tsx +++ b/ngui/ui/src/components/S3DuplicateFinder/S3DuplicateFinder.tsx @@ -18,10 +18,10 @@ const S3DuplicateFinder = ({ geminis, isLoading = false }) => { breadcrumbs: [ - + , ], title: { - messageId: "s3DuplicateFinderTitle" + messageId: "s3DuplicateFinderTitle", }, items: [ { @@ -30,9 +30,9 @@ const S3DuplicateFinder = ({ geminis, isLoading = false }) => { messageId: "settings", action: () => openSideModal(S3DuplicateFinderSettingsModal, { recommendationType: "type" }), type: "button", - requiredActions: ["EDIT_PARTNER"] - } - ] + requiredActions: ["EDIT_PARTNER"], + }, + ], }; return ( diff --git a/ngui/ui/src/components/S3DuplicateFinder/S3DuplicateFinderMocked.tsx b/ngui/ui/src/components/S3DuplicateFinder/S3DuplicateFinderMocked.tsx index fee2318c8..c75568663 100644 --- a/ngui/ui/src/components/S3DuplicateFinder/S3DuplicateFinderMocked.tsx +++ b/ngui/ui/src/components/S3DuplicateFinder/S3DuplicateFinderMocked.tsx @@ -17,15 +17,15 @@ const S3DuplicateFinderMocked = () => ( filters: { cloud_account_id: "1544c42a-af06-461e-8930-cda0e569df10", buckets: ["report-bucket", "dev-bucket"], - min_size: 123 + min_size: 123, }, stats: { monthly_savings: 212, total_objects: 340, duplicated_objects: 210, total_size: 212345512, - duplicates_size: 5422231 - } + duplicates_size: 5422231, + }, }, { deleted_at: 0, @@ -39,14 +39,14 @@ const S3DuplicateFinderMocked = () => ( filters: { cloud_account_id: "1544c42a-af06-461e-8930-cda0e569df10", buckets: ["report-bucket", "dev-bucket"], - min_size: 123 + min_size: 123, }, stats: { total_objects: 52, duplicated_objects: 25, total_size: 64265512, - duplicates_size: 522231 - } + duplicates_size: 522231, + }, }, { deleted_at: 0, @@ -60,16 +60,16 @@ const S3DuplicateFinderMocked = () => ( filters: { cloud_account_id: "1544c42a-af06-461e-8930-cda0e569df10", buckets: ["report-bucket", "dev-bucket"], - min_size: 123 + min_size: 123, }, stats: { monthly_savings: 651, total_objects: 522, duplicated_objects: 325, total_size: 515265512, - duplicates_size: 62231 - } - } + duplicates_size: 62231, + }, + }, ]} isLoading={false} /> diff --git a/ngui/ui/src/components/S3DuplicateFinderCheck/S3DuplicateFinderCheck.tsx b/ngui/ui/src/components/S3DuplicateFinderCheck/S3DuplicateFinderCheck.tsx index 8cb505f73..8bc6e09c5 100644 --- a/ngui/ui/src/components/S3DuplicateFinderCheck/S3DuplicateFinderCheck.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderCheck/S3DuplicateFinderCheck.tsx @@ -43,7 +43,7 @@ const getSortedMatrix = (matrix, buckets) => { return Object.fromEntries( sortedBucketNames.map((name) => [ name, - Object.fromEntries(sortedBucketNames.map((relationBucketName) => [relationBucketName, matrix[name][relationBucketName]])) + Object.fromEntries(sortedBucketNames.map((relationBucketName) => [relationBucketName, matrix[name][relationBucketName]])), ]) ); }; @@ -58,8 +58,8 @@ const getBuckets = (statsBuckets, filtersBuckets) => name, { ...stats, - ...filterBucket - } + ...filterBucket, + }, ]; }) ); @@ -74,7 +74,7 @@ const S3DuplicateFinderCheck = ({ gemini: checkData, thresholds, isLoadingProps status, last_run: lastRun, last_completed: lastCompleted, - last_error: lastError + last_error: lastError, } = checkData; const { @@ -83,7 +83,7 @@ const S3DuplicateFinderCheck = ({ gemini: checkData, thresholds, isLoadingProps duplicates_size: duplicatesSize = 0, monthly_savings: monthlySavings = 0, buckets: statsBuckets = {}, - matrix = {} + matrix = {}, } = stats; const { min_size: minSize = 0, buckets: filtersBuckets = [] } = filters; @@ -95,12 +95,12 @@ const S3DuplicateFinderCheck = ({ gemini: checkData, thresholds, isLoadingProps , - + , ], title: { text: format(secondsToMilliseconds(createdAt), EN_FULL_FORMAT), - isLoading: isGetCheckLoading - } + isLoading: isGetCheckLoading, + }, }; return ( diff --git a/ngui/ui/src/components/S3DuplicateFinderCheck/S3DuplicateFinderCheckMocked.tsx b/ngui/ui/src/components/S3DuplicateFinderCheck/S3DuplicateFinderCheckMocked.tsx index 93ad76150..88e7eb2b9 100644 --- a/ngui/ui/src/components/S3DuplicateFinderCheck/S3DuplicateFinderCheckMocked.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderCheck/S3DuplicateFinderCheckMocked.tsx @@ -16,7 +16,7 @@ const S3DuplicateFinderCheckMocked = () => ( filters: { cloud_account_id: "04ceaf5d-add6-4945-a72d-1ae425021b40", min_size: 0, - buckets: ["bucket-copy", "bucket-main", "bucket-main-new"] + buckets: ["bucket-copy", "bucket-main", "bucket-main-new"], }, stats: { total_objects: 703164, @@ -33,7 +33,7 @@ const S3DuplicateFinderCheckMocked = () => ( monthly_cost: 0.21185923199999998, objects_with_duplicates: 2, objects_with_duplicates_size: 4, - monthly_savings: 23.32 + monthly_savings: 23.32, }, "bucket-main": { total_objects: 79, @@ -42,7 +42,7 @@ const S3DuplicateFinderCheckMocked = () => ( monthly_cost: 26.127478212, objects_with_duplicates: 0, objects_with_duplicates_size: 0, - monthly_savings: 5.1 + monthly_savings: 5.1, }, "bucket-main-new": { total_objects: 9, @@ -51,68 +51,68 @@ const S3DuplicateFinderCheckMocked = () => ( monthly_cost: 0.013725659999999999, objects_with_duplicates: 3, objects_with_duplicates_size: 5406007, - monthly_savings: 31.2 - } + monthly_savings: 31.2, + }, }, matrix: { "bucket-copy": { "bucket-copy": { duplicated_objects: 33, duplicates_size: 10000381, - monthly_savings: 32.42 + monthly_savings: 32.42, }, "bucket-main": { duplicated_objects: 12, duplicates_size: 52432534827, - monthly_savings: 12.42 + monthly_savings: 12.42, }, "bucket-main-new": { duplicated_objects: 8, duplicates_size: 3734827, - monthly_savings: 52.22 - } + monthly_savings: 52.22, + }, }, "bucket-main": { "bucket-main": { duplicated_objects: 4, duplicates_size: 104857600000, - monthly_savings: 42.1 + monthly_savings: 42.1, }, "bucket-copy": { duplicated_objects: 12, duplicates_size: 52432534827, - monthly_savings: 12.62 + monthly_savings: 12.62, }, "bucket-main-new": { duplicated_objects: 4, duplicates_size: 52428800000, - monthly_savings: 85.2 - } + monthly_savings: 85.2, + }, }, "bucket-main-new": { "bucket-main-new": { duplicated_objects: 7, duplicates_size: 21019006, - monthly_savings: 42.2 + monthly_savings: 42.2, }, "bucket-copy": { duplicated_objects: 8, duplicates_size: 3734827, - monthly_savings: 64.6 + monthly_savings: 64.6, }, "bucket-main": { duplicated_objects: 4, duplicates_size: 52428800000, - monthly_savings: 72.8 - } - } - } - } + monthly_savings: 72.8, + }, + }, + }, + }, }} isLoading={false} thresholds={{ requiringAttention: 50, - critical: 200 + critical: 200, }} /> diff --git a/ngui/ui/src/components/S3DuplicateFinderCheck/components/CrossDuplicatesTable/CrossDuplicatesTable.styles.ts b/ngui/ui/src/components/S3DuplicateFinderCheck/components/CrossDuplicatesTable/CrossDuplicatesTable.styles.ts index ffd72cc8c..b2e6b206f 100644 --- a/ngui/ui/src/components/S3DuplicateFinderCheck/components/CrossDuplicatesTable/CrossDuplicatesTable.styles.ts +++ b/ngui/ui/src/components/S3DuplicateFinderCheck/components/CrossDuplicatesTable/CrossDuplicatesTable.styles.ts @@ -4,24 +4,24 @@ const useStyles = makeStyles()((theme) => ({ selectedFromCellBorder: { borderTop: `2px solid ${theme.palette.info.main}`, borderBottom: `2px solid ${theme.palette.info.main}`, - borderLeft: `2px solid ${theme.palette.info.main}` + borderLeft: `2px solid ${theme.palette.info.main}`, }, selectedToCellBorder: { borderTop: `2px solid ${theme.palette.info.main}`, borderRight: `2px solid ${theme.palette.info.main}`, - borderLeft: `2px solid ${theme.palette.info.main}` + borderLeft: `2px solid ${theme.palette.info.main}`, }, selectedCellBorders: { - border: `2px solid ${theme.palette.info.main}` + border: `2px solid ${theme.palette.info.main}`, }, cellInRowPathBorders: { borderTop: `2px solid ${theme.palette.info.main}`, - borderBottom: `2px solid ${theme.palette.info.main}` + borderBottom: `2px solid ${theme.palette.info.main}`, }, cellInColumnPathBorders: { borderLeft: `2px solid ${theme.palette.info.main}`, - borderRight: `2px solid ${theme.palette.info.main}` - } + borderRight: `2px solid ${theme.palette.info.main}`, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/S3DuplicateFinderCheck/components/CrossDuplicatesTable/CrossDuplicatesTable.tsx b/ngui/ui/src/components/S3DuplicateFinderCheck/components/CrossDuplicatesTable/CrossDuplicatesTable.tsx index a9c96e111..0aa116d7e 100644 --- a/ngui/ui/src/components/S3DuplicateFinderCheck/components/CrossDuplicatesTable/CrossDuplicatesTable.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderCheck/components/CrossDuplicatesTable/CrossDuplicatesTable.tsx @@ -34,8 +34,8 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { fromBucket: buckets[fromBucketId], toBucket: buckets[toBucketId], crossBucketsStats: matrix[fromBucketId][toBucketId], - matrixColumnIndex - })) + matrixColumnIndex, + })), ]), [buckets, matrix] ); @@ -47,7 +47,7 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { if (!isEmptyObject(buckets) && buckets[matrixHeaderBuckets[0]].monthly_cost !== undefined) { return { from: matrixHeaderBuckets[0], - to: matrixHeaderBuckets[0] + to: matrixHeaderBuckets[0], }; } @@ -70,14 +70,14 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { /* Make sure header cell in the 1st column covers rest columns and rows when scrolling */ - zIndex: 1 + zIndex: 1, }, style: { minWidth: "250px", height: "65px", backgroundColor: "white", position: "sticky", - left: 0 + left: 0, }, cell: ({ cell }) => { const bucket = cell.getValue(); @@ -87,7 +87,7 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { {bucket.name} @@ -106,9 +106,9 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { const bucket = cell.getValue(); openSideModal(BucketDuplicatesModal, { - bucket + bucket, }); - } + }, }, ...matrixHeaderBuckets.map((headerBucketId, columnIndex) => ({ id: headerBucketId, @@ -116,14 +116,14 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { header: ( {headerBucketId} ), headerStyle: { - minWidth: "220px" + minWidth: "220px", }, cell: ({ cell }) => { const { fromBucket, crossBucketsStats } = cell.getValue(); @@ -141,15 +141,15 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { checkId, fromBucket, toBucket, - crossBucketsStats + crossBucketsStats, }); setSelectedBuckets({ from: fromBucket.name, - to: toBucket.name + to: toBucket.name, }); - } - })) + }, + })), ], [matrixHeaderBuckets, openSideModal, checkId] ); @@ -157,7 +157,7 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { const getRowCellClassName = (context) => { if (context.column.id === FROM_BUCKET_COLUMN_ID) { const { - row: { index: rowIndex } + row: { index: rowIndex }, } = context; const isCellInRowSelected = selectedBuckets ? selectedBuckets.from === matrixHeaderBuckets[rowIndex] : false; @@ -166,8 +166,8 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { const activityHoverClassName = css({ "&:hover": { backgroundColor: theme.palette.action.hover, - cursor: "pointer" - } + cursor: "pointer", + }, }); return cx(selectedCellClassName, activityHoverClassName); @@ -175,7 +175,7 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { const { cell, - row: { index: rowIndex } + row: { index: rowIndex }, } = context; const { fromBucket, toBucket, crossBucketsStats } = cell.getValue(); @@ -225,12 +225,12 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { ? getSelectionBorderClassName({ selectedCellIndexes: { row: selectedMatrixRowIndex, - column: selectedMatrixColumnIndex + column: selectedMatrixColumnIndex, }, cellIndexes: { row: rowIndex, - column: context.cell.getValue().matrixColumnIndex - } + column: context.cell.getValue().matrixColumnIndex, + }, }) : {}; @@ -243,14 +243,14 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { backgroundColor: selectedBuckets && !isCellSelected(fromBucket.name, toBucket.name) ? lighten(backgroundColor, 0.8) - : lighten(backgroundColor, 0.7) + : lighten(backgroundColor, 0.7), }); const activityHoverClassName = css({ "&:hover": { backgroundColor: lighten(backgroundColor, 0.65), - cursor: "pointer" - } + cursor: "pointer", + }, }); return cx([colorClassName, borderClassName, activityHoverClassName]); @@ -272,13 +272,13 @@ const CrossDuplicatesTable = ({ colorsRange, buckets, matrix }) => { columns={columns} stickySettings={{ stickyHeader: true, - scrollWrapperDOMId: BASE_LAYOUT_CONTAINER_ID + scrollWrapperDOMId: BASE_LAYOUT_CONTAINER_ID, }} memoBodyCells getRowCellClassName={getRowCellClassName} getHeaderCellClassName={getHeaderCellClassName} counters={{ - show: false + show: false, }} /> ); diff --git a/ngui/ui/src/components/S3DuplicateFinderCheck/components/DuplicatesInspector/DuplicatesInspector.tsx b/ngui/ui/src/components/S3DuplicateFinderCheck/components/DuplicatesInspector/DuplicatesInspector.tsx index 74d6fcf72..323dac330 100644 --- a/ngui/ui/src/components/S3DuplicateFinderCheck/components/DuplicatesInspector/DuplicatesInspector.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderCheck/components/DuplicatesInspector/DuplicatesInspector.tsx @@ -11,15 +11,15 @@ const useColorsRange = (thresholds) => { const getSuccessRange = (range) => ({ range, - color: theme.palette.success.light + color: theme.palette.success.light, }); const getWarningRange = (range) => ({ range, - color: theme.palette.warning.light + color: theme.palette.warning.light, }); const getErrorRange = (range) => ({ range, - color: theme.palette.error.light + color: theme.palette.error.light, }); const greenRange = [0, requiringAttention]; diff --git a/ngui/ui/src/components/S3DuplicateFinderCheck/components/SelectedBucketsInfo/SelectedBucketsInfo.tsx b/ngui/ui/src/components/S3DuplicateFinderCheck/components/SelectedBucketsInfo/SelectedBucketsInfo.tsx index 87d435d6e..e18b8839f 100644 --- a/ngui/ui/src/components/S3DuplicateFinderCheck/components/SelectedBucketsInfo/SelectedBucketsInfo.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderCheck/components/SelectedBucketsInfo/SelectedBucketsInfo.tsx @@ -27,7 +27,7 @@ const BucketsTable = ({ fromBucket, toBucket }) => { ...bucket, cloud_account_id: bucketDataSource?.id, cloud_account_name: bucketDataSource?.name, - cloud_account_type: bucketDataSource?.type + cloud_account_type: bucketDataSource?.type, }; }; @@ -45,9 +45,9 @@ const BucketsTable = ({ fromBucket, toBucket }) => { text({ headerDataTestId: "lbl_buckets", headerMessageId: "buckets", - accessorKey: "name" + accessorKey: "name", }), - dataSource() + dataSource(), ], [] ); @@ -57,7 +57,7 @@ const BucketsTable = ({ fromBucket, toBucket }) => { data={data} columns={columns} counters={{ - show: false + show: false, }} /> ); @@ -72,7 +72,7 @@ const Duplicates = ({ crossBucketsStats }) => { @@ -92,7 +92,7 @@ const SelectedBucketsInfo = ({ onClose, fromBucket, toBucket, crossBucketsStats, {fromBucket.name}
    + bucketName: {fromBucket.name}, }} /> diff --git a/ngui/ui/src/components/S3DuplicateFinderCheck/components/Summary/Summary.tsx b/ngui/ui/src/components/S3DuplicateFinderCheck/components/Summary/Summary.tsx index d02951abc..56679a78f 100644 --- a/ngui/ui/src/components/S3DuplicateFinderCheck/components/Summary/Summary.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderCheck/components/Summary/Summary.tsx @@ -26,7 +26,7 @@ const Status = ({ status, lastError }) => { [STATUS.SUCCESS]: "completed", [STATUS.RUNNING]: "running", [STATUS.CREATED]: "created", - [STATUS.QUEUED]: "created" + [STATUS.QUEUED]: "created", }[status] ?? "created" } /> @@ -42,7 +42,7 @@ const Summary = ({ monthlySavings, lastError, totalObjects, - isLoading + isLoading, }) => { const items = [ { @@ -51,40 +51,40 @@ const Summary = ({ CustomValueComponent: Status, valueComponentProps: { status, - lastError + lastError, }, color: getStatusColor(status), captionMessageId: "status", isLoading, dataTestIds: { - cardTestId: "card_status" - } + cardTestId: "card_status", + }, }, { key: "savings", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: monthlySavings + value: monthlySavings, }, captionMessageId: "savings", renderCondition: () => status === STATUS.SUCCESS, isLoading, dataTestIds: { - cardTestId: "card_savings" - } + cardTestId: "card_savings", + }, }, { key: "objectsScanned", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedNumber, valueComponentProps: { - value: totalObjects + value: totalObjects, }, caption: , renderCondition: () => status === STATUS.SUCCESS, isLoading, dataTestIds: { - cardTestId: "card_scanned_objects" - } + cardTestId: "card_scanned_objects", + }, }, { key: "size", @@ -95,23 +95,23 @@ const Summary = ({ renderCondition: () => status === STATUS.SUCCESS, isLoading, dataTestIds: { - cardTestId: "card_size" - } + cardTestId: "card_size", + }, }, { key: "duration", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.Custom, CustomValueComponent: FormattedDuration, valueComponentProps: { - durationInSeconds: status === STATUS.RUNNING ? millisecondsToSeconds(+new Date()) - lastRun : lastCompleted - lastRun + durationInSeconds: status === STATUS.RUNNING ? millisecondsToSeconds(+new Date()) - lastRun : lastCompleted - lastRun, }, captionMessageId: "duration", renderCondition: () => [STATUS.SUCCESS, STATUS.RUNNING].includes(status), isLoading, dataTestIds: { - cardTestId: "card_duration" - } - } + cardTestId: "card_duration", + }, + }, ]; return ; diff --git a/ngui/ui/src/components/S3DuplicateFinderCheck/utils.ts b/ngui/ui/src/components/S3DuplicateFinderCheck/utils.ts index ebc818897..5511c02e7 100644 --- a/ngui/ui/src/components/S3DuplicateFinderCheck/utils.ts +++ b/ngui/ui/src/components/S3DuplicateFinderCheck/utils.ts @@ -3,7 +3,7 @@ export const STATUS = Object.freeze({ RUNNING: "RUNNING", FAILED: "FAILED", SUCCESS: "SUCCESS", - QUEUED: "QUEUED" + QUEUED: "QUEUED", }); const COLORS = Object.freeze({ @@ -11,7 +11,7 @@ const COLORS = Object.freeze({ [STATUS.QUEUED]: "info", [STATUS.SUCCESS]: "success", [STATUS.RUNNING]: "primary", - [STATUS.FAILED]: "error" + [STATUS.FAILED]: "error", }); export const getStatusColor = (status) => COLORS[status]; diff --git a/ngui/ui/src/components/S3DuplicateFinderChecksTable/S3DuplicateFinderChecksTable.tsx b/ngui/ui/src/components/S3DuplicateFinderChecksTable/S3DuplicateFinderChecksTable.tsx index c76874b6f..301369728 100644 --- a/ngui/ui/src/components/S3DuplicateFinderChecksTable/S3DuplicateFinderChecksTable.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderChecksTable/S3DuplicateFinderChecksTable.tsx @@ -18,7 +18,7 @@ const S3DuplicateFinderChecksTable = ({ geminis, isLoading }) => { () => geminis.map((gemini) => ({ ...gemini, - bucketsString: gemini.filters.buckets.map(({ name }) => name).join("") + bucketsString: gemini.filters.buckets.map(({ name }) => name).join(""), })), [geminis] ); @@ -47,15 +47,15 @@ const S3DuplicateFinderChecksTable = ({ geminis, isLoading }) => { action: () => openSideModal(CreateS3DuplicateFinderCheckModal), dataTestId: "btn_new_check", requiredActions: ["EDIT_PARTNER"], - disabled: inScopeOfPageMockup - } - ] - } + disabled: inScopeOfPageMockup, + }, + ], + }, }} dataTestIds={{ searchInput: "input_search", searchButton: "btn_search", - deleteSearchButton: "btn_delete_search" + deleteSearchButton: "btn_delete_search", }} localization={{ emptyMessageId: "noDuplicateChecks" }} pageSize={50} diff --git a/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/buckets.tsx b/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/buckets.tsx index 9773928e4..05c0a5e3e 100644 --- a/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/buckets.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/buckets.tsx @@ -14,7 +14,7 @@ const buckets = () => ({ const { buckets: bucketsList } = original.filters; return
    {name}
    } maxRows={2} />; - } + }, }); export default buckets; diff --git a/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/duplicates.tsx b/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/duplicates.tsx index 9a0903152..f4f2c71b0 100644 --- a/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/duplicates.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/duplicates.tsx @@ -11,7 +11,7 @@ const Stats = ({ stats }) => { total_objects: totalObjects, duplicated_objects: duplicatedObjects, total_size: totalSize, - duplicates_size: duplicatesSize + duplicates_size: duplicatesSize, } = stats; const getObjectsCountLabel = () => { @@ -29,7 +29,7 @@ const Stats = ({ stats }) => { id="value / value" values={{ value1: , - value2: + value2: , }} /> @@ -46,9 +46,9 @@ const duplicates = () => ({ id: "duplicates", cell: ({ row: { - original: { stats, status } - } - }) => (status === STATUS.SUCCESS ? : CELL_EMPTY_VALUE) + original: { stats, status }, + }, + }) => (status === STATUS.SUCCESS ? : CELL_EMPTY_VALUE), }); export default duplicates; diff --git a/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/progress.tsx b/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/progress.tsx index 3caee0ae3..1b28b9e4b 100644 --- a/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/progress.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/progress.tsx @@ -49,8 +49,8 @@ const progress = () => ({ defaultSort: "desc", cell: ({ row: { - original: { id, status, created_at: createdAt, last_error: error, last_completed: lastCompleted, last_run: lastRun } - } + original: { id, status, created_at: createdAt, last_error: error, last_completed: lastCompleted, last_run: lastRun }, + }, }) => { const scheduleTime = format(secondsToMilliseconds(createdAt), EN_FULL_FORMAT); @@ -59,7 +59,7 @@ const progress = () => ({ ); @@ -74,16 +74,16 @@ const progress = () => ({ {scheduleTime} - ) + ), }, [STATUS.RUNNING]: { icon: , - label: scheduleTime + label: scheduleTime, }, [STATUS.FAILED]: { icon: , - label: scheduleTime - } + label: scheduleTime, + }, }[status]; return ( @@ -91,14 +91,14 @@ const progress = () => ({ caption={[ { node: caption, - key: `progress-caption` - } + key: `progress-caption`, + }, ]} > ); - } + }, }); export default progress; diff --git a/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/savings.tsx b/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/savings.tsx index 5c577d819..9bd825c56 100644 --- a/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/savings.tsx +++ b/ngui/ui/src/components/S3DuplicateFinderChecksTable/columns/savings.tsx @@ -20,9 +20,9 @@ const savings = () => ({ id: "saving", cell: ({ row: { - original: { stats, status } - } - }) => (status === STATUS.SUCCESS ? : CELL_EMPTY_VALUE) + original: { stats, status }, + }, + }) => (status === STATUS.SUCCESS ? : CELL_EMPTY_VALUE), }); export default savings; diff --git a/ngui/ui/src/components/SearchInput/SearchInput.styles.ts b/ngui/ui/src/components/SearchInput/SearchInput.styles.ts index 3c15ef674..3cf0474b9 100644 --- a/ngui/ui/src/components/SearchInput/SearchInput.styles.ts +++ b/ngui/ui/src/components/SearchInput/SearchInput.styles.ts @@ -3,8 +3,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ clearSearchIcon: { - color: alpha(theme.palette.text.primary, 0.26) - } + color: alpha(theme.palette.text.primary, 0.26), + }, })); export default useStyles; diff --git a/ngui/ui/src/components/SearchInput/SearchInput.tsx b/ngui/ui/src/components/SearchInput/SearchInput.tsx index fd07eec46..84c701471 100644 --- a/ngui/ui/src/components/SearchInput/SearchInput.tsx +++ b/ngui/ui/src/components/SearchInput/SearchInput.tsx @@ -27,7 +27,7 @@ const SearchInput = ({ onSearch, initialSearchText = "", dataTestIds = {}, sx = const { searchInput: searchInputDataTestId, searchButton: searchButtonDataTestId, - deleteSearchButton: deleteSearchButtonDataTestId + deleteSearchButton: deleteSearchButtonDataTestId, } = dataTestIds; const [currentText, setCurrentText] = useState(initialSearchText); @@ -77,7 +77,7 @@ const SearchInput = ({ onSearch, initialSearchText = "", dataTestIds = {}, sx = }} /> ), - sx: { paddingLeft: 0 } + sx: { paddingLeft: 0 }, }} ref={inputRef} margin="none" diff --git a/ngui/ui/src/components/Selector/Selector.tsx b/ngui/ui/src/components/Selector/Selector.tsx index 5a3fc1358..bc4dfa384 100644 --- a/ngui/ui/src/components/Selector/Selector.tsx +++ b/ngui/ui/src/components/Selector/Selector.tsx @@ -57,7 +57,7 @@ const Selector = forwardRef( onOpen, onClose, endAdornment, - renderValue + renderValue, }: SelectorProps, ref ) => { @@ -67,7 +67,7 @@ const Selector = forwardRef( formControl: `${id}-form-control`, select: `${id}-select`, label: `${id}-label`, - helper: `${id}-helper-text` + helper: `${id}-helper-text`, }; const label = labelMessageId ? intl.formatMessage({ id: labelMessageId }) : null; @@ -90,7 +90,7 @@ const Selector = forwardRef( data-test-id={dataTestIds.formControl} sx={{ minWidth: approximateLabelWidth, - ...sx + ...sx, }} > {input} : getInput() + input: isLoading ? {input} : getInput(), }} /> {isError && {error.message}} diff --git a/ngui/ui/src/components/SideModalManager/SideModals/recommendations/components/constants.ts b/ngui/ui/src/components/SideModalManager/SideModals/recommendations/components/constants.ts index 73f4362d7..b158c5263 100644 --- a/ngui/ui/src/components/SideModalManager/SideModals/recommendations/components/constants.ts +++ b/ngui/ui/src/components/SideModalManager/SideModals/recommendations/components/constants.ts @@ -13,5 +13,5 @@ export const THRESHOLD_INPUT_NAMES = Object.freeze({ PUT_REQUEST_QUANTITY_THRESHOLD: "putRequestQuantityThreshold", HEAD_REQUEST_QUANTITY_THRESHOLD: "headRequestQuantityThreshold", OPTIONS_REQUEST_QUANTITY_THRESHOLD: "optionsRequestQuantityThreshold", - DELETE_REQUEST_QUANTITY_THRESHOLD: "deleteRequestQuantityThreshold" + DELETE_REQUEST_QUANTITY_THRESHOLD: "deleteRequestQuantityThreshold", }); diff --git a/ngui/ui/src/components/SideModalManager/SideModals/recommendations/hooks.ts b/ngui/ui/src/components/SideModalManager/SideModals/recommendations/hooks.ts index fb88742bb..09b732e91 100644 --- a/ngui/ui/src/components/SideModalManager/SideModals/recommendations/hooks.ts +++ b/ngui/ui/src/components/SideModalManager/SideModals/recommendations/hooks.ts @@ -34,13 +34,13 @@ export const useFormWithValuesFromOptions = (options, onSave, valueKeys) => { const getFormValues = useCallback( (currentValues = {}) => ({ ...currentValues, - ...objectMap(valueKeys, (optionsKey) => options[optionsKey]) + ...objectMap(valueKeys, (optionsKey) => options[optionsKey]), }), [options, valueKeys] ); const methods = useForm({ - defaultValues: getFormValues() + defaultValues: getFormValues(), }); const { handleSubmit, reset } = methods; @@ -54,7 +54,7 @@ export const useFormWithValuesFromOptions = (options, onSave, valueKeys) => { const newOptions = { ...options, - ...objectMap(revertedKeys, (thresholdsKey) => formData[thresholdsKey]) + ...objectMap(revertedKeys, (thresholdsKey) => formData[thresholdsKey]), }; onSave(newOptions); diff --git a/ngui/ui/src/components/Skeleton/Skeleton.styles.ts b/ngui/ui/src/components/Skeleton/Skeleton.styles.ts index 683b5889b..7b78cbc8f 100644 --- a/ngui/ui/src/components/Skeleton/Skeleton.styles.ts +++ b/ngui/ui/src/components/Skeleton/Skeleton.styles.ts @@ -3,8 +3,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ fullWidth: { width: "100%", - maxWidth: "initial" - } + maxWidth: "initial", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/SnackbarAlert/SnackbarAlert.styles.ts b/ngui/ui/src/components/SnackbarAlert/SnackbarAlert.styles.ts index 5c6434bdd..02e28401c 100644 --- a/ngui/ui/src/components/SnackbarAlert/SnackbarAlert.styles.ts +++ b/ngui/ui/src/components/SnackbarAlert/SnackbarAlert.styles.ts @@ -4,9 +4,9 @@ const useStyles = makeStyles()((theme) => ({ root: { width: "100%", "& > *": { - marginTop: theme.spacing(4) - } - } + marginTop: theme.spacing(4), + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/SnackbarAlert/SnackbarAlert.test.tsx b/ngui/ui/src/components/SnackbarAlert/SnackbarAlert.test.tsx index 131889a49..0a8acae06 100644 --- a/ngui/ui/src/components/SnackbarAlert/SnackbarAlert.test.tsx +++ b/ngui/ui/src/components/SnackbarAlert/SnackbarAlert.test.tsx @@ -8,7 +8,7 @@ it("renders without crashing", () => { root.render( console.log(e)} /> diff --git a/ngui/ui/src/components/SshKeysTable/SshKeysTable.tsx b/ngui/ui/src/components/SshKeysTable/SshKeysTable.tsx index 673e6ff74..0c3a1340d 100644 --- a/ngui/ui/src/components/SshKeysTable/SshKeysTable.tsx +++ b/ngui/ui/src/components/SshKeysTable/SshKeysTable.tsx @@ -24,7 +24,7 @@ const SshKeysTable = ({ isLoading, sshKeys = [], isMakeDefaultLoading, onMakeDef ), accessorKey: "name", - defaultSort: "asc" + defaultSort: "asc", }, { header: ( @@ -32,7 +32,7 @@ const SshKeysTable = ({ isLoading, sshKeys = [], isMakeDefaultLoading, onMakeDef ), - accessorKey: "fingerprint" + accessorKey: "fingerprint", }, { header: ( @@ -52,7 +52,7 @@ const SshKeysTable = ({ isLoading, sshKeys = [], isMakeDefaultLoading, onMakeDef dataTestId: `btn_default_${index}`, action: !isDefault && typeof onMakeDefault === "function" ? () => onMakeDefault(keyId) : undefined, disabled: isDefault, - isLoading: isMakeDefaultLoading + isLoading: isMakeDefaultLoading, }, { key: "delete", @@ -61,12 +61,12 @@ const SshKeysTable = ({ isLoading, sshKeys = [], isMakeDefaultLoading, onMakeDef color: "error", dataTestId: `btn_delete_${index}`, action: () => openSideModal(DeleteSshKeyModal, { keyToDeleteId: keyId, sshKeys }), - isLoading: isMakeDefaultLoading - } + isLoading: isMakeDefaultLoading, + }, ]} /> - ) - } + ), + }, ], [isMakeDefaultLoading, onMakeDefault, openSideModal, sshKeys] ); @@ -80,11 +80,11 @@ const SshKeysTable = ({ isLoading, sshKeys = [], isMakeDefaultLoading, onMakeDef
    ( <> diff --git a/ngui/ui/src/components/StagesAndMilestones/StagesAndMilestones.tsx b/ngui/ui/src/components/StagesAndMilestones/StagesAndMilestones.tsx index 8ce8a35fc..095e9ea61 100644 --- a/ngui/ui/src/components/StagesAndMilestones/StagesAndMilestones.tsx +++ b/ngui/ui/src/components/StagesAndMilestones/StagesAndMilestones.tsx @@ -19,7 +19,7 @@ const MilestonesTable = ({ milestones, onMilestoneZoom }) => { () => milestones.map(([second, milestoneNames]) => ({ second, - milestoneNames + milestoneNames, })), [milestones] ); @@ -47,11 +47,11 @@ const MilestonesTable = ({ milestones, onMilestoneZoom }) => { dataTestId={`btn_select_milestone_${index}`} tooltip={{ show: true, - messageId: "zoom" + messageId: "zoom", }} /> - ) + ), }, { header: ( @@ -61,8 +61,8 @@ const MilestonesTable = ({ milestones, onMilestoneZoom }) => { ), accessorKey: "second", cell: ({ cell }) => formatSecondsToHHMMSS(cell.getValue()), - defaultSort: "asc" - } + defaultSort: "asc", + }, ], [onMilestoneZoom] ); @@ -72,7 +72,7 @@ const MilestonesTable = ({ milestones, onMilestoneZoom }) => { data={tableData} columns={columns} localization={{ - emptyMessageId: "noMilestones" + emptyMessageId: "noMilestones", }} /> ); @@ -104,7 +104,7 @@ const StagesTable = ({ stages, onStageZoom, onStageHighlight, isStageHighlighted dataTestId={`btn_zoom_stage_${index}`} tooltip={{ show: true, - messageId: "zoom" + messageId: "zoom", }} /> @@ -132,7 +132,7 @@ const StagesTable = ({ stages, onStageZoom, onStageHighlight, isStageHighlighted label={value} /> ); - } + }, }, { header: ( @@ -143,8 +143,8 @@ const StagesTable = ({ stages, onStageZoom, onStageHighlight, isStageHighlighted accessorKey: "start", cell: ({ row: { - original: { start, end, startTimestamp } - } + original: { start, end, startTimestamp }, + }, }) => { const formattedStart = formatSecondsToHHMMSS(start); const formattedEnd = end ? formatSecondsToHHMMSS(end) : null; @@ -156,7 +156,7 @@ const StagesTable = ({ stages, onStageZoom, onStageHighlight, isStageHighlighted id="value - value" values={{ value1: formattedStart, - value2: formattedEnd + value2: formattedEnd, }} /> @@ -169,15 +169,15 @@ const StagesTable = ({ stages, onStageZoom, onStageHighlight, isStageHighlighted ); }, - defaultSort: "asc" - } + defaultSort: "asc", + }, ], [isStageHighlighted, onStageHighlight, onStageZoom] ); @@ -187,7 +187,7 @@ const StagesTable = ({ stages, onStageZoom, onStageHighlight, isStageHighlighted data={tableData} columns={columns} localization={{ - emptyMessageId: "noStages" + emptyMessageId: "noStages", }} /> ); @@ -199,7 +199,7 @@ const StagesAndMilestones = ({ stages, highlightedStage, setHighlightedStage, - secondsTimeRange + secondsTimeRange, }) => { const isUpSm = useIsUpMediaQuery("sm"); diff --git a/ngui/ui/src/components/StyledFormLabel/StyledFormLabel.styles.ts b/ngui/ui/src/components/StyledFormLabel/StyledFormLabel.styles.ts index a452530b3..93c561026 100644 --- a/ngui/ui/src/components/StyledFormLabel/StyledFormLabel.styles.ts +++ b/ngui/ui/src/components/StyledFormLabel/StyledFormLabel.styles.ts @@ -4,8 +4,8 @@ const useStyles = makeStyles()((theme) => ({ label: { paddingLeft: theme.spacing(1.75), marginBottom: theme.spacing(0.25), - fontSize: "0.75rem" - } + fontSize: "0.75rem", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/SubmitButtonLoader/SubmitButtonLoader.tsx b/ngui/ui/src/components/SubmitButtonLoader/SubmitButtonLoader.tsx index 440333885..57dfc75b0 100644 --- a/ngui/ui/src/components/SubmitButtonLoader/SubmitButtonLoader.tsx +++ b/ngui/ui/src/components/SubmitButtonLoader/SubmitButtonLoader.tsx @@ -17,7 +17,7 @@ const SubmitButtonLoader = ({ tooltip = {}, dataTestId, loaderDataTestId, - size + size, }: SubmitButtonLoaderProps) => ( {chunks} - ) + ), }} /> diff --git a/ngui/ui/src/components/SubscriptionStatusTopAlert/components/StatusAlert.tsx b/ngui/ui/src/components/SubscriptionStatusTopAlert/components/StatusAlert.tsx index e5fdd1a02..10529ca5c 100644 --- a/ngui/ui/src/components/SubscriptionStatusTopAlert/components/StatusAlert.tsx +++ b/ngui/ui/src/components/SubscriptionStatusTopAlert/components/StatusAlert.tsx @@ -11,8 +11,8 @@ const StatusAlert = ({ children, color }: StatusAlertProps) => ( backgroundColor: (theme) => theme.palette[color].main, color: (theme) => theme.palette[color].contrastText, "& .MuiAlert-message": { - width: "100%" - } + width: "100%", + }, }} > {children} diff --git a/ngui/ui/src/components/SubscriptionStatusTopAlert/components/SuspendedAlert.tsx b/ngui/ui/src/components/SubscriptionStatusTopAlert/components/SuspendedAlert.tsx index 821ae7283..6dd4a6de4 100644 --- a/ngui/ui/src/components/SubscriptionStatusTopAlert/components/SuspendedAlert.tsx +++ b/ngui/ui/src/components/SubscriptionStatusTopAlert/components/SuspendedAlert.tsx @@ -21,7 +21,7 @@ const SuspendedAlert = () => { {chunks} - ) + ), }} /> diff --git a/ngui/ui/src/components/SummaryCard/SummaryCard.styles.ts b/ngui/ui/src/components/SummaryCard/SummaryCard.styles.ts index e2462997d..2b8c59d77 100644 --- a/ngui/ui/src/components/SummaryCard/SummaryCard.styles.ts +++ b/ngui/ui/src/components/SummaryCard/SummaryCard.styles.ts @@ -12,15 +12,15 @@ const useStyles = makeStyles()((theme, color) => ({ height: "100%", padding: 0, [theme.breakpoints.down("xl")]: { - minWidth: 100 + minWidth: 100, }, backgroundColor: lighten(color, ALPHA), - color + color, }, button: { transition: "background-color 0.3s ease-in", cursor: "pointer", - "&:hover": { backgroundColor: lighten(color, ALPHA_HOVER) } + "&:hover": { backgroundColor: lighten(color, ALPHA_HOVER) }, }, content: { paddingTop: theme.spacing(SPACING_1), @@ -29,9 +29,9 @@ const useStyles = makeStyles()((theme, color) => ({ height: "100%", flexDirection: "column", "&:last-child": { - paddingBottom: theme.spacing(SPACING_1) - } - } + paddingBottom: theme.spacing(SPACING_1), + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/SummaryCard/SummaryCard.tsx b/ngui/ui/src/components/SummaryCard/SummaryCard.tsx index 33644dd74..1ae661cdc 100644 --- a/ngui/ui/src/components/SummaryCard/SummaryCard.tsx +++ b/ngui/ui/src/components/SummaryCard/SummaryCard.tsx @@ -47,7 +47,7 @@ const SummaryCard = ({ rawCaption = caption, pdfId, customContent, - backdrop + backdrop, }) => { const theme = useTheme(); @@ -97,7 +97,7 @@ const SummaryCard = ({ zIndex: () => theme.zIndex.drawer, top: "50%", left: "50%", - transform: "translate(-50%, -50%)" + transform: "translate(-50%, -50%)", }} variant="body1" fontWeight="bold" diff --git a/ngui/ui/src/components/SummaryCard/SummaryCardPdf.ts b/ngui/ui/src/components/SummaryCard/SummaryCardPdf.ts index fd76d8531..8383d4d32 100644 --- a/ngui/ui/src/components/SummaryCard/SummaryCardPdf.ts +++ b/ngui/ui/src/components/SummaryCard/SummaryCardPdf.ts @@ -9,9 +9,9 @@ class SummaryCardPdf extends PDFAble { value: intl.formatNumber(this.data.rawValue, { format: this.data.currency || "USD" }).toLocaleLowerCase(), parameters: { header: intl.formatMessage({ id: this.data.rawCaption }), - color: this.data.color - } - } + color: this.data.color, + }, + }, ]; } diff --git a/ngui/ui/src/components/SummaryCardContent/SummaryCardContent.styles.ts b/ngui/ui/src/components/SummaryCardContent/SummaryCardContent.styles.ts index ceeac7950..3366e6402 100644 --- a/ngui/ui/src/components/SummaryCardContent/SummaryCardContent.styles.ts +++ b/ngui/ui/src/components/SummaryCardContent/SummaryCardContent.styles.ts @@ -3,8 +3,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ questionMark: { fontSize: theme.typography.body1.fontSize, - color: "inherit" - } + color: "inherit", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/SummaryCardExtended/SummaryCardExtended.tsx b/ngui/ui/src/components/SummaryCardExtended/SummaryCardExtended.tsx index 5f07a43ed..33846352c 100644 --- a/ngui/ui/src/components/SummaryCardExtended/SummaryCardExtended.tsx +++ b/ngui/ui/src/components/SummaryCardExtended/SummaryCardExtended.tsx @@ -15,7 +15,7 @@ const SummaryCardExtended = ({ help = {}, icon = {}, button = {}, - backdrop + backdrop, }) => { const content = ( diff --git a/ngui/ui/src/components/SummaryGrid/SummaryGrid.tsx b/ngui/ui/src/components/SummaryGrid/SummaryGrid.tsx index d22ecaa50..dbca712c5 100644 --- a/ngui/ui/src/components/SummaryGrid/SummaryGrid.tsx +++ b/ngui/ui/src/components/SummaryGrid/SummaryGrid.tsx @@ -26,11 +26,11 @@ const getValueComponentSettings = (type, CustomComponent) => ({ }, [SUMMARY_VALUE_COMPONENT_TYPES.FormattedMessage]: FormattedMessage, [SUMMARY_VALUE_COMPONENT_TYPES.FormattedDigitalUnit]: FormattedDigitalUnit, - [SUMMARY_VALUE_COMPONENT_TYPES.Custom]: CustomComponent + [SUMMARY_VALUE_COMPONENT_TYPES.Custom]: CustomComponent, }[type], computedProps: { - FormattedMoney: {} - }[type] + FormattedMoney: {}, + }[type], }); const renderSummaryCard = ({ @@ -48,7 +48,7 @@ const renderSummaryCard = ({ dataTestIds, icon, pdfId, - backdrop + backdrop, }) => { const { component: ValueComponent } = getValueComponentSettings(valueComponentType, CustomValueComponent); @@ -88,7 +88,7 @@ const renderExtendedSummaryCard = ({ button, dataTestIds, icon, - backdrop + backdrop, }) => { const { component: ValueComponent, computedProps: computedValueComponentProps = {} } = getValueComponentSettings( valueComponentType, @@ -124,7 +124,7 @@ const renderExtendedSummaryCard = ({ const getCardRenderer = (cardType) => ({ [SUMMARY_CARD_TYPES.BASIC]: renderSummaryCard, - [SUMMARY_CARD_TYPES.EXTENDED]: renderExtendedSummaryCard + [SUMMARY_CARD_TYPES.EXTENDED]: renderExtendedSummaryCard, })[cardType]; const SummaryGrid = ({ summaryData }) => { diff --git a/ngui/ui/src/components/Table/Table.styles.ts b/ngui/ui/src/components/Table/Table.styles.ts index 85367cd64..a81fb7673 100644 --- a/ngui/ui/src/components/Table/Table.styles.ts +++ b/ngui/ui/src/components/Table/Table.styles.ts @@ -4,11 +4,11 @@ const useStyles = makeStyles()(() => ({ tableContainer: { width: "100%", display: "block", - wordBreak: "initial" // shown inside MUI Drawer table inherits word-break: "break-word" which leads to letter-by-letter break in side modals, for example + wordBreak: "initial", // shown inside MUI Drawer table inherits word-break: "break-word" which leads to letter-by-letter break in side modals, for example }, hoverableRow: { - cursor: "pointer" - } + cursor: "pointer", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Table/Table.tsx b/ngui/ui/src/components/Table/Table.tsx index 406799b44..6626c003f 100644 --- a/ngui/ui/src/components/Table/Table.tsx +++ b/ngui/ui/src/components/Table/Table.tsx @@ -22,7 +22,7 @@ import { usePaginationTableSettings, useRowSelectionTableSettings, useSortingTableSettings, - useSticky + useSticky, } from "./hooks"; import useStyles from "./Table.styles"; import { getRowsCount } from "./utils"; @@ -89,7 +89,7 @@ const Table = ({ enableSearchQueryParam, enablePaginationQueryParam, manualPagination, - manualGlobalFiltering + manualGlobalFiltering, }) => { const headerRef = useRef(); @@ -97,7 +97,7 @@ const Table = ({ const { stickyHeaderCellStyles, stickyTableStyles } = useSticky({ headerRef, - stickySettings + stickySettings, }); const getRowHoverProperties = (row) => { @@ -108,7 +108,7 @@ const Table = ({ onClick: () => onRowClick(row.original), hover: true, selected: isSelectedRow(row.original), - className: classes.hoverableRow + className: classes.hoverableRow, }; }; @@ -118,13 +118,13 @@ const Table = ({ state: globalFilterState, tableOptions: globalFilterTableOptions, onSearchChange, - onRangeChange + onRangeChange, } = useGlobalFilterTableSettings({ withSearch, queryParamPrefix, enableSearchQueryParam, rangeFilter, - columns: columnsProperty + columns: columnsProperty, }); const { state: columnsVisibilityState, tableOptions: columnsVisibilityTableOptions } = @@ -132,36 +132,36 @@ const Table = ({ const totalRowsCount = getRowsCount(data, { withExpanded, - getSubRows + getSubRows, }); const { state: paginationState, tableOptions: paginationTableOptions } = usePaginationTableSettings({ pageSize, rowsCount: totalRowsCount, queryParamPrefix, - enablePaginationQueryParam + enablePaginationQueryParam, }); const columns = useColumns(columnsProperty, { - withSelection + withSelection, }); const { state: expandedState, tableOptions: expandedTableOptions } = useExpandedTableSettings({ withExpanded, getSubRows, expanded, - onExpandedChange + onExpandedChange, }); const { state: columnOrderState, tableOptions: columnOrderTableOptions } = useColumnOrderTableSettings({ columnOrder, - onColumnOrderChange + onColumnOrderChange, }); const { state: rowSelectionState, tableOptions: rowSelectionTableOptions } = useRowSelectionTableSettings({ withSelection, rowSelection, - onRowSelectionChange + onRowSelectionChange, }); const initialSortingState = useInitialSortingState(columns); @@ -175,7 +175,7 @@ const Table = ({ ...expandedState, ...columnOrderState, ...rowSelectionState, - ...columnsVisibilityState + ...columnsVisibilityState, }; const tableOptions = { @@ -185,7 +185,7 @@ const Table = ({ ...columnsVisibilityTableOptions, ...columnOrderTableOptions, ...rowSelectionTableOptions, - ...sortingTableOptions + ...sortingTableOptions, }; const table = useReactTable({ @@ -193,18 +193,18 @@ const Table = ({ columns, getRowId, initialState: { - sorting: initialSortingState + sorting: initialSortingState, }, defaultColumn: { sortDescFirst: false, /** * TODO: Check sorting of a columns with all equal values. The 8th version doesn't invert the rows order */ - sortingFn: "basic" + sortingFn: "basic", }, getCoreRowModel: getCoreRowModel(), state: tableState, - ...tableOptions + ...tableOptions, }); const selectedRowsCount = withSelection ? table.getSelectedRowModel().flatRows.length : 0; @@ -218,7 +218,7 @@ const Table = ({ pageIndex: manualPagination.pageIndex, pageSize: manualPagination.pageSize, onPageIndexChange: manualPagination.onPageIndexChange, - totalRows: manualPagination.totalRows + totalRows: manualPagination.totalRows, }; } @@ -227,7 +227,7 @@ const Table = ({ pageIndex: table.getState().pagination.pageIndex, pageSize: table.getState().pagination.pageSize, onPageIndexChange: table.setPageIndex, - totalRows: totalRowsCount + totalRows: totalRowsCount, }; }; @@ -241,7 +241,7 @@ const Table = ({ searchValue: withSearch ? manualGlobalFiltering.search.value : undefined, rangeFilter, rangeValue: rangeFilter ? manualGlobalFiltering.rangeFilter.range : undefined, - onRangeChange: rangeFilter ? manualGlobalFiltering.rangeFilter.onChange : undefined + onRangeChange: rangeFilter ? manualGlobalFiltering.rangeFilter.onChange : undefined, }; } @@ -251,7 +251,7 @@ const Table = ({ onSearchChange: withSearch ? (newSearchValue) => onSearchChange(newSearchValue, { tableContext: table }) : null, rangeFilter, rangeValue: rangeFilter ? globalFilterState.globalFilter.range : undefined, - onRangeChange: rangeFilter ? (newRangeValue) => onRangeChange(newRangeValue, { tableContext: table }) : null + onRangeChange: rangeFilter ? (newRangeValue) => onRangeChange(newRangeValue, { tableContext: table }) : null, }; }; @@ -276,7 +276,7 @@ const Table = ({ {isLoading ? ( @@ -284,10 +284,10 @@ const Table = ({ ) : ( {withHeader && ( @@ -313,8 +313,8 @@ const Table = ({ disableBottomBorderForLastRow ? { "&:last-child > td": { - borderBottom: "none" - } + borderBottom: "none", + }, } : {} } @@ -337,8 +337,8 @@ const Table = ({ disableBottomBorderForLastRow ? { "&:last-child > td": { - borderBottom: "none" - } + borderBottom: "none", + }, } : {} } @@ -385,7 +385,7 @@ const Table = ({ paddingTop: SPACING_1, flexWrap: "wrap", flexDirection: { xs: "column-reverse", md: "row" }, - ":empty": { display: "none" } + ":empty": { display: "none" }, }} > { icon={} onClick={() => { openSideModal(ColumnSetsModal, { - tableContext + tableContext, }); }} /> diff --git a/ngui/ui/src/components/Table/components/ColumnsSelector/ColumnsSelector.styles.ts b/ngui/ui/src/components/Table/components/ColumnsSelector/ColumnsSelector.styles.ts index fd204e2ad..3a23c4544 100644 --- a/ngui/ui/src/components/Table/components/ColumnsSelector/ColumnsSelector.styles.ts +++ b/ngui/ui/src/components/Table/components/ColumnsSelector/ColumnsSelector.styles.ts @@ -3,12 +3,12 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ menuItems: { overflow: "auto", - maxHeight: "350px" + maxHeight: "350px", }, menuItem: { paddingBottom: "0px", - paddingTop: "0px" - } + paddingTop: "0px", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Table/components/Expander/Expander.styles.ts b/ngui/ui/src/components/Table/components/Expander/Expander.styles.ts index 69797f551..d20e2b000 100644 --- a/ngui/ui/src/components/Table/components/Expander/Expander.styles.ts +++ b/ngui/ui/src/components/Table/components/Expander/Expander.styles.ts @@ -3,17 +3,17 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ expand: { transform: "rotate(-90deg)", - marginLeft: "-10px" + marginLeft: "-10px", }, expandOpen: { - transform: "rotate(0deg)" + transform: "rotate(0deg)", }, treePadding: { - paddingLeft: theme.spacing(3.5) + paddingLeft: theme.spacing(3.5), }, visibilityHidden: { - visibility: "hidden" - } + visibility: "hidden", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Table/components/Expander/Expander.tsx b/ngui/ui/src/components/Table/components/Expander/Expander.tsx index 184fc04dc..4b3ea307a 100644 --- a/ngui/ui/src/components/Table/components/Expander/Expander.tsx +++ b/ngui/ui/src/components/Table/components/Expander/Expander.tsx @@ -18,7 +18,7 @@ const Expander = ({ row }) => { { row.getToggleExpandedHandler()(); diff --git a/ngui/ui/src/components/Table/components/InfoArea/InfoArea.styles.ts b/ngui/ui/src/components/Table/components/InfoArea/InfoArea.styles.ts index 4fffe2c20..53ef0b890 100644 --- a/ngui/ui/src/components/Table/components/InfoArea/InfoArea.styles.ts +++ b/ngui/ui/src/components/Table/components/InfoArea/InfoArea.styles.ts @@ -10,10 +10,10 @@ const useStyles = makeStyles()((theme) => ({ marginBottom: theme.spacing(1), "& > *": { "&:not(:last-child)": { - marginRight: theme.spacing(1) - } - } - } + marginRight: theme.spacing(1), + }, + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Table/components/InfoArea/InfoArea.tsx b/ngui/ui/src/components/Table/components/InfoArea/InfoArea.tsx index e337323bb..607a5eea5 100644 --- a/ngui/ui/src/components/Table/components/InfoArea/InfoArea.tsx +++ b/ngui/ui/src/components/Table/components/InfoArea/InfoArea.tsx @@ -29,7 +29,7 @@ const DisplayedLabel = ({ rowsCount, totalNumber, pagination, dataTestIds }) => dataTestIds={{ typography: dataTestIds.displayed, key: dataTestIds.displayedKey, - value: dataTestIds.displayedValue + value: dataTestIds.displayedValue, }} /> ); @@ -44,7 +44,7 @@ const InfoArea = ({ counters, withSearch, withSelection, - withPagination + withPagination, }) => { const { show: showCounters = true, hideTotal = false, hideDisplayed = false, hideSelected = false } = counters; @@ -88,7 +88,7 @@ const InfoArea = ({ dataTestIds={{ typography: dataTestIds.selected, key: dataTestIds.selectedKey, - value: dataTestIds.selectedValue + value: dataTestIds.selectedValue, }} /> ) : null} diff --git a/ngui/ui/src/components/Table/components/Pagination/Pagination.styles.ts b/ngui/ui/src/components/Table/components/Pagination/Pagination.styles.ts index 4bb085653..e8703da1c 100644 --- a/ngui/ui/src/components/Table/components/Pagination/Pagination.styles.ts +++ b/ngui/ui/src/components/Table/components/Pagination/Pagination.styles.ts @@ -8,19 +8,19 @@ const useStyles = makeStyles()((theme) => ({ background: theme.palette.secondary.main, color: theme.palette.secondary.contrastText, "&:hover": { - backgroundColor: theme.palette.secondary.light - } - } + backgroundColor: theme.palette.secondary.light, + }, + }, }, right: { - justifyContent: "flex-end" + justifyContent: "flex-end", }, center: { - justifyContent: "center" + justifyContent: "center", }, left: { - justifyContent: "flex-start" - } + justifyContent: "flex-start", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Table/components/TableActions/TableActions.styles.ts b/ngui/ui/src/components/Table/components/TableActions/TableActions.styles.ts index 09efbc48e..a6d983e01 100644 --- a/ngui/ui/src/components/Table/components/TableActions/TableActions.styles.ts +++ b/ngui/ui/src/components/Table/components/TableActions/TableActions.styles.ts @@ -12,13 +12,13 @@ const useStyles = makeStyles()((theme) => ({ maxWidth: "100%", "& > *": { "&:not(:last-child)": { - marginRight: theme.spacing(1) - } + marginRight: theme.spacing(1), + }, }, [theme.breakpoints.down("md")]: { - paddingBottom: theme.spacing(1) - } - } + paddingBottom: theme.spacing(1), + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Table/components/TableActions/TableActions.tsx b/ngui/ui/src/components/Table/components/TableActions/TableActions.tsx index 4ef2fec53..e23b6744e 100644 --- a/ngui/ui/src/components/Table/components/TableActions/TableActions.tsx +++ b/ngui/ui/src/components/Table/components/TableActions/TableActions.tsx @@ -21,7 +21,7 @@ const TableActionBar = ({ actionBarDefinition, tableContext, selectedRowsCount } * ``` */ disabled: enableIfSelectedRows && selectedRowsCount === 0, - ...rest + ...rest, }; }); @@ -31,7 +31,7 @@ const TableActionBar = ({ actionBarDefinition, tableContext, selectedRowsCount } isPage={false} data={{ ...actionBarDefinition, - items: getActionBarItems() + items: getActionBarItems(), }} /> @@ -50,7 +50,7 @@ const TableActions = ({ tableContext, columnsSelectorUID, columnSetsSelectorId, - dataTestIds = {} + dataTestIds = {}, }) => { const { classes } = useStyles(); @@ -85,7 +85,7 @@ const TableActions = ({ marginLeft: showActionBar ? "" : "auto", display: "flex", flexWrap: withSearch && withColumnSetsSelector && withColumnsSelector ? "wrap" : "nowrap", - gap: 1 + gap: 1, }} > {withSearch && } diff --git a/ngui/ui/src/components/Table/components/TableFooterCell/TableFooterCell.styles.ts b/ngui/ui/src/components/Table/components/TableFooterCell/TableFooterCell.styles.ts index 6331fe05d..8881177e8 100644 --- a/ngui/ui/src/components/Table/components/TableFooterCell/TableFooterCell.styles.ts +++ b/ngui/ui/src/components/Table/components/TableFooterCell/TableFooterCell.styles.ts @@ -3,8 +3,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ cell: { color: theme.palette.text.primary, - borderBottom: "none" - } + borderBottom: "none", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Table/components/TableHeaderCell/TableHeaderCell.tsx b/ngui/ui/src/components/Table/components/TableHeaderCell/TableHeaderCell.tsx index c86b9d887..3fa4620fc 100644 --- a/ngui/ui/src/components/Table/components/TableHeaderCell/TableHeaderCell.tsx +++ b/ngui/ui/src/components/Table/components/TableHeaderCell/TableHeaderCell.tsx @@ -35,7 +35,7 @@ const TableHeaderCell = ({ headerContext, stickyStyles = {}, getHeaderCellClassN return typeof headerContext.column.columnDef.header === "function" ? headerContext.column.columnDef.header({ ...headerContext.getContext(), - renderSortLabel + renderSortLabel, }) : renderSortLabel(headerContext.column.columnDef.header); } @@ -50,7 +50,7 @@ const TableHeaderCell = ({ headerContext, stickyStyles = {}, getHeaderCellClassN style={{ ...stickyStyles, ...cellStyle, - ...headerCellStyle + ...headerCellStyle, }} colSpan={headerContext.colSpan} rowSpan={headerContext.rowSpan} diff --git a/ngui/ui/src/components/Table/hooks/index.ts b/ngui/ui/src/components/Table/hooks/index.ts index 291824b52..11ce797c7 100644 --- a/ngui/ui/src/components/Table/hooks/index.ts +++ b/ngui/ui/src/components/Table/hooks/index.ts @@ -19,5 +19,5 @@ export { usePaginationTableSettings, useGlobalFilterTableSettings, useSortingTableSettings, - useSticky + useSticky, }; diff --git a/ngui/ui/src/components/Table/hooks/useColumnOrderTableSettings.ts b/ngui/ui/src/components/Table/hooks/useColumnOrderTableSettings.ts index 94fd42baa..8e4b4506f 100644 --- a/ngui/ui/src/components/Table/hooks/useColumnOrderTableSettings.ts +++ b/ngui/ui/src/components/Table/hooks/useColumnOrderTableSettings.ts @@ -4,17 +4,17 @@ export const useColumnOrderTableSettings = ({ columnOrder, onColumnOrderChange } if (!!columnOrder && Array.isArray(columnOrder)) { return { state: { - columnOrder + columnOrder, }, tableOptions: { onColumnOrderChange: - typeof onColumnOrderChange === "function" ? handleChange(columnOrder, onColumnOrderChange) : undefined - } + typeof onColumnOrderChange === "function" ? handleChange(columnOrder, onColumnOrderChange) : undefined, + }, }; } return { state: {}, - tableOptions: {} + tableOptions: {}, }; }; diff --git a/ngui/ui/src/components/Table/hooks/useColumns.tsx b/ngui/ui/src/components/Table/hooks/useColumns.tsx index 223209489..2036e9ec8 100644 --- a/ngui/ui/src/components/Table/hooks/useColumns.tsx +++ b/ngui/ui/src/components/Table/hooks/useColumns.tsx @@ -54,7 +54,7 @@ const addSelectionColumn = (columns) => { tableContext.setRowSelection((currentSelectionState) => { const newState = { ...currentSelectionState, - ...Object.fromEntries(toBeToggled) + ...Object.fromEntries(toBeToggled), }; /** * TODO: Investigate state format @@ -72,10 +72,10 @@ const addSelectionColumn = (columns) => { }, style: { padding: 0, - width: "48px" - } + width: "48px", + }, }, - ...columns + ...columns, ]; }; diff --git a/ngui/ui/src/components/Table/hooks/useColumnsVisibility.ts b/ngui/ui/src/components/Table/hooks/useColumnsVisibility.ts index 3fbd7054f..89f75f3c4 100644 --- a/ngui/ui/src/components/Table/hooks/useColumnsVisibility.ts +++ b/ngui/ui/src/components/Table/hooks/useColumnsVisibility.ts @@ -22,10 +22,10 @@ export const useColumnsVisibility = (columnsSelectorUID) => { return { state: { - columnVisibility + columnVisibility, }, tableOptions: { - onColumnVisibilityChange - } + onColumnVisibilityChange, + }, }; }; diff --git a/ngui/ui/src/components/Table/hooks/useExpandedTableSettings.ts b/ngui/ui/src/components/Table/hooks/useExpandedTableSettings.ts index a5872930b..97cc72600 100644 --- a/ngui/ui/src/components/Table/hooks/useExpandedTableSettings.ts +++ b/ngui/ui/src/components/Table/hooks/useExpandedTableSettings.ts @@ -6,7 +6,7 @@ export const useExpandedTableSettings = ({ withExpanded, getSubRows, expanded, o if (withExpanded) { const defaultExpandedTableOptions = { getExpandedRowModel: getExpandedRowModel(), - getSubRows + getSubRows, }; const isControlled = !!expanded && isObject(expanded) && typeof onExpandedChange === "function"; @@ -14,23 +14,23 @@ export const useExpandedTableSettings = ({ withExpanded, getSubRows, expanded, o if (isControlled) { return { state: { - expanded + expanded, }, tableOptions: { ...defaultExpandedTableOptions, - onExpandedChange: handleChange(expanded, onExpandedChange) - } + onExpandedChange: handleChange(expanded, onExpandedChange), + }, }; } return { state: {}, - tableOptions: defaultExpandedTableOptions + tableOptions: defaultExpandedTableOptions, }; } return { state: {}, - tableOptions: {} + tableOptions: {}, }; }; diff --git a/ngui/ui/src/components/Table/hooks/useGlobalFilterTableSettings.ts b/ngui/ui/src/components/Table/hooks/useGlobalFilterTableSettings.ts index f523a2cb2..04406fc59 100644 --- a/ngui/ui/src/components/Table/hooks/useGlobalFilterTableSettings.ts +++ b/ngui/ui/src/components/Table/hooks/useGlobalFilterTableSettings.ts @@ -37,7 +37,7 @@ const useSearch = ({ queryParamPrefix, enableSearchQueryParam = true }) => { return { search, - onSearchChange + onSearchChange, }; }; @@ -51,7 +51,7 @@ const useRange = ({ rangeFilter }) => { return { range, - onRangeChange + onRangeChange, }; }; @@ -60,34 +60,34 @@ export const useGlobalFilterTableSettings = ({ queryParamPrefix, enableSearchQueryParam, columns, - rangeFilter + rangeFilter, }) => { const { search, onSearchChange } = useSearch({ queryParamPrefix, - enableSearchQueryParam + enableSearchQueryParam, }); const { range, onRangeChange } = useRange({ - rangeFilter + rangeFilter, }); const globalFilter = useMemo( () => ({ search, - range + range, }), [range, search] ); return { state: { - globalFilter + globalFilter, }, tableOptions: { getFilteredRowModel: getFilteredRowModel(), - globalFilterFn: globalFilterFn({ columns, withSearch, rangeFilter }) + globalFilterFn: globalFilterFn({ columns, withSearch, rangeFilter }), }, onSearchChange, - onRangeChange + onRangeChange, }; }; diff --git a/ngui/ui/src/components/Table/hooks/usePaginationTableSettings.ts b/ngui/ui/src/components/Table/hooks/usePaginationTableSettings.ts index 7352cab16..15434376f 100644 --- a/ngui/ui/src/components/Table/hooks/usePaginationTableSettings.ts +++ b/ngui/ui/src/components/Table/hooks/usePaginationTableSettings.ts @@ -31,7 +31,7 @@ export const usePaginationTableSettings = ({ pageSize, rowsCount, queryParamPref const [pagination, setPagination] = useState(() => ({ pageSize, - pageIndex: enablePaginationQueryParam ? getPageIndexQueryParamValue(queryKeyForPage) : 0 + pageIndex: enablePaginationQueryParam ? getPageIndexQueryParamValue(queryKeyForPage) : 0, })); const paginationState = useMemo(() => { @@ -41,14 +41,14 @@ export const usePaginationTableSettings = ({ pageSize, rowsCount, queryParamPref return { pageSize: pagination.pageSize, - pageIndex + pageIndex, }; }, [pageSize, pagination.pageIndex, pagination.pageSize, rowsCount]); if (isPaginationEnabled) { return { state: { - pagination: paginationState + pagination: paginationState, }, tableOptions: { autoResetPageIndex: false, @@ -58,8 +58,8 @@ export const usePaginationTableSettings = ({ pageSize, rowsCount, queryParamPref updateSearchParams({ [queryKeyForPage]: newPaginationState.pageIndex + 1 }); } setPagination(newPaginationState); - }) - } + }), + }, }; } @@ -67,9 +67,9 @@ export const usePaginationTableSettings = ({ pageSize, rowsCount, queryParamPref state: { pagination: { pageSize: rowsCount, - pageIndex: 0 - } + pageIndex: 0, + }, }, - tableOptions: {} + tableOptions: {}, }; }; diff --git a/ngui/ui/src/components/Table/hooks/useRowSelectionTableSettings.ts b/ngui/ui/src/components/Table/hooks/useRowSelectionTableSettings.ts index 6c2ac28a6..9f032eb4d 100644 --- a/ngui/ui/src/components/Table/hooks/useRowSelectionTableSettings.ts +++ b/ngui/ui/src/components/Table/hooks/useRowSelectionTableSettings.ts @@ -8,16 +8,16 @@ export const useRowSelectionTableSettings = ({ withSelection, rowSelection, onRo if (withSelection && !!rowSelection && isObject(rowSelection) && typeof onRowSelectionChange === "function") { return { state: { - rowSelection + rowSelection, }, tableOptions: { - onRowSelectionChange: handleChange(rowSelection, onRowSelectionChange) - } + onRowSelectionChange: handleChange(rowSelection, onRowSelectionChange), + }, }; } return { state: {}, - tableOptions: {} + tableOptions: {}, }; }; diff --git a/ngui/ui/src/components/Table/hooks/useSortingTableSettings.ts b/ngui/ui/src/components/Table/hooks/useSortingTableSettings.ts index 001f43fe0..ba0d057ae 100644 --- a/ngui/ui/src/components/Table/hooks/useSortingTableSettings.ts +++ b/ngui/ui/src/components/Table/hooks/useSortingTableSettings.ts @@ -3,6 +3,6 @@ import { getSortedRowModel } from "@tanstack/react-table"; export const useSortingTableSettings = () => ({ tableOptions: { getSortedRowModel: getSortedRowModel(), - enableSortingRemoval: false // disable the unsorted state if sorting on the column has been applied at least once - } + enableSortingRemoval: false, // disable the unsorted state if sorting on the column has been applied at least once + }, }); diff --git a/ngui/ui/src/components/Table/hooks/useSticky.ts b/ngui/ui/src/components/Table/hooks/useSticky.ts index d69d7da30..c87da43b0 100644 --- a/ngui/ui/src/components/Table/hooks/useSticky.ts +++ b/ngui/ui/src/components/Table/hooks/useSticky.ts @@ -45,13 +45,13 @@ export const useSticky = ({ headerRef, stickySettings }) => { return { stickyHeaderCellStyles: stickyHeader ? { - backgroundColor: "white" + backgroundColor: "white", } : {}, stickyTableStyles: stickyHeader ? { - borderCollapse: "separate" + borderCollapse: "separate", } - : {} + : {}, }; }; diff --git a/ngui/ui/src/components/Table/utils/globalFilterFn.ts b/ngui/ui/src/components/Table/utils/globalFilterFn.ts index e283900c7..1e23818ed 100644 --- a/ngui/ui/src/components/Table/utils/globalFilterFn.ts +++ b/ngui/ui/src/components/Table/utils/globalFilterFn.ts @@ -20,7 +20,7 @@ const searchFilter = ({ row, filterValue, columnId, columns }) => { if (typeof columnDef?.searchFn === "function") { return columnDef.searchFn(row.getValue(columnId), search, { row, - columnId + columnId, }); } diff --git a/ngui/ui/src/components/TableCellActions/TableCellActions.tsx b/ngui/ui/src/components/TableCellActions/TableCellActions.tsx index a8f799242..7ff4b9e08 100644 --- a/ngui/ui/src/components/TableCellActions/TableCellActions.tsx +++ b/ngui/ui/src/components/TableCellActions/TableCellActions.tsx @@ -19,7 +19,7 @@ const renderActions = (items, allowedItems, isGetAllowedActionsLoading) => { tooltip={ item.tooltip ?? { show: true, - value: + value: , } } /> @@ -38,7 +38,7 @@ const TableCellActions = ({ items, entityId, entityType }) => { return (
    {renderActions(items, allowedItems, isGetAllowedActionsLoading)} diff --git a/ngui/ui/src/components/TableLoader/TableLoader.styles.ts b/ngui/ui/src/components/TableLoader/TableLoader.styles.ts index 34551be24..2fdb53482 100644 --- a/ngui/ui/src/components/TableLoader/TableLoader.styles.ts +++ b/ngui/ui/src/components/TableLoader/TableLoader.styles.ts @@ -2,11 +2,11 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ secondRow: { - opacity: 0.5 + opacity: 0.5, }, thirdRow: { - opacity: 0.25 - } + opacity: 0.25, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Tabs/Tabs.styles.ts b/ngui/ui/src/components/Tabs/Tabs.styles.ts index fabe30e8d..ff0eb767c 100644 --- a/ngui/ui/src/components/Tabs/Tabs.styles.ts +++ b/ngui/ui/src/components/Tabs/Tabs.styles.ts @@ -2,8 +2,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()(() => ({ hiddenTabScrollButton: { - display: "none" - } + display: "none", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Tabs/Tabs.tsx b/ngui/ui/src/components/Tabs/Tabs.tsx index 93ca7b466..bfac1e44e 100644 --- a/ngui/ui/src/components/Tabs/Tabs.tsx +++ b/ngui/ui/src/components/Tabs/Tabs.tsx @@ -15,8 +15,8 @@ const Tabs = ({ children, variant = "scrollable", indicatorColor = "secondary", allowScrollButtonsMobile TabScrollButtonProps={{ classes: { - disabled: isScrollable ? classes.hiddenTabScrollButton : "" - } + disabled: isScrollable ? classes.hiddenTabScrollButton : "", + }, }} {...rest} > diff --git a/ngui/ui/src/components/TabsWrapper/TabsWrapper.tsx b/ngui/ui/src/components/TabsWrapper/TabsWrapper.tsx index 2706db78e..5a771a76a 100644 --- a/ngui/ui/src/components/TabsWrapper/TabsWrapper.tsx +++ b/ngui/ui/src/components/TabsWrapper/TabsWrapper.tsx @@ -48,7 +48,7 @@ const getBuildedTabs = ({ tabs, name, activeTab, keepTabContentMounted = false } data-test-id={item.dataTestId} style={{ fontWeight: item.isBold && "bold" }} /> - ) : null + ) : null, ], tabContents: [ ...result.tabContents, @@ -62,8 +62,8 @@ const getBuildedTabs = ({ tabs, name, activeTab, keepTabContentMounted = false } > {activeTab === item.title || keepTabContentMounted ? item.node : null} - ) : null - ] + ) : null, + ], }; }, { tabHeaders: [], tabContents: [] } @@ -79,7 +79,7 @@ const Tabs = ({ tabsProps, headerAdornment, headerSx }) => { queryTabName, queryParamsOnChangeBlacklist = [], keepTabContentMounted = false, - shouldhaveQueryParam = true + shouldhaveQueryParam = true, } = tabsProps; const tabName = queryTabName || TAB_QUERY_PARAM_NAME; diff --git a/ngui/ui/src/components/TagsBreakdown/TagsBreakdown.tsx b/ngui/ui/src/components/TagsBreakdown/TagsBreakdown.tsx index 2ed865a62..5226d3a9a 100644 --- a/ngui/ui/src/components/TagsBreakdown/TagsBreakdown.tsx +++ b/ngui/ui/src/components/TagsBreakdown/TagsBreakdown.tsx @@ -40,7 +40,7 @@ const useLineData = (breakdown = {}) => { id = BREAKDOWN_COUNT_KEY, name, purpose, - type + type, } = getResourceTypeBreakdownByDate(date, BREAKDOWN_COUNT_KEY); return { @@ -53,11 +53,11 @@ const useLineData = (breakdown = {}) => { deletedDayBefore, name, purpose, - type - } + type, + }, }; - }) - } + }), + }, ]; }; @@ -68,7 +68,7 @@ const TagsBreakdown = ({ selectedTag, updateSelectedTag, isLoading = false, - isChartLoading = false + isChartLoading = false, }) => { const theme = useTheme(); @@ -77,7 +77,7 @@ const TagsBreakdown = ({ const getChartHeader = (tag) => { const chartHeader = { null: , - undefined: + undefined: , }; if (isChartLoading) { return ; diff --git a/ngui/ui/src/components/TagsBreakdown/TagsBreakdownTable/TagsBreakdownTable.tsx b/ngui/ui/src/components/TagsBreakdown/TagsBreakdownTable/TagsBreakdownTable.tsx index 70b3c0884..7e6ba90d9 100644 --- a/ngui/ui/src/components/TagsBreakdown/TagsBreakdownTable/TagsBreakdownTable.tsx +++ b/ngui/ui/src/components/TagsBreakdown/TagsBreakdownTable/TagsBreakdownTable.tsx @@ -26,8 +26,8 @@ const TagsBreakdownTable = ({ data, appliedRange, isLoading, selectedTag, onShow accessorFn: ({ tag }) => tag ?? intl.formatMessage({ - id: "(untagged)" - }) + id: "(untagged)", + }), }, { header: ( @@ -39,7 +39,7 @@ const TagsBreakdownTable = ({ data, appliedRange, isLoading, selectedTag, onShow /> ), - accessorKey: "count" + accessorKey: "count", }, { header: ( @@ -53,7 +53,7 @@ const TagsBreakdownTable = ({ data, appliedRange, isLoading, selectedTag, onShow ), accessorKey: "cost", cell: ({ cell }) => , - defaultSort: "desc" + defaultSort: "desc", }, { header: ( @@ -72,12 +72,12 @@ const TagsBreakdownTable = ({ data, appliedRange, isLoading, selectedTag, onShow icon: , dataTestId: `btn_toggle_${index}`, color: tag === selectedTag ? "secondary" : "primary", - action: () => onShowOnChartClick(tag) - } + action: () => onShowOnChartClick(tag), + }, ]} /> - ) - } + ), + }, ], [appliedRange.startSecondsTimestamp, appliedRange.endSecondsTimestamp, intl, selectedTag, onShowOnChartClick] ); @@ -91,7 +91,7 @@ const TagsBreakdownTable = ({ data, appliedRange, isLoading, selectedTag, onShow columns={columns} localization={{ emptyMessageId: "noTags" }} dataTestIds={{ - container: "tags_table" + container: "tags_table", }} queryParamPrefix="tags" pageSize={50} diff --git a/ngui/ui/src/components/TendencyFormattedMessage/TendencyFormattedMessage.tsx b/ngui/ui/src/components/TendencyFormattedMessage/TendencyFormattedMessage.tsx index d5fadcb41..77d45a676 100644 --- a/ngui/ui/src/components/TendencyFormattedMessage/TendencyFormattedMessage.tsx +++ b/ngui/ui/src/components/TendencyFormattedMessage/TendencyFormattedMessage.tsx @@ -4,7 +4,7 @@ import { TENDENCY } from "utils/constants"; const getTendencyMessageId = (tendency) => ({ [TENDENCY.MORE]: "moreIsBetter", - [TENDENCY.LESS]: "lessIsBetter" + [TENDENCY.LESS]: "lessIsBetter", })[tendency]; const TendencyFormattedMessage = ({ tendency }) => ; diff --git a/ngui/ui/src/components/TextBlock/TextBlock.styles.ts b/ngui/ui/src/components/TextBlock/TextBlock.styles.ts index a47b30b98..dfa96b4c1 100644 --- a/ngui/ui/src/components/TextBlock/TextBlock.styles.ts +++ b/ngui/ui/src/components/TextBlock/TextBlock.styles.ts @@ -2,14 +2,14 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ success: { - color: theme.palette.success.main + color: theme.palette.success.main, }, error: { - color: theme.palette.error.main + color: theme.palette.error.main, }, warning: { - color: theme.palette.warning.main - } + color: theme.palette.warning.main, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/ThemeProviderWrapper/ThemeProviderWrapper.tsx b/ngui/ui/src/components/ThemeProviderWrapper/ThemeProviderWrapper.tsx index 66a56a03d..5dfa322b6 100644 --- a/ngui/ui/src/components/ThemeProviderWrapper/ThemeProviderWrapper.tsx +++ b/ngui/ui/src/components/ThemeProviderWrapper/ThemeProviderWrapper.tsx @@ -8,11 +8,11 @@ import getTheme from "theme"; const muiCache = createCache({ key: "mui", - prepend: true + prepend: true, }); const tssCache = createCache({ - key: "tss" + key: "tss", }); const ThemeProviderWrapper = ({ children }) => { diff --git a/ngui/ui/src/components/ThemeSettings/ThemeSettings.tsx b/ngui/ui/src/components/ThemeSettings/ThemeSettings.tsx index 8159e4722..1c43dfbe5 100644 --- a/ngui/ui/src/components/ThemeSettings/ThemeSettings.tsx +++ b/ngui/ui/src/components/ThemeSettings/ThemeSettings.tsx @@ -75,16 +75,16 @@ const ThemeSettings = () => { const tabs = [ { title: "typography", - node: + node: , }, { title: "palette", - node: + node: , }, { title: "chartPalette", - node: - } + node: , + }, ]; return ( @@ -92,7 +92,7 @@ const ThemeSettings = () => { tabsProps={{ tabs, defaultTab: "typography", - name: "theme-settings" + name: "theme-settings", }} /> ); diff --git a/ngui/ui/src/components/Tooltip/Tooltip.tsx b/ngui/ui/src/components/Tooltip/Tooltip.tsx index 87750bb96..bd3731d9f 100644 --- a/ngui/ui/src/components/Tooltip/Tooltip.tsx +++ b/ngui/ui/src/components/Tooltip/Tooltip.tsx @@ -7,8 +7,8 @@ const StyledTooltip = withStyles(MuiTooltip, (theme) => ({ color: "inherit", fontSize: theme.typography.pxToRem(12), border: "1px solid", - borderColor: theme.palette.info.main - } + borderColor: theme.palette.info.main, + }, })); const Tooltip = ({ enterTouchDelay = 0, children, placement = "right", title, ...rest }: TooltipProps) => { diff --git a/ngui/ui/src/components/TopAlertWrapper/TopAlert.styles.ts b/ngui/ui/src/components/TopAlertWrapper/TopAlert.styles.ts index ff8d22033..e76e02f4d 100644 --- a/ngui/ui/src/components/TopAlertWrapper/TopAlert.styles.ts +++ b/ngui/ui/src/components/TopAlertWrapper/TopAlert.styles.ts @@ -9,30 +9,30 @@ const useStyles = makeStyles()((theme) => ({ width: "100%", display: "flex", justifyContent: "center", - alignItems: "center" - } + alignItems: "center", + }, }, secondary: { backgroundColor: theme.palette.secondary.main, color: theme.palette.secondary.contrastText, ".close-alert-button": { - color: theme.palette.secondary.contrastText - } + color: theme.palette.secondary.contrastText, + }, }, success: { backgroundColor: theme.palette.success.main, color: theme.palette.common.white, ".close-alert-button": { - color: theme.palette.common.white - } + color: theme.palette.common.white, + }, }, info: { backgroundColor: theme.palette.info.main, color: theme.palette.common.white, ".close-alert-button": { - color: theme.palette.common.white - } - } + color: theme.palette.common.white, + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/TopAlertWrapper/TopAlertWrapper.tsx b/ngui/ui/src/components/TopAlertWrapper/TopAlertWrapper.tsx index 6672272aa..2cb67eb76 100644 --- a/ngui/ui/src/components/TopAlertWrapper/TopAlertWrapper.tsx +++ b/ngui/ui/src/components/TopAlertWrapper/TopAlertWrapper.tsx @@ -100,7 +100,7 @@ const TopAlertWrapper = ({ blacklistIds = [] }: TopAlertWrapperProps) => { onTrigger: () => { updateOrganizationTopAlert({ id: ALERT_TYPES.INACTIVE_ORGANIZATION, triggered: true }); }, - dataTestId: "top_alert_inactive_organization" + dataTestId: "top_alert_inactive_organization", }, { id: ALERT_TYPES.DATA_SOURCES_ARE_PROCESSING, @@ -113,7 +113,7 @@ const TopAlertWrapper = ({ blacklistIds = [] }: TopAlertWrapperProps) => { onTrigger: () => { updateOrganizationTopAlert({ id: ALERT_TYPES.DATA_SOURCES_ARE_PROCESSING, triggered: true }); }, - dataTestId: "top_alert_data_processing" + dataTestId: "top_alert_data_processing", }, { id: ALERT_TYPES.DATA_SOURCES_PROCEEDED, @@ -128,7 +128,7 @@ const TopAlertWrapper = ({ blacklistIds = [] }: TopAlertWrapperProps) => { updateOrganizationTopAlert({ id: ALERT_TYPES.DATA_SOURCES_ARE_PROCESSING, closed: false, triggered: false }); updateOrganizationTopAlert({ id: ALERT_TYPES.DATA_SOURCES_PROCEEDED, closed: false, triggered: false }); }, - dataTestId: "top_alert_data_proceeded" + dataTestId: "top_alert_data_proceeded", }, { id: ALERT_TYPES.OPEN_SOURCE_ANNOUNCEMENT, @@ -151,7 +151,7 @@ const TopAlertWrapper = ({ blacklistIds = [] }: TopAlertWrapperProps) => { > {chunks} - ) + ), }} /> @@ -161,8 +161,8 @@ const TopAlertWrapper = ({ blacklistIds = [] }: TopAlertWrapperProps) => { onClose: () => { updateOrganizationTopAlert({ id: ALERT_TYPES.OPEN_SOURCE_ANNOUNCEMENT, closed: true }); }, - dataTestId: "top_alert_open_source_announcement" - } + dataTestId: "top_alert_open_source_announcement", + }, ]; }, [ storedAlerts, @@ -171,7 +171,7 @@ const TopAlertWrapper = ({ blacklistIds = [] }: TopAlertWrapperProps) => { hasDataSourceInProcessing, isExistingUser, userId, - updateOrganizationTopAlert + updateOrganizationTopAlert, ]); const currentAlert = useMemo( diff --git a/ngui/ui/src/components/TopAlertWrapper/actionCreators.ts b/ngui/ui/src/components/TopAlertWrapper/actionCreators.ts index fb8af927c..a79965872 100644 --- a/ngui/ui/src/components/TopAlertWrapper/actionCreators.ts +++ b/ngui/ui/src/components/TopAlertWrapper/actionCreators.ts @@ -4,6 +4,6 @@ export const updateOrganizationTopAlert = (organizationId, alert) => ({ type: UPDATE_ORGANIZATION_TOP_ALERT, payload: { organizationId, - alert - } + alert, + }, }); diff --git a/ngui/ui/src/components/TopAlertWrapper/constants.ts b/ngui/ui/src/components/TopAlertWrapper/constants.ts index 92f3dd985..8c1deed34 100644 --- a/ngui/ui/src/components/TopAlertWrapper/constants.ts +++ b/ngui/ui/src/components/TopAlertWrapper/constants.ts @@ -2,7 +2,7 @@ export const ALERT_TYPES = Object.freeze({ DATA_SOURCES_ARE_PROCESSING: 2, DATA_SOURCES_PROCEEDED: 3, OPEN_SOURCE_ANNOUNCEMENT: 4, - INACTIVE_ORGANIZATION: 5 + INACTIVE_ORGANIZATION: 5, }); export const IS_EXISTING_USER = "isExistingUser"; diff --git a/ngui/ui/src/components/TopAlertWrapper/reducer.ts b/ngui/ui/src/components/TopAlertWrapper/reducer.ts index 67e5cfff1..8d82ccaab 100644 --- a/ngui/ui/src/components/TopAlertWrapper/reducer.ts +++ b/ngui/ui/src/components/TopAlertWrapper/reducer.ts @@ -4,7 +4,7 @@ export const ALERTS = "alerts"; export const ALERT_TYPE = Object.freeze({ COMMON_ALERTS: "commonAlerts", - ORGANIZATION_ALERTS: "organizationAlerts" + ORGANIZATION_ALERTS: "organizationAlerts", }); const updateAlertState = (alerts, newAlertState) => @@ -21,7 +21,7 @@ const reducer = (state = {}, action) => { switch (action.type) { case UPDATE_ORGANIZATION_TOP_ALERT: { const { - payload: { alert, organizationId } + payload: { alert, organizationId }, } = action; const currentOrganizationAlerts = state[organizationId] || []; @@ -30,7 +30,7 @@ const reducer = (state = {}, action) => { ...state, [organizationId]: alertExists(currentOrganizationAlerts, alert) ? updateAlertState(currentOrganizationAlerts, alert) - : addAlertState(currentOrganizationAlerts, alert) + : addAlertState(currentOrganizationAlerts, alert), }; } default: diff --git a/ngui/ui/src/components/TopResourcesExpensesCard/TopResourcesExpensesCard.styles.ts b/ngui/ui/src/components/TopResourcesExpensesCard/TopResourcesExpensesCard.styles.ts index d2ca54b82..c19ca002b 100644 --- a/ngui/ui/src/components/TopResourcesExpensesCard/TopResourcesExpensesCard.styles.ts +++ b/ngui/ui/src/components/TopResourcesExpensesCard/TopResourcesExpensesCard.styles.ts @@ -7,17 +7,17 @@ const useStyles = makeStyles()((theme) => ({ item: { position: "relative", // for bar positioning padding: "5px", - ":not(:last-child)": { marginBottom: theme.spacing(SPACING_2) } + ":not(:last-child)": { marginBottom: theme.spacing(SPACING_2) }, }, itemContent: { position: "relative", // to set item content above bar (which is absolute) - flexGrow: 1 + flexGrow: 1, }, flexRow: { display: "flex", flexDirection: "row", width: "100%", - alignItems: "center" + alignItems: "center", }, bar: { position: "absolute", @@ -25,8 +25,8 @@ const useStyles = makeStyles()((theme) => ({ left: 0, height: "100%", backgroundColor: lighten(theme.palette.lightBlue.main, ALPHA), - borderRadius: "4px" - } + borderRadius: "4px", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/TopResourcesExpensesCard/TopResourcesExpensesCard.tsx b/ngui/ui/src/components/TopResourcesExpensesCard/TopResourcesExpensesCard.tsx index bb4e159a0..82420c586 100644 --- a/ngui/ui/src/components/TopResourcesExpensesCard/TopResourcesExpensesCard.tsx +++ b/ngui/ui/src/components/TopResourcesExpensesCard/TopResourcesExpensesCard.tsx @@ -73,7 +73,7 @@ const TopResourcesView = ({ data }) => { resource_id: resourceId, shareable, cloud_account_id: cloudId, - cloud_account_name: cloudName + cloud_account_name: cloudName, } = original; return ( { icon={} tooltip={{ show: true, - messageId: "goToResources" + messageId: "goToResources", }} onClick={goToResources} isLoading={isLoading} @@ -164,11 +164,11 @@ const TopResourcesExpensesCard = ({ cleanExpenses, isLoading = false }) => { } anchorOrigin={{ vertical: "bottom", - horizontal: "left" + horizontal: "left", }} transformOrigin={{ vertical: "top", - horizontal: "left" + horizontal: "left", }} menu={ @@ -201,7 +201,7 @@ const TopResourcesExpensesCard = ({ cleanExpenses, isLoading = false }) => { dataTestIds={{ wrapper: "block_top_resources", title: "lbl_top_resources", - titleCaption: "p_last_30_days" + titleCaption: "p_last_30_days", }} elevation={0} > diff --git a/ngui/ui/src/components/Tour/Tooltip/Tooltip.styles.ts b/ngui/ui/src/components/Tour/Tooltip/Tooltip.styles.ts index 113afb6b9..5a7fb2109 100644 --- a/ngui/ui/src/components/Tour/Tooltip/Tooltip.styles.ts +++ b/ngui/ui/src/components/Tour/Tooltip/Tooltip.styles.ts @@ -6,16 +6,16 @@ const useStyles = makeStyles()((theme) => ({ maxWidth: 450, position: "fixed", zIndex: 9998, - transition: "all 0.1s ease-out" + transition: "all 0.1s ease-out", }, skipButton: { - marginRight: "auto" + marginRight: "auto", }, backButton: { - marginLeft: "auto" + marginLeft: "auto", }, nextButton: { - marginLeft: "auto" + marginLeft: "auto", }, arrowContainer: { position: "absolute", @@ -26,7 +26,7 @@ const useStyles = makeStyles()((theme) => ({ alignItems: "center", left: "50%", bottom: 0, - transform: "translate(-50%, calc(100% + 10px))" + transform: "translate(-50%, calc(100% + 10px))", }, arrow: { color: theme.palette.common.white, @@ -37,14 +37,14 @@ const useStyles = makeStyles()((theme) => ({ 50% { transform: translateY(-5px); } - `} 1s infinite ease-in-out` + `} 1s infinite ease-in-out`, }, hidden: { - opacity: 0 + opacity: 0, }, visible: { - opacity: 1 - } + opacity: 1, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Tour/Tooltip/Tooltip.tsx b/ngui/ui/src/components/Tour/Tooltip/Tooltip.tsx index 0cfa5c267..73990966f 100644 --- a/ngui/ui/src/components/Tour/Tooltip/Tooltip.tsx +++ b/ngui/ui/src/components/Tour/Tooltip/Tooltip.tsx @@ -38,7 +38,7 @@ const Tooltip = ({ coords, onBack, onNext, onSkip, stepIndex, size, stepContent: const { result: { top, left }, - isTargetOffscreen + isTargetOffscreen, } = usePosition(coords, tooltipContentRect, scrollHelpHeight); const angle = getAngle(tooltipDomNode, coords); @@ -83,7 +83,7 @@ const Tooltip = ({ coords, onBack, onNext, onSkip, stepIndex, size, stepContent: - + diff --git a/ngui/ui/src/components/Tour/Tooltip/usePosition.ts b/ngui/ui/src/components/Tour/Tooltip/usePosition.ts index 0a510be1e..1e8f24d7b 100644 --- a/ngui/ui/src/components/Tour/Tooltip/usePosition.ts +++ b/ngui/ui/src/components/Tour/Tooltip/usePosition.ts @@ -10,7 +10,7 @@ import { isEmptyObject } from "utils/objects"; const getUpdateTooltipRectCoordinates = (tooltipRect, coordinates) => ({ width: tooltipRect.width, height: tooltipRect.height, - ...coordinates + ...coordinates, }); // this is gap between element and tooltip or tooltip and screen border diff --git a/ngui/ui/src/components/Tour/TourUi/TourUi.styles.ts b/ngui/ui/src/components/Tour/TourUi/TourUi.styles.ts index 94444c7e7..ac58df6e0 100644 --- a/ngui/ui/src/components/Tour/TourUi/TourUi.styles.ts +++ b/ngui/ui/src/components/Tour/TourUi/TourUi.styles.ts @@ -5,7 +5,7 @@ const useStyles = makeStyles()((theme) => ({ zIndex: theme.zIndex.drawer + 1, position: "fixed", boxShadow: "0 0 0 9999px rgba(0, 0, 0, 0.5)", - transition: "all 0.1s ease-out" + transition: "all 0.1s ease-out", }, invisibleBackgroundEventsCapturer: { zIndex: theme.zIndex.drawer + 1, @@ -13,8 +13,8 @@ const useStyles = makeStyles()((theme) => ({ top: 0, left: 0, width: "100vw", - height: "100vh" - } + height: "100vh", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/Tour/TourUi/TourUi.tsx b/ngui/ui/src/components/Tour/TourUi/TourUi.tsx index 7a5ea76f4..d3c8904ab 100644 --- a/ngui/ui/src/components/Tour/TourUi/TourUi.tsx +++ b/ngui/ui/src/components/Tour/TourUi/TourUi.tsx @@ -114,7 +114,7 @@ const TourUi = ({ steps, close, onStepChange }) => { top: `${coords.top}px`, left: `${coords.left}px`, width: `${coords.width}px`, - height: `${coords.height}px` + height: `${coords.height}px`, }} />
    diff --git a/ngui/ui/src/components/Tour/actionCreators.ts b/ngui/ui/src/components/Tour/actionCreators.ts index ef7f6de31..cc37f68ae 100644 --- a/ngui/ui/src/components/Tour/actionCreators.ts +++ b/ngui/ui/src/components/Tour/actionCreators.ts @@ -3,16 +3,16 @@ import { START_TOUR, FINISH_TOUR, UPDATE_TOUR_STEP } from "./actionTypes"; export const startTour = (label, stepId) => ({ label, type: START_TOUR, - payload: stepId + payload: stepId, }); export const updateTourStep = (label, stepId) => ({ label, type: UPDATE_TOUR_STEP, - payload: stepId + payload: stepId, }); export const finishTour = (label) => ({ label, - type: FINISH_TOUR + type: FINISH_TOUR, }); diff --git a/ngui/ui/src/components/Tour/definitions.tsx b/ngui/ui/src/components/Tour/definitions.tsx index 18f64f758..132e61b0e 100644 --- a/ngui/ui/src/components/Tour/definitions.tsx +++ b/ngui/ui/src/components/Tour/definitions.tsx @@ -2,7 +2,7 @@ import { FormattedMessage } from "react-intl"; import { ENVIRONMENT_TOUR_IDS_BY_DYNAMIC_FIELDS, ENVIRONMENT_SOFTWARE_FIELD, - ENVIRONMENT_JIRA_TICKETS_FIELD + ENVIRONMENT_JIRA_TICKETS_FIELD, } from "utils/constants"; import { ENVIRONMENTS_TOUR, PRODUCT_TOUR } from "./reducer"; @@ -11,7 +11,7 @@ export const ENVIRONMENTS_TOUR_IDS = { ADD_BUTTON: "environmentsAddButton", STATUS_CELL: "environmentsStatus", JIRA_CELL: "environmentsJiraTickets", - SOFT_CELL: "environmentsSoftware" + SOFT_CELL: "environmentsSoftware", }; const ENVIRONMENTS_TOUR_STEPS = [ @@ -21,7 +21,7 @@ const ENVIRONMENTS_TOUR_STEPS = [ content: ( {chunks} }} /> ), - dataTestId: "tour-environments-page-header" + dataTestId: "tour-environments-page-header", }, { id: ENVIRONMENTS_TOUR_IDS.ADD_BUTTON, @@ -30,19 +30,19 @@ const ENVIRONMENTS_TOUR_STEPS = [ {chunks} }} /> ), dataTestId: "tour-environments-add-button", - missable: true + missable: true, }, { id: ENVIRONMENTS_TOUR_IDS.STATUS_CELL, target: ENVIRONMENTS_TOUR_IDS.STATUS_CELL, content: , - dataTestId: "tour-environments-status" + dataTestId: "tour-environments-status", }, { id: ENVIRONMENTS_TOUR_IDS.JIRA_CELL, target: ENVIRONMENT_TOUR_IDS_BY_DYNAMIC_FIELDS[ENVIRONMENT_JIRA_TICKETS_FIELD], content: , - dataTestId: "tour-environments-jira-tickets-tour-content" + dataTestId: "tour-environments-jira-tickets-tour-content", }, { id: ENVIRONMENTS_TOUR_IDS.SOFT_CELL, @@ -50,8 +50,8 @@ const ENVIRONMENTS_TOUR_STEPS = [ content: ( {chunks} }} /> ), - dataTestId: "tour-environments-software-tour-content" - } + dataTestId: "tour-environments-software-tour-content", + }, ]; export const PRODUCT_TOUR_IDS = { @@ -62,7 +62,7 @@ export const PRODUCT_TOUR_IDS = { DATA_SOURCES: "dataSources", POOLS: "pools", USERS: "userManagement", - MENU_DRAWER: "menuDrawer" + MENU_DRAWER: "menuDrawer", }; const PRODUCT_TOUR_STEPS = [ @@ -70,47 +70,47 @@ const PRODUCT_TOUR_STEPS = [ id: PRODUCT_TOUR_IDS.HOME, content: , dataTestId: "p_tour_home", - target: PRODUCT_TOUR_IDS.HOME + target: PRODUCT_TOUR_IDS.HOME, }, { id: PRODUCT_TOUR_IDS.ENVIRONMENTS, content: , dataTestId: "p_tour_environments", - target: PRODUCT_TOUR_IDS.ENVIRONMENTS + target: PRODUCT_TOUR_IDS.ENVIRONMENTS, }, { id: PRODUCT_TOUR_IDS.RECOMMENDATIONS, content: , dataTestId: "p_tour_recommendations", - target: PRODUCT_TOUR_IDS.RECOMMENDATIONS + target: PRODUCT_TOUR_IDS.RECOMMENDATIONS, }, { id: PRODUCT_TOUR_IDS.RESOURCES, content: , dataTestId: "p_tour_resources", - target: PRODUCT_TOUR_IDS.RESOURCES + target: PRODUCT_TOUR_IDS.RESOURCES, }, { id: PRODUCT_TOUR_IDS.DATA_SOURCES, content: , dataTestId: "p_tour_data_source", - target: PRODUCT_TOUR_IDS.DATA_SOURCES + target: PRODUCT_TOUR_IDS.DATA_SOURCES, }, { id: PRODUCT_TOUR_IDS.POOLS, content: , dataTestId: "p_tour_pools", - target: PRODUCT_TOUR_IDS.POOLS + target: PRODUCT_TOUR_IDS.POOLS, }, { id: PRODUCT_TOUR_IDS.USERS, content: , dataTestId: "p_tour_user_management", - target: PRODUCT_TOUR_IDS.USERS - } + target: PRODUCT_TOUR_IDS.USERS, + }, ]; export const TOURS_DEFINITIONS = Object.freeze({ [ENVIRONMENTS_TOUR]: ENVIRONMENTS_TOUR_STEPS, - [PRODUCT_TOUR]: PRODUCT_TOUR_STEPS + [PRODUCT_TOUR]: PRODUCT_TOUR_STEPS, }); diff --git a/ngui/ui/src/components/Tour/reducer.ts b/ngui/ui/src/components/Tour/reducer.ts index 70be864df..deed5c333 100644 --- a/ngui/ui/src/components/Tour/reducer.ts +++ b/ngui/ui/src/components/Tour/reducer.ts @@ -7,12 +7,12 @@ export const ENVIRONMENTS_TOUR = "environmentsTour"; const INITIAL_STATE = { [PRODUCT_TOUR]: { isOpen: false, - isFinished: false + isFinished: false, }, [ENVIRONMENTS_TOUR]: { isOpen: false, - isFinished: false - } + isFinished: false, + }, }; const reducer = (state = INITIAL_STATE, action) => { @@ -24,8 +24,8 @@ const reducer = (state = INITIAL_STATE, action) => { [action.label]: { isOpen: true, isFinished: false, - stepId: action.payload - } + stepId: action.payload, + }, }; } case FINISH_TOUR: { @@ -33,8 +33,8 @@ const reducer = (state = INITIAL_STATE, action) => { ...state, [action.label]: { isOpen: false, - isFinished: true - } + isFinished: true, + }, }; } default: diff --git a/ngui/ui/src/components/TrafficExpenses/ShowLessThanValueSwitch/ShowLessThanValueSwitch.tsx b/ngui/ui/src/components/TrafficExpenses/ShowLessThanValueSwitch/ShowLessThanValueSwitch.tsx index 67e063996..a7fbf58e8 100644 --- a/ngui/ui/src/components/TrafficExpenses/ShowLessThanValueSwitch/ShowLessThanValueSwitch.tsx +++ b/ngui/ui/src/components/TrafficExpenses/ShowLessThanValueSwitch/ShowLessThanValueSwitch.tsx @@ -21,7 +21,7 @@ const ShowLessThanValueSwitch = ({ disabled = false }) => { labelPlacement="start" sx={{ float: "right", - marginRight: "0" + marginRight: "0", }} /> ); diff --git a/ngui/ui/src/components/TrafficExpenses/TrafficExpenses.test.tsx b/ngui/ui/src/components/TrafficExpenses/TrafficExpenses.test.tsx index 791025d35..3c64f639c 100644 --- a/ngui/ui/src/components/TrafficExpenses/TrafficExpenses.test.tsx +++ b/ngui/ui/src/components/TrafficExpenses/TrafficExpenses.test.tsx @@ -12,7 +12,7 @@ it("renders without crashing", () => { root.render( messageId: "value(parenthesisValue)", messageValues: { value: , - parenthesisValue: + parenthesisValue: , }, action: () => onDataSourceChange(cloudType), - dataTestId: `${cloudType}_option` + dataTestId: `${cloudType}_option`, })); const DATA_SOURCE_PARAM = "dataSource"; @@ -52,10 +52,10 @@ const Summary = ({ isLoading, totalCost, totalUsage }) => { key: "totalExpenses", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalCost + value: totalCost, }, captionMessageId: "totalExpenses", - isLoading + isLoading, }, { key: "totalUsage", @@ -63,12 +63,12 @@ const Summary = ({ isLoading, totalCost, totalUsage }) => { valueComponentProps: { id: "{value}", values: { - value: - } + value: , + }, }, captionMessageId: "totalUsage", - isLoading - } + isLoading, + }, ]; return ; @@ -148,7 +148,7 @@ const TrafficExpenses = ({ expenses, isLoading = false }) => { sStartDate: startDateTimestamp, sEndDate: endDateTimestamp, [NETWORK_TRAFFIC_FROM_FILTER]: fromFilters, - [NETWORK_TRAFFIC_TO_FILTER]: toFilters + [NETWORK_TRAFFIC_TO_FILTER]: toFilters, }) ); }; @@ -157,7 +157,7 @@ const TrafficExpenses = ({ expenses, isLoading = false }) => {
    @@ -212,7 +212,7 @@ const TrafficExpenses = ({ expenses, isLoading = false }) => { data={tableData} columns={columns} localization={{ - emptyMessageId: showLessThanValue ? "noTrafficExpenses" : "noTrafficExpensesHint" + emptyMessageId: showLessThanValue ? "noTrafficExpenses" : "noTrafficExpensesHint", }} /> )} diff --git a/ngui/ui/src/components/TrafficExpenses/TrafficExpensesMocked.tsx b/ngui/ui/src/components/TrafficExpenses/TrafficExpensesMocked.tsx index ea6c17623..ee5013a70 100644 --- a/ngui/ui/src/components/TrafficExpenses/TrafficExpensesMocked.tsx +++ b/ngui/ui/src/components/TrafficExpenses/TrafficExpensesMocked.tsx @@ -11,15 +11,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, usage: 1.1294000000000002, - cost: 112.497 + cost: 112.497, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -27,15 +27,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "eu-west-3", latitude: 48.85717, - longitude: 2.34293 + longitude: 2.34293, }, usage: 2.0061, - cost: 33.01 + cost: 33.01, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -43,15 +43,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "ap-northeast-1", latitude: 35.41, - longitude: 139.42 + longitude: 139.42, }, usage: 3.0392, - cost: 116.05 + cost: 116.05, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -59,16 +59,16 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, usage: 1.1190000000000002, - cost: 22.0998 + cost: 22.0998, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -76,15 +76,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, usage: 8.222699999999998, - cost: 131.648 + cost: 131.648, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -92,15 +92,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, usage: 1.20027, - cost: 2.696 + cost: 2.696, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -108,15 +108,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "me-south-1", latitude: 25.9304142, - longitude: 50.6377716 + longitude: 50.6377716, }, usage: 1.9679, - cost: 3.94 + cost: 3.94, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -124,15 +124,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "us-east-2", latitude: 39.96, - longitude: -83 + longitude: -83, }, usage: 0.0013270139000000002, - cost: 31.39928 + cost: 31.39928, }, { cloud_account_id: "45d15534-d3b6-4505-986a-b0649d056a88", @@ -140,13 +140,13 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { - name: "Inter-Region" + name: "Inter-Region", }, usage: 2.0535662757999993, - cost: 42.206 + cost: 42.206, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -154,15 +154,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "ap-northeast-3", latitude: 34.69857, - longitude: 135.50674 + longitude: 135.50674, }, usage: 3.73, - cost: 77 + cost: 77, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -170,15 +170,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "ap-east-1", latitude: 22.25424, - longitude: 114.13624 + longitude: 114.13624, }, usage: 4.01624, - cost: 88.032 + cost: 88.032, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -186,15 +186,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "us-west-2", latitude: 46.15, - longitude: -123.88 + longitude: -123.88, }, usage: 0.0003650936, - cost: 8.1584 + cost: 8.1584, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -202,15 +202,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "ap-east-1", latitude: 22.25424, - longitude: 114.13624 + longitude: 114.13624, }, usage: 1.1190000000000002, - cost: 21.098 + cost: 21.098, }, { cloud_account_id: "45d15534-d3b6-4505-986a-b0649d056a88", @@ -218,13 +218,13 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { - name: "Inter-Region" + name: "Inter-Region", }, usage: 0.139540635049342, - cost: 120.002 + cost: 120.002, }, { cloud_account_id: "45d15534-d3b6-4505-986a-b0649d056a88", @@ -232,13 +232,13 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { - name: "external" + name: "external", }, usage: 1.8, - cost: 51.002 + cost: 51.002, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -246,15 +246,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "sa-east-1", latitude: -23.6815, - longitude: -46.8754 + longitude: -46.8754, }, usage: 6.02714, - cost: 111.2054 + cost: 111.2054, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -262,15 +262,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "ap-southeast-2", latitude: -33.8, - longitude: 151.2 + longitude: 151.2, }, usage: 2.981, - cost: 25.9 + cost: 25.9, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -278,15 +278,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "me-south-1", latitude: 25.9304142, - longitude: 50.6377716 + longitude: 50.6377716, }, usage: 3.73, - cost: 7 + cost: 7, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -294,15 +294,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "ap-southeast-2", latitude: -33.8, - longitude: 151.2 + longitude: 151.2, }, usage: 1.9679, - cost: 3.94 + cost: 3.94, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -310,15 +310,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "af-south-1", latitude: -33.928992, - longitude: 18.417396 + longitude: 18.417396, }, usage: 21.118, - cost: 222.2 + cost: 222.2, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -326,15 +326,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "ap-south-1", latitude: 19.07257, - longitude: 72.8673 + longitude: 72.8673, }, usage: 0.0001530883, - cost: 3.0623 + cost: 3.0623, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -342,15 +342,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "eu-west-3", latitude: 48.85717, - longitude: 2.34293 + longitude: 2.34293, }, usage: 5.221, - cost: 9.899 + cost: 9.899, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -358,15 +358,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "eu-west-2", latitude: 51.51768, - longitude: -0.11362 + longitude: -0.11362, }, usage: 1.4906799999999998, - cost: 2.982 + cost: 2.982, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -374,15 +374,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "eu-west-1", latitude: 53.35014, - longitude: -6.266155 + longitude: -6.266155, }, usage: 0.0063017779000000005, - cost: 0.00013895729999999998 + cost: 0.00013895729999999998, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -390,15 +390,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "eu-west-2", latitude: 51.51768, - longitude: -0.11362 + longitude: -0.11362, }, usage: 1.1190000000000002, - cost: 2.099 + cost: 2.099, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -406,15 +406,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "us-west-2", latitude: 46.15, - longitude: -123.88 + longitude: -123.88, }, usage: 8.348, - cost: 2.972000000000001 + cost: 2.972000000000001, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -422,15 +422,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "ap-southeast-2", latitude: -33.8, - longitude: 151.2 + longitude: 151.2, }, usage: 3.726, - cost: 8.9 + cost: 8.9, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -438,15 +438,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "ap-southeast-1", latitude: 1.29027, - longitude: 103.851959 + longitude: 103.851959, }, usage: 0.0005363322, - cost: 1.0727 + cost: 1.0727, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -454,15 +454,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, usage: 5.693, - cost: 1.1813999999999998 + cost: 1.1813999999999998, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -470,13 +470,13 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { - name: "External" + name: "External", }, usage: 0.01572249689999999, - cost: 10000 + cost: 10000, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -484,15 +484,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "ap-east-1", latitude: 22.25424, - longitude: 114.13624 + longitude: 114.13624, }, usage: 3.73, - cost: 7 + cost: 7, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -500,15 +500,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "eu-south-1", latitude: 45.4668, - longitude: 9.1905 + longitude: 9.1905, }, usage: 6.01821, - cost: 1.2036 + cost: 1.2036, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -516,15 +516,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "ca-central-1", latitude: 45.5, - longitude: -73.6 + longitude: -73.6, }, usage: 5.903699999999999, - cost: 1.182 + cost: 1.182, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -532,15 +532,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "ap-northeast-2", latitude: 37.57444, - longitude: 126.99272 + longitude: 126.99272, }, usage: 0.0003330689, - cost: 8.1388 + cost: 8.1388, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -548,15 +548,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "eu-west-1", latitude: 53.35014, - longitude: -6.266155 + longitude: -6.266155, }, usage: 0.00040749069999999996, - cost: 9.586899999999998 + cost: 9.586899999999998, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -564,15 +564,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "ap-northeast-1", latitude: 35.41, - longitude: 139.42 + longitude: 139.42, }, usage: 8.198, - cost: 1.62 + cost: 1.62, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -580,15 +580,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "eu-west-1", latitude: 53.35014, - longitude: -6.266155 + longitude: -6.266155, }, usage: 0.0002535975, - cost: 5.071 + cost: 5.071, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -596,15 +596,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "us-west-2", latitude: 46.15, - longitude: -123.88 + longitude: -123.88, }, usage: 7.863300000000001, - cost: 2.9050000000000007 + cost: 2.9050000000000007, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -612,15 +612,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "ap-southeast-1", latitude: 1.29027, - longitude: 103.851959 + longitude: 103.851959, }, usage: 1.0808, - cost: 2.119 + cost: 2.119, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -628,15 +628,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "us-east-2", latitude: 39.96, - longitude: -83 + longitude: -83, }, usage: 3.206, - cost: 6.559999999999999 + cost: 6.559999999999999, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -644,15 +644,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "ca-central-1", latitude: 45.5, - longitude: -73.6 + longitude: -73.6, }, usage: 5.59, - cost: 1.1 + cost: 1.1, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -660,15 +660,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, usage: 3.9358, - cost: 7.88 + cost: 7.88, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -676,15 +676,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "us-east-2", latitude: 39.96, - longitude: -83 + longitude: -83, }, usage: 2.8326, - cost: 5.679999999999999 + cost: 5.679999999999999, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -692,15 +692,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "ca-central-1", latitude: 45.5, - longitude: -73.6 + longitude: -73.6, }, usage: 1.59554, - cost: 3.191 + cost: 3.191, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -708,15 +708,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "ap-northeast-2", latitude: 37.57444, - longitude: 126.99272 + longitude: 126.99272, }, usage: 4.27319, - cost: 8.547 + cost: 8.547, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -724,15 +724,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, usage: 3.73, - cost: 7 + cost: 7, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -740,15 +740,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "ap-south-1", latitude: 19.07257, - longitude: 72.8673 + longitude: 72.8673, }, usage: 5.965, - cost: 1.1499999999999997 + cost: 1.1499999999999997, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -756,15 +756,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, usage: 0.0001981443, - cost: 4.563 + cost: 4.563, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -772,15 +772,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "eu-west-3", latitude: 48.85717, - longitude: 2.34293 + longitude: 2.34293, }, usage: 2.984, - cost: 5.6 + cost: 5.6, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -788,15 +788,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "af-south-1", latitude: -33.928992, - longitude: 18.417396 + longitude: 18.417396, }, usage: 1.118, - cost: 2.2 + cost: 2.2, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -804,15 +804,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, usage: 4.099, - cost: 8.1 + cost: 8.1, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -820,15 +820,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "ap-southeast-1", latitude: 1.29027, - longitude: 103.851959 + longitude: 103.851959, }, usage: 1.0839799999999999, - cost: 2.169 + cost: 2.169, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -836,15 +836,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "ap-south-1", latitude: 19.07257, - longitude: 72.8673 + longitude: 72.8673, }, usage: 0.0025480691, - cost: 5.09621 + cost: 5.09621, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -852,13 +852,13 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { - name: "External" + name: "External", }, usage: 0.006827894199999999, - cost: 9000 + cost: 9000, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -866,15 +866,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "eu-west-2", latitude: 51.51768, - longitude: -0.11362 + longitude: -0.11362, }, usage: 1.41096, - cost: 2.823 + cost: 2.823, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -882,15 +882,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, usage: 1.492, - cost: 2.8 + cost: 2.8, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -898,15 +898,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "sa-east-1", latitude: -23.6815, - longitude: -46.8754 + longitude: -46.8754, }, usage: 2.236, - cost: 4.4 + cost: 4.4, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -914,15 +914,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "sa-east-1", latitude: -23.6815, - longitude: -46.8754 + longitude: -46.8754, }, usage: 1.9679, - cost: 3.94 + cost: 3.94, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -930,15 +930,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "ap-southeast-1", latitude: 1.29027, - longitude: 103.851959 + longitude: 103.851959, }, usage: 1.4163000000000003, - cost: 2.7699 + cost: 2.7699, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -946,15 +946,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "ap-southeast-2", latitude: -33.8, - longitude: 151.2 + longitude: 151.2, }, usage: 9.95435, - cost: 1.9908 + cost: 1.9908, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -962,15 +962,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "eu-west-2", latitude: 51.51768, - longitude: -0.11362 + longitude: -0.11362, }, usage: 2.983, - cost: 5.7 + cost: 5.7, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -978,15 +978,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "eu-west-1", latitude: 53.35014, - longitude: -6.266155 + longitude: -6.266155, }, usage: 0.00036877420000000033, - cost: 8.5196 + cost: 8.5196, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -994,15 +994,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "sa-east-1", latitude: -23.6815, - longitude: -46.8754 + longitude: -46.8754, }, usage: 2.609, - cost: 5.099999999999999 + cost: 5.099999999999999, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1010,15 +1010,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "us-east-2", latitude: 39.96, - longitude: -83 + longitude: -83, }, usage: 2.502, - cost: 5.008 + cost: 5.008, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1026,15 +1026,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, to: { name: "ca-central-1", latitude: 45.5, - longitude: -73.6 + longitude: -73.6, }, usage: 6.336, - cost: 1.23 + cost: 1.23, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1042,15 +1042,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "ap-east-1", latitude: 22.25424, - longitude: 114.13624 + longitude: 114.13624, }, usage: 4.1, - cost: 8 + cost: 8, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1058,15 +1058,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "ap-northeast-1", latitude: 35.41, - longitude: 139.42 + longitude: 139.42, }, usage: 7.825, - cost: 1.55 + cost: 1.55, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1074,15 +1074,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "us-west-2", latitude: 46.15, - longitude: -123.88 + longitude: -123.88, }, usage: 5.328289999999999, - cost: 1.1611 + cost: 1.1611, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1090,15 +1090,15 @@ const TrafficExpensesMocked = () => ( from: { name: "eu-north-1", latitude: 59.33097, - longitude: 18.04856 + longitude: 18.04856, }, to: { name: "ap-south-1", latitude: 19.07257, - longitude: 72.8673 + longitude: 72.8673, }, usage: 8.576000000000001, - cost: 1.63 + cost: 1.63, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1106,15 +1106,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { name: "eu-west-3", latitude: 48.85717, - longitude: 2.34293 + longitude: 2.34293, }, usage: 1.9679, - cost: 3.94 + cost: 3.94, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1122,13 +1122,13 @@ const TrafficExpensesMocked = () => ( from: { name: "us-west-1", latitude: 37.35, - longitude: -121.96 + longitude: -121.96, }, to: { - name: "External" + name: "External", }, usage: 0.3401115375, - cost: 8000 + cost: 8000, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1136,15 +1136,15 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "ap-northeast-1", latitude: 35.41, - longitude: 139.42 + longitude: 139.42, }, usage: 0.00041692149999999996, - cost: 8.338 + cost: 8.338, }, { cloud_account_id: "b757aea5-d5a7-45a3-a88d-576ea9590ad2", @@ -1152,21 +1152,21 @@ const TrafficExpensesMocked = () => ( from: { name: "us-east-1", latitude: 38.13, - longitude: -78.45 + longitude: -78.45, }, to: { name: "eu-central-1", latitude: 50.12581, - longitude: 8.65399 + longitude: 8.65399, }, usage: 0.00012188789999999999, - cost: 2.4375999999999998 - } + cost: 2.4375999999999998, + }, ], start_date: 1640984400, end_date: 1652130000, total_cost: 285, - total_usage: 110 + total_usage: 110, }} applyFilter={() => console.log("apply")} startDateTimestamp={getStartOfTodayInUTCinSeconds()} diff --git a/ngui/ui/src/components/TrafficExpensesContainer/TrafficExpensesContainer.tsx b/ngui/ui/src/components/TrafficExpensesContainer/TrafficExpensesContainer.tsx index 5049775b4..402910108 100644 --- a/ngui/ui/src/components/TrafficExpensesContainer/TrafficExpensesContainer.tsx +++ b/ngui/ui/src/components/TrafficExpensesContainer/TrafficExpensesContainer.tsx @@ -18,7 +18,7 @@ const TrafficExpensesContainer = () => { const { isDataReady, shouldInvoke } = useApiState(GET_TRAFFIC_EXPENSES, { startDate: startDateTimestamp, endDate: endDateTimestamp, - organizationId + organizationId, }); useEffect(() => { @@ -26,14 +26,14 @@ const TrafficExpensesContainer = () => { dispatch( getTrafficExpenses(organizationId, { startDate: startDateTimestamp, - endDate: endDateTimestamp + endDate: endDateTimestamp, }) ); } }, [dispatch, endDateTimestamp, organizationId, shouldInvoke, startDateTimestamp]); const { - apiData: { expenses = {} } + apiData: { expenses = {} }, } = useApiData(GET_TRAFFIC_EXPENSES); return ; diff --git a/ngui/ui/src/components/TrafficExpensesMap/FlowMapSelectors.ts b/ngui/ui/src/components/TrafficExpensesMap/FlowMapSelectors.ts index 008bd5e9f..1d516508f 100644 --- a/ngui/ui/src/components/TrafficExpensesMap/FlowMapSelectors.ts +++ b/ngui/ui/src/components/TrafficExpensesMap/FlowMapSelectors.ts @@ -9,7 +9,7 @@ import { INTER_REGION_LAT, INTER_REGION_LON, EXTERNAL_LAT, - EXTERNAL_LON + EXTERNAL_LON, } from "utils/maps"; const isOtherLocation = (location) => location.latitude === OTHER_LAT && location.longitude === OTHER_LON; @@ -34,7 +34,7 @@ const getFlowThicknessScale = (magnitudeExtent) => { Math.max.apply( null, magnitudeExtent.map((x) => Math.abs(x || 0)) - ) + ), ]); }; diff --git a/ngui/ui/src/components/TrafficExpensesMap/TrafficExpensesMap.styles.ts b/ngui/ui/src/components/TrafficExpensesMap/TrafficExpensesMap.styles.ts index 84a8569fb..6b1ff7db2 100644 --- a/ngui/ui/src/components/TrafficExpensesMap/TrafficExpensesMap.styles.ts +++ b/ngui/ui/src/components/TrafficExpensesMap/TrafficExpensesMap.styles.ts @@ -18,15 +18,15 @@ const useStyles = makeStyles()((theme) => ({ marginLeft: 0, position: "absolute", fontSize: "10px", - pointerEvents: "none" + pointerEvents: "none", }, legend: { height: "14px", width: "200px", backgroundColor: "rgb(167,225,241)", backgroundImage: - "linear-gradient(90deg, rgba(167,225,241,1) 0%, rgba(108,211,245,1) 35%, rgba(164,222,52,1) 63%, rgba(236,235,26,1) 74%, rgba(252,179,21,1) 84%, rgba(241,36,38,1) 100%);" - } + "linear-gradient(90deg, rgba(167,225,241,1) 0%, rgba(108,211,245,1) 35%, rgba(164,222,52,1) 63%, rgba(236,235,26,1) 74%, rgba(252,179,21,1) 84%, rgba(241,36,38,1) 100%);", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/TrafficExpensesMap/TrafficExpensesMap.tsx b/ngui/ui/src/components/TrafficExpensesMap/TrafficExpensesMap.tsx index a3bc1c022..161849a64 100644 --- a/ngui/ui/src/components/TrafficExpensesMap/TrafficExpensesMap.tsx +++ b/ngui/ui/src/components/TrafficExpensesMap/TrafficExpensesMap.tsx @@ -28,7 +28,7 @@ const layerProps = { getFlowOriginId: (flow) => flow.from.name, getLocationName: (loc) => loc.name, getFlowDestId: (flow) => flow.to.name, - getFlowMagnitude: (flow) => flow.cost + getFlowMagnitude: (flow) => flow.cost, }; let deckOverlay = new GoogleMapsOverlay(); const dataProvider = new FlowMapDataProvider(layerProps); @@ -53,7 +53,7 @@ const UI_INITIAL = { adaptiveScalesEnabled: false, locationTotalsEnabled: true, locationLabelsEnabled: false, - maxTopFlowsDisplayNum: 1000 + maxTopFlowsDisplayNum: 1000, }; function renderToExpenses(expenses) { @@ -85,7 +85,7 @@ function getTooltipState(info) { id="totalExpensesWithTotalExpensesAndCost" values={{ totalExpenses: , - totalUsage: + totalUsage: , }} /> @@ -100,7 +100,7 @@ function getTooltipState(info) { )} - ) + ), }; case PickingType.FLOW: { const flowSummary = object.origin.summary.filter( @@ -129,7 +129,7 @@ function getTooltipState(info) { id="totalExpensesWithTotalExpensesAndCost" values={{ totalExpenses: , - totalUsage: + totalUsage: , }} /> @@ -145,7 +145,7 @@ function getTooltipState(info) { id="value / value" values={{ value1: , - value2: + value2: , }} /> } @@ -154,7 +154,7 @@ function getTooltipState(info) { )} - ) + ), }; } default: @@ -184,7 +184,7 @@ const TrafficExpensesMap = ({ markers, defaultZoom, defaultCenter, onMapClick = if (data?.locations.length) { locationViewState = getViewStateForLocations(data.locations, (loc) => [loc.longitude, loc.latitude], [ globalThis.innerWidth, - globalThis.innerHeight + globalThis.innerHeight, ]); } setViewParams({ @@ -192,7 +192,7 @@ const TrafficExpensesMap = ({ markers, defaultZoom, defaultCenter, onMapClick = defaultZoom, defaultCenter, minZoom: 2, - maxZoom: 6 + maxZoom: 6, }); }, [data, defaultZoom, defaultCenter, setViewParams]); @@ -227,8 +227,8 @@ const TrafficExpensesMap = ({ markers, defaultZoom, defaultCenter, onMapClick = onClick: (info) => { setTooltip(getTooltipState(null)); onMapClick(info.object); - } - }) + }, + }), ]); refreshLegendMax(); }, [onMapClick]); @@ -338,10 +338,10 @@ const TrafficExpensesMap = ({ markers, defaultZoom, defaultCenter, onMapClick = /> )} -
    +
    {legend}
    -
    +
    {tooltip.content}
    diff --git a/ngui/ui/src/components/TrafficFromToLabel/TrafficFromToLabel.tsx b/ngui/ui/src/components/TrafficFromToLabel/TrafficFromToLabel.tsx index d8b694f44..724a86ee8 100644 --- a/ngui/ui/src/components/TrafficFromToLabel/TrafficFromToLabel.tsx +++ b/ngui/ui/src/components/TrafficFromToLabel/TrafficFromToLabel.tsx @@ -6,7 +6,7 @@ const TrafficFromToLabel = ({ from, to }) => ( values={{ from, to, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> ); diff --git a/ngui/ui/src/components/TrafficMapMarker/TrafficMapMarker.styles.ts b/ngui/ui/src/components/TrafficMapMarker/TrafficMapMarker.styles.ts index fc8cc2f09..dc172ac79 100644 --- a/ngui/ui/src/components/TrafficMapMarker/TrafficMapMarker.styles.ts +++ b/ngui/ui/src/components/TrafficMapMarker/TrafficMapMarker.styles.ts @@ -4,7 +4,7 @@ import { MAP_MARKER_FONT_SIZE_IN_PX } from "../../utils/fonts"; const useStyles = makeStyles()((theme) => ({ marker: { "&:hover": { - zIndex: theme.zIndex.drawer + zIndex: theme.zIndex.drawer, }, display: "flex", cursor: "pointer", @@ -17,14 +17,14 @@ const useStyles = makeStyles()((theme) => ({ border: `2px solid ${theme.palette.info.light}`, backgroundColor: theme.palette.common.white, position: "absolute", - fontSize: theme.typography.pxToRem(MAP_MARKER_FONT_SIZE_IN_PX) + fontSize: theme.typography.pxToRem(MAP_MARKER_FONT_SIZE_IN_PX), }, markerTop: { - transform: "translate(-50%, -100%)" + transform: "translate(-50%, -100%)", }, markerBottom: { - transform: "translate(-50%, 0)" - } + transform: "translate(-50%, 0)", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/TtlAnalysis/TtlAnalysis.tsx b/ngui/ui/src/components/TtlAnalysis/TtlAnalysis.tsx index 6ed8437f9..d23bd2980 100644 --- a/ngui/ui/src/components/TtlAnalysis/TtlAnalysis.tsx +++ b/ngui/ui/src/components/TtlAnalysis/TtlAnalysis.tsx @@ -19,7 +19,7 @@ const TtlAnalysis = ({ onEdit, shouldRenderReportLayout, TtlAnalysisFormProps, - TtlAnalysisReportProps + TtlAnalysisReportProps, }) => { const { type: topSectionComponentType, payload: topSectionComponentPayload = {} } = topSectionComponent; @@ -37,18 +37,18 @@ const TtlAnalysis = ({ type={topSectionComponentPayload.poolType} id={topSectionComponentPayload.poolId} /> - ) + ), }, { messageId: "ttl", - filterValue: + filterValue: , }, { messageId: "dateRange", filterValue: `${unixTimestampToDateTime(topSectionComponentPayload.startDate)} - ${unixTimestampToDateTime( topSectionComponentPayload.endDate - )}` - } + )}`, + }, ], buttonsDefinition: [ { @@ -59,11 +59,11 @@ const TtlAnalysis = ({ startIcon: , onClick: onEdit, messageId: "edit", - color: "primary" - } - } - ] - }) + color: "primary", + }, + }, + ], + }), })[topSectionComponentType]; const renderTopPageSection = getTopPageSectionRenderer(); diff --git a/ngui/ui/src/components/TtlAnalysisReport/TtlAnalysisReport.tsx b/ngui/ui/src/components/TtlAnalysisReport/TtlAnalysisReport.tsx index 0cf3e78f3..666367634 100644 --- a/ngui/ui/src/components/TtlAnalysisReport/TtlAnalysisReport.tsx +++ b/ngui/ui/src/components/TtlAnalysisReport/TtlAnalysisReport.tsx @@ -20,7 +20,7 @@ const TtlAnalysisReport = ({ totalExpenses, expensesOutsideOfTtl, resources, - isLoading = false + isLoading = false, }) => { const columns = useMemo( () => [ @@ -37,10 +37,10 @@ const TtlAnalysisReport = ({ rowData={{ resource_name: original.name, cloud_resource_id: original.cloud_resource_id, - resource_id: original.id + resource_id: original.id, }} /> - ) + ), }, { header: ( @@ -51,17 +51,17 @@ const TtlAnalysisReport = ({ accessorKey: "type", cell: ({ row: { - original: { type, cluster_type_id: clusterTypeId, is_environment: isEnvironment } - } + original: { type, cluster_type_id: clusterTypeId, is_environment: isEnvironment }, + }, }) => ( - ) + ), }, { header: ( @@ -69,7 +69,7 @@ const TtlAnalysisReport = ({ ), - accessorKey: "owner_name" + accessorKey: "owner_name", }, { header: ( @@ -81,7 +81,7 @@ const TtlAnalysisReport = ({ cell: ({ row: { original } }) => original.cloud_account_id ? ( - ) : null + ) : null, }, { header: ( @@ -89,7 +89,7 @@ const TtlAnalysisReport = ({ ), - accessorKey: "hours_outside_of_ttl" + accessorKey: "hours_outside_of_ttl", }, { header: ( @@ -99,8 +99,8 @@ const TtlAnalysisReport = ({ ), accessorKey: "expenses_outside_of_ttl", cell: ({ cell }) => , - defaultSort: "desc" - } + defaultSort: "desc", + }, ], [] ); @@ -109,7 +109,7 @@ const TtlAnalysisReport = ({ () => resources.map((resource) => ({ ...resource, - resource: `${resource.cloud_resource_id} ${resource.name}` + resource: `${resource.cloud_resource_id} ${resource.name}`, })), [resources] ); @@ -126,10 +126,10 @@ const TtlAnalysisReport = ({ help: { show: true, messageId: "resourcesTrackedReportDescription", - dataTestId: "qmark_resources" + dataTestId: "qmark_resources", }, isLoading, - dataTestId: "card_recources" + dataTestId: "card_recources", }, { key: "resourcesOutsideOfTtl", @@ -139,17 +139,17 @@ const TtlAnalysisReport = ({ relativeValueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedNumber, relativeValueComponentProps: { value: percentXofY(resourcesOutsideOfTtl, resourcesTracked), - format: "percentage" + format: "percentage", }, relativeValueCaptionMessageId: "fromTotalResourcesCount", help: { show: true, messageId: "resourcesOutsideOfTtlReportDescription", - dataTestId: "qmark_resources_ttl" + dataTestId: "qmark_resources_ttl", }, isLoading, - dataTestId: "card_recources_ttl" - } + dataTestId: "card_recources_ttl", + }, ]} /> @@ -160,39 +160,39 @@ const TtlAnalysisReport = ({ key: "totalExpenses", valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: totalExpenses + value: totalExpenses, }, captionMessageId: "totalExpenses", help: { show: true, messageId: "totalExpensesReportDescription", - dataTestId: "qmark_expenses" + dataTestId: "qmark_expenses", }, isLoading, - dataTestId: "card_expenses" + dataTestId: "card_expenses", }, { key: "expensesOutsideOfTtl", type: SUMMARY_CARD_TYPES.EXTENDED, valueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedMoney, valueComponentProps: { - value: expensesOutsideOfTtl + value: expensesOutsideOfTtl, }, captionMessageId: "expensesOutsideOfTtl", relativeValueComponentType: SUMMARY_VALUE_COMPONENT_TYPES.FormattedNumber, relativeValueComponentProps: { value: percentXofY(expensesOutsideOfTtl, totalExpenses), - format: "percentage" + format: "percentage", }, relativeValueCaptionMessageId: "fromTotalExpenses", help: { show: true, messageId: "expensesOutsideOfTtlReportDescription", - dataTestId: "qmark_expenses_ttl" + dataTestId: "qmark_expenses_ttl", }, isLoading, - dataTestId: "card_expenses_ttl" - } + dataTestId: "card_expenses_ttl", + }, ]} /> @@ -204,10 +204,10 @@ const TtlAnalysisReport = ({ data={tableData} columns={columns} localization={{ - emptyMessageId: "noResources" + emptyMessageId: "noResources", }} dataTestIds={{ - container: "table_report_data" + container: "table_report_data", }} /> )} diff --git a/ngui/ui/src/components/UpcomingBooking/Duration/Duration.tsx b/ngui/ui/src/components/UpcomingBooking/Duration/Duration.tsx index 9d2435a31..c504e517b 100644 --- a/ngui/ui/src/components/UpcomingBooking/Duration/Duration.tsx +++ b/ngui/ui/src/components/UpcomingBooking/Duration/Duration.tsx @@ -24,9 +24,9 @@ const Duration = ({ duration }: DurationProps) => { INTERVAL_DURATION_VALUE_TYPES.WEEKS, INTERVAL_DURATION_VALUE_TYPES.DAYS, INTERVAL_DURATION_VALUE_TYPES.HOURS, - INTERVAL_DURATION_VALUE_TYPES.MINUTES + INTERVAL_DURATION_VALUE_TYPES.MINUTES, ], - duration + duration, })} /> ); diff --git a/ngui/ui/src/components/UpcomingBooking/UpcomingBooking.tsx b/ngui/ui/src/components/UpcomingBooking/UpcomingBooking.tsx index 3289c546f..91ad61256 100644 --- a/ngui/ui/src/components/UpcomingBooking/UpcomingBooking.tsx +++ b/ngui/ui/src/components/UpcomingBooking/UpcomingBooking.tsx @@ -15,7 +15,7 @@ const getInfiniteBookingTimeMeasuresDefinition = (acquiredSince: number) => remained: Infinity, bookedUntil: Infinity, // TODO: generalize getBookedSince in InfiniteBookingTimeMeasures and FiniteBookingTimeMeasures - bookedSince: format(secondsToMilliseconds(acquiredSince), EN_FULL_FORMAT) + bookedSince: format(secondsToMilliseconds(acquiredSince), EN_FULL_FORMAT), }) as const; const getFiniteBookingTimeMeasuresDefinition = (acquiredSince: number, releasedAt: number) => { @@ -25,20 +25,20 @@ const getFiniteBookingTimeMeasuresDefinition = (acquiredSince: number, releasedA return { duration: intervalToDuration({ start: acquiredSinceInMilliseconds, - end: releasedAtInMilliseconds + end: releasedAtInMilliseconds, }), remained: intervalToDuration({ start: Date.now(), - end: releasedAtInMilliseconds + end: releasedAtInMilliseconds, }), bookedUntil: format(releasedAtInMilliseconds, EN_FULL_FORMAT), - bookedSince: format(acquiredSinceInMilliseconds, EN_FULL_FORMAT) + bookedSince: format(acquiredSinceInMilliseconds, EN_FULL_FORMAT), }; }; export const getBookingTimeMeasuresDefinition = ({ releasedAt, - acquiredSince + acquiredSince, }: { releasedAt: number; acquiredSince: number; diff --git a/ngui/ui/src/components/UpdateCostModelWarning/UpdateCostModelWarning.styles.ts b/ngui/ui/src/components/UpdateCostModelWarning/UpdateCostModelWarning.styles.ts index 14786aaba..93cfbbb0f 100644 --- a/ngui/ui/src/components/UpdateCostModelWarning/UpdateCostModelWarning.styles.ts +++ b/ngui/ui/src/components/UpdateCostModelWarning/UpdateCostModelWarning.styles.ts @@ -2,8 +2,8 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ warningText: { - color: theme.palette.warning.main - } + color: theme.palette.warning.main, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/UpdateCostModelWarning/UpdateCostModelWarning.tsx b/ngui/ui/src/components/UpdateCostModelWarning/UpdateCostModelWarning.tsx index b6e9db11a..3c8ec3bbb 100644 --- a/ngui/ui/src/components/UpdateCostModelWarning/UpdateCostModelWarning.tsx +++ b/ngui/ui/src/components/UpdateCostModelWarning/UpdateCostModelWarning.tsx @@ -11,7 +11,7 @@ const UpdateCostModelWarning = ({ costModelType, dataTestId }) => { id="costModelFormWarning" values={{ break:
    , - costModelType + costModelType, }} /> diff --git a/ngui/ui/src/components/UploadCloudReportData/UploadCloudReportData.tsx b/ngui/ui/src/components/UploadCloudReportData/UploadCloudReportData.tsx index 7c2f7e222..e155c4709 100644 --- a/ngui/ui/src/components/UploadCloudReportData/UploadCloudReportData.tsx +++ b/ngui/ui/src/components/UploadCloudReportData/UploadCloudReportData.tsx @@ -11,7 +11,7 @@ const FILE_TYPES = [ "application/x-zip-compressed", "", "text/csv", - ".csv" + ".csv", ]; const UploadCloudReportData = ({ onUpload, isLoading }) => { @@ -27,7 +27,7 @@ const UploadCloudReportData = ({ onUpload, isLoading }) => { isSubmitDisabled={isRestricted} submitButtonTooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} /> ) : ( diff --git a/ngui/ui/src/components/UserEmailNotificationSettings/UserEmailNotificationSettings.tsx b/ngui/ui/src/components/UserEmailNotificationSettings/UserEmailNotificationSettings.tsx index 64714ebb1..487540100 100644 --- a/ngui/ui/src/components/UserEmailNotificationSettings/UserEmailNotificationSettings.tsx +++ b/ngui/ui/src/components/UserEmailNotificationSettings/UserEmailNotificationSettings.tsx @@ -15,92 +15,92 @@ import { EmployeeEmail, LoadingSwitchProps, UserEmailNotificationSettingsProps, - UserEmailSettingsProps + UserEmailSettingsProps, } from "./types"; const EMAIL_TEMPLATES = { finOps: { weekly_expense_report: { title: "emailTemplates.finOps.weekly_expense_report.title", - description: "emailTemplates.finOps.weekly_expense_report.description" + description: "emailTemplates.finOps.weekly_expense_report.description", }, pool_exceed_resources_report: { title: "emailTemplates.finOps.pool_exceed_resources_report.title", - description: "emailTemplates.finOps.pool_exceed_resources_report.description" + description: "emailTemplates.finOps.pool_exceed_resources_report.description", }, pool_exceed_report: { title: "emailTemplates.finOps.pool_exceed_report.title", - description: "emailTemplates.finOps.pool_exceed_report.description" + description: "emailTemplates.finOps.pool_exceed_report.description", }, alert: { title: "emailTemplates.finOps.alert.title", - description: "emailTemplates.finOps.alert.description" + description: "emailTemplates.finOps.alert.description", }, saving_spike: { title: "emailTemplates.finOps.saving_spike.title", - description: "emailTemplates.finOps.saving_spike.description" - } + description: "emailTemplates.finOps.saving_spike.description", + }, }, policy: { resource_owner_violation_report: { title: "emailTemplates.policy.resource_owner_violation_report.title", - description: "emailTemplates.policy.resource_owner_violation_report.description" + description: "emailTemplates.policy.resource_owner_violation_report.description", }, pool_owner_violation_report: { title: "emailTemplates.policy.pool_owner_violation_report.title", - description: "emailTemplates.policy.pool_owner_violation_report.description" + description: "emailTemplates.policy.pool_owner_violation_report.description", }, resource_owner_violation_alert: { title: "emailTemplates.policy.resource_owner_violation_alert.title", - description: "emailTemplates.policy.resource_owner_violation_alert.description" + description: "emailTemplates.policy.resource_owner_violation_alert.description", }, anomaly_detection_alert: { title: "emailTemplates.policy.anomaly_detection_alert.title", - description: "emailTemplates.policy.anomaly_detection_alert.description" + description: "emailTemplates.policy.anomaly_detection_alert.description", }, organization_policy_expiring_budget: { title: "emailTemplates.policy.organization_policy_expiring_budget.title", - description: "emailTemplates.policy.organization_policy_expiring_budget.description" + description: "emailTemplates.policy.organization_policy_expiring_budget.description", }, organization_policy_quota: { title: "emailTemplates.policy.organization_policy_quota.title", - description: "emailTemplates.policy.organization_policy_quota.description" + description: "emailTemplates.policy.organization_policy_quota.description", }, organization_policy_recurring_budget: { title: "emailTemplates.policy.organization_policy_recurring_budget.title", - description: "emailTemplates.policy.organization_policy_recurring_budget.description" + description: "emailTemplates.policy.organization_policy_recurring_budget.description", }, organization_policy_tagging: { title: "emailTemplates.policy.organization_policy_tagging.title", - description: "emailTemplates.policy.organization_policy_tagging.description" - } + description: "emailTemplates.policy.organization_policy_tagging.description", + }, }, recommendations: { new_security_recommendation: { title: "emailTemplates.recommendations.new_security_recommendation.title", - description: "emailTemplates.recommendations.new_security_recommendation.description" - } + description: "emailTemplates.recommendations.new_security_recommendation.description", + }, }, systemNotifications: { environment_changes: { title: "emailTemplates.systemNotifications.environment_changes.title", - description: "emailTemplates.systemNotifications.environment_changes.description" + description: "emailTemplates.systemNotifications.environment_changes.description", }, report_imports_passed_for_org: { title: "emailTemplates.systemNotifications.report_imports_passed_for_org.title", - description: "emailTemplates.systemNotifications.report_imports_passed_for_org.description" + description: "emailTemplates.systemNotifications.report_imports_passed_for_org.description", }, report_import_failed: { title: "emailTemplates.systemNotifications.report_import_failed.title", - description: "emailTemplates.systemNotifications.report_import_failed.description" - } + description: "emailTemplates.systemNotifications.report_import_failed.description", + }, }, accountManagement: { invite: { title: "emailTemplates.accountManagement.invite.title", - description: "emailTemplates.accountManagement.invite.description" - } - } + description: "emailTemplates.accountManagement.invite.description", + }, + }, } as const; const LoadingSwitch = ({ checked, onChange, isLoading = false }: LoadingSwitchProps) => { @@ -114,7 +114,7 @@ const LoadingSwitch = ({ checked, onChange, isLoading = false }: LoadingSwitchPr height: 20, borderRadius: "50%", backgroundColor: (theme) => (checked ? theme.palette.secondary.main : theme.palette.background.default), - boxShadow: (theme) => theme.shadows[1] + boxShadow: (theme) => theme.shadows[1], }} > {isLoading && } @@ -143,15 +143,17 @@ const EmailSetting = ({ emailId, employeeId, enabled, emailTitle, description }: employeeId, params: { emailId, - action: checked ? "enable" : "disable" - } - } + action: checked ? "enable" : "disable", + }, + }, }); }} isLoading={updateEmployeeEmailLoading} /> - {} + + + ); }; @@ -178,8 +180,8 @@ const UserEmailSettings = ({ title, employeeEmails }: UserEmailSettingsProps) => maxWidth: "650px", // add padding to align the title switch with the switches in the accordion details "& .MuiAccordionSummary-root": { - paddingRight: (theme) => theme.spacing(2) - } + paddingRight: (theme) => theme.spacing(2), + }, }} > @@ -197,7 +199,7 @@ const UserEmailSettings = ({ title, employeeEmails }: UserEmailSettingsProps) => id="value/value" values={{ value1: enabledEmailsCount, - value2: totalEmailsCount + value2: totalEmailsCount, }} /> } @@ -220,9 +222,9 @@ const UserEmailSettings = ({ title, employeeEmails }: UserEmailSettingsProps) => variables: { employeeId, params: { - [checked ? "enable" : "disable"]: employeeEmails.map((email) => email.id) - } - } + [checked ? "enable" : "disable"]: employeeEmails.map((email) => email.id), + }, + }, }); }} isLoading={updateEmployeeEmailsLoading} @@ -262,7 +264,7 @@ const getGroupedEmailTemplates = (employeeEmails: ApiEmployeeEmail[]) => { return { ...email, title, description } as EmployeeEmail; }) - .filter(({ available_by_role: availableByRole }) => availableByRole) + .filter(({ available_by_role: availableByRole }) => availableByRole), ]) ) as { [K in ObjectKeys]: EmployeeEmail[]; diff --git a/ngui/ui/src/components/WrapperCard/WrapperCard.styles.ts b/ngui/ui/src/components/WrapperCard/WrapperCard.styles.ts index c9d36ad14..de7f72001 100644 --- a/ngui/ui/src/components/WrapperCard/WrapperCard.styles.ts +++ b/ngui/ui/src/components/WrapperCard/WrapperCard.styles.ts @@ -2,37 +2,37 @@ import { makeStyles } from "tss-react/mui"; const useStyles = makeStyles()((theme) => ({ spacer: { - flexGrow: 1 + flexGrow: 1, }, actions: { borderTop: "1px solid lightGrey", - height: "2.5rem" + height: "2.5rem", }, content: { - paddingTop: theme.spacing(1) + paddingTop: theme.spacing(1), }, card: { paddingTop: theme.spacing(2), - paddingBottom: theme.spacing(2) + paddingBottom: theme.spacing(2), }, buttonLink: { "&:hover": { - textDecoration: "none" - } + textDecoration: "none", + }, }, halfWidth: { [theme.breakpoints.up("md")]: { - width: "50%" - } + width: "50%", + }, }, quarterWidth: { [theme.breakpoints.up("md")]: { - width: "25%" - } + width: "25%", + }, }, alignedWrapper: { - height: "100%" - } + height: "100%", + }, })); export default useStyles; diff --git a/ngui/ui/src/components/WrapperCard/WrapperCard.tsx b/ngui/ui/src/components/WrapperCard/WrapperCard.tsx index e8ff4807f..e230209b9 100644 --- a/ngui/ui/src/components/WrapperCard/WrapperCard.tsx +++ b/ngui/ui/src/components/WrapperCard/WrapperCard.tsx @@ -55,7 +55,7 @@ const WrapperCard = forwardRef( wrapper: wrapperDataTestId, title: titleDataTestId, titleCaption: titleCaptionDataTestId, - button: buttonDataTestId + button: buttonDataTestId, } = dataTestIds || {}; const { show: showButton, href, link, messageId: buttonTextId } = button || {}; diff --git a/ngui/ui/src/components/WrapperCardTitlePdf/WrapperCardTitlePdf.ts b/ngui/ui/src/components/WrapperCardTitlePdf/WrapperCardTitlePdf.ts index 55b84e557..bda82f9a6 100644 --- a/ngui/ui/src/components/WrapperCardTitlePdf/WrapperCardTitlePdf.ts +++ b/ngui/ui/src/components/WrapperCardTitlePdf/WrapperCardTitlePdf.ts @@ -8,8 +8,8 @@ class WrapperCardTitlePdf extends PDFAble { return [ { type: PDF_ELEMENTS.basics.H2, - value: titleText - } + value: titleText, + }, ]; }; } diff --git a/ngui/ui/src/components/WrongInvitationEmailAlert/WrongInvitationEmailAlert.styles.ts b/ngui/ui/src/components/WrongInvitationEmailAlert/WrongInvitationEmailAlert.styles.ts index b9d40aa85..716047c3a 100644 --- a/ngui/ui/src/components/WrongInvitationEmailAlert/WrongInvitationEmailAlert.styles.ts +++ b/ngui/ui/src/components/WrongInvitationEmailAlert/WrongInvitationEmailAlert.styles.ts @@ -6,13 +6,13 @@ const useStyles = makeStyles()((theme) => ({ [theme.breakpoints.up("md")]: { position: "absolute", right: 40, - bottom: 40 + bottom: 40, }, padding: theme.spacing(SPACING_2), "& > *:not(:last-child)": { - marginRight: theme.spacing(SPACING_1) - } - } + marginRight: theme.spacing(SPACING_1), + }, + }, })); export default useStyles; diff --git a/ngui/ui/src/components/WrongInvitationEmailAlert/WrongInvitationEmailAlert.tsx b/ngui/ui/src/components/WrongInvitationEmailAlert/WrongInvitationEmailAlert.tsx index 505273f52..04f56e4a1 100644 --- a/ngui/ui/src/components/WrongInvitationEmailAlert/WrongInvitationEmailAlert.tsx +++ b/ngui/ui/src/components/WrongInvitationEmailAlert/WrongInvitationEmailAlert.tsx @@ -16,7 +16,7 @@ const WrongInvitationEmailAlert = ({ invitationEmail, currentEmail, onGoToDashboard, - onSignOut + onSignOut, }: WrongInvitationEmailAlertProps) => { const { classes } = useStyles(); return ( @@ -27,7 +27,7 @@ const WrongInvitationEmailAlert = ({ values={{ invitationEmail, currentEmail, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> diff --git a/ngui/ui/src/components/forms/AddInstancesToScheduleForm/AddInstancesToScheduleForm.tsx b/ngui/ui/src/components/forms/AddInstancesToScheduleForm/AddInstancesToScheduleForm.tsx index 292b6b007..60df8070f 100644 --- a/ngui/ui/src/components/forms/AddInstancesToScheduleForm/AddInstancesToScheduleForm.tsx +++ b/ngui/ui/src/components/forms/AddInstancesToScheduleForm/AddInstancesToScheduleForm.tsx @@ -6,7 +6,7 @@ const AddInstancesToScheduleForm = ({ onCancel, filterValues, instancesCountLimit, - isLoadingProps = {} + isLoadingProps = {}, }) => { const { isSubmitLoading = false, isGetInstancesLoading = false, isGetFilterValuesLoading = false } = isLoadingProps; diff --git a/ngui/ui/src/components/forms/AddInstancesToScheduleForm/FormElements/DataSourcesField.tsx b/ngui/ui/src/components/forms/AddInstancesToScheduleForm/FormElements/DataSourcesField.tsx index 1f2dc4214..1350d2d74 100644 --- a/ngui/ui/src/components/forms/AddInstancesToScheduleForm/FormElements/DataSourcesField.tsx +++ b/ngui/ui/src/components/forms/AddInstancesToScheduleForm/FormElements/DataSourcesField.tsx @@ -24,7 +24,7 @@ const DataSourcesField = () => { const { control, formState: { errors }, - resetField + resetField, } = useFormContext(); return ( @@ -33,8 +33,8 @@ const DataSourcesField = () => { control={control} rules={{ validate: { - required: (value) => (isEmptyArray(value) ? intl.formatMessage({ id: "thisFieldIsRequired" }) : true) - } + required: (value) => (isEmptyArray(value) ? intl.formatMessage({ id: "thisFieldIsRequired" }) : true), + }, }} render={({ field: { name, onBlur, onChange, ref, value } }) => ( { const resourceFilters = new Filters({ filters: POWER_SCHEDULE_INSTANCES_FILTERS, filterValues, - appliedFilters + appliedFilters, }); const items = resourceFilters.getFilterSelectors(); @@ -46,7 +46,7 @@ const FiltersField = ({ filterValues, isLoading }) => { ...rest, [filterName]: Array.isArray(filterToDeleteValues) ? filterToDeleteValues.filter((val) => val !== filterValue) - : undefined + : undefined, }); resetField(INSTANCES_FIELD_NAME); }} diff --git a/ngui/ui/src/components/forms/AddInstancesToScheduleForm/FormElements/FormButtons.tsx b/ngui/ui/src/components/forms/AddInstancesToScheduleForm/FormElements/FormButtons.tsx index 74548f081..b01fa9b07 100644 --- a/ngui/ui/src/components/forms/AddInstancesToScheduleForm/FormElements/FormButtons.tsx +++ b/ngui/ui/src/components/forms/AddInstancesToScheduleForm/FormElements/FormButtons.tsx @@ -25,7 +25,7 @@ const FormButtons = ({ onCancel, isLoading = false }: FormButtonsProps) => { disabled={isRestricted} tooltip={{ show: true, - value: isRestricted ? restrictionReasonMessage : "add" + value: isRestricted ? restrictionReasonMessage : "add", }} />
    @@ -87,7 +87,7 @@ const MaxDuration = () => { const { formState: { isSubmitted }, watch, - trigger + trigger, } = useFormContext(); const isEnabled = watch(MAX_DURATION_CHECKBOX_FIELD_NAME); @@ -122,7 +122,7 @@ const MaxDuration = () => { InputProps={{ endAdornment: ( {intl.formatMessage({ id: "min" }).toLocaleLowerCase()} - ) + ), }} />
    diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/CommandToExecuteField.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/CommandToExecuteField.tsx index 806316083..817cf4c46 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/CommandToExecuteField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/CommandToExecuteField.tsx @@ -16,15 +16,15 @@ const useStyles = makeStyles()((theme) => ({ top: 0, borderRadius: "4px", pointerEvents: "none", - border: `1px solid ${theme.palette.error.light}` + border: `1px solid ${theme.palette.error.light}`, }, codeToExecuteFieldError: { "&:focus-within": { "+ div": { - borderWidth: "2px" - } - } - } + borderWidth: "2px", + }, + }, + }, })); const FIELD_NAME = FIELD_NAMES.CODE_TO_EXECUTE; @@ -36,7 +36,7 @@ const CommandToExecuteField = () => { const { control, - formState: { errors } + formState: { errors }, } = useFormContext(); const isError = !!errors?.[FIELD_NAME]; @@ -48,11 +48,11 @@ const CommandToExecuteField = () => { rules={{ required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, validate: { - notOnlyWhiteSpaces - } + notOnlyWhiteSpaces, + }, }} render={({ field: { value, onChange, onBlur, ref } }) => ( <> @@ -65,7 +65,7 @@ const CommandToExecuteField = () => { onChange={onChange} onBlur={onBlur} style={{ - minHeight: "85px" + minHeight: "85px", }} ref={ref} /> diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/DataSourceField.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/DataSourceField.tsx index f1b781053..9ece22bf8 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/DataSourceField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/DataSourceField.tsx @@ -16,7 +16,7 @@ const DataSourceField = ({ dataSources, isLoading = false }) => ( isLoading={isLoading} items={dataSources.map(({ id, name, type }) => ({ value: id, - content: {name} + content: {name}, }))} /> ); diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/FormButtons.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/FormButtons.tsx index df2fa0a06..3d843de9b 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/FormButtons.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/FormButtons.tsx @@ -16,7 +16,7 @@ const FormButtons = ({ onCancel, isLoading = false }) => { isLoading={isLoading} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} disabled={isRestricted} /> diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/ImageField.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/ImageField.tsx index 22f59fd6d..6500fe0cf 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/ImageField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/ImageField.tsx @@ -14,7 +14,7 @@ const ImageField = ({ isLoading = false }) => label={} name={FIELD_NAME} InputProps={{ - endAdornment: + endAdornment: , }} /> ); diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/InstanceTypeField.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/InstanceTypeField.tsx index 7477ea845..205cacd46 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/InstanceTypeField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/InstanceTypeField.tsx @@ -16,7 +16,7 @@ const InstanceTypeField = ({ instanceTypes, isLoading = false }) => ( isLoading={isLoading} items={instanceTypes.map(({ name, cloud_type: dataSourceType }) => ({ value: name, - content: {name} + content: {name}, }))} /> ); diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/RegionField.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/RegionField.tsx index 67d7174cb..8992dbfc4 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/RegionField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/RegionField.tsx @@ -16,7 +16,7 @@ const RegionField = ({ regions, isLoading = false }) => ( isLoading={isLoading} items={regions.map(({ name, cloud_type: dataSourceType }) => ({ value: name, - content: {name} + content: {name}, }))} /> ); diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/SpotInstanceFields.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/SpotInstanceFields.tsx index 7e7311fea..03665b810 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/SpotInstanceFields.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/SpotInstanceFields.tsx @@ -48,11 +48,11 @@ const SpotInstanceFields = () => { {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_max_attempts" /> - ) + ), }} /> { return true; } return positiveInteger(value); - } + }, } : undefined } diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/TaskField.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/TaskField.tsx index 0d0af1ed7..a213a00e4 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/TaskField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/TaskField.tsx @@ -16,7 +16,7 @@ const TaskField = ({ tasks, isLoading = false }) => ( isLoading={isLoading} items={tasks.map(({ id, name }) => ({ value: id, - content: {name} + content: {name}, }))} /> ); diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/VirtualEnvironmentPathField.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/VirtualEnvironmentPathField.tsx index de98bb48b..cbbc573c3 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/VirtualEnvironmentPathField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/VirtualEnvironmentPathField.tsx @@ -18,11 +18,11 @@ const VirtualEnvironmentPathField = ({ isLoading = false }) => {chunks} + i: (chunks) => {chunks}, }} dataTestId="qmark_runset_virtual_environment_path" /> - ) + ), }} /> ); diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/index.ts b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/index.ts index 5770c0d0b..452f1c14d 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/index.ts +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/FormElements/index.ts @@ -23,5 +23,5 @@ export { FormButtons, SpotInstanceFields, ImageField, - VirtualEnvironmentPathField + VirtualEnvironmentPathField, }; diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/MlRunsetConfigurationForm.tsx b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/MlRunsetConfigurationForm.tsx index e06563512..8d3182177 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/MlRunsetConfigurationForm.tsx +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/MlRunsetConfigurationForm.tsx @@ -26,7 +26,7 @@ import { RegionField, SpotInstanceFields, ImageField, - VirtualEnvironmentPathField + VirtualEnvironmentPathField, } from "./FormElements"; import { FormValues } from "./types"; import { getDefaultValues, getHyperparameterFieldName } from "./utils"; @@ -52,7 +52,7 @@ const FillFromLastRun = ({ latestRunset, hyperparameters, dataSources, tasks, in const { setValue, trigger, - formState: { isSubmitted } + formState: { isSubmitted }, } = useFormContext(); if (isLoading) { @@ -73,7 +73,7 @@ const FillFromLastRun = ({ latestRunset, hyperparameters, dataSources, tasks, in instance_size: { type: latestRunsetInstanceType }, image: latestRunsetImage = "", venv: latestRunsetVirtualEnvironmentPath = "", - spot_settings: spotSettings = {} + spot_settings: spotSettings = {}, } = latestRunset; const isKnownTask = () => tasks.find((task) => task.id === latestRunsetTaskId); @@ -152,7 +152,7 @@ const MlRunsetConfigurationForm = ({ runsetTemplate = {}, latestRunset = {}, onS cloud_accounts: dataSources = [], tasks = [], instance_types: instanceTypes = [], - regions = [] + regions = [], } = runsetTemplate; const runsetDataSources = dataSources.filter(({ deleted }) => !deleted); @@ -160,7 +160,7 @@ const MlRunsetConfigurationForm = ({ runsetTemplate = {}, latestRunset = {}, onS const runsetTasks = tasks.filter(({ deleted }) => !deleted); const methods = useForm({ - defaultValues: getDefaultValues() + defaultValues: getDefaultValues(), }); const { reset, handleSubmit } = methods; @@ -170,7 +170,7 @@ const MlRunsetConfigurationForm = ({ runsetTemplate = {}, latestRunset = {}, onS ...formValues, [HYPERPARAMETERS_FIELD_NAME]: Object.fromEntries( Object.values(hyperparameters).map((environmentVariableName) => [environmentVariableName, ""]) - ) + ), })); }, [hyperparameters, reset]); @@ -185,18 +185,18 @@ const MlRunsetConfigurationForm = ({ runsetTemplate = {}, latestRunset = {}, onS { isEnabled: formData[ABORT_CONDITION_MAX_BUDGET_CHECKBOX_FIELD_NAME], name: ML_RUNSET_ABORT_CONDITION_TYPES.MAX_BUDGET, - value: Number(formData[ABORT_CONDITION_MAX_BUDGET_VALUE_FIELD_NAME]) + value: Number(formData[ABORT_CONDITION_MAX_BUDGET_VALUE_FIELD_NAME]), }, { isEnabled: formData[ABORT_CONDITION_REACHED_GOALS_CHECKBOX_FIELD_NAME], name: ML_RUNSET_ABORT_CONDITION_TYPES.REACHED_GOALS, - value: formData[ABORT_CONDITION_REACHED_GOALS_CHECKBOX_FIELD_NAME] + value: formData[ABORT_CONDITION_REACHED_GOALS_CHECKBOX_FIELD_NAME], }, { isEnabled: formData[ABORT_CONDITION_MAX_DURATION_CHECKBOX_FIELD_NAME], name: ML_RUNSET_ABORT_CONDITION_TYPES.MAX_DURATION, - value: convertMinutesToSeconds(Number(formData[ABORT_CONDITION_MAX_DURATION_VALUE_FIELD_NAME])) - } + value: convertMinutesToSeconds(Number(formData[ABORT_CONDITION_MAX_DURATION_VALUE_FIELD_NAME])), + }, ] .filter(({ isEnabled }) => isEnabled) .map(({ name: conditionName, value: conditionValue }) => [conditionName, conditionValue]) @@ -222,9 +222,9 @@ const MlRunsetConfigurationForm = ({ runsetTemplate = {}, latestRunset = {}, onS tries: Number(formData[SPOT_INSTANCES_MAX_ATTEMPTS_FIELD_NAME]), spot_price: formData[SPOT_INSTANCES_MAX_PRICE_FIELD_NAME] ? Number(formData[SPOT_INSTANCES_MAX_PRICE_FIELD_NAME]) - : undefined + : undefined, } - : {} + : {}, }; onSubmit(data); @@ -293,7 +293,7 @@ const MlRunsetConfigurationForm = ({ runsetTemplate = {}, latestRunset = {}, onS value={"pip install \nwget \npython3 task.py"} language="bash" /> - ) + ), }} />
    diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/constants.ts b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/constants.ts index 803ec3cf5..d14b3c23e 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/constants.ts +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/constants.ts @@ -14,5 +14,5 @@ export const FIELD_NAMES = Object.freeze({ MAX_BUDGET_VALUE: "maxBudgetValue", REACHED_GOALS_CHECKBOX: "reachedGoalsCheckbox", MAX_DURATION_CHECKBOX: "maxDurationCheckbox", - MAX_DURATION_VALUE: "maxDurationValue" + MAX_DURATION_VALUE: "maxDurationValue", }); diff --git a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/utils.ts b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/utils.ts index d8170c786..2b06f9de3 100644 --- a/ngui/ui/src/components/forms/MlRunsetConfigurationForm/utils.ts +++ b/ngui/ui/src/components/forms/MlRunsetConfigurationForm/utils.ts @@ -20,5 +20,5 @@ export const getDefaultValues = (): FormValues => ({ [FIELD_NAMES.MAX_DURATION_VALUE]: "", [FIELD_NAMES.USE_SPOT_INSTANCES]: false, [FIELD_NAMES.MAX_SPOT_ATTEMPTS]: "1", - [FIELD_NAMES.MAX_SPOT_COST_PER_HOUR]: "" + [FIELD_NAMES.MAX_SPOT_COST_PER_HOUR]: "", }); diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/DataSourcesField.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/DataSourcesField.tsx index 321af9ab3..957b98ce2 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/DataSourcesField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/DataSourcesField.tsx @@ -16,7 +16,7 @@ const DataSourcesField = ({ dataSources, isLoading }) => { const { control, - formState: { errors } + formState: { errors }, } = useFormContext(); return ( @@ -25,8 +25,8 @@ const DataSourcesField = ({ dataSources, isLoading }) => { control={control} rules={{ validate: { - required: (value) => (!isEmptyArray(value) ? true : intl.formatMessage({ id: "thisFieldIsRequired" })) - } + required: (value) => (!isEmptyArray(value) ? true : intl.formatMessage({ id: "thisFieldIsRequired" })), + }, }} render={({ field: { value: formFieldValue, onChange } }) => isLoading ? ( @@ -45,7 +45,7 @@ const DataSourcesField = ({ dataSources, isLoading }) => { .map(({ id, name, type }) => ({ id, name, - type + type, }))} isOptionEqualToValue={(option, value) => option.id === value.id} getOptionLabel={(option) => } diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/FormButtons.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/FormButtons.tsx index a5006422c..8a0dbc66f 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/FormButtons.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/FormButtons.tsx @@ -20,7 +20,7 @@ const FormButtons = ({ onCancel, isEdit = false, isLoading = false }) => { disabled={isRestricted} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} isLoading={isLoading} /> diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/HyperparametersFieldArray.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/HyperparametersFieldArray.tsx index 36387c03f..c14eb6fca 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/HyperparametersFieldArray.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/HyperparametersFieldArray.tsx @@ -37,7 +37,7 @@ const NameInput = ({ index }) => { const isPropertyUnique = propertiesWithSameName.length === 1; return isPropertyUnique || intl.formatMessage({ id: "thisFieldMustBeUnique" }); - } + }, }} dataTestId={`hyperparameter_name_${index}`} /> @@ -47,7 +47,7 @@ const NameInput = ({ index }) => { const EnvironmentName = ({ index }) => { const { formState: { errors }, - control + control, } = useFormContext(); const intl = useIntl(); @@ -61,7 +61,7 @@ const EnvironmentName = ({ index }) => { rules={{ required: { value: true, - message: intl.formatMessage({ id: "thisFieldIsRequired" }) + message: intl.formatMessage({ id: "thisFieldIsRequired" }), }, maxLength: { value: DEFAULT_MAX_INPUT_LENGTH, @@ -69,9 +69,9 @@ const EnvironmentName = ({ index }) => { { id: "maxLength" }, { inputName: intl.formatMessage({ id: "environmentVariable" }), - max: DEFAULT_MAX_INPUT_LENGTH + max: DEFAULT_MAX_INPUT_LENGTH, } - ) + ), }, validate: { unique: (value, formValues) => { @@ -84,8 +84,8 @@ const EnvironmentName = ({ index }) => { }, isRunsetTemplateEnvironmentVariable: (value) => isRunsetTemplateEnvironmentVariable(intl.formatMessage({ id: "environmentVariable" }))(value), - doNotBeginWithNumber: doNotBeginWithNumber(intl.formatMessage({ id: "environmentVariable" })) - } + doNotBeginWithNumber: doNotBeginWithNumber(intl.formatMessage({ id: "environmentVariable" })), + }, }} render={({ field: { onChange, ...rest } }) => ( { const { fields, append, remove } = useFieldArray({ control, - name: ARRAY_FIELD_NAME + name: ARRAY_FIELD_NAME, }); const onAppend = () => append({ [NAME_FIELD_NAME]: "", - [ENVIRONMENT_VARIABLE_FIELD]: "" + [ENVIRONMENT_VARIABLE_FIELD]: "", }); return ( @@ -138,7 +138,7 @@ const FieldArray = () => { onClick={() => remove(index)} tooltip={{ show: true, - value: + value: , }} dataTestId={`btn_delete_hyperparameter_${index}`} /> diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/InstanceTypesField.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/InstanceTypesField.tsx index 87591c92d..a7bd30886 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/InstanceTypesField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/InstanceTypesField.tsx @@ -21,7 +21,7 @@ const InstanceTypesField = ({ isLoading }) => { const { control, - formState: { errors } + formState: { errors }, } = useFormContext(); return ( @@ -30,8 +30,8 @@ const InstanceTypesField = ({ isLoading }) => { control={control} rules={{ validate: { - positiveNumber: (value) => (!isEmptyArray(value) ? true : intl.formatMessage({ id: "thisFieldIsRequired" })) - } + positiveNumber: (value) => (!isEmptyArray(value) ? true : intl.formatMessage({ id: "thisFieldIsRequired" })), + }, }} render={({ field: { value: formFieldValue, onChange } }) => isLoading ? ( @@ -75,7 +75,7 @@ const InstanceTypesField = ({ isLoading }) => { backgroundColor: theme.palette.mode === "light" ? lighten(theme.palette.primary.light, 0.95) - : darken(theme.palette.primary.main, 0.8) + : darken(theme.palette.primary.main, 0.8), })} > {params.group === RUNSET_TEMPLATE_INSTANCE_GROUP_TYPE.ACCELERATED_COMPUTING ? ( diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/MaximumRunsetBudgetField.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/MaximumRunsetBudgetField.tsx index 5753eb823..a181ce48e 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/MaximumRunsetBudgetField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/MaximumRunsetBudgetField.tsx @@ -20,10 +20,10 @@ const MaximumRunsetBudgetField = ({ isLoading = false }) => { required min={0} validate={{ - whole: (value) => (isWholeNumber(value) ? intl.formatMessage({ id: "wholeNumber" }) : true) + whole: (value) => (isWholeNumber(value) ? intl.formatMessage({ id: "wholeNumber" }) : true), }} InputProps={{ - startAdornment: {currencySymbol} + startAdornment: {currencySymbol}, }} isLoading={isLoading} /> diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/MaximumRunsetRunners.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/MaximumRunsetRunners.tsx index 24c1194fd..92777b08c 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/MaximumRunsetRunners.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/MaximumRunsetRunners.tsx @@ -16,7 +16,7 @@ const MaximumRunsetRunners = ({ isLoading = false }) => { required min={1} validate={{ - whole: (value) => (isWholeNumber(value) ? intl.formatMessage({ id: "wholeNumber" }) : true) + whole: (value) => (isWholeNumber(value) ? intl.formatMessage({ id: "wholeNumber" }) : true), }} isLoading={isLoading} /> diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/RegionsField.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/RegionsField.tsx index 5d29946bc..2bbfb196a 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/RegionsField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/RegionsField.tsx @@ -15,7 +15,7 @@ const RegionsField = ({ isLoading }) => { const { control, - formState: { errors } + formState: { errors }, } = useFormContext(); return ( @@ -24,8 +24,8 @@ const RegionsField = ({ isLoading }) => { control={control} rules={{ validate: { - required: (value) => (!isEmptyArray(value) ? true : intl.formatMessage({ id: "thisFieldIsRequired" })) - } + required: (value) => (!isEmptyArray(value) ? true : intl.formatMessage({ id: "thisFieldIsRequired" })), + }, }} render={({ field: { value: formFieldValue, onChange } }) => isLoading ? ( diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/TasksField.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/TasksField.tsx index 5e607dea6..403126c47 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/TasksField.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/TasksField.tsx @@ -14,7 +14,7 @@ const TasksField = ({ tasks, isLoading }) => { const { control, - formState: { errors } + formState: { errors }, } = useFormContext(); return ( @@ -23,8 +23,8 @@ const TasksField = ({ tasks, isLoading }) => { control={control} rules={{ validate: { - required: (value) => (!isEmptyArray(value) ? true : intl.formatMessage({ id: "thisFieldIsRequired" })) - } + required: (value) => (!isEmptyArray(value) ? true : intl.formatMessage({ id: "thisFieldIsRequired" })), + }, }} render={({ field: { value: formFieldValue, onChange } }) => isLoading ? ( @@ -41,7 +41,7 @@ const TasksField = ({ tasks, isLoading }) => { isOptionEqualToValue={(option, value) => option.id === value.id} options={tasks.map((task) => ({ name: task.name, - id: task.id + id: task.id, }))} getOptionLabel={(option) => option.name} renderTags={(autocompleteValue, getTagProps) => diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/index.ts b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/index.ts index f1298811b..21d17ee6e 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/index.ts +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/FormElements/index.ts @@ -23,5 +23,5 @@ export { DataSourcesField, RegionsField, InstanceTypesField, - MaximumRunsetRunners + MaximumRunsetRunners, }; diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/MlRunsetTemplateForm.tsx b/ngui/ui/src/components/forms/MlRunsetTemplateForm/MlRunsetTemplateForm.tsx index 130123354..32c0c6902 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/MlRunsetTemplateForm.tsx +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/MlRunsetTemplateForm.tsx @@ -18,7 +18,7 @@ import { RegionsField, InstanceTypesField, TasksField, - MaximumRunsetRunners + MaximumRunsetRunners, } from "./FormElements"; import { FormValues } from "./types"; @@ -30,7 +30,7 @@ const MlRunsetTemplateForm = ({ tasks, dataSources, onSubmit, onCancel, isLoadin const { isGetAllTasksLoading = false, isGetRunsetTemplateLoading = false, isSubmitLoading = false } = isLoading; const methods = useForm({ - defaultValues + defaultValues, }); const { reset, handleSubmit } = methods; @@ -47,8 +47,8 @@ const MlRunsetTemplateForm = ({ tasks, dataSources, onSubmit, onCancel, isLoadin alertProps={{ messageId: "runsetTemplateDescription", sx: { - width: "100%" - } + width: "100%", + }, }} /> { @@ -73,7 +73,7 @@ const MlRunsetTemplateForm = ({ tasks, dataSources, onSubmit, onCancel, isLoadin return [hyperparameterName, hyperparameterEnvironmentVariable]; }) ), - max_runner_num: Number(formData[FIELD_NAMES.MAXIMUM_RUNSET_RUNNERS]) + max_runner_num: Number(formData[FIELD_NAMES.MAXIMUM_RUNSET_RUNNERS]), }; onSubmit(data); diff --git a/ngui/ui/src/components/forms/MlRunsetTemplateForm/constants.ts b/ngui/ui/src/components/forms/MlRunsetTemplateForm/constants.ts index 4b4788d7a..9da053865 100644 --- a/ngui/ui/src/components/forms/MlRunsetTemplateForm/constants.ts +++ b/ngui/ui/src/components/forms/MlRunsetTemplateForm/constants.ts @@ -5,7 +5,7 @@ export const FIELD_NAMES = Object.freeze({ HYPERPARAMETERS_FIELD_ARRAY: Object.freeze({ FIELD_NAME: "parameters", HYPERPARAMETER_NAME: "parameterName", - ENVIRONMENT_VARIABLE: "environmentVariable" + ENVIRONMENT_VARIABLE: "environmentVariable", }), INSTANCE_TYPES: "instanceTypes", BUDGET: "budget", @@ -13,5 +13,5 @@ export const FIELD_NAMES = Object.freeze({ RESOURCE_NAME_PREFIX: "resourceNamePrefix", REGIONS: "regions", TASKS: "tasks", - MAXIMUM_RUNSET_RUNNERS: "maximumRunsetRunners" + MAXIMUM_RUNSET_RUNNERS: "maximumRunsetRunners", }); diff --git a/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/FormButtons.tsx b/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/FormButtons.tsx index e970edb71..6a995e15d 100644 --- a/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/FormButtons.tsx +++ b/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/FormButtons.tsx @@ -17,7 +17,7 @@ const FormButtons = ({ onCancel, isLoading = false }) => { disabled={isRestricted} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} isLoading={isLoading} /> diff --git a/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/MetricsField.tsx b/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/MetricsField.tsx index ba0bfa3c2..612a843b3 100644 --- a/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/MetricsField.tsx +++ b/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/MetricsField.tsx @@ -19,12 +19,12 @@ const MetricCard = ({ name, metricKey, tendency, aggregateFunction, targetValue, height: "100%", // TODO ML: Get the color programmatically? // Context: We use the same color as for the input borders - border: `1px solid #C4C4C4` + border: `1px solid #C4C4C4`, }} >
    @@ -69,7 +69,7 @@ const MetricsField = ({ metrics = [], isLoading = false }) => { {chunks} - ) + ), }} /> diff --git a/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/OwnerField.tsx b/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/OwnerField.tsx index e7a3f65eb..84473af9a 100644 --- a/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/OwnerField.tsx +++ b/ngui/ui/src/components/forms/MlTaskCreateForm/FormElements/OwnerField.tsx @@ -14,7 +14,7 @@ const MlTaskCreateFormOwnerField = ({ employees = [], isLoading = false }) => ( isLoading={isLoading} items={employees.map((employee) => ({ value: employee.id, - content: {employee.name} + content: {employee.name}, }))} /> ); diff --git a/ngui/ui/src/components/forms/MlTaskCreateForm/MlTaskCreateForm.tsx b/ngui/ui/src/components/forms/MlTaskCreateForm/MlTaskCreateForm.tsx index eb4272783..540fc7ab0 100644 --- a/ngui/ui/src/components/forms/MlTaskCreateForm/MlTaskCreateForm.tsx +++ b/ngui/ui/src/components/forms/MlTaskCreateForm/MlTaskCreateForm.tsx @@ -7,7 +7,7 @@ const MlTaskCreateForm = ({ onSubmit, onCancel, employees = [], metrics, isLoadi const { isGetEmployeesLoading = false, isCreateTaskLoading = false, isGetMlMetricsLoading = false } = isLoading; const methods = useForm({ - defaultValues: getDefaultValues() + defaultValues: getDefaultValues(), }); const { handleSubmit } = methods; diff --git a/ngui/ui/src/components/forms/MlTaskCreateForm/constants.ts b/ngui/ui/src/components/forms/MlTaskCreateForm/constants.ts index b03625e5b..368deb04d 100644 --- a/ngui/ui/src/components/forms/MlTaskCreateForm/constants.ts +++ b/ngui/ui/src/components/forms/MlTaskCreateForm/constants.ts @@ -3,5 +3,5 @@ export const FIELD_NAMES = Object.freeze({ DESCRIPTION: "description", KEY: "key", OWNER: "owner_id", - METRICS: "metrics" + METRICS: "metrics", }); diff --git a/ngui/ui/src/components/forms/MlTaskCreateForm/utils.ts b/ngui/ui/src/components/forms/MlTaskCreateForm/utils.ts index 796d7d61e..683e7d119 100644 --- a/ngui/ui/src/components/forms/MlTaskCreateForm/utils.ts +++ b/ngui/ui/src/components/forms/MlTaskCreateForm/utils.ts @@ -6,5 +6,5 @@ export const getDefaultValues = (): FormValues => ({ [FIELD_NAMES.DESCRIPTION]: "", [FIELD_NAMES.KEY]: "", [FIELD_NAMES.OWNER]: "", - [FIELD_NAMES.METRICS]: [] + [FIELD_NAMES.METRICS]: [], }); diff --git a/ngui/ui/src/components/forms/OrganizationOptionForm/OrganizationOptionForm.tsx b/ngui/ui/src/components/forms/OrganizationOptionForm/OrganizationOptionForm.tsx index 1be7cfd8f..878951fc6 100644 --- a/ngui/ui/src/components/forms/OrganizationOptionForm/OrganizationOptionForm.tsx +++ b/ngui/ui/src/components/forms/OrganizationOptionForm/OrganizationOptionForm.tsx @@ -10,7 +10,7 @@ import { getDefaultValues } from "./utils"; const OrganizationOptionForm = ({ onSubmit, onCancel, isLoading = false }: OrganizationOptionFormProps) => { const methods = useForm({ - defaultValues: getDefaultValues() + defaultValues: getDefaultValues(), }); const { handleSubmit } = methods; diff --git a/ngui/ui/src/components/forms/OrganizationOptionForm/constants.ts b/ngui/ui/src/components/forms/OrganizationOptionForm/constants.ts index 87b8eb7c1..bc4637c1f 100644 --- a/ngui/ui/src/components/forms/OrganizationOptionForm/constants.ts +++ b/ngui/ui/src/components/forms/OrganizationOptionForm/constants.ts @@ -1,3 +1,3 @@ export const FIELD_NAMES = Object.freeze({ - OPTION_NAME: "organizationOptionName" + OPTION_NAME: "organizationOptionName", }); diff --git a/ngui/ui/src/components/forms/OrganizationOptionForm/utils.ts b/ngui/ui/src/components/forms/OrganizationOptionForm/utils.ts index 85843c1e2..93478d4e9 100644 --- a/ngui/ui/src/components/forms/OrganizationOptionForm/utils.ts +++ b/ngui/ui/src/components/forms/OrganizationOptionForm/utils.ts @@ -1,5 +1,5 @@ import { FIELD_NAMES } from "./constants"; export const getDefaultValues = () => ({ - [FIELD_NAMES.OPTION_NAME]: "" + [FIELD_NAMES.OPTION_NAME]: "", }); diff --git a/ngui/ui/src/components/forms/PaletteSettingsForm/FormElements/OptionField.tsx b/ngui/ui/src/components/forms/PaletteSettingsForm/FormElements/OptionField.tsx index 677ee9520..03b89dc44 100644 --- a/ngui/ui/src/components/forms/PaletteSettingsForm/FormElements/OptionField.tsx +++ b/ngui/ui/src/components/forms/PaletteSettingsForm/FormElements/OptionField.tsx @@ -7,7 +7,7 @@ const OptionField = ({ optionName, optionValue }) => ( label={optionName} name={optionName} InputProps={{ - endAdornment: + endAdornment: , }} /> ); diff --git a/ngui/ui/src/components/forms/PaletteSettingsForm/PaletteSettingsForm.tsx b/ngui/ui/src/components/forms/PaletteSettingsForm/PaletteSettingsForm.tsx index adad4ef73..3f4450e6f 100644 --- a/ngui/ui/src/components/forms/PaletteSettingsForm/PaletteSettingsForm.tsx +++ b/ngui/ui/src/components/forms/PaletteSettingsForm/PaletteSettingsForm.tsx @@ -11,7 +11,7 @@ const PaletteSettingsForm = ({ color, options, onUpdate }) => { const themeSettings = useThemeSettingsOptions(); const methods = useForm({ - defaultValues: options + defaultValues: options, }); const { handleSubmit, reset } = methods; @@ -19,7 +19,7 @@ const PaletteSettingsForm = ({ color, options, onUpdate }) => { useEffect(() => { reset((formValues) => ({ ...formValues, - ...options + ...options, })); }, [options, reset]); @@ -28,8 +28,8 @@ const PaletteSettingsForm = ({ color, options, onUpdate }) => { ...themeSettings, palette: { ...themeSettings.palette, - [color]: formData - } + [color]: formData, + }, }; onUpdate(updatedSettings); @@ -40,8 +40,8 @@ const PaletteSettingsForm = ({ color, options, onUpdate }) => { ...themeSettings, palette: { ...themeSettings.palette, - [color]: {} - } + [color]: {}, + }, }; onUpdate(updatedSettings); @@ -54,7 +54,7 @@ const PaletteSettingsForm = ({ color, options, onUpdate }) => { id="colorPaletteSettings" values={{ color, - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> diff --git a/ngui/ui/src/components/forms/PoolForm/CreatePoolForm.tsx b/ngui/ui/src/components/forms/PoolForm/CreatePoolForm.tsx index f88c628ee..ea11b4a1c 100644 --- a/ngui/ui/src/components/forms/PoolForm/CreatePoolForm.tsx +++ b/ngui/ui/src/components/forms/PoolForm/CreatePoolForm.tsx @@ -17,7 +17,7 @@ const CreatePoolForm = ({ parentId, onSuccess, unallocatedLimit }: CreatePoolFor const { poolOwners, isDataReady: isPoolOwnersDataReady } = useGetPoolOwners(parentId); const methods = useForm({ - defaultValues: getCreateFormDefaultValues() + defaultValues: getCreateFormDefaultValues(), }); const { handleSubmit } = methods; @@ -44,7 +44,7 @@ const CreatePoolForm = ({ parentId, onSuccess, unallocatedLimit }: CreatePoolFor disabled={isRestricted} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} /> diff --git a/ngui/ui/src/components/forms/PoolForm/EditPoolForm.tsx b/ngui/ui/src/components/forms/PoolForm/EditPoolForm.tsx index 0bbef72aa..201090924 100644 --- a/ngui/ui/src/components/forms/PoolForm/EditPoolForm.tsx +++ b/ngui/ui/src/components/forms/PoolForm/EditPoolForm.tsx @@ -27,7 +27,7 @@ const EditPoolForm = ({ unallocatedLimit, poolInfo, onSuccess, onCancel }) => { id: poolId, limit: limitAmount, default_owner_id: defaultResourceOwnerId = "", - purpose: type + purpose: type, } = poolInfo; const isReadOnly = !useIsAllowed({ entityType: SCOPE_TYPES.POOL, entityId: poolId, requiredActions: ["MANAGE_POOLS"] }); @@ -37,8 +37,8 @@ const EditPoolForm = ({ unallocatedLimit, poolInfo, onSuccess, onCancel }) => { poolName, limitAmount, defaultResourceOwnerId, - type - }) + type, + }), }); const { handleSubmit } = methods; @@ -78,7 +78,7 @@ const EditPoolForm = ({ unallocatedLimit, poolInfo, onSuccess, onCancel }) => { dataTestId="btn_save" tooltip={{ show: isRestricted || isReadOnly, - value: getTooltipValue() + value: getTooltipValue(), }} />
    @@ -113,7 +113,7 @@ const getAwsDescription = (config) => { {chunks} ), - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} />
    @@ -136,7 +136,7 @@ const Description = ({ type, config }) => { {chunks} ), - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> @@ -152,7 +152,7 @@ const Description = ({ type, config }) => { {chunks} ), - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> @@ -168,7 +168,7 @@ const Description = ({ type, config }) => { {chunks} ), - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> @@ -184,7 +184,7 @@ const Description = ({ type, config }) => { {chunks} ), - strong: (chunks) => {chunks} + strong: (chunks) => {chunks}, }} /> @@ -203,7 +203,7 @@ const Description = ({ type, config }) => { ), strong: (chunks) => {chunks}, - p: (chunks) =>

    {chunks}

    + p: (chunks) =>

    {chunks}

    , }} /> @@ -217,7 +217,7 @@ const UpdateCredentialsWarning = ({ type }) => { const renderUpdateWarning = () => ( ); @@ -240,8 +240,8 @@ const UpdateCredentialsWarning = ({ type }) => { {chunks} - ) - } + ), + }, }} /> ); @@ -263,7 +263,7 @@ const getConfig = (type, config) => { [AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_NAME]: config.bucket_name, [AWS_BILLING_BUCKET_FIELD_NAMES.EXPORT_NAME]: config.report_name, [AWS_BILLING_BUCKET_FIELD_NAMES.REGION_NAME]: config.region_name, - [AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_PREFIX]: config.bucket_prefix + [AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_PREFIX]: config.bucket_prefix, }; return { @@ -275,14 +275,14 @@ const getConfig = (type, config) => { [AWS_ROOT_UPDATE_DATA_EXPORT_PARAMETERS]: false, [AWS_USE_AWS_EDP_DISCOUNT_FIELD_NAMES.USE_EDP_DISCOUNT]: config.use_edp_discount ?? false, [AWS_EXPORT_TYPE_FIELD_NAMES.CUR_VERSION]: config.cur_version ?? AWS_ROOT_CONNECT_CUR_VERSION.CUR_2, - ...billingBucketFields + ...billingBucketFields, }; } if (config.linked) { return { [AWS_LINKED_CREDENTIALS_FIELD_NAMES.ACCESS_KEY_ID]: config.access_key_id, - [AWS_LINKED_CREDENTIALS_FIELD_NAMES.SECRET_ACCESS_KEY]: "" + [AWS_LINKED_CREDENTIALS_FIELD_NAMES.SECRET_ACCESS_KEY]: "", }; } @@ -292,7 +292,7 @@ const getConfig = (type, config) => { [AWS_ROOT_UPDATE_DATA_EXPORT_PARAMETERS]: false, [AWS_USE_AWS_EDP_DISCOUNT_FIELD_NAMES.USE_EDP_DISCOUNT]: config.use_edp_discount ?? false, [AWS_EXPORT_TYPE_FIELD_NAMES.CUR_VERSION]: config.cur_version ?? AWS_ROOT_CONNECT_CUR_VERSION.CUR_2, - ...billingBucketFields + ...billingBucketFields, }; }, parseFormDataToApiParams: (formData) => { @@ -302,8 +302,8 @@ const getConfig = (type, config) => { config: { assume_role_account_id: formData[AWS_ROLE_CREDENTIALS_FIELD_NAMES.ASSUME_ROLE_ACCOUNT_ID], assume_role_name: formData[AWS_ROLE_CREDENTIALS_FIELD_NAMES.ASSUME_ROLE_NAME], - linked: true - } + linked: true, + }, } : { config: { @@ -315,8 +315,8 @@ const getConfig = (type, config) => { bucket_name: formData[AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_NAME], report_name: formData[AWS_BILLING_BUCKET_FIELD_NAMES.EXPORT_NAME], region_name: formData[AWS_BILLING_BUCKET_FIELD_NAMES.REGION_NAME] || undefined, - bucket_prefix: formData[AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_PREFIX] - } + bucket_prefix: formData[AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_PREFIX], + }, }; } if (config.linked) { @@ -324,8 +324,8 @@ const getConfig = (type, config) => { config: { access_key_id: formData[AWS_LINKED_CREDENTIALS_FIELD_NAMES.ACCESS_KEY_ID], secret_access_key: formData[AWS_LINKED_CREDENTIALS_FIELD_NAMES.SECRET_ACCESS_KEY], - linked: true - } + linked: true, + }, }; } @@ -341,7 +341,7 @@ const getConfig = (type, config) => { bucket_name: formData[AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_NAME], report_name: formData[AWS_BILLING_BUCKET_FIELD_NAMES.EXPORT_NAME], region_name: formData[AWS_BILLING_BUCKET_FIELD_NAMES.REGION_NAME] || undefined, - bucket_prefix: formData[AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_PREFIX] + bucket_prefix: formData[AWS_BILLING_BUCKET_FIELD_NAMES.BUCKET_PREFIX], } : { /** @@ -352,11 +352,11 @@ const getConfig = (type, config) => { bucket_name: config.bucket_name, report_name: config.report_name, region_name: config.region_name ?? undefined, - bucket_prefix: config.bucket_prefix - }) - } + bucket_prefix: config.bucket_prefix, + }), + }, }; - } + }, }; } case AZURE_TENANT: @@ -364,15 +364,15 @@ const getConfig = (type, config) => { getDefaultFormValues: () => ({ [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.CLIENT_ID]: config.client_id, [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.TENANT]: config.tenant, - [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.SECRET]: "" + [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.SECRET]: "", }), parseFormDataToApiParams: (formData) => ({ config: { client_id: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.CLIENT_ID], tenant: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.TENANT], - secret: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.SECRET] - } - }) + secret: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.SECRET], + }, + }), }; case AZURE_CNR: return { @@ -385,7 +385,7 @@ const getConfig = (type, config) => { [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.EXPORT_NAME]: config.export_name, [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.STORAGE_ACCOUNT_CONNECTION_STRING]: config.sa_connection_string, [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.STORAGE_CONTAINER]: config.container, - [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.STORAGE_DIRECTORY]: config.directory + [AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.STORAGE_DIRECTORY]: config.directory, }), parseFormDataToApiParams: (formData) => ({ config: { @@ -398,54 +398,54 @@ const getConfig = (type, config) => { export_name: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.EXPORT_NAME], sa_connection_string: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.STORAGE_ACCOUNT_CONNECTION_STRING], container: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.STORAGE_CONTAINER], - directory: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.STORAGE_DIRECTORY] + directory: formData[AZURE_SUBSCRIPTION_CREDENTIALS_FIELD_NAMES.STORAGE_DIRECTORY], } - : {}) - } - }) + : {}), + }, + }), }; case ALIBABA_CNR: return { getDefaultFormValues: () => ({ [ALIBABA_CREDENTIALS_FIELD_NAMES.ACCESS_KEY_ID]: config.access_key_id, - [ALIBABA_CREDENTIALS_FIELD_NAMES.SECRET_ACCESS_KEY]: "" + [ALIBABA_CREDENTIALS_FIELD_NAMES.SECRET_ACCESS_KEY]: "", }), parseFormDataToApiParams: (formData) => ({ config: { access_key_id: formData[ALIBABA_CREDENTIALS_FIELD_NAMES.ACCESS_KEY_ID], - secret_access_key: formData[ALIBABA_CREDENTIALS_FIELD_NAMES.SECRET_ACCESS_KEY] - } - }) + secret_access_key: formData[ALIBABA_CREDENTIALS_FIELD_NAMES.SECRET_ACCESS_KEY], + }, + }), }; case DATABRICKS: return { getDefaultFormValues: () => ({ [DATABRICKS_CREDENTIALS_FIELD_NAMES.ACCOUNT_ID]: config.account_id, [DATABRICKS_CREDENTIALS_FIELD_NAMES.CLIENT_ID]: config.client_id, - [DATABRICKS_CREDENTIALS_FIELD_NAMES.CLIENT_SECRET]: "" + [DATABRICKS_CREDENTIALS_FIELD_NAMES.CLIENT_SECRET]: "", }), parseFormDataToApiParams: (formData) => ({ config: { account_id: formData[DATABRICKS_CREDENTIALS_FIELD_NAMES.ACCOUNT_ID], client_id: formData[DATABRICKS_CREDENTIALS_FIELD_NAMES.CLIENT_ID], - client_secret: formData[DATABRICKS_CREDENTIALS_FIELD_NAMES.CLIENT_SECRET] - } - }) + client_secret: formData[DATABRICKS_CREDENTIALS_FIELD_NAMES.CLIENT_SECRET], + }, + }), }; case KUBERNETES_CNR: return { getDefaultFormValues: () => ({ [KUBERNETES_CREDENTIALS_FIELD_NAMES.USER]: config.user, [KUBERNETES_CREDENTIALS_FIELD_NAMES.PASSWORD]: "", - [KUBERNETES_CREDENTIALS_FIELD_NAMES.USE_FLAVOR_BASED_COST_MODEL]: !config.custom_price + [KUBERNETES_CREDENTIALS_FIELD_NAMES.USE_FLAVOR_BASED_COST_MODEL]: !config.custom_price, }), parseFormDataToApiParams: (formData) => ({ config: { password: formData[KUBERNETES_CREDENTIALS_FIELD_NAMES.PASSWORD] || undefined, user: formData[KUBERNETES_CREDENTIALS_FIELD_NAMES.USER] || undefined, - custom_price: !formData[KUBERNETES_CREDENTIALS_FIELD_NAMES.USE_FLAVOR_BASED_COST_MODEL] - } - }) + custom_price: !formData[KUBERNETES_CREDENTIALS_FIELD_NAMES.USE_FLAVOR_BASED_COST_MODEL], + }, + }), }; case GCP_CNR: return { @@ -461,10 +461,10 @@ const getConfig = (type, config) => { ? { [GCP_CREDENTIALS_FIELD_NAMES.PRICING_DATA_DATASET]: config.pricing_data?.dataset_name, [GCP_CREDENTIALS_FIELD_NAMES.PRICING_DATA_TABLE]: config.pricing_data?.table_name, - [GCP_CREDENTIALS_FIELD_NAMES.PRICING_DATA_PROJECT_ID]: config.pricing_data?.project_id + [GCP_CREDENTIALS_FIELD_NAMES.PRICING_DATA_PROJECT_ID]: config.pricing_data?.project_id, } : {}), - [GCP_CREDENTIALS_FIELD_NAMES.CREDENTIALS]: "" + [GCP_CREDENTIALS_FIELD_NAMES.CREDENTIALS]: "", }; }, parseFormDataToApiParams: async (formData) => { @@ -478,7 +478,7 @@ const getConfig = (type, config) => { billing_data: { dataset_name: formData[GCP_CREDENTIALS_FIELD_NAMES.BILLING_DATA_DATASET], table_name: formData[GCP_CREDENTIALS_FIELD_NAMES.BILLING_DATA_TABLE], - project_id: formData[GCP_CREDENTIALS_FIELD_NAMES.BILLING_DATA_PROJECT_ID] || undefined + project_id: formData[GCP_CREDENTIALS_FIELD_NAMES.BILLING_DATA_PROJECT_ID] || undefined, }, ...(formData[GCP_CREDENTIALS_FIELD_NAMES.AUTOMATICALLY_DETECT_PRICING_DATA] ? {} @@ -486,12 +486,12 @@ const getConfig = (type, config) => { pricing_data: { dataset_name: formData[GCP_CREDENTIALS_FIELD_NAMES.PRICING_DATA_DATASET], table_name: formData[GCP_CREDENTIALS_FIELD_NAMES.PRICING_DATA_TABLE], - project_id: formData[GCP_CREDENTIALS_FIELD_NAMES.PRICING_DATA_PROJECT_ID] || undefined - } - }) - } + project_id: formData[GCP_CREDENTIALS_FIELD_NAMES.PRICING_DATA_PROJECT_ID] || undefined, + }, + }), + }, }; - } + }, }; case GCP_TENANT: return { @@ -505,10 +505,10 @@ const getConfig = (type, config) => { ...(hasPricingData ? { [GCP_TENANT_CREDENTIALS_FIELD_NAMES.PRICING_DATA_DATASET]: config.pricing_data?.dataset_name, - [GCP_TENANT_CREDENTIALS_FIELD_NAMES.PRICING_DATA_TABLE]: config.pricing_data?.table_name + [GCP_TENANT_CREDENTIALS_FIELD_NAMES.PRICING_DATA_TABLE]: config.pricing_data?.table_name, } : {}), - [GCP_TENANT_CREDENTIALS_FIELD_NAMES.CREDENTIALS]: "" + [GCP_TENANT_CREDENTIALS_FIELD_NAMES.CREDENTIALS]: "", }; }, parseFormDataToApiParams: async (formData) => { @@ -521,19 +521,19 @@ const getConfig = (type, config) => { credentials: JSON.parse(credentials), billing_data: { dataset_name: formData[GCP_TENANT_CREDENTIALS_FIELD_NAMES.BILLING_DATA_DATASET], - table_name: formData[GCP_TENANT_CREDENTIALS_FIELD_NAMES.BILLING_DATA_TABLE] + table_name: formData[GCP_TENANT_CREDENTIALS_FIELD_NAMES.BILLING_DATA_TABLE], }, ...(formData[GCP_TENANT_CREDENTIALS_FIELD_NAMES.AUTOMATICALLY_DETECT_PRICING_DATA] ? {} : { pricing_data: { dataset_name: formData[GCP_TENANT_CREDENTIALS_FIELD_NAMES.PRICING_DATA_DATASET], - table_name: formData[GCP_TENANT_CREDENTIALS_FIELD_NAMES.PRICING_DATA_TABLE] - } - }) - } + table_name: formData[GCP_TENANT_CREDENTIALS_FIELD_NAMES.PRICING_DATA_TABLE], + }, + }), + }, }; - } + }, }; case NEBIUS: return { @@ -545,7 +545,7 @@ const getConfig = (type, config) => { [NEBIUS_FIELD_NAMES.ACCESS_KEY_ID]: config.access_key_id, [NEBIUS_FIELD_NAMES.SECRET_ACCESS_KEY]: "", [NEBIUS_FIELD_NAMES.BUCKET_NAME]: config.bucket_name, - [NEBIUS_FIELD_NAMES.BUCKET_PREFIX]: config.bucket_prefix + [NEBIUS_FIELD_NAMES.BUCKET_PREFIX]: config.bucket_prefix, }), parseFormDataToApiParams: (formData) => ({ config: { @@ -556,9 +556,9 @@ const getConfig = (type, config) => { access_key_id: formData[NEBIUS_FIELD_NAMES.ACCESS_KEY_ID], secret_access_key: formData[NEBIUS_FIELD_NAMES.SECRET_ACCESS_KEY], bucket_name: formData[NEBIUS_FIELD_NAMES.BUCKET_NAME], - bucket_prefix: formData[NEBIUS_FIELD_NAMES.BUCKET_PREFIX] - } - }) + bucket_prefix: formData[NEBIUS_FIELD_NAMES.BUCKET_PREFIX], + }, + }), }; default: return {}; @@ -571,14 +571,14 @@ const UpdateDataSourceCredentialsForm = ({ config, onSubmit, onCancel, - isLoading = false + isLoading = false, }: UpdateDataSourceCredentialsFormProps) => { const { isRestricted, restrictionReasonMessage } = useOrganizationActionRestrictions(); const { getDefaultFormValues, parseFormDataToApiParams } = getConfig(type, config); const methods = useForm({ - defaultValues: getDefaultFormValues() + defaultValues: getDefaultFormValues(), }); const { handleSubmit } = methods; @@ -608,7 +608,7 @@ const UpdateDataSourceCredentialsForm = ({ disabled={isRestricted} tooltip={{ show: isRestricted, - value: restrictionReasonMessage + value: restrictionReasonMessage, }} />