diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml index 89b899c5a3..911ed6f070 100644 --- a/.github/workflows/commitlint.yml +++ b/.github/workflows/commitlint.yml @@ -1,4 +1,4 @@ -name: Lint Commit Messages +name: commitlint on: [pull_request] permissions: @@ -6,7 +6,7 @@ permissions: pull-requests: read jobs: - commitlint: + commit-messages-lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1338b744f4..2b67b599d4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -27,7 +27,7 @@ jobs: - name: 💚 Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 22.13.0 - name: 💚 Install dependencies run: npm install diff --git a/.github/workflows/license_header.yml b/.github/workflows/license-header.yml similarity index 96% rename from .github/workflows/license_header.yml rename to .github/workflows/license-header.yml index cf577e51c9..384f9e4e47 100644 --- a/.github/workflows/license_header.yml +++ b/.github/workflows/license-header.yml @@ -1,4 +1,4 @@ -name: check license headers +name: license-header on: push: branches: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c0f87cc216..a5207a3d20 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -69,7 +69,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 22.13.0 - name: Cache node modules uses: actions/cache@v4 with: @@ -92,7 +92,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 22.13.0 - name: Restore node modules uses: actions/cache@v4 with: @@ -112,7 +112,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 22.13.0 - name: Restore node modules uses: actions/cache@v4 with: @@ -132,7 +132,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 18.16.1 + node-version: 22.13.0 - name: Restore node modules uses: actions/cache@v4 with: diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml new file mode 100644 index 0000000000..1db1a64e9f --- /dev/null +++ b/.github/workflows/pr-title.yml @@ -0,0 +1,13 @@ +name: pr-title +on: + pull_request: + types: ['opened', 'edited', 'reopened', 'synchronize'] + +jobs: + pr-title-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install Dependencies + run: npm install @commitlint/config-conventional@16.0.0 + - uses: JulienKode/pull-request-name-linter-action@v0.5.0 diff --git a/antarest/core/exceptions.py b/antarest/core/exceptions.py index 7001d832ca..89555f3e48 100644 --- a/antarest/core/exceptions.py +++ b/antarest/core/exceptions.py @@ -545,6 +545,11 @@ def __init__(self, message: str) -> None: super().__init__(HTTPStatus.UNPROCESSABLE_ENTITY, message) +class MatrixImportFailed(HTTPException): + def __init__(self, message: str) -> None: + super().__init__(HTTPStatus.UNPROCESSABLE_ENTITY, message) + + class ConstraintTermNotFound(HTTPException): """ Exception raised when a constraint term is not found. diff --git a/antarest/study/business/areas/renewable_management.py b/antarest/study/business/areas/renewable_management.py index ca70ea8bdf..3625ccc06b 100644 --- a/antarest/study/business/areas/renewable_management.py +++ b/antarest/study/business/areas/renewable_management.py @@ -187,7 +187,8 @@ def get_all_renewables_props( renewables_by_areas: t.MutableMapping[str, t.MutableMapping[str, RenewableClusterOutput]] renewables_by_areas = collections.defaultdict(dict) for area_id, cluster_obj in clusters.items(): - for cluster_id, cluster in cluster_obj.items(): + for cluster_name, cluster in cluster_obj.items(): + cluster_id = transform_name_to_id(cluster_name) renewables_by_areas[area_id][cluster_id] = create_renewable_output(study.version, cluster_id, cluster) return renewables_by_areas @@ -223,7 +224,7 @@ def _make_create_cluster_cmd( ) -> CreateRenewablesCluster: command = CreateRenewablesCluster( area_id=area_id, - cluster_name=cluster.id, + cluster_name=cluster.name, parameters=cluster.model_dump(mode="json", by_alias=True, exclude={"id"}), command_context=self.storage_service.variant_study_service.command_factory.command_context, study_version=study_version, diff --git a/antarest/study/business/areas/st_storage_management.py b/antarest/study/business/areas/st_storage_management.py index 258b08770f..2c07a8c9fc 100644 --- a/antarest/study/business/areas/st_storage_management.py +++ b/antarest/study/business/areas/st_storage_management.py @@ -225,15 +225,17 @@ def validate_rule_curve(self) -> "STStorageMatrices": # ============================ -_STORAGE_LIST_PATH = "input/st-storage/clusters/{area_id}/list/{storage_id}" +_AREA_STORAGES_PATH = "input/st-storage/clusters/{area_id}/list" +_STORAGE_PATH = _AREA_STORAGES_PATH + "/{storage_id}" _STORAGE_SERIES_PATH = "input/st-storage/series/{area_id}/{storage_id}/{ts_name}" _ALL_STORAGE_PATH = "input/st-storage/clusters" -def _get_values_by_ids(file_study: FileStudy, area_id: str) -> t.Mapping[str, t.Mapping[str, t.Any]]: - path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id="")[:-1] +def _get_values_by_ids(file_study: FileStudy, area_id: str) -> t.Dict[str, t.Dict[str, t.Any]]: + path = _AREA_STORAGES_PATH.format(area_id=area_id) try: - return CaseInsensitiveDict(file_study.tree.get(path.split("/"), depth=3)) + values = file_study.tree.get(path.split("/"), depth=3) + return {transform_name_to_id(name): cluster for name, cluster in values.items()} except ChildNotFoundError: raise AreaNotFound(area_id) from None except KeyError: @@ -328,7 +330,7 @@ def get_storages( """ file_study = self._get_file_study(study) - path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id="")[:-1] + path = _STORAGE_PATH.format(area_id=area_id, storage_id="")[:-1] try: config = file_study.tree.get(path.split("/"), depth=3) except ChildNotFoundError: @@ -373,7 +375,8 @@ def get_all_storages_props( storages_by_areas: t.MutableMapping[str, t.MutableMapping[str, STStorageOutput]] storages_by_areas = collections.defaultdict(dict) for area_id, cluster_obj in storages.items(): - for cluster_id, cluster in cluster_obj.items(): + for cluster_name, cluster in cluster_obj.items(): + cluster_id = transform_name_to_id(cluster_name) storages_by_areas[area_id][cluster_id] = create_storage_output(study_version, cluster_id, cluster) return storages_by_areas @@ -404,7 +407,7 @@ def update_storages_props( study_version, **new_cluster.model_dump(mode="json", by_alias=False, exclude_none=True), ) - path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id=storage_id) + path = _STORAGE_PATH.format(area_id=area_id, storage_id=storage_id) cmd = UpdateConfig( target=path, data=properties.model_dump(mode="json", by_alias=True, exclude={"id"}), @@ -437,11 +440,11 @@ def get_storage( """ file_study = self._get_file_study(study) - path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id=storage_id) + path = _STORAGE_PATH.format(area_id=area_id, storage_id=storage_id) try: config = file_study.tree.get(path.split("/"), depth=1) except KeyError: - raise STStorageNotFound(path, storage_id) from None + raise STStorageNotFound(path, storage_id) return create_storage_output(StudyVersion.parse(study.version), storage_id, config) def update_storage( @@ -472,7 +475,7 @@ def update_storage( values = values_by_ids.get(storage_id) if values is None: - path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id=storage_id) + path = _STORAGE_PATH.format(area_id=area_id, storage_id=storage_id) raise STStorageNotFound(path, storage_id) old_config = create_st_storage_config(study_version, **values) @@ -490,7 +493,7 @@ def update_storage( # create the update config commands with the modified data command_context = self.storage_service.variant_study_service.command_factory.command_context - path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id=storage_id) + path = _STORAGE_PATH.format(area_id=area_id, storage_id=storage_id) commands = [ UpdateConfig( target=f"{path}/{key}", data=value, command_context=command_context, study_version=study_version @@ -521,7 +524,7 @@ def delete_storages( for storage_id in storage_ids: if storage_id not in values_by_ids: - path = _STORAGE_LIST_PATH.format(area_id=area_id, storage_id=storage_id) + path = _STORAGE_PATH.format(area_id=area_id, storage_id=storage_id) raise STStorageNotFound(path, storage_id) command_context = self.storage_service.variant_study_service.command_factory.command_context diff --git a/antarest/study/business/areas/thermal_management.py b/antarest/study/business/areas/thermal_management.py index dba96f570c..a3c6c24c5a 100644 --- a/antarest/study/business/areas/thermal_management.py +++ b/antarest/study/business/areas/thermal_management.py @@ -317,7 +317,7 @@ def _make_create_cluster_cmd( # between the cluster name and the cluster ID (which is a section name). args = { "area_id": area_id, - "cluster_name": cluster.id, + "cluster_name": cluster.name, "parameters": cluster.model_dump(mode="json", by_alias=True, exclude={"id"}), "command_context": self.storage_service.variant_study_service.command_factory.command_context, "study_version": study_version, diff --git a/antarest/study/business/table_mode_management.py b/antarest/study/business/table_mode_management.py index 931f5b6c3e..fca331d676 100644 --- a/antarest/study/business/table_mode_management.py +++ b/antarest/study/business/table_mode_management.py @@ -29,6 +29,7 @@ from antarest.study.business.link_management import LinkManager from antarest.study.business.model.link_model import LinkBaseDTO from antarest.study.model import STUDY_VERSION_8_2, RawStudy +from antarest.study.storage.rawstudy.model.filesystem.config.field_validators import transform_name_to_id _TableIndex = str # row name _TableColumn = str # column name @@ -218,10 +219,9 @@ def update_table_data( thermals_by_areas: t.MutableMapping[str, t.MutableMapping[str, ThermalClusterInput]] thermals_by_areas = collections.defaultdict(dict) for key, values in data.items(): - area_id, cluster_id = key.split(" / ") - # Thermal clusters ids were not lowered at the time. - # So to ensure this endpoint still works with old scripts we have to lower the id at first. - thermals_by_areas[area_id][cluster_id.lower()] = ThermalClusterInput(**values) + area_id, cluster_name = key.split(" / ") + cluster_id = transform_name_to_id(cluster_name) + thermals_by_areas[area_id][cluster_id] = ThermalClusterInput(**values) thermals_map = self._thermal_manager.update_thermals_props(study, thermals_by_areas) data = { f"{area_id} / {cluster_id}": cluster.model_dump(by_alias=True, exclude={"id", "name"}) @@ -233,9 +233,9 @@ def update_table_data( renewables_by_areas: t.MutableMapping[str, t.MutableMapping[str, RenewableClusterInput]] renewables_by_areas = collections.defaultdict(dict) for key, values in data.items(): - area_id, cluster_id = key.split(" / ") - # Same reason as for thermal clusters - renewables_by_areas[area_id][cluster_id.lower()] = RenewableClusterInput(**values) + area_id, cluster_name = key.split(" / ") + cluster_id = transform_name_to_id(cluster_name) + renewables_by_areas[area_id][cluster_id] = RenewableClusterInput(**values) renewables_map = self._renewable_manager.update_renewables_props(study, renewables_by_areas) data = { f"{area_id} / {cluster_id}": cluster.model_dump(by_alias=True, exclude={"id", "name"}) @@ -247,7 +247,8 @@ def update_table_data( storages_by_areas: t.MutableMapping[str, t.MutableMapping[str, STStorageInput]] storages_by_areas = collections.defaultdict(dict) for key, values in data.items(): - area_id, cluster_id = key.split(" / ") + area_id, cluster_name = key.split(" / ") + cluster_id = transform_name_to_id(cluster_name) storages_by_areas[area_id][cluster_id] = STStorageInput(**values) storages_map = self._st_storage_manager.update_storages_props(study, storages_by_areas) data = { diff --git a/antarest/study/service.py b/antarest/study/service.py index e0e1e1a9c2..31bb80fa1f 100644 --- a/antarest/study/service.py +++ b/antarest/study/service.py @@ -13,7 +13,6 @@ import base64 import collections import contextlib -import csv import http import io import logging @@ -25,6 +24,7 @@ from uuid import uuid4 import numpy as np +import numpy.typing as npt import pandas as pd from antares.study.version import StudyVersion from fastapi import HTTPException, UploadFile @@ -39,6 +39,7 @@ CommandApplicationError, FolderCreationNotAllowed, IncorrectPathError, + MatrixImportFailed, NotAManagedStudyException, OutputAlreadyArchived, OutputAlreadyUnarchived, @@ -197,6 +198,20 @@ def get_disk_usage(path: t.Union[str, Path]) -> int: return total_size +def _imports_matrix_from_bytes(data: bytes) -> npt.NDArray[np.float64]: + """Tries to convert bytes to a numpy array when importing a matrix""" + str_data = data.decode("utf-8") + if not str_data: + return np.zeros(shape=(0, 0)) + for delimiter in [",", ";", "\t"]: + with contextlib.suppress(Exception): + df = pd.read_csv(io.BytesIO(data), delimiter=delimiter, header=None).replace(",", ".", regex=True) + df = df.dropna(axis=1, how="all") # We want to remove columns full of NaN at the import + matrix = df.to_numpy(dtype=np.float64) + return matrix + raise MatrixImportFailed("Could not parse the given matrix") + + def _get_path_inside_user_folder( path: str, exception_class: t.Type[t.Union[FolderCreationNotAllowed, ResourceDeletionNotAllowed]] ) -> str: @@ -1591,19 +1606,7 @@ def _create_edit_study_command( elif isinstance(tree_node, InputSeriesMatrix): if isinstance(data, bytes): # noinspection PyTypeChecker - str_data = data.decode("utf-8") - if not str_data: - matrix = np.zeros(shape=(0, 0)) - else: - size_to_check = min(len(str_data), 64) # sniff a chunk only to speed up the code - try: - delimiter = csv.Sniffer().sniff(str_data[:size_to_check], delimiters=r"[,;\t]").delimiter - except csv.Error: - # Can happen with data with only one column. In this case, we don't care about the delimiter. - delimiter = "\t" - df = pd.read_csv(io.BytesIO(data), delimiter=delimiter, header=None).replace(",", ".", regex=True) - df = df.dropna(axis=1, how="all") # We want to remove columns full of NaN at the import - matrix = df.to_numpy(dtype=np.float64) + matrix = _imports_matrix_from_bytes(data) matrix = matrix.reshape((1, 0)) if matrix.size == 0 else matrix return ReplaceMatrix( target=url, matrix=matrix.tolist(), command_context=context, study_version=study_version diff --git a/antarest/study/storage/rawstudy/ini_reader.py b/antarest/study/storage/rawstudy/ini_reader.py index e003878e7c..b6b626dc78 100644 --- a/antarest/study/storage/rawstudy/ini_reader.py +++ b/antarest/study/storage/rawstudy/ini_reader.py @@ -15,13 +15,25 @@ import typing as t from abc import ABC, abstractmethod from pathlib import Path +from typing import Callable, Optional from typing_extensions import override from antarest.core.model import JSON +PrimitiveType = t.Union[str, int, float, bool] +ValueParser = Callable[[str], PrimitiveType] +SelectionPredicate = Callable[[str], bool] -def convert_value(value: str) -> t.Union[str, int, float, bool]: + +def _lower_case(input: str) -> str: + return input.lower() + + +LOWER_CASE_PARSER: ValueParser = _lower_case + + +def _convert_value(value: str) -> PrimitiveType: """Convert value to the appropriate type for JSON.""" try: @@ -38,8 +50,19 @@ def convert_value(value: str) -> t.Union[str, int, float, bool]: return value -@dataclasses.dataclass -class IniFilter: +@dataclasses.dataclass(frozen=True) +class OptionKey: + """ + Defines a location in INI file data. + A None section means all sections. + """ + + section: Optional[str] + key: Optional[str] + + +@dataclasses.dataclass(frozen=True) +class ReaderOptions: """ Filter sections and options in an INI file based on regular expressions. @@ -48,43 +71,8 @@ class IniFilter: option_regex: A compiled regex for matching option names. """ - section_regex: t.Optional[t.Pattern[str]] = None - option_regex: t.Optional[t.Pattern[str]] = None - - @classmethod - def from_kwargs( - cls, - section: str = "", - option: str = "", - section_regex: t.Optional[t.Union[str, t.Pattern[str]]] = None, - option_regex: t.Optional[t.Union[str, t.Pattern[str]]] = None, - **_unused: t.Any, # ignore unknown options - ) -> "IniFilter": - """ - Create an instance from given filtering parameters. - - When using `section` or `option` parameters, an exact match is done. - Alternatively, one can use `section_regex` or `option_regex` to perform a full match using a regex. - - Args: - section: The section name to match (by default, all sections are matched) - option: The option name to match (by default, all options are matched) - section_regex: The regex for matching section names. - option_regex: The regex for matching option names. - _unused: Placeholder for any unknown options. - - Returns: - The newly created instance - """ - if section: - section_regex = re.compile(re.escape(section), re.IGNORECASE) - if option: - option_regex = re.compile(re.escape(option), re.IGNORECASE) - if isinstance(section_regex, str): - section_regex = re.compile(section_regex, re.IGNORECASE) if section_regex else None - if isinstance(option_regex, str): - option_regex = re.compile(option_regex, re.IGNORECASE) if option_regex else None - return cls(section_regex=section_regex, option_regex=option_regex) + section_predicate: Optional[SelectionPredicate] = None + option_predicate: Optional[SelectionPredicate] = None def select_section_option(self, section: str, option: str = "") -> bool: """ @@ -97,20 +85,58 @@ def select_section_option(self, section: str, option: str = "") -> bool: Returns: Whether the section and option match their respective regular expressions. """ - if self.section_regex and not self.section_regex.fullmatch(section): + if self.section_predicate and not self.section_predicate(section): return False - if self.option_regex and option and not self.option_regex.fullmatch(option): + if option and self.option_predicate and not self.option_predicate(option): return False return True +def ini_reader_options( + section: str = "", + option: str = "", + section_regex: t.Optional[t.Union[str, t.Pattern[str]]] = None, + option_regex: t.Optional[t.Union[str, t.Pattern[str]]] = None, +) -> ReaderOptions: + """ + Create an instance from given filtering parameters. + + When using `section` or `option` parameters, an exact match is done. + Alternatively, one can use `section_regex` or `option_regex` to perform a full match using a regex. + + Args: + section: The section name to match (by default, all sections are matched) + option: The option name to match (by default, all options are matched) + section_regex: The regex for matching section names. + option_regex: The regex for matching option names. + + Returns: + The newly created instance + """ + return ReaderOptions( + section_predicate=make_predicate(section, section_regex), option_predicate=make_predicate(option, option_regex) + ) + + +def make_predicate( + value: str = "", regex: t.Optional[t.Union[str, t.Pattern[str]]] = None +) -> Optional[SelectionPredicate]: + if value: + option_regex = re.compile(re.escape(value), re.IGNORECASE) + elif isinstance(regex, str): + option_regex = re.compile(regex, re.IGNORECASE) if regex else None + else: + return None + return option_regex.fullmatch + + class IReader(ABC): """ File reader interface. """ @abstractmethod - def read(self, path: t.Any, **kwargs: t.Any) -> JSON: + def read(self, path: t.Any, options: Optional[ReaderOptions] = None) -> JSON: """ Parse `.ini` file to json object. @@ -152,11 +178,17 @@ class IniReader(IReader): This class is not compatible with standard `.ini` readers. """ - def __init__(self, special_keys: t.Sequence[str] = (), section_name: str = "settings") -> None: + def __init__( + self, + special_keys: t.Sequence[str] = (), + section_name: str = "settings", + value_parsers: t.Dict[OptionKey, ValueParser] = None, + ) -> None: super().__init__() # Default section name to use if `.ini` file has no section. self._special_keys = set(special_keys) + self._value_parsers = value_parsers or {} # List of keys which should be parsed as list. self._section_name = section_name @@ -180,15 +212,16 @@ def __repr__(self) -> str: # pragma: no cover return f"{cls}(special_keys={special_keys!r}, section_name={section_name!r})" @override - def read(self, path: t.Any, **kwargs: t.Any) -> JSON: + def read(self, path: t.Any, options: Optional[ReaderOptions] = None) -> JSON: + options = options or ReaderOptions() if isinstance(path, (Path, str)): try: with open(path, mode="r", encoding="utf-8") as f: - sections = self._parse_ini_file(f, **kwargs) + sections = self._parse_ini_file(f, options) except UnicodeDecodeError: # On windows, `.ini` files may use "cp1252" encoding with open(path, mode="r", encoding="cp1252") as f: - sections = self._parse_ini_file(f, **kwargs) + sections = self._parse_ini_file(f, options) except FileNotFoundError: # If the file is missing, an empty dictionary is returned. # This is required to mimic the behavior of `configparser.ConfigParser`. @@ -196,14 +229,14 @@ def read(self, path: t.Any, **kwargs: t.Any) -> JSON: elif hasattr(path, "read"): with path: - sections = self._parse_ini_file(path, **kwargs) + sections = self._parse_ini_file(path, options) else: # pragma: no cover raise TypeError(repr(type(path))) return t.cast(JSON, sections) - def _parse_ini_file(self, ini_file: t.TextIO, **kwargs: t.Any) -> JSON: + def _parse_ini_file(self, ini_file: t.TextIO, options: ReaderOptions) -> JSON: """ Parse `.ini` file to JSON object. @@ -242,8 +275,6 @@ def _parse_ini_file(self, ini_file: t.TextIO, **kwargs: t.Any) -> JSON: Returns: Dictionary of parsed `.ini` file which can be converted to JSON. """ - ini_filter = IniFilter.from_kwargs(**kwargs) - # NOTE: This algorithm is 1.93x faster than configparser.ConfigParser section_name = self._section_name @@ -258,10 +289,10 @@ def _parse_ini_file(self, ini_file: t.TextIO, **kwargs: t.Any) -> JSON: continue elif line.startswith("["): section_name = line[1:-1] - stop = self._handle_section(ini_filter, section_name) + stop = self._handle_section(options, section_name) elif "=" in line: key, value = map(str.strip, line.split("=", 1)) - stop = self._handle_option(ini_filter, section_name, key, value) + stop = self._handle_option(options, section_name, key, value) else: raise ValueError(f"☠☠☠ Invalid line: {line!r}") @@ -271,7 +302,7 @@ def _parse_ini_file(self, ini_file: t.TextIO, **kwargs: t.Any) -> JSON: return self._curr_sections - def _handle_section(self, ini_filter: IniFilter, section: str) -> bool: + def _handle_section(self, ini_filter: ReaderOptions, section: str) -> bool: # state: a new section is found match = ini_filter.select_section_option(section) @@ -294,29 +325,43 @@ def _append_section(self, section: str) -> None: self._curr_section = section self._curr_option = "" - def _handle_option(self, ini_filter: IniFilter, section: str, key: str, value: str) -> bool: + def _handle_option(self, options: ReaderOptions, section: str, key: str, value: str) -> bool: # state: a new option is found (which may be a duplicate) - match = ini_filter.select_section_option(section, key) + match = options.select_section_option(section, key) if self._curr_option: if match: - self._append_option(section, key, value) + self._append_option(section, key, value, options) return False # prematurely stop parsing if the filter don't match - return not ini_filter.select_section_option(section) + return not options.select_section_option(section) if match: - self._append_option(section, key, value) + self._append_option(section, key, value, options) # continue parsing to the next option return False - def _append_option(self, section: str, key: str, value: str) -> None: + def _get_parser(self, section: str, key: str) -> ValueParser: + if not self._value_parsers: + return _convert_value + possible_keys = [ + OptionKey(section=section, key=key), + OptionKey(section=None, key=key), + ] + for k in possible_keys: + if parser := self._value_parsers.get(k, None): + return parser + return _convert_value + + def _append_option(self, section: str, key: str, value: str, options: ReaderOptions) -> None: self._curr_sections.setdefault(section, {}) values = self._curr_sections[section] + parser = self._get_parser(section, key) + parsed = parser(value) if key in self._special_keys: - values.setdefault(key, []).append(convert_value(value)) + values.setdefault(key, []).append(parsed) else: - values[key] = convert_value(value) + values[key] = parsed self._curr_option = key @@ -326,7 +371,7 @@ class SimpleKeyValueReader(IniReader): """ @override - def read(self, path: t.Any, **kwargs: t.Any) -> JSON: + def read(self, path: t.Any, options: Optional[ReaderOptions] = None) -> JSON: """ Parse `.ini` file which has no section to JSON object. diff --git a/antarest/study/storage/rawstudy/ini_writer.py b/antarest/study/storage/rawstudy/ini_writer.py index 9ff81c213e..b86ff46059 100644 --- a/antarest/study/storage/rawstudy/ini_writer.py +++ b/antarest/study/storage/rawstudy/ini_writer.py @@ -12,24 +12,52 @@ import ast import configparser -import typing as t from pathlib import Path +from typing import Callable, Dict, List, Optional, Union from typing_extensions import override from antarest.core.model import JSON +from antarest.study.storage.rawstudy.ini_reader import OptionKey + +PrimitiveType = Union[str, int, float, bool] +ValueSerializer = Callable[[str], PrimitiveType] + + +def _lower_case(input: str) -> str: + return input.lower() + + +LOWER_CASE_SERIALIZER: ValueSerializer = _lower_case class IniConfigParser(configparser.RawConfigParser): - def __init__(self, special_keys: t.Optional[t.List[str]] = None) -> None: + def __init__( + self, + special_keys: Optional[List[str]] = None, + value_serializers: Optional[Dict[OptionKey, ValueSerializer]] = None, + ) -> None: super().__init__() self.special_keys = special_keys + self._value_serializers = value_serializers or {} # noinspection SpellCheckingInspection @override def optionxform(self, optionstr: str) -> str: return optionstr + def _get_serializer(self, section: str, key: str) -> Optional[ValueSerializer]: + if not self._value_serializers: + return None + possible_keys = [ + OptionKey(section=section, key=key), + OptionKey(section=None, key=key), + ] + for k in possible_keys: + if parser := self._value_serializers.get(k, None): + return parser + return None + def _write_line( # type:ignore self, delimiter, @@ -41,6 +69,9 @@ def _write_line( # type:ignore value = self._interpolation.before_write( # type:ignore self, section_name, key, value ) + if self._value_serializers: + if serializer := self._get_serializer(section_name, key): + value = serializer(value) if value is not None or not self._allow_no_value: # type:ignore value = delimiter + str(value).replace("\n", "\n\t") else: @@ -70,8 +101,13 @@ class IniWriter: Standard INI writer. """ - def __init__(self, special_keys: t.Optional[t.List[str]] = None): + def __init__( + self, + special_keys: Optional[List[str]] = None, + value_serializers: Optional[Dict[OptionKey, ValueSerializer]] = None, + ): self.special_keys = special_keys + self._value_serializers = value_serializers or {} def write(self, data: JSON, path: Path) -> None: """ @@ -81,7 +117,7 @@ def write(self, data: JSON, path: Path) -> None: data: JSON content. path: path to `.ini` file. """ - config_parser = IniConfigParser(special_keys=self.special_keys) + config_parser = IniConfigParser(special_keys=self.special_keys, value_serializers=self._value_serializers) config_parser.read_dict(data) with path.open("w") as fp: config_parser.write(fp) diff --git a/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py b/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py index c0df4e7861..ea192f3c7d 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py +++ b/antarest/study/storage/rawstudy/model/filesystem/ini_file_node.py @@ -18,7 +18,9 @@ import tempfile import typing as t import zipfile +from dataclasses import dataclass from pathlib import Path +from typing import Callable, List, Optional import py7zr import pydantic_core @@ -28,12 +30,49 @@ from antarest.core.exceptions import ShouldNotHappenException from antarest.core.model import JSON, SUB_JSON from antarest.core.serialization import from_json -from antarest.study.storage.rawstudy.ini_reader import IniReader, IReader +from antarest.study.storage.rawstudy.ini_reader import ( + IniReader, + IReader, + ReaderOptions, + SelectionPredicate, + ini_reader_options, + make_predicate, +) from antarest.study.storage.rawstudy.ini_writer import IniWriter +from antarest.study.storage.rawstudy.model.filesystem.config.field_validators import transform_name_to_id from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.inode import INode +SectionMatcher = Callable[[str], str] + + +def _lower_case(input: str) -> str: + return input.lower() + + +LOWER_CASE_MATCHER: SectionMatcher = _lower_case +NAME_TO_ID_MATCHER: SectionMatcher = transform_name_to_id + + +@dataclass(frozen=True) +class IniLocation: + """ + Defines a location in INI file data. + """ + + section: Optional[str] = None + key: Optional[str] = None + + +def url_to_location(url: List[str]) -> IniLocation: + if len(url) == 2: + return IniLocation(section=url[0], key=url[1]) + elif len(url) == 1: + return IniLocation(section=url[0]) + else: + return IniLocation() + class IniFileNodeWarning(UserWarning): """ @@ -74,6 +113,18 @@ def wrapper(*args: t.Any, **kwargs: t.Any) -> t.Any: class IniFileNode(INode[SUB_JSON, SUB_JSON, JSON]): + """ + Common parent class for all INI files. + + Some behaviour can be overriden for specific files, see args. + + Args: + value_parsers: Defines how specific options should be parsed, + for example to specify it should be parsed as str, or lower case ... + section_matcher: Defines how section names are matched when + retrieving and updating data (for example matching in lower case) + """ + def __init__( self, context: ContextServer, @@ -81,6 +132,7 @@ def __init__( types: t.Optional[t.Dict[str, t.Any]] = None, reader: t.Optional[IReader] = None, writer: t.Optional[IniWriter] = None, + section_matcher: Optional[SectionMatcher] = None, ): super().__init__(config) self.context = context @@ -88,6 +140,7 @@ def __init__( self.types = types or {} self.reader = reader or IniReader() self.writer = writer or IniWriter() + self.section_matcher = section_matcher def _get( self, @@ -106,49 +159,55 @@ def _get( return {} url = url or [] - kwargs = self._get_filtering_kwargs(url) + options = self._build_options(url) if self.config.archive_path: inside_archive_path = self.config.path.relative_to(self.config.archive_path.with_suffix("")).as_posix() if self.config.archive_path.suffix == ".zip": with zipfile.ZipFile(self.config.archive_path, mode="r") as zipped_folder: with io.TextIOWrapper(zipped_folder.open(inside_archive_path)) as f: - data = self.reader.read(f, **kwargs) + data = self.reader.read(f, options) elif self.config.archive_path.suffix == ".7z": with py7zr.SevenZipFile(self.config.archive_path, mode="r") as zipped_folder: with io.TextIOWrapper(zipped_folder.read([inside_archive_path])[inside_archive_path]) as f: - data = self.reader.read(f, **kwargs) + data = self.reader.read(f, options) else: raise ShouldNotHappenException(f"Unsupported archived study format: {self.config.archive_path.suffix}") else: - data = self.reader.read(self.path, **kwargs) + data = self.reader.read(self.path, options) - data = self._handle_urls(data, depth, url) + data = self._filter_for_url(data, depth, url) return t.cast(SUB_JSON, data) - @staticmethod - def _handle_urls(data: t.Dict[str, t.Any], depth: int, url: t.List[str]) -> t.Dict[str, t.Any]: - if len(url) == 2: - if url[0] in data and url[1] in data[url[0]]: - data = data[url[0]][url[1]] - else: - # lower keys to find a match - data = {k.lower(): v for k, v in {k.lower(): v for k, v in data.items()}[url[0].lower()].items()}[ - url[1].lower() - ] - elif len(url) == 1: - if url[0] in data: - data = data[url[0]] - else: - # lower keys to find a match - data = {k.lower(): v for k, v in data.items()}[url[0].lower()] + def _find_matching_section(self, data: JSON, section: str) -> str: + if self.section_matcher: + original_keys = {self.section_matcher(k): k for k in data.keys()} + matcher = self.section_matcher(section) + return original_keys.get(matcher, None) + else: + return section + + def _filter_for_url(self, data: JSON, depth: int, url: t.List[str]) -> JSON: + location = url_to_location(url) + if not location.section and not location.key: + if depth == 1: # truncate to only keys + data = dict((k, {}) for k in data.keys()) + return data + section = self._find_matching_section(data, location.section) + section_data = data[section] + if location.key: + return section_data[location.key] + else: + return section_data + def _make_section_predicate(self, section: str) -> SelectionPredicate: + if self.section_matcher: + return lambda actual_section: self.section_matcher(section) == self.section_matcher(actual_section) else: - data = {k: {} for k in data} if depth == 1 else data - return data + return make_predicate(value=section) # noinspection PyMethodMayBeStatic - def _get_filtering_kwargs(self, url: t.List[str]) -> t.Dict[str, str]: + def _build_options(self, url: t.List[str]) -> ReaderOptions: """ Extracts the filtering arguments from the URL components. @@ -162,12 +221,15 @@ def _get_filtering_kwargs(self, url: t.List[str]) -> t.Dict[str, str]: """ if len(url) > 2: raise ValueError(f"Invalid URL: {url!r}") - elif len(url) == 2: - return {"section": url[0], "option": url[1]} - elif len(url) == 1: - return {"section": url[0]} + loc = url_to_location(url) + if loc.section and loc.key: + return ReaderOptions( + section_predicate=self._make_section_predicate(loc.section), option_predicate=make_predicate(loc.key) + ) + elif loc.section: + return ReaderOptions(section_predicate=self._make_section_predicate(loc.section)) else: - return {} + return ini_reader_options() @override def get( @@ -200,20 +262,27 @@ def save(self, data: SUB_JSON, url: t.Optional[t.List[str]] = None) -> None: / f"{self.config.study_id}-{self.path.relative_to(self.config.study_path).name.replace(os.sep, '.')}.lock" ) ): - info = self.reader.read(self.path) if self.path.exists() else {} - obj = data + existing_data = self.reader.read(self.path) if self.path.exists() else {} + new_data = data if isinstance(data, str): with contextlib.suppress(pydantic_core.ValidationError): - obj = from_json(data) - if len(url) == 2: - if url[0] not in info: - info[url[0]] = {} - info[url[0]][url[1]] = obj - elif len(url) == 1: - info[url[0]] = obj + new_data = from_json(data) + + # Depending on the specified location, the behaviour differs + loc = url_to_location(url) + if loc.section and loc.key: + # Only update the specified option + section = self._find_matching_section(existing_data, loc.section) or loc.section + existing_data.setdefault(section, {})[loc.key] = new_data + elif loc.section: + # Updates the whole section (replaces the existing data) + section = self._find_matching_section(existing_data, loc.section) or loc.section + existing_data[section] = new_data else: - info = t.cast(JSON, obj) - self.writer.write(info, self.path) + # Replace the whole data + existing_data = new_data + + self.writer.write(existing_data, self.path) @log_warning @override @@ -247,35 +316,33 @@ def delete(self, url: t.Optional[t.List[str]] = None) -> None: f"Cannot delete item {url!r}: URL should be fully resolved", ) + loc = url_to_location(url) + data = self.reader.read(self.path) - if url_len == 1: - section_name = url[0] + if loc.section and loc.key: + section = self._find_matching_section(data, loc.section) + if not section: + raise IniFileNodeWarning( + self.config, + f"Cannot delete section: Section [{loc.section}] not found", + ) try: - del data[section_name] + del data[section][loc.key] except KeyError: raise IniFileNodeWarning( self.config, - f"Cannot delete section: Section [{section_name}] not found", + f"Cannot delete key: Key '{loc.key}' not found in section [{section}]", ) from None - elif url_len == 2: - section_name, key_name = url - try: - section = data[section_name] - except KeyError: + elif loc.section: + section = self._find_matching_section(data, loc.section) + if not section: raise IniFileNodeWarning( self.config, - f"Cannot delete key: Section [{section_name}] not found", - ) from None - else: - try: - del section[key_name] - except KeyError: - raise IniFileNodeWarning( - self.config, - f"Cannot delete key: Key '{key_name}' not found in section [{section_name}]", - ) from None + f"Cannot delete section: Section [{loc.section}] not found", + ) + del data[section] self.writer.write(data, self.path) @@ -325,69 +392,3 @@ def _validate_param( if raising: raise ValueError(msg) errors.append(msg) - - def _get_content_with_specific_parsing( - self, - url: t.Optional[t.List[str]] = None, - depth: int = -1, - expanded: bool = False, - parsing_methods_for_values: t.Optional[dict[str, t.Callable[[t.Any], str]]] = None, - parsing_method_for_keys: t.Optional[t.Callable[[t.Any], str]] = None, - ) -> SUB_JSON: - if not parsing_method_for_keys and not parsing_methods_for_values: # We can use the classic method - return self.get(url, depth, expanded) - - output = self._get(url, depth, expanded, get_node=False) - assert not isinstance(output, INode) - if depth <= -1 and expanded: - return output - - if not url: - assert isinstance(output, dict) - for key in list(output.keys()): - new_key = key - if parsing_method_for_keys: - new_key = parsing_method_for_keys(key) - output[new_key] = output.pop(key) - if parsing_methods_for_values: - for parsed_key, method in parsing_methods_for_values.items(): - if parsed_key in output[new_key]: - output[new_key][parsed_key] = method(output[new_key][parsed_key]) - - elif len(url) == 1: - assert isinstance(output, dict) - if parsing_methods_for_values: - for parsed_key, method in parsing_methods_for_values.items(): - if parsed_key in output: - output[parsed_key] = method(output[parsed_key]) - - elif len(url) == 2: - if parsing_methods_for_values and url[1] in parsing_methods_for_values: - output = parsing_methods_for_values[url[1]](output) - - return output - - def _save_content_with_lowered_keys(self, data: SUB_JSON, url: t.List[str]) -> None: - self._assert_not_in_zipped_file() - with FileLock( - str( - Path(tempfile.gettempdir()) - / f"{self.config.study_id}-{self.path.relative_to(self.config.study_path).name.replace(os.sep, '.')}.lock" - ) - ): - # We read the INI file keys in lower case - info = self._get_content_with_specific_parsing([], -1, False, None, lambda value: str(value).lower()) - assert isinstance(info, dict) - obj = data - if isinstance(data, str): - with contextlib.suppress(pydantic_core.ValidationError): - obj = from_json(data) - if len(url) not in {1, 2}: - info = t.cast(JSON, obj) - else: - lowered_id = str(url[0]).lower() # We lower the INI file keys - if len(url) == 2: - info.setdefault(lowered_id, {})[url[1]] = obj - else: - info[lowered_id] = obj - self.writer.write(info, self.path) diff --git a/antarest/study/storage/rawstudy/model/filesystem/json_file_node.py b/antarest/study/storage/rawstudy/model/filesystem/json_file_node.py index 0ff675c650..73b04e70e3 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/json_file_node.py +++ b/antarest/study/storage/rawstudy/model/filesystem/json_file_node.py @@ -13,12 +13,13 @@ import json import typing as t from pathlib import Path +from typing import Optional from typing_extensions import override from antarest.core.model import JSON from antarest.core.serialization import from_json, to_json -from antarest.study.storage.rawstudy.ini_reader import IReader +from antarest.study.storage.rawstudy.ini_reader import IReader, ReaderOptions from antarest.study.storage.rawstudy.ini_writer import IniWriter from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer @@ -31,7 +32,7 @@ class JsonReader(IReader): """ @override - def read(self, path: t.Any, **kwargs: t.Any) -> JSON: + def read(self, path: t.Any, options: Optional[ReaderOptions] = None) -> JSON: content: t.Union[str, bytes] if isinstance(path, (Path, str)): diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingconstraints_ini.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingconstraints_ini.py index 5bec90551a..bc2b832d05 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingconstraints_ini.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/bindingconstraints/bindingconstraints_ini.py @@ -10,15 +10,13 @@ # # This file is part of the Antares project. -import typing as t - -from typing_extensions import override - -from antarest.core.model import SUB_JSON +from antarest.study.storage.rawstudy.ini_reader import LOWER_CASE_PARSER, IniReader, OptionKey from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode +_VALUE_PARSERS = {OptionKey(None, "group"): LOWER_CASE_PARSER} + # noinspection SpellCheckingInspection class BindingConstraintsIni(IniFileNode): @@ -39,12 +37,4 @@ class BindingConstraintsIni(IniFileNode): """ def __init__(self, context: ContextServer, config: FileStudyTreeConfig): - super().__init__(context, config, types={}) - - @override - def get( - self, url: t.Optional[t.List[str]] = None, depth: int = -1, expanded: bool = False, formatted: bool = True - ) -> SUB_JSON: - return super()._get_content_with_specific_parsing( - url, depth, expanded, {"group": lambda value: str(value).lower()}, None - ) + super().__init__(context, config, types={}, reader=IniReader(value_parsers=_VALUE_PARSERS)) diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/renewables/clusters.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/renewables/clusters.py index c15410d2fe..5ec75bf8df 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/renewables/clusters.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/renewables/clusters.py @@ -9,17 +9,20 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. -import typing as t from typing_extensions import override -from antarest.core.model import SUB_JSON +from antarest.study.storage.rawstudy.ini_reader import LOWER_CASE_PARSER, IniReader, OptionKey +from antarest.study.storage.rawstudy.ini_writer import LOWER_CASE_SERIALIZER, IniWriter from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer from antarest.study.storage.rawstudy.model.filesystem.folder_node import FolderNode -from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode +from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import NAME_TO_ID_MATCHER, IniFileNode from antarest.study.storage.rawstudy.model.filesystem.inode import TREE +_VALUE_PARSERS = {OptionKey(None, "group"): LOWER_CASE_PARSER} +_VALUE_SERIALIZERS = {OptionKey(None, "group"): LOWER_CASE_SERIALIZER} + class ClusteredRenewableClusterConfig(IniFileNode): def __init__( @@ -37,18 +40,14 @@ def __init__( "ts-interpretation": str, } types = {cluster_id: section for cluster_id in config.get_renewable_ids(area)} - IniFileNode.__init__(self, context, config, types) - - @override - def get( - self, url: t.Optional[t.List[str]] = None, depth: int = -1, expanded: bool = False, formatted: bool = True - ) -> SUB_JSON: - func = lambda value: str(value).lower() - return super()._get_content_with_specific_parsing(url, depth, expanded, {"group": func}, func) - - @override - def save(self, data: SUB_JSON, url: t.Optional[t.List[str]] = None) -> None: - super()._save_content_with_lowered_keys(data, url or []) + super().__init__( + context, + config, + types, + reader=IniReader(value_parsers=_VALUE_PARSERS), + writer=IniWriter(value_serializers=_VALUE_SERIALIZERS), + section_matcher=NAME_TO_ID_MATCHER, + ) class ClusteredRenewableCluster(FolderNode): diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/st_storage/clusters/area/list.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/st_storage/clusters/area/list.py index cd951422de..cdcd1c277d 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/st_storage/clusters/area/list.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/st_storage/clusters/area/list.py @@ -9,14 +9,15 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. -import typing as t -from typing_extensions import override - -from antarest.core.model import SUB_JSON +from antarest.study.storage.rawstudy.ini_reader import LOWER_CASE_PARSER, IniReader, OptionKey +from antarest.study.storage.rawstudy.ini_writer import LOWER_CASE_SERIALIZER, IniWriter from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer -from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode +from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import NAME_TO_ID_MATCHER, IniFileNode + +_VALUE_PARSERS = {OptionKey(None, "group"): LOWER_CASE_PARSER} +_VALUE_SERIALIZERS = {OptionKey(None, "group"): LOWER_CASE_SERIALIZER} class InputSTStorageAreaList(IniFileNode): @@ -37,15 +38,11 @@ def __init__( # - a withdrawal nominal capacity (double > 0) # - an injection nominal capacity (double > 0) types = {st_storage_id: dict for st_storage_id in config.get_st_storage_ids(area)} - super().__init__(context, config, types) - - @override - def get( - self, url: t.Optional[t.List[str]] = None, depth: int = -1, expanded: bool = False, formatted: bool = True - ) -> SUB_JSON: - func = lambda value: str(value).lower() - return super()._get_content_with_specific_parsing(url, depth, expanded, {"group": func}, func) - - @override - def save(self, data: SUB_JSON, url: t.Optional[t.List[str]] = None) -> None: - super()._save_content_with_lowered_keys(data, url or []) + super().__init__( + context, + config, + types, + reader=IniReader(value_parsers=_VALUE_PARSERS), + writer=IniWriter(value_serializers=_VALUE_SERIALIZERS), + section_matcher=NAME_TO_ID_MATCHER, + ) diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/input/thermal/cluster/area/list.py b/antarest/study/storage/rawstudy/model/filesystem/root/input/thermal/cluster/area/list.py index 5e9b9719e9..c5ddd1e7e9 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/input/thermal/cluster/area/list.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/input/thermal/cluster/area/list.py @@ -10,14 +10,14 @@ # # This file is part of the Antares project. -import typing as t - -from typing_extensions import override - -from antarest.core.model import SUB_JSON +from antarest.study.storage.rawstudy.ini_reader import LOWER_CASE_PARSER, IniReader, OptionKey +from antarest.study.storage.rawstudy.ini_writer import LOWER_CASE_SERIALIZER, IniWriter from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer -from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode +from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import NAME_TO_ID_MATCHER, IniFileNode + +_VALUE_PARSERS = {OptionKey(None, "group"): LOWER_CASE_PARSER} +_VALUE_SERIALIZERS = {OptionKey(None, "group"): LOWER_CASE_SERIALIZER} class InputThermalClustersAreaList(IniFileNode): @@ -35,15 +35,11 @@ def __init__( "market-bid-cost": float, } types = {th: section for th in config.get_thermal_ids(area)} - super().__init__(context, config, types) - - @override - def get( - self, url: t.Optional[t.List[str]] = None, depth: int = -1, expanded: bool = False, formatted: bool = True - ) -> SUB_JSON: - func = lambda value: str(value).lower() - return super()._get_content_with_specific_parsing(url, depth, expanded, {"group": func}, func) - - @override - def save(self, data: SUB_JSON, url: t.Optional[t.List[str]] = None) -> None: - super()._save_content_with_lowered_keys(data, url or []) + super().__init__( + context, + config, + types, + reader=IniReader(value_parsers=_VALUE_PARSERS), + writer=IniWriter(value_serializers=_VALUE_SERIALIZERS), + section_matcher=NAME_TO_ID_MATCHER, + ) diff --git a/antarest/study/storage/rawstudy/model/filesystem/root/settings/scenariobuilder.py b/antarest/study/storage/rawstudy/model/filesystem/root/settings/scenariobuilder.py index d384433216..441018c85a 100644 --- a/antarest/study/storage/rawstudy/model/filesystem/root/settings/scenariobuilder.py +++ b/antarest/study/storage/rawstudy/model/filesystem/root/settings/scenariobuilder.py @@ -23,9 +23,10 @@ STUDY_VERSION_9_1, STUDY_VERSION_9_2, ) +from antarest.study.storage.rawstudy.ini_reader import ReaderOptions, ini_reader_options from antarest.study.storage.rawstudy.model.filesystem.config.model import EnrModelling, FileStudyTreeConfig from antarest.study.storage.rawstudy.model.filesystem.context import ContextServer -from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode +from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import LOWER_CASE_MATCHER, IniFileNode _TSNumber: te.TypeAlias = int _HydroLevel: te.TypeAlias = float @@ -84,9 +85,7 @@ def __init__(self, context: ContextServer, config: FileStudyTreeConfig): self._populate_hydro_generation_power_rules(rules) super().__init__( - context=context, - config=config, - types={"Default Ruleset": rules}, + context=context, config=config, types={"Default Ruleset": rules}, section_matcher=LOWER_CASE_MATCHER ) def _populate_load_hydro_wind_solar_rules(self, rules: _Rules) -> None: @@ -126,14 +125,14 @@ def _populate_hydro_generation_power_rules(self, rules: _Rules) -> None: rules[f"hgp,{area_id},0"] = _TSNumber @override - def _get_filtering_kwargs(self, url: t.List[str]) -> t.Dict[str, str]: + def _build_options(self, url: t.List[str]) -> ReaderOptions: # If the URL contains 2 elements, we can filter the options based on the generator type. if len(url) == 2: section, symbol = url if re.fullmatch(r"\w+", symbol): # Mutate the URL to get all values matching the generator type. url[:] = [section] - return {"section": section, "option_regex": f"{symbol},.*"} + return ini_reader_options(section=section, option_regex=f"{symbol},.*") # If the URL contains 3 elements, we can filter on the generator type and area (or group for BC). elif len(url) == 3: @@ -142,7 +141,7 @@ def _get_filtering_kwargs(self, url: t.List[str]) -> t.Dict[str, str]: # Mutate the URL to get all values matching the generator type. url[:] = [section] area_re = re.escape(area) - return {"section": section, "option_regex": f"{symbol},{area_re},.*"} + return ini_reader_options(section=section, option_regex=f"{symbol},{area_re},.*") # If the URL contains 4 elements, we can filter on the generator type, area, and cluster. elif len(url) == 4: @@ -153,10 +152,10 @@ def _get_filtering_kwargs(self, url: t.List[str]) -> t.Dict[str, str]: if symbol in ("t", "r"): area_re = re.escape(area) cluster_re = re.escape(cluster) - return {"section": section, "option_regex": rf"{symbol},{area_re},\d+,{cluster_re}"} + return ini_reader_options(section=section, option_regex=rf"{symbol},{area_re},\d+,{cluster_re}") elif symbol == "ntc": area1_re = re.escape(area) area2_re = re.escape(cluster) - return {"section": section, "option_regex": f"{symbol},{area1_re},{area2_re},.*"} + return ini_reader_options(section=section, option_regex=f"{symbol},{area1_re},{area2_re},.*") - return super()._get_filtering_kwargs(url) + return super()._build_options(url) diff --git a/antarest/study/storage/variantstudy/model/command/create_cluster.py b/antarest/study/storage/variantstudy/model/command/create_cluster.py index 96b3a9596f..ba7425fe72 100644 --- a/antarest/study/storage/variantstudy/model/command/create_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/create_cluster.py @@ -119,7 +119,7 @@ def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = cluster_id = data["cluster_id"] config = study_data.tree.get(["input", "thermal", "clusters", self.area_id, "list"]) - config[cluster_id] = self.parameters.model_dump(mode="json", by_alias=True) + config[self.cluster_name] = self.parameters.model_dump(mode="json", by_alias=True) # Series identifiers are in lower case. series_id = cluster_id.lower() diff --git a/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py b/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py index d33517f77f..ebb46a243f 100644 --- a/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py +++ b/antarest/study/storage/variantstudy/model/command/create_renewables_cluster.py @@ -110,7 +110,7 @@ def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = cluster_id = data["cluster_id"] config = study_data.tree.get(["input", "renewables", "clusters", self.area_id, "list"]) - config[cluster_id] = self.parameters.model_dump(mode="json", by_alias=True) + config[self.cluster_name] = self.parameters.model_dump(mode="json", by_alias=True) # Series identifiers are in lower case. series_id = cluster_id.lower() diff --git a/antarest/study/storage/variantstudy/model/command/create_st_storage.py b/antarest/study/storage/variantstudy/model/command/create_st_storage.py index 0a1bfa3589..526097ce89 100644 --- a/antarest/study/storage/variantstudy/model/command/create_st_storage.py +++ b/antarest/study/storage/variantstudy/model/command/create_st_storage.py @@ -252,7 +252,7 @@ def _apply(self, study_data: FileStudy, listener: t.Optional[ICommandListener] = # Fill-in the "list.ini" file with the parameters. # On creation, it's better to write all the parameters in the file. config = study_data.tree.get(["input", "st-storage", "clusters", self.area_id, "list"]) - config[storage_id] = self.parameters.model_dump(mode="json", by_alias=True) + config[self.storage_name] = self.parameters.model_dump(mode="json", by_alias=True) new_data: JSON = { "input": { diff --git a/commitlint.config.js b/commitlint.config.js index 080384a0a6..50b8b23bf4 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1,7 +1,12 @@ -import { RuleConfigSeverity } from "@commitlint/types"; +// Config used by 'commitlint' and 'pr-title' GitHub Actions -// Config used by 'commitlint' GitHub action. -export default { +const RuleConfigSeverity = { + Disabled: 0, + Warning: 1, + Error: 2, +} + +module.exports = { extends: ["@commitlint/config-conventional"], // Rules: https://commitlint.js.org/reference/rules.html rules: { diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 959376e0d5..dd0f10a9f5 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1096,7 +1096,7 @@ v2.15.0 (2023-09-30) ### Chore -* **github-actions:** update Node.js version to 18.16.1 [`b9988f6`](https://github.com/AntaresSimulatorTeam/AntaREST/commit/b9988f6dedc5a653de00bf5becc917487ce589e6) +* **github-actions:** update Node.js version to 22.13.0 [`b9988f6`](https://github.com/AntaresSimulatorTeam/AntaREST/commit/b9988f6dedc5a653de00bf5becc917487ce589e6) * correct handling of base class with no `__annotations__` in `AllOptionalMetaclass` [`d9ed61f`](https://github.com/AntaresSimulatorTeam/AntaREST/commit/d9ed61fdaaa32974431b41e9cce44be09bb92e79) * correct indentation [`4af01b4`](https://github.com/AntaresSimulatorTeam/AntaREST/commit/4af01b4023cb828093f8fd9b139f76429806c7b8) * increase line length limit to 120 characters for Black and iSort [`586fb43`](https://github.com/AntaresSimulatorTeam/AntaREST/commit/586fb438607824899c66db66f183451fbe4a88e4) diff --git a/docs/developer-guide/install/0-INSTALL.md b/docs/developer-guide/install/0-INSTALL.md index 8206af7c6e..b223683f0a 100644 --- a/docs/developer-guide/install/0-INSTALL.md +++ b/docs/developer-guide/install/0-INSTALL.md @@ -9,7 +9,7 @@ A local build allows using Antares Web as a desktop application. Requirements: - python : 3.11.x -- node : 18.16.1 +- node : 22.13.0 Then perform the following steps: diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index e21a23c548..0000000000 --- a/package-lock.json +++ /dev/null @@ -1,1449 +0,0 @@ -{ - "name": "AntaREST", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "@commitlint/cli": "^19.2.1", - "@commitlint/config-conventional": "^19.1.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.24.2", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@commitlint/cli": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.2.1.tgz", - "integrity": "sha512-cbkYUJsLqRomccNxvoJTyv5yn0bSy05BBizVyIcLACkRbVUqYorC351Diw/XFSWC/GtpwiwT2eOvQgFZa374bg==", - "dev": true, - "dependencies": { - "@commitlint/format": "^19.0.3", - "@commitlint/lint": "^19.1.0", - "@commitlint/load": "^19.2.0", - "@commitlint/read": "^19.2.1", - "@commitlint/types": "^19.0.3", - "execa": "^8.0.1", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/config-conventional": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.1.0.tgz", - "integrity": "sha512-KIKD2xrp6Uuk+dcZVj3++MlzIr/Su6zLE8crEDQCZNvWHNQSeeGbzOlNtsR32TUy6H3JbP7nWgduAHCaiGQ6EA==", - "dev": true, - "dependencies": { - "@commitlint/types": "^19.0.3", - "conventional-changelog-conventionalcommits": "^7.0.2" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/config-validator": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.0.3.tgz", - "integrity": "sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==", - "dev": true, - "dependencies": { - "@commitlint/types": "^19.0.3", - "ajv": "^8.11.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/ensure": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.0.3.tgz", - "integrity": "sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==", - "dev": true, - "dependencies": { - "@commitlint/types": "^19.0.3", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/execute-rule": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.0.0.tgz", - "integrity": "sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==", - "dev": true, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/format": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.0.3.tgz", - "integrity": "sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==", - "dev": true, - "dependencies": { - "@commitlint/types": "^19.0.3", - "chalk": "^5.3.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/is-ignored": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.0.3.tgz", - "integrity": "sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==", - "dev": true, - "dependencies": { - "@commitlint/types": "^19.0.3", - "semver": "^7.6.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/lint": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.1.0.tgz", - "integrity": "sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==", - "dev": true, - "dependencies": { - "@commitlint/is-ignored": "^19.0.3", - "@commitlint/parse": "^19.0.3", - "@commitlint/rules": "^19.0.3", - "@commitlint/types": "^19.0.3" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/load": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.2.0.tgz", - "integrity": "sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==", - "dev": true, - "dependencies": { - "@commitlint/config-validator": "^19.0.3", - "@commitlint/execute-rule": "^19.0.0", - "@commitlint/resolve-extends": "^19.1.0", - "@commitlint/types": "^19.0.3", - "chalk": "^5.3.0", - "cosmiconfig": "^9.0.0", - "cosmiconfig-typescript-loader": "^5.0.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/message": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.0.0.tgz", - "integrity": "sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==", - "dev": true, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/parse": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.0.3.tgz", - "integrity": "sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==", - "dev": true, - "dependencies": { - "@commitlint/types": "^19.0.3", - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-parser": "^5.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/read": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.2.1.tgz", - "integrity": "sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==", - "dev": true, - "dependencies": { - "@commitlint/top-level": "^19.0.0", - "@commitlint/types": "^19.0.3", - "execa": "^8.0.1", - "git-raw-commits": "^4.0.0", - "minimist": "^1.2.8" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/resolve-extends": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz", - "integrity": "sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==", - "dev": true, - "dependencies": { - "@commitlint/config-validator": "^19.0.3", - "@commitlint/types": "^19.0.3", - "global-directory": "^4.0.1", - "import-meta-resolve": "^4.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/rules": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.0.3.tgz", - "integrity": "sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==", - "dev": true, - "dependencies": { - "@commitlint/ensure": "^19.0.3", - "@commitlint/message": "^19.0.0", - "@commitlint/to-lines": "^19.0.0", - "@commitlint/types": "^19.0.3", - "execa": "^8.0.1" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/to-lines": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.0.0.tgz", - "integrity": "sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==", - "dev": true, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/top-level": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.0.0.tgz", - "integrity": "sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==", - "dev": true, - "dependencies": { - "find-up": "^7.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/types": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.0.3.tgz", - "integrity": "sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==", - "dev": true, - "dependencies": { - "@types/conventional-commits-parser": "^5.0.0", - "chalk": "^5.3.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@types/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "20.11.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", - "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", - "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", - "dev": true, - "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", - "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", - "dev": true, - "dependencies": { - "jiti": "^1.19.1" - }, - "engines": { - "node": ">=v16" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=8.2", - "typescript": ">=4" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dargs": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", - "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", - "dev": true, - "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-raw-commits": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", - "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", - "dev": true, - "dependencies": { - "dargs": "^8.0.0", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.mjs" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", - "dev": true, - "dependencies": { - "ini": "4.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", - "dev": true, - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", - "dev": true - }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/lodash.upperfirst": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", - "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", - "dev": true, - "engines": { - "node": ">=16.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/typescript": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", - "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index affe100a23..0000000000 --- a/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "module", - "devDependencies": { - "@commitlint/cli": "^19.2.1", - "@commitlint/config-conventional": "^19.1.0" - } -} diff --git a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py index 8cbd7429eb..d49cd53639 100644 --- a/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py +++ b/tests/integration/raw_studies_blueprint/test_fetch_raw_data.py @@ -219,8 +219,9 @@ def test_get_study_data(self, client: TestClient, user_access_token: str, intern b"1;1;1;1;1\r1;1;1;1;1", b"0,000000;0,000000;0,000000;0,000000\n0,000000;0,000000;0,000000;0,000000", b"1;2;3;;;\n4;5;6;;;\n", + b"1;1;1;1\r\n1;1;1;1\r\n1;1;1;1\r\n1;1;1;1\r\n1;1;1;1\r\n1;1;1;1\r\n1;1;1;1\r\n1;1;1;1\r\n", ], - ["\t", "\t", ",", "\t", ";", ";", ";", ";"], + ["\t", "\t", ",", "\t", ";", ";", ";", ";", ";"], ): res = client.put(raw_url, params={"path": matrix_path}, files={"file": io.BytesIO(content)}) assert res.status_code == 204, res.json() @@ -281,13 +282,6 @@ def test_get_study_data(self, client: TestClient, user_access_token: str, intern assert res.status_code == 200, res.json() assert res.json() == {"index": [], "columns": [], "data": []} - # Some files can be corrupted - user_folder_dir = study_dir.joinpath("user/bad") - for file_path in user_folder_dir.glob("*.*"): - rel_path = file_path.relative_to(study_dir) - res = client.get(raw_url, params={"path": f"/{rel_path.as_posix()}", "depth": 1}) - assert res.status_code == http.HTTPStatus.UNPROCESSABLE_ENTITY - # We can access to the configuration the classic way, # for instance, we can get the list of areas: res = client.get(raw_url, params={"path": "/input/areas/list", "depth": 1}) @@ -305,6 +299,23 @@ def test_get_study_data(self, client: TestClient, user_access_token: str, intern res = client.get(raw_url, params={"path": path, "depth": depth}) assert res.status_code == 200, f"Error for path={path} and depth={depth}" + # ============================= + # ERRORS + # ============================= + + # Some files can be corrupted + user_folder_dir = study_dir.joinpath("user/bad") + for file_path in user_folder_dir.glob("*.*"): + rel_path = file_path.relative_to(study_dir) + res = client.get(raw_url, params={"path": f"/{rel_path.as_posix()}", "depth": 1}) + assert res.status_code == http.HTTPStatus.UNPROCESSABLE_ENTITY + + # Imports a wrongly formatted matrix + res = client.put(raw_url, params={"path": matrix_path}, files={"file": io.BytesIO(b"BLABLABLA")}) + assert res.status_code == 422 + assert res.json()["exception"] == "MatrixImportFailed" + assert res.json()["description"] == "Could not parse the given matrix" + @pytest.mark.parametrize("study_type", ["raw", "variant"]) def test_delete_raw( self, client: TestClient, user_access_token: str, internal_study_id: str, study_type: str diff --git a/tests/integration/study_data_blueprint/test_lower_case.py b/tests/integration/study_data_blueprint/test_lower_case.py index 107d55a1e2..c4e4597147 100644 --- a/tests/integration/study_data_blueprint/test_lower_case.py +++ b/tests/integration/study_data_blueprint/test_lower_case.py @@ -47,23 +47,20 @@ def test_clusters(self, client: TestClient, user_access_token: str, tmp_path: Pa cluster_grp = "Battery" url = "storages" cluster_name = "Cluster 1" - lowered_name = cluster_name.lower() lowered_grp = cluster_grp.lower() res = client.post( f"/v1/studies/{study_id}/areas/{area1_id}/{url}", json={"name": cluster_name, "group": cluster_grp} ) assert res.status_code == 200, res.json() - # Asserts the fields are written in lower case inside the ini file + # Asserts the group fields are written in lower case inside the ini file ini_path = study_path / "input" / cluster_type / "clusters" / area1_id / "list.ini" ini_content = IniReader().read(ini_path) - assert list(ini_content.keys()) == [lowered_name] - assert ini_content[lowered_name]["group"] == lowered_grp + assert list(ini_content.keys()) == [cluster_name] + assert ini_content[cluster_name]["group"] == lowered_grp - # Rewrite the cluster name in MAJ to mimic legacy clusters + # Rewrite the group in MAJ to mimic legacy clusters new_content = copy.deepcopy(ini_content) - new_content[cluster_name] = new_content.pop(lowered_name) - new_content[cluster_name]["name"] = cluster_name new_content[cluster_name]["group"] = cluster_grp IniWriter().write(new_content, ini_path) @@ -76,9 +73,9 @@ def test_clusters(self, client: TestClient, user_access_token: str, tmp_path: Pa # Also checks the GET /raw endpoint res = client.get(f"/v1/studies/{study_id}/raw?path=input/{cluster_type}/clusters/{area1_id}/list") cluster_list = res.json() - assert list(cluster_list.keys()) == [lowered_name] - assert cluster_list[lowered_name]["name"] == cluster_name - assert cluster_list[lowered_name]["group"] == lowered_grp + assert list(cluster_list.keys()) == [cluster_name] + assert cluster_list[cluster_name]["name"] == cluster_name + assert cluster_list[cluster_name]["group"] == lowered_grp # Try to update a property if cluster_type == "st-storage": diff --git a/tests/integration/variant_blueprint/test_renewable_cluster.py b/tests/integration/variant_blueprint/test_renewable_cluster.py index 653cf02bc0..8228028d33 100644 --- a/tests/integration/variant_blueprint/test_renewable_cluster.py +++ b/tests/integration/variant_blueprint/test_renewable_cluster.py @@ -272,7 +272,7 @@ def test_lifecycle( "es": {"list": {}}, "fr": { "list": { - cluster_fr1_id: { + cluster_fr1: { "group": "wind offshore", "name": cluster_fr1, "nominalcapacity": 2500, @@ -284,7 +284,7 @@ def test_lifecycle( }, "it": { "list": { - cluster_it1_id: { + cluster_it1: { "group": "wind offshore", "name": cluster_it1, "nominalcapacity": 1000, diff --git a/tests/storage/business/test_table_mode_management.py b/tests/storage/business/test_table_mode_management.py new file mode 100644 index 0000000000..17b62c79f9 --- /dev/null +++ b/tests/storage/business/test_table_mode_management.py @@ -0,0 +1,18 @@ +# Copyright (c) 2025, RTE (https://www.rte-france.com) +# +# See AUTHORS.txt +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# SPDX-License-Identifier: MPL-2.0 +# +# This file is part of the Antares project. +from antarest.study.business.area_management import AreaManager +from antarest.study.business.table_mode_management import TableModeManager + + +def test_get_table_data(): + areas = AreaManager() + manager = TableModeManager() diff --git a/tests/storage/repository/antares_io/reader/test_ini_reader.py b/tests/storage/repository/antares_io/reader/test_ini_reader.py index b36ee066d7..554e4bf1fd 100644 --- a/tests/storage/repository/antares_io/reader/test_ini_reader.py +++ b/tests/storage/repository/antares_io/reader/test_ini_reader.py @@ -14,7 +14,13 @@ import textwrap from pathlib import Path -from antarest.study.storage.rawstudy.ini_reader import IniReader, SimpleKeyValueReader +from antarest.study.storage.rawstudy.ini_reader import ( + IniReader, + OptionKey, + ReaderOptions, + SimpleKeyValueReader, + ini_reader_options, +) class TestIniReader: @@ -265,13 +271,15 @@ def test_read__filtered_section(self, tmp_path) -> None: reader = IniReader() + options = ini_reader_options(section="part1") # exact match - actual = reader.read(path, section="part1") + actual = reader.read(path, options) expected = {"part1": {"foo": 5, "bar": "hello"}} assert actual == expected # regex match - actual = reader.read(path, section_regex="part.*") + options = ini_reader_options(section_regex="part.*") + actual = reader.read(path, options) expected = { "part1": {"foo": 5, "bar": "hello"}, "part2": {"foo": 6, "bar": "salut"}, @@ -300,30 +308,57 @@ def test_read__filtered_option(self, tmp_path) -> None: reader = IniReader() # exact match - actual = reader.read(path, option="foo") + actual = reader.read(path, ini_reader_options(option="foo")) expected = {"part1": {"foo": 5}, "part2": {"foo": 6}, "other": {}} assert actual == expected # regex match - actual = reader.read(path, option_regex="fo.*") + actual = reader.read(path, ini_reader_options(option_regex="fo.*")) expected = {"part1": {"foo": 5}, "part2": {"foo": 6}, "other": {}} assert actual == expected # exact match with section - actual = reader.read(path, section="part2", option="foo") + actual = reader.read(path, ini_reader_options(section="part2", option="foo")) expected = {"part2": {"foo": 6}} assert actual == expected # regex match with section - actual = reader.read(path, section_regex="part.*", option="foo") + actual = reader.read(path, ini_reader_options(section_regex="part.*", option="foo")) expected = {"part1": {"foo": 5}, "part2": {"foo": 6}} assert actual == expected # regex match with section and option - actual = reader.read(path, section_regex="part.*", option_regex=".*a.*") + actual = reader.read(path, ini_reader_options(section_regex="part.*", option_regex=".*a.*")) expected = {"part1": {"bar": "hello"}, "part2": {"bar": "salut"}} assert actual == expected + def test_read__with_parser(self, tmp_path): + path = Path(tmp_path) / "test.ini" + path.write_text( + textwrap.dedent( + """ + [part1] + bar = Hello + + [part2] + bar = Hello + """ + ) + ) + + def to_lower(input: str) -> str: + return input.lower() + + value_parsers = {OptionKey("part2", "bar"): to_lower} + actual = IniReader(value_parsers=value_parsers).read(path) + expected = {"part1": {"bar": "Hello"}, "part2": {"bar": "hello"}} + assert actual == expected + + value_parsers = {OptionKey(None, "bar"): to_lower} + actual = IniReader(value_parsers=value_parsers).read(path) + expected = {"part1": {"bar": "hello"}, "part2": {"bar": "hello"}} + assert actual == expected + class TestSimpleKeyValueReader: def test_read(self) -> None: diff --git a/tests/storage/repository/antares_io/writer/test_ini_writer.py b/tests/storage/repository/antares_io/writer/test_ini_writer.py index edb73035f3..733f6fdbe9 100644 --- a/tests/storage/repository/antares_io/writer/test_ini_writer.py +++ b/tests/storage/repository/antares_io/writer/test_ini_writer.py @@ -15,6 +15,7 @@ import pytest +from antarest.study.storage.rawstudy.ini_reader import OptionKey from antarest.study.storage.rawstudy.ini_writer import IniWriter @@ -59,3 +60,31 @@ def test_write(tmp_path: str, ini_cleaner: Callable) -> None: writer.write(json_data, path) assert ini_cleaner(ini_content) == ini_cleaner(path.read_text()) + + +@pytest.mark.unit_test +def test_write_with_custom_serializer(tmp_path: str, ini_cleaner: Callable) -> None: + path = Path(tmp_path) / "test.ini" + + serializers = {OptionKey(None, "group"): lambda x: x.lower()} + writer = IniWriter(value_serializers=serializers) + + expected = """ + [part1] + group = gas + + [part2] + group = gas + + [part3] + other = Gas + """ + + json_data = { + "part1": {"group": "Gas"}, + "part2": {"group": "Gas"}, + "part3": {"other": "Gas"}, + } + writer.write(json_data, path) + + assert ini_cleaner(path.read_text()) == ini_cleaner(expected) diff --git a/tests/storage/repository/filesystem/special_node/test_lower_case_nodes.py b/tests/storage/repository/filesystem/special_node/test_lower_case_nodes.py index 9c907fe616..a6eb293969 100644 --- a/tests/storage/repository/filesystem/special_node/test_lower_case_nodes.py +++ b/tests/storage/repository/filesystem/special_node/test_lower_case_nodes.py @@ -9,6 +9,7 @@ # SPDX-License-Identifier: MPL-2.0 # # This file is part of the Antares project. +import textwrap from pathlib import Path from unittest.mock import Mock @@ -30,6 +31,38 @@ ) +@pytest.mark.unit_test +@pytest.mark.parametrize( + "ini_node_cluster_class", + [InputSTStorageAreaList, ClusteredRenewableClusterConfig, InputThermalClustersAreaList], +) +def test_group_is_parsed_to_lower_case(tmp_path: Path, ini_node_cluster_class): + study_path = tmp_path / "study" + study_path.mkdir() + file_path = study_path / "test.ini" + file_path.write_text( + textwrap.dedent( + """ + [Cluster 1] + group = Gas + """ + ) + ) + + area_name = "area_test" + area = Area( + name=area_name, links={}, thermals=[], renewables=[], filters_synthesis=[], filters_year=[], st_storages=[] + ) + areas = {area_name: area} + node = ini_node_cluster_class( + context=Mock(), + config=FileStudyTreeConfig(study_path=study_path, path=file_path, version=-1, study_id="id", areas=areas), + area=area_name, + ) + + assert node.get() == {"Cluster 1": {"group": "gas"}} + + @pytest.mark.unit_test @pytest.mark.parametrize( "ini_node_cluster_class", @@ -54,18 +87,18 @@ def test_cluster_ini_list(tmp_path: Path, ini_node_cluster_class): node.save(data) # Asserts the data is saved correctly ini_content = IniReader().read(file_path) - assert ini_content == data - # Asserts cluster group and ids are returned in lower case + assert ini_content == {"Cluster 1": {"group": "gas"}} + # Asserts cluster group is returned in lower case content = node.get([]) - assert content == {"cluster 1": {"group": "gas"}} + assert content == {"Cluster 1": {"group": "gas"}} # Asserts saving the group in upper case works and that it will be returned in lower case - node.save("NUCLEAR", ["cluster 1", "group"]) + node.save("NUCLEAR", ["Cluster 1", "group"]) content = node.get([]) - assert content == {"cluster 1": {"group": "nuclear"}} - # Asserts updating the file with an id not in lower case will be done correctly - node.save({"params": "43"}, ["Cluster 1"]) + assert content == {"Cluster 1": {"group": "nuclear"}} + # Asserts updating the file with an id in lower case will be done correctly + node.save({"params": "43"}, ["cluster 1"]) content = node.get([]) - assert content == {"cluster 1": {"params": 43}} + assert content == {"Cluster 1": {"params": 43}} @pytest.mark.unit_test diff --git a/tests/storage/repository/filesystem/test_ini_file_node.py b/tests/storage/repository/filesystem/test_ini_file_node.py index 0baeb7b26e..5b8e8b5ebe 100644 --- a/tests/storage/repository/filesystem/test_ini_file_node.py +++ b/tests/storage/repository/filesystem/test_ini_file_node.py @@ -19,8 +19,15 @@ import pytest from antarest.core.model import JSON +from antarest.study.model import STUDY_VERSION_9_1 +from antarest.study.storage.rawstudy.ini_writer import IniWriter from antarest.study.storage.rawstudy.model.filesystem.config.model import FileStudyTreeConfig -from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import IniFileNode +from antarest.study.storage.rawstudy.model.filesystem.ini_file_node import ( + NAME_TO_ID_MATCHER, + IniFileNode, + SectionMatcher, +) +from antarest.study.storage.rawstudy.model.filesystem.root.settings.scenariobuilder import ScenarioBuilder def build_dataset(study_dir: Path) -> t.Tuple[Path, JSON]: @@ -291,6 +298,112 @@ def test_save(tmp_path: Path) -> None: assert ini_path.read_text().strip() == expected.strip() +def _ini_node(tmp_path: Path, data: JSON = None, section_matcher: SectionMatcher = None) -> IniFileNode: + ini_path = tmp_path.joinpath("test.ini") + data = data or { + "part1": { + "key_float": 2.1, + "key_int": 1, + "key_str": "value1", + }, + "part2": { + "key_float": 18, + "key_int": 5, + "key_str": "value2", + }, + } + IniWriter().write(data=data, path=ini_path) + + node = IniFileNode( + context=Mock(), + config=FileStudyTreeConfig( + study_path=tmp_path, + path=ini_path, + version=-1, + study_id="id", + areas={}, + outputs={}, + ), + section_matcher=section_matcher, + ) + return node + + +@pytest.fixture +def ini_node(tmp_path: Path) -> IniFileNode: + return _ini_node(tmp_path) + + +@pytest.fixture +def ini_node_with_id_matching(tmp_path: Path) -> IniFileNode: + return _ini_node(tmp_path, section_matcher=NAME_TO_ID_MATCHER) + + +@pytest.mark.unit_test +def test_delete_section(ini_node: IniFileNode) -> None: + ini_node.delete(["Part1"]) + assert ini_node.get() == { + "part2": { + "key_float": 18, + "key_int": 5, + "key_str": "value2", + }, + } + + +@pytest.mark.unit_test +def test_delete_section_with_matching(ini_node_with_id_matching: IniFileNode) -> None: + ini_node = ini_node_with_id_matching + ini_node.delete(["Part1"]) + assert ini_node.get() == { + "part2": { + "key_float": 18, + "key_int": 5, + "key_str": "value2", + }, + } + + +@pytest.mark.unit_test +def test_delete_section_with_matching_2(tmp_path: Path) -> None: + ini_node = _ini_node( + tmp_path, section_matcher=NAME_TO_ID_MATCHER, data={"Grand'Maison": {"key_float": 18, "key_int": 5}} + ) + ini_node.delete(["grand maison"]) + assert ini_node.get() == {} + + +@pytest.mark.unit_test +def test_get_section_with_matching(tmp_path: Path) -> None: + ini_node = _ini_node( + tmp_path, section_matcher=NAME_TO_ID_MATCHER, data={"Grand'Maison": {"key_float": 18, "key_int": 5}} + ) + ini_node.get(["grand maison"]) + assert ini_node.get() == {"Grand'Maison": {"key_float": 18, "key_int": 5}} + + +@pytest.mark.unit_test +def test_delete_option(ini_node: IniFileNode) -> None: + ini_node.delete(["part1", "key_int"]) + assert ini_node.get() == { + "part1": { + "key_float": 2.1, + "key_str": "value1", + }, + "part2": { + "key_float": 18, + "key_int": 5, + "key_str": "value2", + }, + } + + +@pytest.mark.unit_test +def test_delete_file(ini_node: IniFileNode) -> None: + ini_node.delete() + assert ini_node.get() == {} + + @pytest.mark.parametrize( ("ini_section", "url"), [ @@ -315,17 +428,16 @@ def test_get_scenario_builder(tmp_path: Path, ini_section: str, url: t.List[str] """ ) ini_path.write_text(ini_content) - node = IniFileNode( + node = ScenarioBuilder( context=Mock(), config=FileStudyTreeConfig( study_path=tmp_path, path=ini_path, - version=-1, + version=STUDY_VERSION_9_1, study_id="id", areas={}, outputs={}, ), - types={}, ) expected_ruleset = {"key_float": 2.1, "key_int": 1, "key_str": "value1"} ruleset = node.get(url) diff --git a/tests/variantstudy/model/command/test_create_cluster.py b/tests/variantstudy/model/command/test_create_cluster.py index 22e8ecb57d..f01de8f2c6 100644 --- a/tests/variantstudy/model/command/test_create_cluster.py +++ b/tests/variantstudy/model/command/test_create_cluster.py @@ -137,7 +137,7 @@ def test_apply(self, empty_study: FileStudy, command_context: CommandContext): clusters = configparser.ConfigParser() clusters.read(study_path / "input" / "thermal" / "clusters" / area_id / "list.ini") - section = clusters[cluster_name.lower()] + section = clusters[cluster_name] assert str(section["name"]) == cluster_name assert str(section["group"]) == parameters["group"] assert int(section["unitcount"]) == int(parameters["unitcount"]) diff --git a/tests/variantstudy/model/command/test_create_st_storage.py b/tests/variantstudy/model/command/test_create_st_storage.py index 0f7ba1f34f..78b1d7f98a 100644 --- a/tests/variantstudy/model/command/test_create_st_storage.py +++ b/tests/variantstudy/model/command/test_create_st_storage.py @@ -305,7 +305,7 @@ def test_apply__nominal_case(self, recent_study: FileStudy, command_context: Com # check the config config = recent_study.tree.get(["input", "st-storage", "clusters", cmd.area_id, "list"]) expected = { - "storage1": { + "Storage1": { "efficiency": 0.94, "group": "battery", "initiallevel": 0.5, @@ -325,7 +325,7 @@ def test_apply__nominal_case(self, recent_study: FileStudy, command_context: Com pmax_injection_id = service.create(pmax_injection) inflows_id = service.create(inflows) expected = { - "storage1": { + "Storage1": { "pmax_injection": f"matrix://{pmax_injection_id}", "pmax_withdrawal": constants.get_st_storage_pmax_withdrawal(), "lower_rule_curve": constants.get_st_storage_lower_rule_curve(), diff --git a/webapp/.eslintrc.cjs b/webapp/.eslintrc.cjs deleted file mode 100644 index 29270da704..0000000000 --- a/webapp/.eslintrc.cjs +++ /dev/null @@ -1,89 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - es2022: true, - }, - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", // TODO: replace with recommended-type-checked - "plugin:@typescript-eslint/stylistic", // TODO: replace with stylistic-type-checked - "plugin:react/recommended", - "plugin:react/jsx-runtime", - "plugin:react-hooks/recommended", - "plugin:jsdoc/recommended-typescript", - "plugin:prettier/recommended", // Must be the last one - ], - plugins: [ - "license-header", - "react-refresh", - ], - ignorePatterns: [ - "dist", - "license-header.js", - ".eslintrc.cjs", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - // `ecmaVersion` is automatically sets by `esXXXX` in `env` - sourceType: "module", - project: ["./tsconfig.json", "./tsconfig.node.json"], - tsconfigRootDir: __dirname, - }, - settings: { - react: { - version: "detect", - }, - }, - rules: { - "@typescript-eslint/array-type": ["error", { default: "array-simple" }], - "@typescript-eslint/no-unused-vars": [ - "error", - { args: "none", ignoreRestSiblings: true }, - ], - camelcase: [ - "error", - { - properties: "never", // TODO: remove when server responses are camel case - allow: [ - "MRT_", // For material-react-table - ], - }, - ], - curly: "error", - "jsdoc/no-defaults": "off", - "jsdoc/require-jsdoc": "off", - "jsdoc/require-hyphen-before-param-description": "warn", - "jsdoc/tag-lines": ["warn", "any", { startLines: 1 }], // Expected 1 line after block description - "license-header/header": ["error", "license-header.js"], - "no-console": "warn", - "no-param-reassign": [ - "error", - { - props: true, - ignorePropertyModificationsForRegex: [ - // For immer, 'acc' for - "^draft", - // For `Array.prototype.reduce()` - "acc", - "accumulator", - ], - }, - ], - "no-use-before-define": [ - "error", - { - // Function declarations are hoisted, so it’s safe. - functions: false, - }, - ], - "react-refresh/only-export-components": [ - "warn", - { allowConstantExport: true }, - ], - "react/hook-use-state": "error", - "react/prop-types": "off", - "react/self-closing-comp": "error", - "require-await": "warn", // TODO: switch to "error" when the quantity of warning will be low - }, -}; diff --git a/webapp/.nvmrc b/webapp/.nvmrc index 3876fd4986..6fa8dec4cd 100644 --- a/webapp/.nvmrc +++ b/webapp/.nvmrc @@ -1 +1 @@ -18.16.1 +22.13.0 diff --git a/webapp/.prettierrc.json b/webapp/.prettierrc.json index 168d9d2a0c..b1e09779e9 100644 --- a/webapp/.prettierrc.json +++ b/webapp/.prettierrc.json @@ -1,3 +1,4 @@ { - "endOfLine": "auto" + "endOfLine": "auto", + "printWidth": 100 } diff --git a/webapp/eslint.config.js b/webapp/eslint.config.js new file mode 100644 index 0000000000..fc16942269 --- /dev/null +++ b/webapp/eslint.config.js @@ -0,0 +1,138 @@ +/** + * Copyright (c) 2025, RTE (https://www.rte-france.com) + * + * See AUTHORS.txt + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This file is part of the Antares project. + */ + +import globals from "globals"; +import eslint from "@eslint/js"; +import tseslint from "typescript-eslint"; +import reactPlugin from "eslint-plugin-react"; +import reactHookPlugin from "eslint-plugin-react-hooks"; +import jsdocPlugin from "eslint-plugin-jsdoc"; +import prettierPluginRecommended from "eslint-plugin-prettier/recommended"; +import licenseHeaderPlugin from "eslint-plugin-license-header"; +import reactRefreshPlugin from "eslint-plugin-react-refresh"; + +export default [ + // Must be defined here to be applied to all configurations. + // cf. https://github.com/eslint/eslint/discussions/18304 + { + ignores: ["dist/*", "license-header.js"], + }, + eslint.configs.recommended, + ...tseslint.configs.recommended, + ...tseslint.configs.stylistic, + { + ...reactPlugin.configs.flat.recommended, + settings: { + react: { + version: "detect", + }, + }, + }, + reactPlugin.configs.flat["jsx-runtime"], + jsdocPlugin.configs["flat/recommended-typescript"], + prettierPluginRecommended, // Must be the last one + { + languageOptions: { + ecmaVersion: 2022, + sourceType: "module", + globals: { + ...globals.browser, + ...globals.es2022, + }, + }, + plugins: { + "license-header": licenseHeaderPlugin, + "react-hooks": reactHookPlugin, + "react-refresh": reactRefreshPlugin, + }, + rules: { + ...reactHookPlugin.configs.recommended.rules, + "@typescript-eslint/array-type": ["error", { default: "array-simple" }], + "@typescript-eslint/no-restricted-imports": [ + "error", + { + paths: [ + { + name: "lodash", + message: + 'Import method directly `import [METHOD] from "lodash/[METHOD]"` (safest for bundle size).', + allowTypeImports: true, + }, + ], + patterns: [ + { + group: ["react"], + importNamePattern: + "^(React|Function|Ref|Mutable|CSS|Component|Props|Form)|(Event|Handler|Attributes)$", + message: + 'Use `React.[TYPE]` (e.g. `React.ReactNode`) instead of importing it directly from "react".', + }, + ], + }, + ], + "@typescript-eslint/no-unused-expressions": ["error", { allowTernary: true }], + "@typescript-eslint/no-unused-vars": ["error", { args: "none", ignoreRestSiblings: true }], + camelcase: [ + "error", + { + properties: "never", // TODO: remove when server responses are camel case + allow: [ + "MRT_", // For material-react-table + ], + }, + ], + curly: "error", + "jsdoc/no-defaults": "off", + "jsdoc/require-jsdoc": "off", + "jsdoc/require-hyphen-before-param-description": "warn", + "jsdoc/tag-lines": ["warn", "any", { startLines: 1 }], // Expected 1 line after block description + "license-header/header": ["error", "license-header.js"], + "no-console": "warn", + "no-duplicate-imports": "error", + "no-param-reassign": [ + "error", + { + props: true, + ignorePropertyModificationsForRegex: [ + // For immer, 'acc' for + "^draft", + // For `Array.prototype.reduce()` + "acc", + "accumulator", + ], + }, + ], + "no-use-before-define": [ + "error", + { + // Function declarations are hoisted, so it’s safe. + functions: false, + }, + ], + "react-refresh/only-export-components": ["warn", { allowConstantExport: true }], + "react/hook-use-state": "error", + "react/prop-types": "off", + "react/self-closing-comp": "error", + "react-hooks/exhaustive-deps": [ + "warn", + { + // Includes hooks from 'react-use' + additionalHooks: + "(useSafeMemo|useUpdateEffectOnce|useDeepCompareEffect|useShallowCompareEffect|useCustomCompareEffect)", + }, + ], + "require-await": "warn", // TODO: switch to "error" when the quantity of warning will be low + }, + }, +]; diff --git a/webapp/license-header.js b/webapp/license-header.js index a5bb574db3..8948d1424b 100644 --- a/webapp/license-header.js +++ b/webapp/license-header.js @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 7fcf0b0270..22d9671e83 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -69,12 +69,12 @@ "xml-js": "1.6.11" }, "devDependencies": { + "@eslint/js": "9.18.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/react": "16.0.1", "@testing-library/user-event": "14.5.2", "@total-typescript/ts-reset": "0.6.1", "@types/d3": "5.16.0", - "@types/date-fns": "2.6.0", "@types/debug": "4.1.12", "@types/draft-convert": "2.1.8", "@types/draft-js": "0.11.18", @@ -94,43 +94,44 @@ "@types/react-virtualized-auto-sizer": "1.0.4", "@types/react-window": "1.8.8", "@types/swagger-ui-react": "4.18.3", - "@types/testing-library__jest-dom": "6.0.0", "@types/tinycolor2": "1.4.6", "@types/uuid": "10.0.0", - "@typescript-eslint/eslint-plugin": "7.2.0", - "@typescript-eslint/parser": "7.2.0", "@vitejs/plugin-react-swc": "3.7.0", "@vitest/coverage-v8": "2.1.1", "@vitest/ui": "2.1.1", - "eslint": "8.57.1", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-jsdoc": "48.10.0", + "eslint": "9.18.0", + "eslint-config-prettier": "10.0.1", + "eslint-plugin-jsdoc": "50.6.1", "eslint-plugin-license-header": "0.6.1", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-react": "7.37.0", - "eslint-plugin-react-hooks": "4.6.2", - "eslint-plugin-react-refresh": "0.4.12", + "eslint-plugin-react": "7.37.4", + "eslint-plugin-react-hooks": "5.1.0", + "eslint-plugin-react-refresh": "0.4.18", + "globals": "15.14.0", "husky": "9.1.6", "jsdom": "25.0.1", - "prettier": "3.3.3", + "prettier": "3.4.2", "typescript": "5.4.5", - "vite": "5.4.8", + "typescript-eslint": "8.19.1", + "vite": "5.4.14", "vitest": "2.1.1" }, "engines": { - "node": "18.16.1" + "node": "22.13.0" } }, "node_modules/@adobe/css-tools": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", - "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", - "dev": true + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", + "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", + "dev": true, + "license": "MIT" }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -139,12 +140,38 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.2.tgz", + "integrity": "sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.1", + "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^11.0.2" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -152,28 +179,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -191,30 +220,34 @@ "node_modules/@babel/core/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" }, "node_modules/@babel/generator": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6", + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", - "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -223,26 +256,27 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -252,81 +286,61 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6" + "@babel/types": "^7.26.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -340,6 +354,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -355,6 +370,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -366,6 +382,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -374,13 +391,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -390,9 +407,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", - "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -401,9 +419,10 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.25.6.tgz", - "integrity": "sha512-Gz0Nrobx8szge6kQQ5Z5MX9L3ObqNwCQY1PSwSNzreFL7aHGxv8Fp2j3ETV6/wWdbiV+mW6OSm8oQhg3Tcsniw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz", + "integrity": "sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==", + "license": "MIT", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -413,28 +432,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.5", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -442,14 +463,23 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -459,17 +489,20 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@braintree/sanitize-url": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.0.2.tgz", - "integrity": "sha512-NVf/1YycDMs6+FxS0Tb/W8MjJRDQdXF+tBfDtZ5UZeiRUkTmwKc4vmYCKZTyymfJk1gnMsauvZSX/HiV9jOABw==" + "integrity": "sha512-NVf/1YycDMs6+FxS0Tb/W8MjJRDQdXF+tBfDtZ5UZeiRUkTmwKc4vmYCKZTyymfJk1gnMsauvZSX/HiV9jOABw==", + "license": "MIT" }, "node_modules/@choojs/findup": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", + "license": "MIT", "dependencies": { "commander": "^2.15.1" }, @@ -477,16 +510,132 @@ "findup": "bin/findup.js" } }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", + "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", + "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@emotion/babel-plugin": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", - "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", - "@emotion/serialize": "^1.2.0", + "@emotion/serialize": "^1.3.3", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -496,13 +645,14 @@ } }, "node_modules/@emotion/cache": { - "version": "11.13.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", - "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", - "@emotion/utils": "^1.4.0", + "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } @@ -510,12 +660,14 @@ "node_modules/@emotion/hash": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", - "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" }, "node_modules/@emotion/is-prop-valid": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "license": "MIT", "dependencies": { "@emotion/memoize": "^0.9.0" } @@ -523,12 +675,14 @@ "node_modules/@emotion/memoize": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", - "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" }, "node_modules/@emotion/react": { "version": "11.13.3", "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.12.0", @@ -549,26 +703,29 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz", - "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/unitless": "^0.10.0", - "@emotion/utils": "^1.4.1", + "@emotion/utils": "^1.4.2", "csstype": "^3.0.2" } }, "node_modules/@emotion/sheet": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", - "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" }, "node_modules/@emotion/styled": { "version": "11.13.0", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.12.0", @@ -590,35 +747,40 @@ "node_modules/@emotion/unitless": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", - "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz", - "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" }, "node_modules/@emotion/weak-memoize": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.46.0.tgz", - "integrity": "sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==", + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz", + "integrity": "sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==", "dev": true, + "license": "MIT", "dependencies": { "comment-parser": "1.4.1", "esquery": "^1.6.0", - "jsdoc-type-pratt-parser": "~4.0.0" + "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { "node": ">=16" @@ -632,6 +794,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -648,6 +811,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -664,6 +828,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -680,6 +845,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -696,6 +862,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -712,6 +879,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -728,6 +896,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -744,6 +913,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -760,6 +930,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -776,6 +947,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -792,6 +964,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -808,6 +981,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -824,6 +998,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -840,6 +1015,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -856,6 +1032,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -872,6 +1049,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -888,6 +1066,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -904,6 +1083,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -920,6 +1100,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -936,6 +1117,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -952,6 +1134,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -968,6 +1151,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -984,6 +1168,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -993,39 +1178,110 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -1033,7 +1289,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1044,21 +1300,20 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1069,6 +1324,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1077,35 +1333,63 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@floating-ui/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", - "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.8" + "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", - "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" + "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/react-dom": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.0.0" }, @@ -1115,14 +1399,16 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" }, "node_modules/@glideapps/glide-data-grid": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@glideapps/glide-data-grid/-/glide-data-grid-6.0.3.tgz", "integrity": "sha512-YXKggiNOaEemf0jP0jORq2EQKz+zXms+6mGzZc+q0mLMjmgzzoGLOQC1uYcynXSj1R61bd27JcPFsoH+Gj37Vg==", + "license": "MIT", "dependencies": { "@linaria/react": "^4.5.3", "canvas-hypertxt": "^1.0.3", @@ -1139,51 +1425,54 @@ "node_modules/@handsontable/pikaday": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@handsontable/pikaday/-/pikaday-1.0.0.tgz", - "integrity": "sha512-1VN6N38t5/DcjJ7y7XUYrDx1LuzvvzlrFdBdMG90Qo1xc8+LXHqbWbsTEm5Ec5gXTEbDEO53vUT35R+2COmOyg==" + "integrity": "sha512-1VN6N38t5/DcjJ7y7XUYrDx1LuzvvzlrFdBdMG90Qo1xc8+LXHqbWbsTEm5Ec5gXTEbDEO53vUT35R+2COmOyg==", + "license": "(0BSD OR MIT)" }, "node_modules/@handsontable/react": { "version": "14.5.0", "resolved": "https://registry.npmjs.org/@handsontable/react/-/react-14.5.0.tgz", "integrity": "sha512-Z6weZTELY1hqgW8TDno000xScd+I1sQ0DcswX2AdnCCwvvQkmC74xmIREalwtFE9CCi0Y/kiSvq/G0bYgl//pQ==", + "license": "SEE LICENSE IN LICENSE.txt", "peerDependencies": { "handsontable": ">=14.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "Apache-2.0", "engines": { - "node": "*" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -1191,6 +1480,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1199,17 +1489,25 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@icons/material": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", + "license": "MIT", "peerDependencies": { "react": "*" } @@ -1219,6 +1517,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1231,46 +1530,21 @@ "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1284,6 +1558,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1292,6 +1567,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1300,6 +1576,7 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -1309,12 +1586,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1324,6 +1603,7 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/@linaria/core/-/core-4.5.4.tgz", "integrity": "sha512-vMs/5iU0stxjfbBCxobIgY+wSQx4G8ukNwrhjPVD+6bF9QrTwi5rl0mKaCMxaGMjnfsLRiiM3i+hnWLIEYLdSg==", + "license": "MIT", "dependencies": { "@linaria/logger": "^4.5.0", "@linaria/tags": "^4.5.4", @@ -1337,6 +1617,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/@linaria/logger/-/logger-4.5.0.tgz", "integrity": "sha512-XdQLk242Cpcsc9a3Cz1ktOE5ysTo2TpxdeFQEPwMm8Z/+F/S6ZxBDdHYJL09srXWz3hkJr3oS2FPuMZNH1HIxw==", + "license": "MIT", "dependencies": { "debug": "^4.1.1", "picocolors": "^1.0.0" @@ -1349,6 +1630,7 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/@linaria/react/-/react-4.5.4.tgz", "integrity": "sha512-/dhCVCsfdGPfQCPV0q5yy+DDlFXepvfXrw/os2fC+Xo1v9J/9gyiaBBWHzcumauvNNFj8aN6vRkj89fMujPHew==", + "license": "MIT", "dependencies": { "@emotion/is-prop-valid": "^1.2.0", "@linaria/core": "^4.5.4", @@ -1369,6 +1651,7 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/@linaria/tags/-/tags-4.5.4.tgz", "integrity": "sha512-HPxLB6HlJWLi6o8+8lTLegOmDnbMbuzEE+zzunaPZEGSoIIYx8HAv5VbY/sG/zNyxDElk6laiAwEVWN8h5/zxg==", + "license": "MIT", "dependencies": { "@babel/generator": "^7.22.9", "@linaria/logger": "^4.5.0", @@ -1382,6 +1665,7 @@ "version": "4.5.3", "resolved": "https://registry.npmjs.org/@linaria/utils/-/utils-4.5.3.tgz", "integrity": "sha512-tSpxA3Zn0DKJ2n/YBnYAgiDY+MNvkmzAHrD8R9PKrpGaZ+wz1jQEmE1vGn1cqh8dJyWK0NzPAA8sf1cqa+RmAg==", + "license": "MIT", "dependencies": { "@babel/core": "^7.22.9", "@babel/generator": "^7.22.9", @@ -1404,6 +1688,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", + "license": "ISC", "dependencies": { "get-stream": "^6.0.1", "minimist": "^1.2.6" @@ -1415,7 +1700,8 @@ "node_modules/@mapbox/geojson-types": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz", - "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==" + "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==", + "license": "ISC" }, "node_modules/@mapbox/jsonlint-lines-primitives": { "version": "2.0.2", @@ -1429,6 +1715,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz", "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==", + "license": "BSD-3-Clause", "peerDependencies": { "mapbox-gl": ">=0.32.1 <2.0.0" } @@ -1436,22 +1723,26 @@ "node_modules/@mapbox/point-geometry": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", - "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==", + "license": "ISC" }, "node_modules/@mapbox/tiny-sdf": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz", - "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==" + "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==", + "license": "BSD-2-Clause" }, "node_modules/@mapbox/unitbezier": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", - "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==" + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==", + "license": "BSD-2-Clause" }, "node_modules/@mapbox/vector-tile": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "license": "BSD-3-Clause", "dependencies": { "@mapbox/point-geometry": "~0.1.0" } @@ -1460,14 +1751,16 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", + "license": "ISC", "engines": { "node": ">=6.0.0" } }, "node_modules/@maplibre/maplibre-gl-style-spec": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.3.1.tgz", - "integrity": "sha512-5ueL4UDitzVtceQ8J4kY+Px3WK+eZTsmGwha3MBKHKqiHvKrjWWwBCIl1K8BuJSc5OFh83uI8IFNoFvQxX2uUw==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz", + "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==", + "license": "ISC", "dependencies": { "@mapbox/jsonlint-lines-primitives": "~2.0.2", "@mapbox/unitbezier": "^0.0.1", @@ -1475,7 +1768,6 @@ "minimist": "^1.2.8", "quickselect": "^2.0.0", "rw": "^1.3.3", - "sort-object": "^3.0.3", "tinyqueue": "^3.0.0" }, "bin": { @@ -1487,17 +1779,20 @@ "node_modules/@maplibre/maplibre-gl-style-spec/node_modules/@mapbox/unitbezier": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", - "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==", + "license": "BSD-2-Clause" }, "node_modules/@maplibre/maplibre-gl-style-spec/node_modules/tinyqueue": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", - "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==", + "license": "ISC" }, "node_modules/@mui/base": { "version": "5.0.0-beta.58", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.58.tgz", "integrity": "sha512-P0E7ZrxOuyYqBvVv9w8k7wm+Xzx/KRu+BGgFcR2htTsGCpJNQJCSUXNUZ50MUmSU9hzqhwbQWNXhV1MBTl6F7A==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", "@floating-ui/react-dom": "^2.1.1", @@ -1529,6 +1824,7 @@ "version": "6.0.0-rc.0", "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.0.0-rc.0.tgz", "integrity": "sha512-tBp0ILEXDL0bbDDT8PnZOjCqSm5Dfk2N0Z45uzRw+wVl6fVvloC9zw8avl+OdX1Bg3ubs/ttKn8nRNv17bpM5A==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", "@mui/types": "^7.2.15", @@ -1555,9 +1851,10 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.1.tgz", - "integrity": "sha512-VdQC1tPIIcZAnf62L2M1eQif0x2vlKg3YK4kGYbtijSH4niEgI21GnstykW1vQIs+Bc6L+Hua2GATYVjilJ22A==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.3.1.tgz", + "integrity": "sha512-2OmnEyoHpj5//dJJpMuxOeLItCCHdf99pjMFfUFdBteCunAK9jW+PwEo4mtdGcLs7P+IgZ+85ypd52eY4AigoQ==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" @@ -1567,6 +1864,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.1.tgz", "integrity": "sha512-sy/YKwcLPW8VcacNP2uWMYR9xyWuwO9NN9FXuGEU90bRshBXj8pdKk+joe3TCW7oviVS3zXLHlc94wQ0jNsQRQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.6" }, @@ -1592,6 +1890,7 @@ "version": "6.0.0-beta.10", "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-6.0.0-beta.10.tgz", "integrity": "sha512-eqCBz5SZS8Un9To3UcjH01AxkOOgvme/g0ZstFC8Nz1Kg5/EJMA0ByhKS5AvUMzUKrv0FXMdbuPqbBvF3bVrXg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.6", "@mui/base": "5.0.0-beta.58", @@ -1636,6 +1935,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.1.tgz", "integrity": "sha512-b+eULldTqtqTCbN++2BtBWCir/1LwEYw+2mIlOt2GiEUh1EBBw4/wIukGKKNt3xrCZqRA80yLLkV6tF61Lq3cA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.6", "@mui/core-downloads-tracker": "^6.1.1", @@ -1681,12 +1981,13 @@ } }, "node_modules/@mui/private-theming": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.1.tgz", - "integrity": "sha512-JlrjIdhyZUtewtdAuUsvi3ZnO0YS49IW4Mfz19ZWTlQ0sDGga6LNPVwHClWr2/zJK2we2BQx9/i8M32rgKuzrg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.3.1.tgz", + "integrity": "sha512-g0u7hIUkmXmmrmmf5gdDYv9zdAig0KoxhIQn1JN8IVqApzf/AyRhH3uDGx5mSvs8+a1zb4+0W6LC260SyTTtdQ==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/utils": "^6.1.1", + "@babel/runtime": "^7.26.0", + "@mui/utils": "^6.3.1", "prop-types": "^15.8.1" }, "engines": { @@ -1707,12 +2008,14 @@ } }, "node_modules/@mui/styled-engine": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.1.tgz", - "integrity": "sha512-HJyIoMpFb11fnHuRtUILOXgq6vj4LhIlE8maG4SwP/W+E5sa7HFexhnB3vOMT7bKys4UKNxhobC8jwWxYilGsA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.3.1.tgz", + "integrity": "sha512-/7CC0d2fIeiUxN5kCCwYu4AWUDd9cCTxWCyo0v/Rnv6s8uk6hWgJC3VLZBoDENBHf/KjqDZuYJ2CR+7hD6QYww==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.6", - "@emotion/cache": "^11.13.1", + "@babel/runtime": "^7.26.0", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", "@emotion/sheet": "^1.4.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1739,15 +2042,16 @@ } }, "node_modules/@mui/system": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.1.tgz", - "integrity": "sha512-PaYsCz2tUOcpu3T0okDEsSuP/yCDIj9JZ4Tox1JovRSKIjltHpXPsXZSGr3RiWdtM1MTQMFMCZzu0+CKbyy+Kw==", - "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/private-theming": "^6.1.1", - "@mui/styled-engine": "^6.1.1", - "@mui/types": "^7.2.17", - "@mui/utils": "^6.1.1", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.3.1.tgz", + "integrity": "sha512-AwqQ3EAIT2np85ki+N15fF0lFXX1iFPqenCzVOSl3QXKy2eifZeGd9dGtt7pGMoFw5dzW4dRGGzRpLAq9rkl7A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/private-theming": "^6.3.1", + "@mui/styled-engine": "^6.3.1", + "@mui/types": "^7.2.21", + "@mui/utils": "^6.3.1", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1778,9 +2082,10 @@ } }, "node_modules/@mui/types": { - "version": "7.2.17", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.17.tgz", - "integrity": "sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==", + "version": "7.2.21", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.21.tgz", + "integrity": "sha512-6HstngiUxNqLU+/DPqlUJDIPbzUBxIVHb1MmXP0eTWDIROiCR2viugXpEif0PPe2mLqqakPzzRClWAnK+8UJww==", + "license": "MIT", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -1791,16 +2096,17 @@ } }, "node_modules/@mui/utils": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.1.tgz", - "integrity": "sha512-HlRrgdJSPbYDXPpoVMWZV8AE7WcFtAk13rWNWAEVWKSanzBBkymjz3km+Th/Srowsh4pf1fTSP1B0L116wQBYw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.3.1.tgz", + "integrity": "sha512-sjGjXAngoio6lniQZKJ5zGfjm+LD2wvLwco7FbKe1fu8A7VIFmz2SwkLb+MDPLNX1lE7IscvNNyh1pobtZg2tw==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/types": "^7.2.17", - "@types/prop-types": "^15.7.12", + "@babel/runtime": "^7.26.0", + "@mui/types": "^7.2.21", + "@types/prop-types": "^15.7.14", "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^18.3.1" + "react-is": "^19.0.0" }, "engines": { "node": ">=14.0.0" @@ -1819,15 +2125,22 @@ } } }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz", + "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==", + "license": "MIT" + }, "node_modules/@mui/x-date-pickers": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.18.0.tgz", - "integrity": "sha512-12tXIoMj9vpS8fS/bS3kWPCoVrH38vNGCxgplI0vOnUrN9rJuYJz3agLPJe1S0xciTw+9W8ZSe3soaW+owoz1Q==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.23.6.tgz", + "integrity": "sha512-jt6rEAYLju3NZe3y2S+I5KcTiSHV79FW0jeNUEUTceg1qsPzseHbND66k3zVF0hO3N2oZtLtPywof6vN5Doe+Q==", + "license": "MIT", "peer": true, "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/utils": "^5.16.6", - "@mui/x-internals": "7.18.0", + "@babel/runtime": "^7.25.7", + "@mui/utils": "^5.16.6 || ^6.0.0", + "@mui/x-internals": "7.23.6", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", "prop-types": "^15.8.1", @@ -1846,14 +2159,14 @@ "@mui/material": "^5.15.14 || ^6.0.0", "@mui/system": "^5.15.14 || ^6.0.0", "date-fns": "^2.25.0 || ^3.2.0 || ^4.0.0", - "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0", + "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0 || ^4.0.0-0", "dayjs": "^1.10.7", "luxon": "^3.0.2", "moment": "^2.29.4", - "moment-hijri": "^2.1.2", + "moment-hijri": "^2.1.2 || ^3.0.0", "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -1885,43 +2198,15 @@ } } }, - "node_modules/@mui/x-date-pickers/node_modules/@mui/utils": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", - "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/types": "^7.2.15", - "@types/prop-types": "^15.7.12", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^18.3.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@mui/x-internals": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.18.0.tgz", - "integrity": "sha512-lzCHOWIR0cAIY1bGrWSprYerahbnH5C31ql/2OWCEjcngL2NAV1M6oKI2Vp4HheqzJ822c60UyWyapvyjSzY/A==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.23.6.tgz", + "integrity": "sha512-hT1Pa4PNCnxwiauPbYMC3p4DiEF1x05Iu4C1MtC/jMJ1LtthymLmTuQ6ZQ53/R9FeqK6sYd6A6noR+vNMjp5DA==", + "license": "MIT", + "peer": true, "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/utils": "^5.16.6" + "@babel/runtime": "^7.25.7", + "@mui/utils": "^5.16.6 || ^6.0.0" }, "engines": { "node": ">=14.0.0" @@ -1931,42 +2216,14 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "react": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@mui/x-internals/node_modules/@mui/utils": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", - "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/types": "^7.2.15", - "@types/prop-types": "^15.7.12", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^18.3.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/@mui/x-tree-view": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@mui/x-tree-view/-/x-tree-view-7.18.0.tgz", "integrity": "sha512-3UJAYtBquc0SzKxEEdM68XlKOuuCl70ktZPqqI3z4wTZ0HK445XXc32t/s0VPIL94kRxWQcGPpgWFauScDwhug==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.6", "@mui/utils": "^5.16.6", @@ -2001,16 +2258,17 @@ } }, "node_modules/@mui/x-tree-view/node_modules/@mui/utils": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", - "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", + "version": "5.16.14", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.14.tgz", + "integrity": "sha512-wn1QZkRzSmeXD1IguBVvJJHV3s6rxJrfb6YuC9Kk6Noh9f8Fb54nUs5JRkKm+BOerRhj5fLg05Dhx/H3Ofb8Mg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^18.3.1" + "react-is": "^19.0.0" }, "engines": { "node": ">=12.0.0" @@ -2020,8 +2278,8 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -2029,11 +2287,38 @@ } } }, + "node_modules/@mui/x-tree-view/node_modules/@mui/x-internals": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.18.0.tgz", + "integrity": "sha512-lzCHOWIR0cAIY1bGrWSprYerahbnH5C31ql/2OWCEjcngL2NAV1M6oKI2Vp4HheqzJ822c60UyWyapvyjSzY/A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.6", + "@mui/utils": "^5.16.6" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@mui/x-tree-view/node_modules/react-is": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz", + "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==", + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2047,6 +2332,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -2056,6 +2342,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2069,6 +2356,7 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -2079,6 +2367,7 @@ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -2089,12 +2378,14 @@ "node_modules/@plotly/d3": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.2.tgz", - "integrity": "sha512-wvsNmh1GYjyJfyEBPKJLTMzgf2c2bEbSIL50lmqVUi+o1NHaLPi1Lb4v7VxXXJn043BhNyrxUrWI85Q+zmjOVA==" + "integrity": "sha512-wvsNmh1GYjyJfyEBPKJLTMzgf2c2bEbSIL50lmqVUi+o1NHaLPi1Lb4v7VxXXJn043BhNyrxUrWI85Q+zmjOVA==", + "license": "BSD-3-Clause" }, "node_modules/@plotly/d3-sankey": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.7.2.tgz", "integrity": "sha512-2jdVos1N3mMp3QW0k2q1ph7Gd6j5PY1YihBrwpkFnKqO+cqtZq3AdEYUeSGXMeLsBDQYiqTVcihYfk8vr5tqhw==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1", "d3-collection": "1", @@ -2105,6 +2396,7 @@ "version": "0.33.1", "resolved": "https://registry.npmjs.org/@plotly/d3-sankey-circular/-/d3-sankey-circular-0.33.1.tgz", "integrity": "sha512-FgBV1HEvCr3DV7RHhDsPXyryknucxtfnLwPtCKKxdolKyTFYoLX/ibEfX39iFYIL7DYbVeRtP43dbFcrHNE+KQ==", + "license": "MIT", "dependencies": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", @@ -2116,6 +2408,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/@plotly/mapbox-gl/-/mapbox-gl-1.13.4.tgz", "integrity": "sha512-sR3/Pe5LqT/fhYgp4rT4aSFf1rTsxMbGiH6Hojc7PH36ny5Bn17iVFUjpzycafETURuFbLZUfjODO8LvSI+5zQ==", + "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@mapbox/geojson-rewind": "^0.5.2", "@mapbox/geojson-types": "^1.0.2", @@ -2148,6 +2441,7 @@ "version": "3.1.9", "resolved": "https://registry.npmjs.org/@plotly/point-cluster/-/point-cluster-3.1.9.tgz", "integrity": "sha512-MwaI6g9scKf68Orpr1pHZ597pYx9uP8UEFXLPbsCmuw3a84obwz6pnMXGc90VhgDNeNiLEdlmuK7CPo+5PIxXw==", + "license": "MIT", "dependencies": { "array-bounds": "^1.0.1", "binary-search-bounds": "^2.0.4", @@ -2165,12 +2459,14 @@ "version": "1.0.0-next.28", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -2180,6 +2476,7 @@ "version": "1.9.6", "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.6.tgz", "integrity": "sha512-Gc4ikl90ORF4viIdAkY06JNUnODjKfGxZRwATM30EdHq8hLSVoSrwXne5dd739yenP5bJxAX7tLuOWK5RPGtrw==", + "license": "MIT", "dependencies": { "immer": "^9.0.21", "redux": "^4.2.1", @@ -2203,231 +2500,299 @@ "version": "9.0.21", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz", - "integrity": "sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz", + "integrity": "sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz", - "integrity": "sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz", + "integrity": "sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz", - "integrity": "sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz", + "integrity": "sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz", - "integrity": "sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz", + "integrity": "sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz", + "integrity": "sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz", + "integrity": "sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz", - "integrity": "sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz", + "integrity": "sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz", - "integrity": "sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz", + "integrity": "sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz", - "integrity": "sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz", + "integrity": "sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz", - "integrity": "sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz", + "integrity": "sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz", + "integrity": "sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz", - "integrity": "sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz", + "integrity": "sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz", - "integrity": "sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz", + "integrity": "sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz", - "integrity": "sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz", + "integrity": "sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz", - "integrity": "sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz", + "integrity": "sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz", - "integrity": "sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz", + "integrity": "sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz", - "integrity": "sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz", + "integrity": "sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz", - "integrity": "sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz", + "integrity": "sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz", - "integrity": "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz", + "integrity": "sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, + "node_modules/@scarf/scarf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", + "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", + "hasInstallScript": true, + "license": "Apache-2.0" + }, "node_modules/@sphinxxxx/color-conversion": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", - "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==", + "license": "ISC" }, "node_modules/@swagger-api/apidom-ast": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-alpha.9.tgz", - "integrity": "sha512-SAOQrFSFwgDiI4QSIPDwAIJEb4Za+8bu45sNojgV3RMtCz+n4Agw66iqGsDib5YSI/Cg1h4AKFovT3iWdfGWfw==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-beta.6.tgz", + "integrity": "sha512-AAxEN/xTcH/ORpn/zEEuPPgtqX6/Q9EZC8RX2R7AlRdUeGZieE9OZ91mXYrg48FcHWi/xwWYqkPPHjyXTQkfww==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", + "@swagger-api/apidom-error": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2435,13 +2800,14 @@ } }, "node_modules/@swagger-api/apidom-core": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-alpha.9.tgz", - "integrity": "sha512-vGl8BWRf6ODl39fxElcIOjRE2QG5AJhn8tTNMqjjHB/2WppNBuxOVStYZeVJoWfK03OPK8v4Fp/TAcaP9+R7DQ==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-beta.6.tgz", + "integrity": "sha512-gmHpE5+wJgUmpkb0C3ZIM6VsMXj0heujwQeXqEcFRkp1d0u4crCNmQ5iPTewzvILcnMbxac0AUFFKuJbBpqzPg==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", + "@swagger-api/apidom-ast": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "minim": "~0.23.8", "ramda": "~0.30.0", @@ -2451,36 +2817,39 @@ } }, "node_modules/@swagger-api/apidom-error": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.0.0-alpha.9.tgz", - "integrity": "sha512-FU/2sFSgsICB9HYFELJ79caRpXXzlAV41QTHsAM46WfRehbzZUQpOBQm4jRi3qJGSa/Jk+mQ7Vt8HLRFMpJFfg==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.0.0-beta.6.tgz", + "integrity": "sha512-bLttwjXj0u9pHIzc71L5rZWvhtcPFmGdvPDpXMoK4XOjmfpw9hqQKg1DGWKQHxNiMP/zlWAWO1RxjFQNYcO70g==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7" } }, "node_modules/@swagger-api/apidom-json-pointer": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-alpha.9.tgz", - "integrity": "sha512-/W8Ktbgbs29zdhed6KHTFk0qmuIRbvEFi8wu2MHGQ5UT4i99Bdu2OyUiayhnpejWztfQxDgL08pjrQPEwgY8Yg==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-beta.6.tgz", + "integrity": "sha512-9XdWnouDGnn8UCr48TgtB16e4s37L7ibWFFgn4ercSkUMsJKMzHULabZ005IKVfP20UbhdIa5/r2W/i8iRk8Vg==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-ns-api-design-systems": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-alpha.9.tgz", - "integrity": "sha512-aduC2vbwGgn6ia9IkKpqBYBaKyIDGM/80M3oU3DFgaYIIwynzuwVpN1TkBOLIFy3mAzkWoYKUS0jdZJhMy/6Ug==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-beta.6.tgz", + "integrity": "sha512-Qycf1LbBP5KxtxCeXHIAKazekKnz8kOHfnn2JT/FkWojM4reTECHBMi40DwQOQbj1CsWSasoTbnKjG64BxoJRg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2488,14 +2857,15 @@ } }, "node_modules/@swagger-api/apidom-ns-asyncapi-2": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-alpha.9.tgz", - "integrity": "sha512-hZjxXJgMt517ADnAauWJh01k7WNRwkbWT5p6b7AXF2H3tl549A2hhLnIg3BBSE3GwB3Nv25GyrI3aA/1dFVC8A==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-beta.6.tgz", + "integrity": "sha512-bQ0eNdDYrrkr4Y4iyUcgXiYBFzj+wwJiBGKI8OBJ9hTVEDbDCb/8ZzlZw3wMQNGFMw6/NC2F6MEbocApDx9vnQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2503,13 +2873,14 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-alpha.9.tgz", - "integrity": "sha512-OfX4UBb08C0xD5+F80dQAM2yt5lXxcURWkVEeCwxz7i23BB3nNEbnZXNV91Qo9eaJflPh8dO9iiHQxvfw5IgSg==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-beta.6.tgz", + "integrity": "sha512-Cn4+CH8ZqniejbmbD7nfUzw/N+S9lwGztOB5ZSoS23r1/mFzcya/bTOSuUW6BJ4Pa1L+AvUWhqmRlzG66Ta0gA==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^1.0.0-alpha.9", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", + "@swagger-api/apidom-ast": "^1.0.0-beta.6", + "@swagger-api/apidom-core": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2517,15 +2888,16 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.0.0-alpha.9.tgz", - "integrity": "sha512-qzUVRSSrnlYGMhK6w57o/RboNvy1FO0iFgEnTk56dD4wN49JRNuFqKI18IgXc1W2r9tTTG70nG1khe4cPE8TNg==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.0.0-beta.6.tgz", + "integrity": "sha512-zwD2cKjbXBynMNFAyXHLsNz16Wbd4SOSehAZ1WJcWTJflC0GVk0kkFmzGFz92WI0YQihnrYwrAhpmZohUlHUWg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2533,15 +2905,16 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-alpha.9.tgz", - "integrity": "sha512-Zml8Z8VCckdFjvTogaec1dabd85hg1+xZDseWcCuD0tYkaTY/sZ8zzI0dz6/4HsKCb58qjiWSa0w60N8Syr6WQ==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-beta.6.tgz", + "integrity": "sha512-T1LMWiHitPJt9pM4G4FTPaGJntW8x6v/Y6236dEt8gO5aw5T3528PtaqEGfmI4uIvJO4dBwrobEte9GUXWVxig==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-json-schema-draft-6": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-json-schema-draft-6": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2549,15 +2922,16 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-2": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-alpha.9.tgz", - "integrity": "sha512-WUZxt7Gs7P4EQsGtoD6cKAjf0uDJhkUxsIW9Bb4EAgO6tdp7LlXhbJ0fJ2QycCLY717SfJbvGLfhuSfTYo4Iow==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-beta.6.tgz", + "integrity": "sha512-SY+h67maS88egPr9o7E8yep2xdw4N/vRYO1vCRcX4Y6UfFpiAn3jSKxQkOP983DJGXwDLVirVML/ezb9VXbnDg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2565,14 +2939,15 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-alpha.9.tgz", - "integrity": "sha512-7ra5uoZGrfCn1LabfJLueChPcYXyg24//LCYBtjTstyueqd5Vp7JCPeP5NnJSAaqVAP47r8ygceBPoxNp9k1EQ==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-beta.6.tgz", + "integrity": "sha512-fqsF35X8O2yaENr74wbZtPqSgiuuomu9mT9KKj9P7z6in6SjBSTMMmGkbsjximdr+hVCrNm8ActDF1HRq3av7Q==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2580,15 +2955,16 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-3-1": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-alpha.9.tgz", - "integrity": "sha512-nQOwNQgf0C8EVjf2loAAl4ifRuVOdcqycvXUdcTpsUfHN3fbndR8IKpb26mQNmnACmqgmX+LkbMdW9b+K6089g==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-beta.6.tgz", + "integrity": "sha512-GOtloezNXZExvhmSp5OT2NO7XLMwUY12stXUWl0bWR3O/6I6U522JFgoO9SHKxuSed5ateJpE7eR39HCJ/pyOQ==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^1.0.0-alpha.9", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-json-pointer": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-alpha.9", + "@swagger-api/apidom-ast": "^1.0.0-beta.6", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-json-pointer": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2596,14 +2972,15 @@ } }, "node_modules/@swagger-api/apidom-ns-workflows-1": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-1.0.0-alpha.9.tgz", - "integrity": "sha512-yKo0p8OkQmDib93Kt1yqWmI7JsD6D9qUHxr/SCuAmNNWny1hxm7cZGoKJwJlGd0uAg84j4vmzWOlG3AsJbnT8g==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-1.0.0-beta.6.tgz", + "integrity": "sha512-5ViXxpioBNfkJJyGmgbp76OyvY3IRsfNwN9tXTl39vgpyPnQVtBPwhKwuViiqDr+GmyZgMCotB3QlYPNcxqEoA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -2611,263 +2988,323 @@ } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.0.0-alpha.9.tgz", - "integrity": "sha512-xfVMR4HrTzXU0HB4TtxwkNbUIa/cQrPa0BWutJZ0fMYMAtUox2s8GsFYnJfZP52XfpSHFM1VPclivorZqET14g==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.0.0-beta.6.tgz", + "integrity": "sha512-HLcCDO7QdBjPFQ/Mf4XmG0qcmwW+AnDZyPYzMOAyK1hU3xwQjAIn5zOlgp0feTe3vNUMzNY1NDHvCeDXSbN5sQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-api-design-systems": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-api-design-systems": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-alpha.9.tgz", - "integrity": "sha512-lJZkrhZ8qRTtc5fSLKefCv8j7Xzo8UBfMjpqTJhmETAtU8YfVV2i2znjgxJpm0QwV6FVQqGfK1+ASZQWPLiVcA==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-beta.6.tgz", + "integrity": "sha512-jL2fZv1a+3S6SiIVYc3kC0NAAk8bszNGcVTsBV8ehHgZxc0I+EANEJwgZE/YOcL3TlNEFscfjUcGhjyWkEQksQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-api-design-systems": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-api-design-systems": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-alpha.9.tgz", - "integrity": "sha512-65nmKdPzw4C1bmtYn+3zoxXCI6Gnobr0StI9XE0YWiK+lpso7RH3Cgyl1yPZ0DBRVGzP+Fn9FVzmDNulEfR95w==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-beta.6.tgz", + "integrity": "sha512-hwSOnUwfZ78+wHXsokB/ho6xOgxK0qnWviSj1QkLvd2bomfP6RM0d4Uk19ND/Mh39oDXDwxiQ7jXHQsU8/Tq/g==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-alpha.9.tgz", - "integrity": "sha512-RLI4FpVB3vB6mIuT77yrsv5V2LMZ80dW9XpV+Fmbd4Jkdj+ysAFwT38cI4AsUMOxixpTDIXY1oWD7AjvylHhQQ==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-beta.6.tgz", + "integrity": "sha512-NecW+P4oUgioPW/l1Ang6S76v26QevjTDls+5p0I9a7Kyln8xHbfzYOGH9AEopeygZmhaburC/TO6ochxBZqkw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-json": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-alpha.9.tgz", - "integrity": "sha512-aOewp8/3zobf/O+5Jx8y7+bX3BPRfRlHIv15qp4YVTsLs6gLISWSzTO9JpWe9cR+AfhpsAalFq4t1LwIkmLk4A==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-beta.6.tgz", + "integrity": "sha512-a2ymHU7BJ11XcZvNpghmUjsyxa+hwf2Jt7MgLIKQGg6Kmnx+pHesx1/ZlqqvhkaKk6ZXbefpK7PTOBcGRerjlQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^1.0.0-alpha.9", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", + "@swagger-api/apidom-ast": "^1.0.0-beta.6", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", - "tree-sitter": "=0.20.4", - "tree-sitter-json": "=0.20.2", - "web-tree-sitter": "=0.20.3" + "tree-sitter": "=0.22.1", + "tree-sitter-json": "=0.24.8", + "web-tree-sitter": "=0.24.5" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-json/node_modules/tree-sitter": { + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.22.1.tgz", + "integrity": "sha512-gRO+jk2ljxZlIn20QRskIvpLCMtzuLl5T0BY6L9uvPYD17uUrxlxWkvYCiVqED2q2q7CVtY52Uex4WcYo2FEXw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-addon-api": "^8.2.1", + "node-gyp-build": "^4.8.2" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-alpha.9.tgz", - "integrity": "sha512-zgtsAfkplCFusX2P/saqdn10J8P3kQizCXxHLvxd2j0EhMJk2wfu4HYN5Pej/7/qf/OR1QZxqtacwebd4RfpXA==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-beta.6.tgz", + "integrity": "sha512-NgbHpVUMqE81f6rDPU9bO0qbWmiwu7FlrFvBwePktZTbbFaxwt73jFQpqyzKmIumNrg/mCckxzTrbSEW7k85Vw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-2": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-2": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.0.0-alpha.9.tgz", - "integrity": "sha512-iPuHf0cAZSUhSv8mB0FnVgatTc26cVYohgqz2cvjoGofdqoh5KKIfxOkWlIhm+qGuBp71CfZUrPYPRsd0dHgeg==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.0.0-beta.6.tgz", + "integrity": "sha512-cnFcTkzN7xAr6Zal5UnzRRkQpSe3fI910bYs9mjNMUYReo5D+hUyL16PtOf832Qa8vyDlU3WBHqAQuOEk1fepA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-alpha.9.tgz", - "integrity": "sha512-jwkfO7tzZyyrAgok+O9fKFOv1q/5njMb9DBc3D/ZF3ZLTcnEw8uj4V2HkjKxUweH5k8ip/gc8ueKmO/i7p2fng==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-beta.6.tgz", + "integrity": "sha512-xkqyXhLWg6iWyriH/t/am3CHFTZOSIUrNP7uSZBHoD6PbvDArYSB+/gtnO7e/NphSSOkqlkRC4+7VTybA9LK+A==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-alpha.9.tgz", - "integrity": "sha512-jEIDpjbjwFKXQXS/RHJeA4tthsguLoz+nJPYS3AOLfuSiby5QXsKTxgqHXxG/YJqF1xJbZL+5KcF8UyiDePumw==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-beta.6.tgz", + "integrity": "sha512-M91gx/QpM6xSf4m2k/OYaPw8Hapir+6KJMEIcLV8aP6UAnb+S2z6XoSLQ633n7QQjLYeLUL0pTzRgU1UPL9cyg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-2": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-2": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-alpha.9.tgz", - "integrity": "sha512-ieJL8dfIF8fmP3uJRNh/duJa3cCIIv6MzUe6o4uPT/oTDroy4qIATvnq9Dq/gtAv6rcPRpA9VhyghJ1DmjKsZQ==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-beta.6.tgz", + "integrity": "sha512-GdQ8jIgoYaPeIVp3Em5BGi1XwFB+LWa48mKQ7Z/M3S0u1I6YSo7P1iNhm2eRaeoL+LNb7C0ygEwixiJBaSmeew==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-alpha.9.tgz", - "integrity": "sha512-EatIH7PZQSNDsRn9ompc62MYzboY7wAkjfYz+2FzBaSA8Vl5/+740qGQj22tu/xhwW4K72aV2NNL1m47QVF7hA==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-beta.6.tgz", + "integrity": "sha512-52guWmqVa9IReg0NRf4KKUZFmlV/fMniJAKk80Xv62XN5X/MduW2P7zln2+FJAA6uGV0rBZip0Zg1McVkPowSw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-1.0.0-alpha.9.tgz", - "integrity": "sha512-LylC2cQdAmvR7bXqwMwBt6FHTMVGinwIdI8pjl4EbPT9hCVm1rdED53caTYM4gCm+CJGRw20r4gb9vn3+N6RrA==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-1.0.0-beta.6.tgz", + "integrity": "sha512-B5WW7CSVKjU+1Lt3StUEKgJvaNGF1IHYKg91eH7nvhMfJ/oY6rNpE2+ziVkYETifbZeCWMFqbQYHPzJyqomnQQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-workflows-1": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-workflows-1": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-1.0.0-alpha.9.tgz", - "integrity": "sha512-TlA4+1ca33D7fWxO5jKBytSCv86IGI4Lze4JfrawWUXZ5efhi4LiNmW5TrGlZUyvL7yJtZcA4tn3betlj6jVwA==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-1.0.0-beta.6.tgz", + "integrity": "sha512-2lzE8JemYy998RDlGJ3l4d9SL3Rs1yxEMGC5a/bIml5QVXT2FSu0ohwaxzkX+HB6LbMd1PMlQZ75IJIlxmcb0Q==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-ns-workflows-1": "^1.0.0-alpha.9", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-ns-workflows-1": "^1.0.0-beta.6", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-alpha.9.tgz", - "integrity": "sha512-jSIHEB7lbh+MP3BhYIXFkeivDR01kugXN70e5FskW7oet2TIARsVEPheWKQFSP1U8bUZA4bsp9h9gOQ9xEeErw==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-beta.6.tgz", + "integrity": "sha512-iwoSjTdyM4DeYtJEenMEKA51EOsOLxMADOXu/9ixTqMpYghp2GMnkryrtH3mq6oCX+jO3ysADx1dfp/CaukBsg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^1.0.0-alpha.9", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", - "@swagger-api/apidom-error": "^1.0.0-alpha.9", + "@swagger-api/apidom-ast": "^1.0.0-beta.6", + "@swagger-api/apidom-core": "^1.0.0-beta.6", + "@swagger-api/apidom-error": "^1.0.0-beta.6", + "@tree-sitter-grammars/tree-sitter-yaml": "=0.7.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", - "tree-sitter": "=0.20.4", - "tree-sitter-yaml": "=0.5.0", - "web-tree-sitter": "=0.20.3" + "tree-sitter": "=0.22.1", + "web-tree-sitter": "=0.24.5" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2/node_modules/@tree-sitter-grammars/tree-sitter-yaml": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@tree-sitter-grammars/tree-sitter-yaml/-/tree-sitter-yaml-0.7.0.tgz", + "integrity": "sha512-GOMIK3IaDvECD0eZEhAsLl03RMtM1E8StxuGMn6PpMKFg7jyQ+jSzxJZ4Jmc/tYitah9/AECt8o4tlRQ5yEZQg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-addon-api": "^8.3.0", + "node-gyp-build": "^4.8.4" + }, + "peerDependencies": { + "tree-sitter": "^0.22.1" + }, + "peerDependenciesMeta": { + "tree-sitter": { + "optional": true + } + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2/node_modules/tree-sitter": { + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.22.1.tgz", + "integrity": "sha512-gRO+jk2ljxZlIn20QRskIvpLCMtzuLl5T0BY6L9uvPYD17uUrxlxWkvYCiVqED2q2q7CVtY52Uex4WcYo2FEXw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-addon-api": "^8.2.1", + "node-gyp-build": "^4.8.2" } }, "node_modules/@swagger-api/apidom-reference": { - "version": "1.0.0-alpha.9", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-alpha.9.tgz", - "integrity": "sha512-KQ6wB5KplqdSsjxdA8BaQulj5zlF5VBCd5KP3RN/9vvixgsD/gyrVY59nisdzmPTqiL6yjhk612eQ96MgG8KiA==", + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-beta.6.tgz", + "integrity": "sha512-GdVPd+YAOWdAuJUJ5so63pZ4i0xlBNGClHJfTHirxZbEH9UQjNTKSkQgawUD0UBpg1HeQVzecl1cehoOp/+Uhw==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^1.0.0-alpha.9", + "@swagger-api/apidom-core": "^1.0.0-beta.6", "@types/ramda": "~0.30.0", - "axios": "^1.4.0", + "axios": "^1.7.4", "minimatch": "^7.4.3", "process": "^0.11.10", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" }, "optionalDependencies": { - "@swagger-api/apidom-error": "^1.0.0-alpha.1", - "@swagger-api/apidom-json-pointer": "^1.0.0-alpha.1", - "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-alpha.1", - "@swagger-api/apidom-ns-openapi-2": "^1.0.0-alpha.1", - "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-alpha.1", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-alpha.1", - "@swagger-api/apidom-ns-workflows-1": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-openapi-json-2": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-workflows-json-1": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-workflows-yaml-1": "^1.0.0-alpha.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-alpha.1" + "@swagger-api/apidom-error": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-json-pointer": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-ns-openapi-2": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-ns-workflows-1": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-openapi-json-2": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-workflows-json-1": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-workflows-yaml-1": "^1.0.0-beta.3 <1.0.0-rc.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.3 <1.0.0-rc.0" } }, "node_modules/@swagger-api/apidom-reference/node_modules/minimatch": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2878,15 +3315,28 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@swaggerexpert/cookie": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@swaggerexpert/cookie/-/cookie-1.4.1.tgz", + "integrity": "sha512-ZRbRC2017wMs+uZeIOC55ghwgbTxeolo+s6I0njzqina7MTrOhz8WMfTj0KGk3hfBUO/yhTQD/aQZ0lQHEIKxQ==", + "license": "Apache-2.0", + "dependencies": { + "apg-lite": "^1.0.3" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/@swc/core": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.26.tgz", - "integrity": "sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.7.tgz", + "integrity": "sha512-py91kjI1jV5D5W/Q+PurBdGsdU5TFbrzamP7zSCqLdMcHkKi3rQEM5jkQcZr0MXXSJTaayLxS3MWYTBIkzPDrg==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.12" + "@swc/types": "^0.1.17" }, "engines": { "node": ">=10" @@ -2896,16 +3346,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.26", - "@swc/core-darwin-x64": "1.7.26", - "@swc/core-linux-arm-gnueabihf": "1.7.26", - "@swc/core-linux-arm64-gnu": "1.7.26", - "@swc/core-linux-arm64-musl": "1.7.26", - "@swc/core-linux-x64-gnu": "1.7.26", - "@swc/core-linux-x64-musl": "1.7.26", - "@swc/core-win32-arm64-msvc": "1.7.26", - "@swc/core-win32-ia32-msvc": "1.7.26", - "@swc/core-win32-x64-msvc": "1.7.26" + "@swc/core-darwin-arm64": "1.10.7", + "@swc/core-darwin-x64": "1.10.7", + "@swc/core-linux-arm-gnueabihf": "1.10.7", + "@swc/core-linux-arm64-gnu": "1.10.7", + "@swc/core-linux-arm64-musl": "1.10.7", + "@swc/core-linux-x64-gnu": "1.10.7", + "@swc/core-linux-x64-musl": "1.10.7", + "@swc/core-win32-arm64-msvc": "1.10.7", + "@swc/core-win32-ia32-msvc": "1.10.7", + "@swc/core-win32-x64-msvc": "1.10.7" }, "peerDependencies": { "@swc/helpers": "*" @@ -2917,13 +3367,14 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz", - "integrity": "sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.7.tgz", + "integrity": "sha512-SI0OFg987P6hcyT0Dbng3YRISPS9uhLX1dzW4qRrfqQdb0i75lPJ2YWe9CN47HBazrIA5COuTzrD2Dc0TcVsSQ==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" @@ -2933,13 +3384,14 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz", - "integrity": "sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.7.tgz", + "integrity": "sha512-RFIAmWVicD/l3RzxgHW0R/G1ya/6nyMspE2cAeDcTbjHi0I5qgdhBWd6ieXOaqwEwiCd0Mot1g2VZrLGoBLsjQ==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" @@ -2949,13 +3401,14 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz", - "integrity": "sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.7.tgz", + "integrity": "sha512-QP8vz7yELWfop5mM5foN6KkLylVO7ZUgWSF2cA0owwIaziactB2hCPZY5QU690coJouk9KmdFsPWDnaCFUP8tg==", "cpu": [ "arm" ], "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -2965,13 +3418,14 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz", - "integrity": "sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.7.tgz", + "integrity": "sha512-NgUDBGQcOeLNR+EOpmUvSDIP/F7i/OVOKxst4wOvT5FTxhnkWrW+StJGKj+DcUVSK5eWOYboSXr1y+Hlywwokw==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" @@ -2981,13 +3435,14 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz", - "integrity": "sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.7.tgz", + "integrity": "sha512-gp5Un3EbeSThBIh6oac5ZArV/CsSmTKj5jNuuUAuEsML3VF9vqPO+25VuxCvsRf/z3py+xOWRaN2HY/rjMeZog==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" @@ -2997,13 +3452,14 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz", - "integrity": "sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.7.tgz", + "integrity": "sha512-k/OxLLMl/edYqbZyUNg6/bqEHTXJT15l9WGqsl/2QaIGwWGvles8YjruQYQ9d4h/thSXLT9gd8bExU2D0N+bUA==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" @@ -3013,13 +3469,14 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz", - "integrity": "sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.7.tgz", + "integrity": "sha512-XeDoURdWt/ybYmXLCEE8aSiTOzEn0o3Dx5l9hgt0IZEmTts7HgHHVeRgzGXbR4yDo0MfRuX5nE1dYpTmCz0uyA==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" @@ -3029,13 +3486,14 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz", - "integrity": "sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.7.tgz", + "integrity": "sha512-nYAbi/uLS+CU0wFtBx8TquJw2uIMKBnl04LBmiVoFrsIhqSl+0MklaA9FVMGA35NcxSJfcm92Prl2W2LfSnTqQ==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" @@ -3045,13 +3503,14 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz", - "integrity": "sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.7.tgz", + "integrity": "sha512-+aGAbsDsIxeLxw0IzyQLtvtAcI1ctlXVvVcXZMNXIXtTURM876yNrufRo4ngoXB3jnb1MLjIIjgXfFs/eZTUSw==", "cpu": [ "ia32" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" @@ -3061,13 +3520,14 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz", - "integrity": "sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.7.tgz", + "integrity": "sha512-TBf4clpDBjF/UUnkKrT0/th76/zwvudk5wwobiTFqDywMApHip5O0VpBgZ+4raY2TM8k5+ujoy7bfHb22zu17Q==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" @@ -3080,13 +3540,15 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@swc/types": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.12.tgz", - "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.17.tgz", + "integrity": "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" } @@ -3095,6 +3557,7 @@ "version": "8.19.4", "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.19.4.tgz", "integrity": "sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==", + "license": "MIT", "dependencies": { "remove-accents": "0.5.0" }, @@ -3110,6 +3573,7 @@ "version": "8.20.5", "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz", "integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==", + "license": "MIT", "dependencies": { "@tanstack/table-core": "8.20.5" }, @@ -3129,6 +3593,7 @@ "version": "3.10.6", "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.10.6.tgz", "integrity": "sha512-xaSy6uUxB92O8mngHZ6CvbhGuqxQ5lIZWCBy+FjhrbHmOwc6BnOnKkYm2FsB1/BpKw/+FVctlMbEtI+F6I1aJg==", + "license": "MIT", "dependencies": { "@tanstack/virtual-core": "3.10.6" }, @@ -3145,6 +3610,7 @@ "version": "8.20.5", "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz", "integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -3157,6 +3623,7 @@ "version": "3.10.6", "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.10.6.tgz", "integrity": "sha512-1giLc4dzgEKLMx5pgKjL6HlG5fjZMgCjzlKAlpr7yoUtetVPELgER1NtephAI910nMwfPTHNyWKSFmJdHkz2Cw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -3167,6 +3634,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", @@ -3182,87 +3650,12 @@ "node": ">=18" } }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", "dev": true, + "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", @@ -3278,26 +3671,12 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@testing-library/jest-dom/node_modules/chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3306,56 +3685,19 @@ "node": ">=8" } }, - "node_modules/@testing-library/jest-dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true - }, - "node_modules/@testing-library/jest-dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/@testing-library/react": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -3383,6 +3725,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12", "npm": ">=6" @@ -3395,68 +3738,74 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/@total-typescript/ts-reset/-/ts-reset-0.6.1.tgz", "integrity": "sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@turf/area": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz", - "integrity": "sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.2.0.tgz", + "integrity": "sha512-zuTTdQ4eoTI9nSSjerIy4QwgvxqwJVciQJ8tOPuMHbXJ9N/dNjI7bU8tasjhxas/Cx3NE9NxVHtNpYHL0FSzoA==", + "license": "MIT", "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/bbox": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz", - "integrity": "sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.2.0.tgz", + "integrity": "sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==", + "license": "MIT", "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/centroid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.1.0.tgz", - "integrity": "sha512-1Y1b2l+ZB1CZ+ITjUCsGqC4/tSjwm/R4OUfDztVqyyCq/VvezkLmTNqvXTGXgfP0GXkpv68iCfxF5M7QdM5pJQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.2.0.tgz", + "integrity": "sha512-yJqDSw25T7P48au5KjvYqbDVZ7qVnipziVfZ9aSo7P2/jTE7d4BP21w0/XLi3T/9bry/t9PR1GDDDQljN4KfDw==", + "license": "MIT", "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/helpers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", - "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.2.0.tgz", + "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", + "license": "MIT", "dependencies": { "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/meta": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz", - "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.2.0.tgz", + "integrity": "sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==", + "license": "MIT", "dependencies": { - "@turf/helpers": "^7.1.0", + "@turf/helpers": "^7.2.0", "@types/geojson": "^7946.0.10" }, "funding": { @@ -3467,13 +3816,15 @@ "version": "0.0.52", "resolved": "https://registry.npmjs.org/@types/ace/-/ace-0.0.52.tgz", "integrity": "sha512-YPF9S7fzpuyrxru+sG/rrTpZkC6gpHBPF14W3x70kqVOD+ks6jkYLapk4yceh36xej7K4HYxcyz9ZDQ2lTvwgQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@types/d3": { @@ -3481,6 +3832,7 @@ "resolved": "https://registry.npmjs.org/@types/d3/-/d3-5.16.0.tgz", "integrity": "sha512-BPe6m763fJet428zPK3/fLBzgGlh204kEEisUcZGsUqgQHh0V+fOHhuGV3pyJtT2QLe+E0y5oqxNYix32OgmHA==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-array": "^1", "@types/d3-axis": "^1", @@ -3519,13 +3871,15 @@ "version": "1.2.12", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.12.tgz", "integrity": "sha512-zIq9wCg/JO7MGC6vq3HRDaVYkqgSPIDjpo3JhAQxl7PHYVPA5D9SMiBfjW/ZoAvPd2a+rkovqBg0nS0QOChsJQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-axis": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-1.0.19.tgz", "integrity": "sha512-rXxE2jJYv6kar/6YWS8rM0weY+jjvnJvBxHKrIUqt3Yzomrfbf5tncpKG6jq6Aaw6TZyBcb1bxEWc0zGzcmbiw==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-selection": "^1" } @@ -3535,6 +3889,7 @@ "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-1.1.8.tgz", "integrity": "sha512-tPVjYAjJt02fgazF9yiX/309sj6qhIiIopLuHhP4FFFq9VKqu9NQBeCK3ger0RHVZGs9RKaSBUWyPUzii5biGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-selection": "^1" } @@ -3543,25 +3898,29 @@ "version": "1.0.14", "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-1.0.14.tgz", "integrity": "sha512-W9rCIbSAhwtmydW5iGg9dwTQIi3SGBOh68/T3ke3PyOgejuSLozmtAMaWNViGaGJCeuM4aFJHTUHQvMedl4ugA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-collection": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@types/d3-collection/-/d3-collection-1.0.13.tgz", "integrity": "sha512-v0Rgw3IZebRyamcwVmtTDCZ8OmQcj4siaYjNc7wGMZT7PmdSHawGsCOQMxyLvZ7lWjfohYLK0oXtilMOMgfY8A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-color": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.4.5.tgz", "integrity": "sha512-5sNP3DmtSnSozxcjqmzQKsDOuVJXZkceo1KJScDc1982kk/TS9mTPc6lpli1gTu1MIBF1YWutpHpjucNWcIj5g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-contour": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-1.3.6.tgz", "integrity": "sha512-RM/QHCx8j1ovj/p4cWCM3b48EIas6TTmfG+LR2Ud8npTqgrWTjMNCpHtoj47Qa3dJsifONXGu54VuFkXWL2mIg==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-array": "^1", "@types/geojson": "*" @@ -3571,13 +3930,15 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-1.0.12.tgz", "integrity": "sha512-vrhleoVNhGJGx7GQZ4207lYGyMbW/yj/iJTSvLKyfAp8nXFF+19dnMpPN/nEVs6fudIsQc7ZelBFUMe3aJDmKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-drag": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-1.2.8.tgz", "integrity": "sha512-QM6H8E6r9/51BcE4NEluQ0f9dTECCTDEALJSQIWn183+Mtz/6KvEjOxW8VzKYSnhhL+qMljMKKA1WOUUf/4Qhw==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-selection": "^1" } @@ -3586,19 +3947,22 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-ease": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-1.0.13.tgz", "integrity": "sha512-VAA4H8YNaNN0+UNIlpkwkLOj7xL5EGdyiQpdlAvOIRHckjGFCLK8eMoUd4+IMNEhQgweq0Yk/Dfzr70xhUo6hA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-fetch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-dsv": "*" } @@ -3607,19 +3971,22 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.7.tgz", "integrity": "sha512-zySqZfnxn67RVEGWzpD9dQA0AbNIp4Rj0qGvAuUdUNfGLrwuGCbEGAGze5hEdNaHJKQT2gTqr6j+qAzncm11ew==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-format": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.4.5.tgz", "integrity": "sha512-mLxrC1MSWupOSncXN/HOlWUAAIffAEBaI4+PKy2uMPsKe4FNZlk7qrbTjmzJXITQQqBHivaks4Td18azgqnotA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-geo": { "version": "1.12.7", "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-1.12.7.tgz", "integrity": "sha512-QetZrWWjuMfCe0BHLjD+dOThlgk7YGZ2gj+yhFAbDN5TularNBEQiBs5/CIgX0+IBDjt7/fbkDd5V70J1LjjKA==", "dev": true, + "license": "MIT", "dependencies": { "@types/geojson": "*" } @@ -3628,13 +3995,15 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.11.tgz", "integrity": "sha512-lnQiU7jV+Gyk9oQYk0GGYccuexmQPTp08E0+4BidgFdiJivjEvf+esPSdZqCZ2C7UwTWejWpqetVaU8A+eX3FA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-color": "*" } @@ -3643,31 +4012,36 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.11.tgz", "integrity": "sha512-4pQMp8ldf7UaB/gR8Fvvy69psNHkTpD/pVw3vmEi8iZAB9EPMBruB1JvHO4BIq9QkUUd2lV1F5YXpMNj7JPBpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-polygon": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-1.0.10.tgz", "integrity": "sha512-+hbHsFdCMs23vk9p/SpvIkHkCpl0vxkP2qWR2vEk0wRi0BXODWgB/6aHnfrz/BeQnk20XzZiQJIZ+11TGxuYMQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-quadtree": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-1.0.13.tgz", "integrity": "sha512-BAQD6gTHnXqmI7JRhXwM2pEYJJF27AT1f6zCC192BKAUhigzd5HZjdje5ufRXmYcUM/fr2IJ9KqVMeXaljmmOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-random": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-1.1.5.tgz", "integrity": "sha512-gB5CR+7xYMj56pt5zmSyDBjTNMEy96PdfUb2qBaAT9bmPcf4P/YHfhhTI5y8JoiqaSRLJY+3mqtaE9loBgB6Ng==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-scale": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-time": "*" } @@ -3676,19 +4050,22 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.5.4.tgz", "integrity": "sha512-HwLVEm8laYTNOR9Kc9745XDKgRa69VIIChNkSKJgrJOsDLI9QSiFSH2Bi4wMbGrvFs+X64azev7NfBPq+VOFVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-selection": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.6.tgz", - "integrity": "sha512-0MhJ/LzJe6/vQVxiYJnvNq5CD/MF6Qy0dLp4BEQ6Dz8oOaB0EMXfx1GGeBFSW+3VzgjaUrxK6uECDQj9VLa/Mg==", - "dev": true + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.7.tgz", + "integrity": "sha512-aLaTOjdOJEFPhij59NdNwppvpHBheZFlLbcb7cIZZYLC0he9Wmdd/u4+1NZxlr7ncK+mq1PLmowMPw1GONrIQg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-shape": { "version": "1.3.12", "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.12.tgz", "integrity": "sha512-8oMzcd4+poSLGgV0R1Q1rOlx/xdmozS4Xab7np0eamFFUYq71AU9pOCJEFnkXW2aI/oXdVYJzw6pssbSut7Z9Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-path": "^1" } @@ -3697,25 +4074,29 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.1.4.tgz", "integrity": "sha512-JIvy2HjRInE+TXOmIGN5LCmeO0hkFZx5f9FZ7kiN+D+YTcc8pptsiLiuHsvwxwC7VVKmJ2ExHUgNlAiV7vQM9g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-time-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-timer": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-1.0.12.tgz", "integrity": "sha512-Tv9tkA4y3UvGQnrHyYAQhf5x/297FuYwotS4UW2TpwLblvRahbyL8r9HFYTJLPfPRqS63hwlqRItjKGmKtJxNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-transition": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", - "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -3724,33 +4105,26 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.12.tgz", "integrity": "sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/d3-zoom": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "dev": true, + "license": "MIT", "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, - "node_modules/@types/date-fns": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/date-fns/-/date-fns-2.6.0.tgz", - "integrity": "sha512-9DSw2ZRzV0Tmpa6PHHJbMcZn79HHus+BBBohcOaDzkK/G3zMjDUDYjJIWBFLbkh+1+/IOS0A59BpQfdr37hASg==", - "deprecated": "This is a stub types definition for date-fns (https://github.com/date-fns/date-fns). date-fns provides its own type definitions, so you don't need @types/date-fns installed!", - "dev": true, - "dependencies": { - "date-fns": "*" - } - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/ms": "*" } @@ -3760,6 +4134,7 @@ "resolved": "https://registry.npmjs.org/@types/draft-convert/-/draft-convert-2.1.8.tgz", "integrity": "sha512-gzHXLnOhDqdDv3ieMCZjqbmP992MBBn1u9HrhrCQ4+sip2pFz7d+fXL4GqaBgFjM/A5+iSNRhkr4ZP4tMR3jWw==", "dev": true, + "license": "MIT", "dependencies": { "@types/draft-js": "*", "@types/react": "*" @@ -3770,6 +4145,7 @@ "resolved": "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.18.tgz", "integrity": "sha512-lP6yJ+EKv5tcG1dflWgDKeezdwBa8wJ7KkiNrrHqXuXhl/VGes1SKjEfKHDZqOz19KQbrAhFvNhDPWwnQXYZGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*", "immutable": "~3.7.4" @@ -3780,24 +4156,50 @@ "resolved": "https://registry.npmjs.org/@types/draftjs-to-html/-/draftjs-to-html-0.8.4.tgz", "integrity": "sha512-5FZcjFoJL57N/IttLCTCNI0krX+181oCl5hf76u3TqPkqBAphHrJAO9ReYesx9138kcObaYmpnWC2Yrqxoqd2Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/draft-js": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" }, "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" + "version": "7946.0.15", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", + "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==", + "license": "MIT" }, "node_modules/@types/geojson-vt": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz", "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", + "license": "MIT", "dependencies": { "@types/geojson": "*" } @@ -3806,14 +4208,16 @@ "version": "2.3.10", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", "dependencies": { "@types/unist": "^2" } }, "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", + "license": "MIT", "dependencies": { "@types/react": "*", "hoist-non-react-statics": "^3.3.0" @@ -3823,18 +4227,21 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" }, "node_modules/@types/jsoneditor": { "version": "9.9.5", "resolved": "https://registry.npmjs.org/@types/jsoneditor/-/jsoneditor-9.9.5.tgz", "integrity": "sha512-+Wex7QCirPcG90WA8/CmvDO21KUjz63/G7Yk52Yx/NhWHw5DyeET/L+wjZHAeNeNCCnMOTEtVX5gc3F4UXwXMQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/ace": "*", "ajv": "^6.12.0" @@ -3844,17 +4251,20 @@ "version": "4.17.9", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.9.tgz", "integrity": "sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mapbox__point-geometry": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz", - "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==" + "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==", + "license": "MIT" }, "node_modules/@types/mapbox__vector-tile": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz", "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", + "license": "MIT", "dependencies": { "@types/geojson": "*", "@types/mapbox__point-geometry": "*", @@ -3865,12 +4275,14 @@ "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "22.7.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.3.tgz", "integrity": "sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==", + "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -3878,36 +4290,42 @@ "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" }, "node_modules/@types/pbf": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz", - "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==" + "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==", + "license": "MIT" }, "node_modules/@types/pikaday": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/@types/pikaday/-/pikaday-1.7.4.tgz", "integrity": "sha512-0KsHVyw5pTG829nqG4IRu7m+BFQlFEBdbE/1i3S5182HeKUKv1uEW0gyEmkJVp5i4IV+9pyh23O83+KpRkSQbw==", + "license": "MIT", "dependencies": { "moment": ">=2.14.0" } }, "node_modules/@types/plotly.js": { - "version": "2.33.4", - "resolved": "https://registry.npmjs.org/@types/plotly.js/-/plotly.js-2.33.4.tgz", - "integrity": "sha512-BzAbsJTiUQyALkkYx1D31YZ9YvcU2ag3LlE/iePMo19eDPvM30cbM2EFNIcu31n39EhXj/9G7800XLA8/rfApA==", - "dev": true + "version": "2.35.2", + "resolved": "https://registry.npmjs.org/@types/plotly.js/-/plotly.js-2.35.2.tgz", + "integrity": "sha512-tn0Kp7F6VWiu96jknCvR/PcdIGIATeIK+Z5WXH3bEvG6CRwUNfhy34yBhfPYmTea7mMQxXvTZKGMm6/Y4wxESg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" }, "node_modules/@types/ramda": { "version": "0.30.2", "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.2.tgz", "integrity": "sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==", + "license": "MIT", "dependencies": { "types-ramda": "^0.30.1" } @@ -3916,6 +4334,7 @@ "version": "18.3.9", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.9.tgz", "integrity": "sha512-+BpAVyTpJkNWWSSnaLBk6ePpHLOGJKnEQNbINNovPWzvEUyAe3e+/d494QdEh71RekM/qV7lw6jzf1HGrJyAtQ==", + "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -3926,6 +4345,7 @@ "resolved": "https://registry.npmjs.org/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.8.tgz", "integrity": "sha512-E3TyFsro9pQuK4r8S/OL6G99eq7p8v29sX0PM7oT8Z+PJfZvSQTx4zTQbUJ+QZXioAF0e7TGBEcA1XhYhCweyQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } @@ -3935,6 +4355,7 @@ "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.12.tgz", "integrity": "sha512-pr3uKE3lSvf7GFo1Rn2K3QktiZQFFrSgSGJ/3iMvSOYWt2pPAJ97rVdVfhWxYJZ8prAEXzoP2XX//3qGSQgu7Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*", "@types/reactcss": "*" @@ -3945,6 +4366,7 @@ "resolved": "https://registry.npmjs.org/@types/react-d3-graph/-/react-d3-graph-2.6.5.tgz", "integrity": "sha512-bao1+Zu1qhuFyE7K/Nk9HdmDlz39YdDB2z6TpKhujip4IjoIfE3smL2cIe4pFirL772rVxaJdAARhwok1cB/sA==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } @@ -3954,6 +4376,7 @@ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "devOptional": true, + "license": "MIT", "dependencies": { "@types/react": "*" } @@ -3963,6 +4386,7 @@ "resolved": "https://registry.npmjs.org/@types/react-plotly.js/-/react-plotly.js-2.6.3.tgz", "integrity": "sha512-HBQwyGuu/dGXDsWhnQrhH+xcJSsHvjkwfSRjP+YpOsCCWryIuXF78ZCBjpfgO3sCc0Jo8sYp4NOGtqT7Cn3epQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/plotly.js": "*", "@types/react": "*" @@ -3972,6 +4396,7 @@ "version": "7.1.34", "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", + "license": "MIT", "dependencies": { "@types/hoist-non-react-statics": "^3.3.0", "@types/react": "*", @@ -3984,15 +4409,17 @@ "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz", "integrity": "sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-transition-group": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", - "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", - "dependencies": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { "@types/react": "*" } }, @@ -4001,6 +4428,7 @@ "resolved": "https://registry.npmjs.org/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.4.tgz", "integrity": "sha512-nhYwlFiYa8M3S+O2T9QO/e1FQUYMr/wJENUdf/O0dhRi1RS/93rjrYQFYdbUqtdFySuhrtnEDX29P6eKOttY+A==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } @@ -4010,29 +4438,26 @@ "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.8.tgz", "integrity": "sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } }, "node_modules/@types/reactcss": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.12.tgz", - "integrity": "sha512-BrXUQ86/wbbFiZv8h/Q1/Q1XOsaHneYmCb/tHe9+M8XBAAUc2EHfdY0DY22ZZjVSaXr5ix7j+zsqO2eGZub8lQ==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.13.tgz", + "integrity": "sha512-gi3S+aUi6kpkF5vdhUsnkwbiSEIU/BEJyD7kBy2SudWBUuKmJk8AQKE0OVcQQeEy40Azh0lV6uynxlikYIJuwg==", "dev": true, - "dependencies": { + "license": "MIT", + "peerDependencies": { "@types/react": "*" } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/supercluster": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz", "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", + "license": "MIT", "dependencies": { "@types/geojson": "*" } @@ -4042,128 +4467,104 @@ "resolved": "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.18.3.tgz", "integrity": "sha512-Mo/R7IjDVwtiFPs84pWvh5pI9iyNGBjmfielxqbOh2Jv+8WVSDVe8Nu25kb5BOuV2xmGS3o33jr6nwDJMBcX+Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } }, - "node_modules/@types/testing-library__jest-dom": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-6.0.0.tgz", - "integrity": "sha512-bnreXCgus6IIadyHNlN/oI5FfX4dWgvGhOPvpr7zzCYDGAPIfvyIoAozMBINmhmsVuqV0cncejF2y5KC7ScqOg==", - "deprecated": "This is a stub types definition. @testing-library/jest-dom provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "@testing-library/jest-dom": "*" - } - }, "node_modules/@types/tinycolor2": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz", "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/unist": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" }, "node_modules/@types/use-sync-external-store": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "license": "MIT" }, "node_modules/@types/uuid": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.2.0.tgz", - "integrity": "sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.1.tgz", + "integrity": "sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/type-utils": "7.2.0", - "@typescript-eslint/utils": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/type-utils": "8.19.1", + "@typescript-eslint/utils": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^2.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", - "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.1.tgz", + "integrity": "sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", - "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", + "integrity": "sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0" + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4171,39 +4572,37 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz", - "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.1.tgz", + "integrity": "sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/utils": "7.2.0", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/utils": "8.19.1", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^2.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", - "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.1.tgz", + "integrity": "sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==", "dev": true, + "license": "MIT", "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -4211,46 +4610,30 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", - "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", + "integrity": "sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { @@ -4258,6 +4641,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4266,70 +4650,53 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz", - "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.1.tgz", + "integrity": "sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", - "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", + "integrity": "sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.2.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "8.19.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/@vitejs/plugin-react-swc": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.0.tgz", "integrity": "sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==", "dev": true, + "license": "MIT", "dependencies": { "@swc/core": "^1.5.7" }, @@ -4342,6 +4709,7 @@ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.1.tgz", "integrity": "sha512-md/A7A3c42oTT8JUHSqjP5uKTWJejzUW4jalpvs+rZ27gsURsMU8DEb+8Jf8C6Kj2gwfSHJqobDNBuoqlm0cFw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^0.2.3", @@ -4374,6 +4742,7 @@ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.1.tgz", "integrity": "sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/spy": "2.1.1", "@vitest/utils": "2.1.1", @@ -4389,6 +4758,7 @@ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.1.tgz", "integrity": "sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/spy": "^2.1.0-beta.1", "estree-walker": "^3.0.3", @@ -4416,6 +4786,7 @@ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.1.tgz", "integrity": "sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==", "dev": true, + "license": "MIT", "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -4428,6 +4799,7 @@ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.1.tgz", "integrity": "sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/utils": "2.1.1", "pathe": "^1.1.2" @@ -4441,6 +4813,7 @@ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.1.tgz", "integrity": "sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/pretty-format": "2.1.1", "magic-string": "^0.30.11", @@ -4455,6 +4828,7 @@ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.1.tgz", "integrity": "sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==", "dev": true, + "license": "MIT", "dependencies": { "tinyspy": "^3.0.0" }, @@ -4467,6 +4841,7 @@ "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-2.1.1.tgz", "integrity": "sha512-IIxo2LkQDA+1TZdPLYPclzsXukBWd5dX2CKpGqH8CCt8Wh0ZuDn4+vuQ9qlppEju6/igDGzjWF/zyorfsf+nHg==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/utils": "2.1.1", "fflate": "^0.8.2", @@ -4488,6 +4863,7 @@ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.1.tgz", "integrity": "sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/pretty-format": "2.1.1", "loupe": "^3.1.1", @@ -4498,182 +4874,203 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, "node_modules/@xobotyi/scrollbar-width": { "version": "1.9.5", "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz", - "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==" + "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==", + "license": "MIT" }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause", "peer": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0", "peer": true }, "node_modules/abs-svg-path": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", - "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==" + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==", + "license": "MIT" }, "node_modules/ace-builds": { - "version": "1.36.2", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.36.2.tgz", - "integrity": "sha512-eqqfbGwx/GKjM/EnFu4QtQ+d2NNBu84MGgxoG8R5iyFpcVeQ4p9YlTL+ZzdEJqhdkASqoqOxCSNNGyB6lvMm+A==" + "version": "1.37.4", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.37.4.tgz", + "integrity": "sha512-niaXM/b7Nm6l/GKpc/jtG0jjExBOkqRN1pZbyV/ngb3GrQQF5fCB2032n5qaaAr7hWSGbc+PGfZ3C0LsmYQptA==", + "license": "BSD-3-Clause" }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4681,32 +5078,22 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, + "license": "MIT", "engines": { "node": ">= 14" } @@ -4715,6 +5102,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4726,10 +5114,53 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", "peer": true, "peerDependencies": { "ajv": "^6.9.1" @@ -4738,38 +5169,47 @@ "node_modules/almost-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/almost-equal/-/almost-equal-1.1.0.tgz", - "integrity": "sha512-0V/PkoculFl5+0Lp47JoxUcO0xSxhIBvm+BxHdD/OgXNmdRpRHCFnKVuUoWyS9EzQP+otSGv0m9Lb4yVkQBn2A==" + "integrity": "sha512-0V/PkoculFl5+0Lp47JoxUcO0xSxhIBvm+BxHdD/OgXNmdRpRHCFnKVuUoWyS9EzQP+otSGv0m9Lb4yVkQBn2A==", + "license": "MIT" }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/apg-lite": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/apg-lite/-/apg-lite-1.0.4.tgz", - "integrity": "sha512-B32zCN3IdHIc99Vy7V9BaYTUzLeRA8YXYY1aQD1/5I2aqIrO0coi4t6hJPqMisidlBxhyME8UexkHt31SlR6Og==" + "integrity": "sha512-B32zCN3IdHIc99Vy7V9BaYTUzLeRA8YXYY1aQD1/5I2aqIrO0coi4t6hJPqMisidlBxhyME8UexkHt31SlR6Og==", + "license": "BSD-2-Clause" }, "node_modules/are-docs-informative": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -4777,38 +5217,34 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-bounds": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-bounds/-/array-bounds-1.0.1.tgz", - "integrity": "sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==" + "integrity": "sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==", + "license": "MIT" }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -4821,6 +5257,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4830,6 +5267,7 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4849,6 +5287,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/array-normalize/-/array-normalize-1.1.4.tgz", "integrity": "sha512-fCp0wKFLjvSPmCn4F5Tiw4M3lpMZoHlCjfcs7nNzuj3vqQQ1/a8cgB9DXcpDSn18c+coLnaW7rqfcYCvKbyJXg==", + "license": "MIT", "dependencies": { "array-bounds": "^1.0.0" } @@ -4856,27 +5295,21 @@ "node_modules/array-range": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-range/-/array-range-1.0.1.tgz", - "integrity": "sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==" + "integrity": "sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==", + "license": "MIT" }, "node_modules/array-rearrange": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/array-rearrange/-/array-rearrange-2.2.2.tgz", - "integrity": "sha512-UfobP5N12Qm4Qu4fwLDIi2v6+wZsSf6snYSxAMeKhrh37YGnNWZPRmVEKc/2wfms53TLQnzfpG8wCx2Y/6NG1w==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } + "integrity": "sha512-UfobP5N12Qm4Qu4fwLDIi2v6+wZsSf6snYSxAMeKhrh37YGnNWZPRmVEKc/2wfms53TLQnzfpG8wCx2Y/6NG1w==", + "license": "MIT" }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4893,15 +5326,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4911,15 +5345,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4933,6 +5368,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4945,19 +5381,19 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -4969,34 +5405,30 @@ "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", + "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -5005,6 +5437,7 @@ "version": "3.16.2", "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", "integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" } @@ -5014,6 +5447,7 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -5028,6 +5462,7 @@ "version": "1.7.7", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -5039,6 +5474,7 @@ "resolved": "https://registry.npmjs.org/babel-merge/-/babel-merge-3.0.0.tgz", "integrity": "sha512-eBOBtHnzt9xvnjpYNI5HmaPp/b2vMveE5XggzqHnQeHJ8mFIBrBv6WZEVIj5jJ2uwTItkqKo9gWzEEcBxEq0yw==", "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", "dependencies": { "deepmerge": "^2.2.1", "object.omit": "^3.0.0" @@ -5051,6 +5487,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -5064,17 +5501,20 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/base16": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", - "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==", + "license": "MIT" }, "node_modules/base64-arraybuffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -5096,12 +5536,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bignumber.js": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-8.1.1.tgz", "integrity": "sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ==", + "license": "MIT", "engines": { "node": "*" } @@ -5109,22 +5551,26 @@ "node_modules/binary-search-bounds": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz", - "integrity": "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==" + "integrity": "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==", + "license": "MIT" }, "node_modules/bit-twiddle": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz", - "integrity": "sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==" + "integrity": "sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==", + "license": "MIT" }, "node_modules/bitmap-sdf": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz", - "integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==" + "integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==", + "license": "MIT" }, "node_modules/bl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "license": "MIT", "dependencies": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" @@ -5134,6 +5580,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -5143,6 +5590,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -5151,9 +5599,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -5168,11 +5616,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -5181,72 +5630,64 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/bytewise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", - "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", - "dependencies": { - "bytewise-core": "^1.2.2", - "typewise": "^1.0.3" - } - }, - "node_modules/bytewise-core": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", - "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", - "dependencies": { - "typewise-core": "^1.2" - } + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=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==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "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" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -5259,14 +5700,15 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001664", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz", - "integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "funding": [ { "type": "opencollective", @@ -5280,12 +5722,14 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/canvas-fit": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/canvas-fit/-/canvas-fit-1.5.0.tgz", "integrity": "sha512-onIcjRpz69/Hx5bB5HGbYKUF2uC6QT6Gp+pfpGm3A7mPfcluSLV5v4Zu+oflDUwLdUw0rLIBhUbi0v8hM4FJQQ==", + "license": "MIT", "dependencies": { "element-size": "^1.1.1" } @@ -5293,13 +5737,15 @@ "node_modules/canvas-hypertxt": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/canvas-hypertxt/-/canvas-hypertxt-1.0.3.tgz", - "integrity": "sha512-+VsMpRr64jYgKq2IeFUNel3vCZH/IzS+iXSHxmUV3IUH5dXlC9xHz4AwtPZisDxZ5MWcuK0V+TXgPKFPiZnxzg==" + "integrity": "sha512-+VsMpRr64jYgKq2IeFUNel3vCZH/IzS+iXSHxmUV3IUH5dXlC9xHz4AwtPZisDxZ5MWcuK0V+TXgPKFPiZnxzg==", + "license": "MIT" }, "node_modules/chai": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", @@ -5312,30 +5758,27 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/character-entities": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5345,6 +5788,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5354,6 +5798,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5364,6 +5809,7 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 16" } @@ -5372,21 +5818,17 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz", "integrity": "sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "regexp-to-ast": "0.4.0" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "optional": true - }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", "peer": true, "engines": { "node": ">=6.0" @@ -5395,17 +5837,20 @@ "node_modules/clamp": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", - "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==" + "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==", + "license": "MIT" }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -5414,6 +5859,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/color-alpha/-/color-alpha-1.0.4.tgz", "integrity": "sha512-lr8/t5NPozTSqli+duAN+x+no/2WaKTeWvxhHGN+aXT6AJ8vPlzLa7UriyjWak0pSC2jHol9JgjBYnnHsGha9A==", + "license": "MIT", "dependencies": { "color-parse": "^1.3.8" } @@ -5422,35 +5868,44 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.3.tgz", "integrity": "sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==", + "license": "MIT", "dependencies": { "color-name": "^1.0.0" } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-id": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/color-id/-/color-id-1.1.0.tgz", "integrity": "sha512-2iRtAn6dC/6/G7bBIo0uupVrIne1NsQJvJxZOBCzQOfk7jRq97feaDZ3RdzuHakRXXnHGNwglto3pqtRx1sX0g==", + "license": "MIT", "dependencies": { "clamp": "^1.0.1" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/color-normalize": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/color-normalize/-/color-normalize-1.5.0.tgz", "integrity": "sha512-rUT/HDXMr6RFffrR53oX3HGWkDOP9goSAQGBkUaAYKjOE2JxozccdGyufageWDlInRAjm/jYPrf/Y38oa+7obw==", + "license": "MIT", "dependencies": { "clamp": "^1.0.1", "color-rgba": "^2.1.1", @@ -5461,6 +5916,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-2.0.0.tgz", "integrity": "sha512-g2Z+QnWsdHLppAbrpcFWo629kLOnOPtpxYV69GCqm92gqSgyXbzlfyN3MXs0412fPBkFmiuS+rXposgBgBa6Kg==", + "license": "MIT", "dependencies": { "color-name": "^1.0.0" } @@ -5469,6 +5925,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-2.1.1.tgz", "integrity": "sha512-VaX97wsqrMwLSOR6H7rU1Doa2zyVdmShabKrPEIFywLlHoibgD3QW9Dw6fSqM4+H/LfjprDNAUUW31qEQcGzNw==", + "license": "MIT", "dependencies": { "clamp": "^1.0.1", "color-parse": "^1.3.8", @@ -5479,6 +5936,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.3.tgz", "integrity": "sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==", + "license": "MIT", "dependencies": { "color-name": "^1.0.0" } @@ -5487,6 +5945,7 @@ "version": "1.16.0", "resolved": "https://registry.npmjs.org/color-space/-/color-space-1.16.0.tgz", "integrity": "sha512-A6WMiFzunQ8KEPFmj02OnnoUnqhmSaHaZ/0LVFcPTdlvm8+3aMJ5x1HRHy3bDHPkovkf4sS0f4wsVvwk71fKkg==", + "license": "MIT", "dependencies": { "hsluv": "^0.0.3", "mumath": "^3.3.4" @@ -5496,6 +5955,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5507,6 +5967,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5515,13 +5976,15 @@ "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, "node_modules/comment-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.0.0" } @@ -5530,7 +5993,8 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-stream": { "version": "1.6.2", @@ -5539,6 +6003,7 @@ "engines": [ "node >= 0.8" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -5549,39 +6014,35 @@ "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "engines": { - "node": ">= 0.6" - } + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" }, "node_modules/copy-to-clipboard": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "license": "MIT", "dependencies": { "toggle-selection": "^1.0.6" } }, "node_modules/core-js": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", - "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-pure": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz", - "integrity": "sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.40.0.tgz", + "integrity": "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -5590,12 +6051,14 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -5610,21 +6073,24 @@ "node_modules/country-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz", - "integrity": "sha512-iSPlClZP8vX7MC3/u6s3lrDuoQyhQukh5LyABJ3hvfzbQ3Yyayd4fp04zjLnfi267B/B2FkumcWWgrbban7sSA==" + "integrity": "sha512-iSPlClZP8vX7MC3/u6s3lrDuoQyhQukh5LyABJ3hvfzbQ3Yyayd4fp04zjLnfi267B/B2FkumcWWgrbban7sSA==", + "license": "MIT" }, "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", "dependencies": { - "node-fetch": "^2.6.12" + "node-fetch": "^2.7.0" } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5638,6 +6104,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "license": "MIT", "dependencies": { "tiny-invariant": "^1.0.6" } @@ -5646,6 +6113,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-font/-/css-font-1.2.0.tgz", "integrity": "sha512-V4U4Wps4dPDACJ4WpgofJ2RT5Yqwe1lEH6wlOOaIxMi0gTjdIijsc5FmxQlZ7ZZyKQkkutqqvULOp07l9c7ssA==", + "license": "MIT", "dependencies": { "css-font-size-keywords": "^1.0.0", "css-font-stretch-keywords": "^1.0.1", @@ -5661,32 +6129,38 @@ "node_modules/css-font-size-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz", - "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==" + "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==", + "license": "MIT" }, "node_modules/css-font-stretch-keywords": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz", - "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==" + "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==", + "license": "MIT" }, "node_modules/css-font-style-keywords": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz", - "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==" + "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==", + "license": "MIT" }, "node_modules/css-font-weight-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz", - "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==" + "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==", + "license": "MIT" }, "node_modules/css-global-keywords": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/css-global-keywords/-/css-global-keywords-1.0.1.tgz", - "integrity": "sha512-X1xgQhkZ9n94WDwntqst5D/FKkmiU0GlJSFZSV3kLvyJ1WC5VeyoXDOuleUD+SIuH9C7W05is++0Woh0CGfKjQ==" + "integrity": "sha512-X1xgQhkZ9n94WDwntqst5D/FKkmiU0GlJSFZSV3kLvyJ1WC5VeyoXDOuleUD+SIuH9C7W05is++0Woh0CGfKjQ==", + "license": "MIT" }, "node_modules/css-in-js-utils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "license": "MIT", "dependencies": { "hyphenate-style-name": "^1.0.3" } @@ -5695,6 +6169,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -5729,6 +6204,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5739,12 +6215,14 @@ "node_modules/css-system-font-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz", - "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==" + "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==", + "license": "MIT" }, "node_modules/css-tree": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -5757,6 +6235,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -5764,17 +6243,20 @@ "node_modules/css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "license": "MIT" }, "node_modules/csscolorparser": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", - "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==", + "license": "MIT" }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5783,26 +6265,37 @@ } }, "node_modules/cssstyle": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", - "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz", + "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==", "dev": true, + "license": "MIT", "dependencies": { - "rrweb-cssom": "^0.7.1" + "@asamuzakjp/css-color": "^2.8.2", + "rrweb-cssom": "^0.8.0" }, "engines": { "node": ">=18" } }, + "node_modules/cssstyle/node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/d": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "license": "ISC", "dependencies": { "es5-ext": "^0.10.64", "type": "^2.7.2" @@ -5815,6 +6308,7 @@ "version": "5.16.0", "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1", "d3-axis": "1", @@ -5852,17 +6346,20 @@ "node_modules/d3-array": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", - "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==", + "license": "BSD-3-Clause" }, "node_modules/d3-axis": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", - "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==", + "license": "BSD-3-Clause" }, "node_modules/d3-brush": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-drag": "1", @@ -5875,6 +6372,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1", "d3-path": "1" @@ -5883,17 +6381,20 @@ "node_modules/d3-collection": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", - "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==", + "license": "BSD-3-Clause" }, "node_modules/d3-color": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==", + "license": "BSD-3-Clause" }, "node_modules/d3-contour": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^1.1.1" } @@ -5901,12 +6402,14 @@ "node_modules/d3-dispatch": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==", + "license": "BSD-3-Clause" }, "node_modules/d3-drag": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-selection": "1" @@ -5916,6 +6419,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", + "license": "BSD-3-Clause", "dependencies": { "commander": "2", "iconv-lite": "0.4", @@ -5936,12 +6440,14 @@ "node_modules/d3-ease": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==", + "license": "BSD-3-Clause" }, "node_modules/d3-fetch": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", + "license": "BSD-3-Clause", "dependencies": { "d3-dsv": "1" } @@ -5950,6 +6456,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "license": "BSD-3-Clause", "dependencies": { "d3-collection": "1", "d3-dispatch": "1", @@ -5960,12 +6467,14 @@ "node_modules/d3-format": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==", + "license": "BSD-3-Clause" }, "node_modules/d3-geo": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1" } @@ -5974,6 +6483,7 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-2.9.0.tgz", "integrity": "sha512-ZULvK/zBn87of5rWAfFMc9mJOipeSo57O+BBitsKIXmU4rTVAnX1kSsJkE0R+TxY8pGNoM1nbyRRE7GYHhdOEQ==", + "license": "BSD-3-Clause", "dependencies": { "commander": "2", "d3-array": "1", @@ -5991,12 +6501,14 @@ "node_modules/d3-hierarchy": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==", + "license": "BSD-3-Clause" }, "node_modules/d3-interpolate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1" } @@ -6004,27 +6516,32 @@ "node_modules/d3-path": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" }, "node_modules/d3-polygon": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", - "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==", + "license": "BSD-3-Clause" }, "node_modules/d3-quadtree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", - "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==", + "license": "BSD-3-Clause" }, "node_modules/d3-random": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", - "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==", + "license": "BSD-3-Clause" }, "node_modules/d3-scale": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^1.2.0", "d3-collection": "1", @@ -6038,6 +6555,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1", "d3-interpolate": "1" @@ -6046,12 +6564,14 @@ "node_modules/d3-selection": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==", + "license": "BSD-3-Clause" }, "node_modules/d3-shape": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" } @@ -6059,12 +6579,14 @@ "node_modules/d3-time": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", + "license": "BSD-3-Clause" }, "node_modules/d3-time-format": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-time": "1" } @@ -6072,12 +6594,14 @@ "node_modules/d3-timer": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==", + "license": "BSD-3-Clause" }, "node_modules/d3-transition": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1", "d3-dispatch": "1", @@ -6090,12 +6614,14 @@ "node_modules/d3-voronoi": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", - "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==", + "license": "BSD-3-Clause" }, "node_modules/d3-zoom": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-drag": "1", @@ -6109,6 +6635,7 @@ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" @@ -6118,14 +6645,15 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6135,29 +6663,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -6172,6 +6702,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -6181,6 +6712,7 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -6197,28 +6729,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "optional": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true, + "license": "MIT" }, "node_modules/deep-eql": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6227,6 +6746,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -6235,12 +6755,14 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6250,6 +6772,7 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -6267,6 +6790,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -6283,6 +6807,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6291,6 +6816,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -6300,6 +6826,7 @@ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6307,39 +6834,20 @@ "node_modules/detect-kerning": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-kerning/-/detect-kerning-2.1.2.tgz", - "integrity": "sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw==" - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "integrity": "sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw==", + "license": "MIT" }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, "node_modules/dom-accessibility-api": { @@ -6347,26 +6855,30 @@ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, "node_modules/dompurify": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz", - "integrity": "sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==" + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.8.tgz", + "integrity": "sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==", + "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/draft-convert": { "version": "2.1.13", "resolved": "https://registry.npmjs.org/draft-convert/-/draft-convert-2.1.13.tgz", "integrity": "sha512-/h/n4JCfyO8aWby7wKBkccHdsuVbbDyHWXi/B3Zf2pN++lN1lDOIVt5ulXCcbH2Y5YJEFzMJw/YGfN+R0axxxg==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.5.5", "immutable": "~3.7.4", @@ -6382,6 +6894,7 @@ "version": "0.11.7", "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz", "integrity": "sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg==", + "license": "MIT", "dependencies": { "fbjs": "^2.0.0", "immutable": "~3.7.4", @@ -6395,12 +6908,14 @@ "node_modules/draftjs-to-html": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/draftjs-to-html/-/draftjs-to-html-0.9.1.tgz", - "integrity": "sha512-fFstE6+IayaVFBEvaFt/wN8vdj8FsTRzij7dy7LI9QIwf5LgfHFi9zSpvCg+feJ2tbYVqHxUkjcibwpsTpgFVQ==" + "integrity": "sha512-fFstE6+IayaVFBEvaFt/wN8vdj8FsTRzij7dy7LI9QIwf5LgfHFi9zSpvCg+feJ2tbYVqHxUkjcibwpsTpgFVQ==", + "license": "MIT" }, "node_modules/drange": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -6409,6 +6924,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/draw-svg-path/-/draw-svg-path-1.0.0.tgz", "integrity": "sha512-P8j3IHxcgRMcY6sDzr0QvJDLzBnJJqpTG33UZ2Pvp8rw0apCHhJCWqYprqrXjrgHnJ6tuhP1iTJSAodPDHxwkg==", + "license": "MIT", "dependencies": { "abs-svg-path": "~0.1.1", "normalize-svg-path": "~0.1.0" @@ -6418,19 +6934,37 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz", "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==", + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, + "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==", + "dev": true, + "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/dup": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dup/-/dup-1.0.0.tgz", - "integrity": "sha512-Bz5jxMMC0wgp23Zm15ip1x8IhYRqJvF3nFC0UInJUDkN1z4uNPk9jTnfCUJXbOGiQ1JbXLQsiV41Fb+HXcj5BA==" + "integrity": "sha512-Bz5jxMMC0wgp23Zm15ip1x8IhYRqJvF3nFC0UInJUDkN1z4uNPk9jTnfCUJXbOGiQ1JbXLQsiV41Fb+HXcj5BA==", + "license": "MIT" }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -6441,28 +6975,33 @@ "node_modules/earcut": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", + "license": "ISC" }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.29", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz", - "integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==" + "version": "1.5.80", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz", + "integrity": "sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==", + "license": "ISC" }, "node_modules/element-size": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/element-size/-/element-size-1.1.1.tgz", - "integrity": "sha512-eaN+GMOq/Q+BIWy0ybsgpcYImjGIdNLyjLFJU4XsLHXYQao5jCNb36GyN6C2qwmDDYSfIBmKpPpr4VnBdLCsPQ==" + "integrity": "sha512-eaN+GMOq/Q+BIWy0ybsgpcYImjGIdNLyjLFJU4XsLHXYQao5jCNb36GyN6C2qwmDDYSfIBmKpPpr4VnBdLCsPQ==", + "license": "MIT" }, "node_modules/elementary-circuits-directed-graph": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.3.1.tgz", "integrity": "sha512-ZEiB5qkn2adYmpXGnJKkxT8uJHlW/mxmBpmeqawEHzPxh9HkLD4/1mFYX5l0On+f6rcPIt8/EWlRU2Vo3fX6dQ==", + "license": "MIT", "dependencies": { "strongly-connected-components": "^1.0.1" } @@ -6471,20 +7010,23 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -6499,6 +7041,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -6510,6 +7053,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -6518,62 +7062,69 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -6583,13 +7134,11 @@ } }, "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==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -6599,45 +7148,51 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.1.tgz", + "integrity": "sha512-BPOBuyUF9QIVhuNLhbToCLHP6+0MHwZ7xLBkPPCZqK4JmpJgGnv10035STzzQwFpqdzNFMB3irvDI63IagvDwA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -6646,14 +7201,16 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -6664,19 +7221,21 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -6690,6 +7249,7 @@ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "hasInstallScript": true, + "license": "ISC", "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", @@ -6704,6 +7264,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "license": "MIT", "dependencies": { "d": "1", "es5-ext": "^0.10.35", @@ -6714,6 +7275,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "license": "ISC", "dependencies": { "d": "^1.0.2", "ext": "^1.7.0" @@ -6726,6 +7288,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "license": "ISC", "dependencies": { "d": "1", "es5-ext": "^0.10.46", @@ -6739,6 +7302,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -6775,6 +7339,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -6783,6 +7348,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -6794,6 +7360,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -6814,89 +7381,98 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.10.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", + "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", "dev": true, + "license": "MIT", "bin": { - "eslint-config-prettier": "bin/cli.js" + "eslint-config-prettier": "build/bin/cli.js" }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-jsdoc": { - "version": "48.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.10.0.tgz", - "integrity": "sha512-BEli0k8E0dzhJairAllwlkGnyYDZVKNn4WDmyKy+v6J5qGNuofjzxwNUi+55BOGmyO9mKBhqaidwGy+dxndn/Q==", + "version": "50.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.1.tgz", + "integrity": "sha512-UWyaYi6iURdSfdVVqvfOs2vdCVz0J40O/z/HTsv2sFjdjmdlUI/qlKLOTmwbPQ2tAfQnE5F9vqx+B+poF71DBQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@es-joy/jsdoccomment": "~0.46.0", + "@es-joy/jsdoccomment": "~0.49.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.3.5", + "debug": "^4.3.6", "escape-string-regexp": "^4.0.0", + "espree": "^10.1.0", "esquery": "^1.6.0", "parse-imports": "^2.1.1", "semver": "^7.6.3", @@ -6915,6 +7491,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6927,6 +7504,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.6.1.tgz", "integrity": "sha512-9aIz8q3OaMr1/uQmCGCWySjTs5nEXUJexNegz/8lluNcZbEl82Ag1Vyr1Hu3oIveRW1NbXDPs6nu4zu9mbrmWA==", "dev": true, + "license": "MIT", "dependencies": { "requireindex": "^1.2.0" } @@ -6936,6 +7514,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.9.1" @@ -6962,28 +7541,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.0.tgz", - "integrity": "sha512-IHBePmfWH5lKhJnJ7WB1V+v/GolbB0rjS8XYVCSQCZKaQCAUhMoVoOEn1Ef8Z8Wf0a7l8KTJvuZg5/e4qrZ6nA==", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", + "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", + "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "engines": { @@ -6994,24 +7574,26 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.12.tgz", - "integrity": "sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.18.tgz", + "integrity": "sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw==", "dev": true, + "license": "MIT", "peerDependencies": { - "eslint": ">=7" + "eslint": ">=8.40" } }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { @@ -7019,28 +7601,18 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint-plugin-react/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7053,6 +7625,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -7066,166 +7639,87 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "*" } }, - "node_modules/eslint/node_modules/color-convert": { + "node_modules/esniff": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" }, "engines": { "node": ">=0.10" } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -7235,6 +7729,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -7248,6 +7743,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -7259,6 +7755,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -7270,6 +7767,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -7279,6 +7777,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -7287,6 +7786,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -7295,6 +7795,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "license": "MIT", "dependencies": { "d": "1", "es5-ext": "~0.10.14" @@ -7304,50 +7805,25 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "optional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "license": "ISC", "dependencies": { "type": "^2.7.2" } }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/falafel": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==", + "license": "MIT", "dependencies": { "acorn": "^7.1.1", "isarray": "^2.0.1" @@ -7360,6 +7836,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -7370,25 +7847,28 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -7399,6 +7879,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -7410,6 +7891,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz", "integrity": "sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw==", + "license": "MIT", "dependencies": { "is-string-blank": "^1.0.1" } @@ -7417,34 +7899,56 @@ "node_modules/fast-json-patch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==" + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-shallow-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" }, + "node_modules/fast-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "peer": true + }, "node_modules/fastest-stable-stringify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", - "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==" + "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==", + "license": "MIT" }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -7453,6 +7957,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "license": "MIT", "dependencies": { "format": "^0.2.0" }, @@ -7465,6 +7970,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "license": "BSD-3-Clause", "dependencies": { "fbjs": "^3.0.0" } @@ -7473,6 +7979,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", "dependencies": { "cross-fetch": "^3.1.5", "fbjs-css-vars": "^1.0.0", @@ -7484,9 +7991,9 @@ } }, "node_modules/fbemitter/node_modules/ua-parser-js": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", - "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", "funding": [ { "type": "opencollective", @@ -7501,6 +8008,7 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", "bin": { "ua-parser-js": "script/cli.js" }, @@ -7512,6 +8020,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-2.0.0.tgz", "integrity": "sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ==", + "license": "MIT", "dependencies": { "core-js": "^3.6.4", "cross-fetch": "^3.0.4", @@ -7526,30 +8035,49 @@ "node_modules/fbjs-css-vars": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } }, "node_modules/fflate": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/file-selector": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -7562,6 +8090,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -7572,12 +8101,14 @@ "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -7590,29 +8121,31 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" }, "node_modules/flatten-vertex-data": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/flatten-vertex-data/-/flatten-vertex-data-1.0.2.tgz", "integrity": "sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==", + "license": "MIT", "dependencies": { "dtype": "^2.0.0" } @@ -7621,6 +8154,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", + "license": "BSD-3-Clause", "dependencies": { "fbemitter": "^3.0.0", "fbjs": "^3.0.1" @@ -7633,6 +8167,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", "dependencies": { "cross-fetch": "^3.1.5", "fbjs-css-vars": "^1.0.0", @@ -7644,9 +8179,9 @@ } }, "node_modules/flux/node_modules/ua-parser-js": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", - "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", "funding": [ { "type": "opencollective", @@ -7661,6 +8196,7 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", "bin": { "ua-parser-js": "script/cli.js" }, @@ -7678,6 +8214,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -7691,6 +8228,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/font-atlas/-/font-atlas-2.1.0.tgz", "integrity": "sha512-kP3AmvX+HJpW4w3d+PiPR2X6E1yvsBXt2yhuCw+yReO9F1WYhvZwx3c95DGZGwg9xYzDGrgJYa885xmVA+28Cg==", + "license": "MIT", "dependencies": { "css-font": "^1.0.0" } @@ -7699,6 +8237,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/font-measure/-/font-measure-1.2.2.tgz", "integrity": "sha512-mRLEpdrWzKe9hbfaF3Qpr06TAjquuBVP5cHy4b3hyeNdjc9i0PO6HniGsX5vjL5OWv7+Bd++NiooNpT/s8BvIA==", + "license": "MIT", "dependencies": { "css-font": "^1.2.0" } @@ -7708,6 +8247,7 @@ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -7717,6 +8257,7 @@ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -7729,9 +8270,10 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -7753,29 +8295,19 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "optional": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -7788,20 +8320,24 @@ "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/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -7815,6 +8351,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7823,6 +8360,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -7830,33 +8368,32 @@ "node_modules/geojson-vt": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", - "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==", + "license": "ISC" }, "node_modules/get-canvas-context": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-canvas-context/-/get-canvas-context-1.0.2.tgz", - "integrity": "sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A==" - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "engines": { - "node": "*" - } + "integrity": "sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A==", + "license": "MIT" }, "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.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -7865,10 +8402,25 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -7877,14 +8429,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -7893,34 +8446,23 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "optional": true - }, "node_modules/gl-mat4": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gl-mat4/-/gl-mat4-1.2.0.tgz", - "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==" + "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==", + "license": "Zlib" }, "node_modules/gl-matrix": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", - "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==", + "license": "MIT" }, "node_modules/gl-text": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/gl-text/-/gl-text-1.4.0.tgz", "integrity": "sha512-o47+XBqLCj1efmuNyCHt7/UEJmB9l66ql7pnobD6p+sgmBUdzfMZXIF0zD2+KRfpd99DJN+QXdvTFAGCKCVSmQ==", + "license": "MIT", "dependencies": { "bit-twiddle": "^1.0.2", "color-normalize": "^1.5.0", @@ -7945,6 +8487,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/gl-util/-/gl-util-3.1.3.tgz", "integrity": "sha512-dvRTggw5MSkJnCbh74jZzSoTOGnVYK+Bt+Ckqm39CVcl6+zSsxqWk4lr5NKhkqXHL6qvZAU9h17ZF8mIskY9mA==", + "license": "MIT", "dependencies": { "is-browser": "^2.0.1", "is-firefox": "^1.0.3", @@ -7956,21 +8499,21 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7981,6 +8524,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -7992,34 +8536,14 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause", "peer": true }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/global-prefix": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", + "license": "MIT", "dependencies": { "ini": "^4.1.3", "kind-of": "^6.0.3", @@ -8033,6 +8557,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", "engines": { "node": ">=16" } @@ -8041,6 +8566,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -8052,11 +8578,16 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { @@ -8064,6 +8595,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -8075,30 +8607,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/glsl-inject-defines": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz", "integrity": "sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A==", + "license": "MIT", "dependencies": { "glsl-token-inject-block": "^1.0.0", "glsl-token-string": "^1.0.1", @@ -8109,6 +8622,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/glsl-resolve/-/glsl-resolve-0.0.1.tgz", "integrity": "sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA==", + "license": "MIT", "dependencies": { "resolve": "^0.6.1", "xtend": "^2.1.2" @@ -8117,7 +8631,8 @@ "node_modules/glsl-resolve/node_modules/resolve": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", - "integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==" + "integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==", + "license": "MIT" }, "node_modules/glsl-resolve/node_modules/xtend": { "version": "2.2.0", @@ -8130,12 +8645,14 @@ "node_modules/glsl-token-assignments": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz", - "integrity": "sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ==" + "integrity": "sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ==", + "license": "MIT" }, "node_modules/glsl-token-defines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz", "integrity": "sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ==", + "license": "MIT", "dependencies": { "glsl-tokenizer": "^2.0.0" } @@ -8143,12 +8660,14 @@ "node_modules/glsl-token-depth": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz", - "integrity": "sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg==" + "integrity": "sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg==", + "license": "MIT" }, "node_modules/glsl-token-descope": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz", "integrity": "sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw==", + "license": "MIT", "dependencies": { "glsl-token-assignments": "^2.0.0", "glsl-token-depth": "^1.1.0", @@ -8159,32 +8678,38 @@ "node_modules/glsl-token-inject-block": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz", - "integrity": "sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA==" + "integrity": "sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA==", + "license": "MIT" }, "node_modules/glsl-token-properties": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz", - "integrity": "sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA==" + "integrity": "sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA==", + "license": "MIT" }, "node_modules/glsl-token-scope": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz", - "integrity": "sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A==" + "integrity": "sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A==", + "license": "MIT" }, "node_modules/glsl-token-string": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz", - "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==" + "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==", + "license": "MIT" }, "node_modules/glsl-token-whitespace-trim": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz", - "integrity": "sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ==" + "integrity": "sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ==", + "license": "MIT" }, "node_modules/glsl-tokenizer": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz", "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", + "license": "MIT", "dependencies": { "through2": "^0.6.3" } @@ -8192,12 +8717,14 @@ "node_modules/glsl-tokenizer/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" }, "node_modules/glsl-tokenizer/node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -8208,12 +8735,14 @@ "node_modules/glsl-tokenizer/node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "license": "MIT" }, "node_modules/glsl-tokenizer/node_modules/through2": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", + "license": "MIT", "dependencies": { "readable-stream": ">=1.0.33-1 <1.1.0-0", "xtend": ">=4.0.0 <4.1.0-0" @@ -8223,6 +8752,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/glslify/-/glslify-7.1.1.tgz", "integrity": "sha512-bud98CJ6kGZcP9Yxcsi7Iz647wuDz3oN+IZsjCRi5X1PI7t/xPKeL0mOwXJjo+CRZMqvq0CkSJiywCcY7kVYog==", + "license": "MIT", "dependencies": { "bl": "^2.2.1", "concat-stream": "^1.5.2", @@ -8248,6 +8778,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/glslify-bundle/-/glslify-bundle-5.1.1.tgz", "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==", + "license": "MIT", "dependencies": { "glsl-inject-defines": "^1.0.1", "glsl-token-defines": "^1.0.0", @@ -8265,6 +8796,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/glslify-deps/-/glslify-deps-1.3.2.tgz", "integrity": "sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag==", + "license": "ISC", "dependencies": { "@choojs/findup": "^0.2.0", "events": "^3.2.0", @@ -8277,20 +8809,22 @@ } }, "node_modules/goober": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.14.tgz", - "integrity": "sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==", + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz", + "integrity": "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==", + "license": "MIT", "peerDependencies": { "csstype": "^3.0.10" } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8299,23 +8833,27 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/grid-index": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", - "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==", + "license": "ISC" }, "node_modules/handsontable": { "version": "14.5.0", "resolved": "https://registry.npmjs.org/handsontable/-/handsontable-14.5.0.tgz", "integrity": "sha512-fxCjDZS4z2LFwrmHXqtEKIcfrPxoD8+5AmX7r3pEYp2rjIhmtYKA45DFQ/3PP8PYvSFW8BGR58ZaKecMpGfJXg==", + "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@handsontable/pikaday": "^1.0.0", "@types/pikaday": "1.7.4", @@ -8330,26 +8868,32 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-hover": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-hover/-/has-hover-1.0.1.tgz", "integrity": "sha512-0G6w7LnlcpyDzpeGUTuT0CEw05+QlMuGVk1IHNAlHrGJITGodjZu3x8BNDUMfKJSZXNB2ZAclqc1bvrd+uUpfg==", + "license": "MIT", "dependencies": { "is-browser": "^2.0.1" } @@ -8358,6 +8902,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-passive-events/-/has-passive-events-1.0.0.tgz", "integrity": "sha512-2vSj6IeIsgvsRMyeQ0JaCX5Q3lX4zMn5HpoVc7MEhQ6pv8Iq9rsXjsp+E5ZwaT7T0xhMT0KmU8gtt1EFVdbJiw==", + "license": "MIT", "dependencies": { "is-browser": "^2.0.1" } @@ -8367,6 +8912,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -8375,10 +8921,14 @@ } }, "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -8387,10 +8937,11 @@ } }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8403,6 +8954,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -8417,6 +8969,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" }, @@ -8428,6 +8981,7 @@ "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -8437,6 +8991,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^1.0.0", @@ -8453,6 +9008,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/highlight-words/-/highlight-words-1.2.2.tgz", "integrity": "sha512-Mf4xfPXYm8Ay1wTibCrHpNWeR2nUMynMVFkXCi4mbl+TEgmNOe+I4hV7W3OCZcSvzGL6kupaqpfHOemliMTGxQ==", + "license": "MIT", "engines": { "node": ">= 16", "npm": ">= 8" @@ -8462,6 +9018,7 @@ "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", "engines": { "node": "*" } @@ -8470,6 +9027,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.7.6" } @@ -8478,6 +9036,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } @@ -8485,23 +9044,27 @@ "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/hsluv": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/hsluv/-/hsluv-0.0.3.tgz", - "integrity": "sha512-08iL2VyCRbkQKBySkSh6m8zMUa3sADAxGVWs3Z1aPcUkTJeK0ETG4Fc27tEmQBGUAXZjIsXOZqBvacuVNSC/fQ==" + "integrity": "sha512-08iL2VyCRbkQKBySkSh6m8zMUa3sADAxGVWs3Z1aPcUkTJeK0ETG4Fc27tEmQBGUAXZjIsXOZqBvacuVNSC/fQ==", + "license": "MIT" }, "node_modules/html-element-attributes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-1.3.1.tgz", - "integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA==" + "integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA==", + "license": "MIT" }, "node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^3.1.1" }, @@ -8513,12 +9076,14 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/html-parse-stringify": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", "dependencies": { "void-elements": "3.1.0" } @@ -8528,6 +9093,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -8537,12 +9103,13 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -8554,6 +9121,7 @@ "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "dev": true, + "license": "MIT", "bin": { "husky": "bin.js" }, @@ -8568,6 +9136,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/hyperformula/-/hyperformula-2.7.1.tgz", "integrity": "sha512-mpVF5zOyNpksZzgTaCQyRAzdC/X43+taz5x1n7zNbs/PUUv0AuLmsy2yfihCr+vihUzN/pk+gXBbOfNpXKOpgA==", + "license": "GPL-3.0-only", "optional": true, "dependencies": { "chevrotain": "^6.5.0", @@ -8577,7 +9146,8 @@ "node_modules/hyphenate-style-name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", - "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" }, "node_modules/i18next": { "version": "23.15.1", @@ -8597,6 +9167,7 @@ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" } ], + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" } @@ -8605,6 +9176,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.0.tgz", "integrity": "sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" } @@ -8613,6 +9185,7 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.6.1.tgz", "integrity": "sha512-rCilMAnlEQNeKOZY1+x8wLM5IpYOj10guGvEpeC59tNjj6MMreLIjIW8D1RclhD3ifLwn6d/Y9HEM1RUE6DSog==", + "license": "MIT", "dependencies": { "cross-fetch": "4.0.0" } @@ -8621,6 +9194,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } @@ -8629,6 +9203,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" }, @@ -8640,6 +9215,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -8664,13 +9240,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -8679,6 +9257,7 @@ "version": "10.1.1", "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -8688,6 +9267,7 @@ "version": "3.7.6", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.8.0" } @@ -8696,6 +9276,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -8712,6 +9293,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -8721,30 +9303,22 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -8753,19 +9327,21 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz", "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==", + "license": "MIT", "dependencies": { "css-in-js-utils": "^3.1.0" } }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -8775,6 +9351,7 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -8783,6 +9360,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -8792,6 +9370,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "license": "MIT", "dependencies": { "is-alphabetical": "^1.0.0", "is-decimal": "^1.0.0" @@ -8802,13 +9381,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -8820,15 +9401,20 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -8838,25 +9424,30 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8868,13 +9459,15 @@ "node_modules/is-browser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-browser/-/is-browser-2.1.0.tgz", - "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==" + "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==", + "license": "MIT" }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8883,9 +9476,10 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -8897,11 +9491,14 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -8912,12 +9509,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8930,6 +9529,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -8939,6 +9539,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -8951,17 +9552,22 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8971,6 +9577,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "license": "MIT", "engines": { "node": ">=0.10.0" }, @@ -8982,6 +9589,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-firefox/-/is-firefox-1.0.3.tgz", "integrity": "sha512-6Q9ITjvWIm0Xdqv+5U12wgOKEM2KoBw4Y926m0OFkvlCxnbG94HKAsVz8w3fWcfAS5YA2fJORXX1dLrkprCCxA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8991,17 +9599,22 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9015,6 +9628,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -9026,6 +9640,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9035,6 +9650,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-iexplorer/-/is-iexplorer-1.0.0.tgz", "integrity": "sha512-YeLzceuwg3K6O0MLM3UyUUjKAlyULetwryFp1mHy1I5PfArK0AEqlfa+MR4gkJjcbuJXoDJCvXbyqZVf5CR2Sg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9044,6 +9660,7 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9054,36 +9671,28 @@ "node_modules/is-mobile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-4.0.0.tgz", - "integrity": "sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==" - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==", + "license": "MIT" }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9096,23 +9705,16 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9121,6 +9723,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -9132,16 +9735,20 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9155,6 +9762,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9163,12 +9771,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -9178,12 +9787,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9195,20 +9806,25 @@ "node_modules/is-string-blank": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-string-blank/-/is-string-blank-1.0.1.tgz", - "integrity": "sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw==" + "integrity": "sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw==", + "license": "MIT" }, "node_modules/is-svg-path": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-svg-path/-/is-svg-path-1.0.2.tgz", - "integrity": "sha512-Lj4vePmqpPR1ZnRctHv8ltSh1OrSxHkhUkd7wi+VQdcdP15/KvQFyk7LhNuM7ZW0EVbJz8kZLVmL9quLrfq4Kg==" + "integrity": "sha512-Lj4vePmqpPR1ZnRctHv8ltSh1OrSxHkhUkd7wi+VQdcdP15/KvQFyk7LhNuM7ZW0EVbJz8kZLVmL9quLrfq4Kg==", + "license": "MIT" }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9218,12 +9834,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -9237,6 +9854,7 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9245,25 +9863,30 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -9275,18 +9898,21 @@ "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9296,6 +9922,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -9305,6 +9932,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -9314,32 +9942,12 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", @@ -9354,6 +9962,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -9363,16 +9972,21 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/jackspeak": { @@ -9380,6 +9994,7 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -9393,12 +10008,14 @@ "node_modules/javascript-natural-sort": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "license": "MIT" }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*", @@ -9409,19 +10026,11 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -9437,6 +10046,7 @@ "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "license": "Apache-2.0", "engines": { "node": ">= 0.6.0" } @@ -9445,6 +10055,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", "engines": { "node": ">=14" } @@ -9452,17 +10063,20 @@ "node_modules/js-file-download": { "version": "0.4.12", "resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz", - "integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==" + "integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==", + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -9471,10 +10085,11 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -9484,6 +10099,7 @@ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", "dev": true, + "license": "MIT", "dependencies": { "cssstyle": "^4.1.0", "data-urls": "^5.0.0", @@ -9520,52 +10136,60 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" }, "node_modules/json-source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", - "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==" + "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==", + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-pretty-compact": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz", - "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==" + "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==", + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -9577,6 +10201,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-10.1.0.tgz", "integrity": "sha512-s+BP/x9Rx9ukNyTjeWCvIAGTEvXwCw6l4NX4mlxXfkK87F1ZgsesHbD9SsyZDLP27dvcFgr9H/j1jy/Bzzk07Q==", + "license": "Apache-2.0", "dependencies": { "ace-builds": "^1.35.0", "ajv": "^6.12.6", @@ -9590,9 +10215,10 @@ } }, "node_modules/jsonrepair": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.8.1.tgz", - "integrity": "sha512-5wnjaO53EJOhfLFY92nvBz2B9gqF9ql/D4HKUb1WOSBaqtVcAifFfmurblnhCJn/ySqKFA8U3n7nhGMAu/hEjQ==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.11.2.tgz", + "integrity": "sha512-ejydGcTq0qKk1r0NUBwjtvswbPFhs19+QEfwSeGwB8KJZ59W7/AOFmQh04c68mkJ+2hGk+OkOmkr2bKG4tGlLQ==", + "license": "ISC", "bin": { "jsonrepair": "bin/cli.js" } @@ -9602,6 +10228,7 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -9616,6 +10243,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", "engines": { "node": ">=18" } @@ -9623,13 +10251,15 @@ "node_modules/kdbush": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", - "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==", + "license": "ISC" }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -9638,6 +10268,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9647,6 +10278,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -9658,12 +10290,14 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" @@ -9673,6 +10307,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -9686,37 +10321,44 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" }, "node_modules/lodash.curry": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", - "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==", + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" }, "node_modules/lodash.flow": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", - "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==", + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -9725,18 +10367,17 @@ } }, "node_modules/loupe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", "dev": true, - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lowlight": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", + "license": "MIT", "dependencies": { "fault": "^1.0.0", "highlight.js": "~10.7.0" @@ -9750,6 +10391,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -9759,16 +10401,18 @@ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true, + "license": "MIT", "peer": true, "bin": { "lz-string": "bin/bin.js" } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -9778,6 +10422,7 @@ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", @@ -9789,6 +10434,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -9804,6 +10450,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -9815,6 +10462,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==", + "license": "MIT", "dependencies": { "once": "~1.3.0" } @@ -9823,6 +10471,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -9831,6 +10480,7 @@ "version": "1.13.3", "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.13.3.tgz", "integrity": "sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==", + "license": "SEE LICENSE IN LICENSE.txt", "peer": true, "dependencies": { "@mapbox/geojson-rewind": "^0.5.2", @@ -9864,6 +10514,7 @@ "version": "4.7.1", "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.1.tgz", "integrity": "sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==", + "license": "BSD-3-Clause", "dependencies": { "@mapbox/geojson-rewind": "^0.5.2", "@mapbox/jsonlint-lines-primitives": "^2.0.2", @@ -9903,37 +10554,44 @@ "node_modules/maplibre-gl/node_modules/@mapbox/tiny-sdf": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", - "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" + "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==", + "license": "BSD-2-Clause" }, "node_modules/maplibre-gl/node_modules/@mapbox/unitbezier": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", - "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==", + "license": "BSD-2-Clause" }, "node_modules/maplibre-gl/node_modules/earcut": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.0.tgz", - "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.1.tgz", + "integrity": "sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==", + "license": "ISC" }, "node_modules/maplibre-gl/node_modules/geojson-vt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.2.tgz", - "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==" + "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==", + "license": "ISC" }, "node_modules/maplibre-gl/node_modules/potpack": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz", - "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" + "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==", + "license": "ISC" }, "node_modules/maplibre-gl/node_modules/quickselect": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", - "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==", + "license": "ISC" }, "node_modules/maplibre-gl/node_modules/supercluster": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", + "license": "ISC", "dependencies": { "kdbush": "^4.0.2" } @@ -9941,12 +10599,14 @@ "node_modules/maplibre-gl/node_modules/tinyqueue": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", - "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==", + "license": "ISC" }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "license": "MIT", "peer": true, "bin": { "marked": "bin/marked.js" @@ -9958,12 +10618,14 @@ "node_modules/material-colors": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==", + "license": "ISC" }, "node_modules/material-react-table": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/material-react-table/-/material-react-table-3.0.1.tgz", "integrity": "sha512-RP+bnpsOAH5j6zwP04u9HB37fyqbd6mVv9mkT4IUJC3e3gEqixZmkNdJMVM1ZVHoq7yIaM381xf22mpBVe0IaA==", + "license": "MIT", "dependencies": { "@tanstack/match-sorter-utils": "8.19.4", "@tanstack/react-table": "8.20.5", @@ -9987,10 +10649,21 @@ "react-dom": ">=18.0" } }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/math-log2": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/math-log2/-/math-log2-1.0.1.tgz", "integrity": "sha512-9W0yGtkaMAkf74XGYVy4Dqw3YUMnTNB2eeiw9aQbUl4A3KmuCEHTt2DgAB07ENzOYAjsYSAYufkAq0Zd+jU7zA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9998,17 +10671,20 @@ "node_modules/mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" }, "node_modules/memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT", "peer": true }, "node_modules/merge2": { @@ -10016,6 +10692,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -10025,6 +10702,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -10033,10 +10711,24 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10045,6 +10737,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -10052,23 +10745,12 @@ "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -10077,6 +10759,7 @@ "version": "0.23.8", "resolved": "https://registry.npmjs.org/minim/-/minim-0.23.8.tgz", "integrity": "sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==", + "license": "MIT", "dependencies": { "lodash": "^4.15.0" }, @@ -10088,6 +10771,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10102,6 +10786,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10111,25 +10796,22 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "optional": true - }, "node_modules/mobius1-selectr": { "version": "2.4.13", "resolved": "https://registry.npmjs.org/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz", - "integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==" + "integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==", + "license": "MIT" }, "node_modules/moment": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", "engines": { "node": "*" } @@ -10138,6 +10820,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/mouse-change/-/mouse-change-1.4.0.tgz", "integrity": "sha512-vpN0s+zLL2ykyyUDh+fayu9Xkor5v/zRD9jhSqjRS1cJTGS0+oakVZzNm5n19JvvEj0you+MXlYTpNxUDQUjkQ==", + "license": "MIT", "dependencies": { "mouse-event": "^1.0.0" } @@ -10145,17 +10828,20 @@ "node_modules/mouse-event": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/mouse-event/-/mouse-event-1.0.5.tgz", - "integrity": "sha512-ItUxtL2IkeSKSp9cyaX2JLUuKk2uMoxBg4bbOWVd29+CskYJR9BGsUqtXenNzKbnDshvupjUewDIYVrOB6NmGw==" + "integrity": "sha512-ItUxtL2IkeSKSp9cyaX2JLUuKk2uMoxBg4bbOWVd29+CskYJR9BGsUqtXenNzKbnDshvupjUewDIYVrOB6NmGw==", + "license": "MIT" }, "node_modules/mouse-event-offset": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mouse-event-offset/-/mouse-event-offset-3.0.2.tgz", - "integrity": "sha512-s9sqOs5B1Ykox3Xo8b3Ss2IQju4UwlW6LSR+Q5FXWpprJ5fzMLefIIItr3PH8RwzfGy6gxs/4GAmiNuZScE25w==" + "integrity": "sha512-s9sqOs5B1Ykox3Xo8b3Ss2IQju4UwlW6LSR+Q5FXWpprJ5fzMLefIIItr3PH8RwzfGy6gxs/4GAmiNuZScE25w==", + "license": "MIT" }, "node_modules/mouse-wheel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mouse-wheel/-/mouse-wheel-1.2.0.tgz", "integrity": "sha512-+OfYBiUOCTWcTECES49neZwL5AoGkXE+lFjIvzwNCnYRlso+EnfvovcBxGoyQ0yQt806eSPjS675K0EwWknXmw==", + "license": "MIT", "dependencies": { "right-now": "^1.0.0", "signum": "^1.0.0", @@ -10167,6 +10853,7 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -10174,13 +10861,15 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/mumath": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/mumath/-/mumath-3.3.4.tgz", "integrity": "sha512-VAFIOG6rsxoc7q/IaY3jdjmrsuX9f15KlRLYTHmixASBZkZEKC1IFqE2BC5CdhXmK6WLM1Re33z//AGmeRI6FA==", "deprecated": "Redundant dependency in your project.", + "license": "Unlicense", "dependencies": { "almost-equal": "^1.1.0" } @@ -10188,18 +10877,14 @@ "node_modules/murmurhash-js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", - "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" - }, - "node_modules/nan": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", - "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", - "optional": true + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==", + "license": "MIT" }, "node_modules/nano-css": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.2.tgz", "integrity": "sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==", + "license": "Unlicense", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "css-tree": "^1.1.2", @@ -10216,20 +10901,22 @@ } }, "node_modules/nano-css/node_modules/stylis": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", - "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==" + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.5.tgz", + "integrity": "sha512-K7npNOKGRYuhAFFzkzMGfxFDpN6gDwf8hcMiE+uveTVbBgm93HrNP3ZDUpKqzZ4pG7TP6fmb+EMAQPjq9FqqvA==", + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -10237,27 +10924,24 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "optional": true - }, "node_modules/native-promise-only": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==" + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/needle": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", + "license": "MIT", "dependencies": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -10274,6 +10958,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -10282,12 +10967,14 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT", "peer": true }, "node_modules/neotraverse": { "version": "0.6.18", "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -10295,36 +10982,24 @@ "node_modules/next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/node-abi": { - "version": "3.68.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.68.0.tgz", - "integrity": "sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A==", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "license": "ISC" }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.0.tgz", + "integrity": "sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^18 || ^20 || >= 21" + } }, "node_modules/node-domexception": { "version": "1.0.0", @@ -10340,6 +11015,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "engines": { "node": ">=10.5.0" } @@ -10348,6 +11024,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10367,6 +11044,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch-commonjs/-/node-fetch-commonjs-3.3.2.tgz", "integrity": "sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A==", + "license": "MIT", "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -10382,36 +11060,54 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" }, "node_modules/normalize-svg-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-0.1.0.tgz", - "integrity": "sha512-1/kmYej2iedi5+ROxkRESL/pI02pkg0OBnaR4hJkSIX6+ORzepwbuUXfrdZaPjysTsJInj0Rj5NuX027+dMBvA==" + "integrity": "sha512-1/kmYej2iedi5+ROxkRESL/pI02pkg0OBnaR4hJkSIX6+ORzepwbuUXfrdZaPjysTsJInj0Rj5NuX027+dMBvA==", + "license": "MIT" }, "node_modules/notistack": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/notistack/-/notistack-3.0.1.tgz", "integrity": "sha512-ntVZXXgSQH5WYfyU+3HfcXuKaapzAJ8fBLQ/G618rn3yvSzEbnOB8ZSOwhX+dAORy/lw+GC2N061JA0+gYWTVA==", + "license": "MIT", "dependencies": { "clsx": "^1.1.0", "goober": "^2.0.33" @@ -10433,6 +11129,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -10441,6 +11138,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-integer/-/number-is-integer-1.0.1.tgz", "integrity": "sha512-Dq3iuiFBkrbmuQjGFFF3zckXNCQoSD37/SdSbgcBailUx6knDvDwb5CympBgcoWHy36sfS12u74MHYkXyHq6bg==", + "license": "MIT", "dependencies": { "is-finite": "^1.0.1" }, @@ -10452,6 +11150,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/numbro/-/numbro-2.1.2.tgz", "integrity": "sha512-7w833BxZmKGLE9HI0aREtNVRVH6WTYUUlWf4qgA5gKNhPQ4F/MRZ14sc0v8eoLORprk9ZTVwYaLwj8N3Zgxwiw==", + "license": "MIT", "dependencies": { "bignumber.js": "^8.0.1" }, @@ -10460,24 +11159,27 @@ } }, "node_modules/nwsapi": { - "version": "2.2.13", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", - "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", - "dev": true + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10490,19 +11192,23 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -10517,6 +11223,7 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10531,6 +11238,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10548,6 +11256,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", + "license": "MIT", "dependencies": { "is-extendable": "^1.0.0" }, @@ -10556,12 +11265,14 @@ } }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -10576,27 +11287,30 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/openapi-path-templating": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/openapi-path-templating/-/openapi-path-templating-1.6.0.tgz", - "integrity": "sha512-1atBNwOUrZXthTvlvvX8k8ovFEF3iA8mDidYMkdOtvVdndBhTrspbwGXNOzEUaJhm9iUl4Tf5uQaeTLAJvwPig==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/openapi-path-templating/-/openapi-path-templating-2.1.0.tgz", + "integrity": "sha512-fLs5eJmLyU8wPRz+JSH5uLE7TE4Ohg6VHOtj0C0AlD3GTCCcw2LgKW6MSN1A8ZBKHEg2O4/d02knmVU1nvGAKQ==", + "license": "Apache-2.0", "dependencies": { - "apg-lite": "^1.0.3" + "apg-lite": "^1.0.4" }, "engines": { "node": ">=12.20.0" } }, "node_modules/openapi-server-url-templating": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/openapi-server-url-templating/-/openapi-server-url-templating-1.1.0.tgz", - "integrity": "sha512-dtyTFKx2xVcO0W8JKaluXIHC9l/MLjHeflBaWjiWNMCHp/TBs9dEjQDbj/VFlHR4omFOKjjmqm1pW1aCAhmPBg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/openapi-server-url-templating/-/openapi-server-url-templating-1.3.0.tgz", + "integrity": "sha512-DPlCms3KKEbjVQb0spV6Awfn6UWNheuG/+folQPzh/wUaKwuqvj8zt5gagD7qoyxtE03cIiKPgLFS3Q8Bz00uQ==", + "license": "Apache-2.0", "dependencies": { - "apg-lite": "^1.0.3" + "apg-lite": "^1.0.4" }, "engines": { "node": ">=12.20.0" @@ -10607,6 +11321,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -10619,10 +11334,29 @@ "node": ">= 0.8.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -10637,6 +11371,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -10651,12 +11386,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -10667,12 +11404,14 @@ "node_modules/parenthesis": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/parenthesis/-/parenthesis-3.1.8.tgz", - "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==" + "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==", + "license": "MIT" }, "node_modules/parse-entities": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "license": "MIT", "dependencies": { "character-entities": "^1.0.0", "character-entities-legacy": "^1.0.0", @@ -10691,6 +11430,7 @@ "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz", "integrity": "sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==", "dev": true, + "license": "Apache-2.0 AND MIT", "dependencies": { "es-module-lexer": "^1.5.3", "slashes": "^3.0.12" @@ -10703,6 +11443,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -10720,6 +11461,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/parse-rect/-/parse-rect-1.2.0.tgz", "integrity": "sha512-4QZ6KYbnE6RTwg9E0HpLchUM9EZt6DnDxajFZZDSV4p/12ZJEvPO702DZpGvRYEPo00yKDys7jASi+/w7aO8LA==", + "license": "MIT", "dependencies": { "pick-by-alias": "^1.2.0" } @@ -10727,20 +11469,23 @@ "node_modules/parse-svg-path": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", - "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==", + "license": "MIT" }, "node_modules/parse-unit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", - "integrity": "sha512-hrqldJHokR3Qj88EIlV/kAyAi/G5R2+R56TBANxNMy0uPlYcttx0jnMW6Yx5KsKPSbC3KddM/7qQm3+0wEXKxg==" + "integrity": "sha512-hrqldJHokR3Qj88EIlV/kAyAi/G5R2+R56TBANxNMy0uPlYcttx0jnMW6Yx5KsKPSbC3KddM/7qQm3+0wEXKxg==", + "license": "MIT" }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dev": true, + "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -10750,24 +11495,17 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10775,13 +11513,15 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -10797,12 +11537,14 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", "engines": { "node": ">=8" } @@ -10811,13 +11553,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.16" } @@ -10826,6 +11570,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz", "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==", + "license": "BSD-3-Clause", "dependencies": { "ieee754": "^1.1.12", "resolve-protobuf-schema": "^2.1.0" @@ -10837,25 +11582,29 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" }, "node_modules/pick-by-alias": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pick-by-alias/-/pick-by-alias-1.2.0.tgz", - "integrity": "sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==" + "integrity": "sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==", + "license": "MIT" }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -10864,17 +11613,20 @@ "node_modules/picomodal": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/picomodal/-/picomodal-3.0.0.tgz", - "integrity": "sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==" + "integrity": "sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==", + "license": "MIT" }, "node_modules/pikaday": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/pikaday/-/pikaday-1.8.2.tgz", - "integrity": "sha512-TNtsE+34BIax3WtkB/qqu5uepV1McKYEgvL3kWzU7aqPCpMEN6rBF3AOwu4WCwAealWlBGobXny/9kJb49C1ew==" + "integrity": "sha512-TNtsE+34BIax3WtkB/qqu5uepV1McKYEgvL3kWzU7aqPCpMEN6rBF3AOwu4WCwAealWlBGobXny/9kJb49C1ew==", + "license": "(0BSD OR MIT)" }, "node_modules/plotly.js": { "version": "2.35.2", "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.35.2.tgz", "integrity": "sha512-s0knlWzRvLQXxzf3JQ6qbm8FpwKuMjkr+6r04f8/yCEByAQ+I0jkUzY/hSGRGb+u7iljTh9hgpEiiJP90vjyeQ==", + "license": "MIT", "dependencies": { "@plotly/d3": "3.8.2", "@plotly/d3-sankey": "0.7.2", @@ -10934,6 +11686,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -10944,26 +11697,29 @@ "node_modules/point-in-polygon": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", - "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" + "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==", + "license": "MIT" }, "node_modules/polybooljs": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/polybooljs/-/polybooljs-1.2.2.tgz", - "integrity": "sha512-ziHW/02J0XuNuUtmidBc6GXE8YohYydp3DWPWXYsd7O721TjcmN+k6ezjdwkDqep+gnWnFY+yqZHvzElra2oCg==" + "integrity": "sha512-ziHW/02J0XuNuUtmidBc6GXE8YohYydp3DWPWXYsd7O721TjcmN+k6ezjdwkDqep+gnWnFY+yqZHvzElra2oCg==", + "license": "MIT" }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.0.tgz", + "integrity": "sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg==", "funding": [ { "type": "opencollective", @@ -10978,9 +11734,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -10991,6 +11748,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -10999,12 +11757,13 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -11015,11 +11774,12 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -11032,6 +11792,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -11043,9 +11804,10 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11057,53 +11819,31 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" }, "node_modules/potpack": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", - "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" - }, - "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", - "optional": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==", + "license": "ISC" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -11119,6 +11859,7 @@ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -11131,6 +11872,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "ansi-regex": "^5.0.1", @@ -11146,6 +11888,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -11159,12 +11902,14 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", "engines": { "node": ">=6" } @@ -11173,6 +11918,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz", "integrity": "sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==", + "license": "MIT", "dependencies": { "lodash.merge": "^4.6.2", "needle": "^2.5.2", @@ -11183,6 +11929,7 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -11190,12 +11937,14 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" }, "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", "dependencies": { "asap": "~2.0.3" } @@ -11204,6 +11953,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -11213,12 +11963,14 @@ "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/property-information": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "license": "MIT", "dependencies": { "xtend": "^4.0.0" }, @@ -11230,27 +11982,20 @@ "node_modules/protocol-buffers-schema": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", + "license": "MIT" }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "optional": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -11258,12 +12003,14 @@ "node_modules/pure-color": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", - "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==", + "license": "MIT" }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -11283,17 +12030,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quickselect": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "license": "ISC" }, "node_modules/raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", "dependencies": { "performance-now": "^2.1.0" } @@ -11301,12 +12051,14 @@ "node_modules/raf-schd": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", - "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", + "license": "MIT" }, "node_modules/ramda": { "version": "0.30.1", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/ramda" @@ -11316,6 +12068,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.1.0.tgz", "integrity": "sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.3" }, @@ -11331,6 +12084,7 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "license": "MIT", "dependencies": { "drange": "^1.0.2", "ret": "^0.2.0" @@ -11343,44 +12097,16 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "optional": true - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, @@ -11392,6 +12118,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", + "license": "MIT", "dependencies": { "base16": "^1.0.0", "lodash.curry": "^4.0.1", @@ -11403,6 +12130,8 @@ "version": "13.1.1", "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", + "deprecated": "react-beautiful-dnd is now deprecated. Context and options: https://github.com/atlassian/react-beautiful-dnd/issues/2672", + "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.9.2", "css-box-model": "^1.2.0", @@ -11420,12 +12149,14 @@ "node_modules/react-beautiful-dnd/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" }, "node_modules/react-beautiful-dnd/node_modules/react-redux": { "version": "7.2.9", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.15.4", "@types/react-redux": "^7.1.20", @@ -11450,6 +12181,7 @@ "version": "2.19.3", "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", + "license": "MIT", "dependencies": { "@icons/material": "^0.2.4", "lodash": "^4.17.15", @@ -11467,6 +12199,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", + "license": "MIT", "dependencies": { "copy-to-clipboard": "^3.3.1", "prop-types": "^15.8.1" @@ -11479,6 +12212,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/react-d3-graph/-/react-d3-graph-2.6.0.tgz", "integrity": "sha512-U72didZuPuYEqAi1n2bJvnph+9MviIw2x9I0eoxb1IKk3cyEwsJV96n3RL72z/7HDsa1FOvDKuOJE7ujSNZB/Q==", + "license": "MIT", "engines": { "node": ">=8.9.0" }, @@ -11491,6 +12225,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/react-debounce-input/-/react-debounce-input-3.3.0.tgz", "integrity": "sha512-VEqkvs8JvY/IIZvh71Z0TC+mdbxERvYF33RcebnodlsUZ8RSgyKe2VWaHXv4+/8aoOgXLxWrdsYs2hDhcwbUgA==", + "license": "MIT", "dependencies": { "lodash.debounce": "^4", "prop-types": "^15.8.1" @@ -11503,6 +12238,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -11515,6 +12251,7 @@ "version": "14.2.3", "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "license": "MIT", "dependencies": { "attr-accept": "^2.2.2", "file-selector": "^0.6.0", @@ -11531,6 +12268,7 @@ "version": "0.0.21", "resolved": "https://registry.npmjs.org/react-easy-swipe/-/react-easy-swipe-0.0.21.tgz", "integrity": "sha512-OeR2jAxdoqUMHIn/nS9fgreI5hSpgGoL5ezdal4+oO7YSSgJR8ga+PkYGJrSrJ9MKlPcQjMQXnketrD7WNmNsg==", + "license": "MIT", "peer": true, "dependencies": { "prop-types": "^15.5.8" @@ -11543,6 +12281,7 @@ "version": "7.53.0", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.0.tgz", "integrity": "sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==", + "license": "MIT", "engines": { "node": ">=18.0.0" }, @@ -11558,6 +12297,7 @@ "version": "1.4.6", "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.6.tgz", "integrity": "sha512-uS3MmThNKFH2EZUQQw4k5pIcU7XIr208UE5dktrj/GOH1CMagqxDl4DCLpt3o2l9x+IB5nVYBeN3Cr4IutBXAg==", + "license": "MIT", "dependencies": { "html-element-attributes": "^1.0.0" } @@ -11566,6 +12306,7 @@ "version": "15.0.2", "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.0.2.tgz", "integrity": "sha512-z0W3/RES9Idv3MmJUcf0mDNeeMOUXe+xoL0kPfQPbDoZHmni/XsIoq5zgT2MCFUiau283GuBUK578uD/mkAbLQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", "html-parse-stringify": "^3.0.1" @@ -11587,6 +12328,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz", "integrity": "sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==", + "license": "MIT", "dependencies": { "invariant": "^2.2.2" }, @@ -11598,6 +12340,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/react-immutable-pure-component/-/react-immutable-pure-component-2.2.2.tgz", "integrity": "sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A==", + "license": "MIT", "peerDependencies": { "immutable": ">= 2 || >= 4.0.0-rc", "react": ">= 16.6", @@ -11608,6 +12351,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz", "integrity": "sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==", + "license": "MIT", "peerDependencies": { "react": "^16.8.4 || ^17.0.0 || ^18.0.0" } @@ -11615,12 +12359,14 @@ "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/react-json-view": { "version": "1.21.3", "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "license": "MIT", "dependencies": { "flux": "^4.0.1", "react-base16-styling": "^0.6.0", @@ -11635,21 +12381,24 @@ "node_modules/react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" }, "node_modules/react-number-format": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.2.tgz", - "integrity": "sha512-cg//jVdS49PYDgmcYoBnMMHl4XNTMuV723ZnHD2aXYtWWWqbVF3hjQ8iB+UZEuXapLbeA8P8H+1o6ZB1lcw3vg==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.3.tgz", + "integrity": "sha512-VCY5hFg/soBighAoGcdE+GagkJq0230qN6jcS5sp8wQX1qy1fYN/RX7/BXkrs0oyzzwqR8/+eSUrqXbGeywdUQ==", + "license": "MIT", "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-plotly.js": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/react-plotly.js/-/react-plotly.js-2.6.0.tgz", "integrity": "sha512-g93xcyhAVCSt9kV1svqG1clAEdL6k3U+jjuSzfTV7owaSU9Go6Ph8bl25J+jKfKvIGAEYpe4qj++WHJuc9IaeA==", + "license": "MIT", "dependencies": { "prop-types": "^15.8.1" }, @@ -11662,6 +12411,7 @@ "version": "8.1.3", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz", "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -11700,6 +12450,7 @@ "version": "3.2.23", "resolved": "https://registry.npmjs.org/react-responsive-carousel/-/react-responsive-carousel-3.2.23.tgz", "integrity": "sha512-pqJLsBaKHWJhw/ItODgbVoziR2z4lpcJg+YwmRlSk4rKH32VE633mAtZZ9kDXjy4wFO+pgUZmDKPsPe1fPmHCg==", + "license": "MIT", "peer": true, "dependencies": { "classnames": "^2.2.5", @@ -11711,6 +12462,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz", "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==", + "license": "MIT", "dependencies": { "history": "^5.2.0" }, @@ -11722,6 +12474,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz", "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==", + "license": "MIT", "dependencies": { "history": "^5.2.0", "react-router": "6.3.0" @@ -11735,6 +12488,7 @@ "version": "2.0.14", "resolved": "https://registry.npmjs.org/react-split/-/react-split-2.0.14.tgz", "integrity": "sha512-bKWydgMgaKTg/2JGQnaJPg51T6dmumTWZppFgEbbY0Fbme0F5TuatAScCLaqommbGQQf/ZT1zaejuPDriscISA==", + "license": "MIT", "dependencies": { "prop-types": "^15.5.7", "split.js": "^1.6.0" @@ -11747,6 +12501,7 @@ "version": "15.5.0", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz", "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.3.1", "highlight.js": "^10.4.1", @@ -11759,9 +12514,10 @@ } }, "node_modules/react-textarea-autosize": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", - "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.7.tgz", + "integrity": "sha512-2MqJ3p0Jh69yt9ktFIaZmORHXw4c4bxSIhCeWiFwmJ9EYKgLmuNII3e9c9b2UO+ijl4StnpZdqpxNIhTdHvqtQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", "use-composed-ref": "^1.3.0", @@ -11771,13 +12527,14 @@ "node": ">=10" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -11802,6 +12559,7 @@ "version": "17.5.1", "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.1.tgz", "integrity": "sha512-LG/uPEVRflLWMwi3j/sZqR00nF6JGqTTDblkXK2nzXsIvij06hXl1V/MZIlwj1OKIQUtlh1l9jK8gLsRyCQxMg==", + "license": "Unlicense", "dependencies": { "@types/js-cookie": "^2.2.6", "@xobotyi/scrollbar-width": "^1.9.5", @@ -11826,17 +12584,20 @@ "node_modules/react-use/node_modules/@types/js-cookie": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", - "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" + "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==", + "license": "MIT" }, "node_modules/react-use/node_modules/js-cookie": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", + "license": "MIT" }, "node_modules/react-virtualized-auto-sizer": { "version": "1.0.24", "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.24.tgz", "integrity": "sha512-3kCn7N9NEb3FlvJrSHWGQ4iVl+ydQObq2fHMn12i5wbtm74zHOPhz/i64OL3c1S1vi9i2GXtZqNqUJTQ+BnNfg==", + "license": "MIT", "peerDependencies": { "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0", "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0" @@ -11846,6 +12607,7 @@ "version": "1.8.10", "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.10.tgz", "integrity": "sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.0.0", "memoize-one": ">=3.1.1 <6" @@ -11862,6 +12624,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", + "license": "MIT", "dependencies": { "lodash": "^4.0.1" } @@ -11870,6 +12633,7 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11883,18 +12647,21 @@ "node_modules/readable-stream/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -11907,6 +12674,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.9.2" } @@ -11915,23 +12683,26 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "license": "MIT", "peerDependencies": { "redux": "^4" } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -11944,6 +12715,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", + "license": "MIT", "dependencies": { "hastscript": "^6.0.0", "parse-entities": "^2.0.0", @@ -11958,6 +12730,7 @@ "version": "1.27.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -11965,24 +12738,29 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" }, "node_modules/regexp-to-ast": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz", "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==", + "license": "MIT", "optional": true }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -11995,12 +12773,14 @@ "name": "@plotly/regl", "version": "2.1.2", "resolved": "https://registry.npmjs.org/@plotly/regl/-/regl-2.1.2.tgz", - "integrity": "sha512-Mdk+vUACbQvjd0m/1JJjOOafmkp/EpmHjISsopEz5Av44CBq7rPC05HHNbYGKVyNUF2zmEoBS/TT0pd0SPFFyw==" + "integrity": "sha512-Mdk+vUACbQvjd0m/1JJjOOafmkp/EpmHjISsopEz5Av44CBq7rPC05HHNbYGKVyNUF2zmEoBS/TT0pd0SPFFyw==", + "license": "MIT" }, "node_modules/regl-error2d": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/regl-error2d/-/regl-error2d-2.0.12.tgz", "integrity": "sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA==", + "license": "MIT", "dependencies": { "array-bounds": "^1.0.1", "color-normalize": "^1.5.0", @@ -12015,6 +12795,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/regl-line2d/-/regl-line2d-3.1.3.tgz", "integrity": "sha512-fkgzW+tTn4QUQLpFKsUIE0sgWdCmXAM3ctXcCgoGBZTSX5FE2A0M7aynz7nrZT5baaftLrk9te54B+MEq4QcSA==", + "license": "MIT", "dependencies": { "array-bounds": "^1.0.1", "array-find-index": "^1.0.2", @@ -12033,6 +12814,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.3.1.tgz", "integrity": "sha512-seOmMIVwaCwemSYz/y4WE0dbSO9svNFSqtTh5RE57I7PjGo3tcUYKtH0MTSoshcAsreoqN8HoCtnn8wfHXXfKQ==", + "license": "MIT", "dependencies": { "@plotly/point-cluster": "^3.1.9", "array-range": "^1.0.1", @@ -12055,6 +12837,7 @@ "version": "1.0.14", "resolved": "https://registry.npmjs.org/regl-splom/-/regl-splom-1.0.14.tgz", "integrity": "sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw==", + "license": "MIT", "dependencies": { "array-bounds": "^1.0.1", "array-range": "^1.0.1", @@ -12070,6 +12853,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", + "license": "MIT", "dependencies": { "argparse": "^1.0.10", "autolinker": "^3.11.0" @@ -12085,6 +12869,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -12092,21 +12877,34 @@ "node_modules/remove-accents": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", - "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==" + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", + "license": "MIT" }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "license": "MIT", "engines": { "node": ">=0.10" } }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.5" } @@ -12114,30 +12912,37 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" }, "node_modules/reselect": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", - "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==", + "license": "MIT" }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12146,6 +12951,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", "engines": { "node": ">=4" } @@ -12154,6 +12960,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "license": "MIT", "dependencies": { "protocol-buffers-schema": "^3.3.1" } @@ -12162,6 +12969,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -12171,6 +12979,7 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -12179,29 +12988,15 @@ "node_modules/right-now": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz", - "integrity": "sha512-DA8+YS+sMIVpbsuKgy+Z67L9Lxb1p05mNxRpDPNksPDEFir4vmBlUtuN9jkTGn9YMMdlBuK7XQgFiz6ws+yhSg==" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "integrity": "sha512-DA8+YS+sMIVpbsuKgy+Z67L9Lxb1p05mNxRpDPNksPDEFir4vmBlUtuN9jkTGn9YMMdlBuK7XQgFiz6ws+yhSg==", + "license": "MIT" }, "node_modules/rollup": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz", - "integrity": "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.30.1.tgz", + "integrity": "sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.6" }, @@ -12213,22 +13008,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.5", - "@rollup/rollup-android-arm64": "4.22.5", - "@rollup/rollup-darwin-arm64": "4.22.5", - "@rollup/rollup-darwin-x64": "4.22.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.5", - "@rollup/rollup-linux-arm-musleabihf": "4.22.5", - "@rollup/rollup-linux-arm64-gnu": "4.22.5", - "@rollup/rollup-linux-arm64-musl": "4.22.5", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.5", - "@rollup/rollup-linux-riscv64-gnu": "4.22.5", - "@rollup/rollup-linux-s390x-gnu": "4.22.5", - "@rollup/rollup-linux-x64-gnu": "4.22.5", - "@rollup/rollup-linux-x64-musl": "4.22.5", - "@rollup/rollup-win32-arm64-msvc": "4.22.5", - "@rollup/rollup-win32-ia32-msvc": "4.22.5", - "@rollup/rollup-win32-x64-msvc": "4.22.5", + "@rollup/rollup-android-arm-eabi": "4.30.1", + "@rollup/rollup-android-arm64": "4.30.1", + "@rollup/rollup-darwin-arm64": "4.30.1", + "@rollup/rollup-darwin-x64": "4.30.1", + "@rollup/rollup-freebsd-arm64": "4.30.1", + "@rollup/rollup-freebsd-x64": "4.30.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.30.1", + "@rollup/rollup-linux-arm-musleabihf": "4.30.1", + "@rollup/rollup-linux-arm64-gnu": "4.30.1", + "@rollup/rollup-linux-arm64-musl": "4.30.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.30.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.30.1", + "@rollup/rollup-linux-riscv64-gnu": "4.30.1", + "@rollup/rollup-linux-s390x-gnu": "4.30.1", + "@rollup/rollup-linux-x64-gnu": "4.30.1", + "@rollup/rollup-linux-x64-musl": "4.30.1", + "@rollup/rollup-win32-arm64-msvc": "4.30.1", + "@rollup/rollup-win32-ia32-msvc": "4.30.1", + "@rollup/rollup-win32-x64-msvc": "4.30.1", "fsevents": "~2.3.2" } }, @@ -12236,12 +13034,14 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rtl-css-js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2" } @@ -12265,6 +13065,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -12272,17 +13073,20 @@ "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -12309,17 +13113,36 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -12331,18 +13154,21 @@ "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/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -12354,6 +13180,7 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } @@ -12362,6 +13189,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -12380,6 +13208,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==", + "license": "MIT", "engines": { "node": ">=0.10.0" }, @@ -12391,6 +13220,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -12399,6 +13229,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -12413,6 +13244,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -12423,6 +13255,7 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -12440,6 +13273,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -12454,41 +13288,37 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz", "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==", + "license": "Unlicense", "engines": { "node": ">=6.9" } }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -12500,13 +13330,15 @@ "node_modules/shallow-copy": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==" + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==", + "license": "MIT" }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -12519,6 +13351,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12527,21 +13360,80 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/short-unique-id/-/short-unique-id-5.2.0.tgz", "integrity": "sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==", + "license": "Apache-2.0", "bin": { "short-unique-id": "bin/short-unique-id", "suid": "bin/short-unique-id" } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "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/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==", + "dev": true, + "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-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==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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" @@ -12554,13 +13446,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -12571,58 +13465,15 @@ "node_modules/signum": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/signum/-/signum-1.0.0.tgz", - "integrity": "sha512-yodFGwcyt59XRh7w5W3jPcIQb3Bwi21suEfT7MAWnBX3iCdklJpgDgvGT9o04UonglZN5SNMfJFkHIR/jO8GHw==" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } + "integrity": "sha512-yodFGwcyt59XRh7w5W3jPcIQb3Bwi21suEfT7MAWnBX3iCdklJpgDgvGT9o04UonglZN5SNMfJFkHIR/jO8GHw==", + "license": "MIT" }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "dev": true, + "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", @@ -12632,65 +13483,18 @@ "node": ">= 10" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/slashes": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", - "dev": true - }, - "node_modules/sort-asc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", - "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-desc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz", - "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-object": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz", - "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==", - "dependencies": { - "bytewise": "^1.1.0", - "get-value": "^2.0.2", - "is-extendable": "^0.1.1", - "sort-asc": "^0.2.0", - "sort-desc": "^0.2.0", - "union-value": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-object/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } + "dev": true, + "license": "ISC" }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12699,6 +13503,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12707,6 +13512,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", "peer": true, "dependencies": { "buffer-from": "^1.0.0", @@ -12717,6 +13523,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.10.0" @@ -12726,6 +13533,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -12735,13 +13543,15 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -12751,45 +13561,26 @@ "version": "3.0.20", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "dev": true, + "license": "CC0-1.0" }, "node_modules/split.js": { "version": "1.6.5", "resolved": "https://registry.npmjs.org/split.js/-/split.js-1.6.5.tgz", - "integrity": "sha512-mPTnGCiS/RiuTNsVhCm9De9cCAUsrNFFviRbADdKiiV+Kk8HKp/0fWu7Kr8pi3/yBmsqLFHuXGT9UUZ+CNLwFw==" + "integrity": "sha512-mPTnGCiS/RiuTNsVhCm9De9cCAUsrNFFviRbADdKiiV+Kk8HKp/0fWu7Kr8pi3/yBmsqLFHuXGT9UUZ+CNLwFw==", + "license": "MIT" }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "node_modules/stack-generator": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } @@ -12806,17 +13597,20 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" }, "node_modules/stacktrace-gps": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz", "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==", + "license": "MIT", "dependencies": { "source-map": "0.5.6", "stackframe": "^1.3.4" @@ -12826,6 +13620,7 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12834,6 +13629,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", + "license": "MIT", "dependencies": { "error-stack-parser": "^2.0.6", "stack-generator": "^2.0.5", @@ -12844,20 +13640,23 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz", "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==", + "license": "MIT", "dependencies": { "escodegen": "^2.1.0" } }, "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", - "dev": true + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "dev": true, + "license": "MIT" }, "node_modules/stream-parser": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", + "license": "MIT", "dependencies": { "debug": "2" } @@ -12866,6 +13665,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -12873,17 +13673,20 @@ "node_modules/stream-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "license": "MIT" }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -12891,12 +13694,14 @@ "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/string-split-by": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==", + "license": "MIT", "dependencies": { "parenthesis": "^3.1.5" } @@ -12906,6 +13711,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -12924,6 +13730,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12937,53 +13744,42 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } + "license": "MIT" }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -12997,21 +13793,26 @@ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13021,15 +13822,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13039,6 +13845,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -13052,15 +13859,19 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-ansi-cjs": { @@ -13069,6 +13880,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13076,11 +13888,25 @@ "node": ">=8" } }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -13093,6 +13919,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -13103,12 +13930,14 @@ "node_modules/strongly-connected-components": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz", - "integrity": "sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA==" + "integrity": "sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA==", + "license": "MIT" }, "node_modules/style-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "license": "MIT", "engines": { "node": ">= 18.12.0" }, @@ -13123,12 +13952,14 @@ "node_modules/stylis": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" }, "node_modules/supercluster": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz", "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==", + "license": "ISC", "dependencies": { "kdbush": "^3.0.0" } @@ -13136,28 +13967,33 @@ "node_modules/supercluster/node_modules/kdbush": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", - "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==" + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==", + "license": "ISC" }, "node_modules/superscript-text": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/superscript-text/-/superscript-text-1.0.0.tgz", - "integrity": "sha512-gwu8l5MtRZ6koO0icVTlmN5pm7Dhh1+Xpe9O4x6ObMAsW+3jPbW14d1DsBq1F4wiI+WOFjXF35pslgec/G8yCQ==" + "integrity": "sha512-gwu8l5MtRZ6koO0icVTlmN5pm7Dhh1+Xpe9O4x6ObMAsW+3jPbW14d1DsBq1F4wiI+WOFjXF35pslgec/G8yCQ==", + "license": "MIT" }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -13168,12 +14004,14 @@ "node_modules/svg-arc-to-cubic-bezier": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", - "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==" + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==", + "license": "ISC" }, "node_modules/svg-path-bounds": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/svg-path-bounds/-/svg-path-bounds-1.0.2.tgz", "integrity": "sha512-H4/uAgLWrppIC0kHsb2/dWUYSmb4GE5UqH06uqWBcg6LBjX2fu0A8+JrO2/FJPZiSsNOKZAhyFFgsLTdYUvSqQ==", + "license": "MIT", "dependencies": { "abs-svg-path": "^0.1.1", "is-svg-path": "^1.0.1", @@ -13185,6 +14023,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz", "integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==", + "license": "MIT", "dependencies": { "svg-arc-to-cubic-bezier": "^3.0.0" } @@ -13193,6 +14032,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/svg-path-sdf/-/svg-path-sdf-1.1.3.tgz", "integrity": "sha512-vJJjVq/R5lSr2KLfVXVAStktfcfa1pNFjFOgyJnzZFXlO/fDZ5DmM8FpnSKKzLPfEYTVeXuVBTHF296TpxuJVg==", + "license": "MIT", "dependencies": { "bitmap-sdf": "^1.0.0", "draw-svg-path": "^1.0.0", @@ -13202,25 +14042,27 @@ } }, "node_modules/swagger-client": { - "version": "3.29.3", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.29.3.tgz", - "integrity": "sha512-OhhMAO2dwDEaxtUNDxwaqzw75uiZY5lX/2vx+U6eKCYZYhXWQ5mylU/0qfk/xMR20VyitsnzRc6KcFFjRoCS7A==", + "version": "3.33.2", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.33.2.tgz", + "integrity": "sha512-LL91X4+KZr3qMdm2knL1ncF104LlmQMNlrlQwm83r793eQiOdB5iuEz1ppdRv/r211vZE66m38VzHclXmqwW7A==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.22.15", - "@swagger-api/apidom-core": ">=1.0.0-alpha.9 <1.0.0-beta.0", - "@swagger-api/apidom-error": ">=1.0.0-alpha.9 <1.0.0-beta.0", - "@swagger-api/apidom-json-pointer": ">=1.0.0-alpha.9 <1.0.0-beta.0", - "@swagger-api/apidom-ns-openapi-3-1": ">=1.0.0-alpha.9 <1.0.0-beta.0", - "@swagger-api/apidom-reference": ">=1.0.0-alpha.9 <1.0.0-beta.0", - "cookie": "~0.6.0", + "@scarf/scarf": "=1.4.0", + "@swagger-api/apidom-core": ">=1.0.0-beta.6 <1.0.0-rc.0", + "@swagger-api/apidom-error": ">=1.0.0-beta.6 <1.0.0-rc.0", + "@swagger-api/apidom-json-pointer": ">=1.0.0-beta.6 <1.0.0-rc.0", + "@swagger-api/apidom-ns-openapi-3-1": ">=1.0.0-beta.6 <1.0.0-rc.0", + "@swagger-api/apidom-reference": ">=1.0.0-beta.6 <1.0.0-rc.0", + "@swaggerexpert/cookie": "^1.4.1", "deepmerge": "~4.3.0", "fast-json-patch": "^3.0.0-1", "js-yaml": "^4.1.0", "neotraverse": "=0.6.18", "node-abort-controller": "^3.1.1", "node-fetch-commonjs": "^3.3.2", - "openapi-path-templating": "^1.5.1", - "openapi-server-url-templating": "^1.0.0", + "openapi-path-templating": "^2.0.1", + "openapi-server-url-templating": "^1.2.0", "ramda": "^0.30.1", "ramda-adjunct": "^5.0.0" } @@ -13229,6 +14071,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13237,6 +14080,7 @@ "version": "5.17.14", "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.17.14.tgz", "integrity": "sha512-mCXerZrbcn4ftPYifUF0+iKIRTHoVCv0HcJc/sXl9nCe3oeWdsjmOWVqKabzzAkAa0NwsbKNJFv2UL/Ivnf6VQ==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.24.5", "@braintree/sanitize-url": "=7.0.2", @@ -13277,30 +14121,39 @@ "react-dom": ">=16.8.0 <19" } }, + "node_modules/swagger-ui-react/node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, "node_modules/swagger-ui-react/node_modules/dompurify": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.4.tgz", - "integrity": "sha512-2gnshi6OshmuKil8rMZuQCGiUF3cUxHY3NGDzUAdUx/NPEe5DVnO8BDoAQouvgwnx0R/+a6jUn36Z0FSdq8vww==" + "integrity": "sha512-2gnshi6OshmuKil8rMZuQCGiUF3cUxHY3NGDzUAdUx/NPEe5DVnO8BDoAQouvgwnx0R/+a6jUn36Z0FSdq8vww==", + "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/swagger-ui-react/node_modules/immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/swagger-ui-react/node_modules/react-redux": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", "dependencies": { - "@types/use-sync-external-store": "^0.0.3", - "use-sync-external-store": "^1.0.0" + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" }, "peerDependencies": { - "@types/react": "^18.2.25", - "react": "^18.0", + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", "redux": "^5.0.0" }, "peerDependenciesMeta": { @@ -13315,12 +14168,14 @@ "node_modules/swagger-ui-react/node_modules/redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" }, "node_modules/swagger-ui-react/node_modules/redux-immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz", "integrity": "sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg==", + "license": "BSD-3-Clause", "peerDependencies": { "immutable": "^3.8.1 || ^4.0.0-rc.1" } @@ -13328,19 +14183,22 @@ "node_modules/swagger-ui-react/node_modules/reselect": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", - "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==" + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "dev": true, + "license": "MIT", "dependencies": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" @@ -13353,71 +14211,20 @@ } }, "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "optional": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "peer": true, "engines": { - "node": ">= 6" + "node": ">=6" } }, "node_modules/terser": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz", - "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "license": "BSD-2-Clause", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -13433,16 +14240,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "license": "MIT", "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -13466,11 +14274,69 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/test-exclude": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^10.4.1", @@ -13480,36 +14346,11 @@ "node": ">=18" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, "node_modules/throttle-debounce": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", + "license": "MIT", "engines": { "node": ">=10" } @@ -13518,6 +14359,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -13527,74 +14369,55 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT", "optional": true }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", - "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", - "dev": true + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.6.tgz", - "integrity": "sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", "dev": true, + "license": "MIT", "dependencies": { - "fdir": "^6.3.0", + "fdir": "^6.4.2", "picomatch": "^4.0.2" }, "engines": { "node": ">=12.0.0" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.3.0.tgz", - "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==", - "dev": true, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/tinypool": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", - "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" } @@ -13602,13 +14425,15 @@ "node_modules/tinyqueue": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", - "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", + "license": "ISC" }, "node_modules/tinyrainbow": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -13618,45 +14443,42 @@ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/tldts": { - "version": "6.1.48", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.48.tgz", - "integrity": "sha512-SPbnh1zaSzi/OsmHb1vrPNnYuwJbdWjwo5TbBYYMlTtH3/1DSb41t8bcSxkwDmmbG2q6VLPVvQc7Yf23T+1EEw==", + "version": "6.1.71", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.71.tgz", + "integrity": "sha512-LQIHmHnuzfZgZWAf2HzL83TIIrD8NhhI0DVxqo9/FdOd4ilec+NTNZOlDZf7EwrTNoutccbsHjvWHYXLAtvxjw==", "dev": true, + "license": "MIT", "dependencies": { - "tldts-core": "^6.1.48" + "tldts-core": "^6.1.71" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.48", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.48.tgz", - "integrity": "sha512-3gD9iKn/n2UuFH1uilBviK9gvTNT6iYwdqrj1Vr5mh8FuelvpRNaYVH4pNYqUgOGU4aAdL9X35eLuuj0gRsx+A==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } + "version": "6.1.71", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.71.tgz", + "integrity": "sha512-LRbChn2YRpic1KxY+ldL1pGXN/oVvKfCVufwfVzEQdFYNo39uF7AJa/WXdo+gYO7PTvdfkCPCed6Hkvz/kR7jg==", + "dev": true, + "license": "MIT" }, "node_modules/to-float32": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/to-float32/-/to-float32-1.1.0.tgz", - "integrity": "sha512-keDnAusn/vc+R3iEiSDw8TOF7gPiTLdK1ArvWtYbJQiVfmRg6i/CAvbKq3uIS0vWroAC7ZecN3DjQKw3aSklUg==" + "integrity": "sha512-keDnAusn/vc+R3iEiSDw8TOF7gPiTLdK1ArvWtYbJQiVfmRg6i/CAvbKq3uIS0vWroAC7ZecN3DjQKw3aSklUg==", + "license": "MIT" }, "node_modules/to-px": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-px/-/to-px-1.0.1.tgz", "integrity": "sha512-2y3LjBeIZYL19e5gczp14/uRWFDtDUErJPVN3VU9a7SJO+RjGRtYR47aMN2bZgGlxvW4ZcEz2ddUPVHXcMfuXw==", + "license": "MIT", "dependencies": { "parse-unit": "^1.0.1" } @@ -13666,6 +14488,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -13676,12 +14499,14 @@ "node_modules/toggle-selection": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "license": "MIT" }, "node_modules/topojson-client": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "license": "ISC", "dependencies": { "commander": "2" }, @@ -13696,15 +14521,17 @@ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tough-cookie": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", - "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", + "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tldts": "^6.1.32" }, @@ -13717,6 +14544,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, @@ -13725,57 +14553,62 @@ } }, "node_modules/tree-sitter": { - "version": "0.20.4", - "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.4.tgz", - "integrity": "sha512-rjfR5dc4knG3jnJNN/giJ9WOoN1zL/kZyrS0ILh+eqq8RNcIbiXA63JsMEgluug0aNvfQvK4BfCErN1vIzvKog==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.21.1.tgz", + "integrity": "sha512-7dxoA6kYvtgWw80265MyqJlkRl4yawIjO7S5MigytjELkX43fV2WsAXzsNfO7sBpPPCF5Gp0+XzHk0DwLCq3xQ==", "hasInstallScript": true, + "license": "MIT", "optional": true, + "peer": true, "dependencies": { - "nan": "^2.17.0", - "prebuild-install": "^7.1.1" + "node-addon-api": "^8.0.0", + "node-gyp-build": "^4.8.0" } }, "node_modules/tree-sitter-json": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.20.2.tgz", - "integrity": "sha512-eUxrowp4F1QEGk/i7Sa+Xl8Crlfp7J0AXxX1QdJEQKQYMWhgMbCIgyQvpO3Q0P9oyTrNQxRLlRipDS44a8EtRw==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "nan": "^2.18.0" - } - }, - "node_modules/tree-sitter-yaml": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/tree-sitter-yaml/-/tree-sitter-yaml-0.5.0.tgz", - "integrity": "sha512-POJ4ZNXXSWIG/W4Rjuyg36MkUD4d769YRUGKRqN+sVaj/VCo6Dh6Pkssn1Rtewd5kybx+jT1BWMyWN0CijXnMA==", + "version": "0.24.8", + "resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.24.8.tgz", + "integrity": "sha512-Tc9ZZYwHyWZ3Tt1VEw7Pa2scu1YO7/d2BCBbKTx5hXwig3UfdQjsOPkPyLpDJOn/m1UBEWYAtSdGAwCSyagBqQ==", "hasInstallScript": true, + "license": "MIT", "optional": true, "dependencies": { - "nan": "^2.14.0" + "node-addon-api": "^8.2.2", + "node-gyp-build": "^4.8.2" + }, + "peerDependencies": { + "tree-sitter": "^0.21.1" + }, + "peerDependenciesMeta": { + "tree-sitter": { + "optional": true + } } }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-easing": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz", - "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==" + "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==", + "license": "Unlicense" }, "node_modules/ts-invariant": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "license": "MIT", "dependencies": { "tslib": "^2.1.0" }, @@ -13786,40 +14619,33 @@ "node_modules/ts-mixer": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", - "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==", + "license": "MIT" }, "node_modules/ts-toolbelt": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", - "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==" + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "license": "Apache-2.0" }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/type": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "license": "ISC" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -13831,6 +14657,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -13839,30 +14666,32 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -13872,17 +14701,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -13892,17 +14723,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -13914,12 +14746,14 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" }, "node_modules/typedarray-pool": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/typedarray-pool/-/typedarray-pool-1.2.0.tgz", "integrity": "sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ==", + "license": "MIT", "dependencies": { "bit-twiddle": "^1.0.0", "dup": "^1.0.0" @@ -13929,6 +14763,7 @@ "version": "0.30.1", "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "license": "MIT", "dependencies": { "ts-toolbelt": "^9.6.0" } @@ -13938,6 +14773,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -13946,23 +14782,33 @@ "node": ">=14.17" } }, - "node_modules/typewise": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", - "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", + "node_modules/typescript-eslint": { + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.1.tgz", + "integrity": "sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==", + "dev": true, + "license": "MIT", "dependencies": { - "typewise-core": "^1.2.0" + "@typescript-eslint/eslint-plugin": "8.19.1", + "@typescript-eslint/parser": "8.19.1", + "@typescript-eslint/utils": "8.19.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/typewise-core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", - "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==" - }, "node_modules/ua-parser-js": { - "version": "0.7.39", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.39.tgz", - "integrity": "sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==", + "version": "0.7.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz", + "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==", "funding": [ { "type": "opencollective", @@ -13977,6 +14823,7 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", "bin": { "ua-parser-js": "script/cli.js" }, @@ -13985,15 +14832,19 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14002,44 +14853,25 @@ "node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" }, "node_modules/unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "license": "MIT" }, "node_modules/unraw": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unraw/-/unraw-3.0.0.tgz", - "integrity": "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==" + "integrity": "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==", + "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "funding": [ { "type": "opencollective", @@ -14054,9 +14886,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -14068,12 +14901,14 @@ "node_modules/update-diff": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-diff/-/update-diff-1.1.0.tgz", - "integrity": "sha512-rCiBPiHxZwT4+sBhEbChzpO5hYHjm91kScWgdHf4Qeafs6Ba7MBl+d9GlGv72bcTZQO0sLmtQS1pHSWoCLtN/A==" + "integrity": "sha512-rCiBPiHxZwT4+sBhEbChzpO5hYHjm91kScWgdHf4Qeafs6Ba7MBl+d9GlGv72bcTZQO0sLmtQS1pHSWoCLtN/A==", + "license": "MIT" }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -14082,25 +14917,33 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, "node_modules/use-composed-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", - "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", + "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", + "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/use-isomorphic-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", + "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -14109,14 +14952,15 @@ } }, "node_modules/use-latest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", - "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", + "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", + "license": "MIT", "dependencies": { "use-isomorphic-layout-effect": "^1.1.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -14128,22 +14972,25 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/use-sync-external-store": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", - "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/use-undo": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/use-undo/-/use-undo-1.1.1.tgz", "integrity": "sha512-2NNpJv7TDQpyETgRTG5I/CsABX5nhExpx8PEhWiDsnW9C5BA6Xnn8G9u/lPeg3+JsBrBtUx8/5bMbGmpnWz1Cw==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.6", "react-dom": ">=16.8.6" @@ -14152,7 +14999,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/uuid": { "version": "10.0.0", @@ -14162,6 +15010,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -14170,15 +15019,17 @@ "version": "2.12.3", "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", + "license": "ISC", "dependencies": { "@sphinxxxx/color-conversion": "^2.2.2" } }, "node_modules/vite": { - "version": "5.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", - "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -14238,6 +15089,7 @@ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.1.tgz", "integrity": "sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.6", @@ -14259,6 +15111,7 @@ "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.1.tgz", "integrity": "sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/expect": "2.1.1", "@vitest/mocker": "2.1.1", @@ -14322,6 +15175,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14330,6 +15184,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "license": "MIT", "dependencies": { "@mapbox/point-geometry": "0.1.0", "@mapbox/vector-tile": "^1.3.1", @@ -14341,6 +15196,7 @@ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, + "license": "MIT", "dependencies": { "xml-name-validator": "^5.0.0" }, @@ -14352,6 +15208,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "license": "MIT", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -14364,26 +15221,30 @@ "node_modules/weak-map": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz", - "integrity": "sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==" + "integrity": "sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==", + "license": "Apache-2.0" }, "node_modules/web-streams-polyfill": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/web-tree-sitter": { - "version": "0.20.3", - "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.3.tgz", - "integrity": "sha512-zKGJW9r23y3BcJusbgvnOH2OYAW40MXAOi9bi3Gcc7T4Gms9WWgXF8m6adsJWpGJEhgOzCrfiz1IzKowJWrtYw==", + "version": "0.24.5", + "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.24.5.tgz", + "integrity": "sha512-+J/2VSHN8J47gQUAvF8KDadrfz6uFYVjxoxbKWDoXVsH2u7yLdarCnIURnrMA6uSRkgX3SdmqM5BOoQjPdSh5w==", + "license": "MIT", "optional": true }, "node_modules/webgl-context": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/webgl-context/-/webgl-context-2.2.0.tgz", "integrity": "sha512-q/fGIivtqTT7PEoF07axFIlHNk/XCPaYpq64btnepopSWvKNFkoORlQYgqDigBIuGA1ExnFd/GnSUnBNEPQY7Q==", + "license": "MIT", "dependencies": { "get-canvas-context": "^1.0.1" } @@ -14393,23 +15254,25 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } }, "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "license": "MIT", "peer": true, "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", @@ -14447,6 +15310,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "license": "MIT", "peer": true, "engines": { "node": ">=10.13.0" @@ -14456,6 +15320,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "peer": true, "dependencies": { "esrecurse": "^4.3.0", @@ -14469,6 +15334,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=4.0" @@ -14479,6 +15345,7 @@ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, @@ -14491,6 +15358,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -14503,15 +15371,17 @@ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/whatwg-url": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", + "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" @@ -14525,6 +15395,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -14536,39 +15407,45 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, + "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -14582,6 +15459,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -14596,15 +15474,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -14619,6 +15499,7 @@ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, + "license": "MIT", "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" @@ -14635,6 +15516,7 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14643,6 +15525,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.3.tgz", "integrity": "sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ==", + "license": "MIT", "dependencies": { "object-assign": "^4.1.0" } @@ -14652,6 +15535,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -14670,6 +15554,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -14682,50 +15567,19 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -14735,16 +15589,17 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=8" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { @@ -14752,6 +15607,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -14759,31 +15615,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -14803,12 +15646,14 @@ "node_modules/xml": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "license": "MIT" }, "node_modules/xml-but-prettier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml-but-prettier/-/xml-but-prettier-1.0.1.tgz", "integrity": "sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ==", + "license": "MIT", "dependencies": { "repeat-string": "^1.5.2" } @@ -14817,6 +15662,7 @@ "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", "dependencies": { "sax": "^1.2.4" }, @@ -14829,6 +15675,7 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18" } @@ -14837,12 +15684,14 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { "node": ">=0.4" } @@ -14850,12 +15699,14 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", "engines": { "node": ">= 6" } @@ -14864,6 +15715,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -14874,7 +15726,8 @@ "node_modules/zenscroll": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/zenscroll/-/zenscroll-4.0.2.tgz", - "integrity": "sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==" + "integrity": "sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==", + "license": "Unlicense" } } } diff --git a/webapp/package.json b/webapp/package.json index aea940a029..e0c90e5d68 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -8,7 +8,7 @@ "clean": "rm -rf dist node_modules/.vite", "coverage": "vitest run --coverage", "dev": "vite", - "lint": "tsc --noEmit && eslint . --ext ts,tsx --report-unused-disable-directives", + "lint": "tsc --noEmit && eslint . --report-unused-disable-directives", "preview": "vite preview", "test": "vitest", "test:ui": "vitest --ui" @@ -75,12 +75,12 @@ "xml-js": "1.6.11" }, "devDependencies": { + "@eslint/js": "9.18.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/react": "16.0.1", "@testing-library/user-event": "14.5.2", "@total-typescript/ts-reset": "0.6.1", "@types/d3": "5.16.0", - "@types/date-fns": "2.6.0", "@types/debug": "4.1.12", "@types/draft-convert": "2.1.8", "@types/draft-js": "0.11.18", @@ -100,31 +100,30 @@ "@types/react-virtualized-auto-sizer": "1.0.4", "@types/react-window": "1.8.8", "@types/swagger-ui-react": "4.18.3", - "@types/testing-library__jest-dom": "6.0.0", "@types/tinycolor2": "1.4.6", "@types/uuid": "10.0.0", - "@typescript-eslint/eslint-plugin": "7.2.0", - "@typescript-eslint/parser": "7.2.0", "@vitejs/plugin-react-swc": "3.7.0", "@vitest/coverage-v8": "2.1.1", "@vitest/ui": "2.1.1", - "eslint": "8.57.1", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-jsdoc": "48.10.0", + "eslint": "9.18.0", + "eslint-config-prettier": "10.0.1", + "eslint-plugin-jsdoc": "50.6.1", "eslint-plugin-license-header": "0.6.1", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-react": "7.37.0", - "eslint-plugin-react-hooks": "4.6.2", - "eslint-plugin-react-refresh": "0.4.12", + "eslint-plugin-react": "7.37.4", + "eslint-plugin-react-hooks": "5.1.0", + "eslint-plugin-react-refresh": "0.4.18", + "globals": "15.14.0", "husky": "9.1.6", "jsdom": "25.0.1", - "prettier": "3.3.3", + "prettier": "3.4.2", "typescript": "5.4.5", - "vite": "5.4.8", + "typescript-eslint": "8.19.1", + "vite": "5.4.14", "vitest": "2.1.1" }, "engines": { - "node": "18.16.1" + "node": "22.13.0" }, "overrides": { "react-d3-graph": { diff --git a/webapp/src/common/types.ts b/webapp/src/common/types.ts index ece13fa1ea..b8fb4e9a45 100644 --- a/webapp/src/common/types.ts +++ b/webapp/src/common/types.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Api.tsx b/webapp/src/components/App/Api.tsx index 837b80e729..cca871bd54 100644 --- a/webapp/src/components/App/Api.tsx +++ b/webapp/src/components/App/Api.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -30,9 +30,7 @@ function Api() { sx={{ backgroundColor: "#eee" }} > - + ); diff --git a/webapp/src/components/App/Data/DataListing.tsx b/webapp/src/components/App/Data/DataListing.tsx index 30968f4f30..cff6961813 100644 --- a/webapp/src/components/App/Data/DataListing.tsx +++ b/webapp/src/components/App/Data/DataListing.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,9 +15,9 @@ import { memo } from "react"; import { Typography, Box, styled } from "@mui/material"; import AutoSizer from "react-virtualized-auto-sizer"; -import { FixedSizeList, areEqual, ListChildComponentProps } from "react-window"; +import { FixedSizeList, areEqual, type ListChildComponentProps } from "react-window"; import ArrowRightIcon from "@mui/icons-material/ArrowRight"; -import { MatrixDataSetDTO } from "../../../common/types"; +import type { MatrixDataSetDTO } from "../../../common/types"; const ROW_ITEM_SIZE = 45; const BUTTONS_SIZE = 40; @@ -107,11 +107,7 @@ function DataListing(props: PropsType) { const idealHeight = ROW_ITEM_SIZE * datasets.length; return ( height - ? height + ROW_ITEM_SIZE - BUTTONS_SIZE - : idealHeight - } + height={idealHeight > height ? height + ROW_ITEM_SIZE - BUTTONS_SIZE : idealHeight} width={width} itemCount={datasets.length} itemSize={ROW_ITEM_SIZE} diff --git a/webapp/src/components/App/Data/DataPropsView.tsx b/webapp/src/components/App/Data/DataPropsView.tsx index c4b5215cf5..dd7f270180 100644 --- a/webapp/src/components/App/Data/DataPropsView.tsx +++ b/webapp/src/components/App/Data/DataPropsView.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { useState } from "react"; -import { MatrixDataSetDTO, MatrixInfoDTO } from "../../../common/types"; +import type { MatrixDataSetDTO, MatrixInfoDTO } from "../../../common/types"; import PropertiesView from "../../common/PropertiesView"; import DataListing from "./DataListing"; import { StyledListingBox } from "./styles"; @@ -33,9 +33,7 @@ function DataPropsView(props: PropTypes) { return dataset.filter( (item) => item.name.search(input) >= 0 || - !!item.matrices.find( - (matrix: MatrixInfoDTO) => matrix.id.search(input) >= 0, - ), + !!item.matrices.find((matrix: MatrixInfoDTO) => matrix.id.search(input) >= 0), ); }; diff --git a/webapp/src/components/App/Data/DatasetCreationDialog.tsx b/webapp/src/components/App/Data/DatasetCreationDialog.tsx index 90764a1977..93cf20a68c 100644 --- a/webapp/src/components/App/Data/DatasetCreationDialog.tsx +++ b/webapp/src/components/App/Data/DatasetCreationDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,22 +12,14 @@ * This file is part of the Antares project. */ -import { useState, useEffect, forwardRef, ChangeEvent } from "react"; -import { - Box, - TextField, - Typography, - Button, - Checkbox, - Chip, - Tooltip, -} from "@mui/material"; +import { useState, useEffect, forwardRef } from "react"; +import { Box, TextField, Typography, Button, Checkbox, Chip, Tooltip } from "@mui/material"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; -import axios, { AxiosError } from "axios"; +import axios, { type AxiosError } from "axios"; import HelpIcon from "@mui/icons-material/Help"; import { getGroups } from "../../../services/api/user"; -import { GroupDTO, MatrixDataSetDTO } from "../../../common/types"; +import type { GroupDTO, MatrixDataSetDTO } from "../../../common/types"; import { saveMatrix } from "./utils"; import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; import SimpleLoader from "../../common/loaders/SimpleLoader"; @@ -104,7 +96,7 @@ function DatasetCreationDialog(props: PropTypes) { } }; - const onUpload = (e: ChangeEvent) => { + const onUpload = (e: React.ChangeEvent) => { const { target } = e; if (target && target.files && target.files.length === 1) { setCurrentFile(target.files[0]); @@ -115,9 +107,7 @@ function DatasetCreationDialog(props: PropTypes) { if (add) { setSelectedGroupList(selectedGroupList.concat([item])); } else { - setSelectedGroupList( - selectedGroupList.filter((elm) => item.id !== elm.id), - ); + setSelectedGroupList(selectedGroupList.filter((elm) => item.id !== elm.id)); } }; @@ -133,7 +123,7 @@ function DatasetCreationDialog(props: PropTypes) { setPublicStatus(data.public); setName(data.name); } - } catch (e) { + } catch { enqueueSnackbar(t("settings.error.groupsError"), { variant: "error", }); @@ -150,10 +140,7 @@ function DatasetCreationDialog(props: PropTypes) { return ( {uploadProgress < 100 ? ( - + ) : ( )} @@ -238,10 +225,7 @@ function DatasetCreationDialog(props: PropTypes) { > {currentFile ? currentFile.name : t("global.chooseFile")} - + @@ -287,9 +271,7 @@ function DatasetCreationDialog(props: PropTypes) { }} > {groupList.map((item) => { - const index = selectedGroupList.findIndex( - (elm) => item.id === elm.id, - ); + const index = selectedGroupList.findIndex((elm) => item.id === elm.id); if (index >= 0) { return ( onGroupClick(true, item)} - /> + onGroupClick(true, item)} /> ); })} diff --git a/webapp/src/components/App/Data/MatrixDialog.tsx b/webapp/src/components/App/Data/MatrixDialog.tsx index 4d2b0b7765..62ac7e23e4 100644 --- a/webapp/src/components/App/Data/MatrixDialog.tsx +++ b/webapp/src/components/App/Data/MatrixDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { useTranslation } from "react-i18next"; -import { MatrixInfoDTO } from "../../../common/types"; +import type { MatrixInfoDTO } from "../../../common/types"; import BasicDialog from "@/components/common/dialogs/BasicDialog"; import MatrixContent from "@/components/common/dialogs/DatabaseUploadDialog/components/MatrixContent"; import { Button } from "@mui/material"; diff --git a/webapp/src/components/App/Data/index.tsx b/webapp/src/components/App/Data/index.tsx index 6b7fd4469b..78dcad5f19 100644 --- a/webapp/src/components/App/Data/index.tsx +++ b/webapp/src/components/App/Data/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { useState, useEffect } from "react"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; import DeleteIcon from "@mui/icons-material/Delete"; @@ -28,7 +28,7 @@ import { getMatrixList, getExportMatrixUrl, } from "../../../services/api/matrix"; -import { MatrixInfoDTO, MatrixDataSetDTO } from "../../../common/types"; +import type { MatrixInfoDTO, MatrixDataSetDTO } from "../../../common/types"; import DatasetCreationDialog from "./DatasetCreationDialog"; import ConfirmationDialog from "../../common/dialogs/ConfirmationDialog"; import RootPage from "../../common/page/RootPage"; @@ -52,15 +52,10 @@ function Data() { // User modal const [openModal, setOpenModal] = useState(false); - const [openConfirmationModal, setOpenConfirmationModal] = - useState(false); + const [openConfirmationModal, setOpenConfirmationModal] = useState(false); const [matrixModal, setMatrixModal] = useState(false); - const [currentData, setCurrentData] = useState< - MatrixDataSetDTO | undefined - >(); - const [currentMatrix, setCurrentMatrix] = useState< - MatrixInfoDTO | undefined - >(); + const [currentData, setCurrentData] = useState(); + const [currentMatrix, setCurrentMatrix] = useState(); const handleCreation = () => { setCurrentData(undefined); @@ -170,9 +165,7 @@ function Data() { item.id === selectedItem)?.owner - .id ? ( + user.id === dataList.find((item) => item.id === selectedItem)?.owner.id ? ( - {`Matrices - ${ - dataList.find((item) => item.id === selectedItem) - ?.name - }`} + {`Matrices - ${dataList.find((item) => item.id === selectedItem)?.name}`} @@ -238,9 +228,7 @@ function Data() { alignItems: "center", }} > - {`Matrices - ${ - dataList.find((item) => item.id === selectedItem)?.name - }`} + {`Matrices - ${dataList.find((item) => item.id === selectedItem)?.name}`} ) } @@ -258,11 +246,7 @@ function Data() { )} {!loaded && } {matrixModal && currentMatrix && ( - + )} {openModal && ( 0) { - const promises = permissions.map( - (perm: { user: UserDTO; type: number }) => - createRole({ - group_id: newGroup.id, - type: perm.type, - identity_id: perm.user.id, - }), + const promises = permissions.map((perm: { user: UserDTO; type: number }) => + createRole({ + group_id: newGroup.id, + type: perm.type, + identity_id: perm.user.id, + }), ); const res: RoleDetailsDTO[] = await mounted(Promise.all(promises)); @@ -93,10 +86,7 @@ function CreateGroupDialog(props: Props) { // Because we cannot recover roles eventually created reloadFetchGroups(); - enqueueErrorSnackbar( - t("settings.error.userRolesSave", { 0: newGroup.name }), - e as Error, - ); + enqueueErrorSnackbar(t("settings.error.userRolesSave", { 0: newGroup.name }), e as Error); } closeDialog(); diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx index 87e47d9db2..517f3c9021 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/GroupForm.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -31,24 +31,20 @@ import { ListItemIcon, ListItemText, CircularProgress, - SelectChangeEvent, + type SelectChangeEvent, } from "@mui/material"; import { Controller, useFieldArray } from "react-hook-form"; import { v4 as uuidv4 } from "uuid"; import DeleteIcon from "@mui/icons-material/Delete"; import GroupIcon from "@mui/icons-material/Group"; -import { - RESERVED_GROUP_NAMES, - RESERVED_USER_NAMES, - ROLE_TYPE_KEYS, -} from "../../../utils"; -import { RoleType, UserDTO } from "../../../../../../common/types"; +import { RESERVED_GROUP_NAMES, RESERVED_USER_NAMES, ROLE_TYPE_KEYS } from "../../../utils"; +import { RoleType, type UserDTO } from "../../../../../../common/types"; import { roleToString, sortByName } from "../../../../../../services/utils"; import usePromise from "../../../../../../hooks/usePromise"; import { getGroups, getUsers } from "../../../../../../services/api/user"; import { getAuthUser } from "../../../../../../redux/selectors"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import { UseFormReturnPlus } from "../../../../../common/Form/types"; +import type { UseFormReturnPlus } from "../../../../../common/Form/types"; import { validateString } from "@/utils/validation/string"; function GroupForm(props: UseFormReturnPlus) { @@ -66,10 +62,7 @@ function GroupForm(props: UseFormReturnPlus) { const { data: users, isLoading: isUsersLoading } = usePromise(getUsers); const { data: groups } = usePromise(getGroups); - const existingGroups = useMemo( - () => groups?.map((group) => group.name), - [groups], - ); + const existingGroups = useMemo(() => groups?.map((group) => group.name), [groups]); const { fields, append, remove } = useFieldArray({ control, @@ -78,9 +71,7 @@ function GroupForm(props: UseFormReturnPlus) { const allowToAddPermission = selectedUser && - !getValues("permissions").some( - ({ user }: { user: UserDTO }) => user.id === selectedUser.id, - ); + !getValues("permissions").some(({ user }: { user: UserDTO }) => user.id === selectedUser.id); const filteredAndSortedUsers = useMemo(() => { if (!users) { @@ -88,10 +79,7 @@ function GroupForm(props: UseFormReturnPlus) { } return sortByName( - users.filter( - (user) => - !RESERVED_USER_NAMES.includes(user.name) && user.id !== authUser?.id, - ), + users.filter((user) => !RESERVED_USER_NAMES.includes(user.name) && user.id !== authUser?.id), ); }, [users, authUser]); @@ -138,8 +126,7 @@ function GroupForm(props: UseFormReturnPlus) { sx={{ p: 2, mt: 2, - backgroundImage: - "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", + backgroundImage: "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", }} > {t("global.permissions")} @@ -211,11 +198,7 @@ function GroupForm(props: UseFormReturnPlus) { disablePadding dense > - + diff --git a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx index ef29ca1722..513afdb473 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/GroupFormDialog/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,14 +12,11 @@ * This file is part of the Antares project. */ -import FormDialog, { - FormDialogProps, -} from "../../../../../common/dialogs/FormDialog"; -import { RoleType, UserDTO } from "../../../../../../common/types"; +import FormDialog, { type FormDialogProps } from "../../../../../common/dialogs/FormDialog"; +import type { RoleType, UserDTO } from "../../../../../../common/types"; import GroupForm from "./GroupForm"; -export interface GroupFormDialogProps - extends Omit { +export interface GroupFormDialogProps extends Omit { defaultValues?: { name?: string; permissions?: Array<{ user: UserDTO; type: RoleType }>; diff --git a/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx b/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx index 42e4541ed9..e2dd43e545 100644 --- a/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx +++ b/webapp/src/components/App/Settings/Groups/dialog/UpdateGroupDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -18,7 +18,7 @@ import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper } from "react-use"; import { useSnackbar } from "notistack"; import * as R from "ramda"; -import { GroupDetailsDTO } from "../../../../../common/types"; +import type { GroupDetailsDTO } from "../../../../../common/types"; import { createRole, deleteUserRole, @@ -26,16 +26,11 @@ import { updateGroup, } from "../../../../../services/api/user"; import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; -import GroupFormDialog, { GroupFormDialogProps } from "./GroupFormDialog"; -import { GroupEdit } from ".."; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; +import GroupFormDialog, { type GroupFormDialogProps } from "./GroupFormDialog"; +import type { GroupEdit } from ".."; +import type { SubmitHandlerPlus } from "../../../../common/Form/types"; -type InheritPropsToOmit = - | "title" - | "titleIcon" - | "defaultValues" - | "onSubmit" - | "onCancel"; +type InheritPropsToOmit = "title" | "titleIcon" | "defaultValues" | "onSubmit" | "onCancel"; interface Props extends Omit { group: GroupDetailsDTO; @@ -76,8 +71,7 @@ function UpdateGroupDialog(props: Props) { //////////////////////////////////////////////////////////////// const handleSubmit = async (data: SubmitHandlerPlus) => { - const { name, permissions }: GroupFormDialogProps["defaultValues"] = - data.dirtyValues; + const { name, permissions }: GroupFormDialogProps["defaultValues"] = data.dirtyValues; const groupName = name || group.name; const notifySuccess = R.once(() => @@ -92,10 +86,7 @@ function UpdateGroupDialog(props: Props) { editGroup({ id: group.id, name: groupName }); notifySuccess(); } catch (e) { - enqueueErrorSnackbar( - t("settings.error.groupSave", { 0: groupName }), - e as Error, - ); + enqueueErrorSnackbar(t("settings.error.groupSave", { 0: groupName }), e as Error); throw e; } } @@ -152,10 +143,7 @@ function UpdateGroupDialog(props: Props) { // Because we cannot recover roles eventually deleted/created reloadFetchUsers(); - enqueueErrorSnackbar( - t("settings.error.groupRolesSave", { 0: groupName }), - e as Error, - ); + enqueueErrorSnackbar(t("settings.error.groupRolesSave", { 0: groupName }), e as Error); } } diff --git a/webapp/src/components/App/Settings/Groups/index.tsx b/webapp/src/components/App/Settings/Groups/index.tsx index b92e62ffe8..e96e001c64 100644 --- a/webapp/src/components/App/Settings/Groups/index.tsx +++ b/webapp/src/components/App/Settings/Groups/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -25,16 +25,16 @@ import { Typography, } from "@mui/material"; import { produce } from "immer"; -import { ReactNode, useMemo, useReducer, useState } from "react"; +import { useMemo, useReducer, useState } from "react"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; -import { Action } from "redux"; +import type { Action } from "redux"; import DeleteIcon from "@mui/icons-material/Delete"; import EditIcon from "@mui/icons-material/Edit"; import * as R from "ramda"; import GroupIcon from "@mui/icons-material/Group"; import { useSnackbar } from "notistack"; -import { GroupDetailsDTO } from "../../../../common/types"; +import type { GroupDetailsDTO } from "../../../../common/types"; import usePromiseWithSnackbarError from "../../../../hooks/usePromiseWithSnackbarError"; import { deleteGroup, getGroups } from "../../../../services/api/user"; import { sortByName } from "../../../../services/utils"; @@ -59,11 +59,7 @@ export type GroupEdit = Partial & { }; interface GroupAction extends Action { - payload?: - | GroupDetailsDTO["id"] - | GroupDetailsDTO - | GroupDetailsDTO[] - | GroupEdit; + payload?: GroupDetailsDTO["id"] | GroupDetailsDTO | GroupDetailsDTO[] | GroupEdit; } const reducer = produce((draft, action) => { @@ -171,10 +167,7 @@ function Groups() { }); }) .catch((err) => { - enqueueErrorSnackbar( - t("settings.error.groupDelete", { 0: group.name }), - err, - ); + enqueueErrorSnackbar(t("settings.error.groupDelete", { 0: group.name }), err); }) .finally(() => { setGroupsInLoading((prev) => prev.filter((u) => u !== group)); @@ -208,7 +201,7 @@ function Groups() { - )) as ReactNode, + )) as React.ReactNode, ], // Group list [ @@ -227,10 +220,7 @@ function Groups() { setGroupToEdit(group)}> - setGroupToDelete(group)} - > + setGroupToDelete(group)}> diff --git a/webapp/src/components/App/Settings/Maintenance/index.tsx b/webapp/src/components/App/Settings/Maintenance/index.tsx index 624006a4e6..569a443b5a 100644 --- a/webapp/src/components/App/Settings/Maintenance/index.tsx +++ b/webapp/src/components/App/Settings/Maintenance/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -24,7 +24,7 @@ import { } from "@mui/material"; import { useSnackbar } from "notistack"; import { useState } from "react"; -import { Controller, FieldValues, useForm } from "react-hook-form"; +import { Controller, useForm, type FieldValues } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useUpdateEffect } from "react-use"; import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; @@ -113,9 +113,7 @@ function Maintenance() { return ( <> - + - ({ - group: perm.group.id, - role: perm.type, - }), - ) as BotCreateDTO["roles"]; + const roles = permissions.map((perm: { group: GroupDTO; type: RoleType }) => ({ + group: perm.group.id, + role: perm.type, + })) as BotCreateDTO["roles"]; - const tokenValue = await mounted( - createBot({ name, is_author: false, roles }), - ); + const tokenValue = await mounted(createBot({ name, is_author: false, roles })); setTokenValueToDisplay(tokenValue); @@ -73,10 +64,7 @@ function CreateTokenDialog(props: Props) { variant: "success", }); } catch (e) { - enqueueErrorSnackbar( - t("settings.error.tokenSave", { 0: name }), - e as Error, - ); + enqueueErrorSnackbar(t("settings.error.tokenSave", { 0: name }), e as Error); closeDialog(); } finally { reloadFetchTokens(); @@ -84,9 +72,7 @@ function CreateTokenDialog(props: Props) { }; const handleCopyClick = () => { - navigator.clipboard - .writeText(tokenValueToDisplay) - .then(() => setShowCopiedTooltip(true)); + navigator.clipboard.writeText(tokenValueToDisplay).then(() => setShowCopiedTooltip(true)); }; //////////////////////////////////////////////////////////////// @@ -122,10 +108,7 @@ function CreateTokenDialog(props: Props) { }} > {tokenValueToDisplay} - + !RESERVED_GROUP_NAMES.includes(group.name)), - ); + return sortByName(groups.filter((group) => !RESERVED_GROUP_NAMES.includes(group.name))); }, [groups]); //////////////////////////////////////////////////////////////// @@ -109,9 +104,7 @@ function TokenForm(props: Props) { } const group = authUser?.groups?.find((gp) => gp.name === groupName); - return group - ? ROLE_TYPE_KEYS.filter((key) => RoleType[key] <= group.role) - : []; + return group ? ROLE_TYPE_KEYS.filter((key) => RoleType[key] <= group.role) : []; }; //////////////////////////////////////////////////////////////// @@ -140,8 +133,7 @@ function TokenForm(props: Props) { sx={{ p: 2, mt: 2, - backgroundImage: - "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", + backgroundImage: "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", }} > {t("global.permissions")} @@ -225,11 +217,7 @@ function TokenForm(props: Props) { disablePadding dense > - + diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx index 24516f6b7e..8e82ac3a02 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenFormDialog/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,13 +12,10 @@ * This file is part of the Antares project. */ -import FormDialog, { - FormDialogProps, -} from "../../../../../common/dialogs/FormDialog"; +import FormDialog, { type FormDialogProps } from "../../../../../common/dialogs/FormDialog"; import TokenForm from "./TokenForm"; -export interface TokenFormDialogProps - extends Omit { +export interface TokenFormDialogProps extends Omit { onlyPermissions?: boolean; } @@ -27,9 +24,7 @@ function TokenFormDialog(props: TokenFormDialogProps) { return ( - {(formObj) => ( - - )} + {(formObj) => } ); } diff --git a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx index 23f12dc088..015c1286ba 100644 --- a/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx +++ b/webapp/src/components/App/Settings/Tokens/dialog/TokenInfoDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,9 +16,9 @@ import { DialogContentText } from "@mui/material"; import { useTranslation } from "react-i18next"; import InfoIcon from "@mui/icons-material/Info"; import { useMemo } from "react"; -import { FieldValues } from "react-hook-form"; -import { BotDetailsDTO } from "../../../../../common/types"; -import OkDialog, { OkDialogProps } from "../../../../common/dialogs/OkDialog"; +import type { FieldValues } from "react-hook-form"; +import type { BotDetailsDTO } from "../../../../../common/types"; +import OkDialog, { type OkDialogProps } from "../../../../common/dialogs/OkDialog"; import TokenForm from "./TokenFormDialog/TokenForm"; import Form from "../../../../common/Form"; @@ -54,9 +54,7 @@ function TokenInfoDialog(props: Props) { title={t("global.permissions")} titleIcon={InfoIcon} > - - {t("settings.currentToken", { 0: token.name })} - + {t("settings.currentToken", { 0: token.name })}
{(formObj) => } diff --git a/webapp/src/components/App/Settings/Tokens/index.tsx b/webapp/src/components/App/Settings/Tokens/index.tsx index 18aa3b4d9a..1fd203ea48 100644 --- a/webapp/src/components/App/Settings/Tokens/index.tsx +++ b/webapp/src/components/App/Settings/Tokens/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -25,23 +25,18 @@ import { Typography, } from "@mui/material"; import { produce } from "immer"; -import { ReactNode, useMemo, useReducer, useState } from "react"; +import { useMemo, useReducer, useState } from "react"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; -import { Action } from "redux"; +import type { Action } from "redux"; import DeleteIcon from "@mui/icons-material/Delete"; import InfoIcon from "@mui/icons-material/Info"; import TokenIcon from "@mui/icons-material/Token"; import * as R from "ramda"; import { useSnackbar } from "notistack"; -import { BotDTO, BotDetailsDTO, UserDTO } from "../../../../common/types"; +import type { BotDTO, BotDetailsDTO, UserDTO } from "../../../../common/types"; import usePromiseWithSnackbarError from "../../../../hooks/usePromiseWithSnackbarError"; -import { - deleteBot, - getBots, - getUser, - getUsers, -} from "../../../../services/api/user"; +import { deleteBot, getBots, getUser, getUsers } from "../../../../services/api/user"; import { isUserAdmin, sortByProp } from "../../../../services/utils"; import ConfirmationDialog from "../../../common/dialogs/ConfirmationDialog"; import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; @@ -65,27 +60,25 @@ interface TokenAction extends Action { payload?: BotDTO["id"] | BotDTO | BotDTO[]; } -const reducer = produce( - (draft, action) => { - const { payload } = action; +const reducer = produce((draft, action) => { + const { payload } = action; - switch (action.type) { - case TokenActionKind.ADD: { - draft.push(payload as BotDetailsDtoWithUser); - return; - } - case TokenActionKind.DELETE: { - const index = draft.findIndex((token) => token.id === payload); - if (index > -1) { - draft.splice(index, 1); - } - return; + switch (action.type) { + case TokenActionKind.ADD: { + draft.push(payload as BotDetailsDtoWithUser); + return; + } + case TokenActionKind.DELETE: { + const index = draft.findIndex((token) => token.id === payload); + if (index > -1) { + draft.splice(index, 1); } - case TokenActionKind.RESET: - return payload as BotDetailsDtoWithUser[]; + return; } - }, -); + case TokenActionKind.RESET: + return payload as BotDetailsDtoWithUser[]; + } +}); function Tokens() { const [tokenToDisplayInfo, setTokenToDisplayInfo] = useState(); @@ -175,10 +168,7 @@ function Tokens() { }); }) .catch((err) => { - enqueueErrorSnackbar( - t("settings.error.tokenDelete", { 0: token.name }), - err, - ); + enqueueErrorSnackbar(t("settings.error.tokenDelete", { 0: token.name }), err); }) .finally(() => { setTokensInLoading((prev) => prev.filter((u) => u !== token)); @@ -212,7 +202,7 @@ function Tokens() { - )) as ReactNode, + )) as React.ReactNode, ], // Token list [ @@ -228,15 +218,10 @@ function Tokens() {
) : ( <> - setTokenToDisplayInfo(token)} - > + setTokenToDisplayInfo(token)}> - setTokenToDelete(token)} - > + setTokenToDelete(token)}> @@ -252,9 +237,7 @@ function Tokens() { primary={ {token.name} - + {token.user.name} diff --git a/webapp/src/components/App/Settings/Users/Header.tsx b/webapp/src/components/App/Settings/Users/Header.tsx index 47969745bf..573935bf5b 100644 --- a/webapp/src/components/App/Settings/Users/Header.tsx +++ b/webapp/src/components/App/Settings/Users/Header.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,7 +17,7 @@ import PersonAddAltIcon from "@mui/icons-material/PersonAddAlt"; import { useTranslation } from "react-i18next"; import { useState } from "react"; import CreateUserDialog from "./dialog/CreateUserDialog"; -import { UserDetailsDTO } from "../../../../common/types"; +import type { UserDetailsDTO } from "../../../../common/types"; import SearchFE from "../../../common/fieldEditors/SearchFE"; interface Props { diff --git a/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx b/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx index 298b7fb84d..a1d4d71586 100644 --- a/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/CreateUserDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,7 +16,7 @@ import PersonAddIcon from "@mui/icons-material/PersonAdd"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper } from "react-use"; -import { +import type { GroupDTO, RoleDetailsDTO, RoleType, @@ -25,8 +25,8 @@ import { } from "../../../../../common/types"; import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; import { createRole, createUser } from "../../../../../services/api/user"; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; -import UserFormDialog, { UserFormDialogProps } from "./UserFormDialog"; +import type { SubmitHandlerPlus } from "../../../../common/Form/types"; +import UserFormDialog, { type UserFormDialogProps } from "./UserFormDialog"; type InheritPropsToOmit = "title" | "titleIcon" | "onSubmit" | "onCancel"; @@ -57,10 +57,7 @@ function CreateUserDialog(props: Props) { variant: "success", }); } catch (e) { - enqueueErrorSnackbar( - t("settings.error.userSave", { 0: username }), - e as Error, - ); + enqueueErrorSnackbar(t("settings.error.userSave", { 0: username }), e as Error); throw e; } @@ -68,13 +65,12 @@ function CreateUserDialog(props: Props) { let roles: UserDetailsDTO["roles"] = []; if (permissions.length > 0) { - const promises = permissions.map( - (perm: { group: GroupDTO; type: RoleType }) => - createRole({ - group_id: perm.group.id, - type: perm.type, - identity_id: newUser.id, - }), + const promises = permissions.map((perm: { group: GroupDTO; type: RoleType }) => + createRole({ + group_id: perm.group.id, + type: perm.type, + identity_id: newUser.id, + }), ); const res: RoleDetailsDTO[] = await mounted(Promise.all(promises)); @@ -92,10 +88,7 @@ function CreateUserDialog(props: Props) { // Because we cannot recover roles eventually created reloadFetchUsers(); - enqueueErrorSnackbar( - t("settings.error.userRolesSave", { 0: newUser.name }), - e as Error, - ); + enqueueErrorSnackbar(t("settings.error.userRolesSave", { 0: newUser.name }), e as Error); } closeDialog(); diff --git a/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx b/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx index 1f8f6afabb..d3eb100e8c 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UpdateUserDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,23 +17,14 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper } from "react-use"; import { useSnackbar } from "notistack"; -import { - GroupDTO, - RoleType, - UserDetailsDTO, -} from "../../../../../common/types"; +import type { GroupDTO, RoleType, UserDetailsDTO } from "../../../../../common/types"; import { createRole, deleteUserRoles } from "../../../../../services/api/user"; -import UserFormDialog, { UserFormDialogProps } from "./UserFormDialog"; -import { UserEdit } from ".."; +import UserFormDialog, { type UserFormDialogProps } from "./UserFormDialog"; +import type { UserEdit } from ".."; import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; -import { SubmitHandlerPlus } from "../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../common/Form/types"; -type InheritPropsToOmit = - | "title" - | "titleIcon" - | "defaultValues" - | "onSubmit" - | "onCancel"; +type InheritPropsToOmit = "title" | "titleIcon" | "defaultValues" | "onSubmit" | "onCancel"; interface Props extends Omit { user: UserDetailsDTO; @@ -43,8 +34,7 @@ interface Props extends Omit { } function UpdateUserDialog(props: Props) { - const { user, closeDialog, editUser, reloadFetchUsers, ...dialogProps } = - props; + const { user, closeDialog, editUser, reloadFetchUsers, ...dialogProps } = props; const { t } = useTranslation(); const mounted = usePromiseWrapper(); const { enqueueSnackbar } = useSnackbar(); @@ -75,13 +65,12 @@ function UpdateUserDialog(props: Props) { try { await mounted(deleteUserRoles(user.id)); - const promises = permissions.map( - (perm: { group: GroupDTO; type: RoleType }) => - createRole({ - group_id: perm.group.id, - type: perm.type, - identity_id: user.id, - }), + const promises = permissions.map((perm: { group: GroupDTO; type: RoleType }) => + createRole({ + group_id: perm.group.id, + type: perm.type, + identity_id: user.id, + }), ); const res = await mounted(Promise.all(promises)); @@ -102,10 +91,7 @@ function UpdateUserDialog(props: Props) { // Because we cannot recover roles eventually deleted/created reloadFetchUsers(); - enqueueErrorSnackbar( - t("settings.error.userRolesSave", { 0: user.name }), - e as Error, - ); + enqueueErrorSnackbar(t("settings.error.userRolesSave", { 0: user.name }), e as Error); } closeDialog(); diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx index 7607a4a00f..3bed28a521 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/UserForm.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -31,23 +31,19 @@ import { ListItemIcon, ListItemText, CircularProgress, - SelectChangeEvent, + type SelectChangeEvent, } from "@mui/material"; import { Controller, useFieldArray } from "react-hook-form"; import { v4 as uuidv4 } from "uuid"; import DeleteIcon from "@mui/icons-material/Delete"; import GroupIcon from "@mui/icons-material/Group"; -import { - RESERVED_GROUP_NAMES, - RESERVED_USER_NAMES, - ROLE_TYPE_KEYS, -} from "../../../utils"; -import { GroupDTO, RoleType } from "../../../../../../common/types"; +import { RESERVED_GROUP_NAMES, RESERVED_USER_NAMES, ROLE_TYPE_KEYS } from "../../../utils"; +import { RoleType, type GroupDTO } from "../../../../../../common/types"; import { roleToString, sortByName } from "../../../../../../services/utils"; import usePromise from "../../../../../../hooks/usePromise"; import { getGroups, getUsers } from "../../../../../../services/api/user"; -import { UserFormDialogProps } from "."; -import { UseFormReturnPlus } from "../../../../../common/Form/types"; +import type { UserFormDialogProps } from "."; +import type { UseFormReturnPlus } from "../../../../../common/Form/types"; import { validatePassword, validateString } from "@/utils/validation/string"; interface Props extends UseFormReturnPlus { @@ -91,9 +87,7 @@ function UserForm(props: Props) { if (!groups) { return []; } - return sortByName( - groups.filter((group) => !RESERVED_GROUP_NAMES.includes(group.name)), - ); + return sortByName(groups.filter((group) => !RESERVED_GROUP_NAMES.includes(group.name))); }, [groups]); //////////////////////////////////////////////////////////////// @@ -148,8 +142,7 @@ function UserForm(props: Props) { {...commonTextFieldProps} {...register("confirmPassword", { validate: (v) => - v === getValues("password") || - t("settings.user.form.error.passwordMismatch"), + v === getValues("password") || t("settings.user.form.error.passwordMismatch"), })} /> @@ -159,8 +152,7 @@ function UserForm(props: Props) { sx={{ p: 2, mt: 2, - backgroundImage: - "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", + backgroundImage: "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", }} > {t("global.permissions")} @@ -232,11 +224,7 @@ function UserForm(props: Props) { disablePadding dense > - + diff --git a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx index cc2dd19efd..cd2f6f866f 100644 --- a/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx +++ b/webapp/src/components/App/Settings/Users/dialog/UserFormDialog/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,10 +13,8 @@ */ import { DialogContentText } from "@mui/material"; -import FormDialog, { - FormDialogProps, -} from "../../../../../common/dialogs/FormDialog"; -import { GroupDTO, RoleType } from "../../../../../../common/types"; +import FormDialog, { type FormDialogProps } from "../../../../../common/dialogs/FormDialog"; +import type { GroupDTO, RoleType } from "../../../../../../common/types"; import UserForm from "./UserForm"; export interface UserFormDialogProps extends Omit { diff --git a/webapp/src/components/App/Settings/Users/index.tsx b/webapp/src/components/App/Settings/Users/index.tsx index 373ca36b84..0aaaa0f478 100644 --- a/webapp/src/components/App/Settings/Users/index.tsx +++ b/webapp/src/components/App/Settings/Users/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -26,12 +26,12 @@ import { } from "@mui/material"; import DeleteIcon from "@mui/icons-material/Delete"; import EditIcon from "@mui/icons-material/Edit"; -import { useMemo, useReducer, useState, ReactNode } from "react"; +import { useMemo, useReducer, useState } from "react"; import { useTranslation } from "react-i18next"; import PersonIcon from "@mui/icons-material/Person"; import { produce } from "immer"; import { usePromise as usePromiseWrapper, useUpdateEffect } from "react-use"; -import { Action } from "redux"; +import type { Action } from "redux"; import { useSnackbar } from "notistack"; import * as R from "ramda"; import { deleteUser, getUsers } from "../../../../services/api/user"; @@ -40,7 +40,7 @@ import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; import ConfirmationDialog from "../../../common/dialogs/ConfirmationDialog"; import Header from "./Header"; import { RESERVED_USER_NAMES } from "../utils"; -import { UserDetailsDTO } from "../../../../common/types"; +import type { UserDetailsDTO } from "../../../../common/types"; import UpdateUserDialog from "./dialog/UpdateUserDialog"; import { sortByName } from "../../../../services/utils"; import { isSearchMatching } from "../../../../utils/stringUtils"; @@ -154,10 +154,7 @@ function Users() { }); }) .catch((err) => { - enqueueErrorSnackbar( - t("settings.error.userDelete", { 0: user.name }), - err, - ); + enqueueErrorSnackbar(t("settings.error.userDelete", { 0: user.name }), err); }) .finally(() => { setUsersInLoading((prev) => prev.filter((u) => u !== user)); @@ -191,7 +188,7 @@ function Users() { - )) as ReactNode, + )) as React.ReactNode, ], // User list [ @@ -210,10 +207,7 @@ function Users() { setUserToEdit(user)}> - setUserToDelete(user)} - > + setUserToDelete(user)}> diff --git a/webapp/src/components/App/Settings/index.tsx b/webapp/src/components/App/Settings/index.tsx index 60063a8e1b..25be72cd2a 100644 --- a/webapp/src/components/App/Settings/index.tsx +++ b/webapp/src/components/App/Settings/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,7 +15,7 @@ import SettingsIcon from "@mui/icons-material/Settings"; import { TabContext, TabList, TabPanel } from "@mui/lab"; import { Box, Tab } from "@mui/material"; -import { SyntheticEvent, useMemo, useState } from "react"; +import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import RootPage from "../../common/page/RootPage"; import Groups from "./Groups"; @@ -24,10 +24,7 @@ import Tokens from "./Tokens"; import Users from "./Users"; import General from "./General"; import useAppSelector from "../../../redux/hooks/useAppSelector"; -import { - isAuthUserAdmin, - isAuthUserInGroupAdmin, -} from "../../../redux/selectors"; +import { isAuthUserAdmin, isAuthUserInGroupAdmin } from "../../../redux/selectors"; import { tuple } from "../../../utils/tsUtils"; function Settings() { @@ -40,8 +37,7 @@ function Settings() { return [ tuple(t("global.general"), () => ), isUserAdmin && tuple(t("global.users"), () => ), - (isUserAdmin || isUserInGroupAdmin) && - tuple(t("global.group"), () => ), + (isUserAdmin || isUserInGroupAdmin) && tuple(t("global.group"), () => ), tuple(t("global.tokens"), () => ), isUserAdmin && tuple(t("global.maintenance"), () => ), ].filter(Boolean); @@ -51,7 +47,7 @@ function Settings() { // Event Handlers //////////////////////////////////////////////////////////////// - const handleTabChange = (event: SyntheticEvent, newValue: string) => { + const handleTabChange = (event: React.SyntheticEvent, newValue: string) => { setTabValue(newValue); }; diff --git a/webapp/src/components/App/Settings/utils.ts b/webapp/src/components/App/Settings/utils.ts index b074304987..7d0d3055d0 100644 --- a/webapp/src/components/App/Settings/utils.ts +++ b/webapp/src/components/App/Settings/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -18,6 +18,6 @@ import { RoleType } from "../../../common/types"; export const RESERVED_USER_NAMES = ["admin"]; export const RESERVED_GROUP_NAMES = ["admin"]; -export const ROLE_TYPE_KEYS = Object.values(RoleType).filter( - RA.isString, -) as Array; +export const ROLE_TYPE_KEYS = Object.values(RoleType).filter(RA.isString) as Array< + keyof typeof RoleType +>; diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx index 3c0912d1f4..0726d2ab39 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandImportButton.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -51,7 +51,7 @@ function CommandImportButton(props: PropTypes) { const json = JSON.parse(text as string); onImport(json); } - } catch (error) { + } catch { enqueueSnackbar(t("variants.error.jsonParsing"), { variant: "error", }); @@ -64,11 +64,7 @@ function CommandImportButton(props: PropTypes) { return ( - + , + icon: , text: item.user || t("global.unknown"), }, { - icon: , + icon: , text: item.updatedAt ? formatDate(item.updatedAt) : t("global.unknown"), - tooltip: item.updatedAt - ? formatDateWithLocale(item.updatedAt) - : t("global.unknown"), + tooltip: item.updatedAt ? formatDateWithLocale(item.updatedAt) : t("global.unknown"), }, ]; @@ -61,9 +60,7 @@ function CommandDetails({ item }: Props) { {details.map((detail, index) => ( - {index > 0 && ( - - )} + {index > 0 && } {detail.icon} {detail.tooltip ? ( diff --git a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx index 51fbb8a7f4..f4c856609c 100644 --- a/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx +++ b/webapp/src/components/App/Singlestudy/Commands/Edition/DraggableCommands/CommandListItem/CommandMatrixViewer.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,11 +13,11 @@ */ import { Box, Button } from "@mui/material"; -import { isString } from "ramda-adjunct"; +import * as RA from "ramda-adjunct"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import MatrixDialog from "../../../../../Data/MatrixDialog"; -import { CommandEnum, CommandItem } from "../../commandTypes"; +import { CommandEnum, type CommandItem } from "../../commandTypes"; interface PropTypes { command: CommandItem; @@ -31,7 +31,7 @@ function CommandMatrixViewer(props: PropTypes) { const [openViewer, setOpenViewer] = useState(false); const [t] = useTranslation(); - if (action === CommandEnum.REPLACE_MATRIX && isString(matrixId)) { + if (action === CommandEnum.REPLACE_MATRIX && RA.isString(matrixId)) { return ( - @@ -114,16 +99,10 @@ function NoteEditorModal(props: Props) { >
- onStyleClick("BOLD")} - > + onStyleClick("BOLD")}> B - onStyleClick("ITALIC")} - > + onStyleClick("ITALIC")}> I - EditorState.createEmpty(), - ); + const [editorState, setEditorState] = useState(() => EditorState.createEmpty()); const [editionMode, setEditionMode] = useState(false); const [content, setContent] = useState(""); const { status: synthesisStatus } = useStudySynthesis({ studyId: study.id }); const areas = useAppSelector((state) => getAreas(state, study.id)); const links = useAppSelector((state) => getLinks(state, study.id)); - const { data: diskUsage, isLoading: isDiskUsageLoading } = - usePromiseWithSnackbarError(() => getStudyDiskUsage(study.id), { + const { data: diskUsage, isLoading: isDiskUsageLoading } = usePromiseWithSnackbarError( + () => getStudyDiskUsage(study.id), + { errorMessage: t("studies.error.retrieveData"), deps: [study?.id], - }); + }, + ); const commentRes = usePromiseWithSnackbarError(() => getComments(study.id), { errorMessage: t("studies.error.retrieveData"), @@ -115,9 +111,7 @@ function Notes({ study }: Props) { useEffect(() => { const comments = commentRes.data; if (comments) { - setEditorState( - EditorState.createWithContent(convertXMLToDraftJS(comments)), - ); + setEditorState(EditorState.createWithContent(convertXMLToDraftJS(comments))); setContent(comments); } }, [commentRes.data]); @@ -129,9 +123,7 @@ function Notes({ study }: Props) { const handleSave = async (newContent: string) => { const prevEditorState = editorState; setEditionMode("loading"); - setEditorState( - EditorState.createWithContent(convertXMLToDraftJS(newContent)), - ); + setEditorState(EditorState.createWithContent(convertXMLToDraftJS(newContent))); try { await editComments(study.id, newContent); @@ -200,11 +192,7 @@ function Notes({ study }: Props) { - ) : ( - convertSize(diskUsage || 0) - ), + content: isDiskUsageLoading ? : convertSize(diskUsage || 0), label: t("study.diskUsage"), icon: StorageIcon, iconColor: getColorForSize(diskUsage || 0), diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts index 4f2d146330..7be60f2c41 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/Notes/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,10 +14,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-param-reassign */ -import { ContentState, convertToRaw, EditorState } from "draft-js"; +import { convertToRaw, type ContentState, type EditorState } from "draft-js"; import draftToHtml from "draftjs-to-html"; import { convertFromHTML } from "draft-convert"; -import { Element as XMLElement, js2xml, xml2json } from "xml-js"; +import { js2xml, xml2json, type Element as XMLElement } from "xml-js"; import theme from "../../../../../../theme"; interface BlockMap { @@ -143,17 +143,12 @@ const parseXMLToHTMLNode = ( if (attributesUtils.list !== undefined) { if (prevListSeq === undefined) { attributesUtils.openBalise = `${ - attributesUtils.list === "Numbered List" - ? "
  1. " - : "
    • " + attributesUtils.list === "Numbered List" ? "
      1. " : "
        • " }${attributesUtils.openBalise}`; } else if (prevListSeq !== attributesUtils.list) { - const closePrevBalise = - prevListSeq === "Numbered List" ? "
      " : "
    "; // Close previous list + const closePrevBalise = prevListSeq === "Numbered List" ? "
" : ""; // Close previous list attributesUtils.openBalise = `${closePrevBalise}${ - attributesUtils.list === "Numbered List" - ? "
  1. " - : "
    • " + attributesUtils.list === "Numbered List" ? "
      1. " : "
        • " }${attributesUtils.openBalise}`; } else { attributesUtils.openBalise = `
        • ${attributesUtils.openBalise}`; @@ -164,21 +159,16 @@ const parseXMLToHTMLNode = ( attributesUtils.list === "Numbered List" ? "
      " : "
    "; } } else if (prevListSeq !== undefined) { - const closePrevBalise = - prevListSeq === "Numbered List" ? "
" : ""; // Close previous list + const closePrevBalise = prevListSeq === "Numbered List" ? "" : ""; // Close previous list attributesUtils.openBalise = `${closePrevBalise}<${ (XmlToHTML as any)[node.name] }>${attributesUtils.openBalise}`; - attributesUtils.closeBalise += ``; + attributesUtils.closeBalise += ``; } else { attributesUtils.openBalise = `<${(XmlToHTML as any)[node.name]}>${ attributesUtils.openBalise }`; - attributesUtils.closeBalise += ``; + attributesUtils.closeBalise += ``; } } @@ -194,10 +184,7 @@ const parseXMLToHTMLNode = ( res.result += completeResult.result; } return { - result: - attributesUtils.openBalise + - res.result + - attributesUtils.closeBalise, + result: attributesUtils.openBalise + res.result + attributesUtils.closeBalise, listSeq: attributesUtils.list, }; } @@ -265,18 +252,12 @@ const parseHTMLToXMLNode = ( ): ParseHTMLToXMLNodeActions => { let action: ParseHTMLToXMLNodeActions = ParseHTMLToXMLNodeActions.NONE; const parseChild = (nodeElement: XMLElement): ParseHTMLToXMLNodeActions => { - let resultAction: ParseHTMLToXMLNodeActions = - ParseHTMLToXMLNodeActions.NONE; + let resultAction: ParseHTMLToXMLNodeActions = ParseHTMLToXMLNodeActions.NONE; if (nodeElement.elements !== undefined) { const actionList: ParseHTMLToXMLActionList[] = []; - let childAction: ParseHTMLToXMLNodeActions = - ParseHTMLToXMLNodeActions.NONE; + let childAction: ParseHTMLToXMLNodeActions = ParseHTMLToXMLNodeActions.NONE; for (let i = 0; i < nodeElement.elements.length; i++) { - childAction = parseHTMLToXMLNode( - nodeElement.elements[i], - nodeElement, - i, - ); + childAction = parseHTMLToXMLNode(nodeElement.elements[i], nodeElement, i); if (childAction !== ParseHTMLToXMLNodeActions.NONE) { actionList.push({ action: childAction, @@ -287,25 +268,14 @@ const parseHTMLToXMLNode = ( actionList.forEach((elm: ParseHTMLToXMLActionList) => { if (nodeElement.elements !== undefined) { if (elm.action === ParseHTMLToXMLNodeActions.DELETE) { - nodeElement.elements = nodeElement.elements.filter( - (item) => item !== elm.node, - ); - } else if ( - elm.node.elements !== undefined && - elm.node.elements.length > 0 - ) { + nodeElement.elements = nodeElement.elements.filter((item) => item !== elm.node); + } else if (elm.node.elements !== undefined && elm.node.elements.length > 0) { let newElements: XMLElement[] = []; - const index = nodeElement.elements.findIndex( - (item) => item === elm.node, - ); + const index = nodeElement.elements.findIndex((item) => item === elm.node); if (index !== undefined && index >= 0) { - newElements = newElements.concat( - nodeElement.elements.slice(0, index), - ); + newElements = newElements.concat(nodeElement.elements.slice(0, index)); newElements = newElements.concat(elm.node.elements); - newElements = newElements.concat( - nodeElement.elements.slice(index + 1), - ); + newElements = newElements.concat(nodeElement.elements.slice(index + 1)); node.elements = newElements; if (elm.action === ParseHTMLToXMLNodeActions.TEXTTOELEMENTS) { @@ -331,8 +301,7 @@ const parseHTMLToXMLNode = ( { type: "text", text: - quoteList[j][0] === " " || - quoteList[j][quoteList[j].length - 1] === " " + quoteList[j][0] === " " || quoteList[j][quoteList[j].length - 1] === " " ? `"${quoteList[j]}"` : quoteList[j], }, @@ -359,10 +328,7 @@ const parseHTMLToXMLNode = ( elements: [ { type: "text", - text: - data[0] === " " || data[data.length - 1] === " " - ? `"${data}"` - : data, + text: data[0] === " " || data[data.length - 1] === " " ? `"${data}"` : data, }, ], }); @@ -438,8 +404,7 @@ const parseHTMLToXMLNode = ( leftsubindent: "60", bulletstyle: parent.name === "ol" ? "4353" : "512", bulletnumber: lastListSeq.toString(), - liststyle: - parent.name === "ol" ? "Numbered List" : "Bullet List", + liststyle: parent.name === "ol" ? "Numbered List" : "Bullet List", }; if (parent.name === "ul") { node.attributes = { diff --git a/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx index 52b57f4935..4a5b9d881c 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/InformationView/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,16 +16,13 @@ import { useState } from "react"; import { Paper, Button, Box, Divider } from "@mui/material"; import { useNavigate } from "react-router-dom"; import { useTranslation } from "react-i18next"; -import { AxiosError } from "axios"; -import { StudyMetadata, VariantTree } from "../../../../../common/types"; +import type { AxiosError } from "axios"; +import type { StudyMetadata, VariantTree } from "../../../../../common/types"; import CreateVariantDialog from "./CreateVariantDialog"; import LauncherHistory from "./LauncherHistory"; import Notes from "./Notes"; import LauncherDialog from "../../../Studies/LauncherDialog"; -import { - copyStudy, - unarchiveStudy as callUnarchiveStudy, -} from "../../../../../services/api/study"; +import { copyStudy, unarchiveStudy as callUnarchiveStudy } from "../../../../../services/api/study"; import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; interface Props { @@ -43,11 +40,7 @@ function InformationView(props: Props) { const importStudy = async (study: StudyMetadata) => { try { - await copyStudy( - study.id, - `${study.name} (${t("studies.copySuffix")})`, - false, - ); + await copyStudy(study.id, `${study.name} (${t("studies.copySuffix")})`, false); } catch (e) { enqueueErrorSnackbar(t("studies.error.copyStudy"), e as AxiosError); } @@ -100,12 +93,7 @@ function InformationView(props: Props) { alignItems="flex-start" py={1.5} > - + )} diff --git a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx index 3e483c8e21..052effdf64 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/StudyTreeView/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,10 +13,9 @@ */ import { useEffect, useMemo, useState } from "react"; -import * as React from "react"; import { Box, styled } from "@mui/material"; -import { StudyMetadata, VariantTree } from "../../../../../common/types"; -import { StudyTree, getTreeNodes } from "./utils"; +import type { StudyMetadata, VariantTree } from "../../../../../common/types"; +import { getTreeNodes, type StudyTree } from "./utils"; import { CIRCLE_RADIUS, colors, @@ -89,11 +88,7 @@ export default function CustomizedTreeView(props: Props) { setHoverId(""); }; - const buildRecursiveTree = ( - tree: StudyTree, - i = 0, - j = 0, - ): React.ReactNode[] => { + const buildRecursiveTree = (tree: StudyTree, i = 0, j = 0): React.ReactNode[] => { const { drawOptions, name, attributes, children } = tree; const { id } = attributes; const { nbAllChildrens } = drawOptions; @@ -105,22 +100,14 @@ export default function CustomizedTreeView(props: Props) { let verticalLineEnd = 0; if (children.length > 0) { - verticalLineEnd = - nbAllChildrens - - children[children.length - 1].drawOptions.nbAllChildrens; + verticalLineEnd = nbAllChildrens - children[children.length - 1].drawOptions.nbAllChildrens; verticalLineEnd = (j + verticalLineEnd) * TILE_SIZE_Y + CIRCLE_RADIUS; } const cx = i * TILE_SIZE_X + DCX; const cy = j * TILE_SIZE_Y + DCY; let res: React.ReactNode[] = [ - , + , { return nodeDatum; }; -const buildTree = async ( - node: StudyTree, - childrenTree: VariantTree, -): Promise => { +const buildTree = async (node: StudyTree, childrenTree: VariantTree): Promise => { if ((childrenTree.children || []).length === 0) { node.drawOptions.depth = 1; node.drawOptions.nbAllChildrens = 0; diff --git a/webapp/src/components/App/Singlestudy/HomeView/index.tsx b/webapp/src/components/App/Singlestudy/HomeView/index.tsx index 83f4d765a5..db2f7490e2 100644 --- a/webapp/src/components/App/Singlestudy/HomeView/index.tsx +++ b/webapp/src/components/App/Singlestudy/HomeView/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,7 +15,7 @@ import { useNavigate } from "react-router-dom"; import { Box } from "@mui/material"; import Split from "react-split"; -import { StudyMetadata, VariantTree } from "../../../../common/types"; +import type { StudyMetadata, VariantTree } from "../../../../common/types"; import "./Split.css"; import StudyTreeView from "./StudyTreeView"; import InformationView from "./InformationView"; diff --git a/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx b/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx index fb9dca2669..3cf34a4659 100644 --- a/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx +++ b/webapp/src/components/App/Singlestudy/NavHeader/Actions.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -19,7 +19,7 @@ import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router"; import MoreVertIcon from "@mui/icons-material/MoreVert"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; -import { StudyMetadata, StudyType } from "../../../../common/types"; +import { StudyType, type StudyMetadata } from "../../../../common/types"; import { toggleFavorite } from "../../../../redux/ducks/studies"; import StarToggle from "../../../common/StarToggle"; import useAppDispatch from "../../../../redux/hooks/useAppDispatch"; @@ -85,21 +85,13 @@ function Actions({ }} > - - - - @@ -181,9 +161,7 @@ function ThematicTrimmingDialog(props: Props) { disableGutters > }> - {t( - `study.configuration.general.thematicTrimming.group.${group}`, - )} + {t(`study.configuration.general.thematicTrimming.group.${group}`)} diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts index a3a16e5661..7d61d78f76 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/dialogs/ThematicTrimmingDialog/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,8 +13,8 @@ */ import * as R from "ramda"; -import { ThematicTrimmingConfig } from "../../../../../../../../services/api/studies/config/thematicTrimming/types"; -import { O } from "ts-toolbelt"; +import type { ThematicTrimmingConfig } from "../../../../../../../../services/api/studies/config/thematicTrimming/types"; +import type { O } from "ts-toolbelt"; export const THEMATIC_TRIMMING_GROUPS = [ "general", diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx index 9d9ea519d9..496665045b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,20 +15,20 @@ import { useOutletContext } from "react-router"; import * as R from "ramda"; import { useState } from "react"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import Form from "../../../../../common/Form"; import Fields from "./Fields"; import ThematicTrimmingDialog from "./dialogs/ThematicTrimmingDialog"; import ScenarioPlaylistDialog from "./dialogs/ScenarioPlaylistDialog"; import { - GeneralFormFields, getGeneralFormFields, hasDayField, pickDayFields, - SetDialogStateType, setGeneralFormFields, + type GeneralFormFields, + type SetDialogStateType, } from "./utils"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../common/Form/types"; import ScenarioBuilderDialog from "./dialogs/ScenarioBuilderDialog"; function General() { @@ -71,33 +71,15 @@ function General() { {R.cond([ [ R.equals("thematicTrimming"), - () => ( - - ), + () => , ], [ R.equals("scenarioBuilder"), - () => ( - - ), + () => , ], [ R.equals("scenarioPlaylist"), - () => ( - - ), + () => , ], ])(dialog)} diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts index 702ed0e462..f3d48abb9b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/styles.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts index 612e43080f..60dd2e6d62 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/General/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import * as R from "ramda"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import client from "../../../../../../services/api/client"; //////////////////////////////////////////////////////////////// @@ -84,11 +84,7 @@ export interface GeneralFormFields { thematicTrimming?: boolean; } -export type SetDialogStateType = - | "thematicTrimming" - | "scenarioPlaylist" - | "scenarioBuilder" - | ""; +export type SetDialogStateType = "thematicTrimming" | "scenarioPlaylist" | "scenarioBuilder" | ""; //////////////////////////////////////////////////////////////// // Constants @@ -147,11 +143,7 @@ export function setGeneralFormFields( return client.put(makeRequestURL(studyId), values); } -export const hasDayField = R.anyPass([ - R.has("firstDay"), - R.has("lastDay"), - R.has("leapYear"), -]); +export const hasDayField = R.anyPass([R.has("firstDay"), R.has("lastDay"), R.has("leapYear")]); export const pickDayFields = ( values: GeneralFormFields, diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx index 143b3108ed..b4ee933d75 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,18 +14,18 @@ import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import SwitchFE from "../../../../../common/fieldEditors/SwitchFE"; import Fieldset from "../../../../../common/Fieldset"; import { useFormContextPlus } from "../../../../../common/Form"; import { LEGACY_TRANSMISSION_CAPACITIES_OPTIONS, - OptimizationFormFields, SIMPLEX_OPTIMIZATION_RANGE_OPTIONS, toBooleanIfNeeded, TRANSMISSION_CAPACITIES_OPTIONS, UNFEASIBLE_PROBLEM_BEHAVIOR_OPTIONS, + type OptimizationFormFields, } from "./utils"; interface Props { @@ -42,9 +42,7 @@ function Fields(props: Props) {
-
+
diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx index 775665d746..f6bcf6cfd9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,14 +13,14 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import Form from "../../../../../common/Form"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../common/Form/types"; import Fields from "./Fields"; import { getOptimizationFormFields, - OptimizationFormFields, setOptimizationFormFields, + type OptimizationFormFields, } from "./utils"; function Optimization() { @@ -30,9 +30,7 @@ function Optimization() { // Event Handlers //////////////////////////////////////////////////////////////// - const handleSubmit = async ( - data: SubmitHandlerPlus, - ) => { + const handleSubmit = async (data: SubmitHandlerPlus) => { return setOptimizationFormFields(study.id, data.dirtyValues); }; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts index 319509ac63..45bf153237 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/Optimization/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -18,7 +18,7 @@ import * as R from "ramda"; // Enums //////////////////////////////////////////////////////////////// -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import client from "../../../../../../services/api/client"; enum UnfeasibleProblemBehavior { @@ -54,10 +54,7 @@ enum TransmissionCapacities { export interface OptimizationFormFields { bindingConstraints: boolean; hurdleCosts: boolean; - transmissionCapacities: - | boolean - | LegacyTransmissionCapacities.Infinite - | TransmissionCapacities; + transmissionCapacities: boolean | LegacyTransmissionCapacities.Infinite | TransmissionCapacities; thermalClustersMinStablePower: boolean; thermalClustersMinUdTime: boolean; dayAheadReserve: boolean; @@ -73,18 +70,10 @@ export interface OptimizationFormFields { // Constants //////////////////////////////////////////////////////////////// -export const UNFEASIBLE_PROBLEM_BEHAVIOR_OPTIONS = Object.values( - UnfeasibleProblemBehavior, -); -export const SIMPLEX_OPTIMIZATION_RANGE_OPTIONS = Object.values( - SimplexOptimizationRange, -); -export const LEGACY_TRANSMISSION_CAPACITIES_OPTIONS = Object.values( - LegacyTransmissionCapacities, -); -export const TRANSMISSION_CAPACITIES_OPTIONS = Object.values( - TransmissionCapacities, -); +export const UNFEASIBLE_PROBLEM_BEHAVIOR_OPTIONS = Object.values(UnfeasibleProblemBehavior); +export const SIMPLEX_OPTIMIZATION_RANGE_OPTIONS = Object.values(SimplexOptimizationRange); +export const LEGACY_TRANSMISSION_CAPACITIES_OPTIONS = Object.values(LegacyTransmissionCapacities); +export const TRANSMISSION_CAPACITIES_OPTIONS = Object.values(TransmissionCapacities); //////////////////////////////////////////////////////////////// // Functions diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx index 0a361dc214..f15c607c76 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,18 +12,11 @@ * This file is part of the Antares project. */ -import { - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TableRow, -} from "@mui/material"; -import { capitalize } from "lodash"; +import { Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from "@mui/material"; +import capitalize from "lodash/capitalize"; import NumberFE from "../../../../../common/fieldEditors/NumberFE"; import { useFormContextPlus } from "../../../../../common/Form"; -import { TSFormFields, TSType } from "./utils"; +import { TSType, type TSFormFields } from "./utils"; import BooleanFE from "../../../../../common/fieldEditors/BooleanFE"; import { useTranslation } from "react-i18next"; import { validateNumber } from "@/utils/validation/number"; @@ -67,19 +60,13 @@ function Fields() { }} > - - {capitalize(TSType.Thermal)} - + {capitalize(TSType.Thermal)} diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx index 3c04d03707..778a3d0a44 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,12 +15,9 @@ import { useOutletContext } from "react-router"; import type { StudyMetadata } from "../../../../../../common/types"; import Form from "../../../../../common/Form"; -import type { - SubmitHandlerPlus, - UseFormReturnPlus, -} from "../../../../../common/Form/types"; +import type { SubmitHandlerPlus, UseFormReturnPlus } from "../../../../../common/Form/types"; import Fields from "./Fields"; -import { DEFAULT_VALUES, setTimeSeriesFormFields, TSFormFields } from "./utils"; +import { DEFAULT_VALUES, setTimeSeriesFormFields, type TSFormFields } from "./utils"; import { useTranslation } from "react-i18next"; import usePromiseHandler from "../../../../../../hooks/usePromiseHandler"; import { generateTimeSeries } from "../../../../../../services/api/studies/timeseries"; diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts index 22eef49008..9c6f00fbff 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/TimeSeriesManagement/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,8 +12,8 @@ * This file is part of the Antares project. */ -import { DeepPartial } from "react-hook-form"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { DeepPartial } from "react-hook-form"; +import type { StudyMetadata } from "../../../../../../common/types"; import client from "../../../../../../services/api/client"; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx b/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx index 2cb4312daa..a88c8cdbe3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Configuration/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,7 +16,7 @@ import * as R from "ramda"; import { useMemo, useState } from "react"; import { useOutletContext } from "react-router"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../common/types"; +import type { StudyMetadata } from "../../../../../common/types"; import PropertiesView from "../../../../common/PropertiesView"; import ListElement from "../common/ListElement"; import AdequacyPatch from "./AdequacyPatch"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Folder.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Folder.tsx index dfc763783a..d80c68f528 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Folder.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Folder.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -50,15 +50,7 @@ import type { StudyMetadata } from "../../../../../../common/types"; import { useSnackbar } from "notistack"; function Folder(props: DataCompProps) { - const { - filename, - filePath, - treeData, - canEdit, - setSelectedFile, - reloadTreeData, - studyId, - } = props; + const { filename, filePath, treeData, canEdit, setSelectedFile, reloadTreeData, studyId } = props; const { t } = useTranslation(); const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -207,11 +199,7 @@ function Folder(props: DataCompProps) { )} {/* Items menu */} - + {t("global.delete")} diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx index 5df699950b..1077e89ef9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Json.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,7 +15,7 @@ import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; import { editStudy, getStudyData } from "../../../../../../services/api/study"; -import JSONEditor, { JSONEditorProps } from "../../../../../common/JSONEditor"; +import JSONEditor, { type JSONEditorProps } from "../../../../../common/JSONEditor"; import usePromiseWithSnackbarError from "../../../../../../hooks/usePromiseWithSnackbarError"; import UsePromiseCond from "../../../../../common/utils/UsePromiseCond"; import type { DataCompProps } from "../utils"; @@ -29,13 +29,10 @@ function Json({ filePath, filename, studyId, canEdit }: DataCompProps) { const [t] = useTranslation(); const { enqueueSnackbar } = useSnackbar(); - const jsonRes = usePromiseWithSnackbarError( - () => getStudyData(studyId, filePath, -1), - { - errorMessage: t("studies.error.retrieveData"), - deps: [studyId, filePath], - }, - ); + const jsonRes = usePromiseWithSnackbarError(() => getStudyData(studyId, filePath, -1), { + errorMessage: t("studies.error.retrieveData"), + deps: [studyId, filePath], + }); //////////////////////////////////////////////////////////////// // Event Handlers diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx index 26a211251d..60695c92ce 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Matrix.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx index b77dd93c1f..c0bafeb728 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Text.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,10 +17,7 @@ import { Box, useTheme } from "@mui/material"; import { getStudyData } from "../../../../../../services/api/study"; import usePromiseWithSnackbarError from "../../../../../../hooks/usePromiseWithSnackbarError"; import UsePromiseCond from "../../../../../common/utils/UsePromiseCond"; -import { - Light as SyntaxHighlighter, - type SyntaxHighlighterProps, -} from "react-syntax-highlighter"; +import { Light as SyntaxHighlighter, type SyntaxHighlighterProps } from "react-syntax-highlighter"; import xml from "react-syntax-highlighter/dist/esm/languages/hljs/xml"; import plaintext from "react-syntax-highlighter/dist/esm/languages/hljs/plaintext"; import ini from "react-syntax-highlighter/dist/esm/languages/hljs/ini"; @@ -66,13 +63,7 @@ function getSyntaxProps(data: string | string[]): SyntaxHighlighterProps { }; } -function Text({ - studyId, - filePath, - filename, - fileType, - canEdit, -}: DataCompProps) { +function Text({ studyId, filePath, filename, fileType, canEdit }: DataCompProps) { const { t } = useTranslation(); const theme = useTheme(); diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Unsupported.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Unsupported.tsx index f96f598a77..cfbc59d753 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/Unsupported.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/Unsupported.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx index 9d09c246a5..ff0929fa2f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,7 +12,6 @@ * This file is part of the Antares project. */ -import { ComponentType } from "react"; import Text from "./Text"; import Unsupported from "./Unsupported"; import Matrix from "./Matrix"; @@ -22,8 +21,8 @@ import { getEffectiveFileType, type FileInfo, type FileType, + type DataCompProps, } from "../utils"; -import type { DataCompProps } from "../utils"; import ViewWrapper from "../../../../../common/page/ViewWrapper"; import type { StudyMetadata } from "../../../../../../common/types"; import Json from "./Json"; @@ -34,7 +33,7 @@ interface Props extends FileInfo { reloadTreeData: () => void; } -const componentByFileType: Record> = { +const componentByFileType: Record> = { matrix: Matrix, json: Json, text: Text, diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Data/styles.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Data/styles.tsx index 3800cd6bb0..6c339e8ab6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Data/styles.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Data/styles.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts b/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts index 4e10130ef9..60a4a8600d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/DebugContext.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx index dbc52c5a9f..75c7e53e46 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/FileTreeItem.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { Box } from "@mui/material"; -import { TreeData, getFileType, getFileIcon, isFolder } from "../utils"; +import { getFileType, getFileIcon, isFolder, type TreeData } from "../utils"; import DebugContext from "../DebugContext"; import { useContext } from "react"; import TreeItemEnhanced from "../../../../../common/TreeItemEnhanced"; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx index 417ef33b4f..8c97d05d85 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/Tree/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -32,10 +32,7 @@ function Tree(props: Props) { // Event Handlers //////////////////////////////////////////////////////////////// - const handleExpandedItemsChange = ( - event: React.SyntheticEvent, - itemIds: string[], - ) => { + const handleExpandedItemsChange = (event: React.SyntheticEvent, itemIds: string[]) => { setExpandedItems(itemIds); }; @@ -59,12 +56,7 @@ function Tree(props: Props) { onExpandedItemsChange={handleExpandedItemsChange} > {Object.keys(data).map((filename) => ( - + ))} ); diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx b/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx index 953219eb98..deae3f19a2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Debug/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -18,17 +18,12 @@ import { useOutletContext, useSearchParams } from "react-router-dom"; import { Box } from "@mui/material"; import Tree from "./Tree"; import Data from "./Data"; -import { StudyMetadata } from "../../../../../common/types"; +import type { StudyMetadata } from "../../../../../common/types"; import UsePromiseCond from "../../../../common/utils/UsePromiseCond"; import usePromiseWithSnackbarError from "../../../../../hooks/usePromiseWithSnackbarError"; import { getStudyData } from "../../../../../services/api/study"; import DebugContext from "./DebugContext"; -import { - getFileType, - type TreeData, - type FileInfo, - type TreeFolder, -} from "./utils"; +import { getFileType, type TreeData, type FileInfo, type TreeFolder } from "./utils"; import * as R from "ramda"; import SplitView from "../../../../common/SplitView"; import { useUpdateEffect } from "react-use"; @@ -66,9 +61,7 @@ function Debug() { const firstChildTreeData = R.path([firstChildName], res.data); const pathInUrlParts = pathInUrl?.split("/"); - const urlPathTreeData = pathInUrlParts - ? R.path(pathInUrlParts, res.data) - : null; + const urlPathTreeData = pathInUrlParts ? R.path(pathInUrlParts, res.data) : null; let fileInfo: FileInfo | null = null; diff --git a/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts b/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts index d546a1e4dc..2fac2890ea 100644 --- a/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Debug/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,10 +17,10 @@ import TextSnippetIcon from "@mui/icons-material/TextSnippet"; import BlockIcon from "@mui/icons-material/Block"; import FolderIcon from "@mui/icons-material/Folder"; import DatasetIcon from "@mui/icons-material/Dataset"; -import { SvgIconComponent } from "@mui/icons-material"; +import type { SvgIconComponent } from "@mui/icons-material"; import * as RA from "ramda-adjunct"; import type { StudyMetadata } from "../../../../../common/types"; -import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; +import type { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; //////////////////////////////////////////////////////////////// // Types @@ -65,14 +65,7 @@ const URL_SCHEMES = { FILE: "file://", } as const; -const SUPPORTED_EXTENSIONS = [ - ".txt", - ".log", - ".csv", - ".tsv", - ".ini", - ".yml", -] as const; +const SUPPORTED_EXTENSIONS = [".txt", ".log", ".csv", ".tsv", ".ini", ".yml"] as const; // Maps file types to their corresponding icon components. const iconByFileType: Record = { @@ -126,9 +119,7 @@ export function getFileType(treeData: TreeData): FileType { // We filter to only allow extensions that can be properly displayed (.txt, .log, .csv, .tsv, .ini) // Other extensions (like .RDS or .xlsx) are marked as unsupported since they can't be shown in the UI return treeData.startsWith(URL_SCHEMES.FILE) && - SUPPORTED_EXTENSIONS.some((ext) => - treeData.toLowerCase().endsWith(ext.toLowerCase()), - ) + SUPPORTED_EXTENSIONS.some((ext) => treeData.toLowerCase().endsWith(ext.toLowerCase())) ? "text" : "unsupported"; } @@ -170,9 +161,7 @@ export function isInOutputFolder(path: string): boolean { */ export function isEmptyContent(text: string | string[]): boolean { if (Array.isArray(text)) { - return ( - !text || text.every((line) => typeof line === "string" && !line.trim()) - ); + return !text || text.every((line) => typeof line === "string" && !line.trim()); } return typeof text === "string" && !text.trim(); @@ -209,10 +198,7 @@ export function isEmptyContent(text: string | string[]): boolean { * @param originalType - Original file type as determined by the system * @returns Modified file type (forces 'text' for matrices in output folders) */ -export function getEffectiveFileType( - filePath: string, - originalType: FileType, -): FileType { +export function getEffectiveFileType(filePath: string, originalType: FileType): FileType { if (isInOutputFolder(filePath) && originalType === "matrix") { return "text"; } @@ -227,9 +213,7 @@ export function getEffectiveFileType( * @returns String representation of the matrix */ function formatMatrixToString(matrix: number[][]): string { - return matrix - .map((row) => row.map((val) => val.toString()).join("\t")) - .join("\n"); + return matrix.map((row) => row.map((val) => val.toString()).join("\t")).join("\n"); } /** @@ -248,13 +232,11 @@ function parseResponse(res: string | MatrixDataDTO): string { try { // Handle case where API returns unparsed JSON string // Replace special numeric values with their string representations - const sanitizedJson = res - .replace(/NaN/g, '"NaN"') - .replace(/Infinity/g, '"Infinity"'); + const sanitizedJson = res.replace(/NaN/g, '"NaN"').replace(/Infinity/g, '"Infinity"'); const parsed = JSON.parse(sanitizedJson); return formatMatrixToString(parsed.data); - } catch (e) { + } catch { // If JSON parsing fails, assume it's plain text return res; } @@ -267,10 +249,7 @@ function parseResponse(res: string | MatrixDataDTO): string { * @param options - Configuration options including file path and type * @returns Processed content ready for display */ -export function parseContent( - content: string, - options: ContentParsingOptions, -): string { +export function parseContent(content: string, options: ContentParsingOptions): string { const { filePath, fileType } = options; if (isInOutputFolder(filePath) && fileType === "matrix") { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx index feb39df236..6f1f000505 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreaPropsView.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { useEffect, useState } from "react"; -import { Area } from "../../../../../../common/types"; +import type { Area } from "../../../../../../common/types"; import PropertiesView from "../../../../../common/PropertiesView"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getAreas } from "../../../../../../redux/selectors"; @@ -35,9 +35,7 @@ function AreaPropsView(props: PropsType) { const filter = (): Area[] => { if (areas) { return areas.filter( - (s) => - !areaNameFilter || - s.name.search(new RegExp(areaNameFilter, "i")) !== -1, + (s) => !areaNameFilter || s.name.search(new RegExp(areaNameFilter, "i")) !== -1, ); } return []; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx index 508e75705a..2584d0acb4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/AreasTab.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,7 +15,7 @@ import { useEffect, useMemo } from "react"; import { useLocation, useNavigate, useOutletContext } from "react-router-dom"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import TabWrapper from "../../TabWrapper"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../redux/selectors"; @@ -55,9 +55,7 @@ function AreasTab({ renewablesClustering }: Props) { }, [areaId, navigate, location.pathname]); const tabList = useMemo(() => { - const basePath = `/studies/${ - study.id - }/explore/modelization/area/${encodeURI(areaId)}`; + const basePath = `/studies/${study.id}/explore/modelization/area/${encodeURI(areaId)}`; const tabs = [ { label: "study.modelization.properties", pathSuffix: "properties" }, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx index b95d995a48..6aa93ac7a9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/AllocationField.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,10 +13,10 @@ */ import { Typography, Grid } from "@mui/material"; -import { FieldArrayWithId } from "react-hook-form"; +import type { FieldArrayWithId } from "react-hook-form"; import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; import { useFormContextPlus } from "../../../../../../../common/Form"; -import { AllocationFormFields } from "./utils"; +import type { AllocationFormFields } from "./utils"; import { validateNumber } from "@/utils/validation/number"; interface Props { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx index ce708a4771..8203949ee0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,12 +15,12 @@ import { useFieldArray } from "react-hook-form"; import { useOutletContext } from "react-router"; import { useFormContextPlus } from "../../../../../../../common/Form"; -import { AllocationFormFields } from "./utils"; +import type { AllocationFormFields } from "./utils"; import AllocationField from "./AllocationField"; import DynamicList from "../../../../../../../common/DynamicList"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getAreasById } from "../../../../../../../../redux/selectors"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import { useAreasOptions } from "../hooks/useAreasOptions"; function Fields() { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx index fc50dff4a8..18d8663c35 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,15 +17,15 @@ import { useOutletContext } from "react-router"; import { useState } from "react"; import Form from "../../../../../../../common/Form"; import Fields from "./Fields"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../../redux/selectors"; import { - AllocationFormFields, getAllocationFormFields, setAllocationFormFields, + type AllocationFormFields, } from "./utils"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; import HydroMatrixDialog from "../HydroMatrixDialog"; import { HydroMatrix } from "../utils"; import { FormBox, FormPaper } from "../style"; @@ -56,8 +56,7 @@ function Allocation() { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts index 5d5d054a11..ffaf8560f3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Allocation/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,10 +12,10 @@ * This file is part of the Antares project. */ -import { StudyMetadata, Area } from "../../../../../../../../common/types"; +import type { StudyMetadata, Area } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; -import { MatrixDataDTO } from "../../../../../../../common/Matrix/shared/types"; -import { AreaCoefficientItem } from "../utils"; +import type { MatrixDataDTO } from "../../../../../../../common/Matrix/shared/types"; +import type { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// // Types @@ -29,10 +29,7 @@ export interface AllocationFormFields { // Utils //////////////////////////////////////////////////////////////// -function makeRequestURL( - studyId: StudyMetadata["id"], - areaId: Area["name"], -): string { +function makeRequestURL(studyId: StudyMetadata["id"], areaId: Area["name"]): string { return `v1/studies/${studyId}/areas/${areaId}/hydro/allocation/form`; } @@ -53,11 +50,7 @@ export async function setAllocationFormFields( return res.data; } -export const getAllocationMatrix = async ( - studyId: StudyMetadata["id"], -): Promise => { - const res = await client.get( - `v1/studies/${studyId}/areas/hydro/allocation/matrix`, - ); +export const getAllocationMatrix = async (studyId: StudyMetadata["id"]): Promise => { + const res = await client.get(`v1/studies/${studyId}/areas/hydro/allocation/matrix`); return res.data; }; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx index 0dd9f41016..15b5d95ff7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/CorrelationField.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,10 +13,10 @@ */ import { Typography, Grid } from "@mui/material"; -import { FieldArrayWithId } from "react-hook-form"; +import type { FieldArrayWithId } from "react-hook-form"; import { useTranslation } from "react-i18next"; import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; -import { CorrelationFormFields } from "./utils"; +import type { CorrelationFormFields } from "./utils"; import { useFormContextPlus } from "../../../../../../../common/Form"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getCurrentArea } from "../../../../../../../../redux/selectors"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx index 60a99464c7..4f25c0801a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,17 +14,14 @@ import { useFieldArray } from "react-hook-form"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { - getAreasById, - getCurrentArea, -} from "../../../../../../../../redux/selectors"; +import { getAreasById, getCurrentArea } from "../../../../../../../../redux/selectors"; import DynamicList from "../../../../../../../common/DynamicList"; import { useFormContextPlus } from "../../../../../../../common/Form"; import { useAreasOptions } from "../hooks/useAreasOptions"; import CorrelationField from "./CorrelationField"; -import { CorrelationFormFields } from "./utils"; +import type { CorrelationFormFields } from "./utils"; function Fields() { const { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx index df566ba68d..3bb46edff6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,14 +16,14 @@ import { Grid } from "@mui/material"; import { useOutletContext } from "react-router"; import { useState } from "react"; import Form from "../../../../../../../common/Form"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../../redux/selectors"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; import { - CorrelationFormFields, getCorrelationFormFields, setCorrelationFormFields, + type CorrelationFormFields, } from "./utils"; import Fields from "./Fields"; import HydroMatrixDialog from "../HydroMatrixDialog"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts index 253963b1c6..9e6ef56f2d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/Correlation/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,10 +12,10 @@ * This file is part of the Antares project. */ -import { StudyMetadata, Area } from "../../../../../../../../common/types"; +import type { StudyMetadata, Area } from "../../../../../../../../common/types"; import client from "../../../../../../../../services/api/client"; -import { MatrixDataDTO } from "../../../../../../../common/Matrix/shared/types"; -import { AreaCoefficientItem } from "../utils"; +import type { MatrixDataDTO } from "../../../../../../../common/Matrix/shared/types"; +import type { AreaCoefficientItem } from "../utils"; //////////////////////////////////////////////////////////////// // Types @@ -29,10 +29,7 @@ export interface CorrelationFormFields { // Utils //////////////////////////////////////////////////////////////// -function makeRequestURL( - studyId: StudyMetadata["id"], - areaId: Area["name"], -): string { +function makeRequestURL(studyId: StudyMetadata["id"], areaId: Area["name"]): string { return `v1/studies/${studyId}/areas/${areaId}/hydro/correlation/form`; } @@ -53,11 +50,7 @@ export async function setCorrelationFormFields( return res.data; } -export async function getCorrelationMatrix( - studyId: StudyMetadata["id"], -): Promise { - const res = await client.get( - `v1/studies/${studyId}/areas/hydro/correlation/matrix`, - ); +export async function getCorrelationMatrix(studyId: StudyMetadata["id"]): Promise { + const res = await client.get(`v1/studies/${studyId}/areas/hydro/correlation/matrix`); return res.data; } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx index 62751dae44..e367d7cb4b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrix.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,7 +14,7 @@ import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; -import { MATRICES, HydroMatrixType } from "./utils"; +import { MATRICES, type HydroMatrixType } from "./utils"; import Matrix from "../../../../../../common/Matrix"; import { Box } from "@mui/material"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx index 67a1cb5649..0e27c14b6d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/HydroMatrixDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,18 +15,16 @@ import { Button, Box, Skeleton } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useState, useEffect } from "react"; -import BasicDialog, { - BasicDialogProps, -} from "../../../../../../common/dialogs/BasicDialog"; +import BasicDialog, { type BasicDialogProps } from "../../../../../../common/dialogs/BasicDialog"; import Matrix from "../../../../../../common/Matrix"; -import { HydroMatrixType } from "./utils"; +import type { HydroMatrixType } from "./utils"; import { getAllocationMatrix } from "./Allocation/utils"; import { getCorrelationMatrix } from "./Correlation/utils"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; -import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; +import type { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; interface AdaptedMatrixData { data: number[][]; @@ -73,9 +71,7 @@ function HydroMatrixDialog({ open, onClose, type }: Props) { const { study } = useOutletContext<{ study: StudyMetadata }>(); const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const fetchFn = MATRIX_FETCHERS[type as keyof typeof MATRIX_FETCHERS]; - const [matrix, setMatrix] = useState( - undefined, - ); + const [matrix, setMatrix] = useState(undefined); const matrixModelAdapter = (apiData: MatrixDataDTO): AdaptedMatrixData => ({ data: apiData.data, diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx index d63487a116..d6aa045760 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../../redux/selectors"; import Form from "../../../../../../../common/Form"; @@ -23,7 +23,7 @@ import { updateInflowStructureFields, } from "./utils"; import NumberFE from "../../../../../../../common/fieldEditors/NumberFE"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; import { useTranslation } from "react-i18next"; function InflowStructure() { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts index 0c0525059a..2d57617e0a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/InflowStructure/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx index 91d3cdb6ee..ec0521c901 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ManagementOptions/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,16 +17,16 @@ import SelectFE from "../../../../../../../common/fieldEditors/SelectFE"; import SwitchFE from "../../../../../../../common/fieldEditors/SwitchFE"; import Fieldset from "../../../../../../../common/Fieldset"; import { useFormContextPlus } from "../../../../../../../common/Form"; -import { INITIALIZE_RESERVOIR_DATE_OPTIONS, HydroFormFields } from "./utils"; +import { INITIALIZE_RESERVOIR_DATE_OPTIONS, type HydroFormFields } from "./utils"; function Fields() { const { control, watch } = useFormContextPlus(); - const [ - reservoirDisabled, - waterValuesDisabled, - heuristicDisabled, - leeWayDisabled, - ] = watch(["reservoir", "useWater", "useHeuristic", "useLeeway"]); + const [reservoirDisabled, waterValuesDisabled, heuristicDisabled, leeWayDisabled] = watch([ + "reservoir", + "useWater", + "useHeuristic", + "useLeeway", + ]); return ( <> @@ -37,23 +37,11 @@ function Fields() { control={control} sx={{ alignSelf: "center" }} /> - - + +
- + ({ label: options[0], @@ -73,10 +71,7 @@ export interface HydroFormFields { // Utils //////////////////////////////////////////////////////////////// -function makeRequestURL( - studyId: StudyMetadata["id"], - areaId: Area["name"], -): string { +function makeRequestURL(studyId: StudyMetadata["id"], areaId: Area["name"]): string { return `v1/studies/${studyId}/areas/${areaId}/hydro/form`; } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx index 1adbc4e2b9..94f1641736 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/SplitHydroMatrix.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,9 +13,9 @@ */ import { Box } from "@mui/material"; -import SplitView, { SplitViewProps } from "../../../../../../common/SplitView"; +import SplitView, { type SplitViewProps } from "../../../../../../common/SplitView"; import HydroMatrix from "./HydroMatrix"; -import { HydroMatrixType } from "./utils"; +import type { HydroMatrixType } from "./utils"; interface Props { types: [HydroMatrixType, HydroMatrixType]; @@ -32,11 +32,7 @@ function SplitHydroMatrix({ types, direction, sizes, form: Form }: Props) {
)} - + diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx index e049eec4c2..c7e7a27826 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/ViewMatrixButton.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -24,12 +24,7 @@ function ViewMatrixButton({ label, onClick }: Props) { const { t } = useTranslation(); return ( - ); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts index 611c671625..b2d3d47ff6 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/hooks/useAreasOptions.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,15 +14,13 @@ import { useMemo } from "react"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getAreas } from "../../../../../../../../redux/selectors"; -import { DynamicListProps } from "../../../../../../../common/DynamicList"; -import { AreaCoefficientItem } from "../utils"; +import type { DynamicListProps } from "../../../../../../../common/DynamicList"; +import type { AreaCoefficientItem } from "../utils"; -export function useAreasOptions( - fields: AreaCoefficientItem[], -): DynamicListProps["options"] { +export function useAreasOptions(fields: AreaCoefficientItem[]): DynamicListProps["options"] { const { study: { id: studyId }, } = useOutletContext<{ study: StudyMetadata }>(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx index 215b3b5954..68b942c423 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,7 +14,7 @@ import { useMemo } from "react"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import TabWrapper from "../../../TabWrapper"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; @@ -25,9 +25,7 @@ function Hydro() { const studyVersion = parseInt(study.version, 10); const tabList = useMemo(() => { - const basePath = `/studies/${study?.id}/explore/modelization/area/${encodeURI( - areaId, - )}/hydro`; + const basePath = `/studies/${study?.id}/explore/modelization/area/${encodeURI(areaId)}/hydro`; return [ { label: "Management options", path: `${basePath}/management` }, @@ -50,9 +48,7 @@ function Hydro() { // JSX //////////////////////////////////////////////////////////////// - return ( - - ); + return ; } export default Hydro; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts index b329679cc6..7748f0998b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/style.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -22,6 +22,5 @@ export const FormBox = styled(Box)(({ theme }) => ({ })); export const FormPaper = styled(Paper)(() => ({ - backgroundImage: - "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", + backgroundImage: "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", })); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts index 174fb7cd76..75ba126ef9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Hydro/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,11 +12,8 @@ * This file is part of the Antares project. */ -import { - MatrixDataDTO, - AggregateConfig, -} from "../../../../../../common/Matrix/shared/types"; -import { SplitViewProps } from "../../../../../../common/SplitView"; +import type { MatrixDataDTO, AggregateConfig } from "../../../../../../common/Matrix/shared/types"; +import type { SplitViewProps } from "../../../../../../common/SplitView"; import { getAllocationMatrix } from "./Allocation/utils"; import { getCorrelationMatrix } from "./Correlation/utils"; import InflowStructure from "./InflowStructure"; @@ -175,13 +172,7 @@ export const MATRICES: Matrices = { [HydroMatrix.OverallMonthlyHydro]: { title: "Overall Monthly Hydro", url: "input/hydro/prepro/{areaId}/energy", - columns: [ - "Expectation (MWh)", - "Std Deviation (MWh)", - "Min. (MWh)", - "Max. (MWh)", - "ROR Share", - ], + columns: ["Expectation (MWh)", "Std Deviation (MWh)", "Min. (MWh)", "Max. (MWh)", "ROR Share"], rowHeaders: [ "January", "February", diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx index 9581fae79d..7e8d630d83 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Load.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx index 8cdf4946af..b509d02fec 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/MiscGen.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -34,9 +34,7 @@ function MiscGen() { // JSX //////////////////////////////////////////////////////////////// - return ( - - ); + return ; } export default MiscGen; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx index 7055f2e792..6c7a56220f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -20,8 +20,8 @@ import Fieldset from "../../../../../../common/Fieldset"; import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; import NumberFE from "../../../../../../common/fieldEditors/NumberFE"; import { useFormContextPlus } from "../../../../../../common/Form"; -import { ADEQUACY_PATCH_OPTIONS, PropertiesFormFields } from "./utils"; -import { StudyMetadata } from "../../../../../../../common/types"; +import { ADEQUACY_PATCH_OPTIONS, type PropertiesFormFields } from "./utils"; +import type { StudyMetadata } from "../../../../../../../common/types"; function Fields() { const { t } = useTranslation(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx index d654ba80c7..f56228cbd3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,17 +14,17 @@ import { Paper } from "@mui/material"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; import Form from "../../../../../../common/Form"; import { - PropertiesFormFields, getPropertiesFormFields, setPropertiesFormFields, + type PropertiesFormFields, } from "./utils"; import Fields from "./Fields"; -import { SubmitHandlerPlus } from "../../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../../common/Form/types"; function Properties() { const { study } = useOutletContext<{ study: StudyMetadata }>(); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts index 5eef82d3f7..5f4a7485b2 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Properties/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,8 +16,8 @@ // Enums //////////////////////////////////////////////////////////////// -import { DeepPartial } from "redux"; -import { Area, StudyMetadata } from "../../../../../../../common/types"; +import type { DeepPartial } from "redux"; +import type { Area, StudyMetadata } from "../../../../../../../common/types"; import client from "../../../../../../../services/api/client"; enum AdequacyPatchMode { @@ -55,10 +55,7 @@ export const ADEQUACY_PATCH_OPTIONS = Object.values(AdequacyPatchMode); // Functions //////////////////////////////////////////////////////////////// -function makeRequestURL( - studyId: StudyMetadata["id"], - areaId: Area["name"], -): string { +function makeRequestURL(studyId: StudyMetadata["id"], areaId: Area["name"]): string { return `/v1/studies/${studyId}/areas/${areaId}/properties/form`; } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx index 8983dde2e8..4d36d08c09 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -19,11 +19,7 @@ import StringFE from "../../../../../../common/fieldEditors/StringFE"; import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; import Fieldset from "../../../../../../common/Fieldset"; import { useFormContextPlus } from "../../../../../../common/Form"; -import { - RENEWABLE_GROUPS, - RenewableCluster, - TS_INTERPRETATION_OPTIONS, -} from "./utils"; +import { RENEWABLE_GROUPS, TS_INTERPRETATION_OPTIONS, type RenewableCluster } from "./utils"; function Fields() { const [t] = useTranslation(); @@ -36,12 +32,7 @@ function Fields() { return ( <>
- + ) => { + const handleSubmit = ({ dirtyValues }: SubmitHandlerPlus) => { return updateRenewableCluster(study.id, areaId, clusterId, dirtyValues); }; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx index 47ff9dcf82..ca3d7e8f6c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/Matrix.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { Cluster } from "../../../../../../../common/types"; +import type { Cluster } from "../../../../../../../common/types"; import Matrix from "../../../../../../common/Matrix"; interface Props { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx index 873774c391..5412e35433 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,15 +17,15 @@ import { createMRTColumnHelper } from "material-react-table"; import { Box } from "@mui/material"; import { useLocation, useNavigate, useOutletContext } from "react-router-dom"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import { RENEWABLE_GROUPS, - RenewableGroup, createRenewableCluster, deleteRenewableClusters, duplicateRenewableCluster, getRenewableClusters, type RenewableClusterWithCapacity, + type RenewableGroup, } from "./utils"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; @@ -36,7 +36,7 @@ import { getClustersWithCapacityTotals, toCapacityString, } from "../common/clustersUtils"; -import { TRow } from "../../../../../../common/GroupedDataTable/types"; +import type { TRow } from "../../../../../../common/GroupedDataTable/types"; import BooleanCell from "../../../../../../common/GroupedDataTable/cellRenderers/BooleanCell"; import usePromiseWithSnackbarError from "../../../../../../../hooks/usePromiseWithSnackbarError"; @@ -49,26 +49,24 @@ function Renewables() { const location = useLocation(); const areaId = useAppSelector(getCurrentAreaId); - const { data: clustersWithCapacity = [], isLoading } = - usePromiseWithSnackbarError( - async () => { - const clusters = await getRenewableClusters(study.id, areaId); - return clusters?.map(addClusterCapacity); - }, - { - resetDataOnReload: true, - errorMessage: t("studies.error.retrieveData"), - deps: [study.id, areaId], - }, - ); - - const [totals, setTotals] = useState( - getClustersWithCapacityTotals(clustersWithCapacity), + const { data: clustersWithCapacity = [], isLoading } = usePromiseWithSnackbarError< + RenewableClusterWithCapacity[] + >( + async () => { + const clusters = await getRenewableClusters(study.id, areaId); + return clusters?.map(addClusterCapacity); + }, + { + resetDataOnReload: true, + errorMessage: t("studies.error.retrieveData"), + deps: [study.id, areaId], + }, ); + const [totals, setTotals] = useState(getClustersWithCapacityTotals(clustersWithCapacity)); + const columns = useMemo(() => { - const { totalUnitCount, totalEnabledCapacity, totalInstalledCapacity } = - totals; + const { totalUnitCount, totalEnabledCapacity, totalInstalledCapacity } = totals; return [ columnHelper.accessor("enabled", { @@ -86,9 +84,7 @@ function Renewables() { size: 50, aggregationFn: "sum", AggregatedCell: ({ cell }) => ( - - {cell.getValue()} - + {cell.getValue()} ), Footer: () => {totalUnitCount}, }), @@ -97,24 +93,19 @@ function Renewables() { size: 220, Cell: ({ cell }) => cell.getValue().toFixed(1), }), - columnHelper.accessor( - (row) => toCapacityString(row.enabledCapacity, row.installedCapacity), - { - header: "Enabled / Installed (MW)", - size: 220, - aggregationFn: capacityAggregationFn(), - AggregatedCell: ({ cell }) => ( - - {cell.getValue()} - - ), - Footer: () => ( - - {toCapacityString(totalEnabledCapacity, totalInstalledCapacity)} - - ), - }, - ), + columnHelper.accessor((row) => toCapacityString(row.enabledCapacity, row.installedCapacity), { + header: "Enabled / Installed (MW)", + size: 220, + aggregationFn: capacityAggregationFn(), + AggregatedCell: ({ cell }) => ( + {cell.getValue()} + ), + Footer: () => ( + + {toCapacityString(totalEnabledCapacity, totalInstalledCapacity)} + + ), + }), ]; }, [totals]); @@ -127,16 +118,8 @@ function Renewables() { return addClusterCapacity(cluster); }; - const handleDuplicate = async ( - row: RenewableClusterWithCapacity, - newName: string, - ) => { - const cluster = await duplicateRenewableCluster( - study.id, - areaId, - row.id, - newName, - ); + const handleDuplicate = async (row: RenewableClusterWithCapacity, newName: string) => { + const cluster = await duplicateRenewableCluster(study.id, areaId, row.id, newName); return { ...row, ...cluster }; }; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts index 8ad72eeffc..daf9173aeb 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Renewables/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,11 +12,7 @@ * This file is part of the Antares project. */ -import { - Area, - Cluster, - StudyMetadata, -} from "../../../../../../../common/types"; +import type { Area, Cluster, StudyMetadata } from "../../../../../../../common/types"; import client from "../../../../../../../services/api/client"; import type { PartialExceptFor } from "../../../../../../../utils/tsUtils"; import type { ClusterWithCapacity } from "../common/clustersUtils"; @@ -37,10 +33,7 @@ export const RENEWABLE_GROUPS = [ "other res 4", ] as const; -export const TS_INTERPRETATION_OPTIONS = [ - "power-generation", - "production-factor", -] as const; +export const TS_INTERPRETATION_OPTIONS = ["power-generation", "production-factor"] as const; //////////////////////////////////////////////////////////////// // Types @@ -69,17 +62,14 @@ export interface RenewableCluster { nominalCapacity: number; } -export type RenewableClusterWithCapacity = - ClusterWithCapacity; +export type RenewableClusterWithCapacity = ClusterWithCapacity; //////////////////////////////////////////////////////////////// // Functions //////////////////////////////////////////////////////////////// -const getClustersUrl = ( - studyId: StudyMetadata["id"], - areaId: Area["name"], -): string => `/v1/studies/${studyId}/areas/${areaId}/clusters/renewable`; +const getClustersUrl = (studyId: StudyMetadata["id"], areaId: Area["name"]): string => + `/v1/studies/${studyId}/areas/${areaId}/clusters/renewable`; const getClusterUrl = ( studyId: StudyMetadata["id"], @@ -91,13 +81,8 @@ const getClusterUrl = ( // API //////////////////////////////////////////////////////////////// -export async function getRenewableClusters( - studyId: StudyMetadata["id"], - areaId: Area["name"], -) { - const res = await client.get( - getClustersUrl(studyId, areaId), - ); +export async function getRenewableClusters(studyId: StudyMetadata["id"], areaId: Area["name"]) { + const res = await client.get(getClustersUrl(studyId, areaId)); return res.data; } @@ -106,9 +91,7 @@ export async function getRenewableCluster( areaId: Area["name"], clusterId: Cluster["id"], ) { - const res = await client.get( - getClusterUrl(studyId, areaId, clusterId), - ); + const res = await client.get(getClusterUrl(studyId, areaId, clusterId)); return res.data; } @@ -118,10 +101,7 @@ export async function updateRenewableCluster( clusterId: Cluster["id"], data: Partial, ) { - const res = await client.patch( - getClusterUrl(studyId, areaId, clusterId), - data, - ); + const res = await client.patch(getClusterUrl(studyId, areaId, clusterId), data); return res.data; } @@ -130,10 +110,7 @@ export async function createRenewableCluster( areaId: Area["name"], data: PartialExceptFor, ) { - const res = await client.post( - getClustersUrl(studyId, areaId), - data, - ); + const res = await client.post(getClustersUrl(studyId, areaId), data); return res.data; } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx index 926286613e..b9e633e094 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Reserve.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -19,20 +19,13 @@ import Matrix from "../../../../../common/Matrix"; function Reserve() { const currentArea = useAppSelector(getCurrentAreaId); const url = `input/reserves/${currentArea}`; - const columns = [ - "Primary Res. (draft)", - "Strategic Res. (draft)", - "DSM", - "Day Ahead", - ]; + const columns = ["Primary Res. (draft)", "Strategic Res. (draft)", "DSM", "Day Ahead"]; //////////////////////////////////////////////////////////////// // JSX //////////////////////////////////////////////////////////////// - return ( - - ); + return ; } export default Reserve; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx index 7a2a3a8284..ccb5505ef4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Solar.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx index e3cacb065d..2a5cc3e7a8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -20,9 +20,9 @@ import StringFE from "../../../../../../common/fieldEditors/StringFE"; import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; import Fieldset from "../../../../../../common/Fieldset"; import { useFormContextPlus } from "../../../../../../common/Form"; -import { STORAGE_GROUPS, Storage } from "./utils"; +import { STORAGE_GROUPS, type Storage } from "./utils"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import { validateNumber } from "@/utils/validation/number"; function Fields() { @@ -38,12 +38,7 @@ function Fields() { return ( <>
- + diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx index 4ee29080d4..10f2bd9515 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Form.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -18,13 +18,13 @@ import { useParams, useOutletContext, useNavigate } from "react-router-dom"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import { useTranslation } from "react-i18next"; import * as RA from "ramda-adjunct"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import Form from "../../../../../../common/Form"; import Fields from "./Fields"; -import { SubmitHandlerPlus } from "../../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../../common/Form/types"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; -import { Storage, getStorage, updateStorage } from "./utils"; +import { getStorage, updateStorage, type Storage } from "./utils"; import Matrix from "./Matrix"; import useNavigateOnCondition from "../../../../../../../hooks/useNavigateOnCondition"; import { nameToId } from "../../../../../../../services/utils"; @@ -103,11 +103,7 @@ function Storages() { height: "70vh", }} > - + diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx index 424d482b57..a30f8e6aca 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/Matrix.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,11 +17,8 @@ import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Box from "@mui/material/Box"; import { useTranslation } from "react-i18next"; -import { - type MatrixItem, - type StudyMetadata, -} from "../../../../../../../common/types"; -import { Storage } from "./utils"; +import { type MatrixItem, type StudyMetadata } from "../../../../../../../common/types"; +import type { Storage } from "./utils"; import SplitView from "../../../../../../common/SplitView"; import Matrix from "../../../../../../common/Matrix"; @@ -114,10 +111,7 @@ function StorageMatrices({ areaId, storageId }: Props) { > {content.matrices.map(({ url, titleKey }) => ( - + ))} @@ -125,9 +119,7 @@ function StorageMatrices({ areaId, storageId }: Props) { )} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx index 9ffc3c4b27..d1e07cc5a8 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,19 +17,19 @@ import { useTranslation } from "react-i18next"; import { createMRTColumnHelper } from "material-react-table"; import { Box, Tooltip } from "@mui/material"; import { useLocation, useNavigate, useOutletContext } from "react-router-dom"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; import GroupedDataTable from "../../../../../../common/GroupedDataTable"; import { - Storage, getStorages, deleteStorages, createStorage, STORAGE_GROUPS, - StorageGroup, duplicateStorage, getStoragesTotals, + type Storage, + type StorageGroup, } from "./utils"; import usePromiseWithSnackbarError from "../../../../../../../hooks/usePromiseWithSnackbarError"; import type { TRow } from "../../../../../../common/GroupedDataTable/types"; @@ -57,8 +57,7 @@ function Storages() { const [totals, setTotals] = useState(getStoragesTotals(storages)); const columns = useMemo(() => { - const { totalInjectionNominalCapacity, totalWithdrawalNominalCapacity } = - totals; + const { totalInjectionNominalCapacity, totalWithdrawalNominalCapacity } = totals; return [ studyVersion >= 880 && @@ -70,9 +69,7 @@ function Storages() { header: t("study.modelization.storages.injectionNominalCapacity"), Header: ({ column }) => ( @@ -82,24 +79,16 @@ function Storages() { size: 100, aggregationFn: "sum", AggregatedCell: ({ cell }) => ( - - {Math.round(cell.getValue())} - + {Math.round(cell.getValue())} ), Cell: ({ cell }) => Math.round(cell.getValue()), - Footer: () => ( - - {Math.round(totalInjectionNominalCapacity)} - - ), + Footer: () => {Math.round(totalInjectionNominalCapacity)}, }), columnHelper.accessor("withdrawalNominalCapacity", { header: t("study.modelization.storages.withdrawalNominalCapacity"), Header: ({ column }) => ( @@ -109,16 +98,10 @@ function Storages() { size: 100, aggregationFn: "sum", AggregatedCell: ({ cell }) => ( - - {Math.round(cell.getValue())} - + {Math.round(cell.getValue())} ), Cell: ({ cell }) => Math.round(cell.getValue()), - Footer: () => ( - - {Math.round(totalWithdrawalNominalCapacity)} - - ), + Footer: () => {Math.round(totalWithdrawalNominalCapacity)}, }), columnHelper.accessor("reservoirCapacity", { header: t("study.modelization.storages.reservoirCapacity"), diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts index 3d05b9a659..8956746753 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Storages/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { StudyMetadata, Area } from "../../../../../../../common/types"; +import type { StudyMetadata, Area } from "../../../../../../../common/types"; import client from "../../../../../../../services/api/client"; import type { PartialExceptFor } from "../../../../../../../utils/tsUtils"; @@ -70,10 +70,8 @@ export function getStoragesTotals(storages: Storage[]) { ); } -const getStoragesUrl = ( - studyId: StudyMetadata["id"], - areaId: Area["name"], -): string => `/v1/studies/${studyId}/areas/${areaId}/storages`; +const getStoragesUrl = (studyId: StudyMetadata["id"], areaId: Area["name"]): string => + `/v1/studies/${studyId}/areas/${areaId}/storages`; const getStorageUrl = ( studyId: StudyMetadata["id"], @@ -85,10 +83,7 @@ const getStorageUrl = ( // API //////////////////////////////////////////////////////////////// -export async function getStorages( - studyId: StudyMetadata["id"], - areaId: Area["name"], -) { +export async function getStorages(studyId: StudyMetadata["id"], areaId: Area["name"]) { const res = await client.get(getStoragesUrl(studyId, areaId)); return res.data; } @@ -98,9 +93,7 @@ export async function getStorage( areaId: Area["name"], storageId: Storage["id"], ) { - const res = await client.get( - getStorageUrl(studyId, areaId, storageId), - ); + const res = await client.get(getStorageUrl(studyId, areaId, storageId)); return res.data; } @@ -110,10 +103,7 @@ export async function updateStorage( storageId: Storage["id"], data: Partial, ) { - const res = await client.patch( - getStorageUrl(studyId, areaId, storageId), - data, - ); + const res = await client.patch(getStorageUrl(studyId, areaId, storageId), data); return res.data; } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx index 7d3d5bb0de..c6668c9d43 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Fields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,7 +14,7 @@ import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import Box from "@mui/material/Box"; import NumberFE from "../../../../../../common/fieldEditors/NumberFE"; import SelectFE from "../../../../../../common/fieldEditors/SelectFE"; @@ -26,9 +26,9 @@ import { COST_GENERATION_OPTIONS, THERMAL_GROUPS, THERMAL_POLLUTANTS, - ThermalCluster, TS_GENERATION_OPTIONS, TS_LAW_OPTIONS, + type ThermalCluster, } from "./utils"; import { validateNumber } from "@/utils/validation/number"; @@ -37,8 +37,7 @@ function Fields() { const { control, watch } = useFormContextPlus(); const { study } = useOutletContext<{ study: StudyMetadata }>(); const studyVersion = Number(study.version); - const isCostGenerationEnabled = - watch("costGeneration") === "useCostTimeseries"; + const isCostGenerationEnabled = watch("costGeneration") === "useCostTimeseries"; //////////////////////////////////////////////////////////////// // JSX @@ -47,12 +46,7 @@ function Fields() { return (
- + - + diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx index 8d46249fac..89a2c8a4f4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/Matrix.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,7 +17,7 @@ import Tabs from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Box from "@mui/material/Box"; import { useTranslation } from "react-i18next"; -import { Cluster, StudyMetadata } from "../../../../../../../common/types"; +import type { Cluster, StudyMetadata } from "../../../../../../../common/types"; import { COMMON_MATRIX_COLS, TS_GEN_MATRIX_COLS } from "./utils"; import Matrix from "../../../../../../common/Matrix"; @@ -74,10 +74,7 @@ function ThermalMatrices({ study, areaId, clusterId }: Props) { // Filter matrix data based on the study version. const filteredMatrices = useMemo( - () => - MATRICES.filter(({ minVersion }) => - minVersion ? studyVersion >= minVersion : true, - ), + () => MATRICES.filter(({ minVersion }) => (minVersion ? studyVersion >= minVersion : true)), // eslint-disable-next-line react-hooks/exhaustive-deps [studyVersion], ); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx index 1b71f18651..5c38450478 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,15 +17,15 @@ import { createMRTColumnHelper } from "material-react-table"; import { Box } from "@mui/material"; import { useLocation, useNavigate, useOutletContext } from "react-router-dom"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import { getThermalClusters, createThermalCluster, deleteThermalClusters, THERMAL_GROUPS, - ThermalGroup, duplicateThermalCluster, type ThermalClusterWithCapacity, + type ThermalGroup, } from "./utils"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaId } from "../../../../../../../redux/selectors"; @@ -36,7 +36,7 @@ import { getClustersWithCapacityTotals, toCapacityString, } from "../common/clustersUtils"; -import { TRow } from "../../../../../../common/GroupedDataTable/types"; +import type { TRow } from "../../../../../../common/GroupedDataTable/types"; import BooleanCell from "../../../../../../common/GroupedDataTable/cellRenderers/BooleanCell"; import usePromiseWithSnackbarError from "../../../../../../../hooks/usePromiseWithSnackbarError"; @@ -49,26 +49,24 @@ function Thermal() { const location = useLocation(); const areaId = useAppSelector(getCurrentAreaId); - const { data: clustersWithCapacity = [], isLoading } = - usePromiseWithSnackbarError( - async () => { - const clusters = await getThermalClusters(study.id, areaId); - return clusters?.map(addClusterCapacity); - }, - { - resetDataOnReload: true, - errorMessage: t("studies.error.retrieveData"), - deps: [study.id, areaId], - }, - ); - - const [totals, setTotals] = useState( - getClustersWithCapacityTotals(clustersWithCapacity), + const { data: clustersWithCapacity = [], isLoading } = usePromiseWithSnackbarError< + ThermalClusterWithCapacity[] + >( + async () => { + const clusters = await getThermalClusters(study.id, areaId); + return clusters?.map(addClusterCapacity); + }, + { + resetDataOnReload: true, + errorMessage: t("studies.error.retrieveData"), + deps: [study.id, areaId], + }, ); + const [totals, setTotals] = useState(getClustersWithCapacityTotals(clustersWithCapacity)); + const columns = useMemo(() => { - const { totalUnitCount, totalEnabledCapacity, totalInstalledCapacity } = - totals; + const { totalUnitCount, totalEnabledCapacity, totalInstalledCapacity } = totals; return [ columnHelper.accessor("enabled", { @@ -88,9 +86,7 @@ function Thermal() { size: 50, aggregationFn: "sum", AggregatedCell: ({ cell }) => ( - - {cell.getValue()} - + {cell.getValue()} ), Footer: () => {totalUnitCount}, }), @@ -99,24 +95,19 @@ function Thermal() { size: 220, Cell: ({ cell }) => cell.getValue().toFixed(1), }), - columnHelper.accessor( - (row) => toCapacityString(row.enabledCapacity, row.installedCapacity), - { - header: "Enabled / Installed (MW)", - size: 220, - aggregationFn: capacityAggregationFn(), - AggregatedCell: ({ cell }) => ( - - {cell.getValue()} - - ), - Footer: () => ( - - {toCapacityString(totalEnabledCapacity, totalInstalledCapacity)} - - ), - }, - ), + columnHelper.accessor((row) => toCapacityString(row.enabledCapacity, row.installedCapacity), { + header: "Enabled / Installed (MW)", + size: 220, + aggregationFn: capacityAggregationFn(), + AggregatedCell: ({ cell }) => ( + {cell.getValue()} + ), + Footer: () => ( + + {toCapacityString(totalEnabledCapacity, totalInstalledCapacity)} + + ), + }), columnHelper.accessor("marketBidCost", { header: "Market Bid (€/MWh)", size: 50, @@ -134,16 +125,8 @@ function Thermal() { return addClusterCapacity(cluster); }; - const handleDuplicate = async ( - row: ThermalClusterWithCapacity, - newName: string, - ) => { - const cluster = await duplicateThermalCluster( - study.id, - areaId, - row.id, - newName, - ); + const handleDuplicate = async (row: ThermalClusterWithCapacity, newName: string) => { + const cluster = await duplicateThermalCluster(study.id, areaId, row.id, newName); return { ...row, ...cluster }; }; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts index 6747954f6b..1f744c2795 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Thermal/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,11 +12,7 @@ * This file is part of the Antares project. */ -import { - Area, - Cluster, - StudyMetadata, -} from "../../../../../../../common/types"; +import type { Area, Cluster, StudyMetadata } from "../../../../../../../common/types"; import client from "../../../../../../../services/api/client"; import type { PartialExceptFor } from "../../../../../../../utils/tsUtils"; import type { ClusterWithCapacity } from "../common/clustersUtils"; @@ -79,10 +75,7 @@ export const TS_GENERATION_OPTIONS = [ export const TS_LAW_OPTIONS = ["geometric", "uniform"] as const; -export const COST_GENERATION_OPTIONS = [ - "SetManually", - "useCostTimeseries", -] as const; +export const COST_GENERATION_OPTIONS = ["SetManually", "useCostTimeseries"] as const; //////////////////////////////////////////////////////////////// // Types @@ -93,9 +86,7 @@ export type ThermalGroup = (typeof THERMAL_GROUPS)[number]; type LocalTSGenerationBehavior = (typeof TS_GENERATION_OPTIONS)[number]; type TimeSeriesLawOption = (typeof TS_LAW_OPTIONS)[number]; type CostGeneration = (typeof COST_GENERATION_OPTIONS)[number]; -type ThermalPollutants = { - [K in (typeof THERMAL_POLLUTANTS)[number]]: number; -}; +type ThermalPollutants = Record<(typeof THERMAL_POLLUTANTS)[number], number>; export interface ThermalCluster extends ThermalPollutants { id: string; @@ -131,10 +122,8 @@ export type ThermalClusterWithCapacity = ClusterWithCapacity; // Functions //////////////////////////////////////////////////////////////// -const getClustersUrl = ( - studyId: StudyMetadata["id"], - areaId: Area["name"], -): string => `/v1/studies/${studyId}/areas/${areaId}/clusters/thermal`; +const getClustersUrl = (studyId: StudyMetadata["id"], areaId: Area["name"]): string => + `/v1/studies/${studyId}/areas/${areaId}/clusters/thermal`; const getClusterUrl = ( studyId: StudyMetadata["id"], @@ -146,13 +135,8 @@ const getClusterUrl = ( // API //////////////////////////////////////////////////////////////// -export async function getThermalClusters( - studyId: StudyMetadata["id"], - areaId: Area["name"], -) { - const res = await client.get( - getClustersUrl(studyId, areaId), - ); +export async function getThermalClusters(studyId: StudyMetadata["id"], areaId: Area["name"]) { + const res = await client.get(getClustersUrl(studyId, areaId)); return res.data; } @@ -161,9 +145,7 @@ export async function getThermalCluster( areaId: Area["name"], clusterId: Cluster["id"], ) { - const res = await client.get( - getClusterUrl(studyId, areaId, clusterId), - ); + const res = await client.get(getClusterUrl(studyId, areaId, clusterId)); return res.data; } @@ -173,10 +155,7 @@ export async function updateThermalCluster( clusterId: Cluster["id"], data: Partial, ) { - const res = await client.patch( - getClusterUrl(studyId, areaId, clusterId), - data, - ); + const res = await client.patch(getClusterUrl(studyId, areaId, clusterId), data); return res.data; } @@ -185,10 +164,7 @@ export async function createThermalCluster( areaId: Area["name"], data: PartialExceptFor, ) { - const res = await client.post( - getClustersUrl(studyId, areaId), - data, - ); + const res = await client.post(getClustersUrl(studyId, areaId), data); return res.data; } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx index 68291addcf..1a8c40e038 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/Wind.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts index 56d94c7497..37b11c4be3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/common/clustersUtils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,14 +12,11 @@ * This file is part of the Antares project. */ -import { MRT_AggregationFn } from "material-react-table"; -import { ThermalClusterWithCapacity } from "../Thermal/utils"; -import { RenewableClusterWithCapacity } from "../Renewables/utils"; +import type { MRT_AggregationFn } from "material-react-table"; +import type { ThermalClusterWithCapacity } from "../Thermal/utils"; +import type { RenewableClusterWithCapacity } from "../Renewables/utils"; -export function toCapacityString( - enabledCapacity: number, - installedCapacity: number, -) { +export function toCapacityString(enabledCapacity: number, installedCapacity: number) { return `${Math.round(enabledCapacity)} / ${Math.round(installedCapacity)}`; } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx index 199a543c27..dd74204be0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,15 +13,12 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import EmptyView from "../../../../../common/page/EmptyView"; import AreaPropsView from "./AreaPropsView"; import AreasTab from "./AreasTab"; import useStudySynthesis from "../../../../../../redux/hooks/useStudySynthesis"; -import { - getStudySynthesis, - getCurrentArea, -} from "../../../../../../redux/selectors"; +import { getStudySynthesis, getCurrentArea } from "../../../../../../redux/selectors"; import useAppDispatch from "../../../../../../redux/hooks/useAppDispatch"; import { setCurrentArea } from "../../../../../../redux/ducks/studySyntheses"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; @@ -53,20 +50,14 @@ function Areas() { return ( {/* Left */} - + {/* Right */} currentArea ? ( - + ) : ( ) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts index 73594af06e..0a4a5f8ddf 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Areas/style.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx index a9ac5833c6..cc6316ebf9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/AddDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,21 +17,14 @@ import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; import FormDialog from "../../../../../common/dialogs/FormDialog"; -import { - BindingConstraintOperator, - TimeStep, -} from "../../../Commands/Edition/commandTypes"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; -import { - BindingConstraint, - OPERATORS, - TIME_STEPS, -} from "./BindingConstView/utils"; +import { BindingConstraintOperator, TimeStep } from "../../../Commands/Edition/commandTypes"; +import type { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import { OPERATORS, TIME_STEPS, type BindingConstraint } from "./BindingConstView/utils"; import { createBindingConstraint } from "../../../../../../services/api/studydata"; import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import StringFE from "../../../../../common/fieldEditors/StringFE"; import SwitchFE from "../../../../../common/fieldEditors/SwitchFE"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import { setCurrentBindingConst } from "../../../../../../redux/ducks/studySyntheses"; import useAppDispatch from "../../../../../../redux/hooks/useAppDispatch"; import { useOutletContext } from "react-router"; @@ -45,12 +38,7 @@ interface Props { } // TODO rename AddConstraintDialog -function AddDialog({ - open, - onClose, - existingConstraints, - reloadConstraintsList, -}: Props) { +function AddDialog({ open, onClose, existingConstraints, reloadConstraintsList }: Props) { const { study } = useOutletContext<{ study: StudyMetadata }>(); const { enqueueSnackbar } = useSnackbar(); const dispatch = useAppDispatch(); @@ -88,9 +76,7 @@ function AddDialog({ // Event Handlers //////////////////////////////////////////////////////////////// - const handleSubmit = ({ - values, - }: SubmitHandlerPlus) => { + const handleSubmit = ({ values }: SubmitHandlerPlus) => { return createBindingConstraint(study.id, values); }; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx index e750c0a1aa..a8d93d4dc4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstPropsView.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,7 +16,7 @@ import { useEffect, useMemo, useState } from "react"; import PropertiesView from "../../../../../common/PropertiesView"; import ListElement from "../../common/ListElement"; import AddDialog from "./AddDialog"; -import { BindingConstraint } from "./BindingConstView/utils"; +import type { BindingConstraint } from "./BindingConstView/utils"; interface Props { list: BindingConstraint[]; @@ -26,12 +26,7 @@ interface Props { } // TODO rename ConstraintsList -function BindingConstPropsView({ - list, - onClick, - currentConstraint, - reloadConstraintsList, -}: Props) { +function BindingConstPropsView({ list, onClick, currentConstraint, reloadConstraintsList }: Props) { const [searchedConstraint, setSearchedConstraint] = useState(""); const [addBindingConst, setAddBindingConst] = useState(false); const [filteredConstraints, setFilteredConstraints] = useState(list); @@ -53,10 +48,7 @@ function BindingConstPropsView({ setFilteredConstraints(filtered); }, [list, searchedConstraint]); - const existingConstraints = useMemo( - () => list.map(({ name }) => name), - [list], - ); + const existingConstraints = useMemo(() => list.map(({ name }) => name), [list]); //////////////////////////////////////////////////////////////// // JSX diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx index 63a33457a3..1ef789600f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/OptionsList.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,8 +16,8 @@ import { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { useFormContext } from "react-hook-form"; import SelectFE from "../../../../../../../../common/fieldEditors/SelectFE"; -import { AllClustersAndLinks } from "../../../../../../../../../common/types"; -import { ConstraintTerm, isTermExist, generateTermId } from "../../utils"; +import type { AllClustersAndLinks } from "../../../../../../../../../common/types"; +import { isTermExist, generateTermId, type ConstraintTerm } from "../../utils"; interface Props { list: AllClustersAndLinks; @@ -28,8 +28,7 @@ interface Props { export default function OptionsList({ list, isLink, constraintTerms }: Props) { const [t] = useTranslation(); - const { control, setValue, watch, getValues } = - useFormContext(); + const { control, setValue, watch, getValues } = useFormContext(); // Determines the correct set of options based on whether the term is a link or a cluster. const options = isLink ? list.links : list.clusters; @@ -49,9 +48,7 @@ export default function OptionsList({ list, isLink, constraintTerms }: Props) { const getAreaOrClusterOptions = () => { const selectedArea = getValues(isLink ? "data.area1" : "data.area"); - const foundOption = options.find( - (option) => option.element.id === selectedArea, - ); + const foundOption = options.find((option) => option.element.id === selectedArea); if (!foundOption) { return []; @@ -63,9 +60,7 @@ export default function OptionsList({ list, isLink, constraintTerms }: Props) { !isTermExist( constraintTerms, generateTermId( - isLink - ? { area1: selectedArea, area2: id } - : { area: selectedArea, cluster: id }, + isLink ? { area1: selectedArea, area2: id } : { area: selectedArea, cluster: id }, ), ), ) diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx index f70facc13a..35605cee3d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/AddConstraintTermForm/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,7 +16,7 @@ import { useState } from "react"; import { Box, Button, Typography } from "@mui/material"; import AddCircleOutlineRoundedIcon from "@mui/icons-material/AddCircleOutlineRounded"; import { useTranslation } from "react-i18next"; -import { AllClustersAndLinks } from "../../../../../../../../../common/types"; +import type { AllClustersAndLinks } from "../../../../../../../../../common/types"; import OptionsList from "./OptionsList"; import NumberFE from "../../../../../../../../common/fieldEditors/NumberFE"; import { useFormContextPlus } from "../../../../../../../../common/Form"; @@ -29,10 +29,7 @@ interface Props { constraintTerms: ConstraintTerm[]; } -export default function AddConstraintTermForm({ - options, - constraintTerms, -}: Props) { +export default function AddConstraintTermForm({ options, constraintTerms }: Props) { const { control, setValue } = useFormContextPlus(); const [t] = useTranslation(); @@ -77,11 +74,7 @@ export default function AddConstraintTermForm({ } right={ - + } /> diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx index f0f893ec0f..f232ffd5d7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/AddConstraintTermDialog/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,26 +12,19 @@ * This file is part of the Antares project. */ -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; -import { UseFieldArrayAppend } from "react-hook-form"; -import FormDialog, { - FormDialogProps, -} from "../../../../../../../common/dialogs/FormDialog"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import type { UseFieldArrayAppend } from "react-hook-form"; +import FormDialog, { type FormDialogProps } from "../../../../../../../common/dialogs/FormDialog"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; import useEnqueueErrorSnackbar from "../../../../../../../../hooks/useEnqueueErrorSnackbar"; -import { - isLinkTerm, - type BindingConstraint, - type ConstraintTerm, -} from "../utils"; +import { isLinkTerm, type BindingConstraint, type ConstraintTerm } from "../utils"; import AddConstraintTermForm from "./AddConstraintTermForm"; import { createConstraintTerm } from "../../../../../../../../services/api/studydata"; -import { AllClustersAndLinks } from "../../../../../../../../common/types"; +import type { AllClustersAndLinks } from "../../../../../../../../common/types"; import useStudySynthesis from "../../../../../../../../redux/hooks/useStudySynthesis"; import { getLinksAndClusters } from "../../../../../../../../redux/selectors"; -import { BaseSyntheticEvent } from "react"; import UsePromiseCond from "../../../../../../../common/utils/UsePromiseCond"; interface Props extends Omit { @@ -123,7 +116,7 @@ function AddConstraintTermDialog({ */ const handleSubmit = async ( { values }: SubmitHandlerPlus, - _event?: BaseSyntheticEvent, + _event?: React.BaseSyntheticEvent, ) => { try { const newTerm = { @@ -141,10 +134,7 @@ function AddConstraintTermDialog({ variant: "success", }); } catch (e) { - enqueueErrorSnackbar( - t("study.error.createConstraintTerm"), - e as AxiosError, - ); + enqueueErrorSnackbar(t("study.error.createConstraintTerm"), e as AxiosError); } finally { onCancel(); } @@ -165,10 +155,7 @@ function AddConstraintTermDialog({ ( - + )} /> diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx index d821dfe10d..b8cd70b7e1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/BindingConstForm.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { Box, Button } from "@mui/material"; @@ -21,15 +21,8 @@ import DeleteIcon from "@mui/icons-material/Delete"; import { useFieldArray } from "react-hook-form"; import { useSnackbar } from "notistack"; import useEnqueueErrorSnackbar from "../../../../../../../hooks/useEnqueueErrorSnackbar"; -import { - type ConstraintTerm, - generateTermId, - BindingConstraint, -} from "./utils"; -import { - AllClustersAndLinks, - StudyMetadata, -} from "../../../../../../../common/types"; +import { generateTermId, type ConstraintTerm, type BindingConstraint } from "./utils"; +import type { AllClustersAndLinks, StudyMetadata } from "../../../../../../../common/types"; import ConstraintTermItem from "./ConstraintTerm"; import { useFormContextPlus } from "../../../../../../common/Form"; import { @@ -54,8 +47,7 @@ function BindingConstForm({ study, options, constraintId }: Props) { const { enqueueSnackbar } = useSnackbar(); const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const [termToDelete, setTermToDelete] = useState(); - const [openConstraintTermDialog, setOpenConstraintTermDialog] = - useState(false); + const [openConstraintTermDialog, setOpenConstraintTermDialog] = useState(false); const { control } = useFormContextPlus(); @@ -74,11 +66,7 @@ function BindingConstForm({ study, options, constraintId }: Props) { //////////////////////////////////////////////////////////////// const handleUpdateTerm = useDebounce( - async ( - index: number, - prevTerm: ConstraintTerm, - newTerm: ConstraintTerm, - ) => { + async (index: number, prevTerm: ConstraintTerm, newTerm: ConstraintTerm) => { try { const updatedTerm = { ...prevTerm, @@ -95,10 +83,7 @@ function BindingConstForm({ study, options, constraintId }: Props) { variant: "success", }); } catch (error) { - enqueueErrorSnackbar( - t("study.error.updateConstraintTerm"), - error as AxiosError, - ); + enqueueErrorSnackbar(t("study.error.updateConstraintTerm"), error as AxiosError); } }, 500, @@ -110,10 +95,7 @@ function BindingConstForm({ study, options, constraintId }: Props) { await deleteConstraintTerm(study.id, constraintId, termId); remove(termToDelete); } catch (error) { - enqueueErrorSnackbar( - t("study.error.deleteConstraintTerm"), - error as AxiosError, - ); + enqueueErrorSnackbar(t("study.error.deleteConstraintTerm"), error as AxiosError); } finally { setTermToDelete(undefined); } @@ -125,10 +107,7 @@ function BindingConstForm({ study, options, constraintId }: Props) { return ( <> -
+
{constraintTerms.map((term: ConstraintTerm, index: number) => ( - {index > 0 && ( - - )} + {index > 0 && } handleUpdateTerm(index, term, newTerm)} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx index 285c3fd11e..4052f89a30 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintFields.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,23 +12,18 @@ * This file is part of the Antares project. */ -import { - BindingConstraint, - OPERATORS, - OUTPUT_FILTERS, - TIME_STEPS, -} from "./utils"; +import { type BindingConstraint, OPERATORS, OUTPUT_FILTERS, TIME_STEPS } from "./utils"; import Fieldset from "../../../../../../common/Fieldset"; import SelectFE from "../../../../../../common/fieldEditors/SelectFE"; import StringFE from "../../../../../../common/fieldEditors/StringFE"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; import { useFormContextPlus } from "../../../../../../common/Form"; import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { Box, Button } from "@mui/material"; -import { Dataset } from "@mui/icons-material"; +import DatasetIcon from "@mui/icons-material/Dataset"; import { validateString } from "@/utils/validation/string"; import ConstraintMatrix from "./Matrix"; @@ -76,11 +71,7 @@ function Fields({ study, constraintId }: Props) { return ( <> -
+
} + startIcon={} onClick={() => setMatrixDialogOpen(true)} sx={{ mt: 2 }} > diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx index f6777e5f66..c7f3c787d4 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/OptionsList.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,9 +14,9 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; -import { AllClustersAndLinks } from "../../../../../../../../common/types"; +import type { AllClustersAndLinks } from "../../../../../../../../common/types"; import SelectSingle from "../../../../../../../common/SelectSingle"; -import { ConstraintTerm, generateTermId, isTermExist } from "../utils"; +import { generateTermId, isTermExist, type ConstraintTerm } from "../utils"; import { Box } from "@mui/material"; interface Option { @@ -66,9 +66,7 @@ export default function OptionsList({ const relatedOptions = isLink ? list.links : list.clusters; // Attempt to find the option that matches the selected area - const foundOption = relatedOptions.find( - ({ element }) => element.id === selectedArea, - ); + const foundOption = relatedOptions.find(({ element }) => element.id === selectedArea); if (!foundOption) { return []; @@ -76,29 +74,17 @@ export default function OptionsList({ return foundOption.item_list.reduce((acc, { id, name }) => { const termId = generateTermId( - isLink - ? { area1: selectedArea, area2: id } - : { area: selectedArea, cluster: id }, + isLink ? { area1: selectedArea, area2: id } : { area: selectedArea, cluster: id }, ); // Check if the id is valid - if ( - id === selectedClusterOrArea || - !isTermExist(constraintTerms, termId) - ) { + if (id === selectedClusterOrArea || !isTermExist(constraintTerms, termId)) { acc.push({ name, id: id.toLowerCase() }); } return acc; }, []); - }, [ - selectedArea, - isLink, - list.links, - list.clusters, - selectedClusterOrArea, - constraintTerms, - ]); + }, [selectedArea, isLink, list.links, list.clusters, selectedClusterOrArea, constraintTerms]); //////////////////////////////////////////////////////////////// // Event Handlers @@ -112,9 +98,7 @@ export default function OptionsList({ setSelectedClusterOrArea(value); saveValue({ ...term, - data: isLink - ? { area1: selectedArea, area2: value } - : { area: selectedArea, cluster: value }, + data: isLink ? { area1: selectedArea, area2: value } : { area: selectedArea, cluster: value }, }); }; @@ -144,9 +128,7 @@ export default function OptionsList({ label={t(`study.${isLink ? "area2" : "cluster"}`)} data={selectedClusterOrArea.toLowerCase()} list={clusterOrAreaOptions} - handleChange={(key, value) => - handleClusterOrAreaChange(value as string) - } + handleChange={(key, value) => handleClusterOrAreaChange(value as string)} sx={{ minWidth: 300, }} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx index 04bb4e22b9..4bae23bf70 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/ConstraintTerm/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,13 +12,13 @@ * This file is part of the Antares project. */ -import { ChangeEvent, useMemo, useState } from "react"; +import { useMemo, useState } from "react"; import { Box, Button, TextField, Typography } from "@mui/material"; import AddCircleOutlineRoundedIcon from "@mui/icons-material/AddCircleOutlineRounded"; import DeleteRoundedIcon from "@mui/icons-material/DeleteRounded"; import { useTranslation } from "react-i18next"; -import { ConstraintTerm, isLinkTerm } from "../utils"; -import { AllClustersAndLinks } from "../../../../../../../../common/types"; +import { isLinkTerm, type ConstraintTerm } from "../utils"; +import type { AllClustersAndLinks } from "../../../../../../../../common/types"; import OptionsList from "./OptionsList"; import ConstraintElement from "../constraintviews/ConstraintElement"; import OffsetInput from "../constraintviews/OffsetInput"; @@ -63,13 +63,7 @@ interface Props { * * @returns Constraint Term component of type link or cluster */ -function ConstraintTermItem({ - options, - term, - constraintTerms, - saveValue, - deleteTerm, -}: Props) { +function ConstraintTermItem({ options, term, constraintTerms, saveValue, deleteTerm }: Props) { const [t] = useTranslation(); const [weight, setWeight] = useState(term.weight); const [offset, setOffset] = useState(term.offset); @@ -108,24 +102,19 @@ function ConstraintTermItem({ */ const [selectedArea, setSelectedArea] = useState(area); - const [selectedClusterOrArea, setSelectedClusterOrArea] = - useState(areaOrCluster); + const [selectedClusterOrArea, setSelectedClusterOrArea] = useState(areaOrCluster); //////////////////////////////////////////////////////////////// // Event Handlers //////////////////////////////////////////////////////////////// - const handleWeightChange = ( - event: ChangeEvent, - ) => { + const handleWeightChange = (event: React.ChangeEvent) => { const newWeight = parseFloat(event.target.value) || 0; setWeight(newWeight); saveValue({ ...term, weight: newWeight }); }; - const handleOffsetChange = ( - event: ChangeEvent, - ) => { + const handleOffsetChange = (event: React.ChangeEvent) => { const value = event.target.value; const newOffset = value === "" ? undefined : parseInt(value, 10); setOffset(newOffset); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx index 03f7bfddf3..f94c7421b7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/Matrix.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,13 +13,11 @@ */ import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../common/types"; -import { Operator } from "./utils"; +import type { StudyMetadata } from "../../../../../../../common/types"; +import type { Operator } from "./utils"; import SplitView from "../../../../../../common/SplitView"; import { Box, Button } from "@mui/material"; -import BasicDialog, { - BasicDialogProps, -} from "../../../../../../common/dialogs/BasicDialog"; +import BasicDialog, { type BasicDialogProps } from "../../../../../../common/dialogs/BasicDialog"; import Matrix from "../../../../../../common/Matrix"; interface Props { @@ -30,13 +28,7 @@ interface Props { onClose: () => void; } -function ConstraintMatrix({ - study, - operator, - constraintId, - open, - onClose, -}: Props) { +function ConstraintMatrix({ study, operator, constraintId, open, onClose }: Props) { const { t } = useTranslation(); const dialogProps: BasicDialogProps = { open, @@ -91,9 +83,7 @@ function ConstraintMatrix({ diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx index 757c2eb019..275ad466e5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/ConstraintElement.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,25 +13,18 @@ */ import { FormControlLabel, Switch, Typography } from "@mui/material"; -import { ReactNode } from "react"; import { ConstraintElementData, ConstraintElementRoot } from "./style"; import { useTranslation } from "react-i18next"; interface ElementProps { - left: ReactNode; - right: ReactNode; + left: React.ReactNode; + right: React.ReactNode; operator?: string; isLink?: boolean; onToggleType?: () => void; } -function ConstraintElement({ - isLink, - left, - right, - operator = "x", - onToggleType, -}: ElementProps) { +function ConstraintElement({ isLink, left, right, operator = "x", onToggleType }: ElementProps) { const { t } = useTranslation(); return ( diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx index f63a7288c1..56d3d51d55 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/constraintviews/OffsetInput.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,13 +14,12 @@ import HighlightOffIcon from "@mui/icons-material/HighlightOff"; import { Box } from "@mui/material"; -import { PropsWithChildren } from "react"; interface Props { onRemove: () => void; } -export default function OffsetInput(props: PropsWithChildren) { +export default function OffsetInput(props: React.PropsWithChildren) { const { onRemove, children } = props; return ( ({ flexDirection: "column", padding: theme.spacing(1), borderRadius: 5, - backgroundImage: - "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", + backgroundImage: "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", })); export const ConstraintElementData = styled(Box)(({ theme }) => ({ diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx index 6360007bef..3346a58578 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,12 +12,10 @@ * This file is part of the Antares project. */ -import { BindingConstraint } from "./utils"; +import type { BindingConstraint } from "./utils"; import { Box, Button, Skeleton } from "@mui/material"; import Form from "../../../../../../common/Form"; -import UsePromiseCond, { - mergeResponses, -} from "../../../../../../common/utils/UsePromiseCond"; +import UsePromiseCond, { mergeResponses } from "../../../../../../common/utils/UsePromiseCond"; import { getBindingConstraint, getBindingConstraintList, @@ -25,14 +23,14 @@ import { } from "../../../../../../../services/api/studydata"; import { useOutletContext } from "react-router"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import BindingConstForm from "./BindingConstForm"; import { CommandEnum } from "../../../../Commands/Edition/commandTypes"; import ConfirmationDialog from "../../../../../../common/dialogs/ConfirmationDialog"; import ConstraintFields from "./ConstraintFields"; import Delete from "@mui/icons-material/Delete"; -import { StudyMetadata } from "../../../../../../../common/types"; -import { SubmitHandlerPlus } from "../../../../../../common/Form/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; +import type { SubmitHandlerPlus } from "../../../../../../common/Form/types"; import { appendCommands } from "../../../../../../../services/api/variant"; import { getLinksAndClusters } from "../../../../../../../redux/selectors"; import { setCurrentBindingConst } from "../../../../../../../redux/ducks/studySyntheses"; @@ -54,8 +52,7 @@ function BindingConstView({ constraintId }: Props) { const dispatch = useAppDispatch(); const { enqueueSnackbar } = useSnackbar(); const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); - const [deleteConstraintDialogOpen, setDeleteConstraintDialogOpen] = - useState(false); + const [deleteConstraintDialogOpen, setDeleteConstraintDialogOpen] = useState(false); const constraint = usePromise( () => getBindingConstraint(study.id, constraintId), @@ -71,9 +68,7 @@ function BindingConstView({ constraintId }: Props) { // Event handlers //////////////////////////////////////////////////////////////// - const handleSubmitConstraint = ({ - values, - }: SubmitHandlerPlus) => { + const handleSubmitConstraint = ({ values }: SubmitHandlerPlus) => { const { id, name, ...updatedConstraint } = values; return updateBindingConstraint(study.id, constraintId, updatedConstraint); @@ -170,9 +165,7 @@ function BindingConstView({ constraintId }: Props) { alert="warning" open > - {t( - "study.modelization.bindingConst.question.deleteBindingConstraint", - )} + {t("study.modelization.bindingConst.question.deleteBindingConstraint")} )} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts index 30b7dbc06e..89cccf43b5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/BindingConstView/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -21,13 +21,7 @@ export const ACTIVE_WINDOWS_DOC_PATH = export const OPERATORS = ["less", "equal", "greater", "both"] as const; export const TIME_STEPS = ["hourly", "daily", "weekly"] as const; -export const OUTPUT_FILTERS = [ - "hourly", - "daily", - "weekly", - "monthly", - "annual", -] as const; +export const OUTPUT_FILTERS = ["hourly", "daily", "weekly", "monthly", "annual"] as const; //////////////////////////////////////////////////////////////// // Types @@ -126,10 +120,8 @@ export function generateTermId( * @param termId - The unique identifier of the term, either a LinkTermId or a ClusterTermId. * @returns True if a term with the specified ID exists; otherwise, false. */ -export const isTermExist = ( - terms: ConstraintTerm[], - termId: LinkTermId | ClusterTermId, -): boolean => terms.some(({ id }) => id === termId); +export const isTermExist = (terms: ConstraintTerm[], termId: LinkTermId | ClusterTermId): boolean => + terms.some(({ id }) => id === termId); /** * !WARNING: Temporary Workaround (Model adapter) @@ -202,9 +194,7 @@ function adaptOutputFilterFormat( } } - throw new Error( - "Invalid input: Expected a string or an array of OutputFilter values", - ); + throw new Error("Invalid input: Expected a string or an array of OutputFilter values"); } /** @@ -214,9 +204,7 @@ function adaptOutputFilterFormat( * @param data - The BindingConstraint object to transform. * @returns The transformed BindingConstraint object. */ -export function bindingConstraintModelAdapter( - data: BindingConstraint, -): BindingConstraint { +export function bindingConstraintModelAdapter(data: BindingConstraint): BindingConstraint { const filterSynthesis = adaptOutputFilterFormat(data.filterSynthesis); const filterYearByYear = adaptOutputFilterFormat(data.filterYearByYear); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx index fa48b6aa15..41bea45f7b 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/BindingConstraints/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,13 +13,10 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import EmptyView from "../../../../../common/page/EmptyView"; import BindingConstPropsView from "./BindingConstPropsView"; -import { - getBindingConst, - getCurrentBindingConstId, -} from "../../../../../../redux/selectors"; +import { getBindingConst, getCurrentBindingConstId } from "../../../../../../redux/selectors"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import useAppDispatch from "../../../../../../redux/hooks/useAppDispatch"; import { setCurrentBindingConst } from "../../../../../../redux/ducks/studySyntheses"; @@ -39,9 +36,7 @@ function BindingConstraints() { const currentConstraintId = useAppSelector(getCurrentBindingConstId); - const bindingConstraints = useAppSelector((state) => - getBindingConst(state, study.id), - ); + const bindingConstraints = useAppSelector((state) => getBindingConst(state, study.id)); const constraintsRes = usePromise( () => getBindingConstraintList(study.id), diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx index 610dff4c74..ccb83d3960 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkPropsView.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,7 +17,7 @@ import PropertiesView from "../../../../../common/PropertiesView"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getCurrentLinkId, getLinks } from "../../../../../../redux/selectors"; import ListElement from "../../common/ListElement"; -import { LinkElement } from "../../../../../../common/types"; +import type { LinkElement } from "../../../../../../common/types"; interface PropsType { studyId: string; @@ -28,17 +28,13 @@ function LinkPropsView(props: PropsType) { const currentLinkId = useAppSelector(getCurrentLinkId); const links = useAppSelector((state) => getLinks(state, studyId)); const [linkNameFilter, setLinkNameFilter] = useState(); - const [filteredLinks, setFilteredLinks] = useState( - links || [], - ); + const [filteredLinks, setFilteredLinks] = useState(links || []); useEffect(() => { const filter = (): LinkElement[] => { if (links) { return links.filter( - (s) => - !linkNameFilter || - s.name.search(new RegExp(linkNameFilter, "i")) !== -1, + (s) => !linkNameFilter || s.name.search(new RegExp(linkNameFilter, "i")) !== -1, ); } return []; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx index dbfccc9e82..d00f94c21d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/LinkForm.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,16 +13,16 @@ */ import { Box } from "@mui/material"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { editStudy } from "../../../../../../../services/api/study"; import useEnqueueErrorSnackbar from "../../../../../../../hooks/useEnqueueErrorSnackbar"; import Fieldset from "../../../../../../common/Fieldset"; -import { AutoSubmitHandler } from "../../../../../../common/Form/types"; -import { getLinkPath, LinkFields } from "./utils"; +import type { AutoSubmitHandler } from "../../../../../../common/Form/types"; +import { getLinkPath, type LinkFields } from "./utils"; import SwitchFE from "../../../../../../common/fieldEditors/SwitchFE"; -import { LinkElement, StudyMetadata } from "../../../../../../../common/types"; +import type { LinkElement, StudyMetadata } from "../../../../../../../common/types"; import SelectFE from "../../../../../../common/fieldEditors/SelectFE"; import LinkMatrixView from "./LinkMatrixView"; import OutputFilters from "../../../common/OutputFilters"; @@ -41,7 +41,7 @@ function LinkForm(props: Props) { let version = 0; try { version = parseInt(study.version, 10); - } catch (e) { + } catch { version = 0; } return version >= 820; @@ -72,12 +72,8 @@ function LinkForm(props: Props) { const columnsNames = [ t("study.modelization.links.matrix.columns.transCapaDirect"), t("study.modelization.links.matrix.columns.transCapaIndirect"), - `${t( - "study.modelization.links.matrix.columns.hurdleCostsDirect", - )} (${area1}->${area2})`, - `${t( - "study.modelization.links.matrix.columns.hurdleCostsIndirect", - )} (${area2}->${area1})`, + `${t("study.modelization.links.matrix.columns.hurdleCostsDirect")} (${area1}->${area2})`, + `${t("study.modelization.links.matrix.columns.hurdleCostsIndirect")} (${area2}->${area1})`, t("study.modelization.links.matrix.columns.impedances"), t("study.modelization.links.matrix.columns.loopFlow"), t("study.modelization.links.matrix.columns.pShiftMin"), @@ -232,9 +228,7 @@ function LinkForm(props: Props) {
- handleAutoSubmit(path[filterName], value) - } + onAutoSubmit={(filterName, value) => handleAutoSubmit(path[filterName], value)} /> { + const handleTabChange = (event: React.SyntheticEvent, newValue: string) => { setActiveTab(newValue); }; @@ -104,10 +104,10 @@ function LinkMatrixView({ area1, area2 }: Props) { ))} @@ -116,9 +116,7 @@ function LinkMatrixView({ area1, area2 }: Props) { )} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx index 43b44852ea..cfeca31495 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { useOutletContext } from "react-router"; -import { LinkElement, StudyMetadata } from "../../../../../../../common/types"; +import type { LinkElement, StudyMetadata } from "../../../../../../../common/types"; import usePromise from "../../../../../../../hooks/usePromise"; import Form from "../../../../../../common/Form"; import LinkForm from "./LinkForm"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts index d2cc46d077..1309f46352 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/LinkView/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,9 +12,9 @@ * This file is part of the Antares project. */ -import { FieldValues } from "react-hook-form"; +import type { FieldValues } from "react-hook-form"; import { getStudyData } from "../../../../../../../services/api/study"; -import { FilteringType } from "../../../common/types"; +import type { FilteringType } from "../../../common/types"; type TransCapacitiesType = "infinite" | "ignore" | "enabled"; type AssetType = "ac" | "dc" | "gaz" | "virt"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx index 29ab7632ba..a2b8d1482c 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Links/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../common/types"; import EmptyView from "../../../../../common/page/EmptyView"; import LinkPropsView from "./LinkPropsView"; import { getCurrentLink } from "../../../../../../redux/selectors"; @@ -34,14 +34,9 @@ function Links() { const { study } = useOutletContext<{ study: StudyMetadata }>(); const [t] = useTranslation(); const dispatch = useAppDispatch(); - const currentLink = useAppSelector((state) => - getCurrentLink(state, study.id), - ); + const currentLink = useAppSelector((state) => getCurrentLink(state, study.id)); - const linksRes = usePromise( - () => getLinks({ studyId: study.id }), - [study.id], - ); + const linksRes = usePromise(() => getLinks({ studyId: study.id }), [study.id]); // Handle automatic selection of the first link useEffect(() => { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx index db30224399..1aa6cfcefa 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaConfig.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,17 +13,17 @@ */ import { useEffect, useState } from "react"; -import { ColorResult, MaterialPicker } from "react-color"; +import { MaterialPicker, type ColorResult } from "react-color"; import { Box, TextField, Divider } from "@mui/material"; import { useTranslation } from "react-i18next"; -import { LinkElement, UpdateAreaUi } from "../../../../../../../common/types"; +import type { LinkElement, UpdateAreaUi } from "../../../../../../../common/types"; import AreaLinks from "./AreaLinks"; import AreaLink from "./AreaLink"; import { AreaColorPicker, AreaHuePicker } from "./style"; import DeleteAreaDialog from "./DeleteAreaDialog"; -import { StudyMapNode } from "../../../../../../../redux/ducks/studyMaps"; +import type { StudyMapNode } from "../../../../../../../redux/ducks/studyMaps"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentLayer } from "../../../../../../../redux/selectors"; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx index 87f38baf9f..285d6fb639 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLink.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,11 +13,8 @@ */ import { useTranslation } from "react-i18next"; -import { LinkElement } from "../../../../../../../common/types"; -import { - setCurrentArea, - setCurrentLink, -} from "../../../../../../../redux/ducks/studySyntheses"; +import type { LinkElement } from "../../../../../../../common/types"; +import { setCurrentArea, setCurrentLink } from "../../../../../../../redux/ducks/studySyntheses"; import useAppDispatch from "../../../../../../../redux/hooks/useAppDispatch"; import { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx index 8f4f5dba3f..d944e7e07f 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/AreaLinks.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,28 +14,18 @@ import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router-dom"; -import { StudyMetadata } from "../../../../../../../common/types"; -import { - setCurrentArea, - setCurrentLink, -} from "../../../../../../../redux/ducks/studySyntheses"; +import type { StudyMetadata } from "../../../../../../../common/types"; +import { setCurrentArea, setCurrentLink } from "../../../../../../../redux/ducks/studySyntheses"; import useAppDispatch from "../../../../../../../redux/hooks/useAppDispatch"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; import { getCurrentAreaLinks } from "../../../../../../../redux/selectors"; -import { - AreaLinkContainer, - AreaLinkContent, - AreaLinkRoot, - AreaLinkTitle, -} from "./style"; +import { AreaLinkContainer, AreaLinkContent, AreaLinkRoot, AreaLinkTitle } from "./style"; function AreaLinks() { const [t] = useTranslation(); const dispatch = useAppDispatch(); const { study } = useOutletContext<{ study: StudyMetadata }>(); - const areaLinks = useAppSelector((state) => - getCurrentAreaLinks(state, study.id), - ); + const areaLinks = useAppSelector((state) => getCurrentAreaLinks(state, study.id)); //////////////////////////////////////////////////////////////// // JSX @@ -43,9 +33,7 @@ function AreaLinks() { return ( - {areaLinks.length > 0 && ( - {t("study.links")} - )} + {areaLinks.length > 0 && {t("study.links")}} {areaLinks.length > 0 && areaLinks.map(({ label, id }) => ( diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx index fd7f4350ad..71ef6389c1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/DeleteAreaDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,22 +13,19 @@ */ import { Box, Button, Typography } from "@mui/material"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; -import { StudyMetadata } from "../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../common/types"; import useEnqueueErrorSnackbar from "../../../../../../../hooks/useEnqueueErrorSnackbar"; import { deleteStudyMapLink, deleteStudyMapNode, - StudyMapLink, - StudyMapNode, + type StudyMapLink, + type StudyMapNode, } from "../../../../../../../redux/ducks/studyMaps"; -import { - setCurrentArea, - setCurrentLink, -} from "../../../../../../../redux/ducks/studySyntheses"; +import { setCurrentArea, setCurrentLink } from "../../../../../../../redux/ducks/studySyntheses"; import useAppDispatch from "../../../../../../../redux/hooks/useAppDispatch"; import ConfirmationDialog from "../../../../../../common/dialogs/ConfirmationDialog"; import { AreaDeleteIcon } from "./style"; @@ -56,29 +53,19 @@ function DeleteAreaDialog(props: Props) { // Delete node if (currentArea && !currentLink) { try { - await dispatch( - deleteStudyMapNode({ studyId: study.id, nodeId: currentArea.id }), - ).unwrap(); + await dispatch(deleteStudyMapNode({ studyId: study.id, nodeId: currentArea.id })).unwrap(); dispatch(setCurrentArea("")); } catch (e) { - enqueueErrorSnackbar( - t("study.error.deleteAreaOrLink"), - e as AxiosError, - ); + enqueueErrorSnackbar(t("study.error.deleteAreaOrLink"), e as AxiosError); } } // Delete link if (currentLink && !currentArea) { try { - await dispatch( - deleteStudyMapLink({ studyId: study.id, linkId: currentLink.id }), - ).unwrap(); + await dispatch(deleteStudyMapLink({ studyId: study.id, linkId: currentLink.id })).unwrap(); dispatch(setCurrentLink("")); } catch (e) { - enqueueErrorSnackbar( - t("study.error.deleteAreaOrLink"), - e as AxiosError, - ); + enqueueErrorSnackbar(t("study.error.deleteAreaOrLink"), e as AxiosError); } } }; diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx index b92d5a2c96..ceb98391d5 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,20 +14,17 @@ import { useEffect, useState } from "react"; import { useOutletContext } from "react-router-dom"; -import { StudyMetadata, UpdateAreaUi } from "../../../../../../../common/types"; +import type { StudyMetadata, UpdateAreaUi } from "../../../../../../../common/types"; import PropertiesView from "../../../../../../common/PropertiesView"; import ListElement from "../../../common/ListElement"; import { AreasContainer } from "./style"; import useAppSelector from "../../../../../../../redux/hooks/useAppSelector"; -import { - getCurrentLink, - getCurrentStudyMapNode, -} from "../../../../../../../redux/selectors"; +import { getCurrentLink, getCurrentStudyMapNode } from "../../../../../../../redux/selectors"; import useAppDispatch from "../../../../../../../redux/hooks/useAppDispatch"; import AreaConfig from "./AreaConfig"; import { isSearchMatching } from "../../../../../../../utils/stringUtils"; import { setCurrentArea } from "../../../../../../../redux/ducks/studySyntheses"; -import { StudyMapNode } from "../../../../../../../redux/ducks/studyMaps"; +import type { StudyMapNode } from "../../../../../../../redux/ducks/studyMaps"; interface Props { onAdd: () => void; @@ -42,14 +39,10 @@ function Areas({ onAdd, updateUI, nodes }: Props) { const [searchValue, setSearchValue] = useState(""); const [showAreaConfig, setShowAreaConfig] = useState(false); const currentArea = useAppSelector(getCurrentStudyMapNode); - const currentLink = useAppSelector((state) => - getCurrentLink(state, study.id), - ); + const currentLink = useAppSelector((state) => getCurrentLink(state, study.id)); useEffect(() => { - setFilteredNodes( - nodes.filter(({ id }) => isSearchMatching(searchValue, id)), - ); + setFilteredNodes(nodes.filter(({ id }) => isSearchMatching(searchValue, id))); }, [nodes, searchValue]); useEffect(() => { @@ -65,11 +58,7 @@ function Areas({ onAdd, updateUI, nodes }: Props) { mainContent={ showAreaConfig && ( - + ) } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts index aabe4c4bf2..b794ef5879 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Areas/style.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx index 0bc219aedb..f27a32e171 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/CreateAreaDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,7 +16,7 @@ import { useTranslation } from "react-i18next"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import FormDialog from "../../../../../common/dialogs/FormDialog"; import StringFE from "../../../../../common/fieldEditors/StringFE"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../common/Form/types"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; import { getAreas } from "../../../../../../redux/selectors"; import Fieldset from "../../../../../common/Fieldset"; @@ -72,8 +72,7 @@ function CreateAreaDialog(props: Props) { control={control} fullWidth rules={{ - validate: (v) => - validateString(v, { existingValues: existingAreas }), + validate: (v) => validateString(v, { existingValues: existingAreas }), }} />
diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx index 6424457700..31d4b584cc 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/CreateDistrictDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -18,8 +18,8 @@ import { useOutletContext } from "react-router"; import { useMemo } from "react"; import FormDialog from "../../../../../../../common/dialogs/FormDialog"; import StringFE from "../../../../../../../common/fieldEditors/StringFE"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import SwitchFE from "../../../../../../../common/fieldEditors/SwitchFE"; import Fieldset from "../../../../../../../common/Fieldset"; import useAppDispatch from "../../../../../../../../redux/hooks/useAppDispatch"; @@ -93,8 +93,7 @@ function CreateDistrictDialog(props: Props) { control={control} fullWidth rules={{ - validate: (v) => - validateString(v, { existingValues: existingDistricts }), + validate: (v) => validateString(v, { existingValues: existingDistricts }), }} sx={{ m: 0 }} /> diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx index b930986b51..cd0b2415df 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/UpdateDistrictDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,13 +14,14 @@ import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; -import { Delete, Edit } from "@mui/icons-material"; +import DeleteIcon from "@mui/icons-material/Delete"; +import EditIcon from "@mui/icons-material/Edit"; import { Button, Typography } from "@mui/material"; import { useState } from "react"; import FormDialog from "../../../../../../../common/dialogs/FormDialog"; import StringFE from "../../../../../../../common/fieldEditors/StringFE"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getStudyMapDistrictsById } from "../../../../../../../../redux/selectors"; import SelectFE from "../../../../../../../common/fieldEditors/SelectFE"; @@ -62,9 +63,7 @@ function UpdateDistrictDialog(props: Props) { // Event Handlers //////////////////////////////////////////////////////////////// - const handleSubmit = async ( - data: SubmitHandlerPlus, - ) => { + const handleSubmit = async (data: SubmitHandlerPlus) => { const { districtId, output, comments } = data.values; dispatch( updateStudyMapDistrict({ @@ -92,7 +91,7 @@ function UpdateDistrictDialog(props: Props) { return ( { setValue("name", districtsById[e.target.value as string].name); - setValue( - "output", - districtsById[e.target.value as string].output, - ); - setValue( - "comments", - districtsById[e.target.value as string].comments, - ); + setValue("output", districtsById[e.target.value as string].output); + setValue("comments", districtsById[e.target.value as string].comments); }} /> } + startIcon={} onClick={() => setOpenConfirmationModal(true)} sx={{ mr: 1 }} > diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx index dae45e1dda..2554d69792 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Districts/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,15 +15,13 @@ import { Box, Button } from "@mui/material"; import { useMemo, useState } from "react"; import { useOutletContext } from "react-router"; -import { Add, Edit } from "@mui/icons-material"; +import AddIcon from "@mui/icons-material/Add"; +import EditIcon from "@mui/icons-material/Edit"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { - getAreas, - getStudyMapDistrictsById, -} from "../../../../../../../../redux/selectors"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import { getAreas, getStudyMapDistrictsById } from "../../../../../../../../redux/selectors"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; import TableForm from "../../../../../../../common/TableForm"; import CreateDistrictDialog from "./CreateDistrictDialog"; import useAppDispatch from "../../../../../../../../redux/hooks/useAppDispatch"; @@ -36,15 +34,10 @@ function Districts() { const [t] = useTranslation(); const areas = useAppSelector((state) => getAreas(state, study.id)); const districtsById = useAppSelector(getStudyMapDistrictsById); - const [createDistrictDialogOpen, setCreateDistrictDialogOpen] = - useState(false); - const [updateDistrictDialogOpen, setUpdateDistrictDialogOpen] = - useState(false); - - const columns = useMemo( - () => Object.keys(districtsById).map((id) => id), - [districtsById], - ); + const [createDistrictDialogOpen, setCreateDistrictDialogOpen] = useState(false); + const [updateDistrictDialogOpen, setUpdateDistrictDialogOpen] = useState(false); + + const columns = useMemo(() => Object.keys(districtsById).map((id) => id), [districtsById]); const defaultValues = useMemo(() => { const districts = Object.values(districtsById); @@ -79,9 +72,7 @@ function Districts() { if (data.dirtyValues[areaId]?.[districtId]) { areasByDistrict[districtId].push(areaId); } else { - areasByDistrict[districtId] = areasByDistrict[districtId].filter( - (id) => id !== areaId, - ); + areasByDistrict[districtId] = areasByDistrict[districtId].filter((id) => id !== areaId); } }); }); @@ -119,7 +110,7 @@ function Districts() { color="primary" variant="outlined" size="small" - startIcon={} + startIcon={} onClick={() => setCreateDistrictDialogOpen(true)} sx={{ mr: 1 }} > @@ -129,7 +120,7 @@ function Districts() { color="primary" variant="outlined" size="small" - startIcon={} + startIcon={} onClick={() => setUpdateDistrictDialogOpen(true)} > {t("study.modelization.map.districts.edit")} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx index 0fb956b319..e6bd3771c3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/CreateLayerDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,12 +15,12 @@ import { useTranslation } from "react-i18next"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import { useOutletContext } from "react-router"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useMemo } from "react"; import FormDialog from "../../../../../../../common/dialogs/FormDialog"; import StringFE from "../../../../../../../common/fieldEditors/StringFE"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import { createStudyMapLayer } from "../../../../../../../../redux/ducks/studyMaps"; import useAppDispatch from "../../../../../../../../redux/hooks/useAppDispatch"; import useEnqueueErrorSnackbar from "../../../../../../../../hooks/useEnqueueErrorSnackbar"; @@ -56,9 +56,7 @@ function CreateLayerDialog(props: Props) { const handleSubmit = (data: SubmitHandlerPlus) => { try { - dispatch( - createStudyMapLayer({ studyId: study.id, name: data.values.name }), - ); + dispatch(createStudyMapLayer({ studyId: study.id, name: data.values.name })); } catch (e) { enqueueErrorSnackbar(t("study.error.createLayer"), e as AxiosError); } @@ -88,8 +86,7 @@ function CreateLayerDialog(props: Props) { control={control} fullWidth rules={{ - validate: (v) => - validateString(v, { existingValues: existingLayers }), + validate: (v) => validateString(v, { existingValues: existingLayers }), }} /> )} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx index f2a6db5817..ab2695c324 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/UpdateLayerDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,13 +14,14 @@ import { useTranslation } from "react-i18next"; import { useOutletContext } from "react-router"; -import { Delete, Edit } from "@mui/icons-material"; +import DeleteIcon from "@mui/icons-material/Delete"; +import EditIcon from "@mui/icons-material/Edit"; import { Button, Typography } from "@mui/material"; import { useMemo, useState } from "react"; import FormDialog from "../../../../../../../common/dialogs/FormDialog"; import StringFE from "../../../../../../../common/fieldEditors/StringFE"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; import { getStudyMapLayersById } from "../../../../../../../../redux/selectors"; import SelectFE from "../../../../../../../common/fieldEditors/SelectFE"; @@ -67,9 +68,7 @@ function UpdateLayerDialog(props: Props) { // Event Handlers //////////////////////////////////////////////////////////////// - const handleSubmit = async ( - data: SubmitHandlerPlus, - ) => { + const handleSubmit = async (data: SubmitHandlerPlus) => { const { layerId, name } = data.values; if (layerId && name) { @@ -95,7 +94,7 @@ function UpdateLayerDialog(props: Props) { return ( } + startIcon={} disabled={getValues("layerId") === ""} onClick={() => setOpenConfirmationModal(true)} sx={{ mr: 1 }} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx index aff05df5c4..2f2e464bfd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/Layers/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,15 +15,13 @@ import { Box, Button } from "@mui/material"; import { useMemo, useState } from "react"; import { useOutletContext } from "react-router"; -import { Add, Edit } from "@mui/icons-material"; +import AddIcon from "@mui/icons-material/Add"; +import EditIcon from "@mui/icons-material/Edit"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../../../../common/types"; +import type { StudyMetadata } from "../../../../../../../../common/types"; import useAppSelector from "../../../../../../../../redux/hooks/useAppSelector"; -import { - getAreas, - getStudyMapLayersById, -} from "../../../../../../../../redux/selectors"; -import { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; +import { getAreas, getStudyMapLayersById } from "../../../../../../../../redux/selectors"; +import type { SubmitHandlerPlus } from "../../../../../../../common/Form/types"; import TableForm from "../../../../../../../common/TableForm"; import CreateLayerDialog from "./CreateLayerDialog"; import { updateStudyMapLayer } from "../../../../../../../../redux/ducks/studyMaps"; @@ -81,9 +79,7 @@ function Layers() { if (data.dirtyValues[areaId]?.[layerId]) { areasByLayer[layerId].push(areaId); } else { - areasByLayer[layerId] = areasByLayer[layerId].filter( - (id) => id !== areaId, - ); + areasByLayer[layerId] = areasByLayer[layerId].filter((id) => id !== areaId); } }); }); @@ -120,7 +116,7 @@ function Layers() { color="primary" variant="outlined" size="small" - startIcon={} + startIcon={} onClick={() => setCreateLayerDialogOpen(true)} sx={{ mr: 1 }} > @@ -130,7 +126,7 @@ function Layers() { color="primary" variant="outlined" size="small" - startIcon={} + startIcon={} onClick={() => setUpdateLayerDialogOpen(true)} > {t("study.modelization.map.layers.edit")} diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx index e52842abc5..8b70616c8a 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapConfig/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -74,16 +74,10 @@ function MapConfig({ onClose }: Props) {
- + - + diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx index 973245da0f..f6d399029d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapControlButtons.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -27,12 +27,7 @@ interface Props { zoomLevel: number; } -function MapControlButtons({ - onZoomIn, - onZoomOut, - onOpenConfig, - zoomLevel, -}: Props) { +function MapControlButtons({ onZoomIn, onZoomOut, onOpenConfig, zoomLevel }: Props) { return ( >; + graph: React.RefObject>; onNodePositionChange: (id: string, x: number, y: number) => void; zoomLevel: number; setZoomLevel: DebouncedFunc<(zoom: number) => void>; @@ -123,8 +117,7 @@ function MapGraph({ const handleOnClickLink = (source: string, target: string) => { const isTempLink = - links.find((link) => link.source === source && link.target === target) - ?.temp || false; + links.find((link) => link.source === source && link.target === target)?.temp || false; if (!isTempLink) { dispatch(setCurrentArea("")); @@ -141,11 +134,7 @@ function MapGraph({ }; const handleNodePositionChange = (id: string, x: number, y: number) => { - return onNodePositionChange( - id, - x - width / INITIAL_ZOOM / 2 - 0, - -y + height / 2 + 0, - ); + return onNodePositionChange(id, x - width / INITIAL_ZOOM / 2 - 0, -y + height / 2 + 0); }; const onZoomChange = (previousZoom: number, newZoom: number) => { @@ -175,9 +164,7 @@ function MapGraph({ }, node: { renderLabel: false, - viewGenerator: (node) => ( - - ), + viewGenerator: (node) => , }, link: { color: "#a3a3a3", diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx index e0d965f0cd..fc02e93fde 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/MapHeader.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,17 +14,11 @@ import { Box, Chip, Typography } from "@mui/material"; import { useTranslation } from "react-i18next"; -import { LinkProperties } from "../../../../../../common/types"; -import { - StudyMapNode, - setCurrentLayer, -} from "../../../../../../redux/ducks/studyMaps"; +import type { LinkProperties } from "../../../../../../common/types"; +import { setCurrentLayer, type StudyMapNode } from "../../../../../../redux/ducks/studyMaps"; import useAppDispatch from "../../../../../../redux/hooks/useAppDispatch"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import { - getCurrentLayer, - getStudyMapLayersById, -} from "../../../../../../redux/selectors"; +import { getCurrentLayer, getStudyMapLayersById } from "../../../../../../redux/selectors"; interface Props { links: LinkProperties[]; @@ -86,12 +80,8 @@ function MapHeader(props: Props) { display: "flex", }} > - {`${nodes.length} ${t( - "study.areas", - )}`} - {`${links.length} ${t( - "study.links", - )}`} + {`${nodes.length} ${t("study.areas")}`} + {`${links.length} ${t("study.links")}`}
); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx index 2b55de00c4..db95cbe53e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/Node.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import AddLinkIcon from "@mui/icons-material/AddLink"; -import { StudyMapNode } from "../../../../../../redux/ducks/studyMaps"; +import type { StudyMapNode } from "../../../../../../redux/ducks/studyMaps"; import { NodeContainer, NodeDefault, NodeHighlighted } from "./style"; interface PropType { diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx index c9c53ab10f..0b0affa472 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,15 +16,11 @@ import { useEffect, useMemo, useRef, useState } from "react"; import { useOutletContext } from "react-router-dom"; import AutoSizer from "react-virtualized-auto-sizer"; import { useTranslation } from "react-i18next"; -import { Graph, GraphLink, GraphNode } from "react-d3-graph"; -import { AxiosError } from "axios"; +import type { Graph, GraphLink, GraphNode } from "react-d3-graph"; +import type { AxiosError } from "axios"; import * as R from "ramda"; import * as RA from "ramda-adjunct"; -import { - LinkProperties, - StudyMetadata, - UpdateAreaUi, -} from "../../../../../../common/types"; +import type { LinkProperties, StudyMetadata, UpdateAreaUi } from "../../../../../../common/types"; import MapGraph from "./MapGraph"; import Areas from "./Areas"; import CreateAreaDialog from "./CreateAreaDialog"; @@ -42,9 +38,9 @@ import useAppDispatch from "../../../../../../redux/hooks/useAppDispatch"; import MapConfig from "./MapConfig"; import useStudyMaps from "../../../../../../redux/hooks/useStudyMaps"; import { - StudyMapNode, createStudyMapNode, updateStudyMapNode, + type StudyMapNode, } from "../../../../../../redux/ducks/studyMaps"; import UsePromiseCond from "../../../../../common/utils/UsePromiseCond"; import MapHeader from "./MapHeader"; @@ -62,13 +58,10 @@ function Map() { const [openConfig, setOpenConfig] = useState(false); const [zoomLevel, setZoomLevel] = useDebouncedState(INITIAL_ZOOM, 250); const previousNode = useRef(); - const graphRef = - useRef>(null); + const graphRef = useRef>(null); const currentLayerId = useAppSelector(getCurrentLayer); const currentArea = useAppSelector(getCurrentStudyMapNode); - const studyLinks = useAppSelector((state) => - getStudyMapLinks(state, study.id), - ); + const studyLinks = useAppSelector((state) => getStudyMapLinks(state, study.id)); const mapLinks = useMemo( () => R.map( @@ -182,11 +175,7 @@ function Map() { <> - setOpenDialog(true)} - nodes={mapNodes} - updateUI={updateUI} - /> + setOpenDialog(true)} nodes={mapNodes} updateUI={updateUI} /> {openConfig ? ( diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts index e3ebde2a05..9fb3437ff9 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/style.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,7 +14,7 @@ import { styled, Box, Chip } from "@mui/material"; import mapbackground from "../../../../../../assets/img/mapbackground.png"; -import { getTextColor, RGB } from "./utils"; +import { getTextColor, type RGB } from "./utils"; //////////////////////////////////////////////////////////////// // Map(index.tsx) @@ -57,35 +57,31 @@ export interface NodeProps { rgbcolor: number[]; } -export const NodeDefault = styled(Chip)( - ({ theme, nodecolor, rgbcolor }) => ({ - backgroundColor: nodecolor, - "&:hover": { - color: "white", - "& .MuiChip-deleteIcon": { - color: "white", - display: "block", - }, - }, +export const NodeDefault = styled(Chip)(({ theme, nodecolor, rgbcolor }) => ({ + backgroundColor: nodecolor, + "&:hover": { + color: "white", "& .MuiChip-deleteIcon": { - display: "none", - fontSize: 20, - marginLeft: 5, - "&:hover": { - color: theme.palette.primary.main, - }, + color: "white", + display: "block", }, - "& .MuiChip-label": { - textOverflow: "unset", + }, + "& .MuiChip-deleteIcon": { + display: "none", + fontSize: 20, + marginLeft: 5, + "&:hover": { + color: theme.palette.primary.main, }, - color: getTextColor(rgbcolor as RGB), - }), -); + }, + "& .MuiChip-label": { + textOverflow: "unset", + }, + color: getTextColor(rgbcolor as RGB), +})); -export const NodeHighlighted = styled(Chip)( - ({ nodecolor, rgbcolor }) => ({ - color: getTextColor(rgbcolor as RGB), - backgroundColor: `rgba(${rgbcolor[0]}, ${rgbcolor[1]}, ${rgbcolor[2]}, 0.6) !important`, - outline: `2px dashed ${nodecolor}`, - }), -); +export const NodeHighlighted = styled(Chip)(({ nodecolor, rgbcolor }) => ({ + color: getTextColor(rgbcolor as RGB), + backgroundColor: `rgba(${rgbcolor[0]}, ${rgbcolor[1]}, ${rgbcolor[2]}, 0.6) !important`, + outline: `2px dashed ${nodecolor}`, +})); diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts index 2025d4a71d..8146982589 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/Map/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,8 +13,8 @@ */ import { useMemo } from "react"; -import { StudyLayer } from "../../../../../../common/types"; -import { StudyMapNode } from "../../../../../../redux/ducks/studyMaps"; +import type { StudyLayer } from "../../../../../../common/types"; +import type { StudyMapNode } from "../../../../../../redux/ducks/studyMaps"; //////////////////////////////////////////////////////////////// // Types @@ -61,10 +61,7 @@ export const getNodeWidth = (nodeText: string): number => { return fontSize * TEXT_SIZE * 6.5; }; -export function getUpdatedNode( - id: string, - nodeData: StudyMapNode[], -): StudyMapNode | undefined { +export function getUpdatedNode(id: string, nodeData: StudyMapNode[]): StudyMapNode | undefined { return nodeData.find((node) => node.id === id); } @@ -73,9 +70,7 @@ const getLuminanace = (values: RGB): number => { const val = v / 255; return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4; }); - return Number( - (0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3), - ); + return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3)); }; const getContrastRatio = (colorA: RGB, colorB: RGB): number => { @@ -144,13 +139,6 @@ export function useRenderNodes( rgbColor, }; }), - [ - currentLayerId, - nodes, - centerVector.x, - realCenter.x, - realCenter.y, - centerVector.y, - ], + [currentLayerId, nodes, centerVector.x, realCenter.x, realCenter.y, centerVector.y], ); } diff --git a/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx b/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx index 0099e90986..e22be0f1ee 100644 --- a/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Modelization/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,14 +16,10 @@ import { useEffect, useMemo } from "react"; import { useNavigate, useOutletContext, useParams } from "react-router-dom"; import { Box } from "@mui/material"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../common/types"; +import type { StudyMetadata } from "../../../../../common/types"; import TabWrapper from "../TabWrapper"; import useAppSelector from "../../../../../redux/hooks/useAppSelector"; -import { - getAreas, - getCurrentAreaId, - getLinks, -} from "../../../../../redux/selectors"; +import { getAreas, getCurrentAreaId, getLinks } from "../../../../../redux/selectors"; import useAppDispatch from "../../../../../redux/hooks/useAppDispatch"; import { setCurrentArea } from "../../../../../redux/ducks/studySyntheses"; diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx index 5e460b5d3e..4dc79c9def 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/ResultFilters.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -21,9 +21,9 @@ import NumberFE from "../../../../../common/fieldEditors/NumberFE"; import DownloadMatrixButton from "../../../../../common/buttons/DownloadMatrixButton"; import CheckBoxFE from "@/components/common/fieldEditors/CheckBoxFE"; import SearchFE from "@/components/common/fieldEditors/SearchFE"; -import { clamp, equals } from "ramda"; -import { useState, useMemo, useEffect, ChangeEvent } from "react"; -import { FilterListOff } from "@mui/icons-material"; +import * as R from "ramda"; +import { useState, useMemo, useEffect } from "react"; +import FilterListOffIcon from "@mui/icons-material/FilterListOff"; import { useDebouncedField } from "@/hooks/useDebouncedField"; interface ColumnHeader { @@ -81,16 +81,15 @@ function ResultFilters({ const { t } = useTranslation(); const [filters, setFilters] = useState(defaultFilters); - const { localValue: localYear, handleChange: debouncedYearChange } = - useDebouncedField({ - value: year, - onChange: setYear, - delay: 500, - transformValue: (value: number) => clamp(1, maxYear, value), - }); + const { localValue: localYear, handleChange: debouncedYearChange } = useDebouncedField({ + value: year, + onChange: setYear, + delay: 500, + transformValue: (value: number) => R.clamp(1, maxYear, value), + }); const filtersApplied = useMemo(() => { - return !equals(filters, defaultFilters); + return !R.equals(filters, defaultFilters); }, [filters]); const parsedHeaders = useMemo(() => { @@ -114,10 +113,7 @@ function ResultFilters({ .filter((header) => { // Apply search filter if (filters.search) { - const matchesVariable = matchesSearchTerm( - header.variable, - filters.search, - ); + const matchesVariable = matchesSearchTerm(header.variable, filters.search); const matchesUnit = matchesSearchTerm(header.unit, filters.search); @@ -164,7 +160,7 @@ function ResultFilters({ // Event handlers //////////////////////////////////////////////////////////////// - const handleYearChange = (event: ChangeEvent) => { + const handleYearChange = (event: React.ChangeEvent) => { const value = Number(event.target.value); debouncedYearChange(value); }; @@ -266,7 +262,7 @@ function ResultFilters({ disabled={!filtersApplied} sx={{ ml: 1 }} > - + ), }, diff --git a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx index 8df3507b76..070514c13d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/ResultDetails/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,39 +17,22 @@ import { Skeleton, ToggleButton, ToggleButtonGroup, - ToggleButtonGroupProps, + type ToggleButtonGroupProps, } from "@mui/material"; import { useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate, useOutletContext, useParams } from "react-router"; import GridOffIcon from "@mui/icons-material/GridOff"; -import { - Area, - LinkElement, - StudyMetadata, -} from "../../../../../../common/types"; +import type { Area, LinkElement, StudyMetadata } from "../../../../../../common/types"; import usePromise from "../../../../../../hooks/usePromise"; import useAppSelector from "../../../../../../redux/hooks/useAppSelector"; -import { - getAreas, - getLinks, - getStudyOutput, -} from "../../../../../../redux/selectors"; +import { getAreas, getLinks, getStudyOutput } from "../../../../../../redux/selectors"; import { getStudyData } from "../../../../../../services/api/study"; import { isSearchMatching } from "../../../../../../utils/stringUtils"; import PropertiesView from "../../../../../common/PropertiesView"; import ListElement from "../../common/ListElement"; -import { - createPath, - DataType, - MAX_YEAR, - OutputItemType, - SYNTHESIS_ITEMS, - Timestep, -} from "./utils"; -import UsePromiseCond, { - mergeResponses, -} from "../../../../../common/utils/UsePromiseCond"; +import { createPath, DataType, MAX_YEAR, OutputItemType, SYNTHESIS_ITEMS, Timestep } from "./utils"; +import UsePromiseCond, { mergeResponses } from "../../../../../common/utils/UsePromiseCond"; import useStudySynthesis from "../../../../../../redux/hooks/useStudySynthesis"; import ButtonBack from "../../../../../common/ButtonBack"; import MatrixGrid from "../../../../../common/Matrix/components/MatrixGrid/index.tsx"; @@ -66,7 +49,7 @@ import { toError } from "../../../../../../utils/fnUtils.ts"; import EmptyView from "../../../../../common/page/EmptyView.tsx"; import { getStudyMatrixIndex } from "../../../../../../services/api/matrix.ts"; import { MatrixGridSynthesis } from "@/components/common/Matrix/components/MatrixGridSynthesis"; -import { ResultMatrixDTO } from "@/components/common/Matrix/shared/types.ts"; +import type { ResultMatrixDTO } from "@/components/common/Matrix/shared/types.ts"; type SetResultColHeaders = (headers: string[][], indices: number[]) => void; @@ -96,30 +79,26 @@ function ResultDetails() { const navigate = useNavigate(); const items = useAppSelector((state) => - itemType === OutputItemType.Areas - ? getAreas(state, study.id) - : getLinks(state, study.id), + itemType === OutputItemType.Areas ? getAreas(state, study.id) : getLinks(state, study.id), ) as Array<{ id: string; name: string; label?: string }>; const filteredItems = useMemo(() => { return isSynthesis ? SYNTHESIS_ITEMS - : items.filter((item) => - isSearchMatching(searchValue, item.label || item.name), - ); + : items.filter((item) => isSearchMatching(searchValue, item.label || item.name)); }, [isSynthesis, items, searchValue]); - const selectedItem = filteredItems.find( - (item) => item.id === selectedItemId, - ) as (Area & { id: string }) | LinkElement | undefined; + const selectedItem = filteredItems.find((item) => item.id === selectedItemId) as + | (Area & { id: string }) + | LinkElement + | undefined; const maxYear = output?.nbyears ?? MAX_YEAR; useEffect( () => { const isValidSelectedItem = - !!selectedItemId && - filteredItems.find((item) => item.id === selectedItemId); + !!selectedItemId && filteredItems.find((item) => item.id === selectedItemId); if (!isValidSelectedItem) { setSelectedItemId(filteredItems.length > 0 ? filteredItems[0].id : ""); @@ -151,9 +130,7 @@ function ResultDetails() { const res = await getStudyData(study.id, path); if (typeof res === "string") { - const fixed = res - .replace(/NaN/g, '"NaN"') - .replace(/Infinity/g, '"Infinity"'); + const fixed = res.replace(/NaN/g, '"NaN"').replace(/Infinity/g, '"Infinity"'); const parsed = JSON.parse(fixed); @@ -202,12 +179,9 @@ function ResultDetails() { }, ); - const { data: dateTimeMetadata } = usePromise( - () => getStudyMatrixIndex(study.id, path), - { - deps: [study.id, path], - }, - ); + const { data: dateTimeMetadata } = usePromise(() => getStudyMatrixIndex(study.id, path), { + deps: [study.id, path], + }); const dateTime = dateTimeMetadata && generateDateTime(dateTimeMetadata); @@ -270,15 +244,9 @@ function ResultDetails() { fullWidth onChange={handleItemTypeChange} > - - {t("study.areas")} - - - {t("study.links")} - - - {t("study.synthesis")} - + {t("study.areas")} + {t("study.links")} + {t("study.synthesis")} ( - - )} + ifPending={() => } ifFulfilled={([, matrix]) => matrix && ( <> {resultColHeaders.length === 0 ? ( - + ) : ( term.trim().toLowerCase()); + const searchTerms = searchTerm.split("|").map((term) => term.trim().toLowerCase()); return searchTerms.some((term) => text.toLowerCase().includes(term)); } diff --git a/webapp/src/components/App/Singlestudy/explore/Results/index.tsx b/webapp/src/components/App/Singlestudy/explore/Results/index.tsx index ea3c94a351..bd1742747e 100644 --- a/webapp/src/components/App/Singlestudy/explore/Results/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Results/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -39,7 +39,7 @@ import * as R from "ramda"; import { useNavigate, useOutletContext } from "react-router-dom"; import { grey } from "@mui/material/colors"; import moment from "moment"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import usePromiseWithSnackbarError from "../../../../../hooks/usePromiseWithSnackbarError"; import { archiveOutput, @@ -49,11 +49,7 @@ import { getStudyOutputs, unarchiveOutput, } from "../../../../../services/api/study"; -import { - LaunchJob, - StudyMetadata, - StudyOutput, -} from "../../../../../common/types"; +import type { LaunchJob, StudyMetadata, StudyOutput } from "../../../../../common/types"; import { convertUTCToLocalTime } from "../../../../../services/utils"; import LaunchJobLogView from "../../../Tasks/LaunchJobLogView"; import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; @@ -81,10 +77,7 @@ type DialogState = } | EmptyObject; -const combineJobsAndOutputs = ( - jobs: LaunchJob[], - outputs: StudyOutput[], -): OutputDetail[] => { +const combineJobsAndOutputs = (jobs: LaunchJob[], outputs: StudyOutput[]): OutputDetail[] => { const runningJobs: OutputDetail[] = jobs .filter((job) => !job.completionDate) .map((job) => { @@ -106,9 +99,7 @@ const combineJobsAndOutputs = ( outputDetail.creationDate = relatedJob.creationDate; outputDetail.job = relatedJob; } else { - const dateComponents = output.name.match( - "(\\d{4})(\\d{2})(\\d{2})-(\\d{2})(\\d{2}).*", - ); + const dateComponents = output.name.match("(\\d{4})(\\d{2})(\\d{2})-(\\d{2})(\\d{2}).*"); if (dateComponents) { outputDetail.completionDate = `${dateComponents[1]}-${dateComponents[2]}-${dateComponents[3]} ${dateComponents[4]}:${dateComponents[5]}`; } @@ -132,11 +123,13 @@ function Results() { const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const [dialogState, setDialogState] = useState({}); - const { data: studyJobs, isLoading: studyJobsLoading } = - usePromiseWithSnackbarError(() => getStudyJobs(study.id), { + const { data: studyJobs, isLoading: studyJobsLoading } = usePromiseWithSnackbarError( + () => getStudyJobs(study.id), + { errorMessage: t("results.error.jobs"), deps: [study.id], - }); + }, + ); const { data: studyOutputs, @@ -152,18 +145,14 @@ function Results() { return combineJobsAndOutputs(studyJobs, studyOutputs).sort((a, b) => { if (!a.completionDate || !b.completionDate) { if (!a.completionDate && !b.completionDate) { - return moment(a.creationDate).isAfter(moment(b.creationDate)) - ? -1 - : 1; + return moment(a.creationDate).isAfter(moment(b.creationDate)) ? -1 : 1; } if (!a.completionDate) { return -1; } return 1; } - return moment(a.completionDate).isAfter(moment(b.completionDate)) - ? -1 - : 1; + return moment(a.completionDate).isAfter(moment(b.completionDate)) ? -1 : 1; }); } return []; @@ -188,10 +177,7 @@ function Results() { sx={iconStyle} onClick={async () => { handler().catch((e) => { - enqueueErrorSnackbar( - t(errorMessage, { outputname: output.name }), - e as AxiosError, - ); + enqueueErrorSnackbar(t(errorMessage, { outputname: output.name }), e as AxiosError); }); }} /> @@ -249,11 +235,7 @@ function Results() { > {t("global.name")} - + {t("global.date")} @@ -374,11 +356,7 @@ function Results() { - + {renderArchiveTool(row)} {row.completionDate && row.job && ( @@ -395,13 +373,7 @@ function Results() { )} - {row.job && ( - - )} + {row.job && } {row.job?.status === "success" && ( prop !== "border" && prop !== "tabStyle", -})<{ border?: boolean; tabStyle?: "normal" | "withoutBorder" }>( - ({ theme, border, tabStyle }) => ({ - width: "98%", - height: "50px", - ...(border === true && { - borderBottom: 1, - borderColor: "divider", - }), - ...(tabStyle && - tabStyle === "withoutBorder" && { - "& .MuiTabs-indicator": { - display: "none", - }, - }), +})<{ border?: boolean; tabStyle?: "normal" | "withoutBorder" }>(({ theme, border, tabStyle }) => ({ + width: "98%", + height: "50px", + ...(border === true && { + borderBottom: 1, + borderColor: "divider", }), -); + ...(tabStyle && + tabStyle === "withoutBorder" && { + "& .MuiTabs-indicator": { + display: "none", + }, + }), +})); interface TabItem { label: string; @@ -106,12 +103,7 @@ function TabWrapper({ study, tabList, border, tabStyle, sx }: Props) { variant="scrollable" > {tabList.map((tab) => ( - + ))} diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx index 34da75ba1a..3fce714ec0 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/CreateTemplateTableDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,12 +16,11 @@ import { useTranslation } from "react-i18next"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import { createTableTemplate, type TableTemplate } from "../utils"; import TableTemplateFormDialog, { - TableTemplateFormDialogProps, + type TableTemplateFormDialogProps, } from "./TableTemplateFormDialog"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../common/Form/types"; -interface Props - extends Pick { +interface Props extends Pick { setTemplates: React.Dispatch>; templates: TableTemplate[]; } @@ -37,10 +36,7 @@ function CreateTemplateTableDialog(props: Props) { const handleSubmit = (data: SubmitHandlerPlus) => { const { name, type, columns } = data.values; - setTemplates((templates) => [ - ...templates, - createTableTemplate(name, type, columns), - ]); + setTemplates((templates) => [...templates, createTableTemplate(name, type, columns)]); onCancel(); }; diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx index 89cea8497c..836d60e987 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/TableTemplateFormDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,11 +13,9 @@ */ import { Box } from "@mui/material"; -import { startCase } from "lodash"; +import startCase from "lodash/startCase"; import { useTranslation } from "react-i18next"; -import FormDialog, { - FormDialogProps, -} from "../../../../../common/dialogs/FormDialog"; +import FormDialog, { type FormDialogProps } from "../../../../../common/dialogs/FormDialog"; import ListFE from "../../../../../common/fieldEditors/ListFE"; import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import StringFE from "../../../../../common/fieldEditors/StringFE"; @@ -36,14 +34,10 @@ export interface TableTemplateFormDialogProps } function TableTemplateFormDialog(props: TableTemplateFormDialogProps) { - const { open, title, titleIcon, config, onSubmit, onCancel, templates } = - props; + const { open, title, titleIcon, config, onSubmit, onCancel, templates } = props; const { t } = useTranslation(); - const existingTables = useMemo( - () => templates.map(({ name }) => name), - [templates], - ); + const existingTables = useMemo(() => templates.map(({ name }) => name), [templates]); const typeOptions = useMemo( () => diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx index bf602db8dd..2583694c73 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/dialogs/UpdateTemplateTableDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,13 +15,12 @@ import { useTranslation } from "react-i18next"; import EditIcon from "@mui/icons-material/Edit"; import TableTemplateFormDialog, { - TableTemplateFormDialogProps, + type TableTemplateFormDialogProps, } from "./TableTemplateFormDialog"; -import { TableTemplate } from "../utils"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import type { TableTemplate } from "../utils"; +import type { SubmitHandlerPlus } from "../../../../../common/Form/types"; -interface Props - extends Pick { +interface Props extends Pick { defaultValues: TableTemplate; setTemplates: React.Dispatch>; templates: TableTemplate[]; @@ -36,9 +35,7 @@ function UpdateTemplateTableDialog(props: Props) { //////////////////////////////////////////////////////////////// const handleSubmit = (data: SubmitHandlerPlus) => { - setTemplates((templates) => - templates.map((t) => (t.id === data.values.id ? data.values : t)), - ); + setTemplates((templates) => templates.map((t) => (t.id === data.values.id ? data.values : t))); onCancel(); }; diff --git a/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx b/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx index c281d9c774..87fb656a67 100644 --- a/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/TableModeList/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -23,10 +23,8 @@ import { v4 as uuidv4 } from "uuid"; import PropertiesView from "../../../../common/PropertiesView"; import ListElement from "../common/ListElement"; import type { TableTemplate } from "./utils"; -import storage, { - StorageKey, -} from "../../../../../services/utils/localStorage"; -import { StudyMetadata } from "../../../../../common/types"; +import storage, { StorageKey } from "../../../../../services/utils/localStorage"; +import type { StudyMetadata } from "../../../../../common/types"; import CreateTemplateTableDialog from "./dialogs/CreateTemplateTableDialog"; import UpdateTemplateTableDialog from "./dialogs/UpdateTemplateTableDialog"; import ConfirmationDialog from "../../../../common/dialogs/ConfirmationDialog"; @@ -39,14 +37,13 @@ function TableModeList() { const { t } = useTranslation(); const [templates, setTemplates] = useState(() => { - const list = - storage.getItem(StorageKey.StudiesModelTableModeTemplates) || []; + const list = storage.getItem(StorageKey.StudiesModelTableModeTemplates) || []; return list.map((tp) => ({ ...tp, id: uuidv4() })); }); - const [selectedTemplateId, setSelectedTemplateId] = useState< - TableTemplate["id"] | undefined - >(templates[0]?.id); + const [selectedTemplateId, setSelectedTemplateId] = useState( + templates[0]?.id, + ); const [dialog, setDialog] = useState<{ type: "add" | "edit" | "delete"; @@ -55,8 +52,7 @@ function TableModeList() { const { study } = useOutletContext<{ study: StudyMetadata }>(); const selectedTemplate = templates.find((tp) => tp.id === selectedTemplateId); - const dialogTemplate = - dialog && templates.find((tp) => tp.id === dialog.templateId); + const dialogTemplate = dialog && templates.find((tp) => tp.id === dialog.templateId); // Handle automatic selection of the first element useEffect(() => { @@ -104,9 +100,7 @@ function TableModeList() { }; const handleDelete = () => { - setTemplates((templates) => - templates.filter((tp) => tp.id !== dialog?.templateId), - ); + setTemplates((templates) => templates.filter((tp) => tp.id !== dialog?.templateId)); closeDialog(); }; @@ -131,9 +125,7 @@ function TableModeList() { /> {/* Right */} - {!templates.length && ( - - )} + {!templates.length && } {selectedTemplate && ( (false); + const [currentCandidate, setCurrentCandidate] = useState( candidate, - links, - capacities, - deleteCandidate, - updateCandidate, - onRead, - } = props; - const [openConfirmationModal, setOpenConfirmationModal] = - useState(false); - const [currentCandidate, setCurrentCandidate] = useState< - XpansionCandidate | undefined - >(candidate); + ); const [saveAllowed, setSaveAllowed] = useState(false); const [toggleView, setToggleView] = useState(true); const [useV8LinkProfile, setUseV8LinkProfile] = useState(true); @@ -101,17 +86,9 @@ function CandidateForm(props: PropType) { return ( - + {t("global.general")} - + setOpenConfirmationModal(true)} /> @@ -169,29 +144,18 @@ function CandidateForm(props: PropType) { label={t("xpansion.annualCost")} variant="filled" value={currentCandidate?.["annual-cost-per-mw"] || ""} - onChange={(e) => - handleChange("annual-cost-per-mw", parseFloat(e.target.value)) - } + onChange={(e) => handleChange("annual-cost-per-mw", parseFloat(e.target.value))} /> - handleChange( - "already-installed-capacity", - parseFloat(e.target.value), - ) - } + onChange={(e) => handleChange("already-installed-capacity", parseFloat(e.target.value))} /> - + {toggleView ? ( @@ -221,18 +185,14 @@ function CandidateForm(props: PropType) { label={t("xpansion.unitSize")} variant="filled" value={currentCandidate?.["unit-size"] || ""} - onChange={(e) => - handleChange("unit-size", parseFloat(e.target.value)) - } + onChange={(e) => handleChange("unit-size", parseFloat(e.target.value))} /> - handleChange("max-units", parseFloat(e.target.value)) - } + onChange={(e) => handleChange("max-units", parseFloat(e.target.value))} /> )} @@ -242,9 +202,7 @@ function CandidateForm(props: PropType) { label={t("xpansion.maxInvestments")} variant="filled" value={currentCandidate?.["max-investment"] || ""} - onChange={(e) => - handleChange("max-investment", parseFloat(e.target.value)) - } + onChange={(e) => handleChange("max-investment", parseFloat(e.target.value))} /> )} @@ -324,11 +282,7 @@ function CandidateForm(props: PropType) { list={capacities.map((item) => { return { id: item, name: item }; })} - data={ - currentCandidate?.[ - "direct-already-installed-link-profile" - ] || "" - } + data={currentCandidate?.["direct-already-installed-link-profile"] || ""} handleChange={handleChange} sx={{ minWidth: "100%", @@ -337,14 +291,8 @@ function CandidateForm(props: PropType) { /> - currentCandidate?.[ - "direct-already-installed-link-profile" - ] && - onRead( - currentCandidate?.[ - "direct-already-installed-link-profile" - ] || "", - ) + currentCandidate?.["direct-already-installed-link-profile"] && + onRead(currentCandidate?.["direct-already-installed-link-profile"] || "") } /> @@ -355,11 +303,7 @@ function CandidateForm(props: PropType) { list={capacities.map((item) => { return { id: item, name: item }; })} - data={ - currentCandidate?.[ - "indirect-already-installed-link-profile" - ] || "" - } + data={currentCandidate?.["indirect-already-installed-link-profile"] || ""} handleChange={handleChange} sx={{ minWidth: "100%", @@ -368,14 +312,8 @@ function CandidateForm(props: PropType) { /> - currentCandidate?.[ - "indirect-already-installed-link-profile" - ] && - onRead( - currentCandidate?.[ - "indirect-already-installed-link-profile" - ] || "", - ) + currentCandidate?.["indirect-already-installed-link-profile"] && + onRead(currentCandidate?.["indirect-already-installed-link-profile"] || "") } /> @@ -411,9 +349,7 @@ function CandidateForm(props: PropType) { list={capacities.map((item) => { return { id: item, name: item }; })} - data={ - currentCandidate?.["already-installed-link-profile"] || "" - } + data={currentCandidate?.["already-installed-link-profile"] || ""} handleChange={handleChange} sx={{ minWidth: "100%", @@ -423,10 +359,7 @@ function CandidateForm(props: PropType) { currentCandidate?.["already-installed-link-profile"] && - onRead( - currentCandidate?.["already-installed-link-profile"] || - "", - ) + onRead(currentCandidate?.["already-installed-link-profile"] || "") } /> diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx index 8e03d0c70d..b8f3e821cd 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/CreateCandidateDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,13 +17,13 @@ import { Button, ButtonGroup } from "@mui/material"; import { useTranslation } from "react-i18next"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import * as R from "ramda"; -import { XpansionCandidate } from "../types"; +import type { XpansionCandidate } from "../types"; import FormDialog from "../../../../../common/dialogs/FormDialog"; import StringFE from "../../../../../common/fieldEditors/StringFE"; import Fieldset from "../../../../../common/Fieldset"; import SelectFE from "../../../../../common/fieldEditors/SelectFE"; import NumberFE from "../../../../../common/fieldEditors/NumberFE"; -import { SubmitHandlerPlus } from "../../../../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../../../../common/Form/types"; import { validateString } from "@/utils/validation/string"; import type { LinkDTO } from "@/services/api/studies/links/types"; @@ -40,10 +40,7 @@ function CreateCandidateDialog(props: PropType) { const [t] = useTranslation(); const [isToggled, setIsToggled] = useState(true); - const existingCandidates = useMemo( - () => candidates.map(({ name }) => name), - [candidates], - ); + const existingCandidates = useMemo(() => candidates.map(({ name }) => name), [candidates]); //////////////////////////////////////////////////////////////// // Event Handlers @@ -54,10 +51,7 @@ function CreateCandidateDialog(props: PropType) { }; const handleSubmit = (data: SubmitHandlerPlus) => { - const values = R.omit( - isToggled ? ["max-investment"] : ["unit-size", "max-units"], - data.values, - ); + const values = R.omit(isToggled ? ["max-investment"] : ["unit-size", "max-units"], data.values); onSave(values); }; @@ -131,22 +125,11 @@ function CreateCandidateDialog(props: PropType) { : t("xpansion.maxInvestments") } > - - - diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx index 6da12c7a73..a00295e8ed 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/XpansionPropsView.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,7 +17,7 @@ import { Box, Button } from "@mui/material"; import { useTranslation } from "react-i18next"; import DeleteIcon from "@mui/icons-material/Delete"; import PropertiesView from "../../../../../common/PropertiesView"; -import { XpansionCandidate } from "../types"; +import type { XpansionCandidate } from "../types"; import ConfirmationDialog from "../../../../../common/dialogs/ConfirmationDialog"; import ListElement from "../../common/ListElement"; @@ -31,26 +31,16 @@ interface PropsType { function XpansionPropsView(props: PropsType) { const [t] = useTranslation(); - const { - candidateList, - selectedItem, - setSelectedItem, - onAdd, - deleteXpansion, - } = props; - const [filteredCandidates, setFilteredCandidates] = - useState(candidateList); + const { candidateList, selectedItem, setSelectedItem, onAdd, deleteXpansion } = props; + const [filteredCandidates, setFilteredCandidates] = useState(candidateList); const [searchFilter, setSearchFilter] = useState(""); - const [openConfirmationModal, setOpenConfirmationModal] = - useState(false); + const [openConfirmationModal, setOpenConfirmationModal] = useState(false); const filter = useCallback( (currentName: string): XpansionCandidate[] => { if (candidateList) { return candidateList.filter( - (item) => - !currentName || - item.name.search(new RegExp(currentName, "i")) !== -1, + (item) => !currentName || item.name.search(new RegExp(currentName, "i")) !== -1, ); } return []; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx index 298dc08e01..99f5918f15 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Candidates/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,13 +14,13 @@ import { useEffect, useState } from "react"; import { useOutletContext, useNavigate } from "react-router-dom"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; import { Backdrop, Box, CircularProgress } from "@mui/material"; import { usePromise as usePromiseWrapper } from "react-use"; import { useSnackbar } from "notistack"; -import { StudyMetadata } from "../../../../../../common/types"; -import { XpansionCandidate } from "../types"; +import type { StudyMetadata } from "../../../../../../common/types"; +import type { XpansionCandidate } from "../types"; import { getAllCandidates, getAllCapacities, @@ -31,10 +31,7 @@ import { getCapacity, xpansionConfigurationExist, } from "../../../../../../services/api/xpansion"; -import { - transformNameToId, - removeEmptyFields, -} from "../../../../../../services/utils/index"; +import { transformNameToId, removeEmptyFields } from "../../../../../../services/utils/index"; import useEnqueueErrorSnackbar from "../../../../../../hooks/useEnqueueErrorSnackbar"; import XpansionPropsView from "./XpansionPropsView"; import CreateCandidateDialog from "./CreateCandidateDialog"; @@ -44,7 +41,7 @@ import DataViewerDialog from "../../../../../common/dialogs/DataViewerDialog"; import EmptyView from "../../../../../common/page/EmptyView"; import SplitView from "../../../../../common/SplitView"; import { getLinks } from "@/services/api/studies/links"; -import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; +import type { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; import ViewWrapper from "@/components/common/page/ViewWrapper"; import SimpleLoader from "@/components/common/loaders/SimpleLoader"; @@ -53,8 +50,7 @@ function Candidates() { const { study } = useOutletContext<{ study?: StudyMetadata }>(); const navigate = useNavigate(); const mounted = usePromiseWrapper(); - const [candidateCreationDialog, setCandidateCreationDialog] = - useState(false); + const [candidateCreationDialog, setCandidateCreationDialog] = useState(false); const [selectedItem, setSelectedItem] = useState(); const [capacityViewDialog, setCapacityViewDialog] = useState<{ filename: string; @@ -78,13 +74,12 @@ function Candidates() { // Candidates const tempCandidates = await getAllCandidates(study.id); for (let i = 0; i < tempCandidates.length; i += 1) { - tempCandidates[i].link = tempCandidates.map( - (item: { link: string }) => - item.link - .split(" - ") - // eslint-disable-next-line @typescript-eslint/no-explicit-any - .map((index: any) => transformNameToId(index)) - .join(" - "), + tempCandidates[i].link = tempCandidates.map((item: { link: string }) => + item.link + .split(" - ") + // eslint-disable-next-line @typescript-eslint/no-explicit-any + .map((index: any) => transformNameToId(index)) + .join(" - "), )[i]; } return tempCandidates; @@ -98,23 +93,22 @@ function Candidates() { }, ); - const { data: capaLinks, isLoading: isLinksLoading } = - usePromiseWithSnackbarError( - async () => { - if (!study) { - return {}; - } - const exist = await xpansionConfigurationExist(study.id); - if (exist) { - return { - capacities: await getAllCapacities(study.id), - links: await getLinks({ studyId: study.id }), - }; - } + const { data: capaLinks, isLoading: isLinksLoading } = usePromiseWithSnackbarError( + async () => { + if (!study) { return {}; - }, - { errorMessage: t("xpansion.error.loadConfiguration"), deps: [study] }, - ); + } + const exist = await xpansionConfigurationExist(study.id); + if (exist) { + return { + capacities: await getAllCapacities(study.id), + links: await getLinks({ studyId: study.id }), + }; + } + return {}; + }, + { errorMessage: t("xpansion.error.loadConfiguration"), deps: [study] }, + ); // Handle automatic selection of the first element useEffect(() => { @@ -129,10 +123,7 @@ function Candidates() { await mounted(deleteXpansionConfiguration(study.id)); } } catch (e) { - enqueueErrorSnackbar( - t("xpansion.error.deleteConfiguration"), - e as AxiosError, - ); + enqueueErrorSnackbar(t("xpansion.error.deleteConfiguration"), e as AxiosError); } finally { navigate("../../xpansion", { state: { exist: false } }); } @@ -145,10 +136,7 @@ function Candidates() { setCandidateCreationDialog(false); } } catch (e) { - enqueueErrorSnackbar( - t("xpansion.error.createCandidate"), - e as AxiosError, - ); + enqueueErrorSnackbar(t("xpansion.error.createCandidate"), e as AxiosError); } finally { reload(); setSelectedItem(candidate.name); @@ -161,10 +149,7 @@ function Candidates() { await mounted(deleteCandidate(study.id, name)); } } catch (e) { - enqueueErrorSnackbar( - t("xpansion.error.deleteCandidate"), - e as AxiosError, - ); + enqueueErrorSnackbar(t("xpansion.error.deleteCandidate"), e as AxiosError); } finally { reload(); setSelectedItem(undefined); @@ -196,10 +181,7 @@ function Candidates() { }); } } catch (e) { - enqueueErrorSnackbar( - t("xpansion.error.updateCandidate"), - e as AxiosError, - ); + enqueueErrorSnackbar(t("xpansion.error.updateCandidate"), e as AxiosError); } finally { reload(); } diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx index 8d6fbdeb92..4983243230 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Capacities.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx index 9143c0abe7..a49eeba9d3 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Constraints.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx index fcb2463ebf..0af60f480d 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/FileList.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,25 +14,22 @@ import { useState } from "react"; import { useOutletContext } from "react-router-dom"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; import { Box, Paper } from "@mui/material"; -import { StudyMetadata } from "../../../../../common/types"; +import type { StudyMetadata } from "../../../../../common/types"; import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackbar"; import DataViewerDialog from "../../../../common/dialogs/DataViewerDialog"; import FileTable from "../../../../common/FileTable"; import { Title } from "./share/styles"; import usePromiseWithSnackbarError from "../../../../../hooks/usePromiseWithSnackbarError"; import UsePromiseCond from "../../../../common/utils/UsePromiseCond"; -import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; +import type { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; interface PropTypes { addResource: (studyId: string, file: File) => Promise; deleteResource: (studyId: string, filename: string) => Promise; - fetchResourceContent: ( - studyId: string, - filename: string, - ) => Promise; + fetchResourceContent: (studyId: string, filename: string) => Promise; listResources: (studyId: string) => Promise; errorMessages?: { add?: string; @@ -69,9 +66,7 @@ function FileList(props: PropTypes) { } }, { - errorMessage: t( - errorMessages?.list || "xpansion.error.loadConfiguration", - ), + errorMessage: t(errorMessages?.list || "xpansion.error.loadConfiguration"), }, ); @@ -88,10 +83,7 @@ function FileList(props: PropTypes) { await addResource(study.id, file); } } catch (e) { - enqueueErrorSnackbar( - t(errorMessages?.add || "xpansion.error.addFile"), - e as AxiosError, - ); + enqueueErrorSnackbar(t(errorMessages?.add || "xpansion.error.addFile"), e as AxiosError); } finally { reload(); } @@ -105,10 +97,7 @@ function FileList(props: PropTypes) { setViewDialog({ filename, content }); } } catch (e) { - enqueueErrorSnackbar( - t(errorMessages?.fetchOne || "xpansion.error.getFile"), - e as AxiosError, - ); + enqueueErrorSnackbar(t(errorMessages?.fetchOne || "xpansion.error.getFile"), e as AxiosError); } }; diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx index 259845da99..4f618824b1 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/SettingsForm.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -16,13 +16,8 @@ import { useState, useEffect } from "react"; import { Box, Divider, Typography, Button, TextField } from "@mui/material"; import { useTranslation } from "react-i18next"; import SaveIcon from "@mui/icons-material/Save"; -import { XpansionResourceType, XpansionSettings } from "../types"; -import { - Fields, - SelectFields, - Title, - StyledVisibilityIcon, -} from "../share/styles"; +import { XpansionResourceType, type XpansionSettings } from "../types"; +import { Fields, SelectFields, Title, StyledVisibilityIcon } from "../share/styles"; import SelectSingle from "../../../../../common/SelectSingle"; import NumberFE from "../../../../../common/fieldEditors/NumberFE"; import SelectFE from "../../../../../common/fieldEditors/SelectFE"; @@ -39,10 +34,8 @@ interface PropType { function SettingsForm(props: PropType) { const [t] = useTranslation(); - const { settings, constraints, weights, candidates, updateSettings, onRead } = - props; - const [currentSettings, setCurrentSettings] = - useState(settings); + const { settings, constraints, weights, candidates, updateSettings, onRead } = props; + const [currentSettings, setCurrentSettings] = useState(settings); const [saveAllowed, setSaveAllowed] = useState(false); const ucType = ["expansion_fast", "expansion_accurate"]; @@ -80,11 +73,7 @@ function SettingsForm(props: PropType) { return ( - + {t("xpansion.optimization")} @@ -154,9 +141,7 @@ function SettingsForm(props: PropType) { label={t("xpansion.optimalityGap")} variant="filled" value={currentSettings.optimality_gap} - onChange={(e) => - handleChange("optimality_gap", parseFloat(e.target.value)) - } + onChange={(e) => handleChange("optimality_gap", parseFloat(e.target.value))} sx={{ mb: 1 }} inputProps={{ min: 0 }} /> @@ -165,9 +150,7 @@ function SettingsForm(props: PropType) { label={t("xpansion.relativeGap")} variant="filled" value={currentSettings.relative_gap} - onChange={(e) => - handleChange("relative_gap", parseFloat(e.target.value)) - } + onChange={(e) => handleChange("relative_gap", parseFloat(e.target.value))} sx={{ mb: 1 }} inputProps={{ min: 0 }} /> @@ -176,9 +159,7 @@ function SettingsForm(props: PropType) { label={t("xpansion.relaxedOptimalityGap")} variant="filled" value={currentSettings.relaxed_optimality_gap} - onChange={(e) => - handleChange("relaxed_optimality_gap", e.target.value) - } + onChange={(e) => handleChange("relaxed_optimality_gap", e.target.value)} sx={{ mb: 1 }} inputProps={{ min: 0 }} /> @@ -225,9 +206,7 @@ function SettingsForm(props: PropType) { label={t("xpansion.batchSize")} variant="filled" value={currentSettings.batch_size} - onChange={(e) => - handleChange("batch_size", parseInt(e.target.value, 10)) - } + onChange={(e) => handleChange("batch_size", parseInt(e.target.value, 10))} sx={{ mb: 1 }} inputProps={{ min: 0 }} /> @@ -236,9 +215,7 @@ function SettingsForm(props: PropType) { label={t("xpansion.logLevel")} variant="filled" value={currentSettings.log_level} - onChange={(e) => - handleChange("log_level", parseInt(e.target.value, 10)) - } + onChange={(e) => handleChange("log_level", parseInt(e.target.value, 10))} inputProps={{ min: 0, max: 3, step: 1 }} sx={{ mb: 1 }} /> @@ -277,10 +254,7 @@ function SettingsForm(props: PropType) { currentSettings["yearly-weights"] && - onRead( - XpansionResourceType.weights, - currentSettings["yearly-weights"] || "", - ) + onRead(XpansionResourceType.weights, currentSettings["yearly-weights"] || "") } /> @@ -330,20 +304,14 @@ function SettingsForm(props: PropType) { value={currentSettings.sensitivity_config?.epsilon} label={t("xpansion.epsilon")} onChange={(e) => - handleObjectChange( - "sensitivity_config", - "epsilon", - parseFloat(e.target.value), - ) + handleObjectChange("sensitivity_config", "epsilon", parseFloat(e.target.value)) } inputProps={{ min: 0 }} /> - handleObjectChange("sensitivity_config", "capex", checked) - } + onChange={(e, checked) => handleObjectChange("sensitivity_config", "capex", checked)} /> - handleObjectChange( - "sensitivity_config", - "projection", - e.target.value as string[], - ) + handleObjectChange("sensitivity_config", "projection", e.target.value as string[]) } variant="filled" options={candidates} diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx index ea11bd06a0..978a719211 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Settings/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,11 +14,11 @@ import { useState } from "react"; import { useOutletContext } from "react-router-dom"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; -import { StudyMetadata } from "../../../../../../common/types"; -import { XpansionResourceType, XpansionSettings } from "../types"; +import type { StudyMetadata } from "../../../../../../common/types"; +import { XpansionResourceType, type XpansionSettings } from "../types"; import { getXpansionSettings, getAllConstraints, @@ -135,10 +135,7 @@ function Settings() { const getResourceContent = async (resourceType: string, filename: string) => { try { if (study) { - const content = await resourceContentFetcher(resourceType)( - study.id, - filename, - ); + const content = await resourceContentFetcher(resourceType)(study.id, filename); setResourceViewDialog({ filename, content, diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx index 3e18632c72..df8dda3ba7 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/Weights.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx b/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx index 6662c4b15c..cf4e67e3e0 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,11 +14,11 @@ /* eslint-disable react-hooks/exhaustive-deps */ import { useEffect, useMemo, useState } from "react"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useOutletContext } from "react-router-dom"; import { Box, Button } from "@mui/material"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../../../common/types"; +import type { StudyMetadata } from "../../../../../common/types"; import { createXpansionConfiguration, xpansionConfigurationExist, @@ -27,7 +27,7 @@ import useEnqueueErrorSnackbar from "../../../../../hooks/useEnqueueErrorSnackba import TabWrapper from "../TabWrapper"; import usePromiseWithSnackbarError from "../../../../../hooks/usePromiseWithSnackbarError"; import UsePromiseCond from "../../../../common/utils/UsePromiseCond"; -import { Add } from "@mui/icons-material"; +import AddIcon from "@mui/icons-material/Add"; function Xpansion() { const { study } = useOutletContext<{ study: StudyMetadata }>(); @@ -35,13 +35,10 @@ function Xpansion() { const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const [exist, setExist] = useState(false); - const res = usePromiseWithSnackbarError( - () => xpansionConfigurationExist(study.id), - { - errorMessage: t("xpansion.error.loadConfiguration"), - deps: [exist], - }, - ); + const res = usePromiseWithSnackbarError(() => xpansionConfigurationExist(study.id), { + errorMessage: t("xpansion.error.loadConfiguration"), + deps: [exist], + }); const tabList = useMemo( () => [ @@ -87,10 +84,7 @@ function Xpansion() { await createXpansionConfiguration(study.id); } } catch (e) { - enqueueErrorSnackbar( - t("xpansion.error.createConfiguration"), - e as AxiosError, - ); + enqueueErrorSnackbar(t("xpansion.error.createConfiguration"), e as AxiosError); } finally { setExist(true); } @@ -119,17 +113,13 @@ function Xpansion() { color="primary" variant="contained" size="small" - startIcon={} + startIcon={} onClick={createXpansion} > {t("xpansion.newXpansionConfig")} ) : ( - + ) } /> diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts b/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts index 96fb5dbd31..5a3ccfef19 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/share/styles.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts b/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts index 84b190dda5..31917b4d09 100644 --- a/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts +++ b/webapp/src/components/App/Singlestudy/explore/Xpansion/types.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx b/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx index 5e799e1928..78034b06d3 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx +++ b/webapp/src/components/App/Singlestudy/explore/common/ListElement.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,12 +17,12 @@ import { ListItemButton, ListItemIcon, ListItemText, - SxProps, - Theme, Tooltip, + type SxProps, + type Theme, } from "@mui/material"; import ArrowRightOutlinedIcon from "@mui/icons-material/ArrowRightOutlined"; -import { IdType } from "../../../../../common/types"; +import type { IdType } from "../../../../../common/types"; import { mergeSxProp } from "../../../../../utils/muiUtils"; interface Props { @@ -41,17 +41,10 @@ function ListElement({ sx, }: Props) { return ( - + {list.map((element, index) => ( setSelectedItem(element, index)} key={element.id || element.name} sx={{ diff --git a/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx b/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx index 39cef64ff6..2e95de6150 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx +++ b/webapp/src/components/App/Singlestudy/explore/common/OutputFilters.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,12 +13,12 @@ */ import { useMemo } from "react"; -import { FieldPath } from "react-hook-form"; +import type { FieldPath } from "react-hook-form"; import { useTranslation } from "react-i18next"; import SelectFE from "../../../../common/fieldEditors/SelectFE"; import Fieldset from "../../../../common/Fieldset"; -import { ControlPlus } from "../../../../common/Form/types"; -import { FilteringType } from "./types"; +import type { ControlPlus } from "../../../../common/Form/types"; +import type { FilteringType } from "./types"; interface FilterFieldValues { filterSynthesis: FilteringType[]; @@ -54,9 +54,7 @@ function OutputFilters(props: Props) { control={control} rules={{ onAutoSubmit: (value) => { - const selection = value - ? (value as string[]).filter((val) => val !== "") - : []; + const selection = value ? (value as string[]).filter((val) => val !== "") : []; onAutoSubmit(filterName, selection.join(", ")); }, }} diff --git a/webapp/src/components/App/Singlestudy/explore/common/types.ts b/webapp/src/components/App/Singlestudy/explore/common/types.ts index c9ae042882..ce78d6cb70 100644 --- a/webapp/src/components/App/Singlestudy/explore/common/types.ts +++ b/webapp/src/components/App/Singlestudy/explore/common/types.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,9 +12,4 @@ * This file is part of the Antares project. */ -export type FilteringType = - | "hourly" - | "daily" - | "weekly" - | "monthly" - | "annual"; +export type FilteringType = "hourly" | "daily" | "weekly" | "monthly" | "annual"; diff --git a/webapp/src/components/App/Singlestudy/index.tsx b/webapp/src/components/App/Singlestudy/index.tsx index 6823d6db54..1cb727698c 100644 --- a/webapp/src/components/App/Singlestudy/index.tsx +++ b/webapp/src/components/App/Singlestudy/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -19,26 +19,20 @@ import { Box, Divider } from "@mui/material"; import debug from "debug"; import { useTranslation } from "react-i18next"; import { usePromise as usePromiseWrapper } from "react-use"; -import { StudyMetadata, VariantTree } from "../../../common/types"; +import type { StudyMetadata, VariantTree } from "../../../common/types"; import { getStudyMetadata } from "../../../services/api/study"; import NavHeader from "./NavHeader"; -import { - getVariantChildren, - getVariantParents, -} from "../../../services/api/variant"; +import { getVariantChildren, getVariantParents } from "../../../services/api/variant"; import TabWrapper from "./explore/TabWrapper"; import HomeView from "./HomeView"; -import { - fetchStudyVersions, - setCurrentStudy, -} from "../../../redux/ducks/studies"; +import { fetchStudyVersions, setCurrentStudy } from "../../../redux/ducks/studies"; import { findNodeInTree } from "../../../services/utils"; import CommandDrawer from "./Commands"; import { addWsEventListener } from "../../../services/webSocket/ws"; import useAppDispatch from "../../../redux/hooks/useAppDispatch"; import SimpleLoader from "../../common/loaders/SimpleLoader"; import FreezeStudy from "./FreezeStudy"; -import { WsEvent } from "@/services/webSocket/types"; +import type { WsEvent } from "@/services/webSocket/types"; import { WsEventType } from "@/services/webSocket/constants"; const logError = debug("antares:singlestudy:error"); @@ -172,9 +166,7 @@ function SingleStudy(props: Props) { isExplorer={isExplorer} openCommands={() => setOpenCommands(true)} childrenTree={ - study !== undefined && tree !== undefined - ? findNodeInTree(study.id, tree) - : undefined + study !== undefined && tree !== undefined ? findNodeInTree(study.id, tree) : undefined } /> {!isExplorer && } diff --git a/webapp/src/components/App/Studies/BatchModeMenu.tsx b/webapp/src/components/App/Studies/BatchModeMenu.tsx index a301b4e27f..9fe2f173e9 100644 --- a/webapp/src/components/App/Studies/BatchModeMenu.tsx +++ b/webapp/src/components/App/Studies/BatchModeMenu.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -53,10 +53,7 @@ function BatchModeMenu(props: Props) { > {selectionMode && ( <> - - {openLaunchModal && ( - - )} + {openLaunchModal && } )} diff --git a/webapp/src/components/App/Studies/CreateStudyDialog.tsx b/webapp/src/components/App/Studies/CreateStudyDialog.tsx index c90a52cf5a..3ad1d99461 100644 --- a/webapp/src/components/App/Studies/CreateStudyDialog.tsx +++ b/webapp/src/components/App/Studies/CreateStudyDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,10 +15,10 @@ import debug from "debug"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { usePromise } from "react-use"; import * as R from "ramda"; -import { StudyPublicMode } from "../../../common/types"; +import type { StudyPublicMode } from "../../../common/types"; import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; import { createStudy } from "../../../redux/ducks/studies"; import { getStudyVersionsFormatted, getGroups } from "../../../redux/selectors"; @@ -29,7 +29,7 @@ import StringFE from "../../common/fieldEditors/StringFE"; import SelectFE from "../../common/fieldEditors/SelectFE"; import Fieldset from "../../common/Fieldset"; import CheckboxesTagsFE from "../../common/fieldEditors/CheckboxesTagsFE"; -import { SubmitHandlerPlus } from "../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../common/Form/types"; import { PUBLIC_MODE_LIST } from "../../common/utils/constants"; const logErr = debug("antares:createstudyform:error"); @@ -80,10 +80,7 @@ function CreateStudyDialog(props: Props) { }); } catch (e) { logErr("Failed to create new study", name, e); - enqueueErrorSnackbar( - t("studies.error.createStudy", { studyname: name }), - e as AxiosError, - ); + enqueueErrorSnackbar(t("studies.error.createStudy", { studyname: name }), e as AxiosError); } onClose(); } else { diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx index 91b0c285b6..344b72780f 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -37,10 +37,7 @@ export default function MultipleLinkElement(props: { const [link, setLink] = useState({ area1: "", area2: "" }); const onAddLink = (): void => { - if ( - values.findIndex((elm) => elm === currentLink) < 0 && - currentLink !== "" - ) { + if (values.findIndex((elm) => elm === currentLink) < 0 && currentLink !== "") { onChange(values.concat(currentLink)); } }; @@ -66,9 +63,7 @@ export default function MultipleLinkElement(props: { name={t("study.area1")} list={areas.map((elm) => ({ id: elm, name: elm }))} data={link.area1} - setValue={(elm: string[] | string) => - onSelectChange(0, elm as string) - } + setValue={(elm: string[] | string) => onSelectChange(0, elm as string)} sx={{ flexGrow: 1, px: 0.5 }} required /> @@ -76,9 +71,7 @@ export default function MultipleLinkElement(props: { name={t("study.area2")} list={areas.map((elm) => ({ id: elm, name: elm }))} data={link.area2} - setValue={(elm: string[] | string) => - onSelectChange(1, elm as string) - } + setValue={(elm: string[] | string) => onSelectChange(1, elm as string)} sx={{ flexGrow: 1, px: 0.1 }} required /> diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts index 4528d39b84..fe760c2694 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/MultipleLinkElement/style.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx index 961d7a6929..634519bcc4 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts index 5c9b66e87a..066c7eac61 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/SingleLinkElement/style.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx index d64fc9665d..adfe7ad923 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,11 +15,7 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { TextField } from "@mui/material"; -import { - Area, - Set, - StudyOutputDownloadType, -} from "../../../../../../common/types"; +import { StudyOutputDownloadType, type Area, type Set } from "../../../../../../common/types"; import SelectMulti from "../../../../../common/SelectMulti"; import { Root } from "./style"; import MultipleLinkElement from "./MultipleLinkElement"; @@ -50,9 +46,7 @@ function Filter(props: PropTypes) { setFilterInValue, setFilterOutValue, } = props; - const [areasOrDistrictsList, setAreasOrDistrictsList] = useState( - [], - ); + const [areasOrDistrictsList, setAreasOrDistrictsList] = useState([]); useEffect(() => { const getAreasOrDistrictsList = (): string[] => { @@ -107,14 +101,8 @@ function Filter(props: PropTypes) { values={filterValue} onChange={setFilterValue} /> - - + + ); } diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts index 870740514c..97227a872b 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/Filter/style.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx index 4ea269470f..4c57ff4bf1 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts index b043b11320..1a4485bcbb 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/TagSelect/style.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx b/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx index a03d0f22fe..30ddc7a592 100644 --- a/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/ExportFilter/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,15 +14,15 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import _ from "lodash"; +import range from "lodash/range"; import { Box, Checkbox, FormControlLabel, styled } from "@mui/material"; import { - Area, - Set as District, - FileStudyTreeConfigDTO, - StudyOutputDownloadDTO, StudyOutputDownloadLevelDTO, StudyOutputDownloadType, + type Area, + type Set as District, + type FileStudyTreeConfigDTO, + type StudyOutputDownloadDTO, } from "../../../../../common/types"; import Filter from "./Filter"; import TagSelect from "./TagSelect"; @@ -55,9 +55,7 @@ function ExportFilterModal(props: PropTypes) { nbYear: -1, }); const [areaList, setAreaList] = useState>({}); - const [districtList, setDistrictList] = useState>( - {}, - ); + const [districtList, setDistrictList] = useState>({}); const typeList: string[] = [ StudyOutputDownloadType.AREAS, @@ -113,7 +111,7 @@ function ExportFilterModal(props: PropTypes) { {byYear.isByYear && byYear.nbYear > 0 && ( ({ + list={range(byYear.nbYear).map((elm) => ({ id: elm.toString(), name: elm.toString(), }))} @@ -145,25 +143,17 @@ function ExportFilterModal(props: PropTypes) { areas={areaList} sets={districtList} filterValue={filter.filter ? filter.filter : []} - setFilterValue={(elm: string[]) => - setFilter({ ...filter, filter: elm }) - } + setFilterValue={(elm: string[]) => setFilter({ ...filter, filter: elm })} filterInValue={filter.filterIn ? filter.filterIn : ""} - setFilterInValue={(elm: string) => - setFilter({ ...filter, filterIn: elm }) - } + setFilterInValue={(elm: string) => setFilter({ ...filter, filterIn: elm })} filterOutValue={filter.filterOut ? filter.filterOut : ""} - setFilterOutValue={(elm: string) => - setFilter({ ...filter, filterOut: elm }) - } + setFilterOutValue={(elm: string) => setFilter({ ...filter, filterOut: elm })} /> - setFilter({ ...filter, synthesis: checked }) - } + onChange={(e, checked) => setFilter({ ...filter, synthesis: checked })} name={t("study.synthesis")} /> } @@ -174,9 +164,7 @@ function ExportFilterModal(props: PropTypes) { control={ - setFilter({ ...filter, includeClusters: checked }) - } + onChange={(e, checked) => setFilter({ ...filter, includeClusters: checked })} name={t("study.includeClusters")} /> } diff --git a/webapp/src/components/App/Studies/ExportModal/index.tsx b/webapp/src/components/App/Studies/ExportModal/index.tsx index d9d24714cf..15aae34c87 100644 --- a/webapp/src/components/App/Studies/ExportModal/index.tsx +++ b/webapp/src/components/App/Studies/ExportModal/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,26 +12,24 @@ * This file is part of the Antares project. */ -import { ReactNode, useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import * as R from "ramda"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { Box, Button } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useSnackbar } from "notistack"; import debug from "debug"; -import _ from "lodash"; +import debounce from "lodash/debounce"; import { - FileStudyTreeConfigDTO, - GenericInfo, - StudyMetadata, - StudyOutput, - StudyOutputDownloadDTO, StudyOutputDownloadLevelDTO, StudyOutputDownloadType, + type FileStudyTreeConfigDTO, + type GenericInfo, + type StudyMetadata, + type StudyOutput, + type StudyOutputDownloadDTO, } from "../../../../common/types"; -import BasicDialog, { - BasicDialogProps, -} from "../../../common/dialogs/BasicDialog"; +import BasicDialog, { type BasicDialogProps } from "../../../common/dialogs/BasicDialog"; import useEnqueueErrorSnackbar from "../../../../hooks/useEnqueueErrorSnackbar"; import SelectSingle from "../../../common/SelectSingle"; import { @@ -76,8 +74,7 @@ export default function ExportModal(props: BasicDialogProps & Props) { const [optionSelection, setOptionSelection] = useState("exportWith"); const [outputList, setOutputList] = useState(); const [currentOutput, setCurrentOutput] = useState(); - const [studySynthesis, setStudySynthesis] = - useState(); + const [studySynthesis, setStudySynthesis] = useState(); const [filter, setFilter] = useState({ type: StudyOutputDownloadType.AREAS, level: StudyOutputDownloadLevelDTO.WEEKLY, @@ -85,7 +82,7 @@ export default function ExportModal(props: BasicDialogProps & Props) { includeClusters: false, }); - const exportOutput = _.debounce( + const exportOutput = debounce( async (output: string) => { if (study) { try { @@ -139,9 +136,7 @@ export default function ExportModal(props: BasicDialogProps & Props) { try { const res = await getStudyOutputs(study.id); const tmpSynth = await getStudySynthesis(study.id); - setOutputList( - res.map((o: StudyOutput) => ({ id: o.name, name: o.name })), - ); + setOutputList(res.map((o: StudyOutput) => ({ id: o.name, name: o.name }))); setCurrentOutput(res.length > 0 ? res[0].name : undefined); setStudySynthesis(tmpSynth); } catch (e) { @@ -169,9 +164,8 @@ export default function ExportModal(props: BasicDialogProps & Props) { color="success" variant="contained" disabled={ - ["exportOutputFilter", "exportOutput"].indexOf( - optionSelection, - ) !== -1 && currentOutput === undefined + ["exportOutputFilter", "exportOutput"].indexOf(optionSelection) !== -1 && + currentOutput === undefined } onClick={onExportClick} > @@ -196,8 +190,7 @@ export default function ExportModal(props: BasicDialogProps & Props) { {R.cond([ [ () => - (optionSelection === "exportOutput" || - optionSelection === "exportOutputFilter") && + (optionSelection === "exportOutput" || optionSelection === "exportOutputFilter") && outputList !== undefined, () => ( @@ -209,14 +202,12 @@ export default function ExportModal(props: BasicDialogProps & Props) { sx={{ width: "300px", my: 3 }} required /> - ) as ReactNode, + ) as React.ReactNode, ], ])()} {R.cond([ [ - () => - optionSelection === "exportOutputFilter" && - currentOutput !== undefined, + () => optionSelection === "exportOutputFilter" && currentOutput !== undefined, () => ( - ) as ReactNode, + ) as React.ReactNode, ], ])()} diff --git a/webapp/src/components/App/Studies/FilterDrawer.tsx b/webapp/src/components/App/Studies/FilterDrawer.tsx index 676fb27f91..169dc8e55f 100644 --- a/webapp/src/components/App/Studies/FilterDrawer.tsx +++ b/webapp/src/components/App/Studies/FilterDrawer.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -20,14 +20,9 @@ import { Button, Drawer, List, ListItem, Typography } from "@mui/material"; import { useEffect, useRef } from "react"; import { STUDIES_FILTER_WIDTH } from "../../../theme"; import useAppSelector from "../../../redux/hooks/useAppSelector"; -import { - getGroups, - getStudyFilters, - getStudyVersions, - getUsers, -} from "../../../redux/selectors"; +import { getGroups, getStudyFilters, getStudyVersions, getUsers } from "../../../redux/selectors"; import useAppDispatch from "../../../redux/hooks/useAppDispatch"; -import { StudyFilters, updateStudyFilters } from "../../../redux/ducks/studies"; +import { updateStudyFilters, type StudyFilters } from "../../../redux/ducks/studies"; import CheckboxesTagsFE from "../../common/fieldEditors/CheckboxesTagsFE"; import { displayVersionName } from "../../../services/utils"; import CheckBoxFE from "../../common/fieldEditors/CheckBoxFE"; @@ -154,13 +149,9 @@ function FilterDrawer(props: Props) { label={t("global.users")} options={users} getOptionLabel={(option) => option.name} - defaultValue={users.filter((user) => - filters.users.includes(user.id), - )} + defaultValue={users.filter((user) => filters.users.includes(user.id))} onChange={(event) => { - filterNewValuesRef.current.users = event.target.value.map( - (val) => val.id, - ); + filterNewValuesRef.current.users = event.target.value.map((val) => val.id); }} fullWidth /> @@ -170,13 +161,9 @@ function FilterDrawer(props: Props) { label={t("global.groups")} options={groups} getOptionLabel={(option) => option.name} - defaultValue={groups.filter((group) => - filters.groups.includes(group.id), - )} + defaultValue={groups.filter((group) => filters.groups.includes(group.id))} onChange={(event) => { - filterNewValuesRef.current.groups = event.target.value.map( - (val) => val.id, - ); + filterNewValuesRef.current.groups = event.target.value.map((val) => val.id); }} fullWidth /> diff --git a/webapp/src/components/App/Studies/HeaderBottom.tsx b/webapp/src/components/App/Studies/HeaderBottom.tsx index bfab7c6511..d4e31c0379 100644 --- a/webapp/src/components/App/Studies/HeaderBottom.tsx +++ b/webapp/src/components/App/Studies/HeaderBottom.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -19,8 +19,8 @@ import { useUnmount } from "react-use"; import useAppSelector from "../../../redux/hooks/useAppSelector"; import { getGroups, getStudyFilters, getUsers } from "../../../redux/selectors"; import useAppDispatch from "../../../redux/hooks/useAppDispatch"; -import { StudyFilters, updateStudyFilters } from "../../../redux/ducks/studies"; -import { GroupDTO, UserDTO } from "../../../common/types"; +import { updateStudyFilters, type StudyFilters } from "../../../redux/ducks/studies"; +import type { GroupDTO, UserDTO } from "../../../common/types"; import { displayVersionName } from "../../../services/utils"; import SearchFE from "../../common/fieldEditors/SearchFE"; @@ -55,10 +55,7 @@ function HeaderBottom(props: PropTypes) { // Utils //////////////////////////////////////////////////////////////// - const setFilterValue = ( - string: T, - newValue: StudyFilters[T], - ) => { + const setFilterValue = (string: T, newValue: StudyFilters[T]) => { dispatch(updateStudyFilters({ [string]: newValue })); }; diff --git a/webapp/src/components/App/Studies/HeaderTopRight.tsx b/webapp/src/components/App/Studies/HeaderTopRight.tsx index 24d30de6ea..2a8944ea7e 100644 --- a/webapp/src/components/App/Studies/HeaderTopRight.tsx +++ b/webapp/src/components/App/Studies/HeaderTopRight.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -32,10 +32,7 @@ function HeaderRight() { // Event Handlers //////////////////////////////////////////////////////////////// - const handleImport = ( - file: File, - onUploadProgress: (progress: number) => void, - ) => { + const handleImport = (file: File, onUploadProgress: (progress: number) => void) => { return dispatch( createStudy({ file, @@ -68,10 +65,7 @@ function HeaderRight() { {t("global.create")} {openCreateDialog && ( - setOpenCreateDialog(false)} - /> + setOpenCreateDialog(false)} /> )} {openUploadDialog && ( { if (studyIds.length > 0) { setIsLaunching(true); - Promise.all( - studyIds.map((sid) => launchStudy(sid, options, solverVersion)), - ) + Promise.all(studyIds.map((sid) => launchStudy(sid, options, solverVersion))) .then(() => { enqueueSnackbar( t("studies.studylaunched", { @@ -151,20 +145,14 @@ function LauncherDialog(props: Props) { } }; - const handleChange = ( - field: T, - value: LaunchOptions[T], - ) => { + const handleChange = (field: T, value: LaunchOptions[T]) => { setOptions((prevOptions) => ({ ...prevOptions, [field]: value, })); }; - const handleObjectChange = ( - field: T, - value: object, - ) => { + const handleObjectChange = (field: T, value: object) => { setOptions((prevOptions: LaunchOptions) => { return { ...prevOptions, @@ -173,9 +161,7 @@ function LauncherDialog(props: Props) { }); }; - const handleOtherOptionsChange = ( - optionChanges: Array<{ option: string; active: boolean }>, - ) => { + const handleOtherOptionsChange = (optionChanges: Array<{ option: string; active: boolean }>) => { setOptions((prevOptions) => { const { other_options: prevOtherOptions = "" } = prevOptions; const { toAdd, toRemove } = optionChanges.reduce( @@ -215,11 +201,7 @@ function LauncherDialog(props: Props) { sx={{ mx: 2 }} color="primary" variant="contained" - disabled={ - isLaunching || - !launcherCores.isFulfilled || - !launcherTimeLimit.isFulfilled - } + disabled={isLaunching || !launcherCores.isFulfilled || !launcherTimeLimit.isFulfilled} onClick={handleLaunchClick} > {t("global.launch")} @@ -270,9 +252,7 @@ function LauncherDialog(props: Props) { type="text" variant="outlined" value={options.output_suffix} - onChange={(e) => - handleChange("output_suffix", e.target.value.trim()) - } + onChange={(e) => handleChange("output_suffix", e.target.value.trim())} InputLabelProps={{ shrink: true, }} @@ -290,17 +270,12 @@ function LauncherDialog(props: Props) { type="number" variant="outlined" required - value={ - options.time_limit - ? options.time_limit / 3600 - : timeLimit.defaultValue - } + value={options.time_limit ? options.time_limit / 3600 : timeLimit.defaultValue} onChange={(e) => { const newValue = parseInt(e.target.value, 10); handleChange( "time_limit", - Math.min(Math.max(newValue, timeLimit.min), timeLimit.max) * - 3600, + Math.min(Math.max(newValue, timeLimit.min), timeLimit.max) * 3600, ); }} InputLabelProps={{ @@ -332,10 +307,7 @@ function LauncherDialog(props: Props) { value={options.nb_cpu ? options.nb_cpu : cores.defaultValue} onChange={(e) => { const newValue = parseInt(e.target.value, 10); - handleChange( - "nb_cpu", - Math.min(Math.max(newValue, cores.min), cores.max), - ); + handleChange("nb_cpu", Math.min(Math.max(newValue, cores.min), cores.max)); }} inputProps={{ min: cores.min, @@ -423,13 +395,8 @@ function LauncherDialog(props: Props) { label="Adequacy patch R" value={!!options.adequacy_patch} onChange={(e, checked) => { - handleChange( - "adequacy_patch", - checked ? { legacy: true } : undefined, - ); - handleOtherOptionsChange([ - { option: "adq_patch_rc", active: checked }, - ]); + handleChange("adequacy_patch", checked ? { legacy: true } : undefined); + handleOtherOptionsChange([{ option: "adq_patch_rc", active: checked }]); }} /> { - handleChange( - "xpansion", - checked ? { enabled: true } : undefined, - ); + handleChange("xpansion", checked ? { enabled: true } : undefined); }} /> diff --git a/webapp/src/components/App/Studies/MoveStudyDialog.tsx b/webapp/src/components/App/Studies/MoveStudyDialog.tsx index ff9687f8af..4cd78dfde5 100644 --- a/webapp/src/components/App/Studies/MoveStudyDialog.tsx +++ b/webapp/src/components/App/Studies/MoveStudyDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,21 +12,18 @@ * This file is part of the Antares project. */ -import { DialogProps } from "@mui/material"; +import type { DialogProps } from "@mui/material"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; -import { StudyMetadata } from "../../../common/types"; +import type { StudyMetadata } from "../../../common/types"; import { moveStudy } from "../../../services/api/study"; import FormDialog from "../../common/dialogs/FormDialog"; -import { SubmitHandlerPlus } from "../../common/Form/types"; +import type { SubmitHandlerPlus } from "../../common/Form/types"; import StringFE from "@/components/common/fieldEditors/StringFE"; import * as R from "ramda"; import { validatePath } from "@/utils/validation/string"; -function formalizePath( - path: string | undefined, - studyId?: StudyMetadata["id"], -) { +function formalizePath(path: string | undefined, studyId?: StudyMetadata["id"]) { const trimmedPath = path?.trim(); if (!trimmedPath) { @@ -71,9 +68,7 @@ function MoveStudyDialog(props: Props) { return moveStudy(study.id, path); }; - const handleSubmitSuccessful = ( - data: SubmitHandlerPlus, - ) => { + const handleSubmitSuccessful = (data: SubmitHandlerPlus) => { onClose(); enqueueSnackbar( diff --git a/webapp/src/components/App/Studies/RefreshButton.tsx b/webapp/src/components/App/Studies/RefreshButton.tsx index cf158c4fe7..22710590b3 100644 --- a/webapp/src/components/App/Studies/RefreshButton.tsx +++ b/webapp/src/components/App/Studies/RefreshButton.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/SideNav.tsx b/webapp/src/components/App/Studies/SideNav.tsx index b966f27fd6..2c146b4a3e 100644 --- a/webapp/src/components/App/Studies/SideNav.tsx +++ b/webapp/src/components/App/Studies/SideNav.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -37,9 +37,7 @@ function SideNav() { p={2} sx={{ overflowX: "hidden", overflowY: "auto" }} > - - {t("studies.favorites")} - + {t("studies.favorites")} {favorites.map((fav) => ( void; @@ -77,8 +77,7 @@ const StudyCardCell = memo( const { isScrolling: prevIsScrolling, ...prevRest } = prevProps; const { isScrolling: nextIsScrolling, ...nextRest } = nextProps; return ( - !!(nextIsScrolling === prevIsScrolling || nextIsScrolling) && - areEqual(prevRest, nextRest) + !!(nextIsScrolling === prevIsScrolling || nextIsScrolling) && areEqual(prevRest, nextRest) ); }, ); diff --git a/webapp/src/components/App/Studies/StudiesList/index.tsx b/webapp/src/components/App/Studies/StudiesList/index.tsx index 89326dfff9..82587d0e12 100644 --- a/webapp/src/components/App/Studies/StudiesList/index.tsx +++ b/webapp/src/components/App/Studies/StudiesList/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -20,12 +20,12 @@ import { Select, MenuItem, ListItemText, - SelectChangeEvent, ListItemIcon, Tooltip, FormControl, InputLabel, IconButton, + type SelectChangeEvent, } from "@mui/material"; import { useTranslation } from "react-i18next"; import NavigateNextIcon from "@mui/icons-material/NavigateNext"; @@ -36,16 +36,16 @@ import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; import FolderIcon from "@mui/icons-material/Folder"; import AccountTreeIcon from "@mui/icons-material/AccountTree"; import RadarIcon from "@mui/icons-material/Radar"; -import { FixedSizeGrid, GridOnScrollProps } from "react-window"; +import { FixedSizeGrid, type GridOnScrollProps } from "react-window"; import { v4 as uuidv4 } from "uuid"; -import { AxiosError } from "axios"; -import { StudyMetadata } from "../../../../common/types"; +import type { AxiosError } from "axios"; +import type { StudyMetadata } from "../../../../common/types"; import { STUDIES_LIST_HEADER_HEIGHT } from "../../../../theme"; import { setStudyScrollPosition, - StudiesSortConf, updateStudiesSortConf, updateStudyFilters, + type StudiesSortConf, } from "../../../../redux/ducks/studies"; import LauncherDialog from "../LauncherDialog"; import useDebounce from "../../../../hooks/useDebounce"; @@ -75,15 +75,11 @@ function StudiesList(props: StudiesListProps) { const { studyIds } = props; const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const [t] = useTranslation(); - const [studyToLaunch, setStudyToLaunch] = useState< - StudyMetadata["id"] | null - >(null); + const [studyToLaunch, setStudyToLaunch] = useState(null); const scrollPosition = useAppSelector(getStudiesScrollPosition); const sortConf = useAppSelector(getStudiesSortConf); const folder = useAppSelector((state) => getStudyFilters(state).folder); - const strictFolderFilter = useAppSelector( - (state) => getStudyFilters(state).strictFolder, - ); + const strictFolderFilter = useAppSelector((state) => getStudyFilters(state).strictFolder); const [folderList, setFolderList] = useState(folder.split("/")); const dispatch = useAppDispatch(); const sortLabelId = useRef(uuidv4()).current; @@ -215,10 +211,7 @@ function StudiesList(props: StudiesListProps) { alignItems="center" boxSizing="border-box" > - } - aria-label="breadcrumb" - > + } aria-label="breadcrumb"> {folderList.map((fol, index) => { const path = folderList.slice(0, index + 1).join("/"); if (index === 0) { @@ -265,7 +258,7 @@ function StudiesList(props: StudiesListProps) { ) : ( - + @@ -363,11 +356,7 @@ function StudiesList(props: StudiesListProps) { }} > - {conf.order === "ascend" ? ( - - ) : ( - - )} + {conf.order === "ascend" ? : } @@ -382,8 +371,7 @@ function StudiesList(props: StudiesListProps) { {({ height, width }) => { const paddedWidth = width - 10; const columnWidth = - paddedWidth / - Math.max(Math.floor(paddedWidth / CARD_TARGET_WIDTH), 1); + paddedWidth / Math.max(Math.floor(paddedWidth / CARD_TARGET_WIDTH), 1); const columnCount = Math.floor(paddedWidth / columnWidth); const rowHeight = CARD_HEIGHT; @@ -417,11 +405,7 @@ function StudiesList(props: StudiesListProps) { {studyToLaunch && ( - setStudyToLaunch(null)} - /> + setStudyToLaunch(null)} /> )} ); diff --git a/webapp/src/components/App/Studies/StudyCard/ActionsMenu.tsx b/webapp/src/components/App/Studies/StudyCard/ActionsMenu.tsx index 8c1b1cee79..f4f24061b5 100644 --- a/webapp/src/components/App/Studies/StudyCard/ActionsMenu.tsx +++ b/webapp/src/components/App/Studies/StudyCard/ActionsMenu.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,13 +14,7 @@ import useEnqueueErrorSnackbar from "@/hooks/useEnqueueErrorSnackbar"; import { archiveStudy, copyStudy, unarchiveStudy } from "@/services/api/study"; -import { - ListItemIcon, - ListItemText, - Menu, - MenuItem, - type MenuProps, -} from "@mui/material"; +import { ListItemIcon, ListItemText, Menu, MenuItem, type MenuProps } from "@mui/material"; import ArchiveOutlinedIcon from "@mui/icons-material/ArchiveOutlined"; import UnarchiveOutlinedIcon from "@mui/icons-material/UnarchiveOutlined"; import DownloadOutlinedIcon from "@mui/icons-material/DownloadOutlined"; @@ -61,10 +55,7 @@ function ActionsMenu(props: Props) { const handleUnarchiveClick = () => { unarchiveStudy(study.id).catch((err) => { - enqueueErrorSnackbar( - t("studies.error.unarchive", { studyname: study.name }), - err, - ); + enqueueErrorSnackbar(t("studies.error.unarchive", { studyname: study.name }), err); logError("Failed to unarchive study", study, err); }); @@ -73,10 +64,7 @@ function ActionsMenu(props: Props) { const handleArchiveClick = () => { archiveStudy(study.id).catch((err) => { - enqueueErrorSnackbar( - t("studies.error.archive", { studyname: study.name }), - err, - ); + enqueueErrorSnackbar(t("studies.error.archive", { studyname: study.name }), err); logError("Failed to archive study", study, err); }); @@ -84,11 +72,7 @@ function ActionsMenu(props: Props) { }; const handleCopyClick = () => { - copyStudy( - study.id, - `${study.name} (${t("studies.copySuffix")})`, - false, - ).catch((err) => { + copyStudy(study.id, `${study.name} (${t("studies.copySuffix")})`, false).catch((err) => { enqueueErrorSnackbar(t("studies.error.copyStudy"), err); logError("Failed to copy study", study, err); }); @@ -139,36 +123,11 @@ function ActionsMenu(props: Props) { return ( {[ - menuItem( - !study.archived, - t("global.launch"), - BoltIcon, - handleLaunchClick, - ), - menuItem( - !study.archived, - t("study.properties"), - EditOutlinedIcon, - handlePropertiesClick, - ), - menuItem( - !study.archived, - t("global.copy"), - FileCopyOutlinedIcon, - handleCopyClick, - ), - menuItem( - study.managed, - t("studies.moveStudy"), - DriveFileMoveIcon, - handleMoveClick, - ), - menuItem( - !study.archived, - t("global.export"), - DownloadOutlinedIcon, - handleExportClick, - ), + menuItem(!study.archived, t("global.launch"), BoltIcon, handleLaunchClick), + menuItem(!study.archived, t("study.properties"), EditOutlinedIcon, handlePropertiesClick), + menuItem(!study.archived, t("global.copy"), FileCopyOutlinedIcon, handleCopyClick), + menuItem(study.managed, t("studies.moveStudy"), DriveFileMoveIcon, handleMoveClick), + menuItem(!study.archived, t("global.export"), DownloadOutlinedIcon, handleExportClick), menuItem( study.archived, t("global.unarchive"), diff --git a/webapp/src/components/App/Studies/StudyCard/index.tsx b/webapp/src/components/App/Studies/StudyCard/index.tsx index 89813e6271..b13b9296a6 100644 --- a/webapp/src/components/App/Studies/StudyCard/index.tsx +++ b/webapp/src/components/App/Studies/StudyCard/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,7 +14,7 @@ import { memo, useState } from "react"; import { NavLink, useNavigate } from "react-router-dom"; -import { AxiosError } from "axios"; +import type { AxiosError } from "axios"; import { useSnackbar } from "notistack"; import { useTranslation } from "react-i18next"; import { @@ -40,7 +40,7 @@ import ContentCopyIcon from "@mui/icons-material/ContentCopy"; import AltRouteOutlinedIcon from "@mui/icons-material/AltRouteOutlined"; import debug from "debug"; import { areEqual } from "react-window"; -import { StudyMetadata, StudyType } from "../../../../common/types"; +import { StudyType, type StudyMetadata } from "../../../../common/types"; import { buildModificationDate, convertUTCToLocalTime, @@ -301,9 +301,7 @@ const StudyCard = memo((props: Props) => { }} > - - {convertUTCToLocalTime(study.creationDate)} - + {convertUTCToLocalTime(study.creationDate)} { }} > - - {buildModificationDate(study.modificationDate, t, i18n.language)} - + {buildModificationDate(study.modificationDate, t, i18n.language)} {`v${displayVersionName(study.version)}`} @@ -348,12 +344,7 @@ const StudyCard = memo((props: Props) => { }} > {study.archived && ( - } - label="archive" - color="warning" - size="small" - /> + } label="archive" color="warning" size="small" /> )} {study.type === StudyType.VARIANT && ( { }} /> {study.tags?.map((tag) => ( - + ))} @@ -406,9 +392,7 @@ const StudyCard = memo((props: Props) => { /> {/* Keep conditional rendering for dialogs and not use only `open` property, because API calls are made on mount */} - {openDialog === "properties" && ( - - )} + {openDialog === "properties" && } {openDialog === "delete" && ( { {t("studies.question.delete")} )} - {openDialog === "export" && ( - - )} - {openDialog === "move" && ( - - )} + {openDialog === "export" && } + {openDialog === "move" && } ); }, areEqual); diff --git a/webapp/src/components/App/Studies/StudyCard/types.tsx b/webapp/src/components/App/Studies/StudyCard/types.tsx index 8c7ff608f5..db6cb604e9 100644 --- a/webapp/src/components/App/Studies/StudyCard/types.tsx +++ b/webapp/src/components/App/Studies/StudyCard/types.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/StudyTree/StudyTreeNode.tsx b/webapp/src/components/App/Studies/StudyTree/StudyTreeNode.tsx index 9b2d6cdff6..e84b9592c9 100644 --- a/webapp/src/components/App/Studies/StudyTree/StudyTreeNode.tsx +++ b/webapp/src/components/App/Studies/StudyTree/StudyTreeNode.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import { memo } from "react"; -import { StudyTreeNodeProps } from "./types"; +import type { StudyTreeNodeProps } from "./types"; import TreeItemEnhanced from "@/components/common/TreeItemEnhanced"; import { t } from "i18next"; @@ -22,11 +22,8 @@ export default memo(function StudyTreeNode({ parentId, onNodeClick, }: StudyTreeNodeProps) { - const isLoadingFolder = - studyTreeNode.hasChildren && studyTreeNode.children.length === 0; - const id = parentId - ? `${parentId}/${studyTreeNode.name}` - : studyTreeNode.name; + const isLoadingFolder = studyTreeNode.hasChildren && studyTreeNode.children.length === 0; + const id = parentId ? `${parentId}/${studyTreeNode.name}` : studyTreeNode.name; if (isLoadingFolder) { return ( @@ -35,10 +32,7 @@ export default memo(function StudyTreeNode({ label={studyTreeNode.name} onClick={() => onNodeClick(id, studyTreeNode)} > - + ); } diff --git a/webapp/src/components/App/Studies/StudyTree/__test__/fixtures.ts b/webapp/src/components/App/Studies/StudyTree/__test__/fixtures.ts index 1fe3237182..5ac08ebfb2 100644 --- a/webapp/src/components/App/Studies/StudyTree/__test__/fixtures.ts +++ b/webapp/src/components/App/Studies/StudyTree/__test__/fixtures.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { StudyMetadata, StudyType } from "@/common/types"; +import { StudyType, type StudyMetadata } from "@/common/types"; function createStudyMetadata(folder: string, workspace: string): StudyMetadata { return { @@ -139,9 +139,7 @@ export const FIXTURES = { { name: "suba", path: "/a/suba", - children: [ - { name: "folder1", path: "/a/suba/folder1", children: [] }, - ], + children: [{ name: "folder1", path: "/a/suba/folder1", children: [] }], }, ], }, diff --git a/webapp/src/components/App/Studies/StudyTree/__test__/utils.test.ts b/webapp/src/components/App/Studies/StudyTree/__test__/utils.test.ts index 0578313bb1..b3dad5ee8c 100644 --- a/webapp/src/components/App/Studies/StudyTree/__test__/utils.test.ts +++ b/webapp/src/components/App/Studies/StudyTree/__test__/utils.test.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,22 +13,15 @@ */ import { FIXTURES, FIXTURES_BUILD_STUDY_TREE } from "./fixtures"; -import { - buildStudyTree, - insertFoldersIfNotExist, - insertWorkspacesIfNotExist, -} from "../utils"; -import { NonStudyFolderDTO, StudyTreeNode } from "../types"; +import { buildStudyTree, insertFoldersIfNotExist, insertWorkspacesIfNotExist } from "../utils"; +import type { NonStudyFolderDTO, StudyTreeNode } from "../types"; describe("StudyTree Utils", () => { describe("mergeStudyTreeAndFolders", () => { - test.each(Object.values(FIXTURES))( - "$name", - ({ studyTree, folders, expected }) => { - const result = insertFoldersIfNotExist(studyTree, folders); - expect(result).toEqual(expected); - }, - ); + test.each(Object.values(FIXTURES))("$name", ({ studyTree, folders, expected }) => { + const result = insertFoldersIfNotExist(studyTree, folders); + expect(result).toEqual(expected); + }); test("should handle empty study tree", () => { const emptyTree: StudyTreeNode = { @@ -114,12 +107,9 @@ describe("StudyTree Utils", () => { expect(result).toEqual(expected); }); - test.each(Object.values(FIXTURES_BUILD_STUDY_TREE))( - "$name", - ({ studies, expected }) => { - const result = buildStudyTree(studies); - expect(result).toEqual(expected); - }, - ); + test.each(Object.values(FIXTURES_BUILD_STUDY_TREE))("$name", ({ studies, expected }) => { + const result = buildStudyTree(studies); + expect(result).toEqual(expected); + }); }); }); diff --git a/webapp/src/components/App/Studies/StudyTree/index.tsx b/webapp/src/components/App/Studies/StudyTree/index.tsx index 659b05d906..8f33cd0ab0 100644 --- a/webapp/src/components/App/Studies/StudyTree/index.tsx +++ b/webapp/src/components/App/Studies/StudyTree/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { StudyTreeNode } from "./types"; +import type { StudyTreeNode } from "./types"; import useAppSelector from "../../../../redux/hooks/useAppSelector"; import { getStudiesTree, getStudyFilters } from "../../../../redux/selectors"; import useAppDispatch from "../../../../redux/hooks/useAppDispatch"; @@ -60,11 +60,7 @@ function StudyTree() { * @param rootNode - The root node of the tree * @param selectedNode - The node of the item clicked */ - async function updateTree( - itemId: string, - rootNode: StudyTreeNode, - selectedNode: StudyTreeNode, - ) { + async function updateTree(itemId: string, rootNode: StudyTreeNode, selectedNode: StudyTreeNode) { if (selectedNode.path.startsWith("/default")) { // we don't update the tree if the user clicks on the default workspace // api doesn't allow to fetch the subfolders of the default workspace @@ -86,10 +82,7 @@ function StudyTree() { try { treeAfterWorkspacesUpdate = await fetchAndInsertWorkspaces(rootNode); } catch (error) { - enqueueErrorSnackbar( - t("studies.tree.error.failToFetchWorkspace"), - toError(error), - ); + enqueueErrorSnackbar(t("studies.tree.error.failToFetchWorkspace"), toError(error)); } pathsToFetch = treeAfterWorkspacesUpdate.children .filter((t) => t.name !== "default") // We don't fetch the default workspace subfolders, api don't allow it @@ -99,8 +92,10 @@ function StudyTree() { pathsToFetch = [`root${selectedNode.path}`]; } - const [treeAfterSubfoldersUpdate, failedPath] = - await fetchAndInsertSubfolders(pathsToFetch, treeAfterWorkspacesUpdate); + const [treeAfterSubfoldersUpdate, failedPath] = await fetchAndInsertSubfolders( + pathsToFetch, + treeAfterWorkspacesUpdate, + ); if (failedPath.length > 0) { enqueueErrorSnackbar( t("studies.tree.error.failToFetchFolder", { @@ -117,10 +112,7 @@ function StudyTree() { // Event Handlers //////////////////////////////////////////////////////////////// - const handleTreeItemClick = async ( - itemId: string, - studyTreeNode: StudyTreeNode, - ) => { + const handleTreeItemClick = async (itemId: string, studyTreeNode: StudyTreeNode) => { dispatch(updateStudyFilters({ folder: itemId })); updateTree(itemId, studiesTree, studyTreeNode); }; diff --git a/webapp/src/components/App/Studies/StudyTree/types.ts b/webapp/src/components/App/Studies/StudyTree/types.ts index 5a67d65627..bdeeab28c2 100644 --- a/webapp/src/components/App/Studies/StudyTree/types.ts +++ b/webapp/src/components/App/Studies/StudyTree/types.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/App/Studies/StudyTree/utils.ts b/webapp/src/components/App/Studies/StudyTree/utils.ts index 4d1132d79b..87670d03e6 100644 --- a/webapp/src/components/App/Studies/StudyTree/utils.ts +++ b/webapp/src/components/App/Studies/StudyTree/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,8 +13,8 @@ */ import * as api from "../../../../services/api/study"; -import { StudyMetadata } from "../../../../common/types"; -import { StudyTreeNode, NonStudyFolderDTO } from "./types"; +import type { StudyMetadata } from "../../../../common/types"; +import type { StudyTreeNode, NonStudyFolderDTO } from "./types"; /** * Builds a tree structure from a list of study metadata. @@ -50,9 +50,7 @@ export function buildStudyTree(studies: StudyMetadata[]) { child = { name: folderName, children: [], - path: current.path - ? `${current.path}/${folderName}` - : `/${folderName}`, + path: current.path ? `${current.path}/${folderName}` : `/${folderName}`, }; current.children.push(child); @@ -72,8 +70,8 @@ export function buildStudyTree(studies: StudyMetadata[]) { * * If the folder is already in the tree, the tree returnred will be equal to the tree given to the function. * - * @param studiesTree study tree to insert the folder into - * @param folder folder to inert into the tree + * @param studiesTree - study tree to insert the folder into + * @param folder - folder to inert into the tree * @returns study tree with the folder inserted if it wasn't already there. * New branch is created if it contain the folder otherwise the branch is left unchanged. */ @@ -89,9 +87,7 @@ function insertFolderIfNotExist( // direct child case if (folder.parentPath == currentNodePath) { - const folderExists = studiesTree.children.find( - (child) => child.name === folder.name, - ); + const folderExists = studiesTree.children.find((child) => child.name === folder.name); if (folderExists) { return { ...studiesTree, @@ -122,9 +118,7 @@ function insertFolderIfNotExist( // not a direct child, but does belong to this branch so recursively walk though the tree return { ...studiesTree, - children: studiesTree.children.map((child) => - insertFolderIfNotExist(child, folder), - ), + children: studiesTree.children.map((child) => insertFolderIfNotExist(child, folder)), }; } @@ -135,10 +129,10 @@ function insertFolderIfNotExist( * * The folders are inserted in the order they are given. * - * @param studiesTree study tree to insert the folder into - * @param folders folders to inert into the tree - * @param studiesTree study tree to insert the folder into - * @param folder folder to inert into the tree + * @param studiesTree - study tree to insert the folder into + * @param folders - folders to inert into the tree + * @param studiesTree - study tree to insert the folder into + * @param folder - folder to inert into the tree * @returns study tree with the folder inserted if it wasn't already there. * New branch is created if it contain the folder otherwise the branch is left unchanged. */ @@ -154,7 +148,7 @@ export function insertFoldersIfNotExist( /** * Call the explorer api to fetch the subfolders under the given path. * - * @param path path of the subfolder to fetch, should sart with root, e.g. root/workspace/folder1 + * @param path - path of the subfolder to fetch, should sart with root, e.g. root/workspace/folder1 * @returns list of subfolders under the given path */ async function fetchSubfolders(path: string): Promise { @@ -191,8 +185,8 @@ async function fetchSubfolders(path: string): Promise { * * This function doesn't mutate the tree, it returns a new tree with the subfolders inserted * - * @param paths list of paths to fetch the subfolders for - * @param studiesTree study tree to insert the subfolders into + * @param paths - list of paths to fetch the subfolders for + * @param studiesTree - study tree to insert the subfolders into * @returns a tuple with study tree with the subfolders inserted if they weren't already there and path for which * the fetch failed. */ @@ -200,9 +194,7 @@ export async function fetchAndInsertSubfolders( paths: string[], studiesTree: StudyTreeNode, ): Promise<[StudyTreeNode, string[]]> { - const results = await Promise.allSettled( - paths.map((path) => fetchSubfolders(path)), - ); + const results = await Promise.allSettled(paths.map((path) => fetchSubfolders(path))); return results.reduce<[StudyTreeNode, string[]]>( ([tree, failed], result, index) => { if (result.status === "fulfilled") { @@ -220,14 +212,11 @@ export async function fetchAndInsertSubfolders( * * This function doesn't mutate the tree, it returns a new tree with the workspace inserted. * - * @param workspace key of the workspace - * @param stydyTree study tree to insert the workspace into + * @param workspace - key of the workspace + * @param stydyTree - study tree to insert the workspace into * @returns study tree with the empty workspace inserted if it wasn't already there. */ -function insertWorkspaceIfNotExist( - stydyTree: StudyTreeNode, - workspace: string, -): StudyTreeNode { +function insertWorkspaceIfNotExist(stydyTree: StudyTreeNode, workspace: string): StudyTreeNode { const emptyNode = { name: workspace, path: `/${workspace}`, @@ -249,8 +238,8 @@ function insertWorkspaceIfNotExist( * * The workspaces are inserted in the order they are given. * - * @param workspaces workspaces to insert into the tree - * @param stydyTree study tree to insert the workspaces into + * @param workspaces - workspaces to insert into the tree + * @param stydyTree - study tree to insert the workspaces into * @returns study tree with the empty workspaces inserted if they weren't already there. */ export function insertWorkspacesIfNotExist( @@ -270,12 +259,10 @@ export function insertWorkspacesIfNotExist( * * This function doesn't mutate the tree, it returns a new tree with the workspaces inserted. * - * @param studyTree study tree to insert the workspaces into + * @param studyTree - study tree to insert the workspaces into * @returns study tree with the workspaces inserted if they weren't already there. */ -export async function fetchAndInsertWorkspaces( - studyTree: StudyTreeNode, -): Promise { +export async function fetchAndInsertWorkspaces(studyTree: StudyTreeNode): Promise { const workspaces = await api.getWorkspaces(); return insertWorkspacesIfNotExist(studyTree, workspaces); } diff --git a/webapp/src/components/App/Studies/index.tsx b/webapp/src/components/App/Studies/index.tsx index f422ce3249..4ee403d9dc 100644 --- a/webapp/src/components/App/Studies/index.tsx +++ b/webapp/src/components/App/Studies/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -23,10 +23,7 @@ import RootPage from "../../common/page/RootPage"; import HeaderTopRight from "./HeaderTopRight"; import HeaderBottom from "./HeaderBottom"; import SimpleLoader from "../../common/loaders/SimpleLoader"; -import { - getStudiesState, - getStudyIdsFilteredAndSorted, -} from "../../../redux/selectors"; +import { getStudiesState, getStudyIdsFilteredAndSorted } from "../../../redux/selectors"; import useAsyncAppSelector from "../../../redux/hooks/useAsyncAppSelector"; import FilterDrawer from "./FilterDrawer"; import UseAsyncAppSelectorCond from "../../../redux/components/UseAsyncAppSelectorCond"; @@ -50,9 +47,7 @@ function Studies() { title={t("global.studies")} titleIcon={TravelExploreOutlinedIcon} headerTopRight={} - headerBottom={ - setOpenFilter(true)} /> - } + headerBottom={ setOpenFilter(true)} />} > (); const [filterType, setFilterType] = useState(""); - const [filterRunningStatus, setFilterRunningStatus] = - useState(false); + const [filterRunningStatus, setFilterRunningStatus] = useState(false); const [currentContent, setCurrentContent] = useState(content); const launcherMetrics = usePromiseWithSnackbarError(getLauncherMetrics, { @@ -178,18 +177,11 @@ function JobTableView(props: PropType) { - } + control={} label={t("tasks.runningTasks") as string} /> - - {t("tasks.typeFilter")} - + {t("tasks.typeFilter")} ) => - handleChange(name, e.target.value as string) + ? (e: SelectChangeEvent) => handleChange(name, e.target.value as string) : basicHandleChange } > diff --git a/webapp/src/components/common/SnackErrorMessage.tsx b/webapp/src/components/common/SnackErrorMessage.tsx index ddc0fc87b7..0523d5bb69 100644 --- a/webapp/src/components/common/SnackErrorMessage.tsx +++ b/webapp/src/components/common/SnackErrorMessage.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,6 @@ */ import { useState, forwardRef, useCallback } from "react"; -import * as React from "react"; import { useSnackbar, SnackbarContent } from "notistack"; import axios from "axios"; import { @@ -59,91 +58,83 @@ interface Props { details: string | Error; } -const SnackErrorMessage = forwardRef( - (props: Props, ref) => { - const { closeSnackbar } = useSnackbar(); - const [expanded, setExpanded] = useState(false); - const { id, message, details } = props; +const SnackErrorMessage = forwardRef((props: Props, ref) => { + const { closeSnackbar } = useSnackbar(); + const [expanded, setExpanded] = useState(false); + const { id, message, details } = props; - const handleExpandClick = useCallback(() => { - setExpanded((oldExpanded) => !oldExpanded); - }, []); + const handleExpandClick = useCallback(() => { + setExpanded((oldExpanded) => !oldExpanded); + }, []); - const handleDismiss = useCallback(() => { - closeSnackbar(id); - }, [id, closeSnackbar]); + const handleDismiss = useCallback(() => { + closeSnackbar(id); + }, [id, closeSnackbar]); - return ( - - + + - + {message} + + + + + + + + + + + - - {message} - - - - - - - - - - - - {axios.isAxiosError(details) ? ( - - - - {details.response?.status} - - - - {details.response?.data.exception} - - - - - {details.response?.data.description} - - + {axios.isAxiosError(details) ? ( + + + + {details.response?.status} - ) : ( - details.toString() - )} - - - - - ); - }, -); + + + {details.response?.data.exception} + + + + {details.response?.data.description} + + + ) : ( + details.toString() + )} + + + + + ); +}); SnackErrorMessage.displayName = "SnackErrorMessage"; diff --git a/webapp/src/components/common/SplitLayoutView.tsx b/webapp/src/components/common/SplitLayoutView.tsx index 4145a9e13d..252332517b 100644 --- a/webapp/src/components/common/SplitLayoutView.tsx +++ b/webapp/src/components/common/SplitLayoutView.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,12 +12,11 @@ * This file is part of the Antares project. */ -import { ReactNode } from "react"; -import { Divider, Box, SxProps, Theme } from "@mui/material"; +import { Divider, Box, type SxProps, type Theme } from "@mui/material"; interface Props { - left: ReactNode; - right: ReactNode; + left: React.ReactNode; + right: React.ReactNode; sx?: SxProps; } @@ -54,11 +53,7 @@ function SplitLayoutView(props: Props) { > {left} - + - + ); } diff --git a/webapp/src/components/common/TableForm/Table.tsx b/webapp/src/components/common/TableForm/Table.tsx index 70bfdd5e75..2cf01a29ac 100644 --- a/webapp/src/components/common/TableForm/Table.tsx +++ b/webapp/src/components/common/TableForm/Table.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,15 +12,12 @@ * This file is part of the Antares project. */ -import HT from "handsontable"; +import type HT from "handsontable"; import * as RA from "ramda-adjunct"; import { useMemo } from "react"; import type { IdType } from "../../../common/types"; import { useFormContextPlus } from "../Form"; -import Handsontable, { - HandsontableProps, - HotTableClass, -} from "../Handsontable"; +import Handsontable, { type HandsontableProps, type HotTableClass } from "../Handsontable"; type Row = { id: IdType } & HT.RowObject; @@ -32,12 +29,7 @@ export interface TableProps extends Omit { } function Table(props: TableProps) { - const { - data, - rowHeaders = (row: Row) => String(row.id), - tableRef, - ...restProps - } = props; + const { data, rowHeaders = (row: Row) => String(row.id), tableRef, ...restProps } = props; const { setValues } = useFormContextPlus(); @@ -49,9 +41,7 @@ function Table(props: TableProps) { (longestHeaderLength, row) => { const headerLength = rowHeaders(row).length; - return longestHeaderLength > headerLength - ? longestHeaderLength - : headerLength; + return longestHeaderLength > headerLength ? longestHeaderLength : headerLength; }, 10, // To force minimum size ) * 8, @@ -62,22 +52,25 @@ function Table(props: TableProps) { // Event Handlers //////////////////////////////////////////////////////////////// - const handleAfterChange: HandsontableProps["afterChange"] = - function afterChange(this: unknown, changes, ...rest): void { - const newValues = changes?.reduce( - (acc, [row, column, _, nextValue]) => { - acc[`${data[row].id}.${column}`] = nextValue; - return acc; - }, - {} as Record, - ); + const handleAfterChange: HandsontableProps["afterChange"] = function afterChange( + this: unknown, + changes, + ...rest + ): void { + const newValues = changes?.reduce( + (acc, [row, column, _, nextValue]) => { + acc[`${data[row].id}.${column}`] = nextValue; + return acc; + }, + {} as Record, + ); - if (newValues) { - setValues(newValues); - } + if (newValues) { + setValues(newValues); + } - restProps.afterChange?.call(this, changes, ...rest); - }; + restProps.afterChange?.call(this, changes, ...rest); + }; //////////////////////////////////////////////////////////////// // JSX @@ -93,11 +86,7 @@ function Table(props: TableProps) { manualRowResize {...restProps} data={data} - rowHeaders={ - RA.isFunction(rowHeaders) - ? (index) => rowHeaders(data[index]) - : rowHeaders - } + rowHeaders={RA.isFunction(rowHeaders) ? (index) => rowHeaders(data[index]) : rowHeaders} afterChange={handleAfterChange} ref={tableRef} /> diff --git a/webapp/src/components/common/TableForm/index.tsx b/webapp/src/components/common/TableForm/index.tsx index 58bbf4e10f..86d000bc81 100644 --- a/webapp/src/components/common/TableForm/index.tsx +++ b/webapp/src/components/common/TableForm/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,24 +13,20 @@ */ import * as RA from "ramda-adjunct"; -import HT from "handsontable"; -import { startCase } from "lodash"; +import type HT from "handsontable"; +import startCase from "lodash/startCase"; import * as R from "ramda"; -import { Box, type SxProps } from "@mui/material"; -import type { Theme } from "@mui/material"; +import { Box, type SxProps, type Theme } from "@mui/material"; import { useMemo } from "react"; -import { DefaultValues } from "react-hook-form"; +import type { DefaultValues } from "react-hook-form"; import type { IdType } from "../../../common/types"; -import Form, { FormProps } from "../Form"; -import Table, { TableProps } from "./Table"; +import Form, { type FormProps } from "../Form"; +import Table, { type TableProps } from "./Table"; import { getCellType } from "./utils"; import { mergeSxProp } from "../../../utils/muiUtils"; -import useMemoLocked from "../../../hooks/useMemoLocked"; +import useSafeMemo from "../../../hooks/useSafeMemo"; -type TableFieldValuesByRow = Record< - IdType, - Record ->; +type TableFieldValuesByRow = Record>; export interface TableFormProps< TFieldValues extends TableFieldValuesByRow = TableFieldValuesByRow, @@ -43,9 +39,7 @@ export interface TableFormProps< formApiRef?: FormProps["apiRef"]; sx?: SxProps; tableProps?: Omit & { - columns?: - | Array - | ((index: number) => HT.ColumnSettings); + columns?: Array | ((index: number) => HT.ColumnSettings); colHeaders?: (index: number, colName: string) => string; }; } @@ -67,11 +61,13 @@ function TableForm( const { columns, type, colHeaders, ...restTableProps } = tableProps; // useForm's defaultValues are cached on the first render within the custom hook. - const defaultData = useMemoLocked(() => - R.keys(defaultValues).map((id) => ({ - ...defaultValues[id], - id: id as IdType, - })), + const defaultData = useSafeMemo( + () => + R.keys(defaultValues).map((id) => ({ + ...defaultValues[id], + id: id as IdType, + })), + [], ); const formattedColumns = useMemo(() => { @@ -121,11 +117,7 @@ function TableForm( overflow: "auto", }} > - +
); diff --git a/webapp/src/components/common/TableForm/utils.ts b/webapp/src/components/common/TableForm/utils.ts index ff47af9481..5f06867ec5 100644 --- a/webapp/src/components/common/TableForm/utils.ts +++ b/webapp/src/components/common/TableForm/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/TableMode.tsx b/webapp/src/components/common/TableMode.tsx index 1f5bdf2d8f..a30bfe79fe 100644 --- a/webapp/src/components/common/TableMode.tsx +++ b/webapp/src/components/common/TableMode.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,24 +13,21 @@ */ import { useEffect, useState } from "react"; -import { StudyMetadata } from "../../common/types"; +import type { StudyMetadata } from "../../common/types"; import usePromise from "../../hooks/usePromise"; -import { - getTableMode, - setTableMode, -} from "../../services/api/studies/tableMode"; -import { +import { getTableMode, setTableMode } from "../../services/api/studies/tableMode"; +import type { TableData, TableModeColumnsForType, TableModeType, } from "../../services/api/studies/tableMode/types"; -import { SubmitHandlerPlus } from "./Form/types"; +import type { SubmitHandlerPlus } from "./Form/types"; import UsePromiseCond from "./utils/UsePromiseCond"; import GridOffIcon from "@mui/icons-material/GridOff"; import EmptyView from "./page/EmptyView"; import { useTranslation } from "react-i18next"; import DataGridForm, { type DataGridFormProps } from "./DataGridForm"; -import { startCase } from "lodash"; +import startCase from "lodash/startCase"; import type { GridColumn } from "@glideapps/glide-data-grid"; export interface TableModeProps { @@ -47,9 +44,7 @@ function TableMode({ extraActions, }: TableModeProps) { const { t } = useTranslation(); - const [gridColumns, setGridColumns] = useState< - DataGridFormProps["columns"] - >([]); + const [gridColumns, setGridColumns] = useState["columns"]>([]); const columnsDep = columns.join(","); const res = usePromise( diff --git a/webapp/src/components/common/TabsView.tsx b/webapp/src/components/common/TabsView.tsx index cfee995bbf..b3f832c587 100644 --- a/webapp/src/components/common/TabsView.tsx +++ b/webapp/src/components/common/TabsView.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { TabContext, TabList, TabListProps, TabPanel } from "@mui/lab"; +import { TabContext, TabList, TabPanel, type TabListProps } from "@mui/lab"; import { Box, Tab } from "@mui/material"; import { useState } from "react"; @@ -60,11 +60,7 @@ function TabsView({ items, onChange, divider }: TabsViewProps) { {items.map(({ content }, index) => ( - + {content} ))} diff --git a/webapp/src/components/common/TextSeparator.tsx b/webapp/src/components/common/TextSeparator.tsx index 1348627465..b2c00313f1 100644 --- a/webapp/src/components/common/TextSeparator.tsx +++ b/webapp/src/components/common/TextSeparator.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,7 +12,7 @@ * This file is part of the Antares project. */ -import { SxProps, Theme, Divider, Typography, Box } from "@mui/material"; +import { Divider, Typography, Box, type SxProps, type Theme } from "@mui/material"; interface Props { text: string; diff --git a/webapp/src/components/common/TreeItemEnhanced.tsx b/webapp/src/components/common/TreeItemEnhanced.tsx index 6b488de6e7..c9440819cd 100644 --- a/webapp/src/components/common/TreeItemEnhanced.tsx +++ b/webapp/src/components/common/TreeItemEnhanced.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -29,11 +29,7 @@ function TreeItemEnhanced({ onClick, sx, ...rest }: TreeItemEnhancedProps) { const { target } = event; // The item is not selected if the click is on the expand/collapse icon - if ( - canExpand && - target instanceof Element && - target.closest(".MuiTreeItem-iconContainer") - ) { + if (canExpand && target instanceof Element && target.closest(".MuiTreeItem-iconContainer")) { return; } diff --git a/webapp/src/components/common/buttons/DownloadButton.tsx b/webapp/src/components/common/buttons/DownloadButton.tsx index a67cd914e5..917b738dcf 100644 --- a/webapp/src/components/common/buttons/DownloadButton.tsx +++ b/webapp/src/components/common/buttons/DownloadButton.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import FileUploadIcon from "@mui/icons-material/FileUpload"; -import SplitButton, { SplitButtonProps } from "./SplitButton"; +import SplitButton, { type SplitButtonProps } from "./SplitButton"; import { useState } from "react"; import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; import { useTranslation } from "react-i18next"; @@ -35,16 +35,9 @@ export type DownloadButtonProps = { } ); -function DownloadButton( - props: DownloadButtonProps, -) { +function DownloadButton(props: DownloadButtonProps) { const { t } = useTranslation(); - const { - disabled, - formatOptions, - onClick, - children: label = t("global.export"), - } = props; + const { disabled, formatOptions, onClick, children: label = t("global.export") } = props; const [isDownloading, setIsDownloading] = useState(false); const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); @@ -94,11 +87,7 @@ function DownloadButton( {label} ) : ( - handleDownload()} - > + handleDownload()}> {label} ); diff --git a/webapp/src/components/common/buttons/DownloadMatrixButton.tsx b/webapp/src/components/common/buttons/DownloadMatrixButton.tsx index b50e3e81da..8022ae0b23 100644 --- a/webapp/src/components/common/buttons/DownloadMatrixButton.tsx +++ b/webapp/src/components/common/buttons/DownloadMatrixButton.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,7 +14,7 @@ import { getMatrixFile, getRawFile } from "../../../services/api/studies/raw"; import { downloadFile } from "../../../utils/fileUtils"; -import { StudyMetadata } from "../../../common/types"; +import type { StudyMetadata } from "../../../common/types"; import { useTranslation } from "react-i18next"; import DownloadButton from "./DownloadButton"; import type { TTableExportFormat } from "@/services/api/studies/raw/types"; @@ -69,10 +69,7 @@ function DownloadMatrixButton(props: DownloadMatrixButtonProps) { const extension = format === "csv (semicolon)" ? "csv" : format; - return downloadFile( - matrixFile, - `matrix_${studyId}_${path.replace("/", "_")}.${extension}`, - ); + return downloadFile(matrixFile, `matrix_${studyId}_${path.replace("/", "_")}.${extension}`); }; //////////////////////////////////////////////////////////////// @@ -80,11 +77,7 @@ function DownloadMatrixButton(props: DownloadMatrixButtonProps) { //////////////////////////////////////////////////////////////// return ( - + {label} ); diff --git a/webapp/src/components/common/buttons/SplitButton.tsx b/webapp/src/components/common/buttons/SplitButton.tsx index 52bca20142..0ddf358c88 100644 --- a/webapp/src/components/common/buttons/SplitButton.tsx +++ b/webapp/src/components/common/buttons/SplitButton.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -13,7 +13,7 @@ */ import Button from "@mui/material/Button"; -import ButtonGroup, { ButtonGroupProps } from "@mui/material/ButtonGroup"; +import ButtonGroup, { type ButtonGroupProps } from "@mui/material/ButtonGroup"; import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; import ClickAwayListener from "@mui/material/ClickAwayListener"; import Grow from "@mui/material/Grow"; diff --git a/webapp/src/components/common/buttons/UploadFileButton.tsx b/webapp/src/components/common/buttons/UploadFileButton.tsx index 872b05b01a..e43fc17c50 100644 --- a/webapp/src/components/common/buttons/UploadFileButton.tsx +++ b/webapp/src/components/common/buttons/UploadFileButton.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -18,8 +18,8 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; import { toError } from "../../../utils/fnUtils"; -import { Accept, useDropzone } from "react-dropzone"; -import { StudyMetadata } from "../../../common/types"; +import { useDropzone, type Accept } from "react-dropzone"; +import type { StudyMetadata } from "../../../common/types"; import { useSnackbar } from "notistack"; import { uploadFile } from "../../../services/api/studies/raw"; diff --git a/webapp/src/components/common/dialogs/BasicDialog.tsx b/webapp/src/components/common/dialogs/BasicDialog.tsx index 467d970b06..88d9017acf 100644 --- a/webapp/src/components/common/dialogs/BasicDialog.tsx +++ b/webapp/src/components/common/dialogs/BasicDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -17,13 +17,13 @@ import { DialogActions, DialogContent, DialogContentText, - DialogProps, + type DialogProps, DialogTitle, styled, - DialogContentProps, + type DialogContentProps, } from "@mui/material"; import * as RA from "ramda-adjunct"; -import { SvgIconComponent } from "@mui/icons-material"; +import type { SvgIconComponent } from "@mui/icons-material"; import * as R from "ramda"; import { mergeSxProp } from "../../../utils/muiUtils"; @@ -60,15 +60,7 @@ const AlertBorder = styled("span", { })); function BasicDialog(props: BasicDialogProps) { - const { - title, - titleIcon, - children, - actions, - alert, - contentProps, - ...dialogProps - } = props; + const { title, titleIcon, children, actions, alert, contentProps, ...dialogProps } = props; const TitleIcon = titleIcon; return ( @@ -90,16 +82,9 @@ function BasicDialog(props: BasicDialogProps) { )} - {RA.isString(children) ? ( - {children} - ) : ( - children - )} + {RA.isString(children) ? {children} : children} {actions && {actions}} diff --git a/webapp/src/components/common/dialogs/ConfirmationDialog.tsx b/webapp/src/components/common/dialogs/ConfirmationDialog.tsx index df8141906f..c43b33a07c 100644 --- a/webapp/src/components/common/dialogs/ConfirmationDialog.tsx +++ b/webapp/src/components/common/dialogs/ConfirmationDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,10 +14,9 @@ import { Button } from "@mui/material"; import { useTranslation } from "react-i18next"; -import BasicDialog, { BasicDialogProps } from "./BasicDialog"; +import BasicDialog, { type BasicDialogProps } from "./BasicDialog"; -export interface ConfirmationDialogProps - extends Omit { +export interface ConfirmationDialogProps extends Omit { cancelButtonText?: string; confirmButtonText?: string; onConfirm: VoidFunction; @@ -25,14 +24,8 @@ export interface ConfirmationDialogProps } function ConfirmationDialog(props: ConfirmationDialogProps) { - const { - cancelButtonText, - confirmButtonText, - onConfirm, - onCancel, - onClose, - ...basicDialogProps - } = props; + const { cancelButtonText, confirmButtonText, onConfirm, onCancel, onClose, ...basicDialogProps } = + props; const { t } = useTranslation(); @@ -40,9 +33,7 @@ function ConfirmationDialog(props: ConfirmationDialogProps) { // Event Handlers //////////////////////////////////////////////////////////////// - const handleClose = ( - ...args: Parameters> - ) => { + const handleClose = (...args: Parameters>) => { onCancel(); onClose?.(...args); }; @@ -58,9 +49,7 @@ function ConfirmationDialog(props: ConfirmationDialogProps) { {...basicDialogProps} actions={ <> - + diff --git a/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx b/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx index 5999492f43..acef230433 100644 --- a/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx +++ b/webapp/src/components/common/dialogs/DataViewerDialog/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -19,7 +19,7 @@ import OkDialog from "../OkDialog"; import SimpleLoader from "../../loaders/SimpleLoader"; import MatrixGrid from "@/components/common/Matrix/components/MatrixGrid"; import { generateDataColumns } from "@/components/common/Matrix/shared/utils"; -import { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; +import type { MatrixDataDTO } from "@/components/common/Matrix/shared/types"; interface Props { filename: string; @@ -29,12 +29,8 @@ interface Props { isMatrix?: boolean; } -function isMatrixData( - content: string | MatrixDataDTO, -): content is MatrixDataDTO { - return ( - typeof content === "object" && "data" in content && "columns" in content - ); +function isMatrixData(content: string | MatrixDataDTO): content is MatrixDataDTO { + return typeof content === "object" && "data" in content && "columns" in content; } /** @@ -52,13 +48,7 @@ function isMatrixData( * @param [props.loading] - Flag indicating if the content is being loaded * @returns The rendered DataViewerDialog component */ -function DataViewerDialog({ - filename, - content, - onClose, - isMatrix, - loading, -}: Props) { +function DataViewerDialog({ filename, content, onClose, isMatrix, loading }: Props) { const [t] = useTranslation(); //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts b/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts index cd499db66a..17b4e0b68d 100644 --- a/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts +++ b/webapp/src/components/common/dialogs/DataViewerDialog/styles.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * diff --git a/webapp/src/components/common/dialogs/DatabaseUploadDialog/components/MatrixContent.tsx b/webapp/src/components/common/dialogs/DatabaseUploadDialog/components/MatrixContent.tsx index c1c17c27b0..7ec99d7bd8 100644 --- a/webapp/src/components/common/dialogs/DatabaseUploadDialog/components/MatrixContent.tsx +++ b/webapp/src/components/common/dialogs/DatabaseUploadDialog/components/MatrixContent.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,14 +15,14 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { Box, Divider, Typography } from "@mui/material"; -import { MatrixInfoDTO, MatrixDTO } from "@/common/types"; +import type { MatrixInfoDTO, MatrixDTO } from "@/common/types"; import MatrixGrid from "@/components/common/Matrix/components/MatrixGrid"; import ButtonBack from "@/components/common/ButtonBack"; import { getMatrix } from "@/services/api/matrix"; import usePromiseWithSnackbarError from "@/hooks/usePromiseWithSnackbarError"; import { generateDataColumns } from "@/components/common/Matrix/shared/utils"; import EmptyView from "@/components/common/page/EmptyView"; -import { GridOff } from "@mui/icons-material"; +import GridOffIcon from "@mui/icons-material/GridOff"; interface MatrixContentProps { matrix: MatrixInfoDTO; @@ -32,12 +32,9 @@ interface MatrixContentProps { function MatrixContent({ matrix, onBack }: MatrixContentProps) { const { t } = useTranslation(); - const { data: matrixData } = usePromiseWithSnackbarError( - () => getMatrix(matrix.id), - { - errorMessage: t("data.error.matrix"), - }, - ); + const { data: matrixData } = usePromiseWithSnackbarError(() => getMatrix(matrix.id), { + errorMessage: t("data.error.matrix"), + }); const matrixColumns = useMemo( () => @@ -66,7 +63,7 @@ function MatrixContent({ matrix, onBack }: MatrixContentProps) { {!matrixData.data[0]?.length ? ( - + ) : ( void; } -function DatabaseUploadDialog({ - studyId, - path, - open, - onClose, -}: DatabaseUploadDialogProps) { +function DatabaseUploadDialog({ studyId, path, open, onClose }: DatabaseUploadDialogProps) { const { t } = useTranslation(); const { enqueueSnackbar } = useSnackbar(); const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); @@ -141,10 +136,7 @@ function DatabaseUploadDialog({ {selectedItem && (matrix ? ( - setMatrixId(undefined)} - /> + setMatrixId(undefined)} /> ) : ( { +export interface DigestDialogProps extends Pick { studyId: LaunchJob["studyId"]; outputId: LaunchJob["outputId"]; } -function DigestDialog({ - studyId, - outputId, - ...dialogProps -}: DigestDialogProps) { +function DigestDialog({ studyId, outputId, ...dialogProps }: DigestDialogProps) { const { t } = useTranslation(); const synthesisRes = usePromise( - () => - getStudyData(studyId, `output/${outputId}/economy/mc-all/grid/digest`), + () => getStudyData(studyId, `output/${outputId}/economy/mc-all/grid/digest`), { deps: [studyId, outputId], }, @@ -59,12 +53,7 @@ function DigestDialog({ ifPending={() => } ifRejected={(error) => { if (error instanceof AxiosError && error.response?.status === 404) { - return ( - - ); + return ; } return ; }} diff --git a/webapp/src/components/common/dialogs/FormDialog.tsx b/webapp/src/components/common/dialogs/FormDialog.tsx index 4980244f5d..3c299b0df2 100644 --- a/webapp/src/components/common/dialogs/FormDialog.tsx +++ b/webapp/src/components/common/dialogs/FormDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -15,23 +15,19 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Button } from "@mui/material"; import { useId, useState } from "react"; -import { FieldValues, FormState } from "react-hook-form"; +import type { FieldValues, FormState } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { LoadingButton } from "@mui/lab"; import * as RA from "ramda-adjunct"; import SaveIcon from "@mui/icons-material/Save"; -import BasicDialog, { BasicDialogProps } from "./BasicDialog"; -import Form, { FormProps } from "../Form"; +import BasicDialog, { type BasicDialogProps } from "./BasicDialog"; +import Form, { type FormProps } from "../Form"; -type SuperType< - TFieldValues extends FieldValues, - TContext, - SubmitReturnValue, -> = Omit & - Omit< - FormProps, - "hideSubmitButton" - >; +type SuperType = Omit< + BasicDialogProps, + "onSubmit" | "onInvalid" | "children" +> & + Omit, "hideSubmitButton">; export interface FormDialogProps< TFieldValues extends FieldValues = FieldValues, @@ -45,11 +41,9 @@ export interface FormDialogProps< // TODO: `formState.isSubmitting` doesn't update when auto submit enabled -function FormDialog< - TFieldValues extends FieldValues, - TContext, - SubmitReturnValue, ->(props: FormDialogProps) { +function FormDialog( + props: FormDialogProps, +) { const { config, onSubmit, @@ -126,13 +120,7 @@ function FormDialog< disabled={!isSubmitAllowed} loading={isSubmitting} loadingPosition="start" - startIcon={ - RA.isNotUndefined(submitButtonIcon) ? ( - submitButtonIcon - ) : ( - - ) - } + startIcon={RA.isNotUndefined(submitButtonIcon) ? submitButtonIcon : } > {submitButtonText || t("global.save")} diff --git a/webapp/src/components/common/dialogs/OkDialog.tsx b/webapp/src/components/common/dialogs/OkDialog.tsx index c8245eb533..dd441135f8 100644 --- a/webapp/src/components/common/dialogs/OkDialog.tsx +++ b/webapp/src/components/common/dialogs/OkDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,9 +12,9 @@ * This file is part of the Antares project. */ -import { Button, ButtonProps } from "@mui/material"; +import { Button, type ButtonProps } from "@mui/material"; import { useTranslation } from "react-i18next"; -import BasicDialog, { BasicDialogProps } from "./BasicDialog"; +import BasicDialog, { type BasicDialogProps } from "./BasicDialog"; export interface OkDialogProps extends Omit { okButtonText?: string; @@ -23,17 +23,14 @@ export interface OkDialogProps extends Omit { } function OkDialog(props: OkDialogProps) { - const { okButtonText, okButtonProps, onOk, onClose, ...basicDialogProps } = - props; + const { okButtonText, okButtonProps, onOk, onClose, ...basicDialogProps } = props; const { t } = useTranslation(); //////////////////////////////////////////////////////////////// // Event Handlers //////////////////////////////////////////////////////////////// - const handleClose = ( - ...args: Parameters> - ) => { + const handleClose = (...args: Parameters>) => { onOk(); onClose?.(...args); }; diff --git a/webapp/src/components/common/dialogs/UploadDialog.tsx b/webapp/src/components/common/dialogs/UploadDialog.tsx index c0dbf3d59c..fddb758ff5 100644 --- a/webapp/src/components/common/dialogs/UploadDialog.tsx +++ b/webapp/src/components/common/dialogs/UploadDialog.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,36 +14,25 @@ import { useEffect, useState } from "react"; import { Box, Button, LinearProgress, Paper, Typography } from "@mui/material"; -import { FileRejection, useDropzone, type Accept } from "react-dropzone"; +import { useDropzone, type Accept, type FileRejection } from "react-dropzone"; import { useTranslation } from "react-i18next"; -import BasicDialog, { BasicDialogProps } from "./BasicDialog"; +import BasicDialog, { type BasicDialogProps } from "./BasicDialog"; import { blue, grey } from "@mui/material/colors"; import useEnqueueErrorSnackbar from "../../../hooks/useEnqueueErrorSnackbar"; import { toError } from "../../../utils/fnUtils"; import { enqueueSnackbar } from "notistack"; -import { PromiseAny } from "../../../utils/tsUtils"; +import type { PromiseAny } from "../../../utils/tsUtils"; import FileDownloadIcon from "@mui/icons-material/FileDownload"; interface UploadDialogProps extends Omit { dropzoneText?: string; accept?: Accept; onCancel: VoidFunction; - onImport: ( - file: File, - setUploadProgress: (progress: number) => void, - ) => PromiseAny; + onImport: (file: File, setUploadProgress: (progress: number) => void) => PromiseAny; } function UploadDialog(props: UploadDialogProps) { - const { - dropzoneText, - accept, - onImport, - onCancel, - onClose, - title, - ...dialogProps - } = props; + const { dropzoneText, accept, onImport, onCancel, onClose, title, ...dialogProps } = props; const [t] = useTranslation(); const enqueueErrorSnackbar = useEnqueueErrorSnackbar(); const [isUploading, setIsUploading] = useState(false); @@ -129,11 +118,7 @@ function UploadDialog(props: UploadDialogProps) { {isUploading ? ( 2 && uploadProgress < 98 - ? "determinate" - : "indeterminate" - } + variant={uploadProgress > 2 && uploadProgress < 98 ? "determinate" : "indeterminate"} value={Math.max(0, Math.min(100, uploadProgress))} /> ) : ( diff --git a/webapp/src/components/common/fieldEditors/BooleanFE.tsx b/webapp/src/components/common/fieldEditors/BooleanFE.tsx index 56846ead2a..b65154ff17 100644 --- a/webapp/src/components/common/fieldEditors/BooleanFE.tsx +++ b/webapp/src/components/common/fieldEditors/BooleanFE.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,13 +12,12 @@ * This file is part of the Antares project. */ -import { SelectProps } from "@mui/material"; +import type { SelectProps } from "@mui/material"; import * as RA from "ramda-adjunct"; import reactHookFormSupport from "../../../hoc/reactHookFormSupport"; -import SelectFE, { SelectFEProps } from "./SelectFE"; +import SelectFE, { type SelectFEProps } from "./SelectFE"; -export interface BooleanFEProps - extends Omit { +export interface BooleanFEProps extends Omit { defaultValue?: boolean; value?: boolean; trueText?: string; @@ -44,16 +43,7 @@ function toValidEvent(event: T) { } function BooleanFE(props: BooleanFEProps) { - const { - defaultValue, - value, - trueText, - falseText, - onChange, - onBlur, - inputRef, - ...rest - } = props; + const { defaultValue, value, trueText, falseText, onChange, onBlur, inputRef, ...rest } = props; return ( - ); + const fieldEditor = ; return ( {label ? ( - + ) : ( fieldEditor )} diff --git a/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx b/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx index 1b2b8f9326..bbd1f78017 100644 --- a/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx +++ b/webapp/src/components/common/fieldEditors/CheckboxesTagsFE.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -14,16 +14,16 @@ import { Autocomplete, - AutocompleteProps, - AutocompleteValue, Checkbox, TextField, + type AutocompleteProps, + type AutocompleteValue, } from "@mui/material"; import CheckBoxOutlineBlankIcon from "@mui/icons-material/CheckBoxOutlineBlank"; import CheckBoxIcon from "@mui/icons-material/CheckBox"; -import { FieldPath, FieldValues } from "react-hook-form"; +import type { FieldPath, FieldValues } from "react-hook-form"; import reactHookFormSupport, { - ReactHookFormSupportProps, + type ReactHookFormSupportProps, } from "../../../hoc/reactHookFormSupport"; interface CheckboxesTagsFEProps< @@ -32,12 +32,7 @@ interface CheckboxesTagsFEProps< FreeSolo extends boolean | undefined = undefined, > extends Omit< AutocompleteProps, - | "multiple" - | "disableCloseOnSelect" - | "renderOption" - | "renderInput" - | "renderTags" - | "onChange" + "multiple" | "disableCloseOnSelect" | "renderOption" | "renderInput" | "renderTags" | "onChange" > { label?: string; error?: boolean; diff --git a/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx b/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx index 54bc1bc754..bae24de301 100644 --- a/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx +++ b/webapp/src/components/common/fieldEditors/ColorPickerFE/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,9 +12,9 @@ * This file is part of the Antares project. */ -import { Box, TextField, TextFieldProps, InputAdornment } from "@mui/material"; -import { ChangeEvent, useRef, useState } from "react"; -import { ColorResult, SketchPicker } from "react-color"; +import { Box, TextField, InputAdornment, type TextFieldProps } from "@mui/material"; +import { useRef, useState } from "react"; +import { SketchPicker, type ColorResult } from "react-color"; import SquareRoundedIcon from "@mui/icons-material/SquareRounded"; import { useClickAway, useKey, useUpdateEffect } from "react-use"; import { rgbToString, stringToRGB } from "./utils"; @@ -22,17 +22,13 @@ import { mergeSxProp } from "../../../../utils/muiUtils"; import { composeRefs } from "../../../../utils/reactUtils"; import reactHookFormSupport from "../../../../hoc/reactHookFormSupport"; -export type ColorPickerFEProps = Omit< - TextFieldProps, - "type" | "defaultChecked" -> & { +export type ColorPickerFEProps = Omit & { value?: string; // Format: R,G,B - ex: "255,255,255" defaultValue?: string; }; function ColorPickerFE(props: ColorPickerFEProps) { - const { value, defaultValue, onChange, sx, inputRef, ...textFieldProps } = - props; + const { value, defaultValue, onChange, sx, inputRef, ...textFieldProps } = props; const [currentColor, setCurrentColor] = useState(defaultValue || value || ""); const [isPickerOpen, setIsPickerOpen] = useState(false); const internalRef = useRef(); @@ -53,16 +49,14 @@ function ColorPickerFE(props: ColorPickerFEProps) { //////////////////////////////////////////////////////////////// const handleChange = ({ hex, rgb }: ColorResult) => { - setCurrentColor( - ["transparent", "#0000"].includes(hex) ? "" : rgbToString(rgb), - ); + setCurrentColor(["transparent", "#0000"].includes(hex) ? "" : rgbToString(rgb)); }; const handleChangeComplete = () => { onChange?.({ target: internalRef.current, type: "change", - } as ChangeEvent); + } as React.ChangeEvent); }; //////////////////////////////////////////////////////////////// diff --git a/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts b/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts index 8508a629cd..af70981097 100644 --- a/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts +++ b/webapp/src/components/common/fieldEditors/ColorPickerFE/utils.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -12,15 +12,13 @@ * This file is part of the Antares project. */ -import { ColorResult } from "react-color"; +import type { ColorResult } from "react-color"; export function stringToRGB(color: string): ColorResult["rgb"] | undefined { let sColor; try { - sColor = color - .split(",") - .map((elm) => parseInt(elm.replace(/\s+/g, ""), 10)); - } catch (e) { + sColor = color.split(",").map((elm) => parseInt(elm.replace(/\s+/g, ""), 10)); + } catch { sColor = undefined; } diff --git a/webapp/src/components/common/fieldEditors/ListFE/index.tsx b/webapp/src/components/common/fieldEditors/ListFE/index.tsx index 94082376a5..74219c784e 100644 --- a/webapp/src/components/common/fieldEditors/ListFE/index.tsx +++ b/webapp/src/components/common/fieldEditors/ListFE/index.tsx @@ -1,5 +1,5 @@ /** - * Copyright (c) 2024, RTE (https://www.rte-france.com) + * Copyright (c) 2025, RTE (https://www.rte-france.com) * * See AUTHORS.txt * @@ -31,27 +31,22 @@ import { import { useTranslation } from "react-i18next"; import RemoveCircleIcon from "@mui/icons-material/RemoveCircle"; import { useEffect, useId, useState } from "react"; -import { - DragDropContext, - Droppable, - Draggable, - DropResult, -} from "react-beautiful-dnd"; +import { DragDropContext, Droppable, Draggable, type DropResult } from "react-beautiful-dnd"; import DragHandleIcon from "@mui/icons-material/DragHandle"; import * as RA from "ramda-adjunct"; import { useUpdateEffect } from "react-use"; -import { FieldPath, FieldValues } from "react-hook-form"; +import type { FieldPath, FieldValues } from "react-hook-form"; import StringFE from "../StringFE"; import reactHookFormSupport, { - ReactHookFormSupportProps, + type ReactHookFormSupportProps, } from "../../../../hoc/reactHookFormSupport"; import { createFakeBlurEventHandler, createFakeChangeEventHandler, createFakeInputElement, - FakeBlurEventHandler, - FakeChangeEventHandler, - InputObject, + type FakeBlurEventHandler, + type FakeChangeEventHandler, + type InputObject, } from "../../../../utils/feUtils"; import { makeLabel, makeListItems } from "./utils"; @@ -91,9 +86,7 @@ function ListFE(props: ListFEProps) { } = props; const { t } = useTranslation(); - const [listItems, setListItems] = useState(() => - makeListItems(value || defaultValue || []), - ); + const [listItems, setListItems] = useState(() => makeListItems(value || defaultValue || [])); const [selectedOption, setSelectedOption] = useState(null); const droppableId = useId(); @@ -152,8 +145,7 @@ function ListFE(props: ListFEProps) { sx={[ { p: 2, - backgroundImage: - "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", + backgroundImage: "linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05))", }, !!error && { border: "1px solid", @@ -175,12 +167,7 @@ function ListFE(props: ListFEProps) { }} autoHighlight renderInput={(params) => ( - + )} />