From 813603207964963d134a842941e1398b85ae01d4 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Wed, 28 May 2025 19:37:33 -0400 Subject: [PATCH 01/36] feat: Replace existing webui codebase with new-webui. --- .../clp_package_utils/general.py | 22 +- .../clp_package_utils/scripts/start_clp.py | 112 +- .../clp_package_utils/scripts/stop_clp.py | 6 - .../clp-py-utils/clp_py_utils/clp_config.py | 23 - .../clp-py-utils/clp_py_utils/s3_utils.py | 4 +- .../log-viewer-webui/client/package-lock.json | 2398 ++++----- .../log-viewer-webui/client/package.json | 6 +- .../log-viewer-webui/client/src/AntdApp.tsx | 17 - .../log-viewer-webui/client/src/App.tsx | 19 +- .../log-viewer-webui/client/src/main.tsx | 9 +- .../SearchResults/SearchResultsTimeline.tsx | 3 +- .../client/src/ui/Loading.css | 24 - .../client/src/ui/Loading.tsx | 149 - .../client/src/ui/QueryStatus.tsx | 105 - .../package-template/src/etc/clp-config.yml | 5 - components/webui/.gitignore | 2 - components/webui/.meteor/.finished-upgraders | 19 - components/webui/.meteor/.gitignore | 1 - components/webui/.meteor/.id | 7 - components/webui/.meteor/packages | 19 - components/webui/.meteor/platforms | 2 - components/webui/.meteor/release | 1 - components/webui/.meteor/versions | 73 - components/webui/.meteorignore | 1 - components/webui/README.md | 7 - components/webui/client/main.css | 4 - components/webui/client/main.html | 15 - components/webui/client/main.jsx | 21 - components/webui/imports/api/constants.js | 12 - .../imports/api/ingestion/collections.js | 23 - .../webui/imports/api/ingestion/constants.js | 64 - .../ingestion/server/CompressionDbManager.js | 52 - .../api/ingestion/server/StatsDbManager.js | 87 - .../api/ingestion/server/publications.js | 232 - .../webui/imports/api/ingestion/types.js | 20 - .../api/search/SearchJobCollectionsManager.js | 51 - .../webui/imports/api/search/collections.js | 19 - .../webui/imports/api/search/constants.js | 135 - .../api/search/server/QueryJobsDbManager.js | 149 - .../imports/api/search/server/collections.js | 6 - .../imports/api/search/server/methods.js | 263 - .../imports/api/search/server/publications.js | 117 - components/webui/imports/api/search/types.js | 23 - components/webui/imports/ui/App.jsx | 92 - components/webui/imports/ui/App.scss | 19 - .../imports/ui/IngestView/IngestView.jsx | 51 - .../imports/ui/IngestView/IngestView.scss | 75 - .../webui/imports/ui/IngestView/Panel.jsx | 47 - .../IngestView/panels/Details/DetailsRow.jsx | 34 - .../ui/IngestView/panels/Details/index.jsx | 92 - .../panels/IngestionJobs/IngestionJobRow.jsx | 113 - .../panels/IngestionJobs/IngestionJobs.scss | 3 - .../panels/IngestionJobs/PlaceholderText.jsx | 34 - .../panels/IngestionJobs/PlaceholderText.scss | 3 - .../IngestView/panels/IngestionJobs/index.jsx | 64 - .../ui/IngestView/panels/SpaceSavings.jsx | 73 - .../SearchControlsCaseSensitivityCheck.jsx | 25 - .../SearchControlsCaseSensitivity/index.jsx | 51 - .../SearchControlsFilterDrawer.scss | 11 - .../SearchControlsFilterLabel.jsx | 18 - .../SearchControlsDatePicker.jsx | 25 - .../SearchControlsTimeRangeInput.scss | 10 - .../SearchControlsTimeRangeInput/index.jsx | 139 - .../SearchControlsFilterDrawer/index.jsx | 41 - .../ui/SearchView/SearchControls/index.jsx | 163 - .../SearchResultsHeader.scss | 11 - .../SearchResultsHeader/index.jsx | 91 - .../SearchResultsLoadSensor.jsx | 104 - .../SearchResultsLoadSensor.scss | 9 - .../SearchResultsTable.scss | 61 - .../SearchResultsTable/index.jsx | 188 - .../SearchResultsTimeline.scss | 5 - .../SearchResultsTimeline/index.jsx | 276 - .../ui/SearchView/SearchResults/index.jsx | 130 - .../imports/ui/SearchView/SearchStatus.jsx | 94 - .../imports/ui/SearchView/SearchStatus.scss | 26 - .../imports/ui/SearchView/SearchView.jsx | 351 -- .../webui/imports/ui/Sidebar/Sidebar.jsx | 70 - .../webui/imports/ui/Sidebar/Sidebar.scss | 91 - .../imports/ui/Sidebar/SidebarButton.jsx | 61 - .../imports/ui/bootstrap-customized.scss | 5 - components/webui/imports/ui/constants.js | 12 - components/webui/imports/utils/DbManager.js | 108 - components/webui/imports/utils/datetime.js | 172 - components/webui/imports/utils/logger.js | 147 - components/webui/imports/utils/misc.js | 120 - components/webui/imports/utils/mongo.js | 24 - components/webui/launcher.js | 111 - components/webui/linter/package-lock.json | 4494 ----------------- components/webui/linter/package.json | 14 - components/webui/package-lock.json | 2238 -------- components/webui/package.json | 66 - components/webui/server/main.js | 77 - components/webui/settings.json | 22 - components/webui/tests/main.js | 23 - components/webui/tests/misc.js | 42 - taskfile.yaml | 132 - taskfiles/lint.yaml | 56 +- 98 files changed, 1122 insertions(+), 13819 deletions(-) delete mode 100644 components/log-viewer-webui/client/src/AntdApp.tsx delete mode 100644 components/log-viewer-webui/client/src/ui/Loading.css delete mode 100644 components/log-viewer-webui/client/src/ui/Loading.tsx delete mode 100644 components/log-viewer-webui/client/src/ui/QueryStatus.tsx delete mode 100644 components/webui/.gitignore delete mode 100644 components/webui/.meteor/.finished-upgraders delete mode 100644 components/webui/.meteor/.gitignore delete mode 100644 components/webui/.meteor/.id delete mode 100644 components/webui/.meteor/packages delete mode 100644 components/webui/.meteor/platforms delete mode 100644 components/webui/.meteor/release delete mode 100644 components/webui/.meteor/versions delete mode 100644 components/webui/.meteorignore delete mode 100644 components/webui/README.md delete mode 100644 components/webui/client/main.css delete mode 100644 components/webui/client/main.html delete mode 100644 components/webui/client/main.jsx delete mode 100644 components/webui/imports/api/constants.js delete mode 100644 components/webui/imports/api/ingestion/collections.js delete mode 100644 components/webui/imports/api/ingestion/constants.js delete mode 100644 components/webui/imports/api/ingestion/server/CompressionDbManager.js delete mode 100644 components/webui/imports/api/ingestion/server/StatsDbManager.js delete mode 100644 components/webui/imports/api/ingestion/server/publications.js delete mode 100644 components/webui/imports/api/ingestion/types.js delete mode 100644 components/webui/imports/api/search/SearchJobCollectionsManager.js delete mode 100644 components/webui/imports/api/search/collections.js delete mode 100644 components/webui/imports/api/search/constants.js delete mode 100644 components/webui/imports/api/search/server/QueryJobsDbManager.js delete mode 100644 components/webui/imports/api/search/server/collections.js delete mode 100644 components/webui/imports/api/search/server/methods.js delete mode 100644 components/webui/imports/api/search/server/publications.js delete mode 100644 components/webui/imports/api/search/types.js delete mode 100644 components/webui/imports/ui/App.jsx delete mode 100644 components/webui/imports/ui/App.scss delete mode 100644 components/webui/imports/ui/IngestView/IngestView.jsx delete mode 100644 components/webui/imports/ui/IngestView/IngestView.scss delete mode 100644 components/webui/imports/ui/IngestView/Panel.jsx delete mode 100644 components/webui/imports/ui/IngestView/panels/Details/DetailsRow.jsx delete mode 100644 components/webui/imports/ui/IngestView/panels/Details/index.jsx delete mode 100644 components/webui/imports/ui/IngestView/panels/IngestionJobs/IngestionJobRow.jsx delete mode 100644 components/webui/imports/ui/IngestView/panels/IngestionJobs/IngestionJobs.scss delete mode 100644 components/webui/imports/ui/IngestView/panels/IngestionJobs/PlaceholderText.jsx delete mode 100644 components/webui/imports/ui/IngestView/panels/IngestionJobs/PlaceholderText.scss delete mode 100644 components/webui/imports/ui/IngestView/panels/IngestionJobs/index.jsx delete mode 100644 components/webui/imports/ui/IngestView/panels/SpaceSavings.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsCaseSensitivity/SearchControlsCaseSensitivityCheck.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsCaseSensitivity/index.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsFilterDrawer.scss delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsFilterLabel.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/SearchControlsDatePicker.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/SearchControlsTimeRangeInput.scss delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/index.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/index.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchControls/index.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/SearchResultsHeader/SearchResultsHeader.scss delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/SearchResultsHeader/index.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.scss delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsTable.scss delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/index.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/SearchResultsTimeline/SearchResultsTimeline.scss delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/SearchResultsTimeline/index.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchResults/index.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchStatus.jsx delete mode 100644 components/webui/imports/ui/SearchView/SearchStatus.scss delete mode 100644 components/webui/imports/ui/SearchView/SearchView.jsx delete mode 100644 components/webui/imports/ui/Sidebar/Sidebar.jsx delete mode 100644 components/webui/imports/ui/Sidebar/Sidebar.scss delete mode 100644 components/webui/imports/ui/Sidebar/SidebarButton.jsx delete mode 100644 components/webui/imports/ui/bootstrap-customized.scss delete mode 100644 components/webui/imports/ui/constants.js delete mode 100644 components/webui/imports/utils/DbManager.js delete mode 100644 components/webui/imports/utils/datetime.js delete mode 100644 components/webui/imports/utils/logger.js delete mode 100644 components/webui/imports/utils/misc.js delete mode 100644 components/webui/imports/utils/mongo.js delete mode 100644 components/webui/launcher.js delete mode 100644 components/webui/linter/package-lock.json delete mode 100644 components/webui/linter/package.json delete mode 100644 components/webui/package-lock.json delete mode 100644 components/webui/package.json delete mode 100644 components/webui/server/main.js delete mode 100644 components/webui/settings.json delete mode 100644 components/webui/tests/main.js delete mode 100644 components/webui/tests/misc.js diff --git a/components/clp-package-utils/clp_package_utils/general.py b/components/clp-package-utils/clp_package_utils/general.py index 0dc56c98ed..6166941bcb 100644 --- a/components/clp-package-utils/clp_package_utils/general.py +++ b/components/clp-package-utils/clp_package_utils/general.py @@ -15,7 +15,6 @@ CLP_DEFAULT_CREDENTIALS_FILE_PATH, CLPConfig, DB_COMPONENT_NAME, - LOG_VIEWER_WEBUI_COMPONENT_NAME, QUEUE_COMPONENT_NAME, REDIS_COMPONENT_NAME, REDUCER_COMPONENT_NAME, @@ -511,29 +510,12 @@ def validate_worker_config(clp_config: CLPConfig): def validate_webui_config( - clp_config: CLPConfig, logs_dir: pathlib.Path, settings_json_path: pathlib.Path + clp_config: CLPConfig, settings_json_path: pathlib.Path ): if not settings_json_path.exists(): raise ValueError( - f"{WEBUI_COMPONENT_NAME} {settings_json_path} is not a valid path to Meteor settings.json" + f"{WEBUI_COMPONENT_NAME} {settings_json_path} is not a valid path to settings.json" ) - try: - validate_path_could_be_dir(logs_dir) - except ValueError as ex: - raise ValueError(f"{WEBUI_COMPONENT_NAME} logs directory is invalid: {ex}") - validate_port(f"{WEBUI_COMPONENT_NAME}.port", clp_config.webui.host, clp_config.webui.port) - -def validate_log_viewer_webui_config(clp_config: CLPConfig, settings_json_path: pathlib.Path): - if not settings_json_path.exists(): - raise ValueError( - f"{WEBUI_COMPONENT_NAME} {settings_json_path} is not a valid path to settings.json" - ) - - validate_port( - f"{LOG_VIEWER_WEBUI_COMPONENT_NAME}.port", - clp_config.log_viewer_webui.host, - clp_config.log_viewer_webui.port, - ) diff --git a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py index 4e6df826cb..e0119f747f 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py @@ -23,7 +23,6 @@ CONTROLLER_TARGET_NAME, DB_COMPONENT_NAME, FILES_TABLE_SUFFIX, - LOG_VIEWER_WEBUI_COMPONENT_NAME, QUERY_JOBS_TABLE_NAME, QUERY_SCHEDULER_COMPONENT_NAME, QUERY_WORKER_COMPONENT_NAME, @@ -55,7 +54,6 @@ validate_and_load_queue_credentials_file, validate_and_load_redis_credentials_file, validate_db_config, - validate_log_viewer_webui_config, validate_queue_config, validate_redis_config, validate_reducer_config, @@ -841,103 +839,21 @@ def read_and_update_settings_json(settings_file_path: pathlib.Path, updates: Dic return settings_object -def start_webui(instance_id: str, clp_config: CLPConfig, mounts: CLPDockerMounts): - component_name = WEBUI_COMPONENT_NAME - logger.info(f"Starting {component_name}...") - - container_name = f"clp-{component_name}-{instance_id}" - if container_exists(container_name): - return - - webui_logs_dir = clp_config.logs_directory / component_name - container_webui_dir = CONTAINER_CLP_HOME / "var" / "www" / "webui" - node_path = str(container_webui_dir / "programs" / "server" / "npm" / "node_modules") - settings_json_path = get_clp_home() / "var" / "www" / "webui" / "settings.json" - - validate_webui_config(clp_config, webui_logs_dir, settings_json_path) - - # Create directories - webui_logs_dir.mkdir(exist_ok=True, parents=True) - - container_webui_logs_dir = pathlib.Path("/") / "var" / "log" / component_name - - # Read and update settings.json - clp_db_connection_params = clp_config.database.get_clp_connection_params_and_type(True) - table_prefix = clp_db_connection_params["table_prefix"] - meteor_settings_updates = { - "private": { - "SqlDbHost": clp_config.database.host, - "SqlDbPort": clp_config.database.port, - "SqlDbName": clp_config.database.name, - "SqlDbClpArchivesTableName": f"{table_prefix}{ARCHIVES_TABLE_SUFFIX}", - "SqlDbClpFilesTableName": f"{table_prefix}{FILES_TABLE_SUFFIX}", - "SqlDbCompressionJobsTableName": COMPRESSION_JOBS_TABLE_NAME, - "SqlDbQueryJobsTableName": QUERY_JOBS_TABLE_NAME, - }, - "public": { - "ClpStorageEngine": clp_config.package.storage_engine, - "LogViewerWebuiUrl": ( - f"http://{clp_config.log_viewer_webui.host}:{clp_config.log_viewer_webui.port}", - ), - }, - } - meteor_settings = read_and_update_settings_json(settings_json_path, meteor_settings_updates) - - # Start container - # fmt: off - container_cmd = [ - "docker", "run", - "-d", - "--network", "host", - "--name", container_name, - "--log-driver", "local", - "-u", f"{os.getuid()}:{os.getgid()}", - ] - # fmt: on - env_vars = [ - f"NODE_PATH={node_path}", - f"MONGO_URL={clp_config.results_cache.get_uri()}", - f"PORT={clp_config.webui.port}", - f"ROOT_URL=http://{clp_config.webui.host}", - f"METEOR_SETTINGS={json.dumps(meteor_settings)}", - f"CLP_DB_USER={clp_config.database.username}", - f"CLP_DB_PASS={clp_config.database.password}", - f"WEBUI_LOGS_DIR={container_webui_logs_dir}", - f"WEBUI_LOGGING_LEVEL={clp_config.webui.logging_level}", - ] - necessary_mounts = [ - mounts.clp_home, - DockerMount(DockerMountType.BIND, webui_logs_dir, container_webui_logs_dir), - ] - append_docker_options(container_cmd, necessary_mounts, env_vars) - container_cmd.append(clp_config.execution_container) - - node_cmd = [ - str(CONTAINER_CLP_HOME / "bin" / "node-14"), - str(container_webui_dir / "launcher.js"), - str(container_webui_dir / "main.js"), - ] - cmd = container_cmd + node_cmd - subprocess.run(cmd, stdout=subprocess.DEVNULL, check=True) - - logger.info(f"Started {component_name}.") - - -def start_log_viewer_webui( +def start_webui( instance_id: str, clp_config: CLPConfig, container_clp_config: CLPConfig, mounts: CLPDockerMounts, ): - component_name = LOG_VIEWER_WEBUI_COMPONENT_NAME + component_name = WEBUI_COMPONENT_NAME logger.info(f"Starting {component_name}...") container_name = f"clp-{component_name}-{instance_id}" if container_exists(container_name): return - container_log_viewer_webui_dir = CONTAINER_CLP_HOME / "var" / "www" / "log-viewer-webui" - node_path = str(container_log_viewer_webui_dir / "server" / "node_modules") + container_webui_dir = CONTAINER_CLP_HOME / "var" / "www" / "log-viewer-webui" + node_path = str(container_webui_dir / "server" / "node_modules") settings_json_path = ( get_clp_home() / "var" @@ -949,7 +865,7 @@ def start_log_viewer_webui( / "settings.json" ) - validate_log_viewer_webui_config(clp_config, settings_json_path) + validate_webui_config(clp_config, settings_json_path) # Read, update, and write back settings.json settings_json_updates = { @@ -961,10 +877,10 @@ def start_log_viewer_webui( "MongoDbPort": clp_config.results_cache.port, "MongoDbName": clp_config.results_cache.db_name, "MongoDbStreamFilesCollectionName": clp_config.results_cache.stream_collection_name, - "ClientDir": str(container_log_viewer_webui_dir / "client"), + "ClientDir": str(container_webui_dir / "client"), "StreamFilesDir": str(container_clp_config.stream_output.get_directory()), "StreamTargetUncompressedSize": container_clp_config.stream_output.target_uncompressed_size, - "LogViewerDir": str(container_log_viewer_webui_dir / "yscope-log-viewer"), + "LogViewerDir": str(container_webui_dir / "yscope-log-viewer"), } container_cmd_extra_opts = [] @@ -1005,8 +921,8 @@ def start_log_viewer_webui( necessary_env_vars = [ f"NODE_PATH={node_path}", - f"HOST={clp_config.log_viewer_webui.host}", - f"PORT={clp_config.log_viewer_webui.port}", + f"HOST={clp_config.webui.host}", + f"PORT={clp_config.webui.port}", f"CLP_DB_USER={clp_config.database.username}", f"CLP_DB_PASS={clp_config.database.password}", f"NODE_ENV=production", @@ -1023,7 +939,7 @@ def start_log_viewer_webui( necessary_env_vars.append(f"AWS_SECRET_ACCESS_KEY={credentials.secret_access_key}") else: aws_mount, aws_env_vars = generate_container_auth_options( - clp_config, LOG_VIEWER_WEBUI_COMPONENT_NAME + clp_config, WEBUI_COMPONENT_NAME ) if aws_mount: necessary_mounts.append(mounts.aws_config_dir) @@ -1034,7 +950,7 @@ def start_log_viewer_webui( node_cmd = [ str(CONTAINER_CLP_HOME / "bin" / "node-22"), - str(container_log_viewer_webui_dir / "server" / "dist" / "server" / "src" / "main.js"), + str(container_webui_dir / "server" / "dist" / "server" / "src" / "main.js"), ] cmd = container_cmd + node_cmd subprocess.run(cmd, stdout=subprocess.DEVNULL, check=True) @@ -1143,7 +1059,6 @@ def main(argv): reducer_server_parser = component_args_parser.add_parser(REDUCER_COMPONENT_NAME) add_num_workers_argument(reducer_server_parser) component_args_parser.add_parser(WEBUI_COMPONENT_NAME) - component_args_parser.add_parser(LOG_VIEWER_WEBUI_COMPONENT_NAME) parsed_args = args_parser.parse_args(argv[1:]) @@ -1171,7 +1086,6 @@ def main(argv): COMPRESSION_SCHEDULER_COMPONENT_NAME, QUERY_SCHEDULER_COMPONENT_NAME, WEBUI_COMPONENT_NAME, - LOG_VIEWER_WEBUI_COMPONENT_NAME, ): validate_and_load_db_credentials_file(clp_config, clp_home, True) if target in ( @@ -1267,9 +1181,7 @@ def main(argv): if target in (ALL_TARGET_NAME, REDUCER_COMPONENT_NAME): start_reducer(instance_id, clp_config, container_clp_config, num_workers, mounts) if target in (ALL_TARGET_NAME, WEBUI_COMPONENT_NAME): - start_webui(instance_id, clp_config, mounts) - if target in (ALL_TARGET_NAME, LOG_VIEWER_WEBUI_COMPONENT_NAME): - start_log_viewer_webui(instance_id, clp_config, container_clp_config, mounts) + start_webui(instance_id, clp_config, container_clp_config, mounts) except Exception as ex: if type(ex) == ValueError: diff --git a/components/clp-package-utils/clp_package_utils/scripts/stop_clp.py b/components/clp-package-utils/clp_package_utils/scripts/stop_clp.py index a55d7a7951..307eadaa75 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/stop_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/stop_clp.py @@ -11,7 +11,6 @@ COMPRESSION_WORKER_COMPONENT_NAME, CONTROLLER_TARGET_NAME, DB_COMPONENT_NAME, - LOG_VIEWER_WEBUI_COMPONENT_NAME, QUERY_SCHEDULER_COMPONENT_NAME, QUERY_WORKER_COMPONENT_NAME, QUEUE_COMPONENT_NAME, @@ -85,7 +84,6 @@ def main(argv): component_args_parser.add_parser(COMPRESSION_WORKER_COMPONENT_NAME) component_args_parser.add_parser(QUERY_WORKER_COMPONENT_NAME) component_args_parser.add_parser(WEBUI_COMPONENT_NAME) - component_args_parser.add_parser(LOG_VIEWER_WEBUI_COMPONENT_NAME) parsed_args = args_parser.parse_args(argv[1:]) @@ -104,7 +102,6 @@ def main(argv): ALL_TARGET_NAME, CONTROLLER_TARGET_NAME, DB_COMPONENT_NAME, - LOG_VIEWER_WEBUI_COMPONENT_NAME, ): validate_and_load_db_credentials_file(clp_config, clp_home, False) if target in ( @@ -133,9 +130,6 @@ def main(argv): already_exited_containers = [] force = parsed_args.force - if target in (ALL_TARGET_NAME, LOG_VIEWER_WEBUI_COMPONENT_NAME): - container_name = f"clp-{LOG_VIEWER_WEBUI_COMPONENT_NAME}-{instance_id}" - stop_running_container(container_name, already_exited_containers, force) if target in (ALL_TARGET_NAME, WEBUI_COMPONENT_NAME): container_name = f"clp-{WEBUI_COMPONENT_NAME}-{instance_id}" stop_running_container(container_name, already_exited_containers, force) diff --git a/components/clp-py-utils/clp_py_utils/clp_config.py b/components/clp-py-utils/clp_py_utils/clp_config.py index 4c3199501d..eccc2f3f0e 100644 --- a/components/clp-py-utils/clp_py_utils/clp_config.py +++ b/components/clp-py-utils/clp_py_utils/clp_config.py @@ -26,7 +26,6 @@ COMPRESSION_WORKER_COMPONENT_NAME = "compression_worker" QUERY_WORKER_COMPONENT_NAME = "query_worker" WEBUI_COMPONENT_NAME = "webui" -LOG_VIEWER_WEBUI_COMPONENT_NAME = "log_viewer_webui" # Target names ALL_TARGET_NAME = "" @@ -572,27 +571,6 @@ def dump_to_primitive_dict(self): class WebUi(BaseModel): host: str = "localhost" port: int = 4000 - logging_level: str = "INFO" - - @validator("host") - def validate_host(cls, field): - _validate_host(cls, field) - return field - - @validator("port") - def validate_port(cls, field): - _validate_port(cls, field) - return field - - @validator("logging_level") - def validate_logging_level(cls, field): - _validate_logging_level(cls, field) - return field - - -class LogViewerWebUi(BaseModel): - host: str = "localhost" - port: int = 3000 @validator("host") def validate_host(cls, field): @@ -621,7 +599,6 @@ class CLPConfig(BaseModel): compression_worker: CompressionWorker = CompressionWorker() query_worker: QueryWorker = QueryWorker() webui: WebUi = WebUi() - log_viewer_webui: LogViewerWebUi = LogViewerWebUi() credentials_file_path: pathlib.Path = CLP_DEFAULT_CREDENTIALS_FILE_PATH archive_output: ArchiveOutput = ArchiveOutput() diff --git a/components/clp-py-utils/clp_py_utils/s3_utils.py b/components/clp-py-utils/clp_py_utils/s3_utils.py index 3a41a89616..6b73df4536 100644 --- a/components/clp-py-utils/clp_py_utils/s3_utils.py +++ b/components/clp-py-utils/clp_py_utils/s3_utils.py @@ -14,7 +14,7 @@ COMPRESSION_SCHEDULER_COMPONENT_NAME, COMPRESSION_WORKER_COMPONENT_NAME, FsStorage, - LOG_VIEWER_WEBUI_COMPONENT_NAME, + WEBUI_COMPONENT_NAME, QUERY_SCHEDULER_COMPONENT_NAME, QUERY_WORKER_COMPONENT_NAME, S3Config, @@ -115,7 +115,7 @@ def generate_container_auth_options( ): output_storages_by_component_type = [clp_config.archive_output.storage] input_storage_needed = True - elif component_type in (LOG_VIEWER_WEBUI_COMPONENT_NAME,): + elif component_type in (WEBUI_COMPONENT_NAME,): output_storages_by_component_type = [clp_config.stream_output.storage] elif component_type in ( QUERY_SCHEDULER_COMPONENT_NAME, diff --git a/components/log-viewer-webui/client/package-lock.json b/components/log-viewer-webui/client/package-lock.json index 651525a990..825b1efa36 100644 --- a/components/log-viewer-webui/client/package-lock.json +++ b/components/log-viewer-webui/client/package-lock.json @@ -10,9 +10,6 @@ "license": "Apache-2.0", "dependencies": { "@ant-design/v5-patch-for-react-19": "^1.0.3", - "@emotion/react": "^11.14.0", - "@emotion/styled": "^11.14.0", - "@mui/joy": "^5.0.0-beta.51", "@sinclair/typebox": "^0.34.25", "antd": "^5.24.5", "axios": "^1.7.9", @@ -55,9 +52,9 @@ } }, "node_modules/@ant-design/colors": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.2.0.tgz", - "integrity": "sha512-bjTObSnZ9C/O8MB/B4OUtd/q9COomuJAR2SYfhxLyHvCKn4EKwCN3e+fWGMo7H5InAyV0wL17jdE9ALrdOW/6A==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.2.1.tgz", + "integrity": "sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==", "license": "MIT", "dependencies": { "@ant-design/fast-color": "^2.0.6" @@ -97,24 +94,6 @@ "react-dom": ">=16.9.0" } }, - "node_modules/@ant-design/cssinjs/node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", - "license": "MIT" - }, - "node_modules/@ant-design/cssinjs/node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", - "license": "MIT" - }, - "node_modules/@ant-design/cssinjs/node_modules/stylis": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", - "license": "MIT" - }, "node_modules/@ant-design/fast-color": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-2.0.6.tgz", @@ -184,23 +163,24 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.3.tgz", + "integrity": "sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==", "dev": true, "license": "MIT", "engines": { @@ -208,22 +188,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.3.tgz", + "integrity": "sha512-hyrN8ivxfvJ4i0fIJuV4EOlV0WDMz5Ui4StRTgVaAvWeiRCilXgwVvxJKtFQ3TKtHgJscB2YiXKGNJuVwhQMtA==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.3", + "@babel/parser": "^7.27.3", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.3", + "@babel/types": "^7.27.3", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -238,13 +218,6 @@ "url": "https://opencollective.com/babel" } }, - "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==", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -256,13 +229,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", - "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz", + "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/parser": "^7.27.3", + "@babel/types": "^7.27.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -272,14 +246,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -299,28 +273,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "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==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -330,9 +305,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "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==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, "license": "MIT", "engines": { @@ -340,27 +315,29 @@ } }, "node_modules/@babel/helper-string-parser": { - "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==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -368,26 +345,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", - "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.3.tgz", + "integrity": "sha512-h/eKy9agOya1IGuLaZ9tEUgz+uIRXcbtOhRtUyyMf8JFmn1iT13vnl/IGVWSkdOCG/pC57U4S1jnAabAavTMwg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", - "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz", + "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.9" + "@babel/types": "^7.27.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -397,13 +375,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", - "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -413,13 +391,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", - "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -429,42 +407,41 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", - "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.3.tgz", + "integrity": "sha512-7EYtGezsdiDMyY80+65EzwiGmcJqpmcZCojSXaRgdrBaGtWTgDZKq69cPIVped6MkIM78cTQ2GOiEYjwOlG4xw==", "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", - "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.3.tgz", + "integrity": "sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.3", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -476,190 +453,97 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", - "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@emotion/babel-plugin": { - "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.3.3", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/cache": { - "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.2", - "@emotion/weak-memoize": "^0.4.0", - "stylis": "4.2.0" - } - }, - "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==", - "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==", + "node_modules/@emnapi/core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", + "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@emotion/memoize": "^0.9.0" + "@emnapi/wasi-threads": "1.0.2", + "tslib": "^2.4.0" } }, - "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==", - "license": "MIT" - }, - "node_modules/@emotion/react": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", - "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.13.5", - "@emotion/cache": "^11.14.0", - "@emotion/serialize": "^1.3.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", - "@emotion/utils": "^1.4.2", - "@emotion/weak-memoize": "^0.4.0", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "tslib": "^2.4.0" } }, - "node_modules/@emotion/serialize": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", - "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", + "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@emotion/hash": "^0.9.2", - "@emotion/memoize": "^0.9.0", - "@emotion/unitless": "^0.10.0", - "@emotion/utils": "^1.4.2", - "csstype": "^3.0.2" + "tslib": "^2.4.0" } }, - "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==", + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", "license": "MIT" }, - "node_modules/@emotion/styled": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", - "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.13.5", - "@emotion/is-prop-valid": "^1.3.0", - "@emotion/serialize": "^1.3.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", - "@emotion/utils": "^1.4.2" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@emotion/unitless": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", - "license": "MIT" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "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.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==", + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", "license": "MIT" }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.49.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz", - "integrity": "sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==", + "version": "0.50.2", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz", + "integrity": "sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { + "@types/estree": "^1.0.6", + "@typescript-eslint/types": "^8.11.0", "comment-parser": "1.4.1", "esquery": "^1.6.0", "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", - "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", "cpu": [ "ppc64" ], @@ -674,9 +558,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", - "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", "cpu": [ "arm" ], @@ -691,9 +575,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", - "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", "cpu": [ "arm64" ], @@ -708,9 +592,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", - "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", "cpu": [ "x64" ], @@ -725,9 +609,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", - "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", "cpu": [ "arm64" ], @@ -742,9 +626,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", - "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", "cpu": [ "x64" ], @@ -759,9 +643,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", - "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", "cpu": [ "arm64" ], @@ -776,9 +660,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", - "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", "cpu": [ "x64" ], @@ -793,9 +677,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", - "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", "cpu": [ "arm" ], @@ -810,9 +694,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", - "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", "cpu": [ "arm64" ], @@ -827,9 +711,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", - "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", "cpu": [ "ia32" ], @@ -844,9 +728,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", - "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", "cpu": [ "loong64" ], @@ -861,9 +745,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", - "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", "cpu": [ "mips64el" ], @@ -878,9 +762,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", - "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", "cpu": [ "ppc64" ], @@ -895,9 +779,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", - "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", "cpu": [ "riscv64" ], @@ -912,9 +796,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", - "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", "cpu": [ "s390x" ], @@ -929,9 +813,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", - "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", "cpu": [ "x64" ], @@ -946,9 +830,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", - "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", "cpu": [ "arm64" ], @@ -963,9 +847,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", - "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", "cpu": [ "x64" ], @@ -980,9 +864,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", - "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", "cpu": [ "arm64" ], @@ -997,9 +881,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", - "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", "cpu": [ "x64" ], @@ -1014,9 +898,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", - "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", "cpu": [ "x64" ], @@ -1031,9 +915,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", - "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", "cpu": [ "arm64" ], @@ -1048,9 +932,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", - "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", "cpu": [ "ia32" ], @@ -1065,9 +949,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", - "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", "cpu": [ "x64" ], @@ -1082,9 +966,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "license": "MIT", "peer": true, @@ -1127,9 +1011,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -1168,10 +1052,21 @@ "node": "*" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", + "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", - "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -1183,9 +1078,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "peer": true, @@ -1248,14 +1143,17 @@ } }, "node_modules/@eslint/js": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", - "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz", + "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, "node_modules/@eslint/object-schema": { @@ -1270,72 +1168,20 @@ } }, "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==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", + "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.14.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/plugin-kit/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", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@floating-ui/core": { - "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.9" - } - }, - "node_modules/@floating-ui/dom": { - "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.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" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "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/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1393,9 +1239,9 @@ } }, "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==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -1411,6 +1257,7 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -1425,6 +1272,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==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1434,6 +1282,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==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1443,12 +1292,14 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, "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==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1461,231 +1312,18 @@ "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", "license": "MIT" }, - "node_modules/@mui/base": { - "version": "5.0.0-beta.40-0", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40-0.tgz", - "integrity": "sha512-hG3atoDUxlvEy+0mqdMpWd04wca8HKr2IHjW/fAjlkCHQolSLazhZM46vnHjOf15M4ESu25mV/3PgjczyjVM4w==", - "deprecated": "This package has been replaced by @base-ui-components/react", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@floating-ui/react-dom": "^2.0.8", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.12", - "@popperjs/core": "^2.11.8", - "clsx": "^2.1.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/core-downloads-tracker": { - "version": "5.16.14", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.14.tgz", - "integrity": "sha512-sbjXW+BBSvmzn61XyTMun899E7nGPTXwqD9drm1jBUAvWEhJpPFIRxwQQiATWZnd9rvdxtnhhdsDxEGWI0jxqA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - } - }, - "node_modules/@mui/joy": { - "version": "5.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@mui/joy/-/joy-5.0.0-beta.51.tgz", - "integrity": "sha512-0M+aSSm291CnVLIdQP1di538zD/kekRYSzm+5hWattpGiXvUAYRQMKV4XFcs/dCsr0tkMpVT3dIdmbu6YP2r7g==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.40-0", - "@mui/core-downloads-tracker": "^5.16.12", - "@mui/system": "^5.16.12", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.12", - "clsx": "^2.1.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.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": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/private-theming": { - "version": "5.16.14", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.14.tgz", - "integrity": "sha512-12t7NKzvYi819IO5IapW2BcR33wP/KAVrU8d7gLhGHoAmhDxyXlRoKiRij3TOD8+uzk0B6R9wHUNKi4baJcRNg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.14", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/styled-engine": { - "version": "5.16.14", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.14.tgz", - "integrity": "sha512-UAiMPZABZ7p8mUW4akDV6O7N3+4DatStpXMZwPlt+H/dA0lt67qawN021MNND+4QTpjaiMYxbhKZeQcyWCbuKw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.13.5", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } - } - }, - "node_modules/@mui/system": { - "version": "5.16.14", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.14.tgz", - "integrity": "sha512-KBxMwCb8mSIABnKvoGbvM33XHyT+sN0BzEBG+rsSc0lLQGzs7127KWkCA6/H8h6LZ00XpBEME5MAj8mZLiQ1tw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.14", - "@mui/styled-engine": "^5.16.14", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.14", - "clsx": "^2.1.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/types": { - "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" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/utils": { - "version": "5.16.14", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.14.tgz", - "integrity": "sha512-wn1QZkRzSmeXD1IguBVvJJHV3s6rxJrfb6YuC9Kk6Noh9f8Fb54nUs5JRkKm+BOerRhj5fLg05Dhx/H3Ofb8Mg==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.10.tgz", + "integrity": "sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==", + "dev": true, "license": "MIT", + "optional": true, + "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": "^19.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.9.0" } }, "node_modules/@nodelib/fs.scandir": { @@ -1731,37 +1369,13 @@ }, "node_modules/@nolyfill/is-core-module": { "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "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==", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "peer": true, + "engines": { + "node": ">=12.4.0" } }, "node_modules/@rc-component/async-validator": { @@ -1913,10 +1527,17 @@ "react-dom": ">=16.9.0" } }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz", + "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", - "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", + "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", "cpu": [ "arm" ], @@ -1928,9 +1549,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", - "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", + "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", "cpu": [ "arm64" ], @@ -1942,9 +1563,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", - "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", + "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", "cpu": [ "arm64" ], @@ -1956,9 +1577,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", - "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", + "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", "cpu": [ "x64" ], @@ -1970,9 +1591,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", - "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", + "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", "cpu": [ "arm64" ], @@ -1984,9 +1605,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", - "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", + "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", "cpu": [ "x64" ], @@ -1998,9 +1619,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", - "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", + "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", "cpu": [ "arm" ], @@ -2012,9 +1633,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", - "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", + "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", "cpu": [ "arm" ], @@ -2026,9 +1647,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", - "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", + "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", "cpu": [ "arm64" ], @@ -2040,9 +1661,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", - "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", + "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", "cpu": [ "arm64" ], @@ -2054,9 +1675,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", - "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", + "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", "cpu": [ "loong64" ], @@ -2068,9 +1689,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", - "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", + "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", "cpu": [ "ppc64" ], @@ -2082,9 +1703,23 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", - "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", + "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", + "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", "cpu": [ "riscv64" ], @@ -2096,9 +1731,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", - "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", + "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", "cpu": [ "s390x" ], @@ -2110,9 +1745,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", - "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", + "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", "cpu": [ "x64" ], @@ -2124,9 +1759,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", - "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", + "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", "cpu": [ "x64" ], @@ -2138,9 +1773,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", - "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", + "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", "cpu": [ "arm64" ], @@ -2152,9 +1787,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", - "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", + "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", "cpu": [ "ia32" ], @@ -2166,9 +1801,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", - "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", + "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", "cpu": [ "x64" ], @@ -2188,9 +1823,9 @@ "peer": true }, "node_modules/@sinclair/typebox": { - "version": "0.34.25", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.25.tgz", - "integrity": "sha512-gu+tdy9WZIRulrR4CAcGXZAAixwakKszkUXudMJ4EhtNflBEify5Pm5vnVEVqdmMkxnT4tcdfJps5XYqaNeF9Q==", + "version": "0.34.33", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.33.tgz", + "integrity": "sha512-5HAV9exOMcXRUxo+9iYB5n09XxzCXnfy4VTNW4xnDv+FgjzAGY989C28BIdljKqmF+ZltUwujE3aossvcVtq6g==", "license": "MIT" }, "node_modules/@socket.io/component-emitter": { @@ -2220,6 +1855,18 @@ "eslint": ">=8.40.0" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -2235,9 +1882,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -2256,25 +1903,19 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "license": "MIT" - }, "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==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "devOptional": true, "license": "MIT" }, @@ -2309,22 +1950,10 @@ "license": "MIT", "peer": true }, - "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==", - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "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/react": { - "version": "19.0.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", - "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz", + "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==", "devOptional": true, "license": "MIT", "dependencies": { @@ -2332,9 +1961,9 @@ } }, "node_modules/@types/react-dom": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", - "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", + "version": "19.1.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", + "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2629,16 +2258,36 @@ "typescript": ">=4.2.0" } }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.0.tgz", + "integrity": "sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.33.0", + "@typescript-eslint/types": "^8.33.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.0.tgz", + "integrity": "sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1" + "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/visitor-keys": "8.33.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2648,6 +2297,24 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.0.tgz", + "integrity": "sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/@typescript-eslint/type-utils": { "version": "8.19.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz", @@ -2794,9 +2461,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.0.tgz", + "integrity": "sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==", "dev": true, "license": "MIT", "peer": true, @@ -2809,21 +2476,23 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.0.tgz", + "integrity": "sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@typescript-eslint/project-service": "8.33.0", + "@typescript-eslint/tsconfig-utils": "8.33.0", + "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/visitor-keys": "8.33.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2833,21 +2502,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", - "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.0.tgz", + "integrity": "sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/typescript-estree": "8.24.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.33.0", + "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/typescript-estree": "8.33.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2858,18 +2527,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.0.tgz", + "integrity": "sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/types": "8.33.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -2880,18 +2549,277 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.6.tgz", + "integrity": "sha512-dDhh//8GrF4PynBubCUvnJ/mG2LStUEiaWqML4SAhz2iZvG769d6e25MoJBamDR251FBT3ULpXGJ7Mdnysp27w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.6.tgz", + "integrity": "sha512-u1Avp0HPAulQHMwgBJaHXIcao0LWwxF5/pd3H7DhldIFd2o3B2xVjXiqslSRpARL2b0QRdAdUf8+IAy6RlrvgQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.7.6.tgz", + "integrity": "sha512-nnjHghvIxEWvym6+ToAVmiXO11c+25p1E7CAQa/1uJTjcRhJTpEUKNbEWGO9tsxxIpBv1dfXaOA3gsJz5eBAjg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.7.6.tgz", + "integrity": "sha512-96y5xFahjyUwk1om2FRVkzXHTtgmi+6MUO9iMhyb/W/9v05z1wawgj7v4j9TPwXo/f10cDKty4Aao3Fufcu2Cg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.7.6.tgz", + "integrity": "sha512-tyHD5mKRZpHPVg13a16a0X8wJ6Avtfecqg1gMlGB/MXOlvrJJ6EKzdWyUPi5GZUtT+JWV/NVTPLvvC/Hzxo3aw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.7.6.tgz", + "integrity": "sha512-rVHWGBVbhBrWYQl0y8sObTkCqSXtLAa8srG1u21S/IPGciOP0Djq7ykih5TeUtj0nAktANsiK2g/ST8UPhfbiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.7.6.tgz", + "integrity": "sha512-6a7res5yz781YPZCkilDf34cQyNOCaHTGiUR8Z5U+hlrOChGPaciz4IpUpO1x2BWiBvbyIC9Janh/ujel9bo3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.7.6.tgz", + "integrity": "sha512-MtejOT0dfnupO9Tja6GtakFCe1FA7yY3tv6JM+oCFpChSCfJ/G87305AJyC0WZvdOUnPFh6hIMRpEjZAWxssyw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.6.tgz", + "integrity": "sha512-urwxUzOqU7KKZs5KyTTFZIztzpNBHmxgO24nxaaD8lhESzC1ng1zq+gP7CKHZmQF2t3NMTdcnrXc86XYXZcBwQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.6.tgz", + "integrity": "sha512-uqKOYPHRs+XUvq1+7ydgv6V42pMpzSJyuV6Y/R5FJUUuV2gJ54xhR+e5NqqS7WvWHZTDZ895P1fXejoooUfWgw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.7.6.tgz", + "integrity": "sha512-WAjhxt3hypzJf5vk2Zut/ebvuXYEOFTi45SqqkoShU9p40IEeYM2AoKC6NNo3/5CIFxR5iaIHOetlJF+iWAMIQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.7.6.tgz", + "integrity": "sha512-qsuxl8zUdwWXUlMa8zUAnonye/j+2k3QfcSXkW9bAZ0BcMLDZ/7uqXsAmk+7fP1gzv57AhCDpOcFSIsP4eSPEA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.7.6.tgz", + "integrity": "sha512-5xg1/XpaJP6y5t4gAIHO6LVvd3xpkWXMBWk1lEUjh9oXfkxY9uoEd6gYJ5zj1dhiGy8uc//TG80Gnu3bqE4gsg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.7.6.tgz", + "integrity": "sha512-s5QPe0XWHDY0rb+ywbwGqZ24WH1fLpSeakM+M+up58My5T2LsScoJpqN60KgaYRJpumabqcAcczL/2LEWL6bQA==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.10" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.7.6.tgz", + "integrity": "sha512-lzYMuug2XyxY+Ptw0LA5sNmF3WY+IefI1IMtws3y3G0EkYnqidhEi2+7eqtEiYAxPNo9VerQNfXKJd3bIuntPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.7.6.tgz", + "integrity": "sha512-ysjUtTmUsgFMZqkMovWBr43izkC0kQPbW8V1Ln70FSAE7cVHCVf7PxIfllgQwLjjsYKKOVuq7iWe8G9mJlCk4A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.7.6.tgz", + "integrity": "sha512-/1kM+r9G86s0ZLk2ej0MuU3hJQGmnawAA1JPIhcVMkZCtxK/pJzNtzPms3vDwVxbbwho6ExRcVLoA4h0zwzVmA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, "node_modules/@vitejs/plugin-react": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", - "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.0.tgz", + "integrity": "sha512-JuLWaEqypaJmOJPLWwO335Ig6jSgC1FTONCWAxnqcQthLTK/Yc9aH6hr9z/87xciejbQcnP3GnA1FWUSWeXaeg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.26.0", + "@babel/core": "^7.26.10", "@babel/plugin-transform-react-jsx-self": "^7.25.9", "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@rolldown/pluginutils": "1.0.0-beta.9", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.2" + "react-refresh": "^0.17.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -2901,9 +2829,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "license": "MIT", "peer": true, @@ -2961,12 +2889,12 @@ } }, "node_modules/antd": { - "version": "5.24.5", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.24.5.tgz", - "integrity": "sha512-1lAv/G+9ewQanyoAo3JumQmIlVxwo5QwWGb6QCHYc40Cq0NxC/EzITcjsgq1PSaTUpLkKq8A2l7Fjtu47vqQBg==", + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.25.3.tgz", + "integrity": "sha512-tBBcAFRjmWM3sitxrL/FEbQL+MTQntYY5bGa5c1ZZZHXWCynkhS3Ch/gy25mGMUY1M/9Uw3pH029v/RGht1x3w==", "license": "MIT", "dependencies": { - "@ant-design/colors": "^7.2.0", + "@ant-design/colors": "^7.2.1", "@ant-design/cssinjs": "^1.23.0", "@ant-design/cssinjs-utils": "^1.1.3", "@ant-design/fast-color": "^2.0.6", @@ -2981,37 +2909,37 @@ "classnames": "^2.5.1", "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.11", - "rc-cascader": "~3.33.1", + "rc-cascader": "~3.34.0", "rc-checkbox": "~3.5.0", "rc-collapse": "~3.9.0", "rc-dialog": "~9.6.0", "rc-drawer": "~7.2.0", "rc-dropdown": "~4.2.1", "rc-field-form": "~2.7.0", - "rc-image": "~7.11.1", - "rc-input": "~1.7.3", - "rc-input-number": "~9.4.0", - "rc-mentions": "~2.19.1", + "rc-image": "~7.12.0", + "rc-input": "~1.8.0", + "rc-input-number": "~9.5.0", + "rc-mentions": "~2.20.0", "rc-menu": "~9.16.1", "rc-motion": "^2.9.5", - "rc-notification": "~5.6.3", + "rc-notification": "~5.6.4", "rc-pagination": "~5.1.0", "rc-picker": "~4.11.3", "rc-progress": "~4.0.0", "rc-rate": "~2.13.1", "rc-resize-observer": "^1.4.3", "rc-segmented": "~2.7.0", - "rc-select": "~14.16.6", + "rc-select": "~14.16.8", "rc-slider": "~11.1.8", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", - "rc-table": "~7.50.4", - "rc-tabs": "~15.5.1", - "rc-textarea": "~1.9.0", + "rc-table": "~7.50.5", + "rc-tabs": "~15.6.1", + "rc-textarea": "~1.10.0", "rc-tooltip": "~6.4.0", "rc-tree": "~5.13.1", "rc-tree-select": "~5.27.0", - "rc-upload": "~4.8.1", + "rc-upload": "~4.9.0", "rc-util": "^5.44.4", "scroll-into-view-if-needed": "^3.1.0", "throttle-debounce": "^5.0.2" @@ -3107,19 +3035,20 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3244,9 +3173,9 @@ } }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -3254,21 +3183,6 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/babel-plugin-macros": { - "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", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3303,9 +3217,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", "dev": true, "funding": [ { @@ -3323,10 +3237,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -3369,15 +3283,15 @@ } }, "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==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -3390,15 +3304,17 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001700", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", - "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "version": "1.0.30001718", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", + "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", "dev": true, "funding": [ { @@ -3508,15 +3424,6 @@ "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" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3587,9 +3494,10 @@ "peer": true }, "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==", + "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==", + "dev": true, "license": "MIT" }, "node_modules/cookie": { @@ -3610,31 +3518,6 @@ "toggle-selection": "^1.0.6" } }, - "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", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cosmiconfig/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" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -3721,9 +3604,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -3821,9 +3704,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.102", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", - "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", + "version": "1.5.160", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.160.tgz", + "integrity": "sha512-8yQk54/CoCQT8GX3zuxqPBwMAQuIr6dWI/qO8Aah/JAZwB5XmCbEElsqb1n4pzc2vpkTdfc/kbyNPJOjswfbgg==", "dev": true, "license": "ISC" }, @@ -3866,34 +3749,10 @@ "node": ">=10.0.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "version": "1.23.10", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.10.tgz", + "integrity": "sha512-MtUbM072wlJNyeYAe0mhzrD+M6DIJa96CZAOBBrhDbgKnB4MApIKefcyAB1eOdYn8cUNZgvwBvEzdoAYsxgEIw==", "dev": true, "license": "MIT", "peer": true, @@ -3902,18 +3761,18 @@ "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "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-object-atoms": "^1.1.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-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -3929,13 +3788,13 @@ "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", @@ -3948,7 +3807,7 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -4004,14 +3863,6 @@ "node": ">= 0.4" } }, - "node_modules/es-module-lexer": { - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -4073,9 +3924,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", - "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "devOptional": true, "hasInstallScript": true, "license": "MIT", @@ -4086,31 +3937,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.1", - "@esbuild/android-arm": "0.25.1", - "@esbuild/android-arm64": "0.25.1", - "@esbuild/android-x64": "0.25.1", - "@esbuild/darwin-arm64": "0.25.1", - "@esbuild/darwin-x64": "0.25.1", - "@esbuild/freebsd-arm64": "0.25.1", - "@esbuild/freebsd-x64": "0.25.1", - "@esbuild/linux-arm": "0.25.1", - "@esbuild/linux-arm64": "0.25.1", - "@esbuild/linux-ia32": "0.25.1", - "@esbuild/linux-loong64": "0.25.1", - "@esbuild/linux-mips64el": "0.25.1", - "@esbuild/linux-ppc64": "0.25.1", - "@esbuild/linux-riscv64": "0.25.1", - "@esbuild/linux-s390x": "0.25.1", - "@esbuild/linux-x64": "0.25.1", - "@esbuild/netbsd-arm64": "0.25.1", - "@esbuild/netbsd-x64": "0.25.1", - "@esbuild/openbsd-arm64": "0.25.1", - "@esbuild/openbsd-x64": "0.25.1", - "@esbuild/sunos-x64": "0.25.1", - "@esbuild/win32-arm64": "0.25.1", - "@esbuild/win32-ia32": "0.25.1", - "@esbuild/win32-x64": "0.25.1" + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" } }, "node_modules/escalade": { @@ -4127,7 +3978,9 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -4136,23 +3989,24 @@ } }, "node_modules/eslint": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", - "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz", + "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.11.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.20.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.27.0", + "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -4160,7 +4014,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -4242,26 +4096,26 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.8.1.tgz", - "integrity": "sha512-qw5TPA12HTmb9CkcuiNrFtwhM1ae2FWysLeRrTbQ+/JKS///gbL3fQ5LRhAZnzkcqkScOvkB5Y5o+xgyQz1VVg==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", "dev": true, "license": "ISC", "peer": true, "dependencies": { "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.3.7", - "enhanced-resolve": "^5.15.0", + "debug": "^4.4.0", "get-tsconfig": "^4.10.0", - "is-bun-module": "^1.0.2", - "stable-hash": "^0.0.4", - "tinyglobby": "^0.2.10" + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + "url": "https://opencollective.com/eslint-import-resolver-typescript" }, "peerDependencies": { "eslint": "*", @@ -4408,24 +4262,23 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.6.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.3.tgz", - "integrity": "sha512-NxbJyt1M5zffPcYZ8Nb53/8nnbIScmiLAMdoe0/FAszwb7lcSiX3iYBTsuF7RV84dZZJC8r3NghomrUXsmWvxQ==", + "version": "50.6.17", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.17.tgz", + "integrity": "sha512-hq+VQylhd12l8qjexyriDsejZhqiP33WgMTy2AmaGZ9+MrMWVqPECsM87GPxgHfQn0zw+YTuhqjUfk1f+q67aQ==", "dev": true, "license": "BSD-3-Clause", "peer": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.49.0", + "@es-joy/jsdoccomment": "~0.50.1", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", "debug": "^4.3.6", "escape-string-regexp": "^4.0.0", "espree": "^10.1.0", "esquery": "^1.6.0", - "parse-imports": "^2.1.1", + "parse-imports-exports": "^0.2.4", "semver": "^7.6.3", - "spdx-expression-parse": "^4.0.0", - "synckit": "^0.9.1" + "spdx-expression-parse": "^4.0.0" }, "engines": { "node": ">=18" @@ -4453,9 +4306,9 @@ } }, "node_modules/eslint-plugin-react": { - "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==", + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, "license": "MIT", "peer": true, @@ -4470,7 +4323,7 @@ "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.8", + "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", @@ -4487,9 +4340,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", - "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "peer": true, @@ -4579,9 +4432,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -4762,9 +4615,9 @@ "peer": true }, "node_modules/fastq": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", - "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "peer": true, @@ -4786,12 +4639,11 @@ } }, "node_modules/fdir": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", - "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", - "dev": true, + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", + "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -4829,12 +4681,6 @@ "node": ">=8" } }, - "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==", - "license": "MIT" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -5004,17 +4850,17 @@ } }, "node_modules/get-intrinsic": { - "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==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -5060,9 +4906,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", "dev": true, "license": "MIT", "peer": true, @@ -5137,14 +4983,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "dev": true, - "license": "ISC", - "peer": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -5299,21 +5137,6 @@ "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", "license": "CC0-1.0" }, - "node_modules/hoist-non-react-statics": { - "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" - } - }, - "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==", - "license": "MIT" - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -5329,7 +5152,9 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5411,12 +5236,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "license": "MIT" - }, "node_modules/is-async-function": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", @@ -5474,14 +5293,14 @@ } }, "node_modules/is-bun-module": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz", - "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "semver": "^7.6.3" + "semver": "^7.7.1" } }, "node_modules/is-callable": { @@ -5502,7 +5321,9 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hasown": "^2.0.2" }, @@ -5868,6 +5689,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -5899,6 +5721,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -5915,12 +5738,6 @@ "license": "MIT", "peer": true }, - "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==", - "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", @@ -6002,12 +5819,6 @@ "node": ">= 0.8.0" } }, - "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==", - "license": "MIT" - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -6037,7 +5848,9 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -6201,6 +6014,23 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-postinstall": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz", + "integrity": "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6220,7 +6050,9 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6273,16 +6105,17 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -6420,7 +6253,9 @@ "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, "license": "MIT", + "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -6446,38 +6281,24 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/parse-imports": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz", - "integrity": "sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==", + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", "dev": true, - "license": "Apache-2.0 AND MIT", + "license": "MIT", "peer": true, "dependencies": { - "es-module-lexer": "^1.5.3", - "slashes": "^3.0.12" - }, - "engines": { - "node": ">= 18" + "parse-statements": "1.0.11" } }, - "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==", + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, "license": "MIT", - "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" - } + "peer": true }, "node_modules/path-exists": { "version": "4.0.0", @@ -6505,30 +6326,23 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "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==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } + "peer": true }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "devOptional": true, "license": "ISC" }, "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, + "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -6600,19 +6414,15 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, - "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==", - "license": "MIT" - }, "node_modules/property-information": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", @@ -6666,9 +6476,9 @@ "peer": true }, "node_modules/rc-cascader": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.33.1.tgz", - "integrity": "sha512-Kyl4EJ7ZfCBuidmZVieegcbFw0RcU5bHHSbtEdmuLYd0fYHCAiYKZ6zon7fWAVyC6rWWOOib0XKdTSf7ElC9rg==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.34.0.tgz", + "integrity": "sha512-KpXypcvju9ptjW9FaN2NFcA2QH9E9LHKq169Y0eWtH4e/wHQ5Wh5qZakAgvb8EKZ736WZ3B0zLLOBsrsja5Dag==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.7", @@ -6782,9 +6592,9 @@ } }, "node_modules/rc-image": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.11.1.tgz", - "integrity": "sha512-XuoWx4KUXg7hNy5mRTy1i8c8p3K8boWg6UajbHpDXS5AlRVucNfTi5YxTtPBTBzegxAZpvuLfh3emXFt6ybUdA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.12.0.tgz", + "integrity": "sha512-cZ3HTyyckPnNnUb9/DRqduqzLfrQRyi+CdHjdqgsyDpI3Ln5UX1kXnAhPBSJj9pVRzwRFgqkN7p9b6HBDjmu/Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.2", @@ -6800,9 +6610,9 @@ } }, "node_modules/rc-input": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.7.3.tgz", - "integrity": "sha512-A5w4egJq8+4JzlQ55FfQjDnPvOaAbzwC3VLOAdOytyek3TboSOP9qxN+Gifup+shVXfvecBLBbWBpWxmk02SWQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.8.0.tgz", + "integrity": "sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.1", @@ -6815,15 +6625,15 @@ } }, "node_modules/rc-input-number": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.4.0.tgz", - "integrity": "sha512-Tiy4DcXcFXAf9wDhN8aUAyMeCLHJUHA/VA/t7Hj8ZEx5ETvxG7MArDOSE6psbiSCo+vJPm4E3fGN710ITVn6GA==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.5.0.tgz", + "integrity": "sha512-bKaEvB5tHebUURAEXw35LDcnRZLq3x1k7GxfAqBMzmpHkDGzjAtnUL8y4y5N15rIFIg5IJgwr211jInl3cipag==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/mini-decimal": "^1.0.1", "classnames": "^2.2.5", - "rc-input": "~1.7.1", + "rc-input": "~1.8.0", "rc-util": "^5.40.1" }, "peerDependencies": { @@ -6832,17 +6642,17 @@ } }, "node_modules/rc-mentions": { - "version": "2.19.1", - "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.19.1.tgz", - "integrity": "sha512-KK3bAc/bPFI993J3necmaMXD2reZTzytZdlTvkeBbp50IGH1BDPDvxLdHDUrpQx2b2TGaVJsn+86BvYa03kGqA==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.20.0.tgz", + "integrity": "sha512-w8HCMZEh3f0nR8ZEd466ATqmXFCMGMN5UFCzEUL0bM/nGw/wOS2GgRzKBcm19K++jDyuWCOJOdgcKGXU3fXfbQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.22.5", "@rc-component/trigger": "^2.0.0", "classnames": "^2.2.6", - "rc-input": "~1.7.1", + "rc-input": "~1.8.0", "rc-menu": "~9.16.0", - "rc-textarea": "~1.9.0", + "rc-textarea": "~1.10.0", "rc-util": "^5.34.1" }, "peerDependencies": { @@ -6884,9 +6694,9 @@ } }, "node_modules/rc-notification": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.3.tgz", - "integrity": "sha512-42szwnn8VYQoT6GnjO00i1iwqV9D1TTMvxObWsuLwgl0TsOokzhkYiufdtQBsJMFjJravS1hfDKVMHLKLcPE4g==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.4.tgz", + "integrity": "sha512-KcS4O6B4qzM3KH7lkwOB7ooLPZ4b6J+VMmQgT51VZCeEcmghdeR4IrMcFq0LG+RPdnbe/ArT086tGM8Snimgiw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -7038,9 +6848,9 @@ } }, "node_modules/rc-select": { - "version": "14.16.6", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.16.6.tgz", - "integrity": "sha512-YPMtRPqfZWOm2XGTbx5/YVr1HT0vn//8QS77At0Gjb3Lv+Lbut0IORJPKLWu1hQ3u4GsA0SrDzs7nI8JG7Zmyg==", + "version": "14.16.8", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.16.8.tgz", + "integrity": "sha512-NOV5BZa1wZrsdkKaiK7LHRuo5ZjZYMDxPP6/1+09+FB4KoNi8jcG1ZqLE3AVCxEsYMBe65OBx71wFoHRTP3LRg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -7111,9 +6921,9 @@ } }, "node_modules/rc-table": { - "version": "7.50.4", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.4.tgz", - "integrity": "sha512-Y+YuncnQqoS5e7yHvfvlv8BmCvwDYDX/2VixTBEhkMDk9itS9aBINp4nhzXFKiBP/frG4w0pS9d9Rgisl0T1Bw==", + "version": "7.50.5", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.5.tgz", + "integrity": "sha512-FDZu8aolhSYd3v9KOc3lZOVAU77wmRRu44R0Wfb8Oj1dXRUsloFaXMSl6f7yuWZUxArJTli7k8TEOX2mvhDl4A==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -7132,9 +6942,9 @@ } }, "node_modules/rc-tabs": { - "version": "15.5.1", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.5.1.tgz", - "integrity": "sha512-yiWivLAjEo5d1v2xlseB2dQocsOhkoVSfo1krS8v8r+02K+TBUjSjXIf7dgyVSxp6wRIPv5pMi5hanNUlQMgUA==", + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.6.1.tgz", + "integrity": "sha512-/HzDV1VqOsUWyuC0c6AkxVYFjvx9+rFPKZ32ejxX0Uc7QCzcEjTA9/xMgv4HemPKwzBNX8KhGVbbumDjnj92aA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.2", @@ -7154,14 +6964,14 @@ } }, "node_modules/rc-textarea": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.9.0.tgz", - "integrity": "sha512-dQW/Bc/MriPBTugj2Kx9PMS5eXCCGn2cxoIaichjbNvOiARlaHdI99j4DTxLl/V8+PIfW06uFy7kjfUIDDKyxQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.10.0.tgz", + "integrity": "sha512-ai9IkanNuyBS4x6sOL8qu/Ld40e6cEs6pgk93R+XLYg0mDSjNBGey6/ZpDs5+gNLD7urQ14po3V6Ck2dJLt9SA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.1", - "rc-input": "~1.7.1", + "rc-input": "~1.8.0", "rc-resize-observer": "^1.0.0", "rc-util": "^5.27.0" }, @@ -7224,9 +7034,9 @@ } }, "node_modules/rc-upload": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.8.1.tgz", - "integrity": "sha512-toEAhwl4hjLAI1u8/CgKWt30BR06ulPa4iGQSMvSXoHzO88gPCslxqV/mnn4gJU7PDoltGIC9Eh+wkeudqgHyw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.9.2.tgz", + "integrity": "sha512-nHx+9rbd1FKMiMRYsqQ3NkXUv7COHPBo3X1Obwq9SWS6/diF/A0aJ5OHubvwUAIDs+4RMleljV0pcrNUc823GQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -7259,9 +7069,9 @@ "license": "MIT" }, "node_modules/rc-virtual-list": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.18.5.tgz", - "integrity": "sha512-1FuxVSxhzTj3y8k5xMPbhXCB0t2TOiI3Tq+qE2Bu+GGV7f+ECVuQl4OUg6lZ2qT5fordTW7CBpr9czdzXCI7Pg==", + "version": "3.18.6", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.18.6.tgz", + "integrity": "sha512-TQ5SsutL3McvWmmxqQtMIbfeoE3dGjJrRSfKekgby7WQMpPIFvv4ghytp5Z0s3D8Nik9i9YNOCqHBfk86AwgAA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", @@ -7278,9 +7088,9 @@ } }, "node_modules/react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", - "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7297,27 +7107,29 @@ } }, "node_modules/react-dom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", - "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", "dependencies": { - "scheduler": "^0.25.0" + "scheduler": "^0.26.0" }, "peerDependencies": { - "react": "^19.0.0" + "react": "^19.1.0" } }, "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" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", "dev": true, "license": "MIT", "engines": { @@ -7325,15 +7137,13 @@ } }, "node_modules/react-router": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.4.1.tgz", - "integrity": "sha512-Vmizn9ZNzxfh3cumddqv3kLOKvc7AskUT0dC1prTabhiEi0U4A33LmkDOJ79tXaeSqCqMBXBU/ySX88W85+EUg==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.1.tgz", + "integrity": "sha512-hPJXXxHJZEsPFNVbtATH7+MMX43UDeOauz+EAU4cgqTn7ojdI9qQORqS8Z0qmDlL1TclO/6jLRYUEtbWidtdHQ==", "license": "MIT", "dependencies": { - "@types/cookie": "^0.6.0", "cookie": "^1.0.1", - "set-cookie-parser": "^2.6.0", - "turbo-stream": "2.4.0" + "set-cookie-parser": "^2.6.0" }, "engines": { "node": ">=20.0.0" @@ -7422,12 +7232,6 @@ "node": ">=6" } }, - "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==", - "license": "MIT" - }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -7460,7 +7264,9 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -7480,7 +7286,9 @@ "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, "license": "MIT", + "peer": true, "engines": { "node": ">=4" } @@ -7497,9 +7305,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "peer": true, @@ -7509,13 +7317,13 @@ } }, "node_modules/rollup": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", - "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", "devOptional": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -7525,25 +7333,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.8", - "@rollup/rollup-android-arm64": "4.34.8", - "@rollup/rollup-darwin-arm64": "4.34.8", - "@rollup/rollup-darwin-x64": "4.34.8", - "@rollup/rollup-freebsd-arm64": "4.34.8", - "@rollup/rollup-freebsd-x64": "4.34.8", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", - "@rollup/rollup-linux-arm-musleabihf": "4.34.8", - "@rollup/rollup-linux-arm64-gnu": "4.34.8", - "@rollup/rollup-linux-arm64-musl": "4.34.8", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", - "@rollup/rollup-linux-riscv64-gnu": "4.34.8", - "@rollup/rollup-linux-s390x-gnu": "4.34.8", - "@rollup/rollup-linux-x64-gnu": "4.34.8", - "@rollup/rollup-linux-x64-musl": "4.34.8", - "@rollup/rollup-win32-arm64-msvc": "4.34.8", - "@rollup/rollup-win32-ia32-msvc": "4.34.8", - "@rollup/rollup-win32-x64-msvc": "4.34.8", + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", "fsevents": "~2.3.2" } }, @@ -7631,9 +7440,9 @@ } }, "node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, "node_modules/scroll-into-view-if-needed": { @@ -7646,9 +7455,9 @@ } }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "peer": true, @@ -7822,14 +7631,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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, - "license": "ISC", - "peer": true - }, "node_modules/socket.io-client": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", @@ -7892,15 +7693,6 @@ } } }, - "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" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -7950,9 +7742,9 @@ "peer": true }, "node_modules/stable-hash": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", - "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", "dev": true, "license": "MIT", "peer": true @@ -8092,9 +7884,9 @@ } }, "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", "license": "MIT" }, "node_modules/supports-color": { @@ -8115,41 +7907,14 @@ "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "dev": true, "license": "MIT", "peer": true, - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/throttle-debounce": { @@ -8162,14 +7927,13 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.11.tgz", - "integrity": "sha512-32TmKeeKUahv0Go8WmQgiEp9Y21NuxjwjqiRC1nrUB51YacfSwuB44xgXD+HdIppmMRgjQNPdrHyA6vIybYZ+g==", - "dev": true, + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { - "fdir": "^6.4.3", + "fdir": "^6.4.4", "picomatch": "^4.0.2" }, "engines": { @@ -8200,9 +7964,9 @@ "license": "MIT" }, "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "peer": true, @@ -8214,9 +7978,9 @@ } }, "node_modules/tsconfck": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.5.tgz", - "integrity": "sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" @@ -8267,14 +8031,9 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD", + "optional": true, "peer": true }, - "node_modules/turbo-stream": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", - "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", - "license": "ISC" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -8549,10 +8308,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unrs-resolver": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.7.6.tgz", + "integrity": "sha512-72mW/4N9ajUM3Pnw2CLFcsollrsfUuPl+/OW+AJsgmp5rnw7KuCre6I4EtoVBYrOy3DbVXnR33bL+Pfbdbek2Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "napi-postinstall": "^0.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/JounQin" + }, + "optionalDependencies": { + "@unrs/resolver-binding-darwin-arm64": "1.7.6", + "@unrs/resolver-binding-darwin-x64": "1.7.6", + "@unrs/resolver-binding-freebsd-x64": "1.7.6", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.7.6", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.7.6", + "@unrs/resolver-binding-linux-arm64-gnu": "1.7.6", + "@unrs/resolver-binding-linux-arm64-musl": "1.7.6", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.7.6", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.7.6", + "@unrs/resolver-binding-linux-riscv64-musl": "1.7.6", + "@unrs/resolver-binding-linux-s390x-gnu": "1.7.6", + "@unrs/resolver-binding-linux-x64-gnu": "1.7.6", + "@unrs/resolver-binding-linux-x64-musl": "1.7.6", + "@unrs/resolver-binding-wasm32-wasi": "1.7.6", + "@unrs/resolver-binding-win32-arm64-msvc": "1.7.6", + "@unrs/resolver-binding-win32-ia32-msvc": "1.7.6", + "@unrs/resolver-binding-win32-x64-msvc": "1.7.6" + } + }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -8592,15 +8385,18 @@ } }, "node_modules/vite": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz", - "integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", "devOptional": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", "postcss": "^8.5.3", - "rollup": "^4.30.1" + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" @@ -8770,17 +8566,18 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -8847,21 +8644,6 @@ "dev": true, "license": "ISC" }, - "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -8877,9 +8659,9 @@ } }, "node_modules/zustand": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.3.tgz", - "integrity": "sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.5.tgz", + "integrity": "sha512-mILtRfKW9xM47hqxGIxCv12gXusoY/xTSHBYApXozR0HmQv299whhBeeAcRy+KrPPybzosvJBCOmVjq6x12fCg==", "license": "MIT", "engines": { "node": ">=12.20.0" diff --git a/components/log-viewer-webui/client/package.json b/components/log-viewer-webui/client/package.json index 89c0b314fa..e40ccd4893 100644 --- a/components/log-viewer-webui/client/package.json +++ b/components/log-viewer-webui/client/package.json @@ -7,17 +7,13 @@ "build": "tsc -b && vite build", "lint:check": "eslint", "lint:fix": "eslint --fix", - "start": "vite", - "antd": "VITE_USE_ANTD_APP=true npm run start" + "start": "vite" }, "author": "YScope Inc. ", "license": "Apache-2.0", "type": "module", "dependencies": { "@ant-design/v5-patch-for-react-19": "^1.0.3", - "@emotion/react": "^11.14.0", - "@emotion/styled": "^11.14.0", - "@mui/joy": "^5.0.0-beta.51", "@sinclair/typebox": "^0.34.25", "antd": "^5.24.5", "axios": "^1.7.9", diff --git a/components/log-viewer-webui/client/src/AntdApp.tsx b/components/log-viewer-webui/client/src/AntdApp.tsx deleted file mode 100644 index 5435bae9d9..0000000000 --- a/components/log-viewer-webui/client/src/AntdApp.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import {RouterProvider} from "react-router"; - -import router from "./router"; - -import "@ant-design/v5-patch-for-react-19"; - - -/** - * Renders Web UI app. - * - * @return - */ -const AntApp = () => { - return ; -}; - -export default AntApp; diff --git a/components/log-viewer-webui/client/src/App.tsx b/components/log-viewer-webui/client/src/App.tsx index b54609e539..5435bae9d9 100644 --- a/components/log-viewer-webui/client/src/App.tsx +++ b/components/log-viewer-webui/client/src/App.tsx @@ -1,20 +1,17 @@ -import {CssVarsProvider} from "@mui/joy"; +import {RouterProvider} from "react-router"; -import {LOCAL_STORAGE_KEY} from "./typings/config"; -import QueryStatus from "./ui/QueryStatus"; +import router from "./router"; + +import "@ant-design/v5-patch-for-react-19"; /** - * Renders the main application. + * Renders Web UI app. * * @return */ -const App = () => { - return ( - - - - ); +const AntApp = () => { + return ; }; -export default App; +export default AntApp; diff --git a/components/log-viewer-webui/client/src/main.tsx b/components/log-viewer-webui/client/src/main.tsx index 8e45e59ef8..b049316a14 100644 --- a/components/log-viewer-webui/client/src/main.tsx +++ b/components/log-viewer-webui/client/src/main.tsx @@ -1,7 +1,6 @@ import {StrictMode} from "react"; import {createRoot} from "react-dom/client"; -import AntdApp from "./AntdApp"; import App from "./App"; import "./index.css"; @@ -12,16 +11,10 @@ if (null === rootElement) { throw new Error("Root element not found"); } -/* eslint-disable-next-line no-warning-comments */ -// TODO: Remove flag and related logic when the new UI is fully implemented. -const {VITE_USE_ANTD_APP} = import.meta.env; -const AppComponent = ("true" === VITE_USE_ANTD_APP) ? - AntdApp : - App; const root = createRoot(rootElement); root.render( - + ); diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline.tsx b/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline.tsx index 23aa61c0f8..1a2a99ef36 100644 --- a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline.tsx +++ b/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline.tsx @@ -1,13 +1,14 @@ import {Card} from "antd"; import dayjs from "dayjs"; -import ResultsTimeline, {TimelineBucket} from "../../../components/ResultsTimeline"; +import ResultsTimeline from "../../../components/ResultsTimeline"; import {expandTimeRangeToDurationMultiple} from "../../../components/ResultsTimeline/datetime"; import {TimeRange} from "../../../components/ResultsTimeline/datetime/typings"; import {computeTimelineConfig} from "../../../components/ResultsTimeline/utils"; import {TIME_RANGE_OPTION} from "../SearchControls/TimeRangeInput/utils"; import useSearchStore from "../SearchState"; import {SearchResult} from "./SearchResultsTable/typings"; +import {TimelineBucket} from "../../../components/ResultsTimeline/typings"; // eslint-disable-next-line no-warning-comments diff --git a/components/log-viewer-webui/client/src/ui/Loading.css b/components/log-viewer-webui/client/src/ui/Loading.css deleted file mode 100644 index d8bec18421..0000000000 --- a/components/log-viewer-webui/client/src/ui/Loading.css +++ /dev/null @@ -1,24 +0,0 @@ -.loading-sheet { - height: 100%; - - display: flex; - flex-direction: column; - - align-items: center; - justify-content: center; -} - -.loading-progress-container { - width: 100%; -} - -.loading-stepper-container { - display: flex; - flex-grow: 1; - - align-items: center; -} - -.loading-stepper { - --Stepper-verticalGap: 2rem !important; -} diff --git a/components/log-viewer-webui/client/src/ui/Loading.tsx b/components/log-viewer-webui/client/src/ui/Loading.tsx deleted file mode 100644 index e8fd77369f..0000000000 --- a/components/log-viewer-webui/client/src/ui/Loading.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import React from "react"; - -import { - Box, - LinearProgress, - Sheet, - Step, - StepIndicator, - Stepper, - Typography, -} from "@mui/joy"; -import {DefaultColorPalette} from "@mui/joy/styles/types"; - -import {Nullable} from "../typings/common"; -import { - QUERY_LOADING_STATE, - QUERY_LOADING_STATE_DESCRIPTIONS, - QUERY_LOADING_STATE_VALUES, -} from "../typings/query"; - -import "./Loading.css"; - - -interface LoadingStepProps { - description: string; - isActive: boolean; - isError: boolean; - label: string; - stepIndicatorText: number | string; -} - -/** - * Renders a step with a label and description. - * - * @param props - * @param props.description - * @param props.isActive - * @param props.isError - * @param props.label - * @param props.stepIndicatorText - * @return - */ -const LoadingStep = ({ - description, - isActive, - isError, - label, - stepIndicatorText, -}: LoadingStepProps) => { - let color: DefaultColorPalette = isActive ? - "primary" : - "neutral"; - - if (isError) { - color = "danger"; - } - - return ( - - {stepIndicatorText} - - } - > - - {label} - - - {description} - - - ); -}; - -interface LoadingProps { - currentState: QUERY_LOADING_STATE; - errorMsg: Nullable; -} - -/** - * Displays status of a pending query job. - * - * @param props - * @param props.currentState - * @param props.errorMsg - * @return - */ -const Loading = ({ - currentState, - errorMsg, -}:LoadingProps) => { - const steps: React.ReactNode[] = []; - QUERY_LOADING_STATE_VALUES.forEach((state) => { - const isActive = (currentState === state); - const stateDescription = QUERY_LOADING_STATE_DESCRIPTIONS[state]; - steps.push( - - ); - if (isActive && null !== errorMsg) { - steps.push( - - ); - } - }); - - return ( - - - - - - - {steps} - - - - ); -}; - -export default Loading; diff --git a/components/log-viewer-webui/client/src/ui/QueryStatus.tsx b/components/log-viewer-webui/client/src/ui/QueryStatus.tsx deleted file mode 100644 index a562398dc4..0000000000 --- a/components/log-viewer-webui/client/src/ui/QueryStatus.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { - useEffect, - useState, -} from "react"; - -import {Static} from "@sinclair/typebox"; -import { - AssertError, - Value, -} from "@sinclair/typebox/value"; -import {isAxiosError} from "axios"; - -import {submitExtractStreamJob} from "../api/query"; -import {Nullable} from "../typings/common"; -import { - EXTRACT_JOB_TYPE, - ExtractJobSearchParams, - QUERY_LOADING_STATE, -} from "../typings/query"; -import Loading from "./Loading"; - - -/** - * Flag to prevent duplicate execution of `useEffect`. - */ -let isFirstRun = true; - -/** - * Submits queries and renders the query states. - * - * @return - */ -const QueryStatus = () => { - const [queryState, setQueryState] = useState( - QUERY_LOADING_STATE.SUBMITTING - ); - const [errorMsg, setErrorMsg] = useState>(null); - - useEffect(() => { - // eslint-disable-next-line no-warning-comments - // TODO: Address server-side concurrency issues and replace this workaround by aborting - // requests via an AbortController in useEffect's cleanup function. - - // Skip duplicate execution caused by React StrictMode. - if (false === isFirstRun) { - return; - } - isFirstRun = false; - - // Validates and parse search parameters. - const searchParams = new URLSearchParams(window.location.search); - const paramsObj = Object.fromEntries(searchParams); - let parseResult: Static; - try { - parseResult = Value.Parse(ExtractJobSearchParams, paramsObj); - } catch (e: unknown) { - let error = "URL parameters parsing failed"; - if (e instanceof AssertError) { - error += `: ${e.message}`; - } - console.error(error); - setErrorMsg(error); - - return; - } - - submitExtractStreamJob( - - // `parseResult.type` must be valid key since parsed using with typebox type - // `ExtractJobSearchParams`. - EXTRACT_JOB_TYPE[parseResult.type as keyof typeof EXTRACT_JOB_TYPE], - parseResult.streamId, - parseResult.logEventIdx, - () => { - setQueryState(QUERY_LOADING_STATE.WAITING); - } - ) - .then(({data}) => { - setQueryState(QUERY_LOADING_STATE.LOADING); - - const innerLogEventNum = parseResult.logEventIdx - data.begin_msg_ix + 1; - window.location.href = `/log-viewer/index.html?filePath=${data.path}` + - `#logEventNum=${innerLogEventNum}`; - }) - .catch((e: unknown) => { - let msg = "Unknown error."; - if (isAxiosError<{message: string}>(e)) { - msg = e.message; - if ("undefined" !== typeof e.response) { - msg = e.response.data.message; - } - } - console.error(msg, e); - setErrorMsg(msg); - }); - }, []); - - return ( - - ); -}; - -export default QueryStatus; diff --git a/components/package-template/src/etc/clp-config.yml b/components/package-template/src/etc/clp-config.yml index 66d8779d34..9d31a3db86 100644 --- a/components/package-template/src/etc/clp-config.yml +++ b/components/package-template/src/etc/clp-config.yml @@ -61,11 +61,6 @@ #webui: # host: "localhost" # port: 4000 -# logging_level: "INFO" -# -#log_viewer_webui: -# host: "localhost" -# port: 3000 # ## Where archives should be output to #archive_output: diff --git a/components/webui/.gitignore b/components/webui/.gitignore deleted file mode 100644 index c40aa38d0e..0000000000 --- a/components/webui/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -docs/ -node_modules/ diff --git a/components/webui/.meteor/.finished-upgraders b/components/webui/.meteor/.finished-upgraders deleted file mode 100644 index c07b6ff75a..0000000000 --- a/components/webui/.meteor/.finished-upgraders +++ /dev/null @@ -1,19 +0,0 @@ -# This file contains information which helps Meteor properly upgrade your -# app when you run 'meteor update'. You should check it into version control -# with your project. - -notices-for-0.9.0 -notices-for-0.9.1 -0.9.4-platform-file -notices-for-facebook-graph-api-2 -1.2.0-standard-minifiers-package -1.2.0-meteor-platform-split -1.2.0-cordova-changes -1.2.0-breaking-changes -1.3.0-split-minifiers-package -1.4.0-remove-old-dev-bundle-link -1.4.1-add-shell-server-package -1.4.3-split-account-service-packages -1.5-add-dynamic-import-package -1.7-split-underscore-from-meteor-base -1.8.3-split-jquery-from-blaze diff --git a/components/webui/.meteor/.gitignore b/components/webui/.meteor/.gitignore deleted file mode 100644 index 4083037423..0000000000 --- a/components/webui/.meteor/.gitignore +++ /dev/null @@ -1 +0,0 @@ -local diff --git a/components/webui/.meteor/.id b/components/webui/.meteor/.id deleted file mode 100644 index 0428be3da9..0000000000 --- a/components/webui/.meteor/.id +++ /dev/null @@ -1,7 +0,0 @@ -# This file contains a token that is unique to your project. -# Check it into your repository along with the rest of this directory. -# It can be used for purposes such as: -# - ensuring you don't accidentally deploy one app on top of another -# - providing package authors with aggregated statistics - -w2i4drbtdntc.kdbz5fehx6g diff --git a/components/webui/.meteor/packages b/components/webui/.meteor/packages deleted file mode 100644 index 88d4b182ac..0000000000 --- a/components/webui/.meteor/packages +++ /dev/null @@ -1,19 +0,0 @@ -# Meteor packages used by this project, one per line. -# Check this file (and the other files in this directory) into your repository. -# -# 'meteor add' and 'meteor remove' will edit this file for you, -# but you can also edit it by hand. - -meteor-base@1.5.1 # Packages every Meteor app needs to have -mongo@1.16.10 # The database Meteor supports right now -reactive-var@1.0.12 # Reactive variable for tracker - -standard-minifier-css@1.9.2 # CSS minifier run for production mode -standard-minifier-js@2.8.1 # JS minifier run for production mode -ecmascript@0.16.8 # Enable ECMAScript2015+ syntax in app code -hot-module-replacement@0.5.3 # Update client in development without reloading the page - -static-html@1.3.2 # Define static page content in .html files -react-meteor-data@2.7.2 # React higher-order component for reactively tracking Meteor data -fourseven:scss@4.16.0 # Compile Sass files with node-sass -meteortesting:mocha@2.1.0 # Testing framework diff --git a/components/webui/.meteor/platforms b/components/webui/.meteor/platforms deleted file mode 100644 index efeba1b50c..0000000000 --- a/components/webui/.meteor/platforms +++ /dev/null @@ -1,2 +0,0 @@ -server -browser diff --git a/components/webui/.meteor/release b/components/webui/.meteor/release deleted file mode 100644 index 5152abe9d5..0000000000 --- a/components/webui/.meteor/release +++ /dev/null @@ -1 +0,0 @@ -METEOR@2.16 diff --git a/components/webui/.meteor/versions b/components/webui/.meteor/versions deleted file mode 100644 index d568e975cb..0000000000 --- a/components/webui/.meteor/versions +++ /dev/null @@ -1,73 +0,0 @@ -allow-deny@1.1.1 -autoupdate@1.8.0 -babel-compiler@7.10.5 -babel-runtime@1.5.1 -base64@1.0.12 -binary-heap@1.0.11 -blaze-tools@1.1.3 -boilerplate-generator@1.7.2 -caching-compiler@1.2.2 -caching-html-compiler@1.2.1 -callback-hook@1.5.1 -check@1.4.1 -ddp@1.4.1 -ddp-client@2.6.2 -ddp-common@1.4.1 -ddp-server@2.7.1 -diff-sequence@1.1.2 -dynamic-import@0.7.3 -ecmascript@0.16.8 -ecmascript-runtime@0.8.1 -ecmascript-runtime-client@0.12.1 -ecmascript-runtime-server@0.11.0 -ejson@1.1.3 -es5-shim@4.8.0 -fetch@0.1.4 -fourseven:scss@4.16.0 -geojson-utils@1.0.11 -hot-code-push@1.0.4 -hot-module-replacement@0.5.3 -html-tools@1.1.3 -htmljs@1.1.1 -http@1.0.10 -id-map@1.1.1 -inter-process-messaging@0.1.1 -logging@1.3.4 -meteor@1.11.5 -meteor-base@1.5.1 -meteortesting:browser-tests@1.4.2 -meteortesting:mocha@2.1.0 -meteortesting:mocha-core@8.0.1 -minifier-css@1.6.4 -minifier-js@2.8.0 -minimongo@1.9.4 -modern-browsers@0.1.10 -modules@0.20.0 -modules-runtime@0.13.1 -modules-runtime-hot@0.14.2 -mongo@1.16.10 -mongo-decimal@0.1.3 -mongo-dev-server@1.1.0 -mongo-id@1.0.8 -npm-mongo@4.17.2 -ordered-dict@1.1.0 -promise@0.12.2 -random@1.2.1 -react-fast-refresh@0.2.8 -react-meteor-data@2.7.2 -reactive-var@1.0.12 -reload@1.3.1 -retry@1.1.0 -routepolicy@1.1.1 -socket-stream-client@0.5.2 -spacebars-compiler@1.3.1 -standard-minifier-css@1.9.2 -standard-minifier-js@2.8.1 -static-html@1.3.2 -templating-tools@1.2.2 -tracker@1.3.3 -typescript@4.9.5 -underscore@1.6.2 -url@1.3.2 -webapp@1.13.8 -webapp-hashing@1.1.1 diff --git a/components/webui/.meteorignore b/components/webui/.meteorignore deleted file mode 100644 index 48357e9f1f..0000000000 --- a/components/webui/.meteorignore +++ /dev/null @@ -1 +0,0 @@ -linter diff --git a/components/webui/README.md b/components/webui/README.md deleted file mode 100644 index 61c95fe645..0000000000 --- a/components/webui/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# CLP WebUI - -The web interface for the CLP package. - -See the [docs] for more details. - -[docs]: https://docs.yscope.com/clp/main/dev-guide/components-webui diff --git a/components/webui/client/main.css b/components/webui/client/main.css deleted file mode 100644 index 22090692cd..0000000000 --- a/components/webui/client/main.css +++ /dev/null @@ -1,4 +0,0 @@ -#root { - display: flex; - height: 100%; -} diff --git a/components/webui/client/main.html b/components/webui/client/main.html deleted file mode 100644 index 17c3d873b4..0000000000 --- a/components/webui/client/main.html +++ /dev/null @@ -1,15 +0,0 @@ - - YScope CLP - - - - - - - - -
- diff --git a/components/webui/client/main.jsx b/components/webui/client/main.jsx deleted file mode 100644 index 082c37091e..0000000000 --- a/components/webui/client/main.jsx +++ /dev/null @@ -1,21 +0,0 @@ -import {Meteor} from "meteor/meteor"; -import {StrictMode} from "react"; -import ReactDOM from "react-dom/client"; -import {Router} from "react-router"; - -import {createBrowserHistory} from "history"; - -import {App} from "/imports/ui/App"; - - -Meteor.startup(() => { - const root = ReactDOM.createRoot(document.getElementById("root")); - - root.render( - - - - - - ); -}); diff --git a/components/webui/imports/api/constants.js b/components/webui/imports/api/constants.js deleted file mode 100644 index 8877e9d0c8..0000000000 --- a/components/webui/imports/api/constants.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Enum of the CLP package's possible storage engines. These must match the values in - * clp_py_utils.clp_config.StorageEngine. - * - * @enum {string} - */ -const CLP_STORAGE_ENGINES = Object.freeze({ - CLP: "clp", - CLP_S: "clp-s", -}); - -export {CLP_STORAGE_ENGINES}; diff --git a/components/webui/imports/api/ingestion/collections.js b/components/webui/imports/api/ingestion/collections.js deleted file mode 100644 index 9938317901..0000000000 --- a/components/webui/imports/api/ingestion/collections.js +++ /dev/null @@ -1,23 +0,0 @@ -import {Mongo} from "meteor/mongo"; - - -const CompressionJobsCollection = new Mongo.Collection( - Meteor.settings.public.CompressionJobsCollectionName -); - -/** - * Enum representing the statistics collection IDs. - * - * @enum {string} - */ -const STATS_COLLECTION_ID = Object.freeze({ - COMPRESSION: "compression", -}); - -const StatsCollection = new Mongo.Collection(Meteor.settings.public.StatsCollectionName); - -export { - CompressionJobsCollection, - STATS_COLLECTION_ID, - StatsCollection, -}; diff --git a/components/webui/imports/api/ingestion/constants.js b/components/webui/imports/api/ingestion/constants.js deleted file mode 100644 index cab5cbb7ed..0000000000 --- a/components/webui/imports/api/ingestion/constants.js +++ /dev/null @@ -1,64 +0,0 @@ -/* eslint-disable sort-keys */ -/** - * Enum of the column names for the `compression_jobs` table. - * - * @enum {string} - */ -const COMPRESSION_JOBS_TABLE_COLUMN_NAMES = Object.freeze({ - ID: "id", - STATUS: "status", - STATUS_MSG: "status_msg", - CREATION_TIME: "creation_time", - START_TIME: "start_time", - UPDATE_TIME: "update_time", - DURATION: "duration", - ORIGINAL_SIZE: "original_size", - UNCOMPRESSED_SIZE: "uncompressed_size", - COMPRESSED_SIZE: "compressed_size", - NUM_TASKS: "num_tasks", - NUM_TASKS_COMPLETED: "num_tasks_completed", - CLP_BINARY_VERSION: "clp_binary_version", - CLP_CONFIG: "clp_config", -}); -/* eslint-enable sort-keys */ - -/** - * @typedef {number} CompressionJobStatus - */ -let enumCompressionJobStatus; -/** - * Enum of compression job statuses, matching the `CompressionJobStatus` class in - * `job_orchestration.scheduler.constants`. - * - * @enum {CompressionJobStatus} - */ -const COMPRESSION_JOB_STATUS = Object.freeze({ - PENDING: (enumCompressionJobStatus = 0), - RUNNING: ++enumCompressionJobStatus, - SUCCEEDED: ++enumCompressionJobStatus, - FAILED: ++enumCompressionJobStatus, -}); - -/** - * List of waiting states for a compression job. - * - * @see COMPRESSION_JOB_STATUS - */ -const COMPRESSION_JOB_WAITING_STATES = Object.freeze([ - COMPRESSION_JOB_STATUS.PENDING, - COMPRESSION_JOB_STATUS.RUNNING, -]); - -/** - * Names for the compression job statuses. - * - * @type {ReadonlyArray} - */ -const COMPRESSION_JOB_STATUS_NAMES = Object.freeze(Object.keys(COMPRESSION_JOB_STATUS)); - -export { - COMPRESSION_JOB_STATUS, - COMPRESSION_JOB_STATUS_NAMES, - COMPRESSION_JOB_WAITING_STATES, - COMPRESSION_JOBS_TABLE_COLUMN_NAMES, -}; diff --git a/components/webui/imports/api/ingestion/server/CompressionDbManager.js b/components/webui/imports/api/ingestion/server/CompressionDbManager.js deleted file mode 100644 index 03a1dda4dd..0000000000 --- a/components/webui/imports/api/ingestion/server/CompressionDbManager.js +++ /dev/null @@ -1,52 +0,0 @@ -import {COMPRESSION_JOBS_TABLE_COLUMN_NAMES} from "../constants"; - - -/** - * Class for retrieving compression jobs from the database. - */ -class CompressionDbManager { - #sqlDbConnPool; - - #compressionJobsTableName; - - /** - * @param {import("mysql2/promise").Pool} sqlDbConnPool - * @param {object} tableNames - * @param {string} tableNames.compressionJobsTableName - */ - constructor (sqlDbConnPool, {compressionJobsTableName}) { - this.#sqlDbConnPool = sqlDbConnPool; - this.#compressionJobsTableName = compressionJobsTableName; - } - - /** - * Retrieves compression jobs that are updated on or after a specific time. - * - * @param {number} lastUpdateTimestampSeconds - * @return {Promise} Job objects with fields with the names in - * `COMPRESSION_JOBS_TABLE_COLUMN_NAMES` - */ - async getCompressionJobs (lastUpdateTimestampSeconds) { - const queryString = ` - SELECT - UNIX_TIMESTAMP() as retrieval_time, - id as _id, - ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.STATUS}, - ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.STATUS_MSG}, - ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.START_TIME}, - ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.UPDATE_TIME}, - ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.DURATION}, - ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.UNCOMPRESSED_SIZE}, - ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.COMPRESSED_SIZE} - FROM ${this.#compressionJobsTableName} - WHERE ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.UPDATE_TIME} >= - FROM_UNIXTIME(${lastUpdateTimestampSeconds}) - 1 - ORDER BY _id DESC;`; - - const [results] = await this.#sqlDbConnPool.query(queryString); - - return results; - } -} - -export default CompressionDbManager; diff --git a/components/webui/imports/api/ingestion/server/StatsDbManager.js b/components/webui/imports/api/ingestion/server/StatsDbManager.js deleted file mode 100644 index 2198d21339..0000000000 --- a/components/webui/imports/api/ingestion/server/StatsDbManager.js +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Enum of the column names for the `clp_archives` table. - * - * @enum {string} - */ -const CLP_ARCHIVES_TABLE_COLUMN_NAMES = Object.freeze({ - BEGIN_TIMESTAMP: "begin_timestamp", - END_TIMESTAMP: "end_timestamp", - UNCOMPRESSED_SIZE: "uncompressed_size", - SIZE: "size", -}); - -/** - * Enum of the column names for the `clp_files` table. - * - * @enum {string} - */ -const CLP_FILES_TABLE_COLUMN_NAMES = Object.freeze({ - ORIG_FILE_ID: "orig_file_id", - NUM_MESSAGES: "num_messages", -}); - -/** - * Class for retrieving compression stats from the database. - */ -class StatsDbManager { - #sqlDbConnPool; - - #clpArchivesTableName; - - #clpFilesTableName; - - /** - * @param {import("mysql2/promise").Pool} sqlDbConnPool - * @param {object} tableNames - * @param {string} tableNames.clpArchivesTableName - * @param {string} tableNames.clpFilesTableName - */ - constructor (sqlDbConnPool, { - clpArchivesTableName, - clpFilesTableName, - }) { - this.#sqlDbConnPool = sqlDbConnPool; - - this.#clpArchivesTableName = clpArchivesTableName; - this.#clpFilesTableName = clpFilesTableName; - } - - /** - * Queries compression stats. - * - * @return {Promise} - * @throws {Error} on error. - */ - async getCompressionStats () { - /* eslint-disable @stylistic/js/max-len */ - const [queryStats] = await this.#sqlDbConnPool.query(` - SELECT - a.begin_timestamp AS begin_timestamp, - a.end_timestamp AS end_timestamp, - a.total_uncompressed_size AS total_uncompressed_size, - a.total_compressed_size AS total_compressed_size, - b.num_files AS num_files, - b.num_messages AS num_messages - FROM - ( - SELECT - MIN(${CLP_ARCHIVES_TABLE_COLUMN_NAMES.BEGIN_TIMESTAMP}) AS begin_timestamp, - MAX(${CLP_ARCHIVES_TABLE_COLUMN_NAMES.END_TIMESTAMP}) AS end_timestamp, - SUM(${CLP_ARCHIVES_TABLE_COLUMN_NAMES.UNCOMPRESSED_SIZE}) AS total_uncompressed_size, - SUM(${CLP_ARCHIVES_TABLE_COLUMN_NAMES.SIZE}) AS total_compressed_size - FROM ${this.#clpArchivesTableName} - ) a, - ( - SELECT - NULLIF(COUNT(DISTINCT ${CLP_FILES_TABLE_COLUMN_NAMES.ORIG_FILE_ID}), 0) AS num_files, - SUM(${CLP_FILES_TABLE_COLUMN_NAMES.NUM_MESSAGES}) AS num_messages - FROM ${this.#clpFilesTableName} - ) b; - `); - /* eslint-enable @stylistic/js/max-len */ - - return queryStats[0]; - } -} - -export default StatsDbManager; diff --git a/components/webui/imports/api/ingestion/server/publications.js b/components/webui/imports/api/ingestion/server/publications.js deleted file mode 100644 index 8febca51f4..0000000000 --- a/components/webui/imports/api/ingestion/server/publications.js +++ /dev/null @@ -1,232 +0,0 @@ -import {Meteor} from "meteor/meteor"; - -import {logger} from "/imports/utils/logger"; -import {MONGO_SORT_BY_ID} from "/imports/utils/mongo"; - -import { - CompressionJobsCollection, - STATS_COLLECTION_ID, - StatsCollection, -} from "../collections"; -import CompressionDbManager from "./CompressionDbManager"; -import StatsDbManager from "./StatsDbManager"; - - -const COMPRESSION_JOBS_REFRESH_INTERVAL_MILLIS = 1000; - -const STATS_REFRESH_INTERVAL_MILLIS = 5000; - -/** - * @type {CompressionDbManager|null} - */ -let compressionDbManager = null; - -/** - * @type {StatsDbManager|null} - */ -let statsDbManager = null; - -/** - * @type {number|null} - */ -let compressionJobsRefreshTimeout = null; - -/** - * @type {number|null} - */ -let statsRefreshInterval = null; - -/** - * @type {number} - */ -let lastUpdateTimestampSeconds = 0; - -/** - * Updates the compression statistics in the StatsCollection. - * - * @return {Promise} - */ -const refreshCompressionStats = async () => { - if (0 === Meteor.server.stream_server.all_sockets().length) { - return; - } - - const stats = await statsDbManager.getCompressionStats(); - const filter = { - _id: STATS_COLLECTION_ID.COMPRESSION, - }; - const modifier = { - $set: stats, - }; - const options = { - upsert: true, - }; - - await StatsCollection.updateAsync(filter, modifier, options); -}; - -/** - * Updates the compression jobs in the CompressionJobsCollection. - * - * @return {Promise} - */ -const refreshCompressionJobs = async () => { - if (null !== compressionJobsRefreshTimeout) { - // Clear the timeout in case this method is not called due to the timeout expiring. - Meteor.clearTimeout(compressionJobsRefreshTimeout); - compressionJobsRefreshTimeout = null; - } - if (0 === Meteor.server.stream_server.all_sockets().length) { - compressionJobsRefreshTimeout = Meteor.setTimeout( - refreshCompressionJobs, - COMPRESSION_JOBS_REFRESH_INTERVAL_MILLIS - ); - - return; - } - - const jobs = await compressionDbManager.getCompressionJobs( - lastUpdateTimestampSeconds - ); - - if (0 !== jobs.length) { - // `refreshCompressionJobs()` shall not be run concurrently - // and therefore incurs no race condition. - // eslint-disable-next-line require-atomic-updates - lastUpdateTimestampSeconds = jobs[0].retrieval_time; - } - - const operations = jobs.map((doc) => ({ - updateOne: { - filter: {_id: doc._id}, - update: {$set: doc}, - upsert: true, - }, - })); - - if (0 !== operations.length) { - await CompressionJobsCollection.rawCollection().bulkWrite(operations); - } - - // `refreshCompressionJobs()` shall not be run concurrently and therefore incurs no race - // condition. - // eslint-disable-next-line require-atomic-updates - compressionJobsRefreshTimeout = Meteor.setTimeout( - refreshCompressionJobs, - COMPRESSION_JOBS_REFRESH_INTERVAL_MILLIS - ); -}; - -/** - * Initializes the CompressionDbManager and starts a timeout timer (`compressionJobsRefreshTimeout`) - * for compression job updates. - * - * @param {import("mysql2/promise").Pool} sqlDbConnPool - * @param {object} tableNames - * @param {string} tableNames.compressionJobsTableName - * @throws {Error} on error. - */ -const initCompressionDbManager = (sqlDbConnPool, { - compressionJobsTableName, -}) => { - compressionDbManager = new CompressionDbManager(sqlDbConnPool, { - compressionJobsTableName, - }); - - compressionJobsRefreshTimeout = Meteor.setTimeout( - refreshCompressionJobs, - COMPRESSION_JOBS_REFRESH_INTERVAL_MILLIS - ); -}; - -/** - * De-initializes the CompressionDbManager by clearing the timeout timer for compression job - * updates (`refreshCompressionJobs`). - */ -const deinitCompressionDbManager = () => { - if (null !== compressionJobsRefreshTimeout) { - Meteor.clearTimeout(compressionJobsRefreshTimeout); - compressionJobsRefreshTimeout = null; - } -}; - -/** - * Initializes the StatsDbManager and starts an interval timer (`refreshMeteorInterval`) for - * compression stats updates. - * - * @param {import("mysql2/promise").Pool} sqlDbConnPool - * @param {object} tableNames - * @param {string} tableNames.clpArchivesTableName - * @param {string} tableNames.clpFilesTableName - * @throws {Error} on error. - */ -const initStatsDbManager = (sqlDbConnPool, { - clpArchivesTableName, - clpFilesTableName, -}) => { - statsDbManager = new StatsDbManager(sqlDbConnPool, { - clpArchivesTableName, - clpFilesTableName, - }); - - statsRefreshInterval = Meteor.setInterval( - refreshCompressionStats, - STATS_REFRESH_INTERVAL_MILLIS - ); -}; - -/** - * De-initializes the StatsDbManager by clearing the interval timer for compression stats updates - * (`refreshMeteorInterval`). - */ -const deinitStatsDbManager = () => { - if (null !== statsRefreshInterval) { - Meteor.clearInterval(statsRefreshInterval); - statsRefreshInterval = null; - } -}; - -/** - * Updates and publishes compression job statuses. - * - * @param {string} publicationName - * @return {Mongo.Cursor} - */ -Meteor.publish(Meteor.settings.public.CompressionJobsCollectionName, async () => { - logger.debug(`Subscription '${Meteor.settings.public.CompressionJobsCollectionName}'`); - - await refreshCompressionJobs(); - - const findOptions = { - disableOplog: true, - pollingIntervalMs: COMPRESSION_JOBS_REFRESH_INTERVAL_MILLIS, - sort: [MONGO_SORT_BY_ID], - }; - - return CompressionJobsCollection.find({}, findOptions); -}); - -/** - * Updates and publishes compression statistics. - * - * @param {string} publicationName - * @return {Mongo.Cursor} - */ -Meteor.publish(Meteor.settings.public.StatsCollectionName, async () => { - logger.debug(`Subscription '${Meteor.settings.public.StatsCollectionName}'`); - - await refreshCompressionStats(); - - const filter = { - _id: STATS_COLLECTION_ID.COMPRESSION, - }; - - return StatsCollection.find(filter); -}); - -export { - deinitCompressionDbManager, - deinitStatsDbManager, - initCompressionDbManager, - initStatsDbManager, -}; diff --git a/components/webui/imports/api/ingestion/types.js b/components/webui/imports/api/ingestion/types.js deleted file mode 100644 index e505f9f274..0000000000 --- a/components/webui/imports/api/ingestion/types.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @typedef {object} CompressionJob - * @property {number} _id - * @property {number} status - * @property {string} status_msg - * @property {Date} start_time - * @property {number} duration - * @property {string} uncompressed_size - * @property {string} compressed_size - */ - -/** - * @typedef {object} CompressionStats - * @property {number|null} begin_timestamp - * @property {number|null} end_timestamp - * @property {number|null} total_uncompressed_size - * @property {number|null} total_compressed_size - * @property {number|null} num_files - * @property {number|null} num_messages - */ diff --git a/components/webui/imports/api/search/SearchJobCollectionsManager.js b/components/webui/imports/api/search/SearchJobCollectionsManager.js deleted file mode 100644 index 721d295a6d..0000000000 --- a/components/webui/imports/api/search/SearchJobCollectionsManager.js +++ /dev/null @@ -1,51 +0,0 @@ -const ERROR_NAME_COLLECTION_DROPPED = "collection-dropped"; - -/** - * Class to keep track of MongoDB collections created for search jobs, ensuring all collections have - * unique names. - */ -class SearchJobCollectionsManager { - #collections; - - constructor () { - this.#collections = new Map(); - } - - /** - * Gets, or if it doesn't exist, creates a MongoDB collection named with the given job ID. - * - * @param {number} jobId - * @return {Mongo.Collection} - * @throws {Meteor.Error} with ERROR_NAME_COLLECTION_DROPPED if the collection was already - * dropped. - */ - getOrCreateCollection (jobId) { - const name = jobId.toString(); - if ("undefined" === typeof this.#collections.get(name)) { - this.#collections.set(name, new Mongo.Collection(name)); - } else if (null === this.#collections.get(name)) { - throw new Meteor.Error( - ERROR_NAME_COLLECTION_DROPPED, - `Collection ${name} has been dropped.` - ); - } - - return this.#collections.get(name); - } - - /** - * Drops the MongoDB collection with the given job ID. - * - * @param {number} jobId - */ - async dropCollection (jobId) { - const name = jobId.toString(); - const collection = this.#collections.get(name); - - await collection.dropCollectionAsync(); - this.#collections.set(name, null); - } -} - -export default SearchJobCollectionsManager; -export {ERROR_NAME_COLLECTION_DROPPED}; diff --git a/components/webui/imports/api/search/collections.js b/components/webui/imports/api/search/collections.js deleted file mode 100644 index 1642b0c9c6..0000000000 --- a/components/webui/imports/api/search/collections.js +++ /dev/null @@ -1,19 +0,0 @@ -import {Mongo} from "meteor/mongo"; - - -/** - * @typedef {object} SearchResultsMetadata - * @property {string} _id - * @property {string|null} errorMsg - * @property {SearchSignal} lastSignal - * @property {number} numTotalResults - */ - -/** - * A MongoDB collection for storing metadata about search results. - */ -const SearchResultsMetadataCollection = new Mongo.Collection( - Meteor.settings.public.SearchResultsMetadataCollectionName -); - -export {SearchResultsMetadataCollection}; diff --git a/components/webui/imports/api/search/constants.js b/components/webui/imports/api/search/constants.js deleted file mode 100644 index baedddb859..0000000000 --- a/components/webui/imports/api/search/constants.js +++ /dev/null @@ -1,135 +0,0 @@ -/** - * @typedef {string} SearchSignal - */ - -/** - * Enum of search-related signals. - * - * This includes request and response signals for various search operations and their respective - * states. - * - * @enum {SearchSignal} - */ -const SEARCH_SIGNAL = Object.freeze({ - NONE: "none", - - REQ_CANCELLING: "req-cancelling", - REQ_CLEARING: "req-clearing", - REQ_QUERYING: "req-querying", - - RESP_DONE: "resp-done", - RESP_QUERYING: "resp-querying", -}); - -/** - * Checks if the given search signal is a search signal request. - * - * @param {SearchSignal} s - * @return {boolean} - */ -const isSearchSignalReq = (s) => s.startsWith("req-"); - -/** - * Checks if the given search signal is a search signal response. - * - * @param {SearchSignal} s - * @return {boolean} - */ -const isSearchSignalResp = (s) => s.startsWith("resp-"); - -/** - * Checks if the given search signal is a querying request / response. - * - * @param {SearchSignal} s - * @return {boolean} - */ -const isSearchSignalQuerying = (s) => s.endsWith("-querying"); - -/** - * Checks if the given search signal is an operation in progress, which can be used as a - * condition to disable UI elements. - * - * @param {SearchSignal} s - * @return {boolean} - */ -const isOperationInProgress = (s) => ( - (true === isSearchSignalReq(s)) || - (true === isSearchSignalQuerying(s)) -); - -/* eslint-disable sort-keys */ -let enumQueryJobStatus; -/** - * Enum of job statuses, matching the `QueryJobStatus` class in - * `job_orchestration.query_scheduler.constants`. - * - * @enum {number} - */ -const QUERY_JOB_STATUS = Object.freeze({ - PENDING: (enumQueryJobStatus = 0), - RUNNING: ++enumQueryJobStatus, - SUCCEEDED: ++enumQueryJobStatus, - FAILED: ++enumQueryJobStatus, - CANCELLING: ++enumQueryJobStatus, - CANCELLED: ++enumQueryJobStatus, -}); -/* eslint-enable sort-keys */ - -const QUERY_JOB_STATUS_WAITING_STATES = [ - QUERY_JOB_STATUS.PENDING, - QUERY_JOB_STATUS.RUNNING, - QUERY_JOB_STATUS.CANCELLING, -]; - -/* eslint-disable sort-keys */ -let enumQueryType; -/** - * Enum of job type, matching the `QueryJobType` class in - * `job_orchestration.query_scheduler.constants`. - * - * @enum {number} - */ -const QUERY_JOB_TYPE = Object.freeze({ - SEARCH_OR_AGGREGATION: (enumQueryType = 0), - EXTRACT_IR: ++enumQueryType, -}); -/* eslint-enable sort-keys */ - -/** - * Enum of Mongo Collection sort orders. - * - * @enum {string} - */ -const MONGO_SORT_ORDER = Object.freeze({ - ASCENDING: "asc", - DESCENDING: "desc", -}); - -/** - * Enum of search results cache fields. - * - * @enum {string} - */ -const SEARCH_RESULTS_FIELDS = Object.freeze({ - ID: "_id", - TIMESTAMP: "timestamp", -}); - -/** - * The maximum number of results to retrieve for a search. - */ -const SEARCH_MAX_NUM_RESULTS = 1000; - -export { - isOperationInProgress, - isSearchSignalQuerying, - isSearchSignalReq, - isSearchSignalResp, - MONGO_SORT_ORDER, - QUERY_JOB_STATUS, - QUERY_JOB_STATUS_WAITING_STATES, - QUERY_JOB_TYPE, - SEARCH_MAX_NUM_RESULTS, - SEARCH_RESULTS_FIELDS, - SEARCH_SIGNAL, -}; diff --git a/components/webui/imports/api/search/server/QueryJobsDbManager.js b/components/webui/imports/api/search/server/QueryJobsDbManager.js deleted file mode 100644 index 9efc4771cc..0000000000 --- a/components/webui/imports/api/search/server/QueryJobsDbManager.js +++ /dev/null @@ -1,149 +0,0 @@ -import {encode} from "@msgpack/msgpack"; - -import {sleep} from "/imports/utils/misc"; - -import { - QUERY_JOB_STATUS, - QUERY_JOB_STATUS_WAITING_STATES, - QUERY_JOB_TYPE, -} from "../constants"; - - -/** - * Interval in milliseconds for polling the completion status of a job. - */ -const JOB_COMPLETION_STATUS_POLL_INTERVAL_MILLIS = 0.5; - -/** - * Enum of the `query_jobs` table's column names. - * - * @enum {string} - */ -const QUERY_JOBS_TABLE_COLUMN_NAMES = Object.freeze({ - ID: "id", - STATUS: "status", - TYPE: "type", - JOB_CONFIG: "job_config", -}); - -/** - * Class for submitting and monitoring query jobs in the database. - */ -class QueryJobsDbManager { - #sqlDbConnPool; - - #queryJobsTableName; - - /** - * @param {import("mysql2/promise").Pool} sqlDbConnPool - * @param {object} tableNames - * @param {string} tableNames.queryJobsTableName - */ - constructor (sqlDbConnPool, {queryJobsTableName}) { - this.#sqlDbConnPool = sqlDbConnPool; - this.#queryJobsTableName = queryJobsTableName; - } - - /** - * Submits a search job to the database. - * - * @param {object} searchConfig The arguments for the query. - * @return {Promise} The job's ID. - * @throws {Error} on error. - */ - async submitSearchJob (searchConfig) { - const [queryInsertResults] = await this.#sqlDbConnPool.query( - `INSERT INTO ${this.#queryJobsTableName} - (${QUERY_JOBS_TABLE_COLUMN_NAMES.JOB_CONFIG}, - ${QUERY_JOBS_TABLE_COLUMN_NAMES.TYPE}) - VALUES (?, ?)`, - [Buffer.from(encode(searchConfig)), - QUERY_JOB_TYPE.SEARCH_OR_AGGREGATION], - ); - - return queryInsertResults.insertId; - } - - /** - * Submits an aggregation job to the database. - * - * @param {object} searchConfig The arguments for the query. - * @param {number} timeRangeBucketSizeMillis - * @return {Promise} The aggregation job's ID. - * @throws {Error} on error. - */ - async submitAggregationJob (searchConfig, timeRangeBucketSizeMillis) { - const searchAggregationConfig = { - ...searchConfig, - aggregation_config: { - count_by_time_bucket_size: timeRangeBucketSizeMillis, - }, - }; - - return await this.submitSearchJob(searchAggregationConfig); - } - - /** - * Submits a query cancellation request to the database. - * - * @param {number} jobId ID of the job to cancel. - * @return {Promise} - * @throws {Error} on error. - */ - async submitQueryCancellation (jobId) { - await this.#sqlDbConnPool.query( - `UPDATE ${this.#queryJobsTableName} - SET ${QUERY_JOBS_TABLE_COLUMN_NAMES.STATUS} = ${QUERY_JOB_STATUS.CANCELLING} - WHERE ${QUERY_JOBS_TABLE_COLUMN_NAMES.ID} = ? - AND ${QUERY_JOBS_TABLE_COLUMN_NAMES.STATUS} - IN (${QUERY_JOB_STATUS.PENDING}, ${QUERY_JOB_STATUS.RUNNING})`, - jobId, - ); - } - - /** - * Waits for the job to complete. - * - * @param {number} jobId - * @return {Promise} - * @throws {Error} on MySQL error, if the job wasn't found in the database, if the job was - * cancelled, or if the job completed in an unexpected state. - */ - async awaitJobCompletion (jobId) { - while (true) { - let rows; - try { - const [queryRows] = await this.#sqlDbConnPool.query( - ` - SELECT ${QUERY_JOBS_TABLE_COLUMN_NAMES.STATUS} - FROM ${this.#queryJobsTableName} - WHERE ${QUERY_JOBS_TABLE_COLUMN_NAMES.ID} = ? - `, - jobId, - ); - - rows = queryRows; - } catch (e) { - throw new Error(`Failed to query status for job ${jobId} - ${e}`); - } - if (0 === rows.length) { - throw new Error(`Job ${jobId} not found in database.`); - } - const status = rows[0][QUERY_JOBS_TABLE_COLUMN_NAMES.STATUS]; - - if (false === QUERY_JOB_STATUS_WAITING_STATES.includes(status)) { - if (QUERY_JOB_STATUS.CANCELLED === status) { - throw new Error(`Job ${jobId} was cancelled.`); - } else if (QUERY_JOB_STATUS.SUCCEEDED !== status) { - throw new Error(`Job ${jobId} exited with unexpected status=${status}: ` + - `${Object.keys(QUERY_JOB_STATUS)[status]}.`); - } - break; - } - - await sleep(JOB_COMPLETION_STATUS_POLL_INTERVAL_MILLIS); - } - } -} - -export default QueryJobsDbManager; diff --git a/components/webui/imports/api/search/server/collections.js b/components/webui/imports/api/search/server/collections.js deleted file mode 100644 index 58e5db06c3..0000000000 --- a/components/webui/imports/api/search/server/collections.js +++ /dev/null @@ -1,6 +0,0 @@ -import SearchJobCollectionsManager from "../SearchJobCollectionsManager"; - - -const searchJobCollectionsManager = new SearchJobCollectionsManager(); - -export {searchJobCollectionsManager}; diff --git a/components/webui/imports/api/search/server/methods.js b/components/webui/imports/api/search/server/methods.js deleted file mode 100644 index 695b6b4a65..0000000000 --- a/components/webui/imports/api/search/server/methods.js +++ /dev/null @@ -1,263 +0,0 @@ -import {Meteor} from "meteor/meteor"; - -import {logger} from "/imports/utils/logger"; - -import {SearchResultsMetadataCollection} from "../collections"; -import { - SEARCH_MAX_NUM_RESULTS, - SEARCH_SIGNAL, -} from "../constants"; -import {ERROR_NAME_COLLECTION_DROPPED} from "../SearchJobCollectionsManager"; -import {searchJobCollectionsManager} from "./collections"; -import QueryJobsDbManager from "./QueryJobsDbManager"; - - -/** - * @type {QueryJobsDbManager|null} - */ -let queryJobsDbManager = null; - -/** - * Initializes the QueryJobsDbManager. - * - * @param {import("mysql2/promise").Pool} sqlDbConnPool - * @param {object} tableNames - * @param {string} tableNames.queryJobsTableName - * @throws {Error} on error. - */ -const initQueryJobsDbManager = (sqlDbConnPool, {queryJobsTableName}) => { - queryJobsDbManager = new QueryJobsDbManager(sqlDbConnPool, {queryJobsTableName}); -}; - -/** - * Modifies the search results metadata for a given job ID. - * - * @param {object} filter - * @param {number} filter.jobId - * @param {string} filter.lastSignal - * @param {SearchResultsMetadata} fields The fields to be updated in the search results metadata. - */ -const updateSearchResultsMeta = ({ - jobId, - lastSignal, -}, fields) => { - const filter = { - _id: jobId.toString(), - lastSignal: lastSignal, - }; - - const modifier = { - $set: fields, - }; - - logger.debug("SearchResultsMetadataCollection modifier = ", modifier); - SearchResultsMetadataCollection.update(filter, modifier); -}; - -/** - * Updates the search signal when the specified job finishes. - * - * @param {object} props - * @param {number} props.searchJobId of the job to monitor - * @param {number} props.aggregationJobId of the job to monitor - */ -const updateSearchSignalWhenJobsFinish = async ({ - searchJobId, - aggregationJobId, -}) => { - let errorMsg; - try { - await queryJobsDbManager.awaitJobCompletion(searchJobId); - await queryJobsDbManager.awaitJobCompletion(aggregationJobId); - } catch (e) { - errorMsg = e.message; - } - - let numResultsInCollection = -1; - try { - numResultsInCollection = await searchJobCollectionsManager - .getOrCreateCollection(searchJobId) - .countDocuments(); - } catch (e) { - if (ERROR_NAME_COLLECTION_DROPPED === e.error) { - logger.warn(`Collection ${searchJobId} has been dropped.`); - - return; - } - throw e; - } - - updateSearchResultsMeta({ - jobId: searchJobId, - lastSignal: SEARCH_SIGNAL.RESP_QUERYING, - }, { - lastSignal: SEARCH_SIGNAL.RESP_DONE, - errorMsg: errorMsg, - numTotalResults: Math.min( - numResultsInCollection, - SEARCH_MAX_NUM_RESULTS - ), - }); -}; - -/** - * Creates MongoDB indexes for a specific job's collection. - * - * @param {number} searchJobId used to identify the Mongo Collection to add indexes - */ -const createMongoIndexes = async (searchJobId) => { - const timestampAscendingIndex = { - key: { - timestamp: 1, - _id: 1, - }, - name: "timestamp-ascending", - }; - const timestampDescendingIndex = { - key: { - timestamp: -1, - _id: -1, - }, - name: "timestamp-descending", - }; - - const queryJobCollection = searchJobCollectionsManager.getOrCreateCollection(searchJobId); - const queryJobRawCollection = queryJobCollection.rawCollection(); - await queryJobRawCollection.createIndexes([ - timestampAscendingIndex, - timestampDescendingIndex, - ]); -}; - -Meteor.methods({ - /** - * @typedef {object} SubmitQueryResp - * @property {number} searchJobId - * @property {number} aggregationJobId - */ - /** - * Submits a search query and initiates the search process. - * - * @param {object} props - * @param {string} props.queryString - * @param {number} props.timestampBegin - * @param {number} props.timestampEnd - * @param {boolean} props.ignoreCase - * @param {number} props.timeRangeBucketSizeMillis - * @return {SubmitQueryResp} - */ - async "search.submitQuery" ({ - queryString, - timestampBegin, - timestampEnd, - ignoreCase, - timeRangeBucketSizeMillis, - }) { - this.unblock(); - - const args = { - query_string: queryString, - - begin_timestamp: timestampBegin, - end_timestamp: timestampEnd, - ignore_case: ignoreCase, - max_num_results: SEARCH_MAX_NUM_RESULTS, - }; - - logger.info("search.submitQuery args =", args); - - let searchJobId; - let aggregationJobId; - try { - searchJobId = await queryJobsDbManager.submitSearchJob(args); - aggregationJobId = - await queryJobsDbManager.submitAggregationJob(args, timeRangeBucketSizeMillis); - } catch (e) { - const errorMsg = "Unable to submit search/aggregation job to the SQL database."; - logger.error(errorMsg, e.toString()); - throw new Meteor.Error("query-submit-error", errorMsg); - } - - SearchResultsMetadataCollection.insert({ - _id: searchJobId.toString(), - lastSignal: SEARCH_SIGNAL.RESP_QUERYING, - errorMsg: null, - }); - - Meteor.defer(async () => { - await updateSearchSignalWhenJobsFinish({ - searchJobId, - aggregationJobId, - }); - }); - - await createMongoIndexes(searchJobId); - - return {searchJobId, aggregationJobId}; - }, - - /** - * Clears the results of a search operation identified by jobId. - * - * @param {object} props - * @param {number} props.searchJobId of the search results to clear - * @param {number} props.aggregationJobId of the search results to clear - */ - async "search.clearResults" ({ - searchJobId, - aggregationJobId, - }) { - this.unblock(); - - logger.info(`search.clearResults searchJobId=${searchJobId}, ` + - `aggregationJobId=${aggregationJobId}`); - - try { - await searchJobCollectionsManager.dropCollection(searchJobId); - await searchJobCollectionsManager.dropCollection(aggregationJobId); - } catch (e) { - const errorMsg = `Failed to clear search results for searchJobId=${searchJobId}, ` + - `aggregationJobId=${aggregationJobId}`; - - logger.error(errorMsg, e.toString()); - throw new Meteor.Error("clear-results-error", errorMsg); - } - }, - - /** - * Cancels an ongoing search operation identified by jobId. - * - * @param {object} props - * @param {number} props.searchJobId - * @param {number} props.aggregationJobId - */ - async "search.cancelOperation" ({ - searchJobId, - aggregationJobId, - }) { - this.unblock(); - - logger.info(`search.cancelOperation searchJobId=${searchJobId}, ` + - `aggregationJobId=${aggregationJobId}`); - - try { - await queryJobsDbManager.submitQueryCancellation(searchJobId); - await queryJobsDbManager.submitQueryCancellation(aggregationJobId); - updateSearchResultsMeta({ - jobId: searchJobId, - lastSignal: SEARCH_SIGNAL.RESP_QUERYING, - }, { - lastSignal: SEARCH_SIGNAL.RESP_DONE, - errorMsg: "Query cancelled before it could be completed.", - }); - } catch (e) { - const errorMsg = `Failed to submit cancel request for searchJobId=${searchJobId},` + - `aggregationJobId=${aggregationJobId}.`; - - logger.error(errorMsg, e.toString()); - throw new Meteor.Error("query-cancel-error", errorMsg); - } - }, -}); - -export {initQueryJobsDbManager}; diff --git a/components/webui/imports/api/search/server/publications.js b/components/webui/imports/api/search/server/publications.js deleted file mode 100644 index 79650ca788..0000000000 --- a/components/webui/imports/api/search/server/publications.js +++ /dev/null @@ -1,117 +0,0 @@ -import {Meteor} from "meteor/meteor"; - -import {logger} from "/imports/utils/logger"; -import { - MONGO_SORT_BY_ID, - MONGO_SORT_ORDER, -} from "/imports/utils/mongo"; - -import {SearchResultsMetadataCollection} from "../collections"; -import { - SEARCH_MAX_NUM_RESULTS, - SEARCH_RESULTS_FIELDS, -} from "../constants"; -import {searchJobCollectionsManager} from "./collections"; - - -/** - * The interval, in milliseconds, at which the Meteor Mongo collection is polled. - */ -const COLLECTION_POLL_INTERVAL_MILLIS = 250; - -/** - * The maximum value (2^31 - 1) that can be used as a polling interval in JavaScript. - * Reference: https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value - */ -// eslint-disable-next-line no-magic-numbers -const JS_MAX_DELAY_VALUE = (2 ** 31) - 1; - -/** - * Publishes search results metadata for a specific job. - * - * @param {string} publicationName - * @param {object} props - * @param {string} props.searchJobId of the search operation - * @return {Mongo.Cursor} cursor that provides access to the search results metadata. - */ -Meteor.publish(Meteor.settings.public.SearchResultsMetadataCollectionName, ({searchJobId}) => { - logger.debug( - `Subscription '${Meteor.settings.public.SearchResultsMetadataCollectionName}'`, - `searchJobId=${searchJobId}` - ); - - const filter = { - _id: searchJobId.toString(), - }; - - return SearchResultsMetadataCollection.find(filter); -}); - -/** - * Publishes search results for a specific search job. - * - * @param {string} publicationName - * @param {object} props - * @param {string} props.searchJobId - * @param {boolean} props.isExpectingUpdates Whether the subscriber - * expects that the collection will be updated. - * @return {Mongo.Cursor} cursor that provides access to the search results. - */ -Meteor.publish(Meteor.settings.public.SearchResultsCollectionName, ({ - searchJobId, - isExpectingUpdates, -}) => { - logger.debug( - `Subscription '${Meteor.settings.public.SearchResultsCollectionName}'`, - `searchJobId=${searchJobId}`, - `isExpectingUpdates=${isExpectingUpdates}` - ); - - const collection = searchJobCollectionsManager.getOrCreateCollection(searchJobId); - const findOptions = { - sort: [ - /* eslint-disable @stylistic/js/array-element-newline */ - [SEARCH_RESULTS_FIELDS.TIMESTAMP, MONGO_SORT_ORDER.DESCENDING], - MONGO_SORT_BY_ID, - /* eslint-enable @stylistic/js/array-element-newline */ - ], - limit: SEARCH_MAX_NUM_RESULTS, - disableOplog: true, - pollingIntervalMs: isExpectingUpdates ? - COLLECTION_POLL_INTERVAL_MILLIS : - JS_MAX_DELAY_VALUE, - }; - - return collection.find({}, findOptions); -}); - -/** - * Publishes search aggregation results for a specific aggregation job. - * - * @param {string} publicationName - * @param {object} props - * @param {string} props.aggregationJobId - * @param {boolean} props.isExpectingUpdates Whether the subscriber - * expects that the collection will be updated. - * @return {Mongo.Cursor} cursor that provides access to the aggregation results. - */ -Meteor.publish(Meteor.settings.public.AggregationResultsCollectionName, ({ - aggregationJobId, - isExpectingUpdates, -}) => { - logger.debug( - `Subscription '${Meteor.settings.public.AggregationResultsCollectionName}'`, - `aggregationJobId=${aggregationJobId}`, - `isExpectingUpdates=${isExpectingUpdates}` - ); - - const collection = searchJobCollectionsManager.getOrCreateCollection(aggregationJobId); - const findOptions = { - disableOplog: true, - pollingIntervalMs: isExpectingUpdates ? - COLLECTION_POLL_INTERVAL_MILLIS : - JS_MAX_DELAY_VALUE, - }; - - return collection.find({}, findOptions); -}); diff --git a/components/webui/imports/api/search/types.js b/components/webui/imports/api/search/types.js deleted file mode 100644 index bb0d00ad4f..0000000000 --- a/components/webui/imports/api/search/types.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @typedef {object} TimeRange - * @property {import("dayjs").Dayjs} begin - * @property {import("dayjs").Dayjs} end - */ - -/** - * @typedef {object} TimelineConfig - * @property {import("dayjs/plugin/duration").Duration} bucketDuration - * @property {TimeRange} range - */ - -/** - * @typedef {object} TimelineBucket - * @property {number} timestamp Timestamp as milliseconds since the Unix epoch. - * @property {number} count - */ - -/** - * @typedef {object} ChartJsDatasetItem - * @property {number} x - * @property {number} y - */ diff --git a/components/webui/imports/ui/App.jsx b/components/webui/imports/ui/App.jsx deleted file mode 100644 index dd8e9766c7..0000000000 --- a/components/webui/imports/ui/App.jsx +++ /dev/null @@ -1,92 +0,0 @@ -import { - useEffect, - useState, -} from "react"; -import { - Redirect, - Route, - Switch, -} from "react-router"; - -import { - faFileUpload, - faSearch, -} from "@fortawesome/free-solid-svg-icons"; - -import {LOCAL_STORAGE_KEYS} from "./constants"; -import IngestView from "./IngestView/IngestView"; -import SearchView from "./SearchView/SearchView"; -import Sidebar from "./Sidebar/Sidebar"; - -import "./App.scss"; - - -const ROUTES = [ - { - path: "/ingest", - label: "Ingest", - icon: faFileUpload, - component: IngestView, - }, - { - path: "/search", - label: "Search", - icon: faSearch, - component: SearchView, - }, -]; - -/** - * Represents the top-level application component. - * - * @return {React.ReactElement} The rendered App component. - */ -const App = () => { - const [isSidebarCollapsed, setIsSidebarCollapsed] = useState( - "true" === localStorage.getItem(LOCAL_STORAGE_KEYS.IS_SIDEBAR_COLLAPSED), - ); - - useEffect(() => { - localStorage.setItem( - LOCAL_STORAGE_KEYS.IS_SIDEBAR_COLLAPSED, - isSidebarCollapsed.toString() - ); - }, [isSidebarCollapsed]); - - const handleSidebarToggle = () => { - setIsSidebarCollapsed(false === isSidebarCollapsed); - }; - - return ( - <> - -
- - - - - - - - - - - -
- - ); -}; - -export {App}; diff --git a/components/webui/imports/ui/App.scss b/components/webui/imports/ui/App.scss deleted file mode 100644 index 759d18f686..0000000000 --- a/components/webui/imports/ui/App.scss +++ /dev/null @@ -1,19 +0,0 @@ -@import "./bootstrap-customized"; - -html { - font-size: 14px; - height: 100%; -} - -body { - background-image: linear-gradient(165deg, white 80%, rgba(122, 194, 204, 0.1) 80%), - linear-gradient(115deg, white 90%, rgba(122, 194, 204, 0.2) 90%); - font-family: 'Source Sans 3', sans-serif; - height: 100%; -} - -#page-container { - flex-grow: 1; - - overflow-y: auto; -} diff --git a/components/webui/imports/ui/IngestView/IngestView.jsx b/components/webui/imports/ui/IngestView/IngestView.jsx deleted file mode 100644 index d3b2163f91..0000000000 --- a/components/webui/imports/ui/IngestView/IngestView.jsx +++ /dev/null @@ -1,51 +0,0 @@ -import {useTracker} from "meteor/react-meteor-data"; -import Col from "react-bootstrap/Col"; -import Container from "react-bootstrap/Container"; -import Row from "react-bootstrap/Row"; - -import {StatsCollection} from "/imports/api/ingestion/collections"; - -import Details from "./panels/Details"; -import IngestionJobs from "./panels/IngestionJobs"; -import SpaceSavings from "./panels/SpaceSavings"; - -import "./IngestView.scss"; - - -/** - * Presents compression statistics. - * - * @return {React.ReactElement} - */ -const IngestView = () => { - const stats = useTracker(() => { - Meteor.subscribe(Meteor.settings.public.StatsCollectionName); - - return StatsCollection.findOne(); - }, []); - - return ( - - - - {stats && - - -
- } - - - - - - - ); -}; - -export default IngestView; diff --git a/components/webui/imports/ui/IngestView/IngestView.scss b/components/webui/imports/ui/IngestView/IngestView.scss deleted file mode 100644 index 63402d6a97..0000000000 --- a/components/webui/imports/ui/IngestView/IngestView.scss +++ /dev/null @@ -1,75 +0,0 @@ -@import "../bootstrap-customized"; - -.ingest-container { - // Background highlight - background: linear-gradient(to bottom, #004850, #004850 160px, transparent 160px); - padding: 30px; -} - -.panel { - background-color: white; - border: 1px solid #ddd; - border-radius: 3px; - box-shadow: 0 1px 11px 0 rgba(0, 0, 0, 0.1); - padding: 15px; - margin: 10px 0; -} - -.panel-h1 { - font-size: 1.5rem; - line-height: 1.5rem; - margin: 0 0 15px 0; -} - -.panel-icon { - color: #004850; - font-size: 1.5rem; - line-height: 1.5rem; -} - -.ingest { - &-stats { - &-details { - &-icon-container { - width: 40px; - - flex: 0 0 auto; - margin-right: 10px; - - color: #ad1869; - font-size: 40px; - line-height: 40px; - text-align: center; - } - - &-text-container { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; - } - - &-row { - border-top: 1px solid #eee; - display: flex; - flex-wrap: wrap; - padding: 15px 0; - } - } - - &-detail { - display: block; - font-family: "Roboto Mono", monospace; - font-weight: 600; - font-size: 1.5rem; - line-height: 1; - } - } -} - -.ingest-stat-bar { - height: 4px !important; -} - -.ingest-stat-bar > .progress-bar { - background-color: $info; -} diff --git a/components/webui/imports/ui/IngestView/Panel.jsx b/components/webui/imports/ui/IngestView/Panel.jsx deleted file mode 100644 index 559187df47..0000000000 --- a/components/webui/imports/ui/IngestView/Panel.jsx +++ /dev/null @@ -1,47 +0,0 @@ -import Col from "react-bootstrap/Col"; -import Row from "react-bootstrap/Row"; - -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - - -/** - * Represents a Panel component. - * - * @param {object} props - * @param {React.ReactNode} props.children The content of the Panel. - * @param {import("@fortawesome/react-fontawesome").IconProp} props.faIcon The FontAwesomeIcon to - * display in the Panel. - * @param {string} props.title - * @param {object} props.rootColProps - * @return {React.ReactElement} - */ -const Panel = ({ - children, - faIcon, - title, - ...rootColProps -}) => ( - -
- - -

- {title} -

- - - - - - - {children} - - -
-
- -); - -export default Panel; diff --git a/components/webui/imports/ui/IngestView/panels/Details/DetailsRow.jsx b/components/webui/imports/ui/IngestView/panels/Details/DetailsRow.jsx deleted file mode 100644 index 144c5d7bcb..0000000000 --- a/components/webui/imports/ui/IngestView/panels/Details/DetailsRow.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - - -/** - * Represents a compression stats details row. - * - * @param {object} props - * @param {React.ReactNode} props.children The content in the Detail row. - * @param {import("@fortawesome/react-fontawesome").IconProp} props.faIcon The FontAwesomeIcon to - * display in the Detail row. - * @param {string} props.title - * @return {React.ReactElement} - */ -const DetailsRow = ({ - faIcon, - children, - title, -}) => ( -
-
- -
-
-
- {children} -
- - {title} - -
-
-); - -export default DetailsRow; diff --git a/components/webui/imports/ui/IngestView/panels/Details/index.jsx b/components/webui/imports/ui/IngestView/panels/Details/index.jsx deleted file mode 100644 index b1cc86ee76..0000000000 --- a/components/webui/imports/ui/IngestView/panels/Details/index.jsx +++ /dev/null @@ -1,92 +0,0 @@ -import dayjs from "dayjs"; - -import { - faChartBar, - faClock, - faEnvelope, - faFileAlt, -} from "@fortawesome/free-solid-svg-icons"; - -import {DATETIME_FORMAT_TEMPLATE} from "/imports/utils/datetime"; - -import Panel from "../../Panel"; -import DetailsRow from "./DetailsRow"; - - -/** - * Presents details from the given statistics. - * - * @param {object} props - * @param {CompressionStats} props.stats - * @return {React.ReactElement} - */ -const Details = ({stats}) => { - const { - begin_timestamp: beginTimestamp, - end_timestamp: endTimestamp, - num_files: numFiles, - num_messages: numMessages, - } = stats; - - let timeRangeRow = null; - if (null !== endTimestamp) { - timeRangeRow = ( - -
- {dayjs.utc(Number(beginTimestamp)).format(DATETIME_FORMAT_TEMPLATE)} - {" to"} -
-
- {dayjs.utc(Number(endTimestamp)).format(DATETIME_FORMAT_TEMPLATE)} -
-
- ); - } - - let numFilesRow = null; - if (null !== numFiles) { - numFilesRow = ( - - {Number(numFiles).toLocaleString()} - - ); - } - - let numMessagesRow = null; - if (null !== numMessages) { - numMessagesRow = ( - - {Number(numMessages).toLocaleString()} - - ); - } - - if (!(timeRangeRow || numFilesRow || numMessagesRow)) { - // No details to display - return <>; - } - - return ( - - {timeRangeRow} - {numFilesRow} - {numMessagesRow} - - ); -}; - -export default Details; diff --git a/components/webui/imports/ui/IngestView/panels/IngestionJobs/IngestionJobRow.jsx b/components/webui/imports/ui/IngestView/panels/IngestionJobs/IngestionJobRow.jsx deleted file mode 100644 index de23ec02be..0000000000 --- a/components/webui/imports/ui/IngestView/panels/IngestionJobs/IngestionJobRow.jsx +++ /dev/null @@ -1,113 +0,0 @@ -import OverlayTrigger from "react-bootstrap/OverlayTrigger"; -import Spinner from "react-bootstrap/Spinner"; -import Tooltip from "react-bootstrap/Tooltip"; - -import dayjs from "dayjs"; - -import { - faCheck, - faClock, - faExclamation, -} from "@fortawesome/free-solid-svg-icons"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - -import { - COMPRESSION_JOB_STATUS, - COMPRESSION_JOB_STATUS_NAMES, -} from "/imports/api/ingestion/constants"; -import {computeHumanSize} from "/imports/utils/misc"; - -import PlaceholderText from "./PlaceholderText"; - - -/** - * Icons corresponding to different compression job statuses. - * - * @type {{[key: CompressionJobStatus]: import("@fortawesome/react-fontawesome").IconProp}} - */ -const COMPRESSION_JOB_STATUS_ICONS = Object.freeze({ - [COMPRESSION_JOB_STATUS.PENDING]: faClock, - [COMPRESSION_JOB_STATUS.SUCCEEDED]: faCheck, - [COMPRESSION_JOB_STATUS.FAILED]: faExclamation, -}); - -/** - * Renders an ingestion job. - * - * @param {import("/imports/api/ingestion/types").CompressionJob} job The job object containing - * information about the compression job. - * @return {React.ReactElement} - */ -const IngestionJobRow = ({job}) => { - let uncompressedSizeText = ""; - let compressedSizeText = ""; - let speedText = ""; - - if (null === job.duration && null !== job.start_time) { - job.duration = dayjs.duration( - dayjs() - dayjs(job.start_time) - ).asSeconds(); - } - - const uncompressedSize = Number(job.uncompressed_size); - if (false === isNaN(uncompressedSize) && 0 !== uncompressedSize) { - uncompressedSizeText = computeHumanSize(uncompressedSize); - } - - const compressedSize = Number(job.compressed_size); - if (false === isNaN(compressedSize) && 0 !== compressedSize) { - compressedSizeText = computeHumanSize(compressedSize); - } - - if ( - false === isNaN(uncompressedSize) && - 0 !== uncompressedSize && - 0 < job.duration - ) { - speedText = `${computeHumanSize(job.uncompressed_size / job.duration)}/s`; - } - - const isPlaceholderVisible = job.status !== COMPRESSION_JOB_STATUS.FAILED; - - return ( - - - - {COMPRESSION_JOB_STATUS_NAMES[job.status]} - {job.status_msg && (` - ${job.status_msg}`)} - - } - > - {COMPRESSION_JOB_STATUS.RUNNING === job.status ? - : - } - - - - {job._id} - - - - - - - - - - - - ); -}; - -export default IngestionJobRow; diff --git a/components/webui/imports/ui/IngestView/panels/IngestionJobs/IngestionJobs.scss b/components/webui/imports/ui/IngestView/panels/IngestionJobs/IngestionJobs.scss deleted file mode 100644 index 0212c12ca2..0000000000 --- a/components/webui/imports/ui/IngestView/panels/IngestionJobs/IngestionJobs.scss +++ /dev/null @@ -1,3 +0,0 @@ -.ingestion-jobs-table { - table-layout: fixed; -} diff --git a/components/webui/imports/ui/IngestView/panels/IngestionJobs/PlaceholderText.jsx b/components/webui/imports/ui/IngestView/panels/IngestionJobs/PlaceholderText.jsx deleted file mode 100644 index ac0f07f83c..0000000000 --- a/components/webui/imports/ui/IngestView/panels/IngestionJobs/PlaceholderText.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import Placeholder from "react-bootstrap/Placeholder"; - -import "./PlaceholderText.scss"; - - -/** - * Renders an animated text placeholder when the text is an empty string. - * - * @param {object} props - * @param {string} props.text - * @param {boolean} props.isAlwaysVisible - * @return {React.ReactElement} - */ -const PlaceholderText = ({ - text, - isAlwaysVisible = true, -}) => ( - - {(0 !== text.length) ? - text : - ( - (isAlwaysVisible) && - - )} - -); - -export default PlaceholderText; diff --git a/components/webui/imports/ui/IngestView/panels/IngestionJobs/PlaceholderText.scss b/components/webui/imports/ui/IngestView/panels/IngestionJobs/PlaceholderText.scss deleted file mode 100644 index af0a489df5..0000000000 --- a/components/webui/imports/ui/IngestView/panels/IngestionJobs/PlaceholderText.scss +++ /dev/null @@ -1,3 +0,0 @@ -.placeholder-element { - border-radius: 3px; -} diff --git a/components/webui/imports/ui/IngestView/panels/IngestionJobs/index.jsx b/components/webui/imports/ui/IngestView/panels/IngestionJobs/index.jsx deleted file mode 100644 index 9591d5e008..0000000000 --- a/components/webui/imports/ui/IngestView/panels/IngestionJobs/index.jsx +++ /dev/null @@ -1,64 +0,0 @@ -import {useTracker} from "meteor/react-meteor-data"; -import Table from "react-bootstrap/Table"; - -import {faBarsProgress} from "@fortawesome/free-solid-svg-icons"; - -import {CompressionJobsCollection} from "/imports/api/ingestion/collections"; -import {MONGO_SORT_BY_ID} from "/imports/utils/mongo"; - -import Panel from "../../Panel"; -import IngestionJobRow from "./IngestionJobRow"; - -import "./IngestionJobs.scss"; - - -/** - * Displays a table of ingestion jobs. - * - * @return {React.ReactElement} - */ -const IngestionJobs = () => { - const compressionJobs = useTracker(() => { - Meteor.subscribe(Meteor.settings.public.CompressionJobsCollectionName); - - const findOptions = { - sort: [MONGO_SORT_BY_ID], - }; - - return CompressionJobsCollection.find({}, findOptions).fetch(); - }, []); - - if (0 === compressionJobs.length) { - return <>; - } - - return ( - - - - - - - - - - - - - {compressionJobs.map((job, i) => ( - - ))} - -
StatusJob IDSpeedData IngestedCompressed Size
-
- ); -}; - -export default IngestionJobs; diff --git a/components/webui/imports/ui/IngestView/panels/SpaceSavings.jsx b/components/webui/imports/ui/IngestView/panels/SpaceSavings.jsx deleted file mode 100644 index d30a4ca216..0000000000 --- a/components/webui/imports/ui/IngestView/panels/SpaceSavings.jsx +++ /dev/null @@ -1,73 +0,0 @@ -import Col from "react-bootstrap/Col"; -import ProgressBar from "react-bootstrap/ProgressBar"; -import Row from "react-bootstrap/Row"; - -import {faHdd} from "@fortawesome/free-solid-svg-icons"; - -import {computeHumanSize} from "/imports/utils/misc"; - -import Panel from "../Panel"; - - -/** - * Presents space savings from the given statistics. - * - * @param {object} props - * @param {CompressionStats} props.stats - * @return {React.ReactElement} - */ -const SpaceSavings = ({stats}) => { - const logsUncompressedSize = parseInt(stats.total_uncompressed_size, 10) || 0; - const logsCompressedSize = parseInt(stats.total_compressed_size, 10) || 0; - const spaceSavings = 0 < logsUncompressedSize ? - 100 * (1 - (logsCompressedSize / logsUncompressedSize)) : - 0; - - return ( - - - - - - {`${spaceSavings.toFixed(2)}%`} - - - - - - -
- {computeHumanSize(logsUncompressedSize)} - {" "} - before compression - -
- -
- - -
- {computeHumanSize(logsCompressedSize)} - {" "} - after compression - -
- -
-
- ); -}; - -export default SpaceSavings; diff --git a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsCaseSensitivity/SearchControlsCaseSensitivityCheck.jsx b/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsCaseSensitivity/SearchControlsCaseSensitivityCheck.jsx deleted file mode 100644 index cd735598da..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsCaseSensitivity/SearchControlsCaseSensitivityCheck.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import Form from "react-bootstrap/Form"; - - -/** - * Renders a case sensitivity checkbox. - * - * @param {object} props - * @param {string} props.label - * @param {object} props.rest - * @return {React.ReactElement} - */ -const SearchControlsCaseSensitivityCheck = ({ - label, - ...rest -}) => ( - -); - -export default SearchControlsCaseSensitivityCheck; diff --git a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsCaseSensitivity/index.jsx b/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsCaseSensitivity/index.jsx deleted file mode 100644 index 3460d10e3b..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsCaseSensitivity/index.jsx +++ /dev/null @@ -1,51 +0,0 @@ -import Col from "react-bootstrap/Col"; -import Form from "react-bootstrap/Form"; -import Row from "react-bootstrap/Row"; - -import SearchControlsFilterLabel from "../SearchControlsFilterLabel"; -import SearchControlsCaseSensitivityCheck from "./SearchControlsCaseSensitivityCheck"; - - -/** - * Represents a component for selecting case sensitivity. - * - * @param {object} props - * @param {boolean} props.ignoreCase - * @param {Function} props.setIgnoreCase - * @return {React.ReactElement} - */ -const SearchControlsCaseSensitivity = ({ - ignoreCase, - setIgnoreCase, -}) => { - /** - * Handles case sensitivity change. - * - * @param {InputEvent} event - */ - const handleCaseSensitivityChange = (event) => { - setIgnoreCase("true" === event.target.value); - }; - - return ( - - - Case sensitivity - - - - - - - ); -}; - -export default SearchControlsCaseSensitivity; diff --git a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsFilterDrawer.scss b/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsFilterDrawer.scss deleted file mode 100644 index 4679e2392f..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsFilterDrawer.scss +++ /dev/null @@ -1,11 +0,0 @@ -.search-filter { - &-controls-drawer { - background-color: #efefef; - } - - &-control-label { - color: #666; - - min-width: 9rem; - } -} diff --git a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsFilterLabel.jsx b/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsFilterLabel.jsx deleted file mode 100644 index 870e2dbf83..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsFilterLabel.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import Form from "react-bootstrap/Form"; - - -/** - * Renders a label for a search filter control. - * - * @param {object} props - * @return {React.ReactElement} - */ -const SearchControlsFilterLabel = (props) => ( - -); - -export default SearchControlsFilterLabel; diff --git a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/SearchControlsDatePicker.jsx b/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/SearchControlsDatePicker.jsx deleted file mode 100644 index 9243d76418..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/SearchControlsDatePicker.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import DatePicker from "react-datepicker"; - -import "react-datepicker/dist/react-datepicker.css"; -import "./SearchControlsTimeRangeInput.scss"; - - -/** - * Renders a date picker control for selecting date and time. - * - * @param {object} props - * @return {React.ReactElement} - */ -const SearchControlsDatePicker = (props) => ( - -); - -export default SearchControlsDatePicker; diff --git a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/SearchControlsTimeRangeInput.scss b/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/SearchControlsTimeRangeInput.scss deleted file mode 100644 index c16645f3b0..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/SearchControlsTimeRangeInput.scss +++ /dev/null @@ -1,10 +0,0 @@ -.timestamp-picker { - border: 1px solid rgb(206, 212, 218); - border-radius: 0; - - font-size: 0.875rem; - line-height: 1.5; - - height: calc(1.5em + 0.5rem + 2px); - padding: 0.25rem 0.5rem; -} diff --git a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/index.jsx b/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/index.jsx deleted file mode 100644 index 382212ad65..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/SearchControlsTimeRangeInput/index.jsx +++ /dev/null @@ -1,139 +0,0 @@ -import Col from "react-bootstrap/Col"; -import Dropdown from "react-bootstrap/Dropdown"; -import DropdownButton from "react-bootstrap/DropdownButton"; -import Form from "react-bootstrap/Form"; -import InputGroup from "react-bootstrap/InputGroup"; -import Row from "react-bootstrap/Row"; - -import { - computeTimeRange, - convertLocalDateToSameUtcDatetime, - convertUtcDatetimeToSameLocalDate, - TIME_RANGE_PRESET_LABEL, - TIME_UNIT, -} from "/imports/utils/datetime"; - -import SearchControlsFilterLabel from "../SearchControlsFilterLabel"; -import SearchControlsDatePicker from "./SearchControlsDatePicker"; - - -/** - * Represents a component for selecting a time range. - * - * @param {object} props - * @param {object} props.timeRange - * @param {Function} props.setTimeRange - * @return {React.ReactElement} - */ -const SearchControlsTimeRangeInput = ({ - timeRange, - setTimeRange, -}) => { - /** - * Updates the `begin` timestamp of the time range. - * - * @param {Date} localDateBegin The local date to be used for updating the beginning timestamp. - */ - const handleBeginDateChange = (localDateBegin) => { - const utcDatetime = convertLocalDateToSameUtcDatetime(localDateBegin); - - if (utcDatetime > timeRange.end) { - setTimeRange({ - begin: utcDatetime, - end: utcDatetime, - }); - } else { - setTimeRange((v) => ({ - ...v, - begin: utcDatetime, - })); - } - }; - - /** - * Updates the `end` timestamp of the time range. - * - * @param {Date} localDateEnd The local date to be used for updating the ending timestamp. - */ - const handleEndDateChange = (localDateEnd) => { - const utcDatetime = convertLocalDateToSameUtcDatetime(localDateEnd); - - setTimeRange( - (v) => ({ - ...v, - end: utcDatetime, - }), - ); - }; - - const handleTimeRangePresetSelection = (event) => { - event.preventDefault(); - - const presetToken = event.target.getAttribute("data-preset"); - const newTimeRange = computeTimeRange(presetToken); - - setTimeRange(newTimeRange); - }; - - // Compute range of end timestamp so that it's after the beginning timestamp - let datepickerEndMin = null; - let datepickerEndMax = null; - if (timeRange.begin.isSame(timeRange.end, TIME_UNIT.DAY)) { - datepickerEndMin = timeRange.begin; - datepickerEndMax = timeRange.end.endOf(TIME_UNIT.DAY); - } - - const timeRangePresetItems = Object.entries(TIME_RANGE_PRESET_LABEL).map(([token, label]) => ( - - {label} - - )); - - return ( - - - Time range - - - - - {timeRangePresetItems} - - - - to - - - - - - ); -}; - -export default SearchControlsTimeRangeInput; diff --git a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/index.jsx b/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/index.jsx deleted file mode 100644 index 61a1848f70..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/SearchControlsFilterDrawer/index.jsx +++ /dev/null @@ -1,41 +0,0 @@ -import Container from "react-bootstrap/Container"; - -import SearchControlsCaseSensitivity from "./SearchControlsCaseSensitivity"; -import SearchControlsTimeRangeInput from "./SearchControlsTimeRangeInput"; - -import "./SearchControlsFilterDrawer.scss"; - - -/** - * Renders the controls for filtering search results by time range, including a date picker and - * preset time range options. - * - * @param {object} props - * @param {boolean} props.ignoreCase - * @param {Function} props.setIgnoreCase - * @param {Function} props.setTimeRange - * @param {TimeRange} props.timeRange - * @return {React.ReactElement} - */ -const SearchControlsFilterDrawer = ({ - ignoreCase, - setIgnoreCase, - setTimeRange, - timeRange, -}) => { - return ( - - - - - ); -}; - -export default SearchControlsFilterDrawer; diff --git a/components/webui/imports/ui/SearchView/SearchControls/index.jsx b/components/webui/imports/ui/SearchView/SearchControls/index.jsx deleted file mode 100644 index 81751f46c8..0000000000 --- a/components/webui/imports/ui/SearchView/SearchControls/index.jsx +++ /dev/null @@ -1,163 +0,0 @@ -import { - useEffect, - useRef, - useState, -} from "react"; -import Button from "react-bootstrap/Button"; -import Form from "react-bootstrap/Form"; -import InputGroup from "react-bootstrap/InputGroup"; - -import { - faBars, - faSearch, - faTimes, - faTrash, -} from "@fortawesome/free-solid-svg-icons"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - -import {CLP_STORAGE_ENGINES} from "/imports/api/constants"; -import { - isOperationInProgress, - isSearchSignalReq, - SEARCH_SIGNAL, -} from "/imports/api/search/constants"; - -import {LOCAL_STORAGE_KEYS} from "../../constants"; -import SearchControlsFilterDrawer from "./SearchControlsFilterDrawer"; - - -/** - * Renders the search controls including query input, filter drawer toggle, and operation buttons - * like submit, clear, and cancel. It also manages the state of the drawer. - * - * @param {object} props - * @param {boolean} props.ignoreCase - * @param {Function} props.onCancelOperation - * @param {Function} props.onClearResults - * @param {Function} props.onSubmitQuery - * @param {string} props.queryString - * @param {SearchResultsMetadata} props.resultsMetadata - * @param {Function} props.setIgnoreCase - * @param {Function} props.setQueryString - * @param {Function} props.setTimeRange - * @param {TimeRange} props.timeRange - * @return {React.ReactElement} - */ -const SearchControls = ({ - ignoreCase, - onCancelOperation, - onClearResults, - onSubmitQuery, - queryString, - resultsMetadata, - setIgnoreCase, - setQueryString, - setTimeRange, - timeRange, -}) => { - const [drawerOpen, setDrawerOpen] = useState( - "true" === localStorage.getItem(LOCAL_STORAGE_KEYS.SEARCH_CONTROLS_VISIBLE) - ); - const inputRef = useRef(null); - - const isInputDisabled = isOperationInProgress(resultsMetadata.lastSignal); - - useEffect(() => { - if (false === isInputDisabled) { - inputRef.current?.focus(); - } - }, [isInputDisabled]); - - useEffect(() => { - localStorage.setItem(LOCAL_STORAGE_KEYS.SEARCH_CONTROLS_VISIBLE, drawerOpen.toString()); - }, [drawerOpen]); - - const queryChangeHandler = (e) => { - setQueryString(e.target.value); - }; - - const handleDrawerToggleClick = () => { - setDrawerOpen(!drawerOpen); - }; - - const handleQuerySubmission = (e) => { - e.preventDefault(); - - onSubmitQuery(); - }; - - const queryPlaceholderText = - CLP_STORAGE_ENGINES.CLP === Meteor.settings.public.ClpStorageEngine ? - "Enter a wildcard query..." : - "Enter a KQL query..."; - - return ( - <> -
- - - - - {(SEARCH_SIGNAL.RESP_DONE === resultsMetadata.lastSignal) && - } - {(SEARCH_SIGNAL.RESP_QUERYING === resultsMetadata.lastSignal) ? - : - } - - -
- - {drawerOpen && } - - ); -}; - -export default SearchControls; diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsHeader/SearchResultsHeader.scss b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsHeader/SearchResultsHeader.scss deleted file mode 100644 index 54093c9f54..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsHeader/SearchResultsHeader.scss +++ /dev/null @@ -1,11 +0,0 @@ -.search-results-title-bar { - background-color: #fff; -} - -.search-results-count { - padding: 0.375rem 0; - - color: #999; - font-size: 1rem; - line-height: 1.5; -} diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsHeader/index.jsx b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsHeader/index.jsx deleted file mode 100644 index 548f4e4f2a..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsHeader/index.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import Button from "react-bootstrap/Button"; -import Col from "react-bootstrap/Col"; -import Container from "react-bootstrap/Container"; -import Form from "react-bootstrap/Form"; -import InputGroup from "react-bootstrap/InputGroup"; -import OverlayTrigger from "react-bootstrap/OverlayTrigger"; -import Popover from "react-bootstrap/Popover"; -import Row from "react-bootstrap/Row"; - -import {faCog} from "@fortawesome/free-solid-svg-icons"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - -import "./SearchResultsHeader.scss"; - - -/** - * Renders the header for the search results, which includes the search job ID, the number of - * results found, and a control for setting the maximum number of lines per search result. - * - * @param {object} props - * @param {number} props.maxLinesPerResult - * @param {number} props.numResultsInTotal - * @param {number} props.searchJobId - * @param {Function} props.setMaxLinesPerResult - * @return {React.ReactElement} - */ -const SearchResultsHeader = ({ - maxLinesPerResult, - numResultsInTotal, - searchJobId, - setMaxLinesPerResult, -}) => { - const handleMaxLinesPerResultSubmission = (e) => { - e.preventDefault(); - const value = parseInt(e.target.elements.maxLinesPerResult.value, 10); - if (0 < value) { - setMaxLinesPerResult(value); - } - }; - - return ( - <> - - - - - Job ID - {" "} - {searchJobId} - {" "} - | Results count: - {" "} - {numResultsInTotal} - - - - -
- - Max lines per result - - -
- - } - > - -
- -
-
- - ); -}; - -export default SearchResultsHeader; diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.jsx b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.jsx deleted file mode 100644 index b7f62e1d82..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.jsx +++ /dev/null @@ -1,104 +0,0 @@ -import { - useEffect, - useRef, -} from "react"; -import Spinner from "react-bootstrap/Spinner"; - -import {faCircleInfo} from "@fortawesome/free-solid-svg-icons"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - -import {SEARCH_MAX_NUM_RESULTS} from "/imports/api/search/constants"; - -import "./SearchResultsLoadSensor.scss"; - - -/** - * The interval, in milliseconds, at which the search results load sensor should poll for updates. - */ -const SEARCH_RESULTS_LOAD_SENSOR_POLL_INTERVAL_MILLIS = 200; - -/** - * Senses if the user has requested to load more results by scrolling until - * this element becomes partially visible. - * - * @param {object} props - * @param {boolean} props.hasMoreResultsInCache - * @param {boolean} props.hasMoreResultsInTotal - * @param {Function} props.onLoadMoreResults - * @return {React.ReactElement} - */ -const SearchResultsLoadSensor = ({ - hasMoreResultsInCache, - hasMoreResultsInTotal, - onLoadMoreResults, -}) => { - const loadingBlockRef = useRef(null); - const loadIntervalRef = useRef(null); - - useEffect(() => { - if (false === hasMoreResultsInCache) { - return () => null; - } - - const observer = new IntersectionObserver((entries) => { - if (entries[0].isIntersecting) { - onLoadMoreResults(); - loadIntervalRef.current = setInterval( - onLoadMoreResults, - SEARCH_RESULTS_LOAD_SENSOR_POLL_INTERVAL_MILLIS, - ); - } else if (null !== loadIntervalRef.current) { - clearInterval(loadIntervalRef.current); - loadIntervalRef.current = null; - } - }); - - observer.observe(loadingBlockRef.current); - - return () => { - if (null !== loadIntervalRef.current) { - clearInterval(loadIntervalRef.current); - loadIntervalRef.current = null; - } - observer.disconnect(); - }; - }, [ - hasMoreResultsInCache, - onLoadMoreResults, - ]); - - return ( -
- {(hasMoreResultsInCache) && -
- - Loading... -
} - {(false === hasMoreResultsInCache && hasMoreResultsInTotal) && -
- - - Showing the top - {" "} - {SEARCH_MAX_NUM_RESULTS} - {" "} - results by time. To view any other results, please refine your search. - -
} -
- ); -}; - -export default SearchResultsLoadSensor; diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.scss b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.scss deleted file mode 100644 index c9881458b3..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsLoadSensor.scss +++ /dev/null @@ -1,9 +0,0 @@ -.search-results-load-sensor-content { - display: flex; - align-items: center; - gap: 10px; - padding-inline: 10px; - padding-bottom: 12px; - - font-size: 1.3rem; -} diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsTable.scss b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsTable.scss deleted file mode 100644 index 063900dfb3..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/SearchResultsTable.scss +++ /dev/null @@ -1,61 +0,0 @@ -.search-results-container { - overflow-y: auto; - background: white; -} - -// NOTE: We use a hierarchical selector to override Bootstrap's hierarchical selector (classes can't override hierarchical selectors without !important) -.search-results thead th { - border: none; - padding: 0; -} - -.search-results-th { - position: sticky; - top: 0; - - &-sortable { - cursor: pointer; - user-select: none; - } -} - -.search-results-table-header { - background-color: #fff; - border-bottom: 1px solid #ccc; - border-top: 1px solid #dee2e6; - padding: 10px; -} - -.search-results-content { - overflow: auto; - - font-size: 0.875rem; - line-height: var(--search-results-message-line-height); -} - -.search-results-timestamp { - color: #69707D !important; - font-family: "Roboto", sans-serif; - font-weight: 500; - white-space: nowrap; -} - -.search-results-message { - margin: 0; - max-height: var(--search-results-message-max-height); - - font-family: "Roboto Mono", monospace; - font-weight: 400; - white-space: pre-wrap; - word-break: break-word; -} - -.search-results-file-link { - margin-top: 0.25rem; - - color: grey; - font-family: 'Roboto', sans-serif; - font-size: 0.875rem; - font-weight: 400; - line-height: 1.5; -} diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/index.jsx b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/index.jsx deleted file mode 100644 index c7fa62a25a..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTable/index.jsx +++ /dev/null @@ -1,188 +0,0 @@ -import {Meteor} from "meteor/meteor"; -import {useEffect} from "react"; -import Table from "react-bootstrap/Table"; - -import dayjs from "dayjs"; - -import { - faFileLines, - faSort, - faSortDown, - faSortUp, -} from "@fortawesome/free-solid-svg-icons"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - -import { - MONGO_SORT_ORDER, - SEARCH_RESULTS_FIELDS, -} from "/imports/api/search/constants"; -import {DATETIME_FORMAT_TEMPLATE} from "/imports/utils/datetime"; - -import SearchResultsLoadSensor from "./SearchResultsLoadSensor"; - -import "./SearchResultsTable.scss"; - - -/** - * For calculating max message height from `maxLinesPerResult`. - */ -const SEARCH_RESULT_MESSAGE_LINE_HEIGHT = 1.5; - -const IS_IR_STREAM = ("clp" === Meteor.settings.public.ClpStorageEngine); -const STREAM_TYPE = IS_IR_STREAM ? - "ir" : - "json"; - - -/** - * Gets the stream id for an extraction job from the search result. - * - * @param {object} searchResult - * @return {string} stream_id - */ -const getStreamId = (searchResult) => { - return IS_IR_STREAM ? - searchResult.orig_file_id : - searchResult.archive_id; -}; - - -/** - * Represents a table component to display search results. - * - * @param {object} props - * @param {object} props.fieldToSortBy - * @param {boolean} props.hasMoreResultsInCache - * @param {boolean} props.hasMoreResultsInTotal - * @param {number} props.maxLinesPerResult - * @param {Function} props.onLoadMoreResults - * @param {object[]} props.searchResults - * @param {Function} props.setFieldToSortBy - * @return {React.ReactElement} - */ -const SearchResultsTable = ({ - fieldToSortBy, - hasMoreResultsInCache, - hasMoreResultsInTotal, - maxLinesPerResult, - onLoadMoreResults, - searchResults, - setFieldToSortBy, -}) => { - const getSortIcon = (fieldName) => { - if (fieldName === fieldToSortBy.name) { - return (MONGO_SORT_ORDER.ASCENDING === fieldToSortBy.direction) ? - faSortUp : - faSortDown; - } - - return faSort; - }; - - const toggleSortDirection = (event) => { - const {columnName} = event.currentTarget.dataset; - if (fieldToSortBy.name !== columnName) { - setFieldToSortBy({ - name: columnName, - direction: (SEARCH_RESULTS_FIELDS.TIMESTAMP === columnName) ? - MONGO_SORT_ORDER.DESCENDING : - MONGO_SORT_ORDER.ASCENDING, - }); - } else { - setFieldToSortBy({ - name: columnName, - direction: (MONGO_SORT_ORDER.ASCENDING === fieldToSortBy.direction) ? - MONGO_SORT_ORDER.DESCENDING : - MONGO_SORT_ORDER.ASCENDING, - }); - } - }; - - useEffect(() => { - document.documentElement.style.setProperty( - "--search-results-message-line-height", - `${SEARCH_RESULT_MESSAGE_LINE_HEIGHT}rem` - ); - }, []); - - useEffect(() => { - document.documentElement.style.setProperty( - "--search-results-message-max-height", - `${(SEARCH_RESULT_MESSAGE_LINE_HEIGHT * maxLinesPerResult)}rem` - ); - }, [maxLinesPerResult]); - - return ( -
- - - - - - - - - {searchResults.map((result) => ( - - - - - ))} - -
-
- - Timestamp -
-
-
- Log message -
-
- {result.timestamp ? - dayjs.utc(result.timestamp).format(DATETIME_FORMAT_TEMPLATE) : - "N/A"} - -
-                                    {result.message}
-                                
- -
- -
- ); -}; - -export default SearchResultsTable; diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTimeline/SearchResultsTimeline.scss b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTimeline/SearchResultsTimeline.scss deleted file mode 100644 index 06f2d04a47..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTimeline/SearchResultsTimeline.scss +++ /dev/null @@ -1,5 +0,0 @@ -.timeline-chart { - cursor: var(--timeline-chart-cursor, crosshair); - height: 100px; - max-height: 100px; -} diff --git a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTimeline/index.jsx b/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTimeline/index.jsx deleted file mode 100644 index b0c41bbd04..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/SearchResultsTimeline/index.jsx +++ /dev/null @@ -1,276 +0,0 @@ -import {useEffect} from "react"; -import {Bar} from "react-chartjs-2"; - -import { - BarElement, - Chart as ChartJs, - LinearScale, - TimeScale, - Tooltip, -} from "chart.js"; -import zoomPlugin from "chartjs-plugin-zoom"; -import dayjs from "dayjs"; - -import {isOperationInProgress} from "/imports/api/search/constants"; -import { - convertLocalDateToSameUtcDatetime, - convertUtcDatetimeToSameLocalDate, - DATETIME_FORMAT_TEMPLATE, - expandTimeRangeToDurationMultiple, - TIME_UNIT, -} from "/imports/utils/datetime"; -import {deselectAll} from "/imports/utils/misc"; - -import "chartjs-adapter-dayjs-4/dist/chartjs-adapter-dayjs-4.esm"; -import "./SearchResultsTimeline.scss"; - - -ChartJs.register( - TimeScale, - LinearScale, - BarElement, - Tooltip, - zoomPlugin -); - -const MAX_DATA_POINTS_PER_TIMELINE = 40; - -/** - * Converts an array of timeline buckets into an array of objects compatible with Chart.js. - * - * @param {TimelineBucket[]} timelineBuckets - * @return {ChartJsDatasetItem[]} - */ -const adaptTimelineBucketsForChartJs = (timelineBuckets) => ( - timelineBuckets.map( - ({ - timestamp, - count, - }) => ({ - x: timestamp, - y: count, - }) - ) -); - -/** - * Converts the timestamp from Chart.js' zoom plugin to a UTC Dayjs object. - * NOTE: The Chart.js timescale operates in the local timezone, but we want to the timeline to - * appear as if it's in UTC, so we apply the negative offset of the local timezone to all timestamps - * before passing them to Chart.js. However, the zoom plugin thinks that Chart.js is displaying - * timestamps in the local timezone, so it also applies the negative offset of the local timezone - * before passing them to onZoom. So to get the original UTC timestamp, this method needs to apply - * the local timezone offset twice. - * - * @param {number} timestampUnixMillis - * @return {dayjs.Dayjs} The corresponding Dayjs object - */ -const convertZoomTimestampToUtcDatetime = (timestampUnixMillis) => { - // Create a Date object with given timestamp, which contains local timezone information. - const initialDate = new Date(timestampUnixMillis); - - // Reverse local timezone offset. - const intermediateDateTime = convertLocalDateToSameUtcDatetime(initialDate); - - // Reverse local timezone offset again. - return convertLocalDateToSameUtcDatetime(intermediateDateTime.toDate()); -}; - -/** - * Computes the timestamp range and bucket duration necessary to render the bars in the timeline - * chart. - * - * @param {dayjs.Dayjs} timestampBeginUnixMillis - * @param {dayjs.Dayjs} timestampEndUnixMillis - * @return {TimelineConfig} - */ -const computeTimelineConfig = (timestampBeginUnixMillis, timestampEndUnixMillis) => { - const timeRangeMillis = timestampEndUnixMillis - timestampBeginUnixMillis; - const exactTimelineBucketMillis = timeRangeMillis / MAX_DATA_POINTS_PER_TIMELINE; - - // A list of predefined bucket durations, ordered from least to greatest so that the - // `durationSelections.find()` below can find the smallest bucket containing - // `exactTimelineBucketMillis`. - const durationSelections = [ - /* eslint-disable @stylistic/js/array-element-newline, no-magic-numbers */ - {unit: "second", values: [1, 2, 5, 10, 15, 30]}, - {unit: "minute", values: [1, 2, 5, 10, 15, 20, 30]}, - {unit: "hour", values: [1, 2, 3, 4, 8, 12]}, - {unit: "day", values: [1, 2, 5, 15]}, - {unit: "month", values: [1, 2, 3, 4, 6]}, - {unit: "year", values: [1]}, - /* eslint-enable @stylistic/js/array-element-newline, no-magic-numbers */ - ].flatMap( - ({ - unit, - values, - }) => values.map( - (value) => dayjs.duration(value, unit), - ), - ); - - const bucketDuration = - durationSelections.find( - (duration) => (exactTimelineBucketMillis <= duration.asMilliseconds()), - ) || - dayjs.duration( - Math.ceil(exactTimelineBucketMillis / - dayjs.duration(1, TIME_UNIT.YEAR).asMilliseconds()), - TIME_UNIT.YEAR, - ); - - return { - range: expandTimeRangeToDurationMultiple(bucketDuration, { - begin: dayjs.utc(timestampBeginUnixMillis), - end: dayjs.utc(timestampEndUnixMillis), - }), - bucketDuration: bucketDuration, - }; -}; - -/** - * Displays a timeline of search results. - * - * @param {object} props - * @param {Function} props.onTimelineZoom - * @param {object} props.resultsMetadata - * @param {TimelineBucket[]} props.timelineBuckets - * @param {TimelineConfig} props.timelineConfig - * @return {React.ReactElement} - */ -const SearchResultsTimeline = ({ - onTimelineZoom, - resultsMetadata, - timelineBuckets, - timelineConfig, -}) => { - const isInputDisabled = isOperationInProgress(resultsMetadata.lastSignal); - useEffect(() => { - document.documentElement.style.setProperty( - "--timeline-chart-cursor", - isInputDisabled ? - "wait" : - "crosshair" - ); - }, [isInputDisabled]); - - if (null === timelineBuckets) { - return <>; - } - - const data = { - datasets: [ - { - backgroundColor: "#4096a0", - barPercentage: 1.2, - borderColor: "#007380", - borderWidth: 2, - minBarLength: 5, - - data: adaptTimelineBucketsForChartJs(timelineBuckets), - }, - ], - }; - - const options = { - animation: { - duration: 100, - }, - maintainAspectRatio: false, - responsive: true, - - scales: { - x: { - type: "time", - - max: timelineConfig.range.end.valueOf(), - min: timelineConfig.range.begin.valueOf(), - offset: false, - - grid: { - drawOnChartArea: false, - color: "black", - drawTicks: true, - offset: true, - }, - ticks: { - maxRotation: 0, - autoSkipPadding: 30, - major: {enabled: true}, - }, - time: { - displayFormats: { - millisecond: "HH:mm:ss.SSS", - second: "HH:mm:ss", - minute: "HH:mm", - hour: "HH:mm", - }, - parser: (date) => convertUtcDatetimeToSameLocalDate( - dayjs.utc(date) - ), - }, - }, - y: { - ticks: { - autoSkip: true, - autoSkipPadding: 10, - }, - }, - }, - - plugins: { - tooltip: { - callbacks: { - title: (tooltipItems) => { - const [{raw: {x}}] = tooltipItems; - const bucketBeginTime = dayjs.utc(x); - const bucketEndTime = bucketBeginTime - .add(timelineConfig.bucketDuration); - - return `${bucketBeginTime.format(DATETIME_FORMAT_TEMPLATE)} to\n` + - `${bucketEndTime.format(DATETIME_FORMAT_TEMPLATE)}`; - }, - }, - caretSize: 0, - intersect: false, - mode: "x", - xAlign: "left", - yAlign: "bottom", - }, - zoom: { - zoom: { - drag: { - enabled: false === isInputDisabled, - backgroundColor: "rgba(64,150,160,0.3)", - }, - mode: "x", - onZoom: ({chart}) => { - const xAxis = chart.scales.x; - const {min, max} = xAxis; - const newTimeRange = { - begin: convertZoomTimestampToUtcDatetime(parseInt(min, 10)), - end: convertZoomTimestampToUtcDatetime(parseInt(max, 10)), - }; - - onTimelineZoom(newTimeRange); - }, - }, - }, - }, - }; - - return ( - - ); -}; - -export default SearchResultsTimeline; -export {computeTimelineConfig}; diff --git a/components/webui/imports/ui/SearchView/SearchResults/index.jsx b/components/webui/imports/ui/SearchView/SearchResults/index.jsx deleted file mode 100644 index 4b2375f036..0000000000 --- a/components/webui/imports/ui/SearchView/SearchResults/index.jsx +++ /dev/null @@ -1,130 +0,0 @@ -import {useCallback} from "react"; -import Container from "react-bootstrap/Container"; -import Row from "react-bootstrap/Row"; - -import SearchResultsHeader from "./SearchResultsHeader"; -import SearchResultsTable from "./SearchResultsTable"; -import SearchResultsTimeline from "./SearchResultsTimeline"; - - -/** - * The initial visible results limit. - * - * @type {number} - * @constant - */ -const VISIBLE_RESULTS_LIMIT_INITIAL = 10; - -/** - * The increment value for the visible results limit. - * - * @type {number} - * @constant - */ -const VISIBLE_RESULTS_LIMIT_INCREMENT = 10; - -/** - * Renders the search results, which includes the search results header and the search results - * table. - * - * @param {object} props - * @param {number} props.estimatedNumResults - * @param {object} props.fieldToSortBy - * @param {number} props.maxLinesPerResult - * @param {Function} props.onTimelineZoom - * @param {SearchResultsMetadata} props.resultsMetadata - * @param {number} props.searchJobId - * @param {object[]} props.searchResults - * @param {Function} props.setFieldToSortBy - * @param {Function} props.setMaxLinesPerResult - * @param {Function} props.setVisibleSearchResultsLimit - * @param {TimelineBucket[]} props.timelineBuckets - * @param {TimelineConfig} props.timelineConfig - * @param {number} props.visibleSearchResultsLimit - * @return {React.ReactElement} - */ -const SearchResults = ({ - estimatedNumResults, - fieldToSortBy, - maxLinesPerResult, - onTimelineZoom, - resultsMetadata, - searchJobId, - searchResults, - setFieldToSortBy, - setMaxLinesPerResult, - setVisibleSearchResultsLimit, - timelineBuckets, - timelineConfig, - visibleSearchResultsLimit, -}) => { - let aggregatedCount = null; - if (null !== timelineBuckets && 0 !== timelineBuckets.length) { - aggregatedCount = timelineBuckets.reduce( - (accumulator, currentValue) => (accumulator + currentValue.count), - 0, - ); - } - - // The number of result in the results cache is available in different variables at different - // times: - // - when the search job ends, it will be in resultsMetadata.numTotalResults. - // - while the query is in progress, it will be in estimatedNumResults. - // - when the query starts, the other two variables will be null, so searchResults.length is the - // best estimate. - const numResultsInCache = - resultsMetadata.numTotalResults || - estimatedNumResults || - searchResults.length; - - const numResultsInTotal = aggregatedCount || numResultsInCache; - - const hasMoreResultsInCache = visibleSearchResultsLimit < numResultsInCache; - const hasMoreResultsInTotal = visibleSearchResultsLimit < numResultsInTotal; - - const handleLoadMoreResults = useCallback(() => { - if (hasMoreResultsInCache) { - setVisibleSearchResultsLimit((v) => v + VISIBLE_RESULTS_LIMIT_INCREMENT); - } - }, [ - hasMoreResultsInCache, - setVisibleSearchResultsLimit, - ]); - - return ( - <> - - - - - - - - - {0 < searchResults.length && - } - - ); -}; - -export default SearchResults; -export {VISIBLE_RESULTS_LIMIT_INITIAL}; diff --git a/components/webui/imports/ui/SearchView/SearchStatus.jsx b/components/webui/imports/ui/SearchView/SearchStatus.jsx deleted file mode 100644 index 8c63f41f22..0000000000 --- a/components/webui/imports/ui/SearchView/SearchStatus.jsx +++ /dev/null @@ -1,94 +0,0 @@ -import { - useEffect, - useRef, - useState, -} from "react"; -import ProgressBar from "react-bootstrap/ProgressBar"; - -import {faExclamationCircle} from "@fortawesome/free-solid-svg-icons"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - -import { - isSearchSignalQuerying, - SEARCH_SIGNAL, -} from "/imports/api/search/constants"; - -import "./SearchStatus.scss"; - - -// for pseudo progress bar -const PROGRESS_INCREMENT = 5; -const PROGRESS_INTERVAL_MILLIS = 100; - -/** - * Displays the status of a search operation, which shows error messages if any, and otherwise - * displays the current status of the search. - * - * @param {object} props - * @param {SearchResultsMetadata} props.resultsMetadata including the last search signal - * @param {string} props.errorMsg if there is an error - * @return {React.ReactElement} - */ -const SearchStatus = ({ - resultsMetadata, - errorMsg, -}) => { - const [progress, setProgress] = useState(0); - const timerIntervalRef = useRef(null); - - useEffect(() => { - if (true === isSearchSignalQuerying(resultsMetadata.lastSignal)) { - timerIntervalRef.current ??= setInterval(() => { - setProgress((v) => (v + PROGRESS_INCREMENT)); - }, PROGRESS_INTERVAL_MILLIS); - } else { - if (null !== timerIntervalRef.current) { - clearInterval(timerIntervalRef.current); - timerIntervalRef.current = null; - } - setProgress(0); - } - }, [resultsMetadata.lastSignal]); - - if ("" !== errorMsg && null !== errorMsg && "undefined" !== typeof errorMsg) { - return ( -
- - {errorMsg} -
- ); - } - let statusMessage = null; - switch (resultsMetadata.lastSignal) { - case SEARCH_SIGNAL.NONE: - statusMessage = "Ready"; - break; - case SEARCH_SIGNAL.REQ_CLEARING: - statusMessage = "Clearing..."; - break; - default: - break; - } - - return ( - <> - - {(null !== statusMessage) && -
- {statusMessage} -
} - - ); -}; - -export default SearchStatus; diff --git a/components/webui/imports/ui/SearchView/SearchStatus.scss b/components/webui/imports/ui/SearchView/SearchStatus.scss deleted file mode 100644 index 7d9e93ae4c..0000000000 --- a/components/webui/imports/ui/SearchView/SearchStatus.scss +++ /dev/null @@ -1,26 +0,0 @@ -.search-status-message { - color: #ccc; - font-size: 5rem; - line-height: 1em; - - padding: 1rem 2rem; - user-select: none; -} - -.search-error { - padding: 0.5rem; - - background-color: #ffc0c0; - color: #8e0000; - border-top: 1px solid #ca9b9b; - border-bottom: 1px solid #ecb4b4; -} - -.search-error-icon { - margin-right: 0.5rem; - vertical-align: middle; -} - -.search-progress-bar { - height: 4px !important; -} diff --git a/components/webui/imports/ui/SearchView/SearchView.jsx b/components/webui/imports/ui/SearchView/SearchView.jsx deleted file mode 100644 index e9d161fd63..0000000000 --- a/components/webui/imports/ui/SearchView/SearchView.jsx +++ /dev/null @@ -1,351 +0,0 @@ -/* eslint-disable max-lines, max-lines-per-function, max-statements */ -import {Meteor} from "meteor/meteor"; -import {useTracker} from "meteor/react-meteor-data"; -import { - useEffect, - useMemo, - useRef, - useState, -} from "react"; - -import {CLP_STORAGE_ENGINES} from "/imports/api/constants"; -import {SearchResultsMetadataCollection} from "/imports/api/search/collections"; -import { - SEARCH_RESULTS_FIELDS, - SEARCH_SIGNAL, -} from "/imports/api/search/constants"; -import SearchJobCollectionsManager from "/imports/api/search/SearchJobCollectionsManager"; -import { - DEFAULT_TIME_RANGE, - expandTimeRangeToDurationMultiple, -} from "/imports/utils/datetime"; -import {unquoteString} from "/imports/utils/misc"; -import { - MONGO_SORT_BY_ID, - MONGO_SORT_ORDER, -} from "/imports/utils/mongo"; - -import {LOCAL_STORAGE_KEYS} from "../constants"; -import SearchControls from "./SearchControls"; -import SearchResults, {VISIBLE_RESULTS_LIMIT_INITIAL} from "./SearchResults"; -import {computeTimelineConfig} from "./SearchResults/SearchResultsTimeline"; -import SearchStatus from "./SearchStatus"; - - -const DEFAULT_IGNORE_CASE_SETTING = true; - -/** - * Provides a search interface that allows users to query archives and visualize search results. - * - * @return {React.ReactElement} - */ -const SearchView = () => { - // Query states - const [searchJobId, setSearchJobId] = useState(null); - const [aggregationJobId, setAggregationJobId] = useState(null); - const [operationErrorMsg, setOperationErrorMsg] = useState(""); - const [localLastSearchSignal, setLocalLastSearchSignal] = useState(SEARCH_SIGNAL.NONE); - const [estimatedNumResults, setEstimatedNumResults] = useState(null); - const dbRef = useRef(new SearchJobCollectionsManager()); - - // gets updated as soon as localLastSearchSignal is updated - // to avoid reading old localLastSearchSignal value from Closures - const localLastSearchSignalRef = useRef(localLastSearchSignal); - - // Query options - const [queryString, setQueryString] = useState(""); - const [timeRange, setTimeRange] = useState(DEFAULT_TIME_RANGE); - const [timelineConfig, setTimelineConfig] = useState(null); - const [ignoreCase, setIgnoreCase] = useState(DEFAULT_IGNORE_CASE_SETTING); - const [visibleSearchResultsLimit, setVisibleSearchResultsLimit] = useState( - VISIBLE_RESULTS_LIMIT_INITIAL - ); - const [fieldToSortBy, setFieldToSortBy] = useState({ - name: SEARCH_RESULTS_FIELDS.TIMESTAMP, - direction: MONGO_SORT_ORDER.DESCENDING, - }); - - // Visuals - const [maxLinesPerResult, setMaxLinesPerResult] = useState( - Number(localStorage.getItem(LOCAL_STORAGE_KEYS.MAX_LINES_PER_RESULT) || 2) - ); - - // Subscriptions - /** - * @type {SearchResultsMetadata} - */ - const resultsMetadata = useTracker(() => { - let result = {lastSignal: localLastSearchSignal}; - - if (null !== searchJobId) { - const args = {searchJobId}; - const subscription = Meteor.subscribe( - Meteor.settings.public.SearchResultsMetadataCollectionName, - args - ); - const doc = SearchResultsMetadataCollection.findOne(); - - const isReady = subscription.ready(); - if (true === isReady) { - result = doc; - } - } - - return result; - }, [ - searchJobId, - localLastSearchSignal, - ]); - - const isExpectingUpdates = useMemo(() => (null !== searchJobId) && [ - SEARCH_SIGNAL.REQ_QUERYING, - SEARCH_SIGNAL.RESP_QUERYING, - ].includes(resultsMetadata.lastSignal), [ - searchJobId, - resultsMetadata.lastSignal, - ]); - - const searchResults = useTracker(() => { - if (null === searchJobId) { - return []; - } - - Meteor.subscribe(Meteor.settings.public.SearchResultsCollectionName, { - searchJobId: searchJobId, - isExpectingUpdates: isExpectingUpdates, - }); - - // NOTE: Although we publish and subscribe using the name - // `Meteor.settings.public.SearchResultsCollectionName`, the rows are still returned in the - // job-specific collection (e.g., "1"); this is because on the server, we're returning a - // cursor from the job-specific collection and Meteor creates a collection with the same - // name on the client rather than returning the rows in a collection with the published - // name. - const resultsCollection = dbRef.current.getOrCreateCollection(searchJobId); - const findOptions = { - limit: visibleSearchResultsLimit, - sort: [ - [ - fieldToSortBy.name, - fieldToSortBy.direction, - ], - MONGO_SORT_BY_ID, - ], - }; - - if (SEARCH_SIGNAL.RESP_DONE !== resultsMetadata.lastSignal) { - // Only refresh estimatedNumResults if the job isn't DONE; - // otherwise the count would already be available in - // `resultsMetadata.numTotalResults` - resultsCollection.estimatedDocumentCount() - .then(setEstimatedNumResults) - .catch((e) => { - console.log( - "Error occurred in " + - `resultsCollection<${searchJobId}>.estimatedDocumentCount()`, - e, - ); - }); - } - - return resultsCollection.find({}, findOptions).fetch(); - }, [ - fieldToSortBy, - isExpectingUpdates, - searchJobId, - visibleSearchResultsLimit, - ]); - - /** - * @type {TimelineBucket[]} - */ - const timelineBuckets = useTracker(() => { - if (null === aggregationJobId) { - return null; - } - - Meteor.subscribe(Meteor.settings.public.AggregationResultsCollectionName, { - aggregationJobId: aggregationJobId, - isExpectingUpdates: isExpectingUpdates, - }); - const collection = dbRef.current.getOrCreateCollection(aggregationJobId); - - return collection.find().fetch(); - }, [ - aggregationJobId, - isExpectingUpdates, - ]); - - // State transitions - useEffect(() => { - localStorage.setItem(LOCAL_STORAGE_KEYS.MAX_LINES_PER_RESULT, maxLinesPerResult.toString()); - }, [maxLinesPerResult]); - - useEffect(() => { - localLastSearchSignalRef.current = localLastSearchSignal; - }, [localLastSearchSignal]); - - // Handlers - const handleClearResults = () => { - setSearchJobId(null); - setAggregationJobId(null); - setOperationErrorMsg(""); - setLocalLastSearchSignal(SEARCH_SIGNAL.REQ_CLEARING); - setEstimatedNumResults(null); - setVisibleSearchResultsLimit(VISIBLE_RESULTS_LIMIT_INITIAL); - - const args = { - searchJobId, - aggregationJobId, - }; - - Meteor.call("search.clearResults", args, (error) => { - if (error) { - setOperationErrorMsg(error.reason); - - return; - } - - if (SEARCH_SIGNAL.REQ_CLEARING === localLastSearchSignalRef.current) { - // The check prevents clearing `localLastSearchSignal = SEARCH_SIGNAL.REQ_QUERYING` - // when `handleClearResults` is called by handleQuerySubmit. - setLocalLastSearchSignal(SEARCH_SIGNAL.NONE); - } - }); - }; - - const handleQuerySubmit = (newArgs) => { - if (null !== searchJobId) { - // Clear result caches before starting a new query - handleClearResults(); - } - - let processedQueryString = queryString; - if (CLP_STORAGE_ENGINES.CLP === Meteor.settings.public.ClpStorageEngine) { - try { - processedQueryString = unquoteString(queryString, '"', "\\"); - if ("" === processedQueryString) { - throw new Error("Cannot be empty."); - } - } catch (e) { - setOperationErrorMsg(`Invalid query: ${e.message}`); - - return; - } - } - - setOperationErrorMsg(""); - setLocalLastSearchSignal(SEARCH_SIGNAL.REQ_QUERYING); - setVisibleSearchResultsLimit(VISIBLE_RESULTS_LIMIT_INITIAL); - - const queryTimeRange = { - begin: timeRange.begin, - end: timeRange.end, - }; - - if ("undefined" !== typeof newArgs) { - queryTimeRange.begin = newArgs.begin; - queryTimeRange.end = newArgs.end; - setTimeRange(queryTimeRange); - } - - const timestampBeginUnixMillis = queryTimeRange.begin; - const timestampEndUnixMillis = queryTimeRange.end; - const newTimelineConfig = computeTimelineConfig( - timestampBeginUnixMillis, - timestampEndUnixMillis - ); - - setTimelineConfig(newTimelineConfig); - - const args = { - ignoreCase: ignoreCase, - queryString: processedQueryString, - timeRangeBucketSizeMillis: newTimelineConfig.bucketDuration.asMilliseconds(), - timestampBegin: timestampBeginUnixMillis.valueOf(), - timestampEnd: timestampEndUnixMillis.valueOf(), - }; - - Meteor.call("search.submitQuery", args, (error, result) => { - if (error) { - setOperationErrorMsg(error.reason); - - return; - } - - setSearchJobId(result.searchJobId); - setAggregationJobId(result.aggregationJobId); - }); - }; - - const handleCancelOperation = () => { - setOperationErrorMsg(""); - setLocalLastSearchSignal(SEARCH_SIGNAL.REQ_CANCELLING); - - const args = { - searchJobId, - aggregationJobId, - }; - - Meteor.call("search.cancelOperation", args, (error) => { - if (error) { - setOperationErrorMsg(error.reason); - } - }); - }; - - const handleTimelineZoom = (newTimeRange) => { - // Expand the time range to the granularity of buckets so if the user - // pans across at least one bar in the graph, we will zoom into a region - // that still contains log events. - const expandedTimeRange = expandTimeRangeToDurationMultiple( - timelineConfig.bucketDuration, - newTimeRange - ); - - handleQuerySubmit(expandedTimeRange); - }; - - return ( -
-
- - - -
- - {(null !== searchJobId) && } -
- ); -}; - -export default SearchView; - -/* eslint-enable max-lines, max-lines-per-function, max-statements */ diff --git a/components/webui/imports/ui/Sidebar/Sidebar.jsx b/components/webui/imports/ui/Sidebar/Sidebar.jsx deleted file mode 100644 index 78d0f00d53..0000000000 --- a/components/webui/imports/ui/Sidebar/Sidebar.jsx +++ /dev/null @@ -1,70 +0,0 @@ -import { - faAngleDoubleLeft, - faAngleDoubleRight, - faCircleInfo, - faMessage, -} from "@fortawesome/free-solid-svg-icons"; - -import SidebarButton from "./SidebarButton"; - -import "./Sidebar.scss"; - - -/** - * Renders a sidebar navigation component, which includes navigation links and a toggle for - * collapsing or expanding the sidebar. - * - * @param {object} props - * @param {boolean} props.isSidebarCollapsed indicates whether the sidebar is collapsed - * @param {object[]} props.routes objects for navigation links - * @param {Function} props.onSidebarToggle callback to toggle the sidebar's collapsed state - * @return {React.ReactElement} - */ -const Sidebar = ({ - isSidebarCollapsed, - routes, - onSidebarToggle, -}) => ( -
-
- {!isSidebarCollapsed && YScope} - {isSidebarCollapsed ? - CLP : - "CLP"} -
- -
- {routes.map((route, i) => (false === (route.hide ?? false)) && ( - - ))} -
- -
- - - -
-
-); - -export default Sidebar; diff --git a/components/webui/imports/ui/Sidebar/Sidebar.scss b/components/webui/imports/ui/Sidebar/Sidebar.scss deleted file mode 100644 index 2c75ea68f0..0000000000 --- a/components/webui/imports/ui/Sidebar/Sidebar.scss +++ /dev/null @@ -1,91 +0,0 @@ -#sidebar { - height: 100%; - min-width: 190px; - width: 190px; - - display: flex; - flex-direction: column; - - background: #080808; - color: #dedede; - - transition: min-width 0.5s, width 0.5s; -} - -#sidebar.collapsed { - min-width: 3rem; - width: 3rem; -} - -#sidebar .brand { - align-items: center; /* center element vertically */ - display: flex; - flex: 0 0 3rem; /* cannot grow, cannot shrink, 44px height */ - justify-content: center; /* center element horizontally */ - - border-left: 1px solid #111; - - font-size: 1.25rem; - white-space: nowrap; /* proper animation */ - overflow: hidden; /* proper animation */ -} - -.sidebar-menu { - flex: 1 1 auto; /* can shrink, can grow, auto height */ - display: flex; - flex-direction: column; - overflow-y: auto; - user-select: none; -} - -.sidebar-item-icon { - display: inline-block; - margin-left: -1px; - - width: 3rem; - - text-align: center; -} - -.sidebar-item-text { - opacity: inherit; - transition: opacity 0.5s; -} - -#sidebar.collapsed .sidebar-item-text { - opacity: 0; -} - -.sidebar-menu a { - border-left: 1px solid #333; - color: #aaa; - text-decoration: none; - - height: 3rem; - width: 100%; - - display: block; - margin-top: 2px; - overflow: hidden; - - line-height: 3rem; - white-space: nowrap; - - transition: width 0.5s; - - cursor: pointer; -} - -.sidebar-menu a:hover, .sidebar-menu .active { - border-left: 1px solid #dedede; - color: #dedede; - text-decoration: none; -} - -.sidebar-menu a:hover { - background-color: #0d5259; -} - -.sidebar-menu .active { - background-color: #004952; -} diff --git a/components/webui/imports/ui/Sidebar/SidebarButton.jsx b/components/webui/imports/ui/Sidebar/SidebarButton.jsx deleted file mode 100644 index c6b14728d5..0000000000 --- a/components/webui/imports/ui/Sidebar/SidebarButton.jsx +++ /dev/null @@ -1,61 +0,0 @@ -import {NavLink} from "react-router-dom"; - -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; - - -/** - * Component for rendering a sidebar link. - * - * @param {object} props - * @param {import("@fortawesome/react-fontawesome").IconProp} props.icon - * @param {string} props.label - * @param {string} [props.link] - * @param {Function} [props.onClick] - * @return {React.ReactElement} - */ -const SidebarButton = ({ - icon, - label, - link, - onClick, -}) => { - const children = ( - <> -
- -
- - {label} - - - ); - - const isNavLink = ("undefined" !== typeof link) && link.startsWith("/"); - if (isNavLink) { - return ( - - {children} - - ); - } - - return ( - - {children} - - ); -}; - -export default SidebarButton; diff --git a/components/webui/imports/ui/bootstrap-customized.scss b/components/webui/imports/ui/bootstrap-customized.scss deleted file mode 100644 index e66685621a..0000000000 --- a/components/webui/imports/ui/bootstrap-customized.scss +++ /dev/null @@ -1,5 +0,0 @@ -$primary: #007380; -$secondary: #e9ecef; -$info: #a60058; - -@import "~bootstrap/scss/bootstrap"; diff --git a/components/webui/imports/ui/constants.js b/components/webui/imports/ui/constants.js deleted file mode 100644 index e5c7aeac87..0000000000 --- a/components/webui/imports/ui/constants.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Dictionary for local storage items used in the application. - * - * @enum {string} - */ -const LOCAL_STORAGE_KEYS = Object.freeze({ - IS_SIDEBAR_COLLAPSED: "isSidebarCollapsed", - MAX_LINES_PER_RESULT: "maxLinesPerResult", - SEARCH_CONTROLS_VISIBLE: "searchFilterControlsVisible", -}); - -export {LOCAL_STORAGE_KEYS}; diff --git a/components/webui/imports/utils/DbManager.js b/components/webui/imports/utils/DbManager.js deleted file mode 100644 index 6607e9c72d..0000000000 --- a/components/webui/imports/utils/DbManager.js +++ /dev/null @@ -1,108 +0,0 @@ -import mysql from "mysql2/promise"; - -import { - deinitCompressionDbManager, - deinitStatsDbManager, - initCompressionDbManager, - initStatsDbManager, -} from "/imports/api/ingestion/server/publications"; -import {initQueryJobsDbManager} from "/imports/api/search/server/methods"; -import {logger} from "/imports/utils/logger"; - - -const DB_CONNECTION_LIMIT = 2; -const DB_MAX_IDLE = DB_CONNECTION_LIMIT; -const DB_IDLE_TIMEOUT_MILLIS = 10000; - -/** - * @type {import("mysql2/promise").Pool|null} - */ -let dbConnPool = null; - -/** - * Creates a new database connection and initializes DB managers with it. - * - * @param {object} dbConfig - * @param {string} dbConfig.dbHost - * @param {number} dbConfig.dbPort - * @param {string} dbConfig.dbName - * @param {string} dbConfig.dbPassword - * @param {string} dbConfig.dbUser - * @param {object} tableNames - * @param {string} tableNames.clpArchivesTableName - * @param {string} tableNames.clpFilesTableName - * @param {string} tableNames.compressionJobsTableName - * @param {string} tableNames.queryJobsTableName - * @return {Promise} - * @throws {Error} on error. - */ -const initDbManagers = async ({ - dbHost, - dbPort, - dbName, - dbPassword, - dbUser, -}, { - clpArchivesTableName, - clpFilesTableName, - compressionJobsTableName, - queryJobsTableName, -}) => { - if (null !== dbConnPool) { - throw Error("This method should not be called twice."); - } - - try { - // This method shall not be called twice and therefore incurs no race condition. - // eslint-disable-next-line require-atomic-updates - dbConnPool = await mysql.createPool({ - host: dbHost, - port: dbPort, - - database: dbName, - password: dbPassword, - user: dbUser, - - bigNumberStrings: true, - supportBigNumbers: true, - timezone: "Z", - - connectionLimit: DB_CONNECTION_LIMIT, - enableKeepAlive: true, - idleTimeout: DB_IDLE_TIMEOUT_MILLIS, - maxIdle: DB_MAX_IDLE, - }); - - initCompressionDbManager(dbConnPool, { - compressionJobsTableName, - }); - initQueryJobsDbManager(dbConnPool, { - queryJobsTableName, - }); - initStatsDbManager(dbConnPool, { - clpArchivesTableName, - clpFilesTableName, - }); - } catch (e) { - logger.error("Unable to create MySQL / mariadb connection pool.", e.toString()); - throw e; - } -}; - -/** - * De-initializes database managers. - * - * @return {Promise} - * @throws {Error} on error. - */ -const deinitDbManagers = async () => { - deinitCompressionDbManager(); - deinitStatsDbManager(); - - await dbConnPool.end(); -}; - -export { - deinitDbManagers, - initDbManagers, -}; diff --git a/components/webui/imports/utils/datetime.js b/components/webui/imports/utils/datetime.js deleted file mode 100644 index bff3aa4d2a..0000000000 --- a/components/webui/imports/utils/datetime.js +++ /dev/null @@ -1,172 +0,0 @@ -import dayjs from "dayjs"; -import Duration from "dayjs/plugin/duration"; -import Timezone from "dayjs/plugin/timezone"; -import Utc from "dayjs/plugin/utc"; - - -dayjs.extend(Utc); -dayjs.extend(Timezone); -dayjs.extend(Duration); - -const DATETIME_FORMAT_TEMPLATE = "YYYY-MMM-DD HH:mm:ss"; - -/* eslint-disable sort-keys */ -/** - * Enum of time units. - * - * @enum {string} - */ -const TIME_UNIT = Object.freeze({ - ALL: "all", - MINUTE: "minute", - HOUR: "hour", - DAY: "day", - WEEK: "week", - MONTH: "month", - YEAR: "year", -}); -/* eslint-enable sort-keys */ - -/* eslint-disable sort-keys */ -/** - * Enum of time range modifiers. - * - * @enum {string} - */ -const TIME_RANGE_MODIFIER = Object.freeze({ - NONE: "none", - TODAY: "today", - LAST: "last", - PREV: "prev", - TO_DATE: "to-date", -}); -/* eslint-enable sort-keys */ - -/** - * Time range presets. - * - * @type {{[key: string]: string}} - */ -const TIME_RANGE_PRESET_LABEL = Object.freeze({ - [`${TIME_UNIT.MINUTE}_${TIME_RANGE_MODIFIER.LAST}_15`]: "Last 15 Minutes", - [`${TIME_UNIT.MINUTE}_${TIME_RANGE_MODIFIER.LAST}_60`]: "Last 60 Minutes", - [`${TIME_UNIT.HOUR}_${TIME_RANGE_MODIFIER.LAST}_4`]: "Last 4 Hours", - [`${TIME_UNIT.HOUR}_${TIME_RANGE_MODIFIER.LAST}_24`]: "Last 24 Hours", - [`${TIME_UNIT.DAY}_${TIME_RANGE_MODIFIER.PREV}_1`]: "Previous Day", - [`${TIME_UNIT.WEEK}_${TIME_RANGE_MODIFIER.PREV}_1`]: "Previous Week", - [`${TIME_UNIT.MONTH}_${TIME_RANGE_MODIFIER.PREV}_1`]: "Previous Month", - [`${TIME_UNIT.YEAR}_${TIME_RANGE_MODIFIER.PREV}_1`]: "Previous Year", - [`${TIME_UNIT.DAY}_${TIME_RANGE_MODIFIER.TODAY}_0`]: "Today", - [`${TIME_UNIT.WEEK}_${TIME_RANGE_MODIFIER.TO_DATE}_0`]: "Week to Date", - [`${TIME_UNIT.MONTH}_${TIME_RANGE_MODIFIER.TO_DATE}_0`]: "Month to Date", - [`${TIME_UNIT.YEAR}_${TIME_RANGE_MODIFIER.TO_DATE}_0`]: "Year to Date", - [`${TIME_UNIT.ALL}_${TIME_RANGE_MODIFIER.NONE}_0`]: "All Time", -}); - -/** - * Computes a time range based on a token. - * - * @param {string} token representing the time range to compute; format: `unit_modifier_amount` - * @return {TimeRange} The computed time range - */ -const computeTimeRange = (token) => { - const [ - unit, - modifier, - amount, - ] = token.split("_"); - let end; - let begin; - - if (TIME_UNIT.ALL === unit) { - end = dayjs.utc().add(1, TIME_UNIT.YEAR); - begin = dayjs.utc(0); - } else { - const isEndingNow = [ - TIME_RANGE_MODIFIER.LAST, - TIME_RANGE_MODIFIER.TODAY, - TIME_RANGE_MODIFIER.TO_DATE, - ].includes(modifier); - const isBeginStartOfUnit = [ - TIME_RANGE_MODIFIER.PREV, - TIME_RANGE_MODIFIER.TODAY, - TIME_RANGE_MODIFIER.TO_DATE, - ].includes(modifier); - - end = (true === isEndingNow) ? - dayjs.utc() : - dayjs.utc() - .subtract(amount, unit) - .endOf(unit); - begin = (true === isBeginStartOfUnit) ? - end.startOf(unit) : - end.subtract(amount, unit); - } - - return { - begin, - end, - }; -}; - -const DEFAULT_TIME_RANGE = computeTimeRange( - `${TIME_UNIT.ALL}_${TIME_RANGE_MODIFIER.NONE}_0`, -); - -// eslint-disable-next-line no-warning-comments -// TODO: Switch date pickers so we don't have to do this hack -/** - * Converts a UTC Dayjs object to a local-timezone JavaScript Date object that represents the same - * date and time. In other words, the original year, month, day, hour, minute, second, and - * millisecond appear unchanged. - * - * @param {dayjs.Dayjs} utcDatetime - * @return {Date} The corresponding Date object - */ -const convertUtcDatetimeToSameLocalDate = (utcDatetime) => { - const localTz = dayjs.tz.guess(); - return utcDatetime.tz(localTz, true).toDate(); -}; - -/** - * Converts a local-timezone JavaScript Date object to a UTC Dayjs object that represents the same - * date and time. In other words, the original year, month, day, hour, minute, second, and - * millisecond appear unchanged. - * - * @param {Date} localDate - * @return {dayjs.Dayjs} The corresponding Dayjs object - */ -const convertLocalDateToSameUtcDatetime = (localDate) => { - return dayjs(localDate).utc(true); -}; - -/** - * Expands the time range so that both extremes are multiples of the given duration. - * - * @param {dayjs.Duration} duration - * @param {TimeRange} timeRange The time range to be expanded. - * @return {TimeRange} The expanded time range. - */ -const expandTimeRangeToDurationMultiple = (duration, { - begin, - end, -}) => { - const adjustedBegin = begin - (begin % duration.asMilliseconds()); - const adjustedEnd = - Math.floor( - (end + duration.asMilliseconds() - 1) / duration.asMilliseconds() - ) * duration.asMilliseconds(); - - return {begin: dayjs.utc(adjustedBegin), end: dayjs.utc(adjustedEnd)}; -}; - -export { - computeTimeRange, - convertLocalDateToSameUtcDatetime, - convertUtcDatetimeToSameLocalDate, - DATETIME_FORMAT_TEMPLATE, - DEFAULT_TIME_RANGE, - expandTimeRangeToDurationMultiple, - TIME_RANGE_PRESET_LABEL, - TIME_UNIT, -}; diff --git a/components/webui/imports/utils/logger.js b/components/webui/imports/utils/logger.js deleted file mode 100644 index eca756129f..0000000000 --- a/components/webui/imports/utils/logger.js +++ /dev/null @@ -1,147 +0,0 @@ -import JSON5 from "json5"; -import winston from "winston"; - -import "winston-daily-rotate-file"; - - -const MAX_LOGS_FILE_SIZE = "100m"; -const MAX_LOGS_RETENTION_DAYS = "30d"; - -let winstonLogger = null; -let isTraceEnabled = false; - -/* eslint-disable sort-keys */ -// attribute names should match clp_py_utils.clp_logging.LOGGING_LEVEL_MAPPING -const webuiLoggingLevelToWinstonMap = { - DEBUG: "debug", - INFO: "info", - WARN: "warn", - WARNING: "warn", - ERROR: "error", - CRITICAL: "error", -}; -/* eslint-enable sort-keys */ - -/* eslint-disable prefer-destructuring, no-magic-numbers */ -/** - * Retrieves information about the calling function's stack trace. - * - * @return {object | null} an object containing method, filePath, and line information, - * or null if the information couldn't be extracted - */ -const getStackInfo = () => { - let info; - - const stackList = (new Error()).stack.split("\n"); - const stackInfo = stackList[4]; - const stackRegex = /at\s+(.*)\s+\((.*):(\d+):(\d+)\)/i; - const stackMatch = stackRegex.exec(stackInfo); - - if (null !== stackMatch && 5 === stackMatch.length) { - info = { - method: stackMatch[1], - filePath: stackMatch[2], - line: stackMatch[3], - }; - } else { - const stackRegex2 = /at\s+(.*):(\d*):(\d*)/i; - const stackMatch2 = stackRegex2.exec(stackInfo); - info = { - method: "", - filePath: stackMatch2[1], - line: stackMatch2[2], - }; - } - - return info; -}; -/* eslint-enable prefer-destructuring, no-magic-numbers */ - -/** - * Logs a message with the specified log level, including optional trace information. - * - * @param {string} level of the log message - * @param {...any} args message or data to be logged - */ -const fileLineFuncLog = (level, ...args) => { - let logMessage = `${args.map((a) => (("string" === typeof a) ? - a : - JSON5.stringify(a))).join(" ")}`; - let logLabel = ""; - - if (true === isTraceEnabled) { - const stackInfo = getStackInfo(); - - if (null !== stackInfo) { - logMessage = `[${stackInfo.filePath}:${stackInfo.line}] ${logMessage}`; - logLabel = stackInfo.method; - } - } - - winstonLogger.log({ - level: level, - message: logMessage, - label: logLabel, - }); -}; - -/* eslint-disable sort-keys */ -/** - * Logger interface object that provides logging with different levels. - */ -const logger = Object.freeze({ - error: (...args) => (fileLineFuncLog("error", ...args)), - warn: (...args) => (fileLineFuncLog("warn", ...args)), - help: (...args) => (fileLineFuncLog("help", ...args)), - data: (...args) => (fileLineFuncLog("data", ...args)), - info: (...args) => (fileLineFuncLog("info", ...args)), - debug: (...args) => (fileLineFuncLog("debug", ...args)), - prompt: (...args) => (fileLineFuncLog("prompt", ...args)), - verbose: (...args) => (fileLineFuncLog("verbose", ...args)), - input: (...args) => (fileLineFuncLog("input", ...args)), - silly: (...args) => (fileLineFuncLog("silly", ...args)), -}); -/* eslint-enable sort-keys */ - -/** - * Initializes winston logger with the specified configuration. - * - * @param {string} logsDir where log files will be stored. - * @param {string} webuiLoggingLevel messages higher than this level will be logged - * @param {boolean} [_isTraceEnabled] whether to log function & file names and line numbers - */ -const initLogger = (logsDir, webuiLoggingLevel, _isTraceEnabled = false) => { - isTraceEnabled = _isTraceEnabled; - - winstonLogger = winston.createLogger({ - level: webuiLoggingLevelToWinstonMap[webuiLoggingLevel], - format: winston.format.combine( - winston.format.timestamp(), - winston.format.printf((info) => { - return JSON.stringify({ - timestamp: info.timestamp, - level: info.level, - label: info.label, - message: info.message, - }); - }), - ), - transports: [ - new winston.transports.Console(), - new winston.transports.DailyRotateFile({ - datePattern: "YYYY-MM-DD-HH", - dirname: logsDir, - filename: "webui-%DATE%.log", - maxFiles: MAX_LOGS_RETENTION_DAYS, - maxSize: MAX_LOGS_FILE_SIZE, - }), - ], - }); - - logger.info("logger has been initialized"); -}; - -export { - initLogger, - logger, -}; diff --git a/components/webui/imports/utils/misc.js b/components/webui/imports/utils/misc.js deleted file mode 100644 index 943a417fca..0000000000 --- a/components/webui/imports/utils/misc.js +++ /dev/null @@ -1,120 +0,0 @@ -const MILLIS_PER_SECOND = 1000; -const BYTES_PER_KIBIBYTE = 1024; - -/** - * Creates a promise that resolves after a specified number of seconds. - * - * @param {number} seconds to wait before resolving the promise - * @return {Promise} that resolves after the specified delay - */ -const sleep = (seconds) => new Promise((resolve) => { - setTimeout(resolve, seconds * MILLIS_PER_SECOND); -}); - -/** - * Computes a human-readable representation of a size in bytes. - * - * @param {number} num - * @return {string} - */ -const computeHumanSize = (num) => { - // eslint-disable-next-line @stylistic/js/array-element-newline - const siPrefixes = ["", "K", "M", "G", "T", "P", "E", "Z"]; - for (let i = 0; i < siPrefixes.length; ++i) { - if (BYTES_PER_KIBIBYTE > Math.abs(num)) { - return `${Math.round(num)} ${siPrefixes[i]}B`; - } - num /= BYTES_PER_KIBIBYTE; - } - - return `${Math.round(num)} B`; -}; - -/** - * Deselects all selections within the browser viewport. - */ -const deselectAll = () => { - window.getSelection().removeAllRanges(); -}; - - -/** - * Removes wrapping quotes from the given string, if it's quoted, and unescapes quotes from within - * the quoted string. - * NOTE: This method does *not* unescape non-quote characters, unlike most methods which handle - * unescaping quotes. - * - * @param {string} str - * @param {string} quoteChar - * @param {string} escapeChar - * @return {string} The processed string - * @throws Error if the quoted string has a quote within it (rather than at its ends) or it's - * missing one of it's begin/end quotes. - */ -// eslint-disable-next-line max-statements -const unquoteString = ( - str, - quoteChar, - escapeChar, -) => { - if (0 === str.length) { - return str; - } - - // Determine the position of every character that we should remove from the processed string - const positionOfCharsToRemove = []; - const chars = Array.from(str); - let isEscaped = false; - for (let i = 0; i < chars.length; ++i) { - const c = chars[i]; - if (isEscaped) { - isEscaped = false; - if (c === quoteChar) { - // We only remove the escape characters that escape quotes - positionOfCharsToRemove.push(i - 1); - } - } else if (c === escapeChar) { - isEscaped = true; - } else if (c === quoteChar) { - positionOfCharsToRemove.push(i); - } - } - - if (0 === positionOfCharsToRemove.length) { - return str; - } - - // Ensure any unescaped quotes are only at the beginning and end of the string - let foundBeginQuote = false; - let foundEndQuote = false; - positionOfCharsToRemove.forEach((pos) => { - const char = chars[pos]; - if (quoteChar === char) { - if (0 === pos) { - foundBeginQuote = true; - } else if (chars.length - 1 === pos) { - foundEndQuote = true; - } else { - throw new Error(`Found unescaped quote character (${quoteChar}) within.`); - } - } - }); - if (foundBeginQuote ^ foundEndQuote) { - throw new Error("Begin/end quote is missing."); - } - - const processedChars = chars.filter( - (c, i) => ( - false === positionOfCharsToRemove.includes(i) - ) - ); - - return processedChars.join(""); -}; - -export { - computeHumanSize, - deselectAll, - sleep, - unquoteString, -}; diff --git a/components/webui/imports/utils/mongo.js b/components/webui/imports/utils/mongo.js deleted file mode 100644 index 8719f3d529..0000000000 --- a/components/webui/imports/utils/mongo.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Enum of Mongo Collection sort orders. - * - * @enum {string} - */ -const MONGO_SORT_ORDER = Object.freeze({ - ASCENDING: "asc", - DESCENDING: "desc", -}); - -/** - * The sort order for MongoDB queries using the "_id" field. - * - * @type {string[]} - */ -const MONGO_SORT_BY_ID = Object.freeze([ - "_id", - MONGO_SORT_ORDER.DESCENDING, -]); - -export { - MONGO_SORT_BY_ID, - MONGO_SORT_ORDER, -}; diff --git a/components/webui/launcher.js b/components/webui/launcher.js deleted file mode 100644 index 5d1f6f14ec..0000000000 --- a/components/webui/launcher.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Production launcher for CLP WebUI, which redirects Meteor server stderr to rotated error logs - * files in a specified directory for error monitoring. - * - * To avoid duplicated installations of dependencies, use the same `node_modules` for the server - * by setting envvar NODE_PATH="./programs/server/npm/node_modules", assuming this script is - * placed under the same directory where the bundled `main.js` is located. - * - * This is not intended for development use. For development, please refer to README.md in the - * component root for launching a development server with Meteor-specific error messages print - * to the console. - * - * ENVIRONMENT VARIABLES: - * - NODE_PATH: path to node_modules including "winston" and "winston-daily-rotate-file" - * - WEBUI_LOGS_DIR: path to error logs directory - * SCRIPT USAGE: - * - usage: node /path/to/launcher.js /path/to/main.js - */ - -const {spawn} = require("child_process"); -const winston = require("winston"); -require("winston-daily-rotate-file"); - - -const DEFAULT_LOGS_DIR = "."; - -const MAX_LOGS_FILE_SIZE = "100m"; -const MAX_LOGS_RETENTION_DAYS = "30d"; - -/** - * Creates a logger using winston module. - * - * @param {string} logsDir directory where the log files will be saved. - * @return {object} the logger object - */ -const getLogger = (logsDir) => { - return winston.createLogger({ - format: winston.format.combine( - winston.format.timestamp(), - winston.format.printf((info) => { - return JSON.stringify({ - timestamp: info.timestamp, - level: info.level, - label: info.label, - message: info.message, - }); - }), - ), - transports: [ - new winston.transports.DailyRotateFile({ - datePattern: "YYYY-MM-DD-HH", - dirname: logsDir, - filename: "webui_error-%DATE%.log", - maxFiles: MAX_LOGS_RETENTION_DAYS, - maxSize: MAX_LOGS_FILE_SIZE, - }), - ], - }); -}; - - -/** - * Runs a script with logging support. - * - * @param {string} logsDir path where the logs will be stored - * @param {string} scriptPath path of the script to be executed - */ -const runScript = (logsDir, scriptPath) => { - const logger = getLogger(logsDir); - const script = spawn(process.argv0, [scriptPath]); - - script.stderr.on("data", (data) => { - logger.error(data.toString()); - }); - - script.on("close", (code) => { - console.log(`Child process exited with code ${code}`); - }); -}; - -/** - * Parses the command line arguments and retrieves the values for the - * WEBUI_LOGS_DIR and scriptPath variables. - * - * @return {object} containing the values for WEBUI_LOGS_DIR and scriptPath - */ -const parseArgs = () => { - const WEBUI_LOGS_DIR = process.env.WEBUI_LOGS_DIR || DEFAULT_LOGS_DIR; - // eslint-disable-next-line prefer-destructuring - const scriptPath = process.argv[2]; - - return { - WEBUI_LOGS_DIR, - scriptPath, - }; -}; - -/** - * The main function of the program. - * - * This function is the entry point of the program. - * - * @return {void} - */ -const main = () => { - const args = parseArgs(); - - runScript(args.WEBUI_LOGS_DIR, args.scriptPath); -}; - -main(); diff --git a/components/webui/linter/package-lock.json b/components/webui/linter/package-lock.json deleted file mode 100644 index eab4f59f02..0000000000 --- a/components/webui/linter/package-lock.json +++ /dev/null @@ -1,4494 +0,0 @@ -{ - "name": "linter", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "eslint-config-yscope": "0.0.32" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "comment-parser": "1.4.1", - "esquery": "^1.6.0", - "jsdoc-type-pratt-parser": "~4.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "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", - "peer": true, - "dependencies": { - "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/regexpp": { - "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", - "peer": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/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", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/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", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.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", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "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, - "license": "BSD-3-Clause", - "peer": true - }, - "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", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@stylistic/eslint-plugin-js": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.8.1.tgz", - "integrity": "sha512-c5c2C8Mos5tTQd+NWpqwEu7VT6SSRooAguFPMj1cp2RkTYl1ynKoXo8MWy3k4rkbzoeYHrqC2UlUzsroAN7wtQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint": "^8.56.10", - "acorn": "^8.11.3", - "escape-string-regexp": "^4.0.0", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "peerDependencies": { - "eslint": ">=8.40.0" - } - }, - "node_modules/@stylistic/eslint-plugin-jsx": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-1.8.1.tgz", - "integrity": "sha512-k1Eb6rcjMP+mmjvj+vd9y5KUdWn1OBkkPLHXhsrHt5lCDFZxJEs0aVQzE5lpYrtVZVkpc5esTtss/cPJux0lfA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@stylistic/eslint-plugin-js": "^1.8.1", - "@types/eslint": "^8.56.10", - "estraverse": "^5.3.0", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "peerDependencies": { - "eslint": ">=8.40.0" - } - }, - "node_modules/@stylistic/eslint-plugin-plus": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-1.8.1.tgz", - "integrity": "sha512-4+40H3lHYTN8OWz+US8CamVkO+2hxNLp9+CAjorI7top/lHqemhpJvKA1LD9Uh+WMY9DYWiWpL2+SZ2wAXY9fQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/eslint": "^8.56.10", - "@typescript-eslint/utils": "^6.21.0" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.56.12", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", - "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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, - "license": "MIT", - "peer": true - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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", - "peer": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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", - "peer": 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, - "license": "MIT", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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", - "peer": true, - "engines": { - "node": ">=14" - } - }, - "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, - "license": "Python-2.0", - "peer": true - }, - "node_modules/array-buffer-byte-length": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "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", - "peer": true, - "dependencies": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "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", - "peer": true, - "dependencies": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "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", - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.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", - "peer": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "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", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "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", - "peer": true, - "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", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "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, - "license": "MIT", - "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/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, - "license": "MIT", - "peer": 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, - "license": "MIT", - "peer": true - }, - "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", - "peer": true, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-view-buffer": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "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, - "license": "MIT", - "peer": true - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "MIT", - "peer": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.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", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-abstract": { - "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", - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "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.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.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "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.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.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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "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.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.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.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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "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", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "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", - "peer": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "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", - "peer": true, - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "peer": true, - "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", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "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", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "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" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-yscope": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/eslint-config-yscope/-/eslint-config-yscope-0.0.32.tgz", - "integrity": "sha512-eLeOT8AFkjSqy/oxJTxJ/e7d9+qMDZTxqL926asp4VS0LxngxqOQRrUkTKrWXZiE6AQBJuK1udHQI1pgZBxehw==", - "dev": true, - "peerDependencies": { - "@stylistic/eslint-plugin-js": "^1.6.2", - "@stylistic/eslint-plugin-jsx": "^1.6.2", - "@stylistic/eslint-plugin-plus": "^1.6.2", - "eslint": "^8.57.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-import-newlines": "^1.4.0", - "eslint-plugin-jsdoc": "^48.2.3", - "eslint-plugin-no-autofix": "^1.2.3", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-simple-import-sort": "^12.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import-newlines": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-1.4.0.tgz", - "integrity": "sha512-+Cz1x2xBLtI9gJbmuYEpvY7F8K75wskBmJ7rk4VRObIJo+jklUJaejFJgtnWeL0dCFWabGEkhausrikXaNbtoQ==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "import-linter": "lib/index.js" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-plugin-import/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", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "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", - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/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", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "48.11.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.11.0.tgz", - "integrity": "sha512-d12JHJDPNo7IFwTOAItCeJY1hcqoIxE0lHA8infQByLilQ9xkqrRa6laWCnsuCrf+8rUnvxXY1XuTbibRBNylA==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "@es-joy/jsdoccomment": "~0.46.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.3.5", - "escape-string-regexp": "^4.0.0", - "espree": "^10.1.0", - "esquery": "^1.6.0", - "parse-imports": "^2.1.1", - "semver": "^7.6.3", - "spdx-expression-parse": "^4.0.0", - "synckit": "^0.9.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { - "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", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/espree": { - "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", - "peer": true, - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-no-autofix": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-autofix/-/eslint-plugin-no-autofix-1.2.3.tgz", - "integrity": "sha512-JFSYe82Da2A8Krh+Gfq7+3X2pchTScKgmrlMKIA4HmV6t5xGBF/kgjiFL3YTWRQXQ0NB9eOqpcxh6SuLtQUFjQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "eslint-rule-composer": "^0.3.0", - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "eslint": ">= 5.12.1" - } - }, - "node_modules/eslint-plugin-react": { - "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", - "peer": true, - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "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.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/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", - "peer": true, - "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, - "license": "Apache-2.0", - "peer": 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", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", - "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, - "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==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.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==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "license": "MIT", - "peer": true - }, - "node_modules/fast-glob": { - "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", - "peer": true, - "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.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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, - "license": "MIT", - "peer": true - }, - "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "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", - "peer": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "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, - "license": "ISC", - "peer": true - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "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", - "peer": true, - "dependencies": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "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", - "peer": true, - "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", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-symbol-description": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "dev": true, - "license": "ISC", - "peer": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "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, - "license": "MIT", - "peer": 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, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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, - "license": "MIT", - "peer": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "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, - "license": "MIT", - "peer": 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/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/has-bigints": { - "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", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "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", - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "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", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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", - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "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, - "license": "MIT", - "peer": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.19" - } - }, - "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, - "license": "ISC", - "peer": 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==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/internal-slot": { - "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", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "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", - "peer": true, - "dependencies": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "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", - "peer": true, - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "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", - "peer": true, - "dependencies": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "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", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "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", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "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", - "peer": true, - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/iterator.prototype": { - "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", - "peer": true, - "dependencies": { - "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/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, - "license": "MIT", - "peer": 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, - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12.0.0" - } - }, - "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, - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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, - "license": "MIT", - "peer": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "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", - "peer": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "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", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "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", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "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, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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, - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "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", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "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", - "peer": true, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "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, - "license": "MIT", - "peer": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-imports": { - "version": "2.2.1", - "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", - "peer": true, - "dependencies": { - "es-module-lexer": "^1.5.3", - "slashes": "^3.0.12" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "peer": true, - "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, - "license": "MIT", - "peer": 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", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "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", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "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", - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, - "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==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/reflect.getprototypeof": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "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" - } - }, - "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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "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, - "license": "ISC", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "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", - "peer": true, - "dependencies": { - "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": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "peer": true, - "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.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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "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", - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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", - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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", - "peer": 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, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "peer": true, - "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", - "peer": true, - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "peer": 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, - "license": "ISC", - "peer": true - }, - "node_modules/spdx-exceptions": { - "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, - "license": "CC-BY-3.0", - "peer": true - }, - "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", - "peer": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "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, - "license": "CC0-1.0", - "peer": true - }, - "node_modules/string.prototype.matchall": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "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.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "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", - "peer": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "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", - "peer": true, - "dependencies": { - "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.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "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", - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "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", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "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==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "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, - "license": "MIT", - "peer": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "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", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "peer": true - }, - "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", - "peer": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "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==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "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", - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "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", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unbox-primitive": { - "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", - "peer": true, - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^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" - } - }, - "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, - "license": "BSD-2-Clause", - "peer": 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, - "license": "ISC", - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "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", - "peer": true, - "dependencies": { - "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.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", - "peer": true, - "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.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "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", - "peer": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/components/webui/linter/package.json b/components/webui/linter/package.json deleted file mode 100644 index 491012675c..0000000000 --- a/components/webui/linter/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "scripts": { - "lint:check": "npx eslint --no-eslintrc --config package.json ../client ../imports ../server ../tests ../launcher.js", - "lint:fix": "npm run lint:check -- --fix" - }, - "devDependencies": { - "eslint-config-yscope": "0.0.32" - }, - "eslintConfig": { - "extends": [ - "yscope/meteor" - ] - } -} diff --git a/components/webui/package-lock.json b/components/webui/package-lock.json deleted file mode 100644 index c7644cc78e..0000000000 --- a/components/webui/package-lock.json +++ /dev/null @@ -1,2238 +0,0 @@ -{ - "name": "webui", - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", - "requires": { - "@babel/highlight": "^7.25.7", - "picocolors": "^1.0.0" - } - }, - "@babel/compat-data": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", - "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==" - }, - "@babel/core": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", - "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helpers": "^7.25.7", - "@babel/parser": "^7.25.8", - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.8", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "@babel/generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", - "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", - "requires": { - "@babel/types": "^7.25.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", - "requires": { - "@babel/types": "^7.25.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", - "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", - "requires": { - "@babel/compat-data": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - } - }, - "@babel/helper-module-imports": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", - "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", - "requires": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", - "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", - "requires": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", - "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==" - }, - "@babel/helper-simple-access": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", - "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", - "requires": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - } - }, - "@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==" - }, - "@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==" - }, - "@babel/helper-validator-option": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", - "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==" - }, - "@babel/helpers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", - "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", - "requires": { - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7" - } - }, - "@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "requires": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - } - }, - "@babel/parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", - "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", - "requires": { - "@babel/types": "^7.25.8" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", - "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", - "requires": { - "@babel/helper-plugin-utils": "^7.25.7" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", - "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-jsx": "^7.25.7", - "@babel/types": "^7.25.7" - } - }, - "@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", - "requires": { - "regenerator-runtime": "^0.14.0" - } - }, - "@babel/template": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", - "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", - "requires": { - "@babel/code-frame": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/types": "^7.25.7" - } - }, - "@babel/traverse": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", - "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", - "requires": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", - "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", - "requires": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==" - }, - "@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "requires": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "@fortawesome/fontawesome-common-types": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", - "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==" - }, - "@fortawesome/fontawesome-svg-core": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", - "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", - "requires": { - "@fortawesome/fontawesome-common-types": "6.6.0" - } - }, - "@fortawesome/free-solid-svg-icons": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz", - "integrity": "sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==", - "requires": { - "@fortawesome/fontawesome-common-types": "6.6.0" - } - }, - "@fortawesome/react-fontawesome": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", - "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", - "requires": { - "prop-types": "^15.8.1" - } - }, - "@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==", - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" - }, - "@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==" - }, - "@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==", - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@jsdoc/salty": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz", - "integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==", - "dev": true, - "requires": { - "lodash": "^4.17.21" - } - }, - "@kurkle/color": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", - "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" - }, - "@msgpack/msgpack": { - "version": "3.0.0-beta2", - "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz", - "integrity": "sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==" - }, - "@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" - }, - "@react-aria/ssr": { - "version": "3.9.6", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.6.tgz", - "integrity": "sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==", - "requires": { - "@swc/helpers": "^0.5.0" - } - }, - "@restart/hooks": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", - "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", - "requires": { - "dequal": "^2.0.3" - } - }, - "@restart/ui": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.8.0.tgz", - "integrity": "sha512-xJEOXUOTmT4FngTmhdjKFRrVVF0hwCLNPdatLCHkyS4dkiSK12cEu1Y0fjxktjJrdst9jJIc5J6ihMJCoWEN/g==", - "requires": { - "@babel/runtime": "^7.21.0", - "@popperjs/core": "^2.11.6", - "@react-aria/ssr": "^3.5.0", - "@restart/hooks": "^0.4.9", - "@types/warning": "^3.0.0", - "dequal": "^2.0.3", - "dom-helpers": "^5.2.0", - "uncontrollable": "^8.0.1", - "warning": "^4.0.3" - }, - "dependencies": { - "uncontrollable": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", - "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==" - } - } - }, - "@swc/helpers": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", - "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "dev": true - }, - "@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "dev": true, - "requires": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "dev": true - }, - "@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==" - }, - "@types/react": { - "version": "18.3.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", - "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "@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==", - "requires": { - "@types/react": "*" - } - }, - "@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" - }, - "@types/warning": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", - "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "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 - }, - "async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" - }, - "aws-ssl-profiles": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", - "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bootstrap": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", - "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==" - }, - "browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", - "requires": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001669", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", - "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==" - }, - "catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chart.js": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.5.tgz", - "integrity": "sha512-CVVjg1RYTJV9OCC8WeJPMx8gsV8K6WIyIEQUE3ui4AR9Hfgls9URri6Ja3hyMVBbTF8Q2KFa19PE815gWcWhng==", - "requires": { - "@kurkle/color": "^0.3.0" - } - }, - "chartjs-adapter-dayjs-4": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz", - "integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==" - }, - "chartjs-plugin-zoom": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.0.1.tgz", - "integrity": "sha512-ogOmLu6e+Q7E1XWOCOz9YwybMslz9qNfGV2a+qjfmqJYpsw5ZMoRHZBUyW+NGhkpQ5PwwPA/+rikHpBZb7PZuA==", - "requires": { - "hammerjs": "^2.0.8" - } - }, - "classnames": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "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==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "requires": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "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==" - }, - "csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "requires": { - "@babel/runtime": "^7.21.0" - } - }, - "dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" - }, - "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "requires": { - "ms": "^2.1.3" - } - }, - "denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "electron-to-chromium": { - "version": "1.5.41", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz", - "integrity": "sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==" - }, - "enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - }, - "escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" - }, - "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==" - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" - }, - "file-stream-rotator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", - "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", - "requires": { - "moment": "^2.29.1" - } - }, - "fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" - }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "requires": { - "is-property": "^1.0.2" - } - }, - "gensync": { - "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==" - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "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==", - "dev": true - }, - "hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" - }, - "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==" - }, - "history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "hoist-non-react-statics": { - "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==", - "requires": { - "react-is": "^16.7.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "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==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "dev": true, - "requires": { - "xmlcreate": "^2.0.4" - } - }, - "jsdoc": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz", - "integrity": "sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.15", - "@jsdoc/salty": "^0.2.1", - "@types/markdown-it": "^14.1.1", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^14.1.0", - "markdown-it-anchor": "^8.6.7", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "underscore": "~1.13.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==" - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" - }, - "linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "dev": true, - "requires": { - "uc.micro": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "logform": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", - "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", - "requires": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, - "long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "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==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "lru.min": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.1.tgz", - "integrity": "sha512-FbAj6lXil6t8z4z3j0E5mfRlPzxkySotzUHwRXjlpRh10vc6AI6WN62ehZj82VG7M20rqogJ0GLwar2Xa05a8Q==" - }, - "markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "dev": true, - "requires": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - } - }, - "markdown-it-anchor": { - "version": "8.6.7", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", - "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", - "dev": true - }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true - }, - "mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true - }, - "meteor-node-stubs": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.2.10.tgz", - "integrity": "sha512-zP1AVg8sOATz15yfy11R2VTx+IZFfAOXi8GuZa8tOfeVT1tKaqDooAbFylnIXwpStSu6HRBUhQqHtR06Qr9aEA==", - "requires": { - "@meteorjs/crypto-browserify": "^3.12.1", - "assert": "^2.1.0", - "browserify-zlib": "^0.2.0", - "buffer": "^5.7.1", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "domain-browser": "^4.23.0", - "elliptic": "^6.5.7", - "events": "^3.3.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^1.4.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.2", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "0.0.1", - "url": "^0.11.4", - "util": "^0.12.5", - "vm-browserify": "^1.1.2" - }, - "dependencies": { - "@meteorjs/crypto-browserify": { - "version": "3.12.1", - "bundled": true, - "requires": { - "browserify-cipher": "^1.0.1", - "browserify-sign": "^4.2.3", - "create-ecdh": "^4.0.4", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "diffie-hellman": "^5.0.3", - "hash-base": "~3.0.4", - "inherits": "^2.0.4", - "pbkdf2": "^3.1.2", - "public-encrypt": "^4.0.3", - "randombytes": "^2.1.0", - "randomfill": "^1.0.4" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - } - } - }, - "asn1.js": { - "version": "4.10.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "bundled": true - } - } - }, - "assert": { - "version": "2.1.0", - "bundled": true, - "requires": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, - "available-typed-arrays": { - "version": "1.0.5", - "bundled": true - }, - "base64-js": { - "version": "1.5.1", - "bundled": true - }, - "bn.js": { - "version": "5.2.0", - "bundled": true - }, - "brorand": { - "version": "1.1.0", - "bundled": true - }, - "browserify-aes": { - "version": "1.2.0", - "bundled": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "bundled": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "bundled": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.3", - "bundled": true, - "requires": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "bundled": true - }, - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "readable-stream": { - "version": "2.3.8", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } - } - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "bundled": true, - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "5.7.1", - "bundled": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-xor": { - "version": "1.0.3", - "bundled": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "bundled": true - }, - "call-bind": { - "version": "1.0.7", - "bundled": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "cipher-base": { - "version": "1.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "console-browserify": { - "version": "1.2.0", - "bundled": true - }, - "constants-browserify": { - "version": "1.0.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.3", - "bundled": true - }, - "create-ecdh": { - "version": "4.0.4", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "bundled": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "bundled": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "define-data-property": { - "version": "1.1.4", - "bundled": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-properties": { - "version": "1.2.1", - "bundled": true, - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "des.js": { - "version": "1.0.1", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "bundled": true - } - } - }, - "domain-browser": { - "version": "4.23.0", - "bundled": true - }, - "elliptic": { - "version": "6.5.7", - "bundled": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "bundled": true - } - } - }, - "es-define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "bundled": true - }, - "events": { - "version": "3.3.0", - "bundled": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "bundled": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "for-each": { - "version": "0.3.3", - "bundled": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "function-bind": { - "version": "1.1.2", - "bundled": true - }, - "get-intrinsic": { - "version": "1.2.4", - "bundled": true, - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "bundled": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "has-property-descriptors": { - "version": "1.0.2", - "bundled": true, - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.1", - "bundled": true - }, - "has-symbols": { - "version": "1.0.3", - "bundled": true - }, - "has-tostringtag": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hash-base": { - "version": "3.1.0", - "bundled": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hasown": { - "version": "2.0.0", - "bundled": true, - "requires": { - "function-bind": "^1.1.2" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "bundled": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "https-browserify": { - "version": "1.0.0", - "bundled": true - }, - "ieee754": { - "version": "1.2.1", - "bundled": true - }, - "inherits": { - "version": "2.0.4", - "bundled": true - }, - "is-arguments": { - "version": "1.1.1", - "bundled": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "bundled": true - }, - "is-generator-function": { - "version": "1.0.10", - "bundled": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-nan": { - "version": "1.3.2", - "bundled": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "is-typed-array": { - "version": "1.1.12", - "bundled": true, - "requires": { - "which-typed-array": "^1.1.11" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "md5.js": { - "version": "1.3.5", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "bundled": true - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "bundled": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "bundled": true - }, - "object-inspect": { - "version": "1.13.2", - "bundled": true - }, - "object-is": { - "version": "1.1.5", - "bundled": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "bundled": true - }, - "object.assign": { - "version": "4.1.4", - "bundled": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "os-browserify": { - "version": "0.3.0", - "bundled": true - }, - "pako": { - "version": "1.0.11", - "bundled": true - }, - "parse-asn1": { - "version": "5.1.7", - "bundled": true, - "requires": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "hash-base": "~3.0", - "pbkdf2": "^3.1.2", - "safe-buffer": "^5.2.1" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - } - } - }, - "path-browserify": { - "version": "1.0.1", - "bundled": true - }, - "pbkdf2": { - "version": "3.1.2", - "bundled": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "process": { - "version": "0.11.10", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true - }, - "public-encrypt": { - "version": "4.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "bundled": true - } - } - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.13.0", - "bundled": true, - "requires": { - "side-channel": "^1.0.6" - } - }, - "querystring-es3": { - "version": "0.2.1", - "bundled": true - }, - "randombytes": { - "version": "2.1.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "bundled": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "3.6.2", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "ripemd160": { - "version": "2.0.2", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true - }, - "set-function-length": { - "version": "1.2.2", - "bundled": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "setimmediate": { - "version": "1.0.5", - "bundled": true - }, - "sha.js": { - "version": "2.4.11", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "side-channel": { - "version": "1.0.6", - "bundled": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "stream-browserify": { - "version": "3.0.0", - "bundled": true, - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "stream-http": { - "version": "3.2.0", - "bundled": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "timers-browserify": { - "version": "2.0.12", - "bundled": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tty-browserify": { - "version": "0.0.1", - "bundled": true - }, - "url": { - "version": "0.11.4", - "bundled": true, - "requires": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - } - }, - "util": { - "version": "0.12.5", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "vm-browserify": { - "version": "1.1.2", - "bundled": true - }, - "which-typed-array": { - "version": "1.1.13", - "bundled": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "xtend": { - "version": "4.0.2", - "bundled": true - } - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "mysql2": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.3.tgz", - "integrity": "sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ==", - "requires": { - "aws-ssl-profiles": "^1.1.1", - "denque": "^2.1.0", - "generate-function": "^2.3.1", - "iconv-lite": "^0.6.3", - "long": "^5.2.1", - "lru.min": "^1.0.0", - "named-placeholders": "^1.1.3", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.2" - } - }, - "named-placeholders": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", - "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "requires": { - "lru-cache": "^7.14.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - } - } - }, - "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==" - }, - "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==" - }, - "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" - }, - "one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "requires": { - "fn.name": "1.x.x" - } - }, - "path-to-regexp": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", - "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", - "requires": { - "isarray": "0.0.1" - } - }, - "picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", - "requires": { - "react-is": "^16.3.2", - "warning": "^4.0.0" - } - }, - "punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "dev": true - }, - "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==", - "requires": { - "loose-envify": "^1.1.0" - } - }, - "react-bootstrap": { - "version": "2.10.5", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.5.tgz", - "integrity": "sha512-XueAOEn64RRkZ0s6yzUTdpFtdUXs5L5491QU//8ZcODKJNDLt/r01tNyriZccjgRImH1REynUc9pqjiRMpDLWQ==", - "requires": { - "@babel/runtime": "^7.24.7", - "@restart/hooks": "^0.4.9", - "@restart/ui": "^1.6.9", - "@types/react-transition-group": "^4.4.6", - "classnames": "^2.3.2", - "dom-helpers": "^5.2.1", - "invariant": "^2.2.4", - "prop-types": "^15.8.1", - "prop-types-extra": "^1.1.0", - "react-transition-group": "^4.4.5", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - } - }, - "react-chartjs-2": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz", - "integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==" - }, - "react-datepicker": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.25.0.tgz", - "integrity": "sha512-zB7CSi44SJ0sqo8hUQ3BF1saE/knn7u25qEMTO1CQGofY1VAKahO8k9drZtp0cfW1DMfoYLR3uSY1/uMvbEzbg==", - "requires": { - "@popperjs/core": "^2.11.8", - "classnames": "^2.2.6", - "date-fns": "^2.30.0", - "prop-types": "^15.7.2", - "react-onclickoutside": "^6.13.0", - "react-popper": "^2.3.0" - } - }, - "react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - } - }, - "react-fast-compare": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" - }, - "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==" - }, - "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==" - }, - "react-onclickoutside": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.1.tgz", - "integrity": "sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==" - }, - "react-popper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", - "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", - "requires": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" - } - }, - "react-router": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", - "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", - "requires": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "react-router-dom": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", - "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", - "requires": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.4", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "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==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "requizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", - "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", - "dev": true, - "requires": { - "lodash": "^4.17.21" - } - }, - "resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "requires": { - "loose-envify": "^1.1.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - }, - "seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "requires": { - "is-arrayish": "^0.3.1" - } - }, - "sqlstring": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", - "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==" - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" - }, - "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==" - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "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==" - }, - "triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==" - }, - "tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" - }, - "uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true - }, - "uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", - "requires": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" - } - }, - "underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", - "dev": true - }, - "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==", - "requires": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" - }, - "value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "winston": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.15.0.tgz", - "integrity": "sha512-RhruH2Cj0bV0WgNL+lOfoUBI4DVfdUNjVnJGVovWZmrcKtrFTTRzgXYK2O9cymSGjrERCtaAeHwMNnUWXlwZow==", - "requires": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.6.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.7.0" - } - }, - "winston-daily-rotate-file": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz", - "integrity": "sha512-7LGPiYGBPNyGHLn9z33i96zx/bd71pjBn9tqQzO3I4Tayv94WPmBNwKC7CO1wPHdP9uvu+Md/1nr6VSH9h0iaA==", - "requires": { - "file-stream-rotator": "^0.6.1", - "object-hash": "^2.0.1", - "triple-beam": "^1.3.0", - "winston-transport": "^4.4.0" - } - }, - "winston-transport": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.8.0.tgz", - "integrity": "sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA==", - "requires": { - "logform": "^2.6.1", - "readable-stream": "^4.5.2", - "triple-beam": "^1.3.0" - }, - "dependencies": { - "readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } - } - }, - "xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } -} diff --git a/components/webui/package.json b/components/webui/package.json deleted file mode 100644 index 8ba99fc11c..0000000000 --- a/components/webui/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "webui", - "private": true, - "scripts": { - "start": "meteor run", - "build-docs": "jsdoc -r client imports server tests launcher.js -d docs", - "lint": "npm run lint:check", - "lint:check": "npm --prefix linter/ run lint:check", - "lint:fix": "npm --prefix linter/ run lint:fix", - "test": "meteor test --once --driver-package meteortesting:mocha", - "test-app": "TEST_WATCH=1 meteor test --full-app --driver-package meteortesting:mocha", - "visualize": "meteor --production --extra-packages bundle-visualizer" - }, - "dependencies": { - "@babel/core": "^7.24.4", - "@babel/plugin-transform-react-jsx": "^7.23.4", - "@babel/runtime": "^7.24.4", - "@fortawesome/fontawesome-svg-core": "^6.5.1", - "@fortawesome/free-solid-svg-icons": "^6.5.1", - "@fortawesome/react-fontawesome": "^0.2.0", - "@msgpack/msgpack": "^3.0.0-beta2", - "bootstrap": "^5.3.2", - "chart.js": "^4.4.2", - "chartjs-adapter-dayjs-4": "^1.0.4", - "chartjs-plugin-zoom": "^2.0.1", - "dayjs": "^1.11.10", - "json5": "^2.2.3", - "meteor-node-stubs": "^1.2.10", - "mysql2": "^3.10.0", - "react": "^18.2.0", - "react-bootstrap": "^2.10.2", - "react-chartjs-2": "^5.2.0", - "react-datepicker": "^4.25.0", - "react-dom": "^18.2.0", - "react-router": "^5.3.4", - "react-router-dom": "^5.3.4", - "uuid": "^9.0.1", - "winston": "^3.11.0", - "winston-daily-rotate-file": "^4.7.1" - }, - "devDependencies": { - "jsdoc": "^4.0.2" - }, - "eslintConfig": { - "extends": [ - "yscope/meteor" - ] - }, - "meteor": { - "mainModule": { - "client": "client/main.jsx", - "server": "server/main.js" - }, - "testModule": "tests/main.js" - }, - "babel": { - "plugins": [ - [ - "@babel/plugin-transform-react-jsx", - { - "runtime": "automatic" - } - ] - ] - } -} diff --git a/components/webui/server/main.js b/components/webui/server/main.js deleted file mode 100644 index 2660e16c13..0000000000 --- a/components/webui/server/main.js +++ /dev/null @@ -1,77 +0,0 @@ -import {Meteor} from "meteor/meteor"; - -import { - deinitDbManagers, - initDbManagers, -} from "/imports/utils/DbManager"; -import {initLogger} from "/imports/utils/logger"; - -import "/imports/api/ingestion/collections"; -import "/imports/api/ingestion/server/publications"; -import "/imports/api/search/server/collections"; -import "/imports/api/search/server/methods"; -import "/imports/api/search/server/publications"; - - -const DEFAULT_LOGS_DIR = "."; -const DEFAULT_LOGGING_LEVEL = Meteor.isDevelopment ? - "DEBUG" : - "INFO"; - -/** - * Parses environment variables into config values for the application. - * - * @return {object} containing config values including the SQL database credentials, - * logs directory, and logging level. - * @throws {Error} if the required environment variables are undefined, it exits the process with an - * error. - */ -const parseEnvVars = () => { - const { - CLP_DB_USER, - CLP_DB_PASS, - } = process.env; - - if ([ - typeof CLP_DB_USER, - typeof CLP_DB_PASS, - ].includes("undefined")) { - console.error("Environment variables CLP_DB_USER and CLP_DB_PASS must be defined"); - process.exit(1); - } - - const WEBUI_LOGS_DIR = process.env.WEBUI_LOGS_DIR || DEFAULT_LOGS_DIR; - const WEBUI_LOGGING_LEVEL = process.env.WEBUI_LOGGING_LEVEL || DEFAULT_LOGGING_LEVEL; - - return { - CLP_DB_USER, - CLP_DB_PASS, - WEBUI_LOGS_DIR, - WEBUI_LOGGING_LEVEL, - }; -}; - -Meteor.startup(async () => { - const envVars = parseEnvVars(); - - initLogger(envVars.WEBUI_LOGS_DIR, envVars.WEBUI_LOGGING_LEVEL, Meteor.isDevelopment); - - await initDbManagers({ - dbHost: Meteor.settings.private.SqlDbHost, - dbPort: Meteor.settings.private.SqlDbPort, - - dbName: Meteor.settings.private.SqlDbName, - dbPassword: envVars.CLP_DB_PASS, - dbUser: envVars.CLP_DB_USER, - }, { - clpArchivesTableName: Meteor.settings.private.SqlDbClpArchivesTableName, - clpFilesTableName: Meteor.settings.private.SqlDbClpFilesTableName, - compressionJobsTableName: Meteor.settings.private.SqlDbCompressionJobsTableName, - queryJobsTableName: Meteor.settings.private.SqlDbQueryJobsTableName, - }); -}); - -process.on("exit", async (code) => { - console.log(`Node.js is about to exit with code: ${code}`); - await deinitDbManagers(); -}); diff --git a/components/webui/settings.json b/components/webui/settings.json deleted file mode 100644 index f959dac8e9..0000000000 --- a/components/webui/settings.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "private": { - "SqlDbHost": "localhost", - "SqlDbPort": 3306, - "SqlDbName": "clp-db", - - "SqlDbClpArchivesTableName": "clp_archives", - "SqlDbClpFilesTableName": "clp_files", - "SqlDbCompressionJobsTableName": "compression_jobs", - "SqlDbQueryJobsTableName": "query_jobs" - }, - "public": { - "AggregationResultsCollectionName": "aggregation-results", - "ClpStorageEngine": "clp", - "CompressionJobsCollectionName": "compression-jobs", - "LogViewerWebuiUrl": "http://localhost:8080", - "SearchResultsCollectionName": "search-results", - "SearchResultsMetadataCollectionName": "results-metadata", - "StatsCollectionName": "stats", - "SupportUrl": "https://github.com/y-scope/clp/issues/new/choose" - } -} diff --git a/components/webui/tests/main.js b/components/webui/tests/main.js deleted file mode 100644 index 9820a417b5..0000000000 --- a/components/webui/tests/main.js +++ /dev/null @@ -1,23 +0,0 @@ -import assert from "assert"; - -import "./misc.js"; - - -describe("webui", () => { - it("package.json has correct name", async () => { - const {name} = await import("../package.json"); - assert.strictEqual(name, "webui"); - }); - - if (Meteor.isClient) { - it("client is not server", () => { - assert.strictEqual(Meteor.isServer, false); - }); - } - - if (Meteor.isServer) { - it("server is not client", () => { - assert.strictEqual(Meteor.isClient, false); - }); - } -}); diff --git a/components/webui/tests/misc.js b/components/webui/tests/misc.js deleted file mode 100644 index 04a1abe8b2..0000000000 --- a/components/webui/tests/misc.js +++ /dev/null @@ -1,42 +0,0 @@ -import assert from "assert"; - -import {unquoteString} from "/imports/utils/misc"; - - -describe("misc", () => { - it("unquoteString", () => { - // Empty string - assert.strictEqual(unquoteString("", '"', "\\"), ""); - - // Unquoted string - assert.strictEqual(unquoteString("abc", '"', "\\"), "abc"); - - // Double-quoted string - assert.strictEqual(unquoteString("\"abc\"", '"', "\\"), "abc"); - - // Single-quoted string - assert.strictEqual(unquoteString("'abc'", "'", "\\"), "abc"); - - // With escaped characters - assert.strictEqual(unquoteString("a\\\\b\\\"c\\*\\?", '"', "\\"), "a\\\\b\"c\\*\\?"); - - // Double-quoted with escaped characters - assert.strictEqual(unquoteString("\"a\\\\b\\\"c\\*\\?\"", '"', "\\"), "a\\\\b\"c\\*\\?"); - - // With one of the quotes missing - assert.throws(() => { - unquoteString("\"abc", '"', "\\"); - }, Error); - assert.throws(() => { - unquoteString("abc\"", '"', "\\"); - }, Error); - - // With an unescaped quote in the middle - assert.throws(() => { - unquoteString("ab\"c", '"', "\\"); - }, Error); - assert.throws(() => { - unquoteString("\"ab\"c\"", '"', "\\"); - }, Error); - }); -}); diff --git a/taskfile.yaml b/taskfile.yaml index 3bbc77a4c2..d43c1c50a6 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -20,14 +20,10 @@ vars: G_BUILD_DIR: "{{.ROOT_DIR}}/build" G_CORE_COMPONENT_BUILD_DIR: "{{.G_BUILD_DIR}}/core" G_LOG_VIEWER_WEBUI_BUILD_DIR: "{{.G_BUILD_DIR}}/log-viewer-webui" - G_METEOR_BUILD_DIR: "{{.G_BUILD_DIR}}/meteor" - G_NODEJS_14_BUILD_DIR: "{{.G_BUILD_DIR}}/nodejs-14" - G_NODEJS_14_BIN_DIR: "{{.G_NODEJS_14_BUILD_DIR}}/bin" G_NODEJS_22_BUILD_DIR: "{{.G_BUILD_DIR}}/nodejs-22" G_NODEJS_22_BIN_DIR: "{{.G_NODEJS_22_BUILD_DIR}}/bin" G_PACKAGE_BUILD_DIR: "{{.G_BUILD_DIR}}/clp-package" G_PACKAGE_VENV_DIR: "{{.G_BUILD_DIR}}/package-venv" - G_WEBUI_BUILD_DIR: "{{.G_BUILD_DIR}}/webui" # Taskfile paths G_UTILS_TASKFILE: "{{.ROOT_DIR}}/tools/yscope-dev-utils/exports/taskfiles/utils/utils.yaml" @@ -52,7 +48,6 @@ tasks: - task: "clean-python-component" vars: COMPONENT: "job-orchestration" - - task: "clean-webui" clean-core: cmds: @@ -67,11 +62,6 @@ tasks: - "rm -rf 'components/log-viewer-webui/server/node_modules'" - "rm -rf 'components/log-viewer-webui/yscope-log-viewer/node_modules'" - clean-webui: - cmds: - - "rm -rf 'components/webui/.meteor/local'" - - "rm -rf 'components/webui/node_modules'" - clp-json-pkg-tar: cmds: - task: "package-tar" @@ -95,8 +85,6 @@ tasks: sources: - "{{.G_BUILD_DIR}}/log-viewer-webui.md5" - "{{.G_BUILD_DIR}}/package-venv.md5" - - "{{.G_BUILD_DIR}}/webui.md5" - - "{{.G_BUILD_DIR}}/webui-nodejs.md5" - "{{.G_CORE_COMPONENT_BUILD_DIR}}/clg" - "{{.G_CORE_COMPONENT_BUILD_DIR}}/clo" - "{{.G_CORE_COMPONENT_BUILD_DIR}}/clp" @@ -117,13 +105,11 @@ tasks: - "init" - "job-orchestration" - "log-viewer-webui" - - "nodejs-14" - "package-venv" - task: "utils:checksum:validate" vars: CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - - "webui" cmds: - "rm -rf '{{.OUTPUT_DIR}}'" - "rsync -a components/package-template/src/ '{{.OUTPUT_DIR}}'" @@ -146,24 +132,11 @@ tasks: "{{.G_CORE_COMPONENT_BUILD_DIR}}/indexer" "{{.G_CORE_COMPONENT_BUILD_DIR}}/reducer-server" "{{.OUTPUT_DIR}}/bin/" - - >- - rsync -a - "{{.G_NODEJS_14_BIN_DIR}}/node" - "{{.OUTPUT_DIR}}/bin/node-14" - >- rsync -a "{{.G_NODEJS_22_BIN_DIR}}/node" "{{.OUTPUT_DIR}}/bin/node-22" - "mkdir -p '{{.OUTPUT_DIR}}/var/www/'" - - >- - rsync -a - "{{.G_WEBUI_BUILD_DIR}}/" - "{{.OUTPUT_DIR}}/var/www/webui/" - # Avoid using `npm clean-install` because Meteor does not generate a `package-lock.json` file, - # which `clean-install` depends on. - - |- - cd "{{.OUTPUT_DIR}}/var/www/webui/programs/server" - PATH="{{.G_NODEJS_14_BIN_DIR}}":$PATH npm install - >- rsync -a "{{.G_LOG_VIEWER_WEBUI_BUILD_DIR}}/" @@ -286,50 +259,6 @@ tasks: CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - webui: - vars: - CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" - OUTPUT_DIR: "{{.G_WEBUI_BUILD_DIR}}" - sources: - - "{{.G_BUILD_DIR}}/meteor.md5" - - "{{.G_BUILD_DIR}}/webui-node-modules.md5" - - "{{.TASKFILE}}" - - "*" - - ".meteor/*" - - "client/**/*" - - "imports/**/*" - - "server/**/*" - - "tests/**/*" - dir: "components/webui" - platforms: ["386", "amd64"] - generates: ["{{.CHECKSUM_FILE}}"] - deps: - - "init" - - "meteor" - - task: "utils:checksum:validate" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - - "webui-node-modules" - cmds: - - "rm -rf '{{.OUTPUT_DIR}}'" - - "mkdir -p '{{.OUTPUT_DIR}}'" - - "PATH='{{.G_METEOR_BUILD_DIR}}':$PATH meteor build --directory '{{.OUTPUT_DIR}}'" - - >- - rsync -a - "{{.OUTPUT_DIR}}/bundle/" - launcher.js - settings.json - "{{.OUTPUT_DIR}}/" - - "rm -rf '{{.OUTPUT_DIR}}/bundle/'" - # Remove temp files generated by `meteor build` before checksum - - "find node_modules -type f -name '.meteor-portable-2.json' -exec rm {} +" - # This command must be last - - task: "utils:checksum:compute" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - nodejs-22: internal: true vars: @@ -343,18 +272,6 @@ tasks: NODEJS_VERSION: "v22.4.0" OUTPUT_DIR: "{{.OUTPUT_DIR}}" - nodejs-14: - internal: true - vars: - CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" - OUTPUT_DIR: "{{.G_NODEJS_14_BUILD_DIR}}" - cmds: - - task: "nodejs" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - NODEJS_VERSION: "v14.21.3" - OUTPUT_DIR: "{{.OUTPUT_DIR}}" - download-and-extract-tar: internal: true label: "{{.TASK}}-{{.TAR_NAME}}" @@ -482,26 +399,6 @@ tasks: "{{.SERVER_CHECKSUM_FILE}}" > "{{.CHECKSUM_FILE}}" - meteor: - vars: - CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" - METEOR_ARCH: "{{ if eq ARCH \"arm64\" }}arm64{{ else }}x86_64{{ end }}" - METEOR_PLATFORM: "{{ if eq OS \"darwin\" }}osx{{ else }}linux{{ end }}" - METEOR_RELEASE: "2.16" - run: "once" - preconditions: - - sh: >- - (test "$(uname -m)" != "aarch64") || (test "$(uname -s)" != "Linux") - msg: "Meteor 2.x does not support aarch64 on Linux" - cmds: - - task: "download-and-extract-tar" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - EXTRACTED_DIR_NAME: ".meteor" - OUTPUT_DIR: "{{.G_METEOR_BUILD_DIR}}" - TAR_NAME: "meteor-bootstrap-os.{{.METEOR_PLATFORM}}.{{.METEOR_ARCH}}.tar.gz" - URL_PREFIX: "https://static.meteor.com/packages-bootstrap/{{.METEOR_RELEASE}}" - nodejs: internal: true vars: @@ -624,35 +521,6 @@ tasks: . "{{.VENV_DIR}}/bin/activate" poetry build --format wheel - webui-node-modules: - internal: true - vars: - CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" - WEBUI_SRC_DIR: "{{.ROOT_DIR}}/components/webui" - OUTPUT_DIR: "{{.WEBUI_SRC_DIR}}/node_modules" - sources: - - "{{.G_BUILD_DIR}}/meteor.md5" - - "{{.TASKFILE}}" - - ".meteor/packages" - - "package.json" - dir: "{{.WEBUI_SRC_DIR}}" - generates: ["{{.CHECKSUM_FILE}}"] - deps: - - "init" - - "meteor" - - task: "utils:checksum:validate" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - cmds: - - "rm -rf '{{.OUTPUT_DIR}}'" - - "PATH='{{.G_METEOR_BUILD_DIR}}':$PATH meteor npm install --production" - # This command must be last - - task: "utils:checksum:compute" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - component-venv: internal: true label: "{{.COMPONENT}}-venv" diff --git a/taskfiles/lint.yaml b/taskfiles/lint.yaml index 33a7752ddb..3ac692bc3e 100644 --- a/taskfiles/lint.yaml +++ b/taskfiles/lint.yaml @@ -6,7 +6,6 @@ vars: {\"name\":\"cpp11_zone.hpp\",\"lines\":[[197,197]]} G_LINT_CLANG_TIDY_DIR: "{{.G_BUILD_DIR}}/lint-clang-tidy" G_LINT_VENV_DIR: "{{.G_BUILD_DIR}}/lint-venv" - G_WEBUI_SRC_DIR: "{{.ROOT_DIR}}/components/webui" tasks: check: @@ -57,9 +56,7 @@ tasks: check-js: sources: &js_source_files - - "{{.G_BUILD_DIR}}/lint#linter-node-modules.md5" - "{{.G_BUILD_DIR}}/log-viewer-webui-node-modules.md5" - - "{{.G_BUILD_DIR}}/webui-node-modules.md5" - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/client/package.json" - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/client/src/**/*.css" - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/client/src/**/*.jsx" @@ -67,16 +64,6 @@ tasks: - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/server/package.json" - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/server/settings.json" - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/server/src/**/*.js" - - "{{.G_WEBUI_SRC_DIR}}/client/**/*.js" - - "{{.G_WEBUI_SRC_DIR}}/client/**/*.jsx" - - "{{.G_WEBUI_SRC_DIR}}/imports/**/*.js" - - "{{.G_WEBUI_SRC_DIR}}/imports/**/*.jsx" - - "{{.G_WEBUI_SRC_DIR}}/launcher.js" - - "{{.G_WEBUI_SRC_DIR}}/package.json" - - "{{.G_WEBUI_SRC_DIR}}/server/**/*.js" - - "{{.G_WEBUI_SRC_DIR}}/server/**/*.jsx" - - "{{.G_WEBUI_SRC_DIR}}/tests/**/*.js" - - "{{.G_WEBUI_SRC_DIR}}/tests/**/*.jsx" - "{{.ROOT_DIR}}/taskfile.yaml" - "{{.TASKFILE}}" cmds: @@ -767,14 +754,11 @@ tasks: internal: true requires: vars: ["LINT_CMD"] - deps: [":log-viewer-webui-node-modules", "linter-node-modules"] + deps: [":log-viewer-webui-node-modules"] cmds: - - for: - - "components/log-viewer-webui" - - "components/webui" - cmd: |- - cd "{{.ITEM}}" - PATH="{{.G_NODEJS_22_BIN_DIR}}":$PATH npm run "lint:{{.LINT_CMD}}" + - |- + cd "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}" + PATH="{{.G_NODEJS_22_BIN_DIR}}":$PATH npm run "lint:{{.LINT_CMD}}" py: internal: true @@ -795,38 +779,6 @@ tasks: black --color --line-length 100 {{.BLACK_FLAGS}} . ruff check {{.RUFF_FLAGS}} . - linter-node-modules: - internal: true - vars: - WEBUI_LINTER_DIR: "{{.ROOT_DIR}}/components/webui/linter" - OUTPUT_DIR: "{{.WEBUI_LINTER_DIR}}/node_modules" - CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK | replace \":\" \"#\"}}.md5" - sources: - - "{{.G_BUILD_DIR}}/nodejs-22.md5" - - "{{.G_BUILD_DIR}}/webui-node-modules.md5" - - "{{.ROOT_DIR}}/taskfile.yaml" - - "{{.TASKFILE}}" - - "package.json" - - "package-lock.json" - dir: "{{.WEBUI_LINTER_DIR}}" - generates: ["{{.CHECKSUM_FILE}}"] - deps: - - ":init" - - ":webui-node-modules" - - task: ":utils:checksum:validate" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - - ":nodejs-22" - cmds: - - "rm -rf '{{.OUTPUT_DIR}}'" - - "PATH='{{.G_NODEJS_22_BIN_DIR}}':$PATH npm clean-install" - # This command must be last - - task: ":utils:checksum:compute" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - venv: internal: true vars: From b35a7c2402d859ffaabebfa261684b42c8ae2c64 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Wed, 28 May 2025 19:42:38 -0400 Subject: [PATCH 02/36] fix lint --- components/clp-package-utils/clp_package_utils/general.py | 5 +---- components/clp-py-utils/clp_py_utils/s3_utils.py | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/components/clp-package-utils/clp_package_utils/general.py b/components/clp-package-utils/clp_package_utils/general.py index 6166941bcb..32253b84a3 100644 --- a/components/clp-package-utils/clp_package_utils/general.py +++ b/components/clp-package-utils/clp_package_utils/general.py @@ -509,13 +509,10 @@ def validate_worker_config(clp_config: CLPConfig): clp_config.validate_stream_output_config() -def validate_webui_config( - clp_config: CLPConfig, settings_json_path: pathlib.Path -): +def validate_webui_config(clp_config: CLPConfig, settings_json_path: pathlib.Path): if not settings_json_path.exists(): raise ValueError( f"{WEBUI_COMPONENT_NAME} {settings_json_path} is not a valid path to settings.json" ) validate_port(f"{WEBUI_COMPONENT_NAME}.port", clp_config.webui.host, clp_config.webui.port) - diff --git a/components/clp-py-utils/clp_py_utils/s3_utils.py b/components/clp-py-utils/clp_py_utils/s3_utils.py index 6b73df4536..dbc7d0981b 100644 --- a/components/clp-py-utils/clp_py_utils/s3_utils.py +++ b/components/clp-py-utils/clp_py_utils/s3_utils.py @@ -14,13 +14,13 @@ COMPRESSION_SCHEDULER_COMPONENT_NAME, COMPRESSION_WORKER_COMPONENT_NAME, FsStorage, - WEBUI_COMPONENT_NAME, QUERY_SCHEDULER_COMPONENT_NAME, QUERY_WORKER_COMPONENT_NAME, S3Config, S3Credentials, S3Storage, StorageType, + WEBUI_COMPONENT_NAME, ) from clp_py_utils.compression import FileMetadata From 1c892967f679c34fd10e58afc4c0e8f2f1b5a40f Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 14 Jun 2025 08:46:58 -0400 Subject: [PATCH 03/36] add back files --- .../log-viewer-webui/client/package-lock.json | 1579 +++++++++++------ .../log-viewer-webui/client/package.json | 3 + .../client/src/ui/Loading.css | 24 + .../client/src/ui/Loading.tsx | 149 ++ .../client/src/ui/QueryStatus.tsx | 105 ++ 5 files changed, 1363 insertions(+), 497 deletions(-) create mode 100644 components/log-viewer-webui/client/src/ui/Loading.css create mode 100644 components/log-viewer-webui/client/src/ui/Loading.tsx create mode 100644 components/log-viewer-webui/client/src/ui/QueryStatus.tsx diff --git a/components/log-viewer-webui/client/package-lock.json b/components/log-viewer-webui/client/package-lock.json index 825b1efa36..6dc6fefd6a 100644 --- a/components/log-viewer-webui/client/package-lock.json +++ b/components/log-viewer-webui/client/package-lock.json @@ -10,6 +10,9 @@ "license": "Apache-2.0", "dependencies": { "@ant-design/v5-patch-for-react-19": "^1.0.3", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@mui/joy": "^5.0.0-beta.51", "@sinclair/typebox": "^0.34.25", "antd": "^5.24.5", "axios": "^1.7.9", @@ -17,14 +20,12 @@ "chartjs-adapter-dayjs-4": "^1.0.4", "chartjs-plugin-zoom": "^2.2.0", "dayjs": "^1.11.13", - "highlight.js": "^11.11.1", "react": "^19.0.0", "react-chartjs-2": "^5.3.0", "react-dom": "^19.0.0", "react-router": "^7.4.1", "react-syntax-highlighter": "^15.6.1", "socket.io-client": "^4.8.1", - "vite-tsconfig-paths": "^5.1.4", "zustand": "^5.0.3" }, "devDependencies": { @@ -94,6 +95,24 @@ "react-dom": ">=16.9.0" } }, + "node_modules/@ant-design/cssinjs/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "license": "MIT" + }, + "node_modules/@ant-design/cssinjs/node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "license": "MIT" + }, + "node_modules/@ant-design/cssinjs/node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, "node_modules/@ant-design/fast-color": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-2.0.6.tgz", @@ -166,7 +185,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", @@ -178,9 +196,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.3.tgz", - "integrity": "sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", "dev": true, "license": "MIT", "engines": { @@ -188,9 +206,9 @@ } }, "node_modules/@babel/core": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.3.tgz", - "integrity": "sha512-hyrN8ivxfvJ4i0fIJuV4EOlV0WDMz5Ui4StRTgVaAvWeiRCilXgwVvxJKtFQ3TKtHgJscB2YiXKGNJuVwhQMtA==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "dev": true, "license": "MIT", "dependencies": { @@ -199,10 +217,10 @@ "@babel/generator": "^7.27.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.3", - "@babel/parser": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.27.3", + "@babel/traverse": "^7.27.4", "@babel/types": "^7.27.3", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -218,6 +236,13 @@ "url": "https://opencollective.com/babel" } }, + "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==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -229,13 +254,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz", - "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==", - "dev": true, + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.3", + "@babel/parser": "^7.27.5", "@babel/types": "^7.27.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", @@ -276,7 +300,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", @@ -318,7 +341,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -328,7 +350,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -345,24 +366,23 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.3.tgz", - "integrity": "sha512-h/eKy9agOya1IGuLaZ9tEUgz+uIRXcbtOhRtUyyMf8JFmn1iT13vnl/IGVWSkdOCG/pC57U4S1jnAabAavTMwg==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3" + "@babel/types": "^7.27.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz", - "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==", - "dev": true, + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", "license": "MIT", "dependencies": { "@babel/types": "^7.27.3" @@ -407,9 +427,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.3.tgz", - "integrity": "sha512-7EYtGezsdiDMyY80+65EzwiGmcJqpmcZCojSXaRgdrBaGtWTgDZKq69cPIVped6MkIM78cTQ2GOiEYjwOlG4xw==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -419,7 +439,6 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", @@ -431,15 +450,14 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.3.tgz", - "integrity": "sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ==", - "dev": true, + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.27.3", - "@babel/parser": "^7.27.3", + "@babel/parser": "^7.27.4", "@babel/template": "^7.27.2", "@babel/types": "^7.27.3", "debug": "^4.3.1", @@ -453,17 +471,15 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", - "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", - "dev": true, + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -510,16 +526,150 @@ "tslib": "^2.4.0" } }, + "node_modules/@emotion/babel-plugin": { + "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.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache": { + "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.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "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" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "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.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==", "license": "MIT" }, + "node_modules/@emotion/styled": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", + "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "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.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==", "license": "MIT" }, "node_modules/@es-joy/jsdoccomment": { @@ -1011,9 +1161,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -1027,9 +1177,9 @@ } }, "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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "peer": true, @@ -1053,9 +1203,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", - "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -1103,9 +1253,9 @@ } }, "node_modules/@eslint/eslintrc/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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "peer": true, @@ -1143,9 +1293,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz", - "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==", + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", + "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", "dev": true, "license": "MIT", "peer": true, @@ -1168,20 +1318,72 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", + "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", + "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.1.tgz", + "integrity": "sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.1.tgz", + "integrity": "sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.1", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.3.tgz", + "integrity": "sha512-huMBfiU9UnQ2oBwIhgzyIiSpVgvlDstU8CX0AF+wS+KzmYMs0J2a3GwuFHV1Lz+jlrQGeC1fF+Nv0QoumyV0bA==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "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/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1257,7 +1459,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -1272,7 +1473,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1282,7 +1482,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1292,14 +1491,12 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "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==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1312,10 +1509,237 @@ "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", "license": "MIT" }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.40-1", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40-1.tgz", + "integrity": "sha512-agKXuNNy0bHUmeU7pNmoZwNFr7Hiyhojkb9+2PVyDG5+6RafYuyMgbrav8CndsB7KUc/U51JAw9vKNDLYBzaUA==", + "deprecated": "This package has been replaced by @base-ui-components/react", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "~7.2.15", + "@mui/utils": "^5.17.1", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.17.1.tgz", + "integrity": "sha512-OcZj+cs6EfUD39IoPBOgN61zf1XFVY+imsGoBDwXeSq2UHJZE3N59zzBOVjclck91Ne3e9gudONOeILvHCIhUA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/joy": { + "version": "5.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@mui/joy/-/joy-5.0.0-beta.52.tgz", + "integrity": "sha512-e8jQanA5M1f/X52mJrw0UIW8Er7EAHuLuigmGFw7yIsAgIluhIP4rZ7JcbVrUi6z5Gk0weC9QWUUtjLejAbO8g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.40-1", + "@mui/core-downloads-tracker": "^5.17.1", + "@mui/system": "^5.17.1", + "@mui/types": "~7.2.15", + "@mui/utils": "^5.17.1", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.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": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.17.1.tgz", + "integrity": "sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.17.1", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.16.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.14.tgz", + "integrity": "sha512-UAiMPZABZ7p8mUW4akDV6O7N3+4DatStpXMZwPlt+H/dA0lt67qawN021MNND+4QTpjaiMYxbhKZeQcyWCbuKw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.13.5", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.17.1.tgz", + "integrity": "sha512-aJrmGfQpyF0U4D4xYwA6ueVtQcEMebET43CUmKMP7e7iFh3sMIF3sBR0l8Urb4pqx1CBjHAaWgB0ojpND4Q3Jg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.17.1", + "@mui/styled-engine": "^5.16.14", + "@mui/types": "~7.2.15", + "@mui/utils": "^5.17.1", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.24", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz", + "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.17.1.tgz", + "integrity": "sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg==", + "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": "^19.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.10.tgz", - "integrity": "sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==", + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", + "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", "dev": true, "license": "MIT", "optional": true, @@ -1378,6 +1802,16 @@ "node": ">=12.4.0" } }, + "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" + } + }, "node_modules/@rc-component/async-validator": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.4.tgz", @@ -1528,16 +1962,16 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz", - "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==", + "version": "1.0.0-beta.11", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.11.tgz", + "integrity": "sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==", "dev": true, "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", - "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", "cpu": [ "arm" ], @@ -1549,9 +1983,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", - "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", "cpu": [ "arm64" ], @@ -1563,9 +1997,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", - "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", "cpu": [ "arm64" ], @@ -1577,9 +2011,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", - "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", "cpu": [ "x64" ], @@ -1591,9 +2025,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", - "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", "cpu": [ "arm64" ], @@ -1605,9 +2039,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", - "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", "cpu": [ "x64" ], @@ -1619,9 +2053,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", - "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", "cpu": [ "arm" ], @@ -1633,9 +2067,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", - "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", "cpu": [ "arm" ], @@ -1647,9 +2081,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", - "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", "cpu": [ "arm64" ], @@ -1661,9 +2095,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", - "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", "cpu": [ "arm64" ], @@ -1675,9 +2109,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", - "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", "cpu": [ "loong64" ], @@ -1689,9 +2123,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", - "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", "cpu": [ "ppc64" ], @@ -1703,9 +2137,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", - "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", "cpu": [ "riscv64" ], @@ -1717,9 +2151,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", - "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", "cpu": [ "riscv64" ], @@ -1731,9 +2165,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", - "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", "cpu": [ "s390x" ], @@ -1745,9 +2179,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", - "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", "cpu": [ "x64" ], @@ -1759,9 +2193,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", - "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", "cpu": [ "x64" ], @@ -1773,9 +2207,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", - "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", "cpu": [ "arm64" ], @@ -1787,9 +2221,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", - "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", "cpu": [ "ia32" ], @@ -1801,9 +2235,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", - "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", "cpu": [ "x64" ], @@ -1823,9 +2257,9 @@ "peer": true }, "node_modules/@sinclair/typebox": { - "version": "0.34.33", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.33.tgz", - "integrity": "sha512-5HAV9exOMcXRUxo+9iYB5n09XxzCXnfy4VTNW4xnDv+FgjzAGY989C28BIdljKqmF+ZltUwujE3aossvcVtq6g==", + "version": "0.34.35", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.35.tgz", + "integrity": "sha512-C6ypdODf2VZkgRT6sFM8E1F8vR+HcffniX0Kp8MsU8PIfrlXbNCBz0jzj17GjdmjTx1OtZzdH8+iALL21UjF5A==", "license": "MIT" }, "node_modules/@socket.io/component-emitter": { @@ -1913,11 +2347,12 @@ } }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "devOptional": true, - "license": "MIT" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/@types/hammerjs": { "version": "2.0.46", @@ -1950,10 +2385,22 @@ "license": "MIT", "peer": true }, + "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==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" + }, "node_modules/@types/react": { - "version": "19.1.6", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz", - "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==", + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", "devOptional": true, "license": "MIT", "dependencies": { @@ -1961,9 +2408,9 @@ } }, "node_modules/@types/react-dom": { - "version": "19.1.5", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", - "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2259,15 +2706,15 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.0.tgz", - "integrity": "sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz", + "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.33.0", - "@typescript-eslint/types": "^8.33.0", + "@typescript-eslint/tsconfig-utils": "^8.34.0", + "@typescript-eslint/types": "^8.34.0", "debug": "^4.3.4" }, "engines": { @@ -2276,18 +2723,21 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.0.tgz", - "integrity": "sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz", + "integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0" + "@typescript-eslint/types": "8.34.0", + "@typescript-eslint/visitor-keys": "8.34.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2298,9 +2748,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.0.tgz", - "integrity": "sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz", + "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==", "dev": true, "license": "MIT", "peer": true, @@ -2461,9 +2911,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.0.tgz", - "integrity": "sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz", + "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==", "dev": true, "license": "MIT", "peer": true, @@ -2476,17 +2926,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.0.tgz", - "integrity": "sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz", + "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/project-service": "8.33.0", - "@typescript-eslint/tsconfig-utils": "8.33.0", - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0", + "@typescript-eslint/project-service": "8.34.0", + "@typescript-eslint/tsconfig-utils": "8.34.0", + "@typescript-eslint/types": "8.34.0", + "@typescript-eslint/visitor-keys": "8.34.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -2506,17 +2956,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.0.tgz", - "integrity": "sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.0.tgz", + "integrity": "sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.33.0", - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/typescript-estree": "8.33.0" + "@typescript-eslint/scope-manager": "8.34.0", + "@typescript-eslint/types": "8.34.0", + "@typescript-eslint/typescript-estree": "8.34.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2531,14 +2981,14 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.0.tgz", - "integrity": "sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz", + "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/types": "8.34.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -2549,10 +2999,40 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.0.tgz", + "integrity": "sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.0.tgz", + "integrity": "sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.6.tgz", - "integrity": "sha512-dDhh//8GrF4PynBubCUvnJ/mG2LStUEiaWqML4SAhz2iZvG769d6e25MoJBamDR251FBT3ULpXGJ7Mdnysp27w==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.0.tgz", + "integrity": "sha512-nJ9z47kfFnCxN1z/oYZS7HSNsFh43y2asePzTEZpEvK7kGyuShSl3RRXnm/1QaqFL+iP+BjMwuB+DYUymOkA5A==", "cpu": [ "arm64" ], @@ -2565,9 +3045,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.6.tgz", - "integrity": "sha512-u1Avp0HPAulQHMwgBJaHXIcao0LWwxF5/pd3H7DhldIFd2o3B2xVjXiqslSRpARL2b0QRdAdUf8+IAy6RlrvgQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.0.tgz", + "integrity": "sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw==", "cpu": [ "x64" ], @@ -2580,9 +3060,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.7.6.tgz", - "integrity": "sha512-nnjHghvIxEWvym6+ToAVmiXO11c+25p1E7CAQa/1uJTjcRhJTpEUKNbEWGO9tsxxIpBv1dfXaOA3gsJz5eBAjg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.0.tgz", + "integrity": "sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA==", "cpu": [ "x64" ], @@ -2595,9 +3075,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.7.6.tgz", - "integrity": "sha512-96y5xFahjyUwk1om2FRVkzXHTtgmi+6MUO9iMhyb/W/9v05z1wawgj7v4j9TPwXo/f10cDKty4Aao3Fufcu2Cg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.0.tgz", + "integrity": "sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg==", "cpu": [ "arm" ], @@ -2610,9 +3090,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.7.6.tgz", - "integrity": "sha512-tyHD5mKRZpHPVg13a16a0X8wJ6Avtfecqg1gMlGB/MXOlvrJJ6EKzdWyUPi5GZUtT+JWV/NVTPLvvC/Hzxo3aw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.0.tgz", + "integrity": "sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA==", "cpu": [ "arm" ], @@ -2625,9 +3105,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.7.6.tgz", - "integrity": "sha512-rVHWGBVbhBrWYQl0y8sObTkCqSXtLAa8srG1u21S/IPGciOP0Djq7ykih5TeUtj0nAktANsiK2g/ST8UPhfbiA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.0.tgz", + "integrity": "sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA==", "cpu": [ "arm64" ], @@ -2640,9 +3120,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.7.6.tgz", - "integrity": "sha512-6a7res5yz781YPZCkilDf34cQyNOCaHTGiUR8Z5U+hlrOChGPaciz4IpUpO1x2BWiBvbyIC9Janh/ujel9bo3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.0.tgz", + "integrity": "sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ==", "cpu": [ "arm64" ], @@ -2655,9 +3135,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.7.6.tgz", - "integrity": "sha512-MtejOT0dfnupO9Tja6GtakFCe1FA7yY3tv6JM+oCFpChSCfJ/G87305AJyC0WZvdOUnPFh6hIMRpEjZAWxssyw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.0.tgz", + "integrity": "sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ==", "cpu": [ "ppc64" ], @@ -2670,9 +3150,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.6.tgz", - "integrity": "sha512-urwxUzOqU7KKZs5KyTTFZIztzpNBHmxgO24nxaaD8lhESzC1ng1zq+gP7CKHZmQF2t3NMTdcnrXc86XYXZcBwQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.0.tgz", + "integrity": "sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w==", "cpu": [ "riscv64" ], @@ -2685,9 +3165,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.6.tgz", - "integrity": "sha512-uqKOYPHRs+XUvq1+7ydgv6V42pMpzSJyuV6Y/R5FJUUuV2gJ54xhR+e5NqqS7WvWHZTDZ895P1fXejoooUfWgw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.0.tgz", + "integrity": "sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw==", "cpu": [ "riscv64" ], @@ -2700,9 +3180,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.7.6.tgz", - "integrity": "sha512-WAjhxt3hypzJf5vk2Zut/ebvuXYEOFTi45SqqkoShU9p40IEeYM2AoKC6NNo3/5CIFxR5iaIHOetlJF+iWAMIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.0.tgz", + "integrity": "sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA==", "cpu": [ "s390x" ], @@ -2715,9 +3195,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.7.6.tgz", - "integrity": "sha512-qsuxl8zUdwWXUlMa8zUAnonye/j+2k3QfcSXkW9bAZ0BcMLDZ/7uqXsAmk+7fP1gzv57AhCDpOcFSIsP4eSPEA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.0.tgz", + "integrity": "sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA==", "cpu": [ "x64" ], @@ -2730,9 +3210,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.7.6.tgz", - "integrity": "sha512-5xg1/XpaJP6y5t4gAIHO6LVvd3xpkWXMBWk1lEUjh9oXfkxY9uoEd6gYJ5zj1dhiGy8uc//TG80Gnu3bqE4gsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.0.tgz", + "integrity": "sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg==", "cpu": [ "x64" ], @@ -2745,9 +3225,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.7.6.tgz", - "integrity": "sha512-s5QPe0XWHDY0rb+ywbwGqZ24WH1fLpSeakM+M+up58My5T2LsScoJpqN60KgaYRJpumabqcAcczL/2LEWL6bQA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.0.tgz", + "integrity": "sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ==", "cpu": [ "wasm32" ], @@ -2756,16 +3236,16 @@ "optional": true, "peer": true, "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.10" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.7.6.tgz", - "integrity": "sha512-lzYMuug2XyxY+Ptw0LA5sNmF3WY+IefI1IMtws3y3G0EkYnqidhEi2+7eqtEiYAxPNo9VerQNfXKJd3bIuntPQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.0.tgz", + "integrity": "sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ==", "cpu": [ "arm64" ], @@ -2778,9 +3258,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.7.6.tgz", - "integrity": "sha512-ysjUtTmUsgFMZqkMovWBr43izkC0kQPbW8V1Ln70FSAE7cVHCVf7PxIfllgQwLjjsYKKOVuq7iWe8G9mJlCk4A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.0.tgz", + "integrity": "sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A==", "cpu": [ "ia32" ], @@ -2793,9 +3273,9 @@ "peer": true }, "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.7.6.tgz", - "integrity": "sha512-/1kM+r9G86s0ZLk2ej0MuU3hJQGmnawAA1JPIhcVMkZCtxK/pJzNtzPms3vDwVxbbwho6ExRcVLoA4h0zwzVmA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.0.tgz", + "integrity": "sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw==", "cpu": [ "x64" ], @@ -2808,16 +3288,16 @@ "peer": true }, "node_modules/@vitejs/plugin-react": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.0.tgz", - "integrity": "sha512-JuLWaEqypaJmOJPLWwO335Ig6jSgC1FTONCWAxnqcQthLTK/Yc9aH6hr9z/87xciejbQcnP3GnA1FWUSWeXaeg==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.2.tgz", + "integrity": "sha512-QNVT3/Lxx99nMQWJWF7K4N6apUEuT0KlZA3mx/mVaoGj3smm/8rc8ezz15J1pcbcjDK0V15rpHetVfya08r76Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.26.10", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", - "@rolldown/pluginutils": "1.0.0-beta.9", + "@babel/core": "^7.27.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.11", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, @@ -2825,13 +3305,13 @@ "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" } }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "peer": true, @@ -2889,9 +3369,9 @@ } }, "node_modules/antd": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.25.3.tgz", - "integrity": "sha512-tBBcAFRjmWM3sitxrL/FEbQL+MTQntYY5bGa5c1ZZZHXWCynkhS3Ch/gy25mGMUY1M/9Uw3pH029v/RGht1x3w==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.26.0.tgz", + "integrity": "sha512-iMPYKFTo2HvIRGutUOuN5AG+Uf+B2QaqcGQbdPp/100fqV3FAil6vFZLVuV3C4XEUOlDNkkUlJKhLR9V5rzIEg==", "license": "MIT", "dependencies": { "@ant-design/colors": "^7.2.1", @@ -2913,7 +3393,7 @@ "rc-checkbox": "~3.5.0", "rc-collapse": "~3.9.0", "rc-dialog": "~9.6.0", - "rc-drawer": "~7.2.0", + "rc-drawer": "~7.3.0", "rc-dropdown": "~4.2.1", "rc-field-form": "~2.7.0", "rc-image": "~7.12.0", @@ -2933,13 +3413,13 @@ "rc-slider": "~11.1.8", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", - "rc-table": "~7.50.5", + "rc-table": "~7.51.0", "rc-tabs": "~15.6.1", "rc-textarea": "~1.10.0", "rc-tooltip": "~6.4.0", "rc-tree": "~5.13.1", "rc-tree-select": "~5.27.0", - "rc-upload": "~4.9.0", + "rc-upload": "~4.9.2", "rc-util": "^5.44.4", "scroll-into-view-if-needed": "^3.1.0", "throttle-debounce": "^5.0.2" @@ -2991,19 +3471,21 @@ } }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3173,9 +3655,9 @@ } }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", + "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -3183,6 +3665,21 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/babel-plugin-macros": { + "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", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3192,9 +3689,9 @@ "peer": true }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "peer": true, @@ -3217,9 +3714,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", - "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", + "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", "dev": true, "funding": [ { @@ -3237,8 +3734,8 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001716", - "electron-to-chromium": "^1.5.149", + "caniuse-lite": "^1.0.30001718", + "electron-to-chromium": "^1.5.160", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, @@ -3304,17 +3801,15 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001718", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", - "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", + "version": "1.0.30001723", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz", + "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==", "dev": true, "funding": [ { @@ -3424,6 +3919,15 @@ "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" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3494,10 +3998,9 @@ "peer": true }, "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==", - "dev": true, + "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==", "license": "MIT" }, "node_modules/cookie": { @@ -3518,6 +4021,31 @@ "toggle-selection": "^1.0.6" } }, + "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", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/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" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -3704,9 +4232,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.160", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.160.tgz", - "integrity": "sha512-8yQk54/CoCQT8GX3zuxqPBwMAQuIr6dWI/qO8Aah/JAZwB5XmCbEElsqb1n4pzc2vpkTdfc/kbyNPJOjswfbgg==", + "version": "1.5.167", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.167.tgz", + "integrity": "sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==", "dev": true, "license": "ISC" }, @@ -3749,10 +4277,19 @@ "node": ">=10.0.0" } }, + "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==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-abstract": { - "version": "1.23.10", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.10.tgz", - "integrity": "sha512-MtUbM072wlJNyeYAe0mhzrD+M6DIJa96CZAOBBrhDbgKnB4MApIKefcyAB1eOdYn8cUNZgvwBvEzdoAYsxgEIw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, "license": "MIT", "peer": true, @@ -3784,7 +4321,9 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", @@ -3799,6 +4338,7 @@ "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -3927,7 +4467,7 @@ "version": "0.25.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", - "devOptional": true, + "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -3978,9 +4518,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -3989,20 +4527,20 @@ } }, "node_modules/eslint": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz", - "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==", + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", + "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", + "@eslint/config-array": "^0.20.1", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.14.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.27.0", + "@eslint/js": "9.29.0", "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -4014,9 +4552,9 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4214,9 +4752,9 @@ } }, "node_modules/eslint-plugin-import/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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "peer": true, @@ -4262,22 +4800,22 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.6.17", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.17.tgz", - "integrity": "sha512-hq+VQylhd12l8qjexyriDsejZhqiP33WgMTy2AmaGZ9+MrMWVqPECsM87GPxgHfQn0zw+YTuhqjUfk1f+q67aQ==", + "version": "50.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.8.0.tgz", + "integrity": "sha512-UyGb5755LMFWPrZTEqqvTJ3urLz1iqj+bYOHFNag+sw3NvaMWP9K2z+uIn37XfNALmQLQyrBlJ5mkiVPL7ADEg==", "dev": true, "license": "BSD-3-Clause", "peer": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.50.1", + "@es-joy/jsdoccomment": "~0.50.2", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.3.6", + "debug": "^4.4.1", "escape-string-regexp": "^4.0.0", - "espree": "^10.1.0", + "espree": "^10.3.0", "esquery": "^1.6.0", "parse-imports-exports": "^0.2.4", - "semver": "^7.6.3", + "semver": "^7.7.2", "spdx-expression-parse": "^4.0.0" }, "engines": { @@ -4354,9 +4892,9 @@ } }, "node_modules/eslint-plugin-react/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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "peer": true, @@ -4432,9 +4970,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -4450,9 +4988,9 @@ } }, "node_modules/eslint-visitor-keys": { - "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==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -4464,9 +5002,9 @@ } }, "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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "peer": true, @@ -4490,16 +5028,16 @@ } }, "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "peer": true, "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4639,10 +5177,10 @@ } }, "node_modules/fdir": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", - "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", - "devOptional": true, + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -4681,6 +5219,12 @@ "node": ">=8" } }, + "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==", + "license": "MIT" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -4760,14 +5304,15 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -4965,12 +5510,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "license": "MIT" - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -5123,12 +5662,12 @@ } }, "node_modules/highlight.js": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", - "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "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": ">=12.0.0" + "node": "*" } }, "node_modules/highlightjs-vue": { @@ -5137,6 +5676,21 @@ "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", "license": "CC0-1.0" }, + "node_modules/hoist-non-react-statics": { + "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" + } + }, + "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==", + "license": "MIT" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -5152,9 +5706,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, "license": "MIT", - "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5236,6 +5788,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "license": "MIT" + }, "node_modules/is-async-function": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", @@ -5321,9 +5879,7 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, "license": "MIT", - "peer": true, "dependencies": { "hasown": "^2.0.2" }, @@ -5467,6 +6023,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -5689,7 +6259,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -5721,7 +6290,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -5738,6 +6306,12 @@ "license": "MIT", "peer": true }, + "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==", + "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", @@ -5819,6 +6393,12 @@ "node": ">= 0.8.0" } }, + "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==", + "license": "MIT" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5848,9 +6428,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "license": "MIT", - "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -5872,15 +6450,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/lowlight/node_modules/highlight.js": { - "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": "*" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5999,7 +6568,7 @@ "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -6050,9 +6619,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -6253,9 +6820,7 @@ "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, "license": "MIT", - "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -6292,6 +6857,24 @@ "parse-statements": "1.0.11" } }, + "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==", + "license": "MIT", + "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/parse-statements": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", @@ -6326,22 +6909,28 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, + "license": "MIT" + }, + "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", - "peer": true + "engines": { + "node": ">=8" + } }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "devOptional": true, "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -6362,10 +6951,10 @@ } }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "devOptional": true, + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", + "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -6382,7 +6971,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -6414,15 +7003,19 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, + "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==", + "license": "MIT" + }, "node_modules/property-information": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", @@ -6541,9 +7134,9 @@ } }, "node_modules/rc-drawer": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.2.0.tgz", - "integrity": "sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.3.0.tgz", + "integrity": "sha512-DX6CIgiBWNpJIMGFO8BAISFkxiuKitoizooj4BDyee8/SnBn0zwO2FHrNDpqqepj0E/TFTDpmEBCyFuTgC7MOg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", @@ -6921,9 +7514,9 @@ } }, "node_modules/rc-table": { - "version": "7.50.5", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.5.tgz", - "integrity": "sha512-FDZu8aolhSYd3v9KOc3lZOVAU77wmRRu44R0Wfb8Oj1dXRUsloFaXMSl6f7yuWZUxArJTli7k8TEOX2mvhDl4A==", + "version": "7.51.0", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.51.0.tgz", + "integrity": "sha512-7ZlvW6lB0IDKaSFInD6OfJsCepSJJtfsQv2PZLtzEeZd/PLzQnKliXPaoZqkqDdLdJ3jxE2x4sane4DjxcAg+g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -7119,12 +7712,10 @@ } }, "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==", - "dev": true, - "license": "MIT", - "peer": true + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", + "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", + "license": "MIT" }, "node_modules/react-refresh": { "version": "0.17.0", @@ -7137,9 +7728,9 @@ } }, "node_modules/react-router": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.1.tgz", - "integrity": "sha512-hPJXXxHJZEsPFNVbtATH7+MMX43UDeOauz+EAU4cgqTn7ojdI9qQORqS8Z0qmDlL1TclO/6jLRYUEtbWidtdHQ==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz", + "integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -7175,15 +7766,6 @@ "react": ">= 0.14.0" } }, - "node_modules/react-syntax-highlighter/node_modules/highlight.js": { - "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": "*" - } - }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -7264,9 +7846,7 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, "license": "MIT", - "peer": true, "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -7286,9 +7866,7 @@ "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, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -7317,10 +7895,10 @@ } }, "node_modules/rollup": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", - "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", - "devOptional": true, + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "1.0.7" @@ -7333,29 +7911,36 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.1", - "@rollup/rollup-android-arm64": "4.41.1", - "@rollup/rollup-darwin-arm64": "4.41.1", - "@rollup/rollup-darwin-x64": "4.41.1", - "@rollup/rollup-freebsd-arm64": "4.41.1", - "@rollup/rollup-freebsd-x64": "4.41.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", - "@rollup/rollup-linux-arm-musleabihf": "4.41.1", - "@rollup/rollup-linux-arm64-gnu": "4.41.1", - "@rollup/rollup-linux-arm64-musl": "4.41.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-musl": "4.41.1", - "@rollup/rollup-linux-s390x-gnu": "4.41.1", - "@rollup/rollup-linux-x64-gnu": "4.41.1", - "@rollup/rollup-linux-x64-musl": "4.41.1", - "@rollup/rollup-win32-arm64-msvc": "4.41.1", - "@rollup/rollup-win32-ia32-msvc": "4.41.1", - "@rollup/rollup-win32-x64-msvc": "4.41.1", + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -7693,11 +8278,20 @@ } } }, + "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" + } + }, "node_modules/source-map-js": { "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==", - "devOptional": true, + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -7749,6 +8343,21 @@ "license": "MIT", "peer": true }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string-convert": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", @@ -7884,9 +8493,9 @@ } }, "node_modules/stylis": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", "license": "MIT" }, "node_modules/supports-color": { @@ -7907,9 +8516,7 @@ "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==", - "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -7930,7 +8537,7 @@ "version": "0.2.14", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.4.4", @@ -7977,26 +8584,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/tsconfck": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", - "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", - "license": "MIT", - "bin": { - "tsconfck": "bin/tsconfck.js" - }, - "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -8134,7 +8721,7 @@ "version": "5.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -8309,9 +8896,9 @@ } }, "node_modules/unrs-resolver": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.7.6.tgz", - "integrity": "sha512-72mW/4N9ajUM3Pnw2CLFcsollrsfUuPl+/OW+AJsgmp5rnw7KuCre6I4EtoVBYrOy3DbVXnR33bL+Pfbdbek2Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.0.tgz", + "integrity": "sha512-wqaRu4UnzBD2ABTC1kLfBjAqIDZ5YUTr/MLGa7By47JV1bJDSW7jq/ZSLigB7enLe7ubNaJhtnBXgrc/50cEhg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -8320,26 +8907,28 @@ "napi-postinstall": "^0.2.2" }, "funding": { - "url": "https://github.com/sponsors/JounQin" + "url": "https://opencollective.com/unrs-resolver" }, "optionalDependencies": { - "@unrs/resolver-binding-darwin-arm64": "1.7.6", - "@unrs/resolver-binding-darwin-x64": "1.7.6", - "@unrs/resolver-binding-freebsd-x64": "1.7.6", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.7.6", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.7.6", - "@unrs/resolver-binding-linux-arm64-gnu": "1.7.6", - "@unrs/resolver-binding-linux-arm64-musl": "1.7.6", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.7.6", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.7.6", - "@unrs/resolver-binding-linux-riscv64-musl": "1.7.6", - "@unrs/resolver-binding-linux-s390x-gnu": "1.7.6", - "@unrs/resolver-binding-linux-x64-gnu": "1.7.6", - "@unrs/resolver-binding-linux-x64-musl": "1.7.6", - "@unrs/resolver-binding-wasm32-wasi": "1.7.6", - "@unrs/resolver-binding-win32-arm64-msvc": "1.7.6", - "@unrs/resolver-binding-win32-ia32-msvc": "1.7.6", - "@unrs/resolver-binding-win32-x64-msvc": "1.7.6" + "@unrs/resolver-binding-android-arm-eabi": "1.9.0", + "@unrs/resolver-binding-android-arm64": "1.9.0", + "@unrs/resolver-binding-darwin-arm64": "1.9.0", + "@unrs/resolver-binding-darwin-x64": "1.9.0", + "@unrs/resolver-binding-freebsd-x64": "1.9.0", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.9.0", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.9.0", + "@unrs/resolver-binding-linux-arm64-gnu": "1.9.0", + "@unrs/resolver-binding-linux-arm64-musl": "1.9.0", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.9.0", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.9.0", + "@unrs/resolver-binding-linux-riscv64-musl": "1.9.0", + "@unrs/resolver-binding-linux-s390x-gnu": "1.9.0", + "@unrs/resolver-binding-linux-x64-gnu": "1.9.0", + "@unrs/resolver-binding-linux-x64-musl": "1.9.0", + "@unrs/resolver-binding-wasm32-wasi": "1.9.0", + "@unrs/resolver-binding-win32-arm64-msvc": "1.9.0", + "@unrs/resolver-binding-win32-ia32-msvc": "1.9.0", + "@unrs/resolver-binding-win32-x64-msvc": "1.9.0" } }, "node_modules/update-browserslist-db": { @@ -8388,7 +8977,7 @@ "version": "6.3.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -8459,25 +9048,6 @@ } } }, - "node_modules/vite-tsconfig-paths": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.4.tgz", - "integrity": "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==", - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "globrex": "^0.1.2", - "tsconfck": "^3.0.3" - }, - "peerDependencies": { - "vite": "*" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -8644,6 +9214,21 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/components/log-viewer-webui/client/package.json b/components/log-viewer-webui/client/package.json index c5cfcb8779..ae32c07943 100644 --- a/components/log-viewer-webui/client/package.json +++ b/components/log-viewer-webui/client/package.json @@ -14,6 +14,9 @@ "type": "module", "dependencies": { "@ant-design/v5-patch-for-react-19": "^1.0.3", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@mui/joy": "^5.0.0-beta.51", "@sinclair/typebox": "^0.34.25", "antd": "^5.24.5", "axios": "^1.7.9", diff --git a/components/log-viewer-webui/client/src/ui/Loading.css b/components/log-viewer-webui/client/src/ui/Loading.css new file mode 100644 index 0000000000..d8bec18421 --- /dev/null +++ b/components/log-viewer-webui/client/src/ui/Loading.css @@ -0,0 +1,24 @@ +.loading-sheet { + height: 100%; + + display: flex; + flex-direction: column; + + align-items: center; + justify-content: center; +} + +.loading-progress-container { + width: 100%; +} + +.loading-stepper-container { + display: flex; + flex-grow: 1; + + align-items: center; +} + +.loading-stepper { + --Stepper-verticalGap: 2rem !important; +} diff --git a/components/log-viewer-webui/client/src/ui/Loading.tsx b/components/log-viewer-webui/client/src/ui/Loading.tsx new file mode 100644 index 0000000000..e8fd77369f --- /dev/null +++ b/components/log-viewer-webui/client/src/ui/Loading.tsx @@ -0,0 +1,149 @@ +import React from "react"; + +import { + Box, + LinearProgress, + Sheet, + Step, + StepIndicator, + Stepper, + Typography, +} from "@mui/joy"; +import {DefaultColorPalette} from "@mui/joy/styles/types"; + +import {Nullable} from "../typings/common"; +import { + QUERY_LOADING_STATE, + QUERY_LOADING_STATE_DESCRIPTIONS, + QUERY_LOADING_STATE_VALUES, +} from "../typings/query"; + +import "./Loading.css"; + + +interface LoadingStepProps { + description: string; + isActive: boolean; + isError: boolean; + label: string; + stepIndicatorText: number | string; +} + +/** + * Renders a step with a label and description. + * + * @param props + * @param props.description + * @param props.isActive + * @param props.isError + * @param props.label + * @param props.stepIndicatorText + * @return + */ +const LoadingStep = ({ + description, + isActive, + isError, + label, + stepIndicatorText, +}: LoadingStepProps) => { + let color: DefaultColorPalette = isActive ? + "primary" : + "neutral"; + + if (isError) { + color = "danger"; + } + + return ( + + {stepIndicatorText} + + } + > + + {label} + + + {description} + + + ); +}; + +interface LoadingProps { + currentState: QUERY_LOADING_STATE; + errorMsg: Nullable; +} + +/** + * Displays status of a pending query job. + * + * @param props + * @param props.currentState + * @param props.errorMsg + * @return + */ +const Loading = ({ + currentState, + errorMsg, +}:LoadingProps) => { + const steps: React.ReactNode[] = []; + QUERY_LOADING_STATE_VALUES.forEach((state) => { + const isActive = (currentState === state); + const stateDescription = QUERY_LOADING_STATE_DESCRIPTIONS[state]; + steps.push( + + ); + if (isActive && null !== errorMsg) { + steps.push( + + ); + } + }); + + return ( + + + + + + + {steps} + + + + ); +}; + +export default Loading; diff --git a/components/log-viewer-webui/client/src/ui/QueryStatus.tsx b/components/log-viewer-webui/client/src/ui/QueryStatus.tsx new file mode 100644 index 0000000000..a562398dc4 --- /dev/null +++ b/components/log-viewer-webui/client/src/ui/QueryStatus.tsx @@ -0,0 +1,105 @@ +import { + useEffect, + useState, +} from "react"; + +import {Static} from "@sinclair/typebox"; +import { + AssertError, + Value, +} from "@sinclair/typebox/value"; +import {isAxiosError} from "axios"; + +import {submitExtractStreamJob} from "../api/query"; +import {Nullable} from "../typings/common"; +import { + EXTRACT_JOB_TYPE, + ExtractJobSearchParams, + QUERY_LOADING_STATE, +} from "../typings/query"; +import Loading from "./Loading"; + + +/** + * Flag to prevent duplicate execution of `useEffect`. + */ +let isFirstRun = true; + +/** + * Submits queries and renders the query states. + * + * @return + */ +const QueryStatus = () => { + const [queryState, setQueryState] = useState( + QUERY_LOADING_STATE.SUBMITTING + ); + const [errorMsg, setErrorMsg] = useState>(null); + + useEffect(() => { + // eslint-disable-next-line no-warning-comments + // TODO: Address server-side concurrency issues and replace this workaround by aborting + // requests via an AbortController in useEffect's cleanup function. + + // Skip duplicate execution caused by React StrictMode. + if (false === isFirstRun) { + return; + } + isFirstRun = false; + + // Validates and parse search parameters. + const searchParams = new URLSearchParams(window.location.search); + const paramsObj = Object.fromEntries(searchParams); + let parseResult: Static; + try { + parseResult = Value.Parse(ExtractJobSearchParams, paramsObj); + } catch (e: unknown) { + let error = "URL parameters parsing failed"; + if (e instanceof AssertError) { + error += `: ${e.message}`; + } + console.error(error); + setErrorMsg(error); + + return; + } + + submitExtractStreamJob( + + // `parseResult.type` must be valid key since parsed using with typebox type + // `ExtractJobSearchParams`. + EXTRACT_JOB_TYPE[parseResult.type as keyof typeof EXTRACT_JOB_TYPE], + parseResult.streamId, + parseResult.logEventIdx, + () => { + setQueryState(QUERY_LOADING_STATE.WAITING); + } + ) + .then(({data}) => { + setQueryState(QUERY_LOADING_STATE.LOADING); + + const innerLogEventNum = parseResult.logEventIdx - data.begin_msg_ix + 1; + window.location.href = `/log-viewer/index.html?filePath=${data.path}` + + `#logEventNum=${innerLogEventNum}`; + }) + .catch((e: unknown) => { + let msg = "Unknown error."; + if (isAxiosError<{message: string}>(e)) { + msg = e.message; + if ("undefined" !== typeof e.response) { + msg = e.response.data.message; + } + } + console.error(msg, e); + setErrorMsg(msg); + }); + }, []); + + return ( + + ); +}; + +export default QueryStatus; From 5e473add45e2e5c37cf3fe44ec1d170d18f18656 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Mon, 16 Jun 2025 13:10:27 -0400 Subject: [PATCH 04/36] feat(new-webui): Add results metadata collection name configuration and update validation for web UI settings --- .../clp_package_utils/general.py | 11 +++-- .../clp_package_utils/scripts/start_clp.py | 49 +++++++++++++------ .../clp-py-utils/clp_py_utils/clp_config.py | 7 +++ .../client/public/settings.json | 4 +- .../log-viewer-webui/server/settings.json | 2 +- .../package-template/src/etc/clp-config.yml | 1 + 6 files changed, 51 insertions(+), 23 deletions(-) diff --git a/components/clp-package-utils/clp_package_utils/general.py b/components/clp-package-utils/clp_package_utils/general.py index 32253b84a3..a106469374 100644 --- a/components/clp-package-utils/clp_package_utils/general.py +++ b/components/clp-package-utils/clp_package_utils/general.py @@ -509,10 +509,11 @@ def validate_worker_config(clp_config: CLPConfig): clp_config.validate_stream_output_config() -def validate_webui_config(clp_config: CLPConfig, settings_json_path: pathlib.Path): - if not settings_json_path.exists(): - raise ValueError( - f"{WEBUI_COMPONENT_NAME} {settings_json_path} is not a valid path to settings.json" - ) +def validate_webui_config(clp_config: CLPConfig, + client_settings_json_path: pathlib.Path, + server_settings_json_path: pathlib.Path): + for path in [client_settings_json_path, server_settings_json_path]: + if not path.exists(): + raise ValueError(f"{WEBUI_COMPONENT_NAME} {path} is not a valid path to settings.json") validate_port(f"{WEBUI_COMPONENT_NAME}.port", clp_config.webui.host, clp_config.webui.port) diff --git a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py index e0119f747f..f5f21a6b94 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py @@ -854,7 +854,15 @@ def start_webui( container_webui_dir = CONTAINER_CLP_HOME / "var" / "www" / "log-viewer-webui" node_path = str(container_webui_dir / "server" / "node_modules") - settings_json_path = ( + client_settings_json_path = ( + get_clp_home() + / "var" + / "www" + / "log-viewer-webui" + / "client" + / "settings.json" + ) + server_settings_json_path = ( get_clp_home() / "var" / "www" @@ -865,10 +873,19 @@ def start_webui( / "settings.json" ) - validate_webui_config(clp_config, settings_json_path) + validate_webui_config(clp_config, client_settings_json_path, server_settings_json_path) + + # Read, update, and write back client's and server's settings.json + client_settings_json_updates = { + "ClpStorageEngine": clp_config.package.storage_engine, + "MongoDbSearchResultsMetadataCollectionName": clp_config.webui.results_metadata_collection_name, + } + client_settings_json = read_and_update_settings_json(client_settings_json_path, + client_settings_json_updates) + with open(client_settings_json_path, "w") as client_settings_json_file: + client_settings_json_file.write(json.dumps(client_settings_json)) - # Read, update, and write back settings.json - settings_json_updates = { + server_settings_json_updates = { "SqlDbHost": clp_config.database.host, "SqlDbPort": clp_config.database.port, "SqlDbName": clp_config.database.name, @@ -876,6 +893,7 @@ def start_webui( "MongoDbHost": clp_config.results_cache.host, "MongoDbPort": clp_config.results_cache.port, "MongoDbName": clp_config.results_cache.db_name, + "MongoDbSearchResultsMetadataCollectionName": clp_config.webui.results_metadata_collection_name, "MongoDbStreamFilesCollectionName": clp_config.results_cache.stream_collection_name, "ClientDir": str(container_webui_dir / "client"), "StreamFilesDir": str(container_clp_config.stream_output.get_directory()), @@ -889,23 +907,24 @@ def start_webui( if StorageType.S3 == stream_storage.type: s3_config = stream_storage.s3_config - settings_json_updates["StreamFilesS3Region"] = s3_config.region_code - settings_json_updates["StreamFilesS3PathPrefix"] = ( + server_settings_json_updates["StreamFilesS3Region"] = s3_config.region_code + server_settings_json_updates["StreamFilesS3PathPrefix"] = ( f"{s3_config.bucket}/{s3_config.key_prefix}" ) auth = s3_config.aws_authentication if AwsAuthType.profile == auth.type: - settings_json_updates["StreamFilesS3Profile"] = auth.profile + server_settings_json_updates["StreamFilesS3Profile"] = auth.profile else: - settings_json_updates["StreamFilesS3Profile"] = None + server_settings_json_updates["StreamFilesS3Profile"] = None elif StorageType.FS == stream_storage.type: - settings_json_updates["StreamFilesS3Region"] = None - settings_json_updates["StreamFilesS3PathPrefix"] = None - settings_json_updates["StreamFilesS3Profile"] = None - - settings_json = read_and_update_settings_json(settings_json_path, settings_json_updates) - with open(settings_json_path, "w") as settings_json_file: - settings_json_file.write(json.dumps(settings_json)) + server_settings_json_updates["StreamFilesS3Region"] = None + server_settings_json_updates["StreamFilesS3PathPrefix"] = None + server_settings_json_updates["StreamFilesS3Profile"] = None + + server_settings_json = read_and_update_settings_json(server_settings_json_path, + server_settings_json_updates) + with open(server_settings_json_path, "w") as settings_json_file: + settings_json_file.write(json.dumps(server_settings_json)) # fmt: off container_cmd = [ diff --git a/components/clp-py-utils/clp_py_utils/clp_config.py b/components/clp-py-utils/clp_py_utils/clp_config.py index eccc2f3f0e..939398d040 100644 --- a/components/clp-py-utils/clp_py_utils/clp_config.py +++ b/components/clp-py-utils/clp_py_utils/clp_config.py @@ -571,6 +571,7 @@ def dump_to_primitive_dict(self): class WebUi(BaseModel): host: str = "localhost" port: int = 4000 + results_metadata_collection_name: str = "results-metadata" @validator("host") def validate_host(cls, field): @@ -582,6 +583,12 @@ def validate_port(cls, field): _validate_port(cls, field) return field + @validator("results_metadata_collection_name") + def validate_results_metadata_collection_name(cls, field): + if "" == field: + raise ValueError(f"{WEBUI_COMPONENT_NAME}.results_metadata_collection_name cannot be empty.") + return field + class CLPConfig(BaseModel): execution_container: Optional[str] = None diff --git a/components/log-viewer-webui/client/public/settings.json b/components/log-viewer-webui/client/public/settings.json index 5bbc0333c3..7c342746ff 100644 --- a/components/log-viewer-webui/client/public/settings.json +++ b/components/log-viewer-webui/client/public/settings.json @@ -1,4 +1,4 @@ { - "MongoDbSearchResultsMetadataCollectionName": "results-metadata", - "ClpStorageEngine": "clp" + "ClpStorageEngine": "clp", + "MongoDbSearchResultsMetadataCollectionName": "results-metadata" } diff --git a/components/log-viewer-webui/server/settings.json b/components/log-viewer-webui/server/settings.json index 4e615a3cf2..5f7f789364 100644 --- a/components/log-viewer-webui/server/settings.json +++ b/components/log-viewer-webui/server/settings.json @@ -7,8 +7,8 @@ "MongoDbHost": "localhost", "MongoDbPort": 27017, "MongoDbName": "clp-query-results", - "MongoDbStreamFilesCollectionName": "stream-files", "MongoDbSearchResultsMetadataCollectionName": "results-metadata", + "MongoDbStreamFilesCollectionName": "stream-files", "ClientDir": "../client/dist", "LogViewerDir": "../yscope-log-viewer/dist", diff --git a/components/package-template/src/etc/clp-config.yml b/components/package-template/src/etc/clp-config.yml index 9d31a3db86..389eb8af26 100644 --- a/components/package-template/src/etc/clp-config.yml +++ b/components/package-template/src/etc/clp-config.yml @@ -61,6 +61,7 @@ #webui: # host: "localhost" # port: 4000 +# result_metadata_collection_name: "results-metadata" # ## Where archives should be output to #archive_output: From df73718f2d133d2c7ad0295163754482930bacea Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Mon, 16 Jun 2025 13:12:10 -0400 Subject: [PATCH 05/36] reorder --- .../clp-package-utils/clp_package_utils/scripts/start_clp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py index f5f21a6b94..a1d7a1eb6c 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py @@ -896,9 +896,9 @@ def start_webui( "MongoDbSearchResultsMetadataCollectionName": clp_config.webui.results_metadata_collection_name, "MongoDbStreamFilesCollectionName": clp_config.results_cache.stream_collection_name, "ClientDir": str(container_webui_dir / "client"), + "LogViewerDir": str(container_webui_dir / "yscope-log-viewer"), "StreamFilesDir": str(container_clp_config.stream_output.get_directory()), "StreamTargetUncompressedSize": container_clp_config.stream_output.target_uncompressed_size, - "LogViewerDir": str(container_webui_dir / "yscope-log-viewer"), } container_cmd_extra_opts = [] From ad7444e0803a97f43e9f297c5f3c218c48a9b574 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Mon, 16 Jun 2025 13:31:56 -0400 Subject: [PATCH 06/36] refactor: Rename log-viewer-webui to webui and update related configurations --- .../clp_package_utils/scripts/start_clp.py | 6 +- .../{log-viewer-webui => webui}/.gitignore | 0 .../{log-viewer-webui => webui}/README.md | 0 .../client/.gitignore | 0 .../client/README.md | 0 .../client/eslint.config.mjs | 0 .../client/index.html | 0 .../client/package-lock.json | 4 +- .../client/package.json | 2 +- .../client/public/clp-logo.png | Bin .../client/public/favicon.svg | 0 .../client/public/settings.json | 0 .../client/src/App.tsx | 0 .../client/src/api/query.ts | 0 .../client/src/api/search.ts | 0 .../src/api/socket/MongoSocketCollection.ts | 0 .../src/api/socket/MongoSocketCursor.ts | 0 .../client/src/api/socket/SocketSingleton.ts | 0 .../client/src/api/socket/useCursor.tsx | 0 .../components/DashboardCard/index.module.css | 0 .../src/components/DashboardCard/index.tsx | 0 .../components/Layout/MainLayout.module.css | 0 .../src/components/Layout/MainLayout.tsx | 0 .../CaseSenstiveToggle.tsx | 0 .../QueryBox/InputWithCaseSensitive/index.tsx | 0 .../src/components/QueryBox/index.module.css | 0 .../client/src/components/QueryBox/index.tsx | 0 .../ResultsTimeline/datetime/index.ts | 0 .../ResultsTimeline/datetime/typings.ts | 0 .../ResultsTimeline/index.module.css | 0 .../src/components/ResultsTimeline/index.tsx | 0 .../src/components/ResultsTimeline/typings.ts | 0 .../src/components/ResultsTimeline/utils.ts | 0 .../src/components/StatCard/index.module.css | 0 .../client/src/components/StatCard/index.tsx | 0 .../src/components/VirtualTable/index.tsx | 0 .../src/components/VirtualTable/typings.tsx | 0 .../client/src/config/index.ts | 0 .../client/src/index.css | 0 .../client/src/main.tsx | 0 .../pages/IngestPage/Details/DetailsCard.tsx | 0 .../src/pages/IngestPage/Details/Files.tsx | 0 .../src/pages/IngestPage/Details/Messages.tsx | 0 .../pages/IngestPage/Details/TimeRange.tsx | 0 .../pages/IngestPage/Details/index.module.css | 0 .../src/pages/IngestPage/Details/index.tsx | 0 .../src/pages/IngestPage/Details/sql.ts | 0 .../pages/IngestPage/Jobs/index.module.css | 0 .../src/pages/IngestPage/Jobs/index.tsx | 0 .../client/src/pages/IngestPage/Jobs/sql.ts | 0 .../src/pages/IngestPage/Jobs/typings.tsx | 0 .../client/src/pages/IngestPage/Jobs/units.ts | 0 .../client/src/pages/IngestPage/Jobs/utils.ts | 0 .../SpaceSavings/CompressedSize.tsx | 0 .../SpaceSavings/UncompressedSize.tsx | 0 .../IngestPage/SpaceSavings/index.module.css | 0 .../pages/IngestPage/SpaceSavings/index.tsx | 0 .../src/pages/IngestPage/SpaceSavings/sql.ts | 0 .../src/pages/IngestPage/index.module.css | 0 .../client/src/pages/IngestPage/index.tsx | 0 .../src/pages/IngestPage/ingestStatsStore.ts | 0 .../client/src/pages/IngestPage/sqlConfig.ts | 0 .../SearchControls/QueryInput/index.tsx | 0 .../SearchControls/QueryInput/typings.ts | 0 .../SearchButton/CancelButton.tsx | 0 .../SearchButton/SearchButton.tsx | 0 .../SearchButton/SubmitButton.tsx | 0 .../SearchButton/index.module.css | 0 .../TimeRangeInput/index.module.css | 0 .../SearchControls/TimeRangeInput/index.tsx | 0 .../SearchControls/TimeRangeInput/utils.tsx | 0 .../SearchControls/index.module.css | 0 .../pages/SearchPage/SearchControls/index.tsx | 0 .../SearchControls/search-requests.ts | 0 .../pages/SearchPage/SearchControls/utils.ts | 0 .../SearchPage/SearchQueryStatus/Results.tsx | 0 .../SearchQueryStatus/index.module.css | 0 .../SearchPage/SearchQueryStatus/index.tsx | 0 .../Message/LogViewerLink.tsx | 0 .../Message/index.module.css | 0 .../SearchResultsTable/Message/index.tsx | 0 .../SearchResultsTable/Message/utils.ts | 0 .../SearchResultsTable/index.tsx | 0 .../SearchResultsTable/typings.tsx | 0 .../SearchResultsTable/useSearchResults.ts | 0 .../SearchResults/SearchResultsTable/utils.ts | 0 .../SearchResultsTimeline/index.tsx | 0 .../useAggregationResults.ts | 0 .../SearchResultsTimeline/utils.ts | 0 .../pages/SearchPage/SearchState/index.tsx | 0 .../pages/SearchPage/SearchState/typings.ts | 0 .../SearchState/useResultsMetadata.ts | 0 .../SearchState/useUpdateStateWithMetadata.ts | 0 .../src/pages/SearchPage/index.module.css | 0 .../client/src/pages/SearchPage/index.tsx | 0 .../client/src/router.tsx | 0 .../client/src/settings.ts | 0 .../client/src/theme.tsx | 0 .../client/src/typings/common.ts | 0 .../client/src/typings/config.ts | 0 .../client/src/typings/datetime.ts | 0 .../client/src/typings/query.ts | 0 .../client/src/ui/Loading.css | 0 .../client/src/ui/Loading.tsx | 0 .../client/src/ui/QueryStatus.tsx | 0 .../client/src/vite-env.d.ts | 0 .../client/tsconfig.json | 0 .../client/tsconfig/tsconfig.app.json | 0 .../client/tsconfig/tsconfig.base.json | 0 .../client/tsconfig/tsconfig.node.json | 0 .../client/vite.config.ts | 2 +- .../common/index.ts | 0 .../common/package.json | 0 .../package-lock.json | 702 +++++++++--------- .../{log-viewer-webui => webui}/package.json | 44 +- .../{log-viewer-webui => webui}/server/.env | 0 .../server/.gitignore | 0 .../server/eslint.config.mjs | 0 .../server/package-lock.json | 4 +- .../server/package.json | 2 +- .../server/settings.json | 0 .../server/src/app.ts | 0 .../server/src/fastify-v2/app.ts | 0 .../app/search/QueryJobsDbManager/index.ts | 0 .../app/search/QueryJobsDbManager/typings.ts | 0 .../src/fastify-v2/plugins/external/env.ts | 0 .../src/fastify-v2/plugins/external/mongo.ts | 0 .../src/fastify-v2/plugins/external/mysql.ts | 0 .../fastify-v2/plugins/external/rateLimit.ts | 0 .../fastify-v2/plugins/external/sensible.ts | 0 .../src/fastify-v2/routes/api/search/index.ts | 0 .../fastify-v2/routes/api/search/typings.ts | 0 .../src/fastify-v2/routes/api/search/utils.ts | 0 .../server/src/fastify-v2/schemas/common.ts | 0 .../server/src/fastify-v2/schemas/error.ts | 0 .../server/src/fastify-v2/schemas/search.ts | 0 .../server/src/main.ts | 0 .../server/src/plugins/DbManager.ts | 0 .../MongoWatcherCollection.ts | 0 .../src/plugins/MongoSocketIoServer/index.ts | 0 .../plugins/MongoSocketIoServer/typings.ts | 0 .../src/plugins/MongoSocketIoServer/utils.ts | 0 .../server/src/plugins/S3Manager.ts | 0 .../server/src/routes/example.ts | 0 .../server/src/routes/query.ts | 0 .../server/src/routes/static.ts | 0 .../server/src/test/app.test.ts | 0 .../server/src/test/tap.ts | 0 .../server/src/typings/DbManager.ts | 0 .../server/src/typings/common.ts | 0 .../server/src/typings/query.ts | 0 .../server/src/utils/time.ts | 0 .../server/tsconfig.json | 0 taskfile.yaml | 56 +- taskfiles/deps/main.yaml | 2 +- taskfiles/lint.yaml | 20 +- 156 files changed, 422 insertions(+), 422 deletions(-) rename components/{log-viewer-webui => webui}/.gitignore (100%) rename components/{log-viewer-webui => webui}/README.md (100%) rename components/{log-viewer-webui => webui}/client/.gitignore (100%) rename components/{log-viewer-webui => webui}/client/README.md (100%) rename components/{log-viewer-webui => webui}/client/eslint.config.mjs (100%) rename components/{log-viewer-webui => webui}/client/index.html (100%) rename components/{log-viewer-webui => webui}/client/package-lock.json (99%) rename components/{log-viewer-webui => webui}/client/package.json (97%) rename components/{log-viewer-webui => webui}/client/public/clp-logo.png (100%) rename components/{log-viewer-webui => webui}/client/public/favicon.svg (100%) rename components/{log-viewer-webui => webui}/client/public/settings.json (100%) rename components/{log-viewer-webui => webui}/client/src/App.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/api/query.ts (100%) rename components/{log-viewer-webui => webui}/client/src/api/search.ts (100%) rename components/{log-viewer-webui => webui}/client/src/api/socket/MongoSocketCollection.ts (100%) rename components/{log-viewer-webui => webui}/client/src/api/socket/MongoSocketCursor.ts (100%) rename components/{log-viewer-webui => webui}/client/src/api/socket/SocketSingleton.ts (100%) rename components/{log-viewer-webui => webui}/client/src/api/socket/useCursor.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/DashboardCard/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/components/DashboardCard/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/Layout/MainLayout.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/components/Layout/MainLayout.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/QueryBox/InputWithCaseSensitive/CaseSenstiveToggle.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/QueryBox/InputWithCaseSensitive/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/QueryBox/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/components/QueryBox/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/ResultsTimeline/datetime/index.ts (100%) rename components/{log-viewer-webui => webui}/client/src/components/ResultsTimeline/datetime/typings.ts (100%) rename components/{log-viewer-webui => webui}/client/src/components/ResultsTimeline/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/components/ResultsTimeline/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/ResultsTimeline/typings.ts (100%) rename components/{log-viewer-webui => webui}/client/src/components/ResultsTimeline/utils.ts (100%) rename components/{log-viewer-webui => webui}/client/src/components/StatCard/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/components/StatCard/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/VirtualTable/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/components/VirtualTable/typings.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/config/index.ts (100%) rename components/{log-viewer-webui => webui}/client/src/index.css (100%) rename components/{log-viewer-webui => webui}/client/src/main.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Details/DetailsCard.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Details/Files.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Details/Messages.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Details/TimeRange.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Details/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Details/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Details/sql.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Jobs/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Jobs/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Jobs/sql.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Jobs/typings.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Jobs/units.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/Jobs/utils.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/SpaceSavings/CompressedSize.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/SpaceSavings/UncompressedSize.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/SpaceSavings/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/SpaceSavings/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/SpaceSavings/sql.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/ingestStatsStore.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/IngestPage/sqlConfig.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/QueryInput/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/QueryInput/typings.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/SearchButton/CancelButton.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/SearchButton/SearchButton.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/SearchButton/SubmitButton.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/SearchButton/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/TimeRangeInput/utils.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/search-requests.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchControls/utils.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchQueryStatus/Results.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchQueryStatus/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchQueryStatus/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/LogViewerLink.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/utils.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTable/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTable/typings.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTable/useSearchResults.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTable/utils.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/useAggregationResults.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/utils.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchState/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchState/typings.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchState/useResultsMetadata.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/SearchState/useUpdateStateWithMetadata.ts (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/index.module.css (100%) rename components/{log-viewer-webui => webui}/client/src/pages/SearchPage/index.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/router.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/settings.ts (100%) rename components/{log-viewer-webui => webui}/client/src/theme.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/typings/common.ts (100%) rename components/{log-viewer-webui => webui}/client/src/typings/config.ts (100%) rename components/{log-viewer-webui => webui}/client/src/typings/datetime.ts (100%) rename components/{log-viewer-webui => webui}/client/src/typings/query.ts (100%) rename components/{log-viewer-webui => webui}/client/src/ui/Loading.css (100%) rename components/{log-viewer-webui => webui}/client/src/ui/Loading.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/ui/QueryStatus.tsx (100%) rename components/{log-viewer-webui => webui}/client/src/vite-env.d.ts (100%) rename components/{log-viewer-webui => webui}/client/tsconfig.json (100%) rename components/{log-viewer-webui => webui}/client/tsconfig/tsconfig.app.json (100%) rename components/{log-viewer-webui => webui}/client/tsconfig/tsconfig.base.json (100%) rename components/{log-viewer-webui => webui}/client/tsconfig/tsconfig.node.json (100%) rename components/{log-viewer-webui => webui}/client/vite.config.ts (92%) rename components/{log-viewer-webui => webui}/common/index.ts (100%) rename components/{log-viewer-webui => webui}/common/package.json (100%) rename components/{log-viewer-webui => webui}/package-lock.json (96%) rename components/{log-viewer-webui => webui}/package.json (94%) rename components/{log-viewer-webui => webui}/server/.env (100%) rename components/{log-viewer-webui => webui}/server/.gitignore (100%) rename components/{log-viewer-webui => webui}/server/eslint.config.mjs (100%) rename components/{log-viewer-webui => webui}/server/package-lock.json (99%) rename components/{log-viewer-webui => webui}/server/package.json (97%) rename components/{log-viewer-webui => webui}/server/settings.json (100%) rename components/{log-viewer-webui => webui}/server/src/app.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/app.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/index.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/typings.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/plugins/external/env.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/plugins/external/mongo.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/plugins/external/mysql.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/plugins/external/rateLimit.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/plugins/external/sensible.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/routes/api/search/index.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/routes/api/search/typings.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/routes/api/search/utils.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/schemas/common.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/schemas/error.ts (100%) rename components/{log-viewer-webui => webui}/server/src/fastify-v2/schemas/search.ts (100%) rename components/{log-viewer-webui => webui}/server/src/main.ts (100%) rename components/{log-viewer-webui => webui}/server/src/plugins/DbManager.ts (100%) rename components/{log-viewer-webui => webui}/server/src/plugins/MongoSocketIoServer/MongoWatcherCollection.ts (100%) rename components/{log-viewer-webui => webui}/server/src/plugins/MongoSocketIoServer/index.ts (100%) rename components/{log-viewer-webui => webui}/server/src/plugins/MongoSocketIoServer/typings.ts (100%) rename components/{log-viewer-webui => webui}/server/src/plugins/MongoSocketIoServer/utils.ts (100%) rename components/{log-viewer-webui => webui}/server/src/plugins/S3Manager.ts (100%) rename components/{log-viewer-webui => webui}/server/src/routes/example.ts (100%) rename components/{log-viewer-webui => webui}/server/src/routes/query.ts (100%) rename components/{log-viewer-webui => webui}/server/src/routes/static.ts (100%) rename components/{log-viewer-webui => webui}/server/src/test/app.test.ts (100%) rename components/{log-viewer-webui => webui}/server/src/test/tap.ts (100%) rename components/{log-viewer-webui => webui}/server/src/typings/DbManager.ts (100%) rename components/{log-viewer-webui => webui}/server/src/typings/common.ts (100%) rename components/{log-viewer-webui => webui}/server/src/typings/query.ts (100%) rename components/{log-viewer-webui => webui}/server/src/utils/time.ts (100%) rename components/{log-viewer-webui => webui}/server/tsconfig.json (100%) diff --git a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py index a1d7a1eb6c..8147dd8029 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py @@ -852,13 +852,13 @@ def start_webui( if container_exists(container_name): return - container_webui_dir = CONTAINER_CLP_HOME / "var" / "www" / "log-viewer-webui" + container_webui_dir = CONTAINER_CLP_HOME / "var" / "www" / "webui" node_path = str(container_webui_dir / "server" / "node_modules") client_settings_json_path = ( get_clp_home() / "var" / "www" - / "log-viewer-webui" + / "webui" / "client" / "settings.json" ) @@ -866,7 +866,7 @@ def start_webui( get_clp_home() / "var" / "www" - / "log-viewer-webui" + / "webui" / "server" / "dist" / "server" diff --git a/components/log-viewer-webui/.gitignore b/components/webui/.gitignore similarity index 100% rename from components/log-viewer-webui/.gitignore rename to components/webui/.gitignore diff --git a/components/log-viewer-webui/README.md b/components/webui/README.md similarity index 100% rename from components/log-viewer-webui/README.md rename to components/webui/README.md diff --git a/components/log-viewer-webui/client/.gitignore b/components/webui/client/.gitignore similarity index 100% rename from components/log-viewer-webui/client/.gitignore rename to components/webui/client/.gitignore diff --git a/components/log-viewer-webui/client/README.md b/components/webui/client/README.md similarity index 100% rename from components/log-viewer-webui/client/README.md rename to components/webui/client/README.md diff --git a/components/log-viewer-webui/client/eslint.config.mjs b/components/webui/client/eslint.config.mjs similarity index 100% rename from components/log-viewer-webui/client/eslint.config.mjs rename to components/webui/client/eslint.config.mjs diff --git a/components/log-viewer-webui/client/index.html b/components/webui/client/index.html similarity index 100% rename from components/log-viewer-webui/client/index.html rename to components/webui/client/index.html diff --git a/components/log-viewer-webui/client/package-lock.json b/components/webui/client/package-lock.json similarity index 99% rename from components/log-viewer-webui/client/package-lock.json rename to components/webui/client/package-lock.json index 9e797c367d..620a05d725 100644 --- a/components/log-viewer-webui/client/package-lock.json +++ b/components/webui/client/package-lock.json @@ -1,11 +1,11 @@ { - "name": "log-viewer-webui-client", + "name": "webui-client", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "log-viewer-webui-client", + "name": "webui-client", "version": "0.1.0", "license": "Apache-2.0", "dependencies": { diff --git a/components/log-viewer-webui/client/package.json b/components/webui/client/package.json similarity index 97% rename from components/log-viewer-webui/client/package.json rename to components/webui/client/package.json index 27ce525a93..0a77318e2b 100644 --- a/components/log-viewer-webui/client/package.json +++ b/components/webui/client/package.json @@ -1,5 +1,5 @@ { - "name": "log-viewer-webui-client", + "name": "webui-client", "version": "0.1.0", "description": "", "main": "src/main.tsx", diff --git a/components/log-viewer-webui/client/public/clp-logo.png b/components/webui/client/public/clp-logo.png similarity index 100% rename from components/log-viewer-webui/client/public/clp-logo.png rename to components/webui/client/public/clp-logo.png diff --git a/components/log-viewer-webui/client/public/favicon.svg b/components/webui/client/public/favicon.svg similarity index 100% rename from components/log-viewer-webui/client/public/favicon.svg rename to components/webui/client/public/favicon.svg diff --git a/components/log-viewer-webui/client/public/settings.json b/components/webui/client/public/settings.json similarity index 100% rename from components/log-viewer-webui/client/public/settings.json rename to components/webui/client/public/settings.json diff --git a/components/log-viewer-webui/client/src/App.tsx b/components/webui/client/src/App.tsx similarity index 100% rename from components/log-viewer-webui/client/src/App.tsx rename to components/webui/client/src/App.tsx diff --git a/components/log-viewer-webui/client/src/api/query.ts b/components/webui/client/src/api/query.ts similarity index 100% rename from components/log-viewer-webui/client/src/api/query.ts rename to components/webui/client/src/api/query.ts diff --git a/components/log-viewer-webui/client/src/api/search.ts b/components/webui/client/src/api/search.ts similarity index 100% rename from components/log-viewer-webui/client/src/api/search.ts rename to components/webui/client/src/api/search.ts diff --git a/components/log-viewer-webui/client/src/api/socket/MongoSocketCollection.ts b/components/webui/client/src/api/socket/MongoSocketCollection.ts similarity index 100% rename from components/log-viewer-webui/client/src/api/socket/MongoSocketCollection.ts rename to components/webui/client/src/api/socket/MongoSocketCollection.ts diff --git a/components/log-viewer-webui/client/src/api/socket/MongoSocketCursor.ts b/components/webui/client/src/api/socket/MongoSocketCursor.ts similarity index 100% rename from components/log-viewer-webui/client/src/api/socket/MongoSocketCursor.ts rename to components/webui/client/src/api/socket/MongoSocketCursor.ts diff --git a/components/log-viewer-webui/client/src/api/socket/SocketSingleton.ts b/components/webui/client/src/api/socket/SocketSingleton.ts similarity index 100% rename from components/log-viewer-webui/client/src/api/socket/SocketSingleton.ts rename to components/webui/client/src/api/socket/SocketSingleton.ts diff --git a/components/log-viewer-webui/client/src/api/socket/useCursor.tsx b/components/webui/client/src/api/socket/useCursor.tsx similarity index 100% rename from components/log-viewer-webui/client/src/api/socket/useCursor.tsx rename to components/webui/client/src/api/socket/useCursor.tsx diff --git a/components/log-viewer-webui/client/src/components/DashboardCard/index.module.css b/components/webui/client/src/components/DashboardCard/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/components/DashboardCard/index.module.css rename to components/webui/client/src/components/DashboardCard/index.module.css diff --git a/components/log-viewer-webui/client/src/components/DashboardCard/index.tsx b/components/webui/client/src/components/DashboardCard/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/DashboardCard/index.tsx rename to components/webui/client/src/components/DashboardCard/index.tsx diff --git a/components/log-viewer-webui/client/src/components/Layout/MainLayout.module.css b/components/webui/client/src/components/Layout/MainLayout.module.css similarity index 100% rename from components/log-viewer-webui/client/src/components/Layout/MainLayout.module.css rename to components/webui/client/src/components/Layout/MainLayout.module.css diff --git a/components/log-viewer-webui/client/src/components/Layout/MainLayout.tsx b/components/webui/client/src/components/Layout/MainLayout.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/Layout/MainLayout.tsx rename to components/webui/client/src/components/Layout/MainLayout.tsx diff --git a/components/log-viewer-webui/client/src/components/QueryBox/InputWithCaseSensitive/CaseSenstiveToggle.tsx b/components/webui/client/src/components/QueryBox/InputWithCaseSensitive/CaseSenstiveToggle.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/QueryBox/InputWithCaseSensitive/CaseSenstiveToggle.tsx rename to components/webui/client/src/components/QueryBox/InputWithCaseSensitive/CaseSenstiveToggle.tsx diff --git a/components/log-viewer-webui/client/src/components/QueryBox/InputWithCaseSensitive/index.tsx b/components/webui/client/src/components/QueryBox/InputWithCaseSensitive/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/QueryBox/InputWithCaseSensitive/index.tsx rename to components/webui/client/src/components/QueryBox/InputWithCaseSensitive/index.tsx diff --git a/components/log-viewer-webui/client/src/components/QueryBox/index.module.css b/components/webui/client/src/components/QueryBox/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/components/QueryBox/index.module.css rename to components/webui/client/src/components/QueryBox/index.module.css diff --git a/components/log-viewer-webui/client/src/components/QueryBox/index.tsx b/components/webui/client/src/components/QueryBox/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/QueryBox/index.tsx rename to components/webui/client/src/components/QueryBox/index.tsx diff --git a/components/log-viewer-webui/client/src/components/ResultsTimeline/datetime/index.ts b/components/webui/client/src/components/ResultsTimeline/datetime/index.ts similarity index 100% rename from components/log-viewer-webui/client/src/components/ResultsTimeline/datetime/index.ts rename to components/webui/client/src/components/ResultsTimeline/datetime/index.ts diff --git a/components/log-viewer-webui/client/src/components/ResultsTimeline/datetime/typings.ts b/components/webui/client/src/components/ResultsTimeline/datetime/typings.ts similarity index 100% rename from components/log-viewer-webui/client/src/components/ResultsTimeline/datetime/typings.ts rename to components/webui/client/src/components/ResultsTimeline/datetime/typings.ts diff --git a/components/log-viewer-webui/client/src/components/ResultsTimeline/index.module.css b/components/webui/client/src/components/ResultsTimeline/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/components/ResultsTimeline/index.module.css rename to components/webui/client/src/components/ResultsTimeline/index.module.css diff --git a/components/log-viewer-webui/client/src/components/ResultsTimeline/index.tsx b/components/webui/client/src/components/ResultsTimeline/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/ResultsTimeline/index.tsx rename to components/webui/client/src/components/ResultsTimeline/index.tsx diff --git a/components/log-viewer-webui/client/src/components/ResultsTimeline/typings.ts b/components/webui/client/src/components/ResultsTimeline/typings.ts similarity index 100% rename from components/log-viewer-webui/client/src/components/ResultsTimeline/typings.ts rename to components/webui/client/src/components/ResultsTimeline/typings.ts diff --git a/components/log-viewer-webui/client/src/components/ResultsTimeline/utils.ts b/components/webui/client/src/components/ResultsTimeline/utils.ts similarity index 100% rename from components/log-viewer-webui/client/src/components/ResultsTimeline/utils.ts rename to components/webui/client/src/components/ResultsTimeline/utils.ts diff --git a/components/log-viewer-webui/client/src/components/StatCard/index.module.css b/components/webui/client/src/components/StatCard/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/components/StatCard/index.module.css rename to components/webui/client/src/components/StatCard/index.module.css diff --git a/components/log-viewer-webui/client/src/components/StatCard/index.tsx b/components/webui/client/src/components/StatCard/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/StatCard/index.tsx rename to components/webui/client/src/components/StatCard/index.tsx diff --git a/components/log-viewer-webui/client/src/components/VirtualTable/index.tsx b/components/webui/client/src/components/VirtualTable/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/VirtualTable/index.tsx rename to components/webui/client/src/components/VirtualTable/index.tsx diff --git a/components/log-viewer-webui/client/src/components/VirtualTable/typings.tsx b/components/webui/client/src/components/VirtualTable/typings.tsx similarity index 100% rename from components/log-viewer-webui/client/src/components/VirtualTable/typings.tsx rename to components/webui/client/src/components/VirtualTable/typings.tsx diff --git a/components/log-viewer-webui/client/src/config/index.ts b/components/webui/client/src/config/index.ts similarity index 100% rename from components/log-viewer-webui/client/src/config/index.ts rename to components/webui/client/src/config/index.ts diff --git a/components/log-viewer-webui/client/src/index.css b/components/webui/client/src/index.css similarity index 100% rename from components/log-viewer-webui/client/src/index.css rename to components/webui/client/src/index.css diff --git a/components/log-viewer-webui/client/src/main.tsx b/components/webui/client/src/main.tsx similarity index 100% rename from components/log-viewer-webui/client/src/main.tsx rename to components/webui/client/src/main.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Details/DetailsCard.tsx b/components/webui/client/src/pages/IngestPage/Details/DetailsCard.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Details/DetailsCard.tsx rename to components/webui/client/src/pages/IngestPage/Details/DetailsCard.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Details/Files.tsx b/components/webui/client/src/pages/IngestPage/Details/Files.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Details/Files.tsx rename to components/webui/client/src/pages/IngestPage/Details/Files.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Details/Messages.tsx b/components/webui/client/src/pages/IngestPage/Details/Messages.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Details/Messages.tsx rename to components/webui/client/src/pages/IngestPage/Details/Messages.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Details/TimeRange.tsx b/components/webui/client/src/pages/IngestPage/Details/TimeRange.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Details/TimeRange.tsx rename to components/webui/client/src/pages/IngestPage/Details/TimeRange.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Details/index.module.css b/components/webui/client/src/pages/IngestPage/Details/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Details/index.module.css rename to components/webui/client/src/pages/IngestPage/Details/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Details/index.tsx b/components/webui/client/src/pages/IngestPage/Details/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Details/index.tsx rename to components/webui/client/src/pages/IngestPage/Details/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Details/sql.ts b/components/webui/client/src/pages/IngestPage/Details/sql.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Details/sql.ts rename to components/webui/client/src/pages/IngestPage/Details/sql.ts diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Jobs/index.module.css b/components/webui/client/src/pages/IngestPage/Jobs/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Jobs/index.module.css rename to components/webui/client/src/pages/IngestPage/Jobs/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Jobs/index.tsx b/components/webui/client/src/pages/IngestPage/Jobs/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Jobs/index.tsx rename to components/webui/client/src/pages/IngestPage/Jobs/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Jobs/sql.ts b/components/webui/client/src/pages/IngestPage/Jobs/sql.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Jobs/sql.ts rename to components/webui/client/src/pages/IngestPage/Jobs/sql.ts diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Jobs/typings.tsx b/components/webui/client/src/pages/IngestPage/Jobs/typings.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Jobs/typings.tsx rename to components/webui/client/src/pages/IngestPage/Jobs/typings.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Jobs/units.ts b/components/webui/client/src/pages/IngestPage/Jobs/units.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Jobs/units.ts rename to components/webui/client/src/pages/IngestPage/Jobs/units.ts diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/Jobs/utils.ts b/components/webui/client/src/pages/IngestPage/Jobs/utils.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/Jobs/utils.ts rename to components/webui/client/src/pages/IngestPage/Jobs/utils.ts diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/CompressedSize.tsx b/components/webui/client/src/pages/IngestPage/SpaceSavings/CompressedSize.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/CompressedSize.tsx rename to components/webui/client/src/pages/IngestPage/SpaceSavings/CompressedSize.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/UncompressedSize.tsx b/components/webui/client/src/pages/IngestPage/SpaceSavings/UncompressedSize.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/UncompressedSize.tsx rename to components/webui/client/src/pages/IngestPage/SpaceSavings/UncompressedSize.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/index.module.css b/components/webui/client/src/pages/IngestPage/SpaceSavings/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/index.module.css rename to components/webui/client/src/pages/IngestPage/SpaceSavings/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/index.tsx b/components/webui/client/src/pages/IngestPage/SpaceSavings/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/index.tsx rename to components/webui/client/src/pages/IngestPage/SpaceSavings/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/sql.ts b/components/webui/client/src/pages/IngestPage/SpaceSavings/sql.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/SpaceSavings/sql.ts rename to components/webui/client/src/pages/IngestPage/SpaceSavings/sql.ts diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/index.module.css b/components/webui/client/src/pages/IngestPage/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/index.module.css rename to components/webui/client/src/pages/IngestPage/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/index.tsx b/components/webui/client/src/pages/IngestPage/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/index.tsx rename to components/webui/client/src/pages/IngestPage/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/ingestStatsStore.ts b/components/webui/client/src/pages/IngestPage/ingestStatsStore.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/ingestStatsStore.ts rename to components/webui/client/src/pages/IngestPage/ingestStatsStore.ts diff --git a/components/log-viewer-webui/client/src/pages/IngestPage/sqlConfig.ts b/components/webui/client/src/pages/IngestPage/sqlConfig.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/IngestPage/sqlConfig.ts rename to components/webui/client/src/pages/IngestPage/sqlConfig.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/QueryInput/index.tsx b/components/webui/client/src/pages/SearchPage/SearchControls/QueryInput/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/QueryInput/index.tsx rename to components/webui/client/src/pages/SearchPage/SearchControls/QueryInput/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/QueryInput/typings.ts b/components/webui/client/src/pages/SearchPage/SearchControls/QueryInput/typings.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/QueryInput/typings.ts rename to components/webui/client/src/pages/SearchPage/SearchControls/QueryInput/typings.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/SearchButton/CancelButton.tsx b/components/webui/client/src/pages/SearchPage/SearchControls/SearchButton/CancelButton.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/SearchButton/CancelButton.tsx rename to components/webui/client/src/pages/SearchPage/SearchControls/SearchButton/CancelButton.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/SearchButton/SearchButton.tsx b/components/webui/client/src/pages/SearchPage/SearchControls/SearchButton/SearchButton.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/SearchButton/SearchButton.tsx rename to components/webui/client/src/pages/SearchPage/SearchControls/SearchButton/SearchButton.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/SearchButton/SubmitButton.tsx b/components/webui/client/src/pages/SearchPage/SearchControls/SearchButton/SubmitButton.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/SearchButton/SubmitButton.tsx rename to components/webui/client/src/pages/SearchPage/SearchControls/SearchButton/SubmitButton.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/SearchButton/index.module.css b/components/webui/client/src/pages/SearchPage/SearchControls/SearchButton/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/SearchButton/index.module.css rename to components/webui/client/src/pages/SearchPage/SearchControls/SearchButton/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.module.css b/components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.module.css rename to components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.tsx b/components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.tsx rename to components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/utils.tsx b/components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/utils.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/utils.tsx rename to components/webui/client/src/pages/SearchPage/SearchControls/TimeRangeInput/utils.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/index.module.css b/components/webui/client/src/pages/SearchPage/SearchControls/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/index.module.css rename to components/webui/client/src/pages/SearchPage/SearchControls/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/index.tsx b/components/webui/client/src/pages/SearchPage/SearchControls/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/index.tsx rename to components/webui/client/src/pages/SearchPage/SearchControls/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/search-requests.ts b/components/webui/client/src/pages/SearchPage/SearchControls/search-requests.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/search-requests.ts rename to components/webui/client/src/pages/SearchPage/SearchControls/search-requests.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/utils.ts b/components/webui/client/src/pages/SearchPage/SearchControls/utils.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchControls/utils.ts rename to components/webui/client/src/pages/SearchPage/SearchControls/utils.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchQueryStatus/Results.tsx b/components/webui/client/src/pages/SearchPage/SearchQueryStatus/Results.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchQueryStatus/Results.tsx rename to components/webui/client/src/pages/SearchPage/SearchQueryStatus/Results.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchQueryStatus/index.module.css b/components/webui/client/src/pages/SearchPage/SearchQueryStatus/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchQueryStatus/index.module.css rename to components/webui/client/src/pages/SearchPage/SearchQueryStatus/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchQueryStatus/index.tsx b/components/webui/client/src/pages/SearchPage/SearchQueryStatus/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchQueryStatus/index.tsx rename to components/webui/client/src/pages/SearchPage/SearchQueryStatus/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/LogViewerLink.tsx b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/LogViewerLink.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/LogViewerLink.tsx rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/LogViewerLink.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.module.css b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.module.css rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.tsx b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.tsx rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/utils.ts b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/utils.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/utils.ts rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/Message/utils.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/index.tsx b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/index.tsx rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/typings.tsx b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/typings.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/typings.tsx rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/typings.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/useSearchResults.ts b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/useSearchResults.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/useSearchResults.ts rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/useSearchResults.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/utils.ts b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/utils.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/utils.ts rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTable/utils.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/useAggregationResults.ts b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/useAggregationResults.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/useAggregationResults.ts rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/useAggregationResults.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/utils.ts b/components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/utils.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/utils.ts rename to components/webui/client/src/pages/SearchPage/SearchResults/SearchResultsTimeline/utils.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchState/index.tsx b/components/webui/client/src/pages/SearchPage/SearchState/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchState/index.tsx rename to components/webui/client/src/pages/SearchPage/SearchState/index.tsx diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchState/typings.ts b/components/webui/client/src/pages/SearchPage/SearchState/typings.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchState/typings.ts rename to components/webui/client/src/pages/SearchPage/SearchState/typings.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchState/useResultsMetadata.ts b/components/webui/client/src/pages/SearchPage/SearchState/useResultsMetadata.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchState/useResultsMetadata.ts rename to components/webui/client/src/pages/SearchPage/SearchState/useResultsMetadata.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/SearchState/useUpdateStateWithMetadata.ts b/components/webui/client/src/pages/SearchPage/SearchState/useUpdateStateWithMetadata.ts similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/SearchState/useUpdateStateWithMetadata.ts rename to components/webui/client/src/pages/SearchPage/SearchState/useUpdateStateWithMetadata.ts diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/index.module.css b/components/webui/client/src/pages/SearchPage/index.module.css similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/index.module.css rename to components/webui/client/src/pages/SearchPage/index.module.css diff --git a/components/log-viewer-webui/client/src/pages/SearchPage/index.tsx b/components/webui/client/src/pages/SearchPage/index.tsx similarity index 100% rename from components/log-viewer-webui/client/src/pages/SearchPage/index.tsx rename to components/webui/client/src/pages/SearchPage/index.tsx diff --git a/components/log-viewer-webui/client/src/router.tsx b/components/webui/client/src/router.tsx similarity index 100% rename from components/log-viewer-webui/client/src/router.tsx rename to components/webui/client/src/router.tsx diff --git a/components/log-viewer-webui/client/src/settings.ts b/components/webui/client/src/settings.ts similarity index 100% rename from components/log-viewer-webui/client/src/settings.ts rename to components/webui/client/src/settings.ts diff --git a/components/log-viewer-webui/client/src/theme.tsx b/components/webui/client/src/theme.tsx similarity index 100% rename from components/log-viewer-webui/client/src/theme.tsx rename to components/webui/client/src/theme.tsx diff --git a/components/log-viewer-webui/client/src/typings/common.ts b/components/webui/client/src/typings/common.ts similarity index 100% rename from components/log-viewer-webui/client/src/typings/common.ts rename to components/webui/client/src/typings/common.ts diff --git a/components/log-viewer-webui/client/src/typings/config.ts b/components/webui/client/src/typings/config.ts similarity index 100% rename from components/log-viewer-webui/client/src/typings/config.ts rename to components/webui/client/src/typings/config.ts diff --git a/components/log-viewer-webui/client/src/typings/datetime.ts b/components/webui/client/src/typings/datetime.ts similarity index 100% rename from components/log-viewer-webui/client/src/typings/datetime.ts rename to components/webui/client/src/typings/datetime.ts diff --git a/components/log-viewer-webui/client/src/typings/query.ts b/components/webui/client/src/typings/query.ts similarity index 100% rename from components/log-viewer-webui/client/src/typings/query.ts rename to components/webui/client/src/typings/query.ts diff --git a/components/log-viewer-webui/client/src/ui/Loading.css b/components/webui/client/src/ui/Loading.css similarity index 100% rename from components/log-viewer-webui/client/src/ui/Loading.css rename to components/webui/client/src/ui/Loading.css diff --git a/components/log-viewer-webui/client/src/ui/Loading.tsx b/components/webui/client/src/ui/Loading.tsx similarity index 100% rename from components/log-viewer-webui/client/src/ui/Loading.tsx rename to components/webui/client/src/ui/Loading.tsx diff --git a/components/log-viewer-webui/client/src/ui/QueryStatus.tsx b/components/webui/client/src/ui/QueryStatus.tsx similarity index 100% rename from components/log-viewer-webui/client/src/ui/QueryStatus.tsx rename to components/webui/client/src/ui/QueryStatus.tsx diff --git a/components/log-viewer-webui/client/src/vite-env.d.ts b/components/webui/client/src/vite-env.d.ts similarity index 100% rename from components/log-viewer-webui/client/src/vite-env.d.ts rename to components/webui/client/src/vite-env.d.ts diff --git a/components/log-viewer-webui/client/tsconfig.json b/components/webui/client/tsconfig.json similarity index 100% rename from components/log-viewer-webui/client/tsconfig.json rename to components/webui/client/tsconfig.json diff --git a/components/log-viewer-webui/client/tsconfig/tsconfig.app.json b/components/webui/client/tsconfig/tsconfig.app.json similarity index 100% rename from components/log-viewer-webui/client/tsconfig/tsconfig.app.json rename to components/webui/client/tsconfig/tsconfig.app.json diff --git a/components/log-viewer-webui/client/tsconfig/tsconfig.base.json b/components/webui/client/tsconfig/tsconfig.base.json similarity index 100% rename from components/log-viewer-webui/client/tsconfig/tsconfig.base.json rename to components/webui/client/tsconfig/tsconfig.base.json diff --git a/components/log-viewer-webui/client/tsconfig/tsconfig.node.json b/components/webui/client/tsconfig/tsconfig.node.json similarity index 100% rename from components/log-viewer-webui/client/tsconfig/tsconfig.node.json rename to components/webui/client/tsconfig/tsconfig.node.json diff --git a/components/log-viewer-webui/client/vite.config.ts b/components/webui/client/vite.config.ts similarity index 92% rename from components/log-viewer-webui/client/vite.config.ts rename to components/webui/client/vite.config.ts index aa3b84042e..36b11bfb92 100644 --- a/components/log-viewer-webui/client/vite.config.ts +++ b/components/webui/client/vite.config.ts @@ -24,7 +24,7 @@ export default defineConfig({ proxy: { "/query/": { // Below target should match the server's configuration in - // `components/log-viewer-webui/server/.env` (or `.env.local` if overridden) + // `components/webui/server/.env` (or `.env.local` if overridden) target: "http://localhost:3000/", changeOrigin: true, }, diff --git a/components/log-viewer-webui/common/index.ts b/components/webui/common/index.ts similarity index 100% rename from components/log-viewer-webui/common/index.ts rename to components/webui/common/index.ts diff --git a/components/log-viewer-webui/common/package.json b/components/webui/common/package.json similarity index 100% rename from components/log-viewer-webui/common/package.json rename to components/webui/common/package.json diff --git a/components/log-viewer-webui/package-lock.json b/components/webui/package-lock.json similarity index 96% rename from components/log-viewer-webui/package-lock.json rename to components/webui/package-lock.json index 4ca32e8ff9..50f7f6c8c8 100644 --- a/components/log-viewer-webui/package-lock.json +++ b/components/webui/package-lock.json @@ -1,351 +1,351 @@ -{ - "name": "log-viewer-webui", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "log-viewer-webui", - "version": "0.1.0", - "license": "Apache-2.0", - "devDependencies": { - "concurrently": "^8.2.2" - } - }, - "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "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/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": 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/chalk/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/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/concurrently": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", - "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "date-fns": "^2.30.0", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "spawn-command": "0.0.2", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "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/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/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/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/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/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "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==", - "dev": true - }, - "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/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/spawn-command": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", - "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", - "dev": true - }, - "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/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true - }, - "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/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" - } - } - } -} +{ + "name": "webui", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "webui", + "version": "0.1.0", + "license": "Apache-2.0", + "devDependencies": { + "concurrently": "^8.2.2" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "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/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": 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/chalk/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/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/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "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/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/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/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/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/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "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==", + "dev": true + }, + "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/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, + "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/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "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/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" + } + } + } +} diff --git a/components/log-viewer-webui/package.json b/components/webui/package.json similarity index 94% rename from components/log-viewer-webui/package.json rename to components/webui/package.json index dff17d93da..d424326369 100644 --- a/components/log-viewer-webui/package.json +++ b/components/webui/package.json @@ -1,22 +1,22 @@ -{ - "name": "log-viewer-webui", - "version": "0.1.0", - "description": "", - "scripts": { - "client:lint:check": "cd client && npm run lint:check", - "client:lint:fix": "cd client && npm run lint:fix", - "client:start": "cd client && npm start", - "init": "npm clean-install && (cd client && npm clean-install) && (cd server && npm clean-install)", - "lint:check": "npm run client:lint:check && npm run server:lint:check", - "lint:fix": "npm run client:lint:fix && npm run server:lint:fix", - "server:lint:check": "cd server && npm run lint:check", - "server:lint:fix": "cd server && npm run lint:fix", - "server:start": "cd server && npm start", - "start": "concurrently \"npm run client:start\" \"npm run server:start\"" - }, - "author": "YScope Inc. ", - "license": "Apache-2.0", - "devDependencies": { - "concurrently": "^8.2.2" - } -} +{ + "name": "webui", + "version": "0.1.0", + "description": "", + "scripts": { + "client:lint:check": "cd client && npm run lint:check", + "client:lint:fix": "cd client && npm run lint:fix", + "client:start": "cd client && npm start", + "init": "npm clean-install && (cd client && npm clean-install) && (cd server && npm clean-install)", + "lint:check": "npm run client:lint:check && npm run server:lint:check", + "lint:fix": "npm run client:lint:fix && npm run server:lint:fix", + "server:lint:check": "cd server && npm run lint:check", + "server:lint:fix": "cd server && npm run lint:fix", + "server:start": "cd server && npm start", + "start": "concurrently \"npm run client:start\" \"npm run server:start\"" + }, + "author": "YScope Inc. ", + "license": "Apache-2.0", + "devDependencies": { + "concurrently": "^8.2.2" + } +} diff --git a/components/log-viewer-webui/server/.env b/components/webui/server/.env similarity index 100% rename from components/log-viewer-webui/server/.env rename to components/webui/server/.env diff --git a/components/log-viewer-webui/server/.gitignore b/components/webui/server/.gitignore similarity index 100% rename from components/log-viewer-webui/server/.gitignore rename to components/webui/server/.gitignore diff --git a/components/log-viewer-webui/server/eslint.config.mjs b/components/webui/server/eslint.config.mjs similarity index 100% rename from components/log-viewer-webui/server/eslint.config.mjs rename to components/webui/server/eslint.config.mjs diff --git a/components/log-viewer-webui/server/package-lock.json b/components/webui/server/package-lock.json similarity index 99% rename from components/log-viewer-webui/server/package-lock.json rename to components/webui/server/package-lock.json index 5543eaaf21..9461a27621 100644 --- a/components/log-viewer-webui/server/package-lock.json +++ b/components/webui/server/package-lock.json @@ -1,11 +1,11 @@ { - "name": "log-viewer-webui-server", + "name": "webui-server", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "log-viewer-webui-server", + "name": "webui-server", "version": "0.1.0", "license": "Apache-2.0", "dependencies": { diff --git a/components/log-viewer-webui/server/package.json b/components/webui/server/package.json similarity index 97% rename from components/log-viewer-webui/server/package.json rename to components/webui/server/package.json index a7c26f1e55..a4ac87fac9 100644 --- a/components/log-viewer-webui/server/package.json +++ b/components/webui/server/package.json @@ -1,5 +1,5 @@ { - "name": "log-viewer-webui-server", + "name": "webui-server", "version": "0.1.0", "description": "", "main": "src/main.ts", diff --git a/components/log-viewer-webui/server/settings.json b/components/webui/server/settings.json similarity index 100% rename from components/log-viewer-webui/server/settings.json rename to components/webui/server/settings.json diff --git a/components/log-viewer-webui/server/src/app.ts b/components/webui/server/src/app.ts similarity index 100% rename from components/log-viewer-webui/server/src/app.ts rename to components/webui/server/src/app.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/app.ts b/components/webui/server/src/fastify-v2/app.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/app.ts rename to components/webui/server/src/fastify-v2/app.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/index.ts b/components/webui/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/index.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/index.ts rename to components/webui/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/index.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/typings.ts b/components/webui/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/typings.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/typings.ts rename to components/webui/server/src/fastify-v2/plugins/app/search/QueryJobsDbManager/typings.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/plugins/external/env.ts b/components/webui/server/src/fastify-v2/plugins/external/env.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/plugins/external/env.ts rename to components/webui/server/src/fastify-v2/plugins/external/env.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/plugins/external/mongo.ts b/components/webui/server/src/fastify-v2/plugins/external/mongo.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/plugins/external/mongo.ts rename to components/webui/server/src/fastify-v2/plugins/external/mongo.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/plugins/external/mysql.ts b/components/webui/server/src/fastify-v2/plugins/external/mysql.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/plugins/external/mysql.ts rename to components/webui/server/src/fastify-v2/plugins/external/mysql.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/plugins/external/rateLimit.ts b/components/webui/server/src/fastify-v2/plugins/external/rateLimit.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/plugins/external/rateLimit.ts rename to components/webui/server/src/fastify-v2/plugins/external/rateLimit.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/plugins/external/sensible.ts b/components/webui/server/src/fastify-v2/plugins/external/sensible.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/plugins/external/sensible.ts rename to components/webui/server/src/fastify-v2/plugins/external/sensible.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/routes/api/search/index.ts b/components/webui/server/src/fastify-v2/routes/api/search/index.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/routes/api/search/index.ts rename to components/webui/server/src/fastify-v2/routes/api/search/index.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/routes/api/search/typings.ts b/components/webui/server/src/fastify-v2/routes/api/search/typings.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/routes/api/search/typings.ts rename to components/webui/server/src/fastify-v2/routes/api/search/typings.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/routes/api/search/utils.ts b/components/webui/server/src/fastify-v2/routes/api/search/utils.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/routes/api/search/utils.ts rename to components/webui/server/src/fastify-v2/routes/api/search/utils.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/schemas/common.ts b/components/webui/server/src/fastify-v2/schemas/common.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/schemas/common.ts rename to components/webui/server/src/fastify-v2/schemas/common.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/schemas/error.ts b/components/webui/server/src/fastify-v2/schemas/error.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/schemas/error.ts rename to components/webui/server/src/fastify-v2/schemas/error.ts diff --git a/components/log-viewer-webui/server/src/fastify-v2/schemas/search.ts b/components/webui/server/src/fastify-v2/schemas/search.ts similarity index 100% rename from components/log-viewer-webui/server/src/fastify-v2/schemas/search.ts rename to components/webui/server/src/fastify-v2/schemas/search.ts diff --git a/components/log-viewer-webui/server/src/main.ts b/components/webui/server/src/main.ts similarity index 100% rename from components/log-viewer-webui/server/src/main.ts rename to components/webui/server/src/main.ts diff --git a/components/log-viewer-webui/server/src/plugins/DbManager.ts b/components/webui/server/src/plugins/DbManager.ts similarity index 100% rename from components/log-viewer-webui/server/src/plugins/DbManager.ts rename to components/webui/server/src/plugins/DbManager.ts diff --git a/components/log-viewer-webui/server/src/plugins/MongoSocketIoServer/MongoWatcherCollection.ts b/components/webui/server/src/plugins/MongoSocketIoServer/MongoWatcherCollection.ts similarity index 100% rename from components/log-viewer-webui/server/src/plugins/MongoSocketIoServer/MongoWatcherCollection.ts rename to components/webui/server/src/plugins/MongoSocketIoServer/MongoWatcherCollection.ts diff --git a/components/log-viewer-webui/server/src/plugins/MongoSocketIoServer/index.ts b/components/webui/server/src/plugins/MongoSocketIoServer/index.ts similarity index 100% rename from components/log-viewer-webui/server/src/plugins/MongoSocketIoServer/index.ts rename to components/webui/server/src/plugins/MongoSocketIoServer/index.ts diff --git a/components/log-viewer-webui/server/src/plugins/MongoSocketIoServer/typings.ts b/components/webui/server/src/plugins/MongoSocketIoServer/typings.ts similarity index 100% rename from components/log-viewer-webui/server/src/plugins/MongoSocketIoServer/typings.ts rename to components/webui/server/src/plugins/MongoSocketIoServer/typings.ts diff --git a/components/log-viewer-webui/server/src/plugins/MongoSocketIoServer/utils.ts b/components/webui/server/src/plugins/MongoSocketIoServer/utils.ts similarity index 100% rename from components/log-viewer-webui/server/src/plugins/MongoSocketIoServer/utils.ts rename to components/webui/server/src/plugins/MongoSocketIoServer/utils.ts diff --git a/components/log-viewer-webui/server/src/plugins/S3Manager.ts b/components/webui/server/src/plugins/S3Manager.ts similarity index 100% rename from components/log-viewer-webui/server/src/plugins/S3Manager.ts rename to components/webui/server/src/plugins/S3Manager.ts diff --git a/components/log-viewer-webui/server/src/routes/example.ts b/components/webui/server/src/routes/example.ts similarity index 100% rename from components/log-viewer-webui/server/src/routes/example.ts rename to components/webui/server/src/routes/example.ts diff --git a/components/log-viewer-webui/server/src/routes/query.ts b/components/webui/server/src/routes/query.ts similarity index 100% rename from components/log-viewer-webui/server/src/routes/query.ts rename to components/webui/server/src/routes/query.ts diff --git a/components/log-viewer-webui/server/src/routes/static.ts b/components/webui/server/src/routes/static.ts similarity index 100% rename from components/log-viewer-webui/server/src/routes/static.ts rename to components/webui/server/src/routes/static.ts diff --git a/components/log-viewer-webui/server/src/test/app.test.ts b/components/webui/server/src/test/app.test.ts similarity index 100% rename from components/log-viewer-webui/server/src/test/app.test.ts rename to components/webui/server/src/test/app.test.ts diff --git a/components/log-viewer-webui/server/src/test/tap.ts b/components/webui/server/src/test/tap.ts similarity index 100% rename from components/log-viewer-webui/server/src/test/tap.ts rename to components/webui/server/src/test/tap.ts diff --git a/components/log-viewer-webui/server/src/typings/DbManager.ts b/components/webui/server/src/typings/DbManager.ts similarity index 100% rename from components/log-viewer-webui/server/src/typings/DbManager.ts rename to components/webui/server/src/typings/DbManager.ts diff --git a/components/log-viewer-webui/server/src/typings/common.ts b/components/webui/server/src/typings/common.ts similarity index 100% rename from components/log-viewer-webui/server/src/typings/common.ts rename to components/webui/server/src/typings/common.ts diff --git a/components/log-viewer-webui/server/src/typings/query.ts b/components/webui/server/src/typings/query.ts similarity index 100% rename from components/log-viewer-webui/server/src/typings/query.ts rename to components/webui/server/src/typings/query.ts diff --git a/components/log-viewer-webui/server/src/utils/time.ts b/components/webui/server/src/utils/time.ts similarity index 100% rename from components/log-viewer-webui/server/src/utils/time.ts rename to components/webui/server/src/utils/time.ts diff --git a/components/log-viewer-webui/server/tsconfig.json b/components/webui/server/tsconfig.json similarity index 100% rename from components/log-viewer-webui/server/tsconfig.json rename to components/webui/server/tsconfig.json diff --git a/taskfile.yaml b/taskfile.yaml index 166e42c055..7d6083dca3 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -14,16 +14,16 @@ vars: G_COMPONENTS_DIR: "{{.ROOT_DIR}}/components" G_CORE_COMPONENT_DIR: "{{.G_COMPONENTS_DIR}}/core" G_CORE_COMPONENT_SUBMODULES_DIR: "{{.G_CORE_COMPONENT_DIR}}/submodules" - G_LOG_VIEWER_WEBUI_SRC_DIR: "{{.G_COMPONENTS_DIR}}/log-viewer-webui" + G_WEBUI_SRC_DIR: "{{.G_COMPONENTS_DIR}}/webui" # Build paths G_BUILD_DIR: "{{.ROOT_DIR}}/build" G_CORE_COMPONENT_BUILD_DIR: "{{.G_BUILD_DIR}}/core" - G_LOG_VIEWER_WEBUI_BUILD_DIR: "{{.G_BUILD_DIR}}/log-viewer-webui" G_NODEJS_22_BUILD_DIR: "{{.G_BUILD_DIR}}/nodejs-22" G_NODEJS_22_BIN_DIR: "{{.G_NODEJS_22_BUILD_DIR}}/bin" G_PACKAGE_BUILD_DIR: "{{.G_BUILD_DIR}}/clp-package" G_PACKAGE_VENV_DIR: "{{.G_BUILD_DIR}}/package-venv" + G_WEBUI_BUILD_DIR: "{{.G_BUILD_DIR}}/webui" # Taskfile paths G_UTILS_TASKFILE: "{{.ROOT_DIR}}/tools/yscope-dev-utils/exports/taskfiles/utils/utils.yaml" @@ -43,7 +43,7 @@ tasks: clean: cmds: - "rm -rf '{{.G_BUILD_DIR}}'" - - task: "clean-log-viewer-webui" + - task: "clean-webui" - task: "clean-python-component" vars: COMPONENT: "clp-package-utils" @@ -60,13 +60,6 @@ tasks: vars: BUILD_DIR: "{{.G_CORE_COMPONENT_BUILD_DIR}}" - clean-log-viewer-webui: - cmds: - - "rm -rf 'components/log-viewer-webui/client/node_modules'" - - "rm -rf 'components/log-viewer-webui/node_modules'" - - "rm -rf 'components/log-viewer-webui/server/node_modules'" - - "rm -rf 'components/log-viewer-webui/yscope-log-viewer/node_modules'" - clp-json-pkg-tar: cmds: - task: "package-tar" @@ -81,6 +74,13 @@ tasks: FLAVOUR: "text" STORAGE_ENGINE: "clp" + clean-webui: + cmds: + - "rm -rf 'components/webui/client/node_modules'" + - "rm -rf 'components/webui/node_modules'" + - "rm -rf 'components/webui/server/node_modules'" + - "rm -rf 'components/webui/yscope-log-viewer/node_modules'" + package: env: NODE_ENV: "production" @@ -88,7 +88,7 @@ tasks: CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" OUTPUT_DIR: "{{.G_PACKAGE_BUILD_DIR}}" sources: - - "{{.G_BUILD_DIR}}/log-viewer-webui.md5" + - "{{.G_BUILD_DIR}}/webui.md5" - "{{.G_BUILD_DIR}}/package-venv.md5" - "{{.G_CORE_COMPONENT_BUILD_DIR}}/clg" - "{{.G_CORE_COMPONENT_BUILD_DIR}}/clo" @@ -109,8 +109,8 @@ tasks: - "clp-py-utils" - "init" - "job-orchestration" - - "log-viewer-webui" - "package-venv" + - "webui" - task: "utils:checksum:validate" vars: CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" @@ -144,10 +144,10 @@ tasks: - "mkdir -p '{{.OUTPUT_DIR}}/var/www/'" - >- rsync -a - "{{.G_LOG_VIEWER_WEBUI_BUILD_DIR}}/" - "{{.OUTPUT_DIR}}/var/www/log-viewer-webui" + "{{.G_WEBUI_BUILD_DIR}}/" + "{{.OUTPUT_DIR}}/var/www/webui" - |- - cd "{{.OUTPUT_DIR}}/var/www/log-viewer-webui/server" + cd "{{.OUTPUT_DIR}}/var/www/webui/server" PATH="{{.G_NODEJS_22_BIN_DIR}}":$PATH npm clean-install # This command must be last - task: "utils:checksum:compute" @@ -251,12 +251,12 @@ tasks: vars: COMPONENT: "{{.TASK}}" - log-viewer-webui: + webui: vars: CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" - OUTPUT_DIR: "{{.G_LOG_VIEWER_WEBUI_BUILD_DIR}}" + OUTPUT_DIR: "{{.G_WEBUI_BUILD_DIR}}" sources: - - "{{.G_BUILD_DIR}}/log-viewer-webui-node-modules.md5" + - "{{.G_BUILD_DIR}}/webui-node-modules.md5" - "{{.TASKFILE}}" - "client/index.html" - "client/tsconfig/**/*" @@ -277,11 +277,11 @@ tasks: - "yscope-log-viewer/tsconfig.json" - "yscope-log-viewer/webpack.common.js" - "yscope-log-viewer/webpack.prod.js" - dir: "components/log-viewer-webui" + dir: "components/webui" generates: ["{{.CHECKSUM_FILE}}"] deps: - "init" - - "log-viewer-webui-node-modules" + - "webui-node-modules" - task: "utils:checksum:validate" vars: CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" @@ -354,25 +354,25 @@ tasks: CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - # NOTE: The log-viewer-webui has four different node_modules directories: + # NOTE: The webui has four different node_modules directories: # * client # * server # * log-viewer submodule # * the top-level one we call "package" # This means we have to create four different checksums. To allow tasks which depend on this task # to only have to check one checksum file, we concatenate the four checksum files into one. - log-viewer-webui-node-modules: + webui-node-modules: internal: true vars: # Checksum files CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" - CLIENT_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/log-viewer-webui-client-node-modules.md5" - LOG_VIEWER_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/log-viewer-webui-log-viewer-node-modules.md5" - PACKAGE_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/log-viewer-webui-package-node-modules.md5" - SERVER_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/log-viewer-webui-server-node-modules.md5" + CLIENT_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-client-node-modules.md5" + LOG_VIEWER_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-log-viewer-node-modules.md5" + PACKAGE_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-package-node-modules.md5" + SERVER_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-server-node-modules.md5" # Directories - SRC_DIR: "{{.TASKFILE_DIR}}/components/log-viewer-webui" + SRC_DIR: "{{.TASKFILE_DIR}}/components/webui" CLIENT_OUTPUT_DIR: "{{.SRC_DIR}}/client/node_modules" LOG_VIEWER_OUTPUT_DIR: "{{.SRC_DIR}}/yscope-log-viewer/node_modules" PACKAGE_OUTPUT_DIR: "{{.SRC_DIR}}/node_modules" @@ -417,7 +417,7 @@ tasks: INCLUDE_PATTERNS: ["{{.LOG_VIEWER_OUTPUT_DIR}}"] cmds: - "rm -f {{.CHECKSUM_FILE}}" - - task: "clean-log-viewer-webui" + - task: "clean-webui" - "PATH='{{.G_NODEJS_22_BIN_DIR}}':$PATH npm run init" - |- cd yscope-log-viewer diff --git a/taskfiles/deps/main.yaml b/taskfiles/deps/main.yaml index 16f999df94..fa36ea1566 100644 --- a/taskfiles/deps/main.yaml +++ b/taskfiles/deps/main.yaml @@ -51,7 +51,7 @@ tasks: vars: CHECKSUM_FILE: "{{.G_DEPS_LOG_VIEWER_CHECKSUM_FILE}}" FILE_SHA256: "de0600b505545f1bceb7ff5725941035f7c1dc875d08249d9b6d679e3ba77f26" - OUTPUT_DIR: "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/yscope-log-viewer" + OUTPUT_DIR: "{{.G_WEBUI_SRC_DIR}}/yscope-log-viewer" TAR_FILE: "{{.G_BUILD_DIR}}/yscope-log-viewer.tar.gz" URL: "https://github.com/y-scope/yscope-log-viewer/archive/969ff35.tar.gz" diff --git a/taskfiles/lint.yaml b/taskfiles/lint.yaml index 7935710b7f..800889d27c 100644 --- a/taskfiles/lint.yaml +++ b/taskfiles/lint.yaml @@ -56,14 +56,14 @@ tasks: check-js: sources: &js_source_files - - "{{.G_BUILD_DIR}}/log-viewer-webui-node-modules.md5" - - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/client/package.json" - - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/client/src/**/*.css" - - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/client/src/**/*.jsx" - - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/client/src/webpack.config.js" - - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/server/package.json" - - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/server/settings.json" - - "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}/server/src/**/*.js" + - "{{.G_BUILD_DIR}}/webui-node-modules.md5" + - "{{.G_WEBUI_SRC_DIR}}/client/package.json" + - "{{.G_WEBUI_SRC_DIR}}/client/src/**/*.css" + - "{{.G_WEBUI_SRC_DIR}}/client/src/**/*.jsx" + - "{{.G_WEBUI_SRC_DIR}}/client/src/webpack.config.js" + - "{{.G_WEBUI_SRC_DIR}}/server/package.json" + - "{{.G_WEBUI_SRC_DIR}}/server/settings.json" + - "{{.G_WEBUI_SRC_DIR}}/server/src/**/*.js" - "{{.ROOT_DIR}}/taskfile.yaml" - "{{.TASKFILE}}" cmds: @@ -762,10 +762,10 @@ tasks: internal: true requires: vars: ["LINT_CMD"] - deps: [":log-viewer-webui-node-modules"] + deps: [":webui-node-modules"] cmds: - |- - cd "{{.G_LOG_VIEWER_WEBUI_SRC_DIR}}" + cd "{{.G_WEBUI_SRC_DIR}}" PATH="{{.G_NODEJS_22_BIN_DIR}}":$PATH npm run "lint:{{.LINT_CMD}}" py: From 369a21ac96040b4612682aeb0b69b6c40096ddbb Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Mon, 16 Jun 2025 17:42:28 -0400 Subject: [PATCH 07/36] refactor: Update checksum file handling and exclude patterns in lint and task configurations --- taskfile.yaml | 79 ++++++++++++++++----------------------------- taskfiles/lint.yaml | 9 ++---- 2 files changed, 29 insertions(+), 59 deletions(-) diff --git a/taskfile.yaml b/taskfile.yaml index 7d6083dca3..f16bd91956 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -36,6 +36,12 @@ vars: G_CORE_MAX_PARALLELISM_PER_BUILD_TASK: >- {{default "" (env "CLP_CORE_MAX_PARALLELISM_PER_BUILD_TASK")}} + # Checksum files + G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-client-node-modules.md5" + G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-log-viewer-node-modules.md5" + G_WEBUI_PACKAGE_NODE_MODULES_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-package-node-modules.md5" + G_WEBUI_SERVER_NODE_MODULES_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-server-node-modules.md5" + tasks: default: deps: ["package"] @@ -256,27 +262,13 @@ tasks: CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" OUTPUT_DIR: "{{.G_WEBUI_BUILD_DIR}}" sources: - - "{{.G_BUILD_DIR}}/webui-node-modules.md5" + - "{{.G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE}}" + - "{{.G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE}}" + - "{{.G_WEBUI_PACKAGE_NODE_MODULES_CHECKSUM_FILE}}" + - "{{.G_WEBUI_SERVER_NODE_MODULES_CHECKSUM_FILE}}" - "{{.TASKFILE}}" - - "client/index.html" - - "client/tsconfig/**/*" - - "client/tsconfig.json" - - "client/package.json" - - "client/package-lock.json" - - "client/src/**/*.css" - - "client/src/**/*.ts" - - "client/src/**/*.tsx" - - "server/package.json" - - "server/package-lock.json" - - "server/settings.json" - - "server/src/**/*.ts" - - "server/tsconfig.json" - - "yscope-log-viewer/package.json" - - "yscope-log-viewer/public/**/*" - - "yscope-log-viewer/src/**/*" - - "yscope-log-viewer/tsconfig.json" - - "yscope-log-viewer/webpack.common.js" - - "yscope-log-viewer/webpack.prod.js" + - "**/*" + - exclude: "**/dist/*" dir: "components/webui" generates: ["{{.CHECKSUM_FILE}}"] deps: @@ -364,13 +356,6 @@ tasks: webui-node-modules: internal: true vars: - # Checksum files - CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" - CLIENT_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-client-node-modules.md5" - LOG_VIEWER_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-log-viewer-node-modules.md5" - PACKAGE_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-package-node-modules.md5" - SERVER_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-server-node-modules.md5" - # Directories SRC_DIR: "{{.TASKFILE_DIR}}/components/webui" CLIENT_OUTPUT_DIR: "{{.SRC_DIR}}/client/node_modules" @@ -391,62 +376,52 @@ tasks: - "yscope-log-viewer/package-lock.json" dir: "{{.SRC_DIR}}" generates: - - "{{.CHECKSUM_FILE}}" - - "{{.CLIENT_CHECKSUM_FILE}}" - - "{{.LOG_VIEWER_CHECKSUM_FILE}}" - - "{{.PACKAGE_CHECKSUM_FILE}}" - - "{{.SERVER_CHECKSUM_FILE}}" + - "{{.G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE}}" + - "{{.G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE}}" + - "{{.G_WEBUI_PACKAGE_NODE_MODULES_CHECKSUM_FILE}}" + - "{{.G_WEBUI_SERVER_NODE_MODULES_CHECKSUM_FILE}}" deps: - "deps:log-viewer" - "nodejs-22" - task: "utils:checksum:validate" vars: - CHECKSUM_FILE: "{{.CLIENT_CHECKSUM_FILE}}" + CHECKSUM_FILE: "{{.G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.CLIENT_OUTPUT_DIR}}"] - task: "utils:checksum:validate" vars: - CHECKSUM_FILE: "{{.SERVER_CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.SERVER_OUTPUT_DIR}}"] + CHECKSUM_FILE: "{{.G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE}}" + INCLUDE_PATTERNS: ["{{.LOG_VIEWER_OUTPUT_DIR}}"] - task: "utils:checksum:validate" vars: - CHECKSUM_FILE: "{{.PACKAGE_CHECKSUM_FILE}}" + CHECKSUM_FILE: "{{.G_WEBUI_PACKAGE_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.PACKAGE_OUTPUT_DIR}}"] - task: "utils:checksum:validate" vars: - CHECKSUM_FILE: "{{.LOG_VIEWER_CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.LOG_VIEWER_OUTPUT_DIR}}"] + CHECKSUM_FILE: "{{.G_WEBUI_SERVER_NODE_MODULES_CHECKSUM_FILE}}" + INCLUDE_PATTERNS: ["{{.SERVER_OUTPUT_DIR}}"] cmds: - - "rm -f {{.CHECKSUM_FILE}}" - task: "clean-webui" - "PATH='{{.G_NODEJS_22_BIN_DIR}}':$PATH npm run init" - |- cd yscope-log-viewer - PATH="{{.G_NODEJS_22_BIN_DIR}}":$PATH npm install + PATH="{{.G_NODEJS_22_BIN_DIR}}":$PATH npm clean-install # These commands must be last - task: "utils:checksum:compute" vars: - CHECKSUM_FILE: "{{.CLIENT_CHECKSUM_FILE}}" + CHECKSUM_FILE: "{{.G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.CLIENT_OUTPUT_DIR}}"] - task: "utils:checksum:compute" vars: - CHECKSUM_FILE: "{{.LOG_VIEWER_CHECKSUM_FILE}}" + CHECKSUM_FILE: "{{.G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.LOG_VIEWER_OUTPUT_DIR}}"] - task: "utils:checksum:compute" vars: - CHECKSUM_FILE: "{{.PACKAGE_CHECKSUM_FILE}}" + CHECKSUM_FILE: "{{.G_WEBUI_PACKAGE_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.PACKAGE_OUTPUT_DIR}}"] - task: "utils:checksum:compute" vars: - CHECKSUM_FILE: "{{.SERVER_CHECKSUM_FILE}}" + CHECKSUM_FILE: "{{.G_WEBUI_SERVER_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.SERVER_OUTPUT_DIR}}"] - # This command must be last - - >- - cat - "{{.CLIENT_CHECKSUM_FILE}}" - "{{.LOG_VIEWER_CHECKSUM_FILE}}" - "{{.PACKAGE_CHECKSUM_FILE}}" - "{{.SERVER_CHECKSUM_FILE}}" - > "{{.CHECKSUM_FILE}}" nodejs: internal: true diff --git a/taskfiles/lint.yaml b/taskfiles/lint.yaml index 800889d27c..149a1ba5f8 100644 --- a/taskfiles/lint.yaml +++ b/taskfiles/lint.yaml @@ -57,13 +57,8 @@ tasks: check-js: sources: &js_source_files - "{{.G_BUILD_DIR}}/webui-node-modules.md5" - - "{{.G_WEBUI_SRC_DIR}}/client/package.json" - - "{{.G_WEBUI_SRC_DIR}}/client/src/**/*.css" - - "{{.G_WEBUI_SRC_DIR}}/client/src/**/*.jsx" - - "{{.G_WEBUI_SRC_DIR}}/client/src/webpack.config.js" - - "{{.G_WEBUI_SRC_DIR}}/server/package.json" - - "{{.G_WEBUI_SRC_DIR}}/server/settings.json" - - "{{.G_WEBUI_SRC_DIR}}/server/src/**/*.js" + - "{{.G_WEBUI_SRC_DIR}}/**/*" + - exclude: "{{.G_WEBUI_SRC_DIR}}/**/dist/*" - "{{.ROOT_DIR}}/taskfile.yaml" - "{{.TASKFILE}}" cmds: From 7b2f7a2b27322e9ee46ba29a316af33c3972eefe Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Mon, 16 Jun 2025 17:53:59 -0400 Subject: [PATCH 08/36] fix lint --- .../clp_package_utils/scripts/start_clp.py | 26 ++++++------------- taskfile.yaml | 3 ++- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py index 8147dd8029..41e21356d2 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py @@ -855,22 +855,10 @@ def start_webui( container_webui_dir = CONTAINER_CLP_HOME / "var" / "www" / "webui" node_path = str(container_webui_dir / "server" / "node_modules") client_settings_json_path = ( - get_clp_home() - / "var" - / "www" - / "webui" - / "client" - / "settings.json" + get_clp_home() / "var" / "www" / "webui" / "client" / "settings.json" ) server_settings_json_path = ( - get_clp_home() - / "var" - / "www" - / "webui" - / "server" - / "dist" - / "server" - / "settings.json" + get_clp_home() / "var" / "www" / "webui" / "server" / "dist" / "server" / "settings.json" ) validate_webui_config(clp_config, client_settings_json_path, server_settings_json_path) @@ -880,8 +868,9 @@ def start_webui( "ClpStorageEngine": clp_config.package.storage_engine, "MongoDbSearchResultsMetadataCollectionName": clp_config.webui.results_metadata_collection_name, } - client_settings_json = read_and_update_settings_json(client_settings_json_path, - client_settings_json_updates) + client_settings_json = read_and_update_settings_json( + client_settings_json_path, client_settings_json_updates + ) with open(client_settings_json_path, "w") as client_settings_json_file: client_settings_json_file.write(json.dumps(client_settings_json)) @@ -921,8 +910,9 @@ def start_webui( server_settings_json_updates["StreamFilesS3PathPrefix"] = None server_settings_json_updates["StreamFilesS3Profile"] = None - server_settings_json = read_and_update_settings_json(server_settings_json_path, - server_settings_json_updates) + server_settings_json = read_and_update_settings_json( + server_settings_json_path, server_settings_json_updates + ) with open(server_settings_json_path, "w") as settings_json_file: settings_json_file.write(json.dumps(server_settings_json)) diff --git a/taskfile.yaml b/taskfile.yaml index f16bd91956..f29585e891 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -38,7 +38,8 @@ vars: # Checksum files G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-client-node-modules.md5" - G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-log-viewer-node-modules.md5" + G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE: + "{{.G_BUILD_DIR}}/webui-log-viewer-node-modules.md5" G_WEBUI_PACKAGE_NODE_MODULES_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-package-node-modules.md5" G_WEBUI_SERVER_NODE_MODULES_CHECKSUM_FILE: "{{.G_BUILD_DIR}}/webui-server-node-modules.md5" From f655fad553d64eff355fa4031742302dc99a7d5f Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Tue, 17 Jun 2025 15:01:52 -0400 Subject: [PATCH 09/36] fix lint --- components/clp-package-utils/clp_package_utils/general.py | 8 +++++--- components/clp-py-utils/clp_py_utils/clp_config.py | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/components/clp-package-utils/clp_package_utils/general.py b/components/clp-package-utils/clp_package_utils/general.py index a106469374..f10050efb7 100644 --- a/components/clp-package-utils/clp_package_utils/general.py +++ b/components/clp-package-utils/clp_package_utils/general.py @@ -509,9 +509,11 @@ def validate_worker_config(clp_config: CLPConfig): clp_config.validate_stream_output_config() -def validate_webui_config(clp_config: CLPConfig, - client_settings_json_path: pathlib.Path, - server_settings_json_path: pathlib.Path): +def validate_webui_config( + clp_config: CLPConfig, + client_settings_json_path: pathlib.Path, + server_settings_json_path: pathlib.Path, +): for path in [client_settings_json_path, server_settings_json_path]: if not path.exists(): raise ValueError(f"{WEBUI_COMPONENT_NAME} {path} is not a valid path to settings.json") diff --git a/components/clp-py-utils/clp_py_utils/clp_config.py b/components/clp-py-utils/clp_py_utils/clp_config.py index 939398d040..0e4477dd82 100644 --- a/components/clp-py-utils/clp_py_utils/clp_config.py +++ b/components/clp-py-utils/clp_py_utils/clp_config.py @@ -586,7 +586,9 @@ def validate_port(cls, field): @validator("results_metadata_collection_name") def validate_results_metadata_collection_name(cls, field): if "" == field: - raise ValueError(f"{WEBUI_COMPONENT_NAME}.results_metadata_collection_name cannot be empty.") + raise ValueError( + f"{WEBUI_COMPONENT_NAME}.results_metadata_collection_name cannot be empty." + ) return field From 2a74251c8c9f0e4a2f5a0ded8af22663f4469483 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Tue, 17 Jun 2025 18:37:27 -0400 Subject: [PATCH 10/36] refactor: Update WebUI documentation for setup and linting instructions --- .../dev-guide/components-log-viewer-webui.md | 98 --------------- docs/src/dev-guide/components-webui.md | 117 +++++++----------- docs/src/dev-guide/index.md | 1 - 3 files changed, 43 insertions(+), 173 deletions(-) delete mode 100644 docs/src/dev-guide/components-log-viewer-webui.md diff --git a/docs/src/dev-guide/components-log-viewer-webui.md b/docs/src/dev-guide/components-log-viewer-webui.md deleted file mode 100644 index 5496a46120..0000000000 --- a/docs/src/dev-guide/components-log-viewer-webui.md +++ /dev/null @@ -1,98 +0,0 @@ -# Log Viewer WebUI - -A webapp that allows us to serve the [log-viewer] and integrate it with CLP's [webui]. The webapp -currently consists of a [React] client and a [Fastify] server. - -## Requirements - -* Node.js v20 or higher - -## Setup - -Download the log-viewer's source code: - -```bash -task deps:log-viewer -``` - -Install the app's dependencies: - -```shell -cd components/log-viewer-webui -(cd client && npm i) -(cd server && npm i) -``` - -## Running - -To run the client during development: - -```shell -npm run start -``` - -To run the server during development: - -```shell -npm run dev -``` - -To run the server in production: - -```shell -npm run start -``` - -To run the server as a standalone Node.js process: - -```shell -npm run standalone -``` - -If you want to customize what host and port the server binds to, you can use the -environment variables in `components/log-viewer-webui/server/.env`. - -## Testing - -To run the server's unit tests: - -```shell -npm test -``` - -## Linting - -You can lint this component either as part of the entire project or as a standalone component. - -### Lint as part of the project - -To check for linting errors: - -```shell -task lint:check-js -``` - -To also fix linting errors (if applicable): - -```shell -task lint:fix-js -``` - -### Lint the component alone - -To check for linting errors: - -```shell -npm run lint:check -``` - -To also fix linting errors (if applicable): - -```shell -npm run lint:fix -``` - -[Fastify]: https://www.fastify.io/ -[log-viewer]: https://github.com/y-scope/yscope-log-viewer -[React]: https://reactjs.org/ -[webui]: components-webui.md diff --git a/docs/src/dev-guide/components-webui.md b/docs/src/dev-guide/components-webui.md index 9c880b4a1c..80267e7c1e 100644 --- a/docs/src/dev-guide/components-webui.md +++ b/docs/src/dev-guide/components-webui.md @@ -1,101 +1,70 @@ # WebUI -The web interface for the CLP package. +The web interface for the CLP package, which currently consists of a [React] client and a [Fastify] +server. It also serves the [log-viewer]. ## Requirements -* Node.js v14 for building and running the webui - * Meteor.js only [supports](https://docs.meteor.com/install#prereqs-node) Node.js versions >= v10 - and <= v14. -* Node.js v18 or higher for linting the webui +* Node.js v22 or higher * (Optional) [nvm (Node Version Manager)][nvm] to manage different versions of Node.js -* [Meteor.js](https://docs.meteor.com/install.html#installation) -## Install the dependencies +## Setup -```shell -meteor npm install -``` +1. Download the log-viewer's source code: -If you ever add a package manually to `package.json` or `package.json` changes -for some other reason, you should rerun this command. - -## Running in development - -The full functionality of the webui depends on other components in the CLP -package: - -1. Build the [CLP package](building-package) -2. Start the package: `/sbin/start-clp.sh` -3. Stop the webui instance started by the package: `/sbin/stop-clp.sh webui` -4. Start the webui using meteor (refer to `/etc/clp-config.yml` for the config values): - ```shell - MONGO_URL="mongodb://:/" \ - ROOT_URL="http://:" \ - CLP_DB_USER="" \ - CLP_DB_PASS="" \ - meteor --port --settings settings.json - ``` - - Here is an example based on the default `clp-config.yml`: - ```shell - # Please update `` accordingly. - - MONGO_URL="mongodb://localhost:27017/clp-query-results" \ - ROOT_URL="http://localhost:4000" \ - CLP_DB_USER="clp-user" \ - CLP_DB_PASS="" \ - meteor --port 4000 --settings settings.json - ``` -5. The Web UI should now be available at `http://:` - (e.g., http://localhost:4000). + ```shell + task deps:log-viewer + ``` -## Linting +2. Install the app's dependencies: -We enforce code quality and consistency across our project using [ESLint][eslint]. Due to specific -dependencies, linting this project requires Node.js v18 or higher. We offer two methods for -performing linting; you may choose either one according to your preference. + ```shell + cd components/log-viewer-webui + (cd client && npm i) + (cd server && npm i) + ``` -### Method 1: Run `Taskfile` tasks + If you add a package manually to `package.json` or `package.json` changes for some other reason, + you should rerun this command. -`Taskfile` tasks are available to automatically manage dependency setup and linting operations. +## Running -#### Checking for linting errors +1. To run the client during development: -```shell -task lint:check-js -``` - -This will run ESLint on the entire project's source code and report any linting errors. + ```shell + cd components/webui/client + npm run start + ``` -#### Automatically fixing linting errors +2. To run the server during development: -```shell -task lint:fix-js -``` + ```shell + cd components/webui/server + npm run dev + ``` -This command attempts to automatically fix any linting issues found in the project. + If you want to customize what host and port the server binds to, you can copy `.env` to + `.env.local` and modify the values there. The `.env.local` file will override settings in + `.env`. -### Method 2: IDE Integration +## Linting -To integrate ESLint into IDEs like WebStorm and VSCode, follow these steps: +You can lint this component either as part of the entire project. -1. Switch to Node.js v18 or higher - ```shell - # Install the latest node if not already installed - nvm install node +To check for linting errors: - # Switch to the latest node - nvm use node - ``` +```shell +task lint:check-js +``` -2. Install the latest ESLint shared config package. - * We use `--package-lock=false` and `--no-save` to avoid adding the package to - `package-lock.json` and `package.json`. +To also fix linting errors (if applicable): - ```shell - npm --package-lock=false install --no-save eslint-config-yscope@latest - ``` +```shell +task lint:fix-js +``` [eslint]: https://eslint.org/ [nvm]: https://github.com/nvm-sh/nvm +[Fastify]: https://www.fastify.io/ +[log-viewer]: https://github.com/y-scope/yscope-log-viewer +[React]: https://reactjs.org/ \ No newline at end of file diff --git a/docs/src/dev-guide/index.md b/docs/src/dev-guide/index.md index 841a7cf4b4..ae892e5707 100644 --- a/docs/src/dev-guide/index.md +++ b/docs/src/dev-guide/index.md @@ -63,7 +63,6 @@ contributing-linting :hidden: components-core/index -components-log-viewer-webui components-webui ::: From 1a7d10cfe7676a8aebcb479fe64d567d6ade95d1 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Thu, 19 Jun 2025 19:10:49 -0400 Subject: [PATCH 11/36] Correct outdated path - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- docs/src/dev-guide/components-webui.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/dev-guide/components-webui.md b/docs/src/dev-guide/components-webui.md index 80267e7c1e..d2d05a1221 100644 --- a/docs/src/dev-guide/components-webui.md +++ b/docs/src/dev-guide/components-webui.md @@ -19,7 +19,7 @@ server. It also serves the [log-viewer]. 2. Install the app's dependencies: ```shell - cd components/log-viewer-webui + cd components/webui (cd client && npm i) (cd server && npm i) ``` From 03435ffa93fa84416d1a96894fc60a047748a653 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Thu, 19 Jun 2025 19:14:03 -0400 Subject: [PATCH 12/36] Remove outdated linting introduction - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- docs/src/dev-guide/components-webui.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/src/dev-guide/components-webui.md b/docs/src/dev-guide/components-webui.md index d2d05a1221..bacaf384fd 100644 --- a/docs/src/dev-guide/components-webui.md +++ b/docs/src/dev-guide/components-webui.md @@ -49,8 +49,6 @@ server. It also serves the [log-viewer]. ## Linting -You can lint this component either as part of the entire project. - To check for linting errors: ```shell From b6f17e12bfed9dc5089b0921bd5f8033f4709b86 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Thu, 19 Jun 2025 19:14:29 -0400 Subject: [PATCH 13/36] Remove trailing space - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- docs/src/dev-guide/components-webui.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/dev-guide/components-webui.md b/docs/src/dev-guide/components-webui.md index bacaf384fd..be5a7502ee 100644 --- a/docs/src/dev-guide/components-webui.md +++ b/docs/src/dev-guide/components-webui.md @@ -44,7 +44,7 @@ server. It also serves the [log-viewer]. ``` If you want to customize what host and port the server binds to, you can copy `.env` to - `.env.local` and modify the values there. The `.env.local` file will override settings in + `.env.local` and modify the values there. The `.env.local` file will override settings in `.env`. ## Linting From 5a8ddea0e9b57c1bd14cd39ca6d10cdfd1cb16c6 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Thu, 19 Jun 2025 19:17:40 -0400 Subject: [PATCH 14/36] Improve clarity of docs - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- docs/src/dev-guide/components-webui.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/dev-guide/components-webui.md b/docs/src/dev-guide/components-webui.md index be5a7502ee..9337c88eda 100644 --- a/docs/src/dev-guide/components-webui.md +++ b/docs/src/dev-guide/components-webui.md @@ -25,7 +25,7 @@ server. It also serves the [log-viewer]. ``` If you add a package manually to `package.json` or `package.json` changes for some other reason, - you should rerun this command. + you should rerun the commands above. ## Running From 78c78d3f1627569ee0113260d7b801479be76cd2 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Thu, 19 Jun 2025 19:18:39 -0400 Subject: [PATCH 15/36] alphabetize --- docs/src/dev-guide/components-webui.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/dev-guide/components-webui.md b/docs/src/dev-guide/components-webui.md index 9337c88eda..91277e9708 100644 --- a/docs/src/dev-guide/components-webui.md +++ b/docs/src/dev-guide/components-webui.md @@ -62,7 +62,7 @@ task lint:fix-js ``` [eslint]: https://eslint.org/ -[nvm]: https://github.com/nvm-sh/nvm [Fastify]: https://www.fastify.io/ [log-viewer]: https://github.com/y-scope/yscope-log-viewer -[React]: https://reactjs.org/ \ No newline at end of file +[nvm]: https://github.com/nvm-sh/nvm +[React]: https://reactjs.org/ From 15a3cdb4400446381ae516b127e655a8ff996afa Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 21 Jun 2025 23:50:17 -0400 Subject: [PATCH 16/36] fix: Update .gitignore to ensure proper exclusion of node_modules directory --- components/webui/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/webui/.gitignore b/components/webui/.gitignore index b6448e2f62..45e0ae875c 100644 --- a/components/webui/.gitignore +++ b/components/webui/.gitignore @@ -1,2 +1,2 @@ # Dependencies -node_modules +node_modules/ From c220002afe010ee9f1764da1abe298241a560175 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 21 Jun 2025 23:51:27 -0400 Subject: [PATCH 17/36] Revert webui README --- components/webui/README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/components/webui/README.md b/components/webui/README.md index e052ec9d93..299000819d 100644 --- a/components/webui/README.md +++ b/components/webui/README.md @@ -1,9 +1,7 @@ -# Log Viewer WebUI +# WebUI -A webapp that allows us to serve the [log-viewer] and integrate it with CLP's [webui]. +The web interface for the CLP package. See the [docs] for more details. -[docs]: https://docs.yscope.com/clp/main/dev-guide/components-log-viewer-webui -[log-viewer]: https://github.com/y-scope/yscope-log-viewer -[webui]: ../webui +[docs]: https://docs.yscope.com/clp/main/dev-guide/components-webui From 7cae4faf0179790a9fdffe9aa80575b7b9c02a2e Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 21 Jun 2025 23:52:44 -0400 Subject: [PATCH 18/36] delete client/readme --- components/webui/client/README.md | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 components/webui/client/README.md diff --git a/components/webui/client/README.md b/components/webui/client/README.md deleted file mode 100644 index e425639b98..0000000000 --- a/components/webui/client/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Log Viewer WebUI Client - -### Start a Dev Server -Run: -```bash -npm run start -``` - -### Start a Dev Server for the New WebUI (Under Development) -Run: -```bash -npm run antd -``` From 4d3d11453de7e3728ac5f7e5bc027c3de31b286b Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 21 Jun 2025 23:53:15 -0400 Subject: [PATCH 19/36] refactor: Rename AntApp component to App for consistency --- components/webui/client/src/App.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/webui/client/src/App.tsx b/components/webui/client/src/App.tsx index 5435bae9d9..f1919eeb7f 100644 --- a/components/webui/client/src/App.tsx +++ b/components/webui/client/src/App.tsx @@ -10,8 +10,8 @@ import "@ant-design/v5-patch-for-react-19"; * * @return */ -const AntApp = () => { +const App = () => { return ; }; -export default AntApp; +export default App; From f269ee67812ad8c3194b657fd55f0605c246f87c Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 21 Jun 2025 23:54:13 -0400 Subject: [PATCH 20/36] fix: Remove unused eslint reference from components-webui.md --- docs/src/dev-guide/components-webui.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/src/dev-guide/components-webui.md b/docs/src/dev-guide/components-webui.md index 91277e9708..a34842b224 100644 --- a/docs/src/dev-guide/components-webui.md +++ b/docs/src/dev-guide/components-webui.md @@ -61,7 +61,6 @@ To also fix linting errors (if applicable): task lint:fix-js ``` -[eslint]: https://eslint.org/ [Fastify]: https://www.fastify.io/ [log-viewer]: https://github.com/y-scope/yscope-log-viewer [nvm]: https://github.com/nvm-sh/nvm From a34b35071db64ba724e05d94be5e474b12b99848 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Sat, 21 Jun 2025 23:58:52 -0400 Subject: [PATCH 21/36] add ConfigProvider back into the migrated App --- components/webui/client/src/App.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/components/webui/client/src/App.tsx b/components/webui/client/src/App.tsx index f1919eeb7f..a2044d95db 100644 --- a/components/webui/client/src/App.tsx +++ b/components/webui/client/src/App.tsx @@ -1,6 +1,9 @@ import {RouterProvider} from "react-router"; +import {ConfigProvider} from "antd"; + import router from "./router"; +import THEME_CONFIG from "./theme"; import "@ant-design/v5-patch-for-react-19"; @@ -11,7 +14,13 @@ import "@ant-design/v5-patch-for-react-19"; * @return */ const App = () => { - return ; + return ( + + + + ); }; export default App; From 8d4f8ca859a1a09c7d80ecd2673d16b90f6a5405 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Tue, 24 Jun 2025 16:10:54 -0400 Subject: [PATCH 22/36] Fix missing "s" in clp-config.yml - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- components/package-template/src/etc/clp-config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/package-template/src/etc/clp-config.yml b/components/package-template/src/etc/clp-config.yml index e9ee81d306..423741325a 100644 --- a/components/package-template/src/etc/clp-config.yml +++ b/components/package-template/src/etc/clp-config.yml @@ -61,7 +61,7 @@ #webui: # host: "localhost" # port: 4000 -# result_metadata_collection_name: "results-metadata" +# results_metadata_collection_name: "results-metadata" # ## Where archives should be output to #archive_output: From 34504b209f295eb6a3fd15b95e3ded0d5e15eca3 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Tue, 24 Jun 2025 16:26:35 -0400 Subject: [PATCH 23/36] alphabetize --- taskfile.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/taskfile.yaml b/taskfile.yaml index f29585e891..69d8241fd4 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -50,7 +50,6 @@ tasks: clean: cmds: - "rm -rf '{{.G_BUILD_DIR}}'" - - task: "clean-webui" - task: "clean-python-component" vars: COMPONENT: "clp-package-utils" @@ -60,6 +59,7 @@ tasks: - task: "clean-python-component" vars: COMPONENT: "job-orchestration" + - task: "clean-webui" clean-core: cmds: @@ -95,8 +95,8 @@ tasks: CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5" OUTPUT_DIR: "{{.G_PACKAGE_BUILD_DIR}}" sources: - - "{{.G_BUILD_DIR}}/webui.md5" - "{{.G_BUILD_DIR}}/package-venv.md5" + - "{{.G_BUILD_DIR}}/webui.md5" - "{{.G_CORE_COMPONENT_BUILD_DIR}}/clg" - "{{.G_CORE_COMPONENT_BUILD_DIR}}/clo" - "{{.G_CORE_COMPONENT_BUILD_DIR}}/clp" @@ -117,11 +117,11 @@ tasks: - "init" - "job-orchestration" - "package-venv" - - "webui" - task: "utils:checksum:validate" vars: CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] + - "webui" cmds: - "rm -rf '{{.OUTPUT_DIR}}'" - "rsync -a components/package-template/src/ '{{.OUTPUT_DIR}}'" @@ -274,11 +274,11 @@ tasks: generates: ["{{.CHECKSUM_FILE}}"] deps: - "init" - - "webui-node-modules" - task: "utils:checksum:validate" vars: CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] + - "webui-node-modules" cmds: - "rm -rf '{{.OUTPUT_DIR}}'" - "mkdir -p '{{.OUTPUT_DIR}}'" From c1579f47ef5f385b93ae7704a5f83db188f2f460 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Tue, 24 Jun 2025 18:44:29 -0400 Subject: [PATCH 24/36] Add SQL table names to settings for compression jobs and archives --- .../clp_package_utils/scripts/start_clp.py | 6 ++++++ components/webui/client/public/settings.json | 5 ++++- .../webui/client/src/pages/IngestPage/Details/sql.ts | 6 +++--- components/webui/client/src/pages/IngestPage/Jobs/sql.ts | 8 +++----- .../webui/client/src/pages/IngestPage/SpaceSavings/sql.ts | 8 +++----- components/webui/client/src/pages/IngestPage/sqlConfig.ts | 7 ------- components/webui/client/src/settings.ts | 3 +++ 7 files changed, 22 insertions(+), 21 deletions(-) diff --git a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py index 4b5dfb1187..d1051dc303 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py @@ -866,9 +866,15 @@ def start_webui( validate_webui_config(clp_config, client_settings_json_path, server_settings_json_path) # Read, update, and write back client's and server's settings.json + clp_db_connection_params = clp_config.database.get_clp_connection_params_and_type(True) + table_prefix = clp_db_connection_params["table_prefix"] + if StorageEngine.CLP_S == clp_config.package.storage_engine: + table_prefix = f"{table_prefix}{CLP_DEFAULT_DATASET_NAME}_" client_settings_json_updates = { "ClpStorageEngine": clp_config.package.storage_engine, "MongoDbSearchResultsMetadataCollectionName": clp_config.webui.results_metadata_collection_name, + "SqlDbClpArchivesTableName": f"{table_prefix}{ARCHIVES_TABLE_SUFFIX}", + "SqlDbClpFilesTableName": f"{table_prefix}{FILES_TABLE_SUFFIX}", } client_settings_json = read_and_update_settings_json( client_settings_json_path, client_settings_json_updates diff --git a/components/webui/client/public/settings.json b/components/webui/client/public/settings.json index 7c342746ff..9fbe68ce29 100644 --- a/components/webui/client/public/settings.json +++ b/components/webui/client/public/settings.json @@ -1,4 +1,7 @@ { "ClpStorageEngine": "clp", - "MongoDbSearchResultsMetadataCollectionName": "results-metadata" + "MongoDbSearchResultsMetadataCollectionName": "results-metadata", + "SqlDbCompressionJobsTableName": "compression_jobs", + "SqlDbClpArchivesTableName": "clp_archives", + "SqlDbClpFilesTableName": "clp_files" } diff --git a/components/webui/client/src/pages/IngestPage/Details/sql.ts b/components/webui/client/src/pages/IngestPage/Details/sql.ts index 790c33700f..67970d0ce9 100644 --- a/components/webui/client/src/pages/IngestPage/Details/sql.ts +++ b/components/webui/client/src/pages/IngestPage/Details/sql.ts @@ -1,9 +1,9 @@ import {Nullable} from "src/typings/common"; +import {settings} from "../../../settings"; import { CLP_ARCHIVES_TABLE_COLUMN_NAMES, CLP_FILES_TABLE_COLUMN_NAMES, - SQL_CONFIG, } from "../sqlConfig"; @@ -23,7 +23,7 @@ FROM SELECT MIN(${CLP_ARCHIVES_TABLE_COLUMN_NAMES.BEGIN_TIMESTAMP}) AS begin_timestamp, MAX(${CLP_ARCHIVES_TABLE_COLUMN_NAMES.END_TIMESTAMP}) AS end_timestamp - FROM ${SQL_CONFIG.SqlDbClpArchivesTableName} + FROM ${settings.SqlDbClpArchivesTableName} ) a, ( SELECT @@ -34,7 +34,7 @@ FROM 0 ) AS INTEGER ) AS num_messages - FROM ${SQL_CONFIG.SqlDbClpFilesTableName} + FROM ${settings.SqlDbClpFilesTableName} ) b; `; diff --git a/components/webui/client/src/pages/IngestPage/Jobs/sql.ts b/components/webui/client/src/pages/IngestPage/Jobs/sql.ts index e0256667c1..d66f41238f 100644 --- a/components/webui/client/src/pages/IngestPage/Jobs/sql.ts +++ b/components/webui/client/src/pages/IngestPage/Jobs/sql.ts @@ -1,9 +1,7 @@ import {Nullable} from "src/typings/common"; -import { - COMPRESSION_JOBS_TABLE_COLUMN_NAMES, - SQL_CONFIG, -} from "../sqlConfig"; +import {settings} from "../../../settings"; +import {COMPRESSION_JOBS_TABLE_COLUMN_NAMES} from "../sqlConfig"; /** @@ -23,7 +21,7 @@ SELECT ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.DURATION}, ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.UNCOMPRESSED_SIZE}, ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.COMPRESSED_SIZE} -FROM ${SQL_CONFIG.SqlDbCompressionJobsTableName} +FROM ${settings.SqlDbCompressionJobsTableName} WHERE ${COMPRESSION_JOBS_TABLE_COLUMN_NAMES.UPDATE_TIME} >= FROM_UNIXTIME(${lastUpdateTimestampSeconds}) - 1 ORDER BY _id DESC;`; diff --git a/components/webui/client/src/pages/IngestPage/SpaceSavings/sql.ts b/components/webui/client/src/pages/IngestPage/SpaceSavings/sql.ts index fbd61a657b..e3639071b8 100644 --- a/components/webui/client/src/pages/IngestPage/SpaceSavings/sql.ts +++ b/components/webui/client/src/pages/IngestPage/SpaceSavings/sql.ts @@ -1,7 +1,5 @@ -import { - CLP_ARCHIVES_TABLE_COLUMN_NAMES, - SQL_CONFIG, -} from "../sqlConfig"; +import {settings} from "../../../settings"; +import {CLP_ARCHIVES_TABLE_COLUMN_NAMES} from "../sqlConfig"; /** @@ -23,7 +21,7 @@ SELECT 0 ) AS UNSIGNED ) AS total_compressed_size -FROM ${SQL_CONFIG.SqlDbClpArchivesTableName} +FROM ${settings.SqlDbClpArchivesTableName} `; interface SpaceSavingsItem { diff --git a/components/webui/client/src/pages/IngestPage/sqlConfig.ts b/components/webui/client/src/pages/IngestPage/sqlConfig.ts index 1c8edbfdae..5b11a66c2e 100644 --- a/components/webui/client/src/pages/IngestPage/sqlConfig.ts +++ b/components/webui/client/src/pages/IngestPage/sqlConfig.ts @@ -1,12 +1,6 @@ import axios from "axios"; -enum SQL_CONFIG { - SqlDbClpArchivesTableName = "clp_archives", - SqlDbClpFilesTableName = "clp_files", - SqlDbCompressionJobsTableName = "compression_jobs", -} - /** * Column names for the `clp_archives` table. */ @@ -60,5 +54,4 @@ export { CLP_FILES_TABLE_COLUMN_NAMES, COMPRESSION_JOBS_TABLE_COLUMN_NAMES, querySql, - SQL_CONFIG, }; diff --git a/components/webui/client/src/settings.ts b/components/webui/client/src/settings.ts index 9dd14bf155..46e1e4cfcd 100644 --- a/components/webui/client/src/settings.ts +++ b/components/webui/client/src/settings.ts @@ -4,6 +4,9 @@ import axios from "axios"; type Settings = { MongoDbSearchResultsMetadataCollectionName: string; ClpStorageEngine: string; + SqlDbCompressionJobsTableName: string; + SqlDbClpArchivesTableName: string; + SqlDbClpFilesTableName: string; }; /** From 248347c404ddeaa33aab1b884b89c5d32c60a848 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Tue, 24 Jun 2025 18:52:36 -0400 Subject: [PATCH 25/36] Add SQL table name for compression jobs to client settings --- .../clp-package-utils/clp_package_utils/scripts/start_clp.py | 1 + 1 file changed, 1 insertion(+) diff --git a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py index d1051dc303..7e10888818 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py @@ -875,6 +875,7 @@ def start_webui( "MongoDbSearchResultsMetadataCollectionName": clp_config.webui.results_metadata_collection_name, "SqlDbClpArchivesTableName": f"{table_prefix}{ARCHIVES_TABLE_SUFFIX}", "SqlDbClpFilesTableName": f"{table_prefix}{FILES_TABLE_SUFFIX}", + "SqlDbCompressionJobsTableName": COMPRESSION_JOBS_TABLE_NAME } client_settings_json = read_and_update_settings_json( client_settings_json_path, client_settings_json_updates From ff626c7c0e9cb2a14c9fa29271008f7e40230e91 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Tue, 24 Jun 2025 18:52:41 -0400 Subject: [PATCH 26/36] Reorder SQL table names in settings for consistency --- components/webui/client/public/settings.json | 4 ++-- components/webui/client/src/settings.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/webui/client/public/settings.json b/components/webui/client/public/settings.json index 9fbe68ce29..ef9b741d3c 100644 --- a/components/webui/client/public/settings.json +++ b/components/webui/client/public/settings.json @@ -1,7 +1,7 @@ { "ClpStorageEngine": "clp", "MongoDbSearchResultsMetadataCollectionName": "results-metadata", - "SqlDbCompressionJobsTableName": "compression_jobs", "SqlDbClpArchivesTableName": "clp_archives", - "SqlDbClpFilesTableName": "clp_files" + "SqlDbClpFilesTableName": "clp_files", + "SqlDbCompressionJobsTableName": "compression_jobs" } diff --git a/components/webui/client/src/settings.ts b/components/webui/client/src/settings.ts index 46e1e4cfcd..041fe0ac15 100644 --- a/components/webui/client/src/settings.ts +++ b/components/webui/client/src/settings.ts @@ -2,11 +2,11 @@ import axios from "axios"; type Settings = { - MongoDbSearchResultsMetadataCollectionName: string; ClpStorageEngine: string; - SqlDbCompressionJobsTableName: string; + MongoDbSearchResultsMetadataCollectionName: string; SqlDbClpArchivesTableName: string; SqlDbClpFilesTableName: string; + SqlDbCompressionJobsTableName: string; }; /** From efed22a4057d8d9924c5fedff12d67aee5e3f0e0 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Tue, 24 Jun 2025 20:28:54 -0400 Subject: [PATCH 27/36] fix lint --- .../clp-package-utils/clp_package_utils/scripts/start_clp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py index 7e10888818..1bb6741a4c 100755 --- a/components/clp-package-utils/clp_package_utils/scripts/start_clp.py +++ b/components/clp-package-utils/clp_package_utils/scripts/start_clp.py @@ -875,7 +875,7 @@ def start_webui( "MongoDbSearchResultsMetadataCollectionName": clp_config.webui.results_metadata_collection_name, "SqlDbClpArchivesTableName": f"{table_prefix}{ARCHIVES_TABLE_SUFFIX}", "SqlDbClpFilesTableName": f"{table_prefix}{FILES_TABLE_SUFFIX}", - "SqlDbCompressionJobsTableName": COMPRESSION_JOBS_TABLE_NAME + "SqlDbCompressionJobsTableName": COMPRESSION_JOBS_TABLE_NAME, } client_settings_json = read_and_update_settings_json( client_settings_json_path, client_settings_json_updates From 1697d23ee44cf0f4d908c2419f9db0c8bf7978be Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 16:02:30 -0400 Subject: [PATCH 28/36] Add yscope-log-viewer to components/webui/.gitignore --- components/webui/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/components/webui/.gitignore b/components/webui/.gitignore index 45e0ae875c..2e86728fc3 100644 --- a/components/webui/.gitignore +++ b/components/webui/.gitignore @@ -1,2 +1,3 @@ # Dependencies node_modules/ +yscope-log-viewer/ From 1ec9ff03616ce8270ac95a18f6bf410f59ef0c45 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 16:03:10 -0400 Subject: [PATCH 29/36] Exclude node_modules from webui task sources in taskfile.yaml --- taskfile.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/taskfile.yaml b/taskfile.yaml index 69d8241fd4..cdc0321f79 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -270,6 +270,7 @@ tasks: - "{{.TASKFILE}}" - "**/*" - exclude: "**/dist/*" + - exclude: "**/node_modules/*" dir: "components/webui" generates: ["{{.CHECKSUM_FILE}}"] deps: From e2890f92a70ed9737a1dc2027a63740390c00ab3 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 16:04:48 -0400 Subject: [PATCH 30/36] remove vars group high-level comment - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- taskfile.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/taskfile.yaml b/taskfile.yaml index cdc0321f79..3a99ff77f4 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -358,7 +358,6 @@ tasks: webui-node-modules: internal: true vars: - # Directories SRC_DIR: "{{.TASKFILE_DIR}}/components/webui" CLIENT_OUTPUT_DIR: "{{.SRC_DIR}}/client/node_modules" LOG_VIEWER_OUTPUT_DIR: "{{.SRC_DIR}}/yscope-log-viewer/node_modules" From a6e46a60684f10ddd13f405244428da1bf096055 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 16:05:49 -0400 Subject: [PATCH 31/36] Simplify inline docs for task webui-node-modules - Apply suggestions from code review Co-authored-by: kirkrodrigues <2454684+kirkrodrigues@users.noreply.github.com> --- taskfile.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/taskfile.yaml b/taskfile.yaml index 3a99ff77f4..b763f8f24b 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -348,13 +348,12 @@ tasks: CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"] - # NOTE: The webui has four different node_modules directories: + # NOTE: The webui has four different node_modules directories, and we generate a checksum file for + # each one. The directories are: # * client # * server # * log-viewer submodule # * the top-level one we call "package" - # This means we have to create four different checksums. To allow tasks which depend on this task - # to only have to check one checksum file, we concatenate the four checksum files into one. webui-node-modules: internal: true vars: From b7a6e5146ce584e06f842a0042ab22ee841ef1da Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 17:09:43 -0400 Subject: [PATCH 32/36] update client title --- components/webui/client/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/webui/client/index.html b/components/webui/client/index.html index 962213f7f9..26b1691c70 100644 --- a/components/webui/client/index.html +++ b/components/webui/client/index.html @@ -4,7 +4,7 @@ Log Viewer Web UI - + From 1094e7fbbba4126e43afd0fee8295ae1625c236a Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 18:58:40 -0400 Subject: [PATCH 33/36] add exclusion patterns for temporary files in client/node_modules checksum tasks --- taskfile.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/taskfile.yaml b/taskfile.yaml index b763f8f24b..94820108c8 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -387,6 +387,9 @@ tasks: vars: CHECKSUM_FILE: "{{.G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.CLIENT_OUTPUT_DIR}}"] + EXCLUDE_PATTERNS: + - ".tmp" + - ".vite-temp" - task: "utils:checksum:validate" vars: CHECKSUM_FILE: "{{.G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE}}" @@ -410,6 +413,9 @@ tasks: vars: CHECKSUM_FILE: "{{.G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.CLIENT_OUTPUT_DIR}}"] + EXCLUDE_PATTERNS: + - ".tmp" + - ".vite-temp" - task: "utils:checksum:compute" vars: CHECKSUM_FILE: "{{.G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE}}" From 6a499af9eb27c6542027d13f06229e3a27bd5a34 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 19:03:23 -0400 Subject: [PATCH 34/36] update exclusion patterns for dist and node_modules in taskfile.yaml --- taskfile.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/taskfile.yaml b/taskfile.yaml index 94820108c8..bc9c9c60a0 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -269,8 +269,8 @@ tasks: - "{{.G_WEBUI_SERVER_NODE_MODULES_CHECKSUM_FILE}}" - "{{.TASKFILE}}" - "**/*" - - exclude: "**/dist/*" - - exclude: "**/node_modules/*" + - exclude: "**/dist/**/*" + - exclude: "**/node_modules/**/*" dir: "components/webui" generates: ["{{.CHECKSUM_FILE}}"] deps: From b8db62ed94b25155d8649b597e5867f7fad9281e Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 19:05:05 -0400 Subject: [PATCH 35/36] use anchors to dedup --- taskfile.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/taskfile.yaml b/taskfile.yaml index bc9c9c60a0..2019fbd336 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -387,7 +387,7 @@ tasks: vars: CHECKSUM_FILE: "{{.G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.CLIENT_OUTPUT_DIR}}"] - EXCLUDE_PATTERNS: + EXCLUDE_PATTERNS: &webui_node_modules_checksum_exclude_patterns - ".tmp" - ".vite-temp" - task: "utils:checksum:validate" @@ -413,9 +413,7 @@ tasks: vars: CHECKSUM_FILE: "{{.G_WEBUI_CLIENT_NODE_MODULES_CHECKSUM_FILE}}" INCLUDE_PATTERNS: ["{{.CLIENT_OUTPUT_DIR}}"] - EXCLUDE_PATTERNS: - - ".tmp" - - ".vite-temp" + EXCLUDE_PATTERNS: *webui_node_modules_checksum_exclude_patterns - task: "utils:checksum:compute" vars: CHECKSUM_FILE: "{{.G_WEBUI_LOG_VIEWER_NODE_MODULES_CHECKSUM_FILE}}" From 4ec47d30959e04dbfc112b016e067ea845ae5f30 Mon Sep 17 00:00:00 2001 From: Junhao Liao Date: Fri, 27 Jun 2025 19:07:12 -0400 Subject: [PATCH 36/36] use G_WEBUI_SRC_DIR to replace hardcoded strings --- taskfile.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/taskfile.yaml b/taskfile.yaml index 2019fbd336..82d04f456f 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -83,10 +83,10 @@ tasks: clean-webui: cmds: - - "rm -rf 'components/webui/client/node_modules'" - - "rm -rf 'components/webui/node_modules'" - - "rm -rf 'components/webui/server/node_modules'" - - "rm -rf 'components/webui/yscope-log-viewer/node_modules'" + - "rm -rf '{{.G_WEBUI_SRC_DIR}}/client/node_modules'" + - "rm -rf '{{.G_WEBUI_SRC_DIR}}/node_modules'" + - "rm -rf '{{.G_WEBUI_SRC_DIR}}/server/node_modules'" + - "rm -rf '{{.G_WEBUI_SRC_DIR}}/yscope-log-viewer/node_modules'" package: env: @@ -271,7 +271,7 @@ tasks: - "**/*" - exclude: "**/dist/**/*" - exclude: "**/node_modules/**/*" - dir: "components/webui" + dir: "{{.G_WEBUI_SRC_DIR}}" generates: ["{{.CHECKSUM_FILE}}"] deps: - "init"