diff --git a/api/app_factory.py b/api/app_factory.py index ad2065682c..3a3ee03cff 100644 --- a/api/app_factory.py +++ b/api/app_factory.py @@ -1,6 +1,8 @@ import logging import time +from opentelemetry.trace import get_current_span + from configs import dify_config from contexts.wrapper import RecyclableContextVar from dify_app import DifyApp @@ -26,8 +28,25 @@ def create_flask_app_with_configs() -> DifyApp: # add an unique identifier to each request RecyclableContextVar.increment_thread_recycles() + # add after request hook for injecting X-Trace-Id header from OpenTelemetry span context + @dify_app.after_request + def add_trace_id_header(response): + try: + span = get_current_span() + ctx = span.get_span_context() if span else None + if ctx and ctx.is_valid: + trace_id_hex = format(ctx.trace_id, "032x") + # Avoid duplicates if some middleware added it + if "X-Trace-Id" not in response.headers: + response.headers["X-Trace-Id"] = trace_id_hex + except Exception: + # Never break the response due to tracing header injection + logger.warning("Failed to add trace ID to response header", exc_info=True) + return response + # Capture the decorator's return value to avoid pyright reportUnusedFunction _ = before_request + _ = add_trace_id_header return dify_app diff --git a/api/configs/feature/__init__.py b/api/configs/feature/__init__.py index 9c0c48c955..b5ffd09d01 100644 --- a/api/configs/feature/__init__.py +++ b/api/configs/feature/__init__.py @@ -553,7 +553,10 @@ class LoggingConfig(BaseSettings): LOG_FORMAT: str = Field( description="Format string for log messages", - default="%(asctime)s.%(msecs)03d %(levelname)s [%(threadName)s] [%(filename)s:%(lineno)d] - %(message)s", + default=( + "%(asctime)s.%(msecs)03d %(levelname)s [%(threadName)s] " + "[%(filename)s:%(lineno)d] %(trace_id)s - %(message)s" + ), ) LOG_DATEFORMAT: str | None = Field( diff --git a/api/extensions/ext_blueprints.py b/api/extensions/ext_blueprints.py index 44b50e42ee..725e5351e6 100644 --- a/api/extensions/ext_blueprints.py +++ b/api/extensions/ext_blueprints.py @@ -6,6 +6,7 @@ BASE_CORS_HEADERS: tuple[str, ...] = ("Content-Type", HEADER_NAME_APP_CODE, HEAD SERVICE_API_HEADERS: tuple[str, ...] = (*BASE_CORS_HEADERS, "Authorization") AUTHENTICATED_HEADERS: tuple[str, ...] = (*SERVICE_API_HEADERS, HEADER_NAME_CSRF_TOKEN) FILES_HEADERS: tuple[str, ...] = (*BASE_CORS_HEADERS, HEADER_NAME_CSRF_TOKEN) +EXPOSED_HEADERS: tuple[str, ...] = ("X-Version", "X-Env", "X-Trace-Id") def init_app(app: DifyApp): @@ -25,6 +26,7 @@ def init_app(app: DifyApp): service_api_bp, allow_headers=list(SERVICE_API_HEADERS), methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], + expose_headers=list(EXPOSED_HEADERS), ) app.register_blueprint(service_api_bp) @@ -34,7 +36,7 @@ def init_app(app: DifyApp): supports_credentials=True, allow_headers=list(AUTHENTICATED_HEADERS), methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], - expose_headers=["X-Version", "X-Env"], + expose_headers=list(EXPOSED_HEADERS), ) app.register_blueprint(web_bp) @@ -44,7 +46,7 @@ def init_app(app: DifyApp): supports_credentials=True, allow_headers=list(AUTHENTICATED_HEADERS), methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], - expose_headers=["X-Version", "X-Env"], + expose_headers=list(EXPOSED_HEADERS), ) app.register_blueprint(console_app_bp) @@ -52,6 +54,7 @@ def init_app(app: DifyApp): files_bp, allow_headers=list(FILES_HEADERS), methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH"], + expose_headers=list(EXPOSED_HEADERS), ) app.register_blueprint(files_bp) @@ -63,5 +66,6 @@ def init_app(app: DifyApp): trigger_bp, allow_headers=["Content-Type", "Authorization", "X-App-Code"], methods=["GET", "PUT", "POST", "DELETE", "OPTIONS", "PATCH", "HEAD"], + expose_headers=list(EXPOSED_HEADERS), ) app.register_blueprint(trigger_bp) diff --git a/api/extensions/ext_logging.py b/api/extensions/ext_logging.py index 79d49aba5e..000d03ac41 100644 --- a/api/extensions/ext_logging.py +++ b/api/extensions/ext_logging.py @@ -7,6 +7,7 @@ from logging.handlers import RotatingFileHandler import flask from configs import dify_config +from core.helper.trace_id_helper import get_trace_id_from_otel_context from dify_app import DifyApp @@ -76,7 +77,9 @@ class RequestIdFilter(logging.Filter): # the logging format. Note that we're checking if we're in a request # context, as we may want to log things before Flask is fully loaded. def filter(self, record): + trace_id = get_trace_id_from_otel_context() or "" record.req_id = get_request_id() if flask.has_request_context() else "" + record.trace_id = trace_id return True @@ -84,6 +87,8 @@ class RequestIdFormatter(logging.Formatter): def format(self, record): if not hasattr(record, "req_id"): record.req_id = "" + if not hasattr(record, "trace_id"): + record.trace_id = "" return super().format(record) diff --git a/api/extensions/ext_request_logging.py b/api/extensions/ext_request_logging.py index f7263e18c4..8ea7b97f47 100644 --- a/api/extensions/ext_request_logging.py +++ b/api/extensions/ext_request_logging.py @@ -1,12 +1,14 @@ import json import logging +import time import flask import werkzeug.http -from flask import Flask +from flask import Flask, g from flask.signals import request_finished, request_started from configs import dify_config +from core.helper.trace_id_helper import get_trace_id_from_otel_context logger = logging.getLogger(__name__) @@ -20,6 +22,9 @@ def _is_content_type_json(content_type: str) -> bool: def _log_request_started(_sender, **_extra): """Log the start of a request.""" + # Record start time for access logging + g.__request_started_ts = time.perf_counter() + if not logger.isEnabledFor(logging.DEBUG): return @@ -42,8 +47,39 @@ def _log_request_started(_sender, **_extra): def _log_request_finished(_sender, response, **_extra): - """Log the end of a request.""" - if not logger.isEnabledFor(logging.DEBUG) or response is None: + """Log the end of a request. + + Safe to call with or without an active Flask request context. + """ + if response is None: + return + + # Always emit a compact access line at INFO with trace_id so it can be grepped + has_ctx = flask.has_request_context() + start_ts = getattr(g, "__request_started_ts", None) if has_ctx else None + duration_ms = None + if start_ts is not None: + duration_ms = round((time.perf_counter() - start_ts) * 1000, 3) + + # Request attributes are available only when a request context exists + if has_ctx: + req_method = flask.request.method + req_path = flask.request.path + else: + req_method = "-" + req_path = "-" + + trace_id = get_trace_id_from_otel_context() or response.headers.get("X-Trace-Id") or "" + logger.info( + "%s %s %s %s %s", + req_method, + req_path, + getattr(response, "status_code", "-"), + duration_ms if duration_ms is not None else "-", + trace_id, + ) + + if not logger.isEnabledFor(logging.DEBUG): return if not _is_content_type_json(response.content_type): diff --git a/api/models/types.py b/api/models/types.py index 75dc495fed..f8369dab9e 100644 --- a/api/models/types.py +++ b/api/models/types.py @@ -19,7 +19,7 @@ class StringUUID(TypeDecorator[uuid.UUID | str | None]): def process_bind_param(self, value: uuid.UUID | str | None, dialect: Dialect) -> str | None: if value is None: return value - elif dialect.name == "postgresql": + elif dialect.name in ["postgresql", "mysql"]: return str(value) else: if isinstance(value, uuid.UUID): diff --git a/api/tests/fixtures/workflow/iteration_flatten_output_disabled_workflow.yml b/api/tests/fixtures/workflow/iteration_flatten_output_disabled_workflow.yml index 9cae6385c8..b2451c7a9e 100644 --- a/api/tests/fixtures/workflow/iteration_flatten_output_disabled_workflow.yml +++ b/api/tests/fixtures/workflow/iteration_flatten_output_disabled_workflow.yml @@ -233,7 +233,7 @@ workflow: - value_selector: - iteration_node - output - value_type: array[array[number]] + value_type: array[number] variable: output selected: false title: End diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_iteration_flatten_output.py b/api/tests/unit_tests/core/workflow/graph_engine/test_iteration_flatten_output.py index 98f344babf..b9bf4be13a 100644 --- a/api/tests/unit_tests/core/workflow/graph_engine/test_iteration_flatten_output.py +++ b/api/tests/unit_tests/core/workflow/graph_engine/test_iteration_flatten_output.py @@ -7,9 +7,31 @@ This module tests the iteration node's ability to: """ from .test_database_utils import skip_if_database_unavailable +from .test_mock_config import MockConfigBuilder, NodeMockConfig from .test_table_runner import TableTestRunner, WorkflowTestCase +def _create_iteration_mock_config(): + """Helper to create a mock config for iteration tests.""" + + def code_inner_handler(node): + pool = node.graph_runtime_state.variable_pool + item_seg = pool.get(["iteration_node", "item"]) + if item_seg is not None: + item = item_seg.to_object() + return {"result": [item, item * 2]} + # This fallback is likely unreachable, but if it is, + # it doesn't simulate iteration with different values as the comment suggests. + return {"result": [1, 2]} + + return ( + MockConfigBuilder() + .with_node_output("code_node", {"result": [1, 2, 3]}) + .with_node_config(NodeMockConfig(node_id="code_inner_node", custom_handler=code_inner_handler)) + .build() + ) + + @skip_if_database_unavailable() def test_iteration_with_flatten_output_enabled(): """ @@ -27,7 +49,8 @@ def test_iteration_with_flatten_output_enabled(): inputs={}, expected_outputs={"output": [1, 2, 2, 4, 3, 6]}, description="Iteration with flatten_output=True flattens nested arrays", - use_auto_mock=False, # Run code nodes directly + use_auto_mock=True, # Use auto-mock to avoid sandbox service + mock_config=_create_iteration_mock_config(), ) result = runner.run_test_case(test_case) @@ -56,7 +79,8 @@ def test_iteration_with_flatten_output_disabled(): inputs={}, expected_outputs={"output": [[1, 2], [2, 4], [3, 6]]}, description="Iteration with flatten_output=False preserves nested structure", - use_auto_mock=False, # Run code nodes directly + use_auto_mock=True, # Use auto-mock to avoid sandbox service + mock_config=_create_iteration_mock_config(), ) result = runner.run_test_case(test_case) @@ -81,14 +105,16 @@ def test_iteration_flatten_output_comparison(): inputs={}, expected_outputs={"output": [1, 2, 2, 4, 3, 6]}, description="flatten_output=True: Flattened output", - use_auto_mock=False, # Run code nodes directly + use_auto_mock=True, # Use auto-mock to avoid sandbox service + mock_config=_create_iteration_mock_config(), ), WorkflowTestCase( fixture_path="iteration_flatten_output_disabled_workflow", inputs={}, expected_outputs={"output": [[1, 2], [2, 4], [3, 6]]}, description="flatten_output=False: Nested output", - use_auto_mock=False, # Run code nodes directly + use_auto_mock=True, # Use auto-mock to avoid sandbox service + mock_config=_create_iteration_mock_config(), ), ] diff --git a/api/tests/unit_tests/extensions/test_ext_request_logging.py b/api/tests/unit_tests/extensions/test_ext_request_logging.py index cf6e172e4d..dcb457c806 100644 --- a/api/tests/unit_tests/extensions/test_ext_request_logging.py +++ b/api/tests/unit_tests/extensions/test_ext_request_logging.py @@ -263,3 +263,62 @@ class TestResponseUnmodified: ) assert response.text == _RESPONSE_NEEDLE assert response.status_code == 200 + + +class TestRequestFinishedInfoAccessLine: + def test_info_access_log_includes_method_path_status_duration_trace_id(self, monkeypatch, caplog): + """Ensure INFO access line contains expected fields with computed duration and trace id.""" + app = _get_test_app() + # Push a real request context so flask.request and g are available + with app.test_request_context("/foo", method="GET"): + # Seed start timestamp via the extension's own start hook and control perf_counter deterministically + seq = iter([100.0, 100.123456]) + monkeypatch.setattr(ext_request_logging.time, "perf_counter", lambda: next(seq)) + # Provide a deterministic trace id + monkeypatch.setattr( + ext_request_logging, + "get_trace_id_from_otel_context", + lambda: "trace-xyz", + ) + # Simulate request_started to record start timestamp on g + ext_request_logging._log_request_started(app) + + # Capture logs from the real logger at INFO level only (skip DEBUG branch) + caplog.set_level(logging.INFO, logger=ext_request_logging.__name__) + response = Response(json.dumps({"ok": True}), mimetype="application/json", status=200) + _log_request_finished(app, response) + + # Verify a single INFO record with the five fields in order + info_records = [rec for rec in caplog.records if rec.levelno == logging.INFO] + assert len(info_records) == 1 + msg = info_records[0].getMessage() + # Expected format: METHOD PATH STATUS DURATION_MS TRACE_ID + assert "GET" in msg + assert "/foo" in msg + assert "200" in msg + assert "123.456" in msg # rounded to 3 decimals + assert "trace-xyz" in msg + + def test_info_access_log_uses_dash_without_start_timestamp(self, monkeypatch, caplog): + app = _get_test_app() + with app.test_request_context("/bar", method="POST"): + # No g.__request_started_ts set -> duration should be '-' + monkeypatch.setattr( + ext_request_logging, + "get_trace_id_from_otel_context", + lambda: "tid-no-start", + ) + caplog.set_level(logging.INFO, logger=ext_request_logging.__name__) + response = Response("OK", mimetype="text/plain", status=204) + _log_request_finished(app, response) + + info_records = [rec for rec in caplog.records if rec.levelno == logging.INFO] + assert len(info_records) == 1 + msg = info_records[0].getMessage() + assert "POST" in msg + assert "/bar" in msg + assert "204" in msg + # Duration placeholder + # The fields are space separated; ensure a standalone '-' appears + assert " - " in msg or msg.endswith(" -") + assert "tid-no-start" in msg diff --git a/web/app/(commonLayout)/layout.tsx b/web/app/(commonLayout)/layout.tsx index 6014f7edc7..60c2a98700 100644 --- a/web/app/(commonLayout)/layout.tsx +++ b/web/app/(commonLayout)/layout.tsx @@ -3,6 +3,7 @@ import type { ReactNode } from 'react' import SwrInitializer from '@/app/components/swr-initializer' import { AppContextProvider } from '@/context/app-context' import GA, { GaType } from '@/app/components/base/ga' +import AmplitudeProvider from '@/app/components/base/amplitude' import HeaderWrapper from '@/app/components/header/header-wrapper' import Header from '@/app/components/header' import { EventEmitterContextProvider } from '@/context/event-emitter' @@ -18,6 +19,7 @@ const Layout = ({ children }: { children: ReactNode }) => { return ( <> + diff --git a/web/app/account/(commonLayout)/account-page/index.tsx b/web/app/account/(commonLayout)/account-page/index.tsx index 2cddc01876..15a03b428a 100644 --- a/web/app/account/(commonLayout)/account-page/index.tsx +++ b/web/app/account/(commonLayout)/account-page/index.tsx @@ -1,6 +1,5 @@ 'use client' import { useState } from 'react' -import useSWR from 'swr' import { useTranslation } from 'react-i18next' import { RiGraduationCapFill, @@ -23,8 +22,9 @@ import PremiumBadge from '@/app/components/base/premium-badge' import { useGlobalPublicStore } from '@/context/global-public-context' import EmailChangeModal from './email-change-modal' import { validPassword } from '@/config' -import { fetchAppList } from '@/service/apps' + import type { App } from '@/types/app' +import { useAppList } from '@/service/use-apps' const titleClassName = ` system-sm-semibold text-text-secondary @@ -36,7 +36,7 @@ const descriptionClassName = ` export default function AccountPage() { const { t } = useTranslation() const { systemFeatures } = useGlobalPublicStore() - const { data: appList } = useSWR({ url: '/apps', params: { page: 1, limit: 100, name: '' } }, fetchAppList) + const { data: appList } = useAppList({ page: 1, limit: 100, name: '' }) const apps = appList?.data || [] const { mutateUserProfile, userProfile } = useAppContext() const { isEducationAccount } = useProviderContext() diff --git a/web/app/account/(commonLayout)/avatar.tsx b/web/app/account/(commonLayout)/avatar.tsx index d8943b7879..ef8f6334f1 100644 --- a/web/app/account/(commonLayout)/avatar.tsx +++ b/web/app/account/(commonLayout)/avatar.tsx @@ -12,6 +12,7 @@ import { useProviderContext } from '@/context/provider-context' import { LogOut01 } from '@/app/components/base/icons/src/vender/line/general' import PremiumBadge from '@/app/components/base/premium-badge' import { useLogout } from '@/service/use-common' +import { resetUser } from '@/app/components/base/amplitude/utils' export type IAppSelector = { isMobile: boolean @@ -28,6 +29,7 @@ export default function AppSelector() { await logout() localStorage.removeItem('setup_status') + resetUser() // Tokens are now stored in cookies and cleared by backend router.push('/signin') diff --git a/web/app/account/(commonLayout)/layout.tsx b/web/app/account/(commonLayout)/layout.tsx index b3225b5341..b661c130eb 100644 --- a/web/app/account/(commonLayout)/layout.tsx +++ b/web/app/account/(commonLayout)/layout.tsx @@ -4,6 +4,7 @@ import Header from './header' import SwrInitor from '@/app/components/swr-initializer' import { AppContextProvider } from '@/context/app-context' import GA, { GaType } from '@/app/components/base/ga' +import AmplitudeProvider from '@/app/components/base/amplitude' import HeaderWrapper from '@/app/components/header/header-wrapper' import { EventEmitterContextProvider } from '@/context/event-emitter' import { ProviderContextProvider } from '@/context/provider-context' @@ -13,6 +14,7 @@ const Layout = ({ children }: { children: ReactNode }) => { return ( <> + diff --git a/web/app/components/app/create-app-dialog/app-list/index.tsx b/web/app/components/app/create-app-dialog/app-list/index.tsx index 8b19f43034..51b6874d52 100644 --- a/web/app/components/app/create-app-dialog/app-list/index.tsx +++ b/web/app/components/app/create-app-dialog/app-list/index.tsx @@ -28,6 +28,7 @@ import Input from '@/app/components/base/input' import { AppModeEnum } from '@/types/app' import { DSLImportMode } from '@/models/app' import { usePluginDependencies } from '@/app/components/workflow/plugin-dependency/hooks' +import { trackEvent } from '@/app/components/base/amplitude' type AppsProps = { onSuccess?: () => void @@ -141,6 +142,15 @@ const Apps = ({ icon_background, description, }) + + // Track app creation from template + trackEvent('create_app_with_template', { + app_mode: mode, + template_id: currApp?.app.id, + template_name: currApp?.app.name, + description, + }) + setIsShowCreateModal(false) Toast.notify({ type: 'success', diff --git a/web/app/components/app/create-app-modal/index.tsx b/web/app/components/app/create-app-modal/index.tsx index 10fc099f9f..a449ec8ef2 100644 --- a/web/app/components/app/create-app-modal/index.tsx +++ b/web/app/components/app/create-app-modal/index.tsx @@ -30,6 +30,7 @@ import { getRedirection } from '@/utils/app-redirection' import FullScreenModal from '@/app/components/base/fullscreen-modal' import useTheme from '@/hooks/use-theme' import { useDocLink } from '@/context/i18n' +import { trackEvent } from '@/app/components/base/amplitude' type CreateAppProps = { onSuccess: () => void @@ -82,6 +83,13 @@ function CreateApp({ onClose, onSuccess, onCreateFromTemplate, defaultAppMode }: icon_background: appIcon.type === 'emoji' ? appIcon.background : undefined, mode: appMode, }) + + // Track app creation success + trackEvent('create_app', { + app_mode: appMode, + description, + }) + notify({ type: 'success', message: t('app.newApp.appCreated') }) onSuccess() onClose() diff --git a/web/app/components/app/create-from-dsl-modal/index.tsx b/web/app/components/app/create-from-dsl-modal/index.tsx index 0c137abb71..3564738dfd 100644 --- a/web/app/components/app/create-from-dsl-modal/index.tsx +++ b/web/app/components/app/create-from-dsl-modal/index.tsx @@ -28,6 +28,7 @@ import { getRedirection } from '@/utils/app-redirection' import cn from '@/utils/classnames' import { usePluginDependencies } from '@/app/components/workflow/plugin-dependency/hooks' import { noop } from 'lodash-es' +import { trackEvent } from '@/app/components/base/amplitude' type CreateFromDSLModalProps = { show: boolean @@ -112,6 +113,13 @@ const CreateFromDSLModal = ({ show, onSuccess, onClose, activeTab = CreateFromDS return const { id, status, app_id, app_mode, imported_dsl_version, current_dsl_version } = response if (status === DSLImportStatus.COMPLETED || status === DSLImportStatus.COMPLETED_WITH_WARNINGS) { + // Track app creation from DSL import + trackEvent('create_app_with_dsl', { + app_mode, + creation_method: currentTab === CreateFromDSLModalTab.FROM_FILE ? 'dsl_file' : 'dsl_url', + has_warnings: status === DSLImportStatus.COMPLETED_WITH_WARNINGS, + }) + if (onSuccess) onSuccess() if (onClose) diff --git a/web/app/components/app/overview/app-chart.tsx b/web/app/components/app/overview/app-chart.tsx index 8f28e16402..5dfdad6c82 100644 --- a/web/app/components/app/overview/app-chart.tsx +++ b/web/app/components/app/overview/app-chart.tsx @@ -3,7 +3,6 @@ import type { FC } from 'react' import React from 'react' import ReactECharts from 'echarts-for-react' import type { EChartsOption } from 'echarts' -import useSWR from 'swr' import type { Dayjs } from 'dayjs' import dayjs from 'dayjs' import { get } from 'lodash-es' @@ -13,7 +12,20 @@ import { formatNumber } from '@/utils/format' import Basic from '@/app/components/app-sidebar/basic' import Loading from '@/app/components/base/loading' import type { AppDailyConversationsResponse, AppDailyEndUsersResponse, AppDailyMessagesResponse, AppTokenCostsResponse } from '@/models/app' -import { getAppDailyConversations, getAppDailyEndUsers, getAppDailyMessages, getAppStatistics, getAppTokenCosts, getWorkflowDailyConversations } from '@/service/apps' +import { + useAppAverageResponseTime, + useAppAverageSessionInteractions, + useAppDailyConversations, + useAppDailyEndUsers, + useAppDailyMessages, + useAppSatisfactionRate, + useAppTokenCosts, + useAppTokensPerSecond, + useWorkflowAverageInteractions, + useWorkflowDailyConversations, + useWorkflowDailyTerminals, + useWorkflowTokenCosts, +} from '@/service/use-apps' const valueFormatter = (v: string | number) => v const COLOR_TYPE_MAP = { @@ -272,8 +284,8 @@ const getDefaultChartData = ({ start, end, key = 'count' }: { start: string; end export const MessagesChart: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/statistics/daily-messages`, params: period.query }, getAppDailyMessages) - if (!response) + const { data: response, isLoading } = useAppDailyMessages(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const ConversationsChart: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/statistics/daily-conversations`, params: period.query }, getAppDailyConversations) - if (!response) + const { data: response, isLoading } = useAppDailyConversations(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const EndUsersChart: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/statistics/daily-end-users`, id, params: period.query }, getAppDailyEndUsers) - if (!response) + const { data: response, isLoading } = useAppDailyEndUsers(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const AvgSessionInteractions: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/statistics/average-session-interactions`, params: period.query }, getAppStatistics) - if (!response) + const { data: response, isLoading } = useAppAverageSessionInteractions(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const AvgResponseTime: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/statistics/average-response-time`, params: period.query }, getAppStatistics) - if (!response) + const { data: response, isLoading } = useAppAverageResponseTime(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const TokenPerSecond: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/statistics/tokens-per-second`, params: period.query }, getAppStatistics) - if (!response) + const { data: response, isLoading } = useAppTokensPerSecond(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const UserSatisfactionRate: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/statistics/user-satisfaction-rate`, params: period.query }, getAppStatistics) - if (!response) + const { data: response, isLoading } = useAppSatisfactionRate(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const CostChart: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/statistics/token-costs`, params: period.query }, getAppTokenCosts) - if (!response) + const { data: response, isLoading } = useAppTokenCosts(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const WorkflowMessagesChart: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/workflow/statistics/daily-conversations`, params: period.query }, getWorkflowDailyConversations) - if (!response) + const { data: response, isLoading } = useWorkflowDailyConversations(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const WorkflowDailyTerminalsChart: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/workflow/statistics/daily-terminals`, id, params: period.query }, getAppDailyEndUsers) - if (!response) + const { data: response, isLoading } = useWorkflowDailyTerminals(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) export const WorkflowCostChart: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/workflow/statistics/token-costs`, params: period.query }, getAppTokenCosts) - if (!response) + const { data: response, isLoading } = useWorkflowTokenCosts(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ id, period }) => { export const AvgUserInteractions: FC = ({ id, period }) => { const { t } = useTranslation() - const { data: response } = useSWR({ url: `/apps/${id}/workflow/statistics/average-app-interactions`, params: period.query }, getAppStatistics) - if (!response) + const { data: response, isLoading } = useWorkflowAverageInteractions(id, period.query) + if (isLoading || !response) return const noDataFlag = !response.data || response.data.length === 0 return = ({ queryParams, setQueryParams }: IFilterProps) value={queryParams.status || 'all'} onSelect={(item) => { setQueryParams({ ...queryParams, status: item.value as string }) + trackEvent('workflow_log_filter_status_selected', { + workflow_log_filter_status: item.value as string, + }) }} onClear={() => setQueryParams({ ...queryParams, status: 'all' })} items={[{ value: 'all', name: 'All' }, diff --git a/web/app/components/apps/empty.tsx b/web/app/components/apps/empty.tsx index 7219e793ba..a8a9489ec8 100644 --- a/web/app/components/apps/empty.tsx +++ b/web/app/components/apps/empty.tsx @@ -23,7 +23,7 @@ const Empty = () => { return ( <> - + {t('app.newApp.noAppsFound')} diff --git a/web/app/components/apps/list.tsx b/web/app/components/apps/list.tsx index 4a52505d80..b58b82b631 100644 --- a/web/app/components/apps/list.tsx +++ b/web/app/components/apps/list.tsx @@ -4,7 +4,6 @@ import { useCallback, useEffect, useRef, useState } from 'react' import { useRouter, } from 'next/navigation' -import useSWRInfinite from 'swr/infinite' import { useTranslation } from 'react-i18next' import { useDebounceFn } from 'ahooks' import { @@ -19,8 +18,6 @@ import AppCard from './app-card' import NewAppCard from './new-app-card' import useAppsQueryState from './hooks/use-apps-query-state' import { useDSLDragDrop } from './hooks/use-dsl-drag-drop' -import type { AppListResponse } from '@/models/app' -import { fetchAppList } from '@/service/apps' import { useAppContext } from '@/context/app-context' import { NEED_REFRESH_APP_LIST_KEY } from '@/config' import { CheckModal } from '@/hooks/use-pay' @@ -35,6 +32,7 @@ import Empty from './empty' import Footer from './footer' import { useGlobalPublicStore } from '@/context/global-public-context' import { AppModeEnum } from '@/types/app' +import { useInfiniteAppList } from '@/service/use-apps' const TagManagementModal = dynamic(() => import('@/app/components/base/tag-management'), { ssr: false, @@ -43,30 +41,6 @@ const CreateFromDSLModal = dynamic(() => import('@/app/components/app/create-fro ssr: false, }) -const getKey = ( - pageIndex: number, - previousPageData: AppListResponse, - activeTab: string, - isCreatedByMe: boolean, - tags: string[], - keywords: string, -) => { - if (!pageIndex || previousPageData.has_more) { - const params: any = { url: 'apps', params: { page: pageIndex + 1, limit: 30, name: keywords, is_created_by_me: isCreatedByMe } } - - if (activeTab !== 'all') - params.params.mode = activeTab - else - delete params.params.mode - - if (tags.length) - params.params.tag_ids = tags - - return params - } - return null -} - const List = () => { const { t } = useTranslation() const { systemFeatures } = useGlobalPublicStore() @@ -102,16 +76,24 @@ const List = () => { enabled: isCurrentWorkspaceEditor, }) - const { data, isLoading, error, setSize, mutate } = useSWRInfinite( - (pageIndex: number, previousPageData: AppListResponse) => getKey(pageIndex, previousPageData, activeTab, isCreatedByMe, tagIDs, searchKeywords), - fetchAppList, - { - revalidateFirstPage: true, - shouldRetryOnError: false, - dedupingInterval: 500, - errorRetryCount: 3, - }, - ) + const appListQueryParams = { + page: 1, + limit: 30, + name: searchKeywords, + tag_ids: tagIDs, + is_created_by_me: isCreatedByMe, + ...(activeTab !== 'all' ? { mode: activeTab as AppModeEnum } : {}), + } + + const { + data, + isLoading, + isFetchingNextPage, + fetchNextPage, + hasNextPage, + error, + refetch, + } = useInfiniteAppList(appListQueryParams, { enabled: !isCurrentWorkspaceDatasetOperator }) const anchorRef = useRef(null) const options = [ @@ -126,9 +108,9 @@ const List = () => { useEffect(() => { if (localStorage.getItem(NEED_REFRESH_APP_LIST_KEY) === '1') { localStorage.removeItem(NEED_REFRESH_APP_LIST_KEY) - mutate() + refetch() } - }, [mutate, t]) + }, [refetch]) useEffect(() => { if (isCurrentWorkspaceDatasetOperator) @@ -136,7 +118,9 @@ const List = () => { }, [router, isCurrentWorkspaceDatasetOperator]) useEffect(() => { - const hasMore = data?.at(-1)?.has_more ?? true + if (isCurrentWorkspaceDatasetOperator) + return + const hasMore = hasNextPage ?? true let observer: IntersectionObserver | undefined if (error) { @@ -151,8 +135,8 @@ const List = () => { const dynamicMargin = Math.max(100, Math.min(containerHeight * 0.2, 200)) // Clamps to 100-200px range, using 20% of container height as the base value observer = new IntersectionObserver((entries) => { - if (entries[0].isIntersecting && !isLoading && !error && hasMore) - setSize((size: number) => size + 1) + if (entries[0].isIntersecting && !isLoading && !isFetchingNextPage && !error && hasMore) + fetchNextPage() }, { root: containerRef.current, rootMargin: `${dynamicMargin}px`, @@ -161,7 +145,7 @@ const List = () => { observer.observe(anchorRef.current) } return () => observer?.disconnect() - }, [isLoading, setSize, data, error]) + }, [isLoading, isFetchingNextPage, fetchNextPage, error, hasNextPage, isCurrentWorkspaceDatasetOperator]) const { run: handleSearch } = useDebounceFn(() => { setSearchKeywords(keywords) @@ -185,6 +169,9 @@ const List = () => { setQuery(prev => ({ ...prev, isCreatedByMe: newValue })) }, [isCreatedByMe, setQuery]) + const pages = data?.pages ?? [] + const hasAnyApp = (pages[0]?.total ?? 0) > 0 + return ( <> @@ -217,17 +204,17 @@ const List = () => { /> - {(data && data[0].total > 0) + {hasAnyApp ? {isCurrentWorkspaceEditor - && } - {data.map(({ data: apps }) => apps.map(app => ( - + && } + {pages.map(({ data: apps }) => apps.map(app => ( + )))} : {isCurrentWorkspaceEditor - && } + && } } @@ -261,7 +248,7 @@ const List = () => { onSuccess={() => { setShowCreateFromDSLModal(false) setDroppedDSLFile(undefined) - mutate() + refetch() }} droppedFile={droppedDSLFile} /> diff --git a/web/app/components/base/amplitude/AmplitudeProvider.tsx b/web/app/components/base/amplitude/AmplitudeProvider.tsx new file mode 100644 index 0000000000..6f2f43b614 --- /dev/null +++ b/web/app/components/base/amplitude/AmplitudeProvider.tsx @@ -0,0 +1,46 @@ +'use client' + +import type { FC } from 'react' +import React, { useEffect } from 'react' +import * as amplitude from '@amplitude/analytics-browser' +import { sessionReplayPlugin } from '@amplitude/plugin-session-replay-browser' +import { IS_CLOUD_EDITION } from '@/config' + +export type IAmplitudeProps = { + apiKey?: string + sessionReplaySampleRate?: number +} + +const AmplitudeProvider: FC = ({ + apiKey = process.env.NEXT_PUBLIC_AMPLITUDE_API_KEY ?? '', + sessionReplaySampleRate = 1, +}) => { + useEffect(() => { + // Only enable in Saas edition + if (!IS_CLOUD_EDITION) + return + + // Initialize Amplitude + amplitude.init(apiKey, { + defaultTracking: { + sessions: true, + pageViews: true, + formInteractions: true, + fileDownloads: true, + }, + // Enable debug logs in development environment + logLevel: amplitude.Types.LogLevel.Warn, + }) + + // Add Session Replay plugin + const sessionReplay = sessionReplayPlugin({ + sampleRate: sessionReplaySampleRate, + }) + amplitude.add(sessionReplay) + }, []) + + // This is a client component that renders nothing + return null +} + +export default React.memo(AmplitudeProvider) diff --git a/web/app/components/base/amplitude/index.ts b/web/app/components/base/amplitude/index.ts new file mode 100644 index 0000000000..e447a0c5e3 --- /dev/null +++ b/web/app/components/base/amplitude/index.ts @@ -0,0 +1,2 @@ +export { default } from './AmplitudeProvider' +export { resetUser, setUserId, setUserProperties, trackEvent } from './utils' diff --git a/web/app/components/base/amplitude/utils.ts b/web/app/components/base/amplitude/utils.ts new file mode 100644 index 0000000000..8423c43bb2 --- /dev/null +++ b/web/app/components/base/amplitude/utils.ts @@ -0,0 +1,37 @@ +import * as amplitude from '@amplitude/analytics-browser' + +/** + * Track custom event + * @param eventName Event name + * @param eventProperties Event properties (optional) + */ +export const trackEvent = (eventName: string, eventProperties?: Record) => { + amplitude.track(eventName, eventProperties) +} + +/** + * Set user ID + * @param userId User ID + */ +export const setUserId = (userId: string) => { + amplitude.setUserId(userId) +} + +/** + * Set user properties + * @param properties User properties + */ +export const setUserProperties = (properties: Record) => { + const identifyEvent = new amplitude.Identify() + Object.entries(properties).forEach(([key, value]) => { + identifyEvent.set(key, value) + }) + amplitude.identify(identifyEvent) +} + +/** + * Reset user (e.g., when user logs out) + */ +export const resetUser = () => { + amplitude.reset() +} diff --git a/web/app/components/base/chat/chat/answer/operation.tsx b/web/app/components/base/chat/chat/answer/operation.tsx index 6868d76c73..fca0ae5cae 100644 --- a/web/app/components/base/chat/chat/answer/operation.tsx +++ b/web/app/components/base/chat/chat/answer/operation.tsx @@ -11,7 +11,10 @@ import { RiThumbDownLine, RiThumbUpLine, } from '@remixicon/react' -import type { ChatItem } from '../../types' +import type { + ChatItem, + Feedback, +} from '../../types' import { useChatContext } from '../context' import copy from 'copy-to-clipboard' import Toast from '@/app/components/base/toast' @@ -22,6 +25,7 @@ import ActionButton, { ActionButtonState } from '@/app/components/base/action-bu import NewAudioButton from '@/app/components/base/new-audio-button' import Modal from '@/app/components/base/modal/modal' import Textarea from '@/app/components/base/textarea' +import Tooltip from '@/app/components/base/tooltip' import cn from '@/utils/classnames' type OperationProps = { @@ -66,8 +70,9 @@ const Operation: FC = ({ adminFeedback, agent_thoughts, } = item - const [localFeedback, setLocalFeedback] = useState(config?.supportAnnotation ? adminFeedback : feedback) + const [userLocalFeedback, setUserLocalFeedback] = useState(feedback) const [adminLocalFeedback, setAdminLocalFeedback] = useState(adminFeedback) + const [feedbackTarget, setFeedbackTarget] = useState<'user' | 'admin'>('user') // Separate feedback types for display const userFeedback = feedback @@ -79,24 +84,68 @@ const Operation: FC = ({ return messageContent }, [agent_thoughts, messageContent]) - const handleFeedback = async (rating: 'like' | 'dislike' | null, content?: string) => { + const displayUserFeedback = userLocalFeedback ?? userFeedback + + const hasUserFeedback = !!displayUserFeedback?.rating + const hasAdminFeedback = !!adminLocalFeedback?.rating + + const shouldShowUserFeedbackBar = !isOpeningStatement && config?.supportFeedback && !!onFeedback && !config?.supportAnnotation + const shouldShowAdminFeedbackBar = !isOpeningStatement && config?.supportFeedback && !!onFeedback && !!config?.supportAnnotation + + const userFeedbackLabel = t('appLog.table.header.userRate') || 'User feedback' + const adminFeedbackLabel = t('appLog.table.header.adminRate') || 'Admin feedback' + const feedbackTooltipClassName = 'max-w-[260px]' + + const buildFeedbackTooltip = (feedbackData?: Feedback | null, label = userFeedbackLabel) => { + if (!feedbackData?.rating) + return label + + const ratingLabel = feedbackData.rating === 'like' + ? (t('appLog.detail.operation.like') || 'like') + : (t('appLog.detail.operation.dislike') || 'dislike') + const feedbackText = feedbackData.content?.trim() + + if (feedbackText) + return `${label}: ${ratingLabel} - ${feedbackText}` + + return `${label}: ${ratingLabel}` + } + + const handleFeedback = async (rating: 'like' | 'dislike' | null, content?: string, target: 'user' | 'admin' = 'user') => { if (!config?.supportFeedback || !onFeedback) return await onFeedback?.(id, { rating, content }) - setLocalFeedback({ rating }) - // Update admin feedback state separately if annotation is supported - if (config?.supportAnnotation) - setAdminLocalFeedback(rating ? { rating } : undefined) + const nextFeedback = rating === null ? { rating: null } : { rating, content } + + if (target === 'admin') + setAdminLocalFeedback(nextFeedback) + else + setUserLocalFeedback(nextFeedback) } - const handleThumbsDown = () => { + const handleLikeClick = (target: 'user' | 'admin') => { + const currentRating = target === 'admin' ? adminLocalFeedback?.rating : displayUserFeedback?.rating + if (currentRating === 'like') { + handleFeedback(null, undefined, target) + return + } + handleFeedback('like', undefined, target) + } + + const handleDislikeClick = (target: 'user' | 'admin') => { + const currentRating = target === 'admin' ? adminLocalFeedback?.rating : displayUserFeedback?.rating + if (currentRating === 'dislike') { + handleFeedback(null, undefined, target) + return + } + setFeedbackTarget(target) setIsShowFeedbackModal(true) } const handleFeedbackSubmit = async () => { - await handleFeedback('dislike', feedbackContent) + await handleFeedback('dislike', feedbackContent, feedbackTarget) setFeedbackContent('') setIsShowFeedbackModal(false) } @@ -116,12 +165,13 @@ const Operation: FC = ({ width += 26 if (!isOpeningStatement && config?.supportAnnotation && config?.annotation_reply?.enabled) width += 26 - if (config?.supportFeedback && !localFeedback?.rating && onFeedback && !isOpeningStatement) - width += 60 + 8 - if (config?.supportFeedback && localFeedback?.rating && onFeedback && !isOpeningStatement) - width += 28 + 8 + if (shouldShowUserFeedbackBar) + width += hasUserFeedback ? 28 + 8 : 60 + 8 + if (shouldShowAdminFeedbackBar) + width += (hasAdminFeedback ? 28 : 60) + 8 + (hasUserFeedback ? 28 : 0) + return width - }, [isOpeningStatement, showPromptLog, config?.text_to_speech?.enabled, config?.supportAnnotation, config?.annotation_reply?.enabled, config?.supportFeedback, localFeedback?.rating, onFeedback]) + }, [config?.annotation_reply?.enabled, config?.supportAnnotation, config?.text_to_speech?.enabled, hasAdminFeedback, hasUserFeedback, isOpeningStatement, shouldShowAdminFeedbackBar, shouldShowUserFeedbackBar, showPromptLog]) const positionRight = useMemo(() => operationWidth < maxSize, [operationWidth, maxSize]) @@ -136,6 +186,110 @@ const Operation: FC = ({ )} style={(!hasWorkflowProcess && positionRight) ? { left: contentWidth + 8 } : {}} > + {shouldShowUserFeedbackBar && ( + + {hasUserFeedback ? ( + + handleFeedback(null, undefined, 'user')} + > + {displayUserFeedback?.rating === 'like' + ? + : } + + + ) : ( + <> + handleLikeClick('user')} + > + + + handleDislikeClick('user')} + > + + + > + )} + + )} + {shouldShowAdminFeedbackBar && ( + + {/* User Feedback Display */} + {displayUserFeedback?.rating && ( + + {displayUserFeedback.rating === 'like' ? ( + + + + ) : ( + + + + )} + + )} + + {/* Admin Feedback Controls */} + {displayUserFeedback?.rating && } + {hasAdminFeedback ? ( + + handleFeedback(null, undefined, 'admin')} + > + {adminLocalFeedback?.rating === 'like' + ? + : } + + + ) : ( + <> + + handleLikeClick('admin')} + > + + + + + handleDislikeClick('admin')} + > + + + + > + )} + + )} {showPromptLog && !isOpeningStatement && ( @@ -174,69 +328,6 @@ const Operation: FC = ({ )} )} - {!isOpeningStatement && config?.supportFeedback && !localFeedback?.rating && onFeedback && ( - - {!localFeedback?.rating && ( - <> - handleFeedback('like')}> - - - - - - > - )} - - )} - {!isOpeningStatement && config?.supportFeedback && onFeedback && ( - - {/* User Feedback Display */} - {userFeedback?.rating && ( - - User - {userFeedback.rating === 'like' ? ( - - - - ) : ( - - - - )} - - )} - - {/* Admin Feedback Controls */} - {config?.supportAnnotation && ( - - {userFeedback?.rating && } - {!adminLocalFeedback?.rating ? ( - <> - handleFeedback('like')}> - - - - - - > - ) : ( - <> - {adminLocalFeedback.rating === 'like' ? ( - handleFeedback(null)}> - - - ) : ( - handleFeedback(null)}> - - - )} - > - )} - - )} - - - )} void @@ -39,7 +38,7 @@ const VoiceParamConfig = ({ const localLanguagePlaceholder = languageItem?.name || t('common.placeholder.select') const language = languageItem?.value - const voiceItems = useSWR({ appId, language }, fetchAppVoices).data + const { data: voiceItems } = useAppVoices(appId, language) let voiceItem = voiceItems?.find(item => item.value === text2speech?.voice) if (voiceItems && !voiceItem) voiceItem = voiceItems[0] diff --git a/web/app/components/datasets/create/website/base/mock-crawl-result.ts b/web/app/components/datasets/create/website/base/mock-crawl-result.ts deleted file mode 100644 index 88c05d3d0a..0000000000 --- a/web/app/components/datasets/create/website/base/mock-crawl-result.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { CrawlResultItem } from '@/models/datasets' - -const result: CrawlResultItem[] = [ - { - title: 'Start the frontend Docker container separately', - content: 'Markdown 1', - description: 'Description 1', - source_url: 'https://example.com/1', - }, - { - title: 'Advanced Tool Integration', - content: 'Markdown 2', - description: 'Description 2', - source_url: 'https://example.com/2', - }, - { - title: 'Local Source Code Start | English | Dify', - content: 'Markdown 3', - description: 'Description 3', - source_url: 'https://example.com/3', - }, -] - -export default result diff --git a/web/app/components/develop/secret-key/secret-key-modal.tsx b/web/app/components/develop/secret-key/secret-key-modal.tsx index bde1811d05..0c0a5091b7 100644 --- a/web/app/components/develop/secret-key/secret-key-modal.tsx +++ b/web/app/components/develop/secret-key/secret-key-modal.tsx @@ -5,7 +5,7 @@ import { import { useTranslation } from 'react-i18next' import { RiDeleteBinLine } from '@remixicon/react' import { PlusIcon, XMarkIcon } from '@heroicons/react/20/solid' -import useSWR, { useSWRConfig } from 'swr' +import useSWR from 'swr' import SecretKeyGenerateModal from './secret-key-generate' import s from './style.module.css' import ActionButton from '@/app/components/base/action-button' @@ -15,7 +15,6 @@ import CopyFeedback from '@/app/components/base/copy-feedback' import { createApikey as createAppApikey, delApikey as delAppApikey, - fetchApiKeysList as fetchAppApiKeysList, } from '@/service/apps' import { createApikey as createDatasetApikey, @@ -27,6 +26,7 @@ import Loading from '@/app/components/base/loading' import Confirm from '@/app/components/base/confirm' import useTimestamp from '@/hooks/use-timestamp' import { useAppContext } from '@/context/app-context' +import { useAppApiKeys, useInvalidateAppApiKeys } from '@/service/use-apps' type ISecretKeyModalProps = { isShow: boolean @@ -45,12 +45,14 @@ const SecretKeyModal = ({ const [showConfirmDelete, setShowConfirmDelete] = useState(false) const [isVisible, setVisible] = useState(false) const [newKey, setNewKey] = useState(undefined) - const { mutate } = useSWRConfig() - const commonParams = appId - ? { url: `/apps/${appId}/api-keys`, params: {} } - : { url: '/datasets/api-keys', params: {} } - const fetchApiKeysList = appId ? fetchAppApiKeysList : fetchDatasetApiKeysList - const { data: apiKeysList } = useSWR(commonParams, fetchApiKeysList) + const invalidateAppApiKeys = useInvalidateAppApiKeys() + const { data: appApiKeys, isLoading: isAppApiKeysLoading } = useAppApiKeys(appId, { enabled: !!appId && isShow }) + const { data: datasetApiKeys, isLoading: isDatasetApiKeysLoading, mutate: mutateDatasetApiKeys } = useSWR( + !appId && isShow ? { url: '/datasets/api-keys', params: {} } : null, + fetchDatasetApiKeysList, + ) + const apiKeysList = appId ? appApiKeys : datasetApiKeys + const isApiKeysLoading = appId ? isAppApiKeysLoading : isDatasetApiKeysLoading const [delKeyID, setDelKeyId] = useState('') @@ -64,7 +66,10 @@ const SecretKeyModal = ({ ? { url: `/apps/${appId}/api-keys/${delKeyID}`, params: {} } : { url: `/datasets/api-keys/${delKeyID}`, params: {} } await delApikey(params) - mutate(commonParams) + if (appId) + invalidateAppApiKeys(appId) + else + mutateDatasetApiKeys() } const onCreate = async () => { @@ -75,7 +80,10 @@ const SecretKeyModal = ({ const res = await createApikey(params) setVisible(true) setNewKey(res) - mutate(commonParams) + if (appId) + invalidateAppApiKeys(appId) + else + mutateDatasetApiKeys() } const generateToken = (token: string) => { @@ -88,7 +96,7 @@ const SecretKeyModal = ({ {t('appApi.apiKeyModal.apiSecretKeyTips')} - {!apiKeysList && } + {isApiKeysLoading && } { !!apiKeysList?.data?.length && ( diff --git a/web/app/components/goto-anything/actions/index.ts b/web/app/components/goto-anything/actions/index.ts index 0d4986f144..6f8bb9564c 100644 --- a/web/app/components/goto-anything/actions/index.ts +++ b/web/app/components/goto-anything/actions/index.ts @@ -214,8 +214,12 @@ export const searchAnything = async ( actionItem?: ActionItem, dynamicActions?: Record, ): Promise => { + const trimmedQuery = query.trim() + if (actionItem) { - const searchTerm = query.replace(actionItem.key, '').replace(actionItem.shortcut, '').trim() + const escapeRegExp = (value: string) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + const prefixPattern = new RegExp(`^(${escapeRegExp(actionItem.key)}|${escapeRegExp(actionItem.shortcut)})\\s*`) + const searchTerm = trimmedQuery.replace(prefixPattern, '').trim() try { return await actionItem.search(query, searchTerm, locale) } @@ -225,10 +229,12 @@ export const searchAnything = async ( } } - if (query.startsWith('@') || query.startsWith('/')) + if (trimmedQuery.startsWith('@') || trimmedQuery.startsWith('/')) return [] const globalSearchActions = Object.values(dynamicActions || Actions) + // Exclude slash commands from general search results + .filter(action => action.key !== '/') // Use Promise.allSettled to handle partial failures gracefully const searchPromises = globalSearchActions.map(async (action) => { diff --git a/web/app/components/goto-anything/index.tsx b/web/app/components/goto-anything/index.tsx index 5cdf970725..50eddd1a43 100644 --- a/web/app/components/goto-anything/index.tsx +++ b/web/app/components/goto-anything/index.tsx @@ -177,31 +177,42 @@ const GotoAnything: FC = ({ } }, [router]) + const dedupedResults = useMemo(() => { + const seen = new Set() + return searchResults.filter((result) => { + const key = `${result.type}-${result.id}` + if (seen.has(key)) + return false + seen.add(key) + return true + }) + }, [searchResults]) + // Group results by type - const groupedResults = useMemo(() => searchResults.reduce((acc, result) => { + const groupedResults = useMemo(() => dedupedResults.reduce((acc, result) => { if (!acc[result.type]) acc[result.type] = [] acc[result.type].push(result) return acc }, {} as { [key: string]: SearchResult[] }), - [searchResults]) + [dedupedResults]) useEffect(() => { if (isCommandsMode) return - if (!searchResults.length) + if (!dedupedResults.length) return - const currentValueExists = searchResults.some(result => `${result.type}-${result.id}` === cmdVal) + const currentValueExists = dedupedResults.some(result => `${result.type}-${result.id}` === cmdVal) if (!currentValueExists) - setCmdVal(`${searchResults[0].type}-${searchResults[0].id}`) - }, [isCommandsMode, searchResults, cmdVal]) + setCmdVal(`${dedupedResults[0].type}-${dedupedResults[0].id}`) + }, [isCommandsMode, dedupedResults, cmdVal]) const emptyResult = useMemo(() => { - if (searchResults.length || !searchQuery.trim() || isLoading || isCommandsMode) + if (dedupedResults.length || !searchQuery.trim() || isLoading || isCommandsMode) return null const isCommandSearch = searchMode !== 'general' @@ -246,7 +257,7 @@ const GotoAnything: FC = ({ ) - }, [searchResults, searchQuery, Actions, searchMode, isLoading, isError, isCommandsMode]) + }, [dedupedResults, searchQuery, Actions, searchMode, isLoading, isError, isCommandsMode]) const defaultUI = useMemo(() => { if (searchQuery.trim()) @@ -430,14 +441,14 @@ const GotoAnything: FC = ({ {/* Always show footer to prevent height jumping */} - {(!!searchResults.length || isError) ? ( + {(!!dedupedResults.length || isError) ? ( <> {isError ? ( {t('app.gotoAnything.someServicesUnavailable')} ) : ( <> - {t('app.gotoAnything.resultCount', { count: searchResults.length })} + {t('app.gotoAnything.resultCount', { count: dedupedResults.length })} {searchMode !== 'general' && ( {t('app.gotoAnything.inScope', { scope: searchMode.replace('@', '') })} diff --git a/web/app/components/header/account-dropdown/index.tsx b/web/app/components/header/account-dropdown/index.tsx index d00cddc693..a9fc37aec9 100644 --- a/web/app/components/header/account-dropdown/index.tsx +++ b/web/app/components/header/account-dropdown/index.tsx @@ -34,6 +34,7 @@ import { useGlobalPublicStore } from '@/context/global-public-context' import { useDocLink } from '@/context/i18n' import { useLogout } from '@/service/use-common' import { ACCOUNT_SETTING_TAB } from '@/app/components/header/account-setting/constants' +import { resetUser } from '@/app/components/base/amplitude/utils' export default function AppSelector() { const itemClassName = ` @@ -53,7 +54,7 @@ export default function AppSelector() { const { mutateAsync: logout } = useLogout() const handleLogout = async () => { await logout() - + resetUser() localStorage.removeItem('setup_status') // Tokens are now stored in cookies and cleared by backend diff --git a/web/app/components/header/app-nav/index.tsx b/web/app/components/header/app-nav/index.tsx index 740e790630..1fd5c6e29d 100644 --- a/web/app/components/header/app-nav/index.tsx +++ b/web/app/components/header/app-nav/index.tsx @@ -3,7 +3,6 @@ import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useParams } from 'next/navigation' -import useSWRInfinite from 'swr/infinite' import { flatten } from 'lodash-es' import { produce } from 'immer' import { @@ -12,33 +11,13 @@ import { } from '@remixicon/react' import Nav from '../nav' import type { NavItem } from '../nav/nav-selector' -import { fetchAppList } from '@/service/apps' import CreateAppTemplateDialog from '@/app/components/app/create-app-dialog' import CreateAppModal from '@/app/components/app/create-app-modal' import CreateFromDSLModal from '@/app/components/app/create-from-dsl-modal' -import type { AppListResponse } from '@/models/app' import { useAppContext } from '@/context/app-context' import { useStore as useAppStore } from '@/app/components/app/store' import { AppModeEnum } from '@/types/app' - -const getKey = ( - pageIndex: number, - previousPageData: AppListResponse, - activeTab: string, - keywords: string, -) => { - if (!pageIndex || previousPageData.has_more) { - const params: any = { url: 'apps', params: { page: pageIndex + 1, limit: 30, name: keywords } } - - if (activeTab !== 'all') - params.params.mode = activeTab - else - delete params.params.mode - - return params - } - return null -} +import { useInfiniteAppList } from '@/service/use-apps' const AppNav = () => { const { t } = useTranslation() @@ -50,17 +29,21 @@ const AppNav = () => { const [showCreateFromDSLModal, setShowCreateFromDSLModal] = useState(false) const [navItems, setNavItems] = useState([]) - const { data: appsData, setSize, mutate } = useSWRInfinite( - appId - ? (pageIndex: number, previousPageData: AppListResponse) => getKey(pageIndex, previousPageData, 'all', '') - : () => null, - fetchAppList, - { revalidateFirstPage: false }, - ) + const { + data: appsData, + fetchNextPage, + hasNextPage, + refetch, + } = useInfiniteAppList({ + page: 1, + limit: 30, + name: '', + }, { enabled: !!appId }) const handleLoadMore = useCallback(() => { - setSize(size => size + 1) - }, [setSize]) + if (hasNextPage) + fetchNextPage() + }, [fetchNextPage, hasNextPage]) const openModal = (state: string) => { if (state === 'blank') @@ -73,7 +56,7 @@ const AppNav = () => { useEffect(() => { if (appsData) { - const appItems = flatten(appsData?.map(appData => appData.data)) + const appItems = flatten((appsData.pages ?? []).map(appData => appData.data)) const navItems = appItems.map((app) => { const link = ((isCurrentWorkspaceEditor, app) => { if (!isCurrentWorkspaceEditor) { @@ -132,17 +115,17 @@ const AppNav = () => { setShowNewAppDialog(false)} - onSuccess={() => mutate()} + onSuccess={() => refetch()} /> setShowNewAppTemplateDialog(false)} - onSuccess={() => mutate()} + onSuccess={() => refetch()} /> setShowCreateFromDSLModal(false)} - onSuccess={() => mutate()} + onSuccess={() => refetch()} /> > ) diff --git a/web/app/components/plugins/plugin-detail-panel/app-selector/index.tsx b/web/app/components/plugins/plugin-detail-panel/app-selector/index.tsx index c2d5b76de5..0f7ab60bd3 100644 --- a/web/app/components/plugins/plugin-detail-panel/app-selector/index.tsx +++ b/web/app/components/plugins/plugin-detail-panel/app-selector/index.tsx @@ -15,32 +15,10 @@ import type { OffsetOptions, Placement, } from '@floating-ui/react' -import useSWRInfinite from 'swr/infinite' -import { fetchAppList } from '@/service/apps' -import type { AppListResponse } from '@/models/app' +import { useInfiniteAppList } from '@/service/use-apps' const PAGE_SIZE = 20 -const getKey = ( - pageIndex: number, - previousPageData: AppListResponse, - searchText: string, -) => { - if (pageIndex === 0 || (previousPageData && previousPageData.has_more)) { - const params: any = { - url: 'apps', - params: { - page: pageIndex + 1, - limit: PAGE_SIZE, - name: searchText, - }, - } - - return params - } - return null -} - type Props = { value?: { app_id: string @@ -72,30 +50,32 @@ const AppSelector: FC = ({ const [searchText, setSearchText] = useState('') const [isLoadingMore, setIsLoadingMore] = useState(false) - const { data, isLoading, setSize } = useSWRInfinite( - (pageIndex: number, previousPageData: AppListResponse) => getKey(pageIndex, previousPageData, searchText), - fetchAppList, - { - revalidateFirstPage: true, - shouldRetryOnError: false, - dedupingInterval: 500, - errorRetryCount: 3, - }, - ) + const { + data, + isLoading, + isFetchingNextPage, + fetchNextPage, + hasNextPage, + } = useInfiniteAppList({ + page: 1, + limit: PAGE_SIZE, + name: searchText, + }) + const pages = data?.pages ?? [] const displayedApps = useMemo(() => { - if (!data) return [] - return data.flatMap(({ data: apps }) => apps) - }, [data]) + if (!pages.length) return [] + return pages.flatMap(({ data: apps }) => apps) + }, [pages]) - const hasMore = data?.at(-1)?.has_more ?? true + const hasMore = hasNextPage ?? true const handleLoadMore = useCallback(async () => { - if (isLoadingMore || !hasMore) return + if (isLoadingMore || isFetchingNextPage || !hasMore) return setIsLoadingMore(true) try { - await setSize((size: number) => size + 1) + await fetchNextPage() } finally { // Add a small delay to ensure state updates are complete @@ -103,7 +83,7 @@ const AppSelector: FC = ({ setIsLoadingMore(false) }, 300) } - }, [isLoadingMore, hasMore, setSize]) + }, [isLoadingMore, isFetchingNextPage, hasMore, fetchNextPage]) const handleTriggerClick = () => { if (disabled) return @@ -185,7 +165,7 @@ const AppSelector: FC = ({ onSelect={handleSelectApp} scope={scope || 'all'} apps={displayedApps} - isLoading={isLoading || isLoadingMore} + isLoading={isLoading || isLoadingMore || isFetchingNextPage} hasMore={hasMore} onLoadMore={handleLoadMore} searchText={searchText} diff --git a/web/app/components/tools/mcp/mock.ts b/web/app/components/tools/mcp/mock.ts deleted file mode 100644 index f271f67ed3..0000000000 --- a/web/app/components/tools/mcp/mock.ts +++ /dev/null @@ -1,154 +0,0 @@ -const tools = [ - { - author: 'Novice', - name: 'NOTION_ADD_PAGE_CONTENT', - label: { - en_US: 'NOTION_ADD_PAGE_CONTENT', - zh_Hans: 'NOTION_ADD_PAGE_CONTENT', - pt_BR: 'NOTION_ADD_PAGE_CONTENT', - ja_JP: 'NOTION_ADD_PAGE_CONTENT', - }, - description: { - en_US: 'Adds a single content block to a notion page. multiple calls needed for multiple blocks. note: only supports adding to notion pages. blocks that can contain children: - page (any block type) - toggle (any nested content) - to-do (nested to-dos/blocks) - bulleted list (nested lists/blocks) - numbered list (nested lists/blocks) - callout (child blocks) - quote (nested blocks)', - zh_Hans: 'Adds a single content block to a notion page. multiple calls needed for multiple blocks. note: only supports adding to notion pages. blocks that can contain children: - page (any block type) - toggle (any nested content) - to-do (nested to-dos/blocks) - bulleted list (nested lists/blocks) - numbered list (nested lists/blocks) - callout (child blocks) - quote (nested blocks)', - pt_BR: 'Adds a single content block to a notion page. multiple calls needed for multiple blocks. note: only supports adding to notion pages. blocks that can contain children: - page (any block type) - toggle (any nested content) - to-do (nested to-dos/blocks) - bulleted list (nested lists/blocks) - numbered list (nested lists/blocks) - callout (child blocks) - quote (nested blocks)', - ja_JP: 'Adds a single content block to a notion page. multiple calls needed for multiple blocks. note: only supports adding to notion pages. blocks that can contain children: - page (any block type) - toggle (any nested content) - to-do (nested to-dos/blocks) - bulleted list (nested lists/blocks) - numbered list (nested lists/blocks) - callout (child blocks) - quote (nested blocks)', - }, - parameters: [ - { - name: 'after', - label: { - en_US: 'after', - zh_Hans: 'after', - pt_BR: 'after', - ja_JP: 'after', - }, - placeholder: null, - scope: null, - auto_generate: null, - template: null, - required: false, - default: null, - min: null, - max: null, - precision: null, - options: [], - type: 'string', - human_description: { - en_US: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.', - zh_Hans: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.', - pt_BR: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.', - ja_JP: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.', - }, - form: 'llm', - llm_description: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.', - }, - { - name: 'content_block', - label: { - en_US: 'content_block', - zh_Hans: 'content_block', - pt_BR: 'content_block', - ja_JP: 'content_block', - }, - placeholder: null, - scope: null, - auto_generate: null, - template: null, - required: false, - default: null, - min: null, - max: null, - precision: null, - options: [], - type: 'string', - human_description: { - en_US: 'Child content to append to a page.', - zh_Hans: 'Child content to append to a page.', - pt_BR: 'Child content to append to a page.', - ja_JP: 'Child content to append to a page.', - }, - form: 'llm', - llm_description: 'Child content to append to a page.', - }, - { - name: 'parent_block_id', - label: { - en_US: 'parent_block_id', - zh_Hans: 'parent_block_id', - pt_BR: 'parent_block_id', - ja_JP: 'parent_block_id', - }, - placeholder: null, - scope: null, - auto_generate: null, - template: null, - required: false, - default: null, - min: null, - max: null, - precision: null, - options: [], - type: 'string', - human_description: { - en_US: 'The ID of the page which the children will be added.', - zh_Hans: 'The ID of the page which the children will be added.', - pt_BR: 'The ID of the page which the children will be added.', - ja_JP: 'The ID of the page which the children will be added.', - }, - form: 'llm', - llm_description: 'The ID of the page which the children will be added.', - }, - ], - labels: [], - output_schema: null, - }, -] - -export const listData = [ - { - id: 'fdjklajfkljadslf111', - author: 'KVOJJJin', - name: 'GOGOGO', - icon: 'https://cloud.dify.dev/console/api/workspaces/694cc430-fa36-4458-86a0-4a98c09c4684/model-providers/langgenius/openai/openai/icon_small/en_US', - server_url: 'https://mcp.composio.dev/notion/****/abc', - type: 'mcp', - is_team_authorization: true, - tools, - update_elapsed_time: 1744793369, - label: { - en_US: 'GOGOGO', - zh_Hans: 'GOGOGO', - }, - }, - { - id: 'fdjklajfkljadslf222', - author: 'KVOJJJin', - name: 'GOGOGO2', - icon: 'https://cloud.dify.dev/console/api/workspaces/694cc430-fa36-4458-86a0-4a98c09c4684/model-providers/langgenius/openai/openai/icon_small/en_US', - server_url: 'https://mcp.composio.dev/notion/****/abc', - type: 'mcp', - is_team_authorization: false, - tools: [], - update_elapsed_time: 1744793369, - label: { - en_US: 'GOGOGO2', - zh_Hans: 'GOGOGO2', - }, - }, - { - id: 'fdjklajfkljadslf333', - author: 'KVOJJJin', - name: 'GOGOGO3', - icon: 'https://cloud.dify.dev/console/api/workspaces/694cc430-fa36-4458-86a0-4a98c09c4684/model-providers/langgenius/openai/openai/icon_small/en_US', - server_url: 'https://mcp.composio.dev/notion/****/abc', - type: 'mcp', - is_team_authorization: true, - tools, - update_elapsed_time: 1744793369, - label: { - en_US: 'GOGOGO3', - zh_Hans: 'GOGOGO3', - }, - }, -] diff --git a/web/app/components/workflow/store/workflow/debug/mock-data.ts b/web/app/components/workflow/store/workflow/debug/mock-data.ts deleted file mode 100644 index 0bc5555d8c..0000000000 --- a/web/app/components/workflow/store/workflow/debug/mock-data.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { VarType } from '../../../types' -import type { VarInInspect } from '@/types/workflow' -import { VarInInspectType } from '@/types/workflow' - -export const vars: VarInInspect[] = [ - { - id: 'xxx', - type: VarInInspectType.node, - name: 'text00', - description: '', - selector: ['1745476079387', 'text'], - value_type: VarType.string, - value: 'text value...', - edited: false, - visible: true, - is_truncated: false, - full_content: { size_bytes: 0, download_url: '' }, - }, - { - id: 'fdklajljgldjglkagjlk', - type: VarInInspectType.node, - name: 'text', - description: '', - selector: ['1712386917734', 'text'], - value_type: VarType.string, - value: 'made zhizhang', - edited: false, - visible: true, - is_truncated: false, - full_content: { size_bytes: 0, download_url: '' }, - }, -] - -export const conversationVars: VarInInspect[] = [ - { - id: 'con1', - type: VarInInspectType.conversation, - name: 'conversationVar 1', - description: '', - selector: ['conversation', 'var1'], - value_type: VarType.string, - value: 'conversation var value...', - edited: false, - visible: true, - is_truncated: false, - full_content: { size_bytes: 0, download_url: '' }, - }, - { - id: 'con2', - type: VarInInspectType.conversation, - name: 'conversationVar 2', - description: '', - selector: ['conversation', 'var2'], - value_type: VarType.number, - value: 456, - edited: false, - visible: true, - is_truncated: false, - full_content: { size_bytes: 0, download_url: '' }, - }, -] - -export const systemVars: VarInInspect[] = [ - { - id: 'sys1', - type: VarInInspectType.system, - name: 'query', - description: '', - selector: ['sys', 'query'], - value_type: VarType.string, - value: 'Hello robot!', - edited: false, - visible: true, - is_truncated: false, - full_content: { size_bytes: 0, download_url: '' }, - }, - { - id: 'sys2', - type: VarInInspectType.system, - name: 'user_id', - description: '', - selector: ['sys', 'user_id'], - value_type: VarType.string, - value: 'djflakjerlkjdlksfjslakjsdfl', - edited: false, - visible: true, - is_truncated: false, - full_content: { size_bytes: 0, download_url: '' }, - }, -] diff --git a/web/app/signin/check-code/page.tsx b/web/app/signin/check-code/page.tsx index 67e268a761..4af2bdd1cc 100644 --- a/web/app/signin/check-code/page.tsx +++ b/web/app/signin/check-code/page.tsx @@ -11,6 +11,7 @@ import Toast from '@/app/components/base/toast' import { emailLoginWithCode, sendEMailLoginCode } from '@/service/common' import I18NContext from '@/context/i18n' import { resolvePostLoginRedirect } from '../utils/post-login-redirect' +import { trackEvent } from '@/app/components/base/amplitude' export default function CheckCode() { const { t, i18n } = useTranslation() @@ -44,6 +45,12 @@ export default function CheckCode() { setIsLoading(true) const ret = await emailLoginWithCode({ email, code, token, language }) if (ret.result === 'success') { + // Track login success event + trackEvent('user_login_success', { + method: 'email_code', + is_invite: !!invite_token, + }) + if (invite_token) { router.replace(`/signin/invite-settings?${searchParams.toString()}`) } diff --git a/web/app/signin/components/mail-and-password-auth.tsx b/web/app/signin/components/mail-and-password-auth.tsx index 2740a82782..ba37087719 100644 --- a/web/app/signin/components/mail-and-password-auth.tsx +++ b/web/app/signin/components/mail-and-password-auth.tsx @@ -12,6 +12,7 @@ import I18NContext from '@/context/i18n' import { noop } from 'lodash-es' import { resolvePostLoginRedirect } from '../utils/post-login-redirect' import type { ResponseError } from '@/service/fetch' +import { trackEvent } from '@/app/components/base/amplitude' type MailAndPasswordAuthProps = { isInvite: boolean @@ -63,6 +64,12 @@ export default function MailAndPasswordAuth({ isInvite, isEmailSetup, allowRegis body: loginData, }) if (res.result === 'success') { + // Track login success event + trackEvent('user_login_success', { + method: 'email_password', + is_invite: isInvite, + }) + if (isInvite) { router.replace(`/signin/invite-settings?${searchParams.toString()}`) } diff --git a/web/app/signup/check-code/page.tsx b/web/app/signup/check-code/page.tsx index 540af74872..35c5e78a45 100644 --- a/web/app/signup/check-code/page.tsx +++ b/web/app/signup/check-code/page.tsx @@ -42,7 +42,6 @@ export default function CheckCode() { } setIsLoading(true) const res = await verifyCode({ email, code, token }) - console.log(res) if ((res as MailValidityResponse).is_valid) { const params = new URLSearchParams(searchParams) params.set('token', encodeURIComponent((res as MailValidityResponse).token)) diff --git a/web/app/signup/set-password/page.tsx b/web/app/signup/set-password/page.tsx index d4fc36a232..1e176b8d2f 100644 --- a/web/app/signup/set-password/page.tsx +++ b/web/app/signup/set-password/page.tsx @@ -9,6 +9,7 @@ import Input from '@/app/components/base/input' import { validPassword } from '@/config' import type { MailRegisterResponse } from '@/service/use-common' import { useMailRegister } from '@/service/use-common' +import { trackEvent } from '@/app/components/base/amplitude' const ChangePasswordForm = () => { const { t } = useTranslation() @@ -54,6 +55,11 @@ const ChangePasswordForm = () => { }) const { result } = res as MailRegisterResponse if (result === 'success') { + // Track registration success event + trackEvent('user_registration_success', { + method: 'email', + }) + Toast.notify({ type: 'success', message: t('common.api.actionSuccess'), diff --git a/web/context/app-context.tsx b/web/context/app-context.tsx index 644a7a778f..426ef2217e 100644 --- a/web/context/app-context.tsx +++ b/web/context/app-context.tsx @@ -11,6 +11,7 @@ import { noop } from 'lodash-es' import { setZendeskConversationFields } from '@/app/components/base/zendesk/utils' import { ZENDESK_FIELD_IDS } from '@/config' import { useGlobalPublicStore } from './global-public-context' +import { setUserId, setUserProperties } from '@/app/components/base/amplitude' export type AppContextValue = { userProfile: UserProfileResponse @@ -159,6 +160,28 @@ export const AppContextProvider: FC = ({ children }) => }, [currentWorkspace?.id]) // #endregion Zendesk conversation fields + useEffect(() => { + // Report user and workspace info to Amplitude when loaded + if (userProfile?.id) { + setUserId(userProfile.email) + const properties: Record = { + email: userProfile.email, + name: userProfile.name, + has_password: userProfile.is_password_set, + } + + if (currentWorkspace?.id) { + properties.workspace_id = currentWorkspace.id + properties.workspace_name = currentWorkspace.name + properties.workspace_plan = currentWorkspace.plan + properties.workspace_status = currentWorkspace.status + properties.workspace_role = currentWorkspace.role + } + + setUserProperties(properties) + } + }, [userProfile, currentWorkspace]) + return ( { // prevent clickjacking: https://owasp.org/www-community/attacks/Clickjacking diff --git a/web/package.json b/web/package.json index 11a8763566..11b2165ac7 100644 --- a/web/package.json +++ b/web/package.json @@ -45,6 +45,8 @@ "knip": "knip" }, "dependencies": { + "@amplitude/analytics-browser": "^2.31.3", + "@amplitude/plugin-session-replay-browser": "^1.23.6", "@emoji-mart/data": "^1.2.1", "@floating-ui/react": "^0.26.28", "@formatjs/intl-localematcher": "^0.5.10", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 6038ec0153..2d528ecdf2 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -60,6 +60,12 @@ importers: .: dependencies: + '@amplitude/analytics-browser': + specifier: ^2.31.3 + version: 2.31.3 + '@amplitude/plugin-session-replay-browser': + specifier: ^1.23.6 + version: 1.23.6(@amplitude/rrweb@2.0.0-alpha.33)(rollup@2.79.2) '@emoji-mart/data': specifier: ^1.2.1 version: 1.2.1 @@ -77,7 +83,7 @@ importers: version: 2.2.0(react@19.1.1) '@hookform/resolvers': specifier: ^3.10.0 - version: 3.10.0(react-hook-form@7.65.0(react@19.1.1)) + version: 3.10.0(react-hook-form@7.67.0(react@19.1.1)) '@lexical/code': specifier: ^0.36.2 version: 0.36.2 @@ -101,7 +107,7 @@ importers: version: 0.37.0 '@monaco-editor/react': specifier: ^4.7.0 - version: 4.7.0(monaco-editor@0.54.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@octokit/core': specifier: ^6.1.6 version: 6.1.6 @@ -119,22 +125,22 @@ importers: version: 3.2.5 '@tailwindcss/typography': specifier: ^0.5.19 - version: 0.5.19(tailwindcss@3.4.18(yaml@2.8.1)) + version: 0.5.19(tailwindcss@3.4.18(yaml@2.8.2)) '@tanstack/react-form': specifier: ^1.23.7 - version: 1.23.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 1.27.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@tanstack/react-query': specifier: ^5.90.5 - version: 5.90.5(react@19.1.1) + version: 5.90.11(react@19.1.1) '@tanstack/react-query-devtools': specifier: ^5.90.2 - version: 5.90.2(@tanstack/react-query@5.90.5(react@19.1.1))(react@19.1.1) + version: 5.91.1(@tanstack/react-query@5.90.11(react@19.1.1))(react@19.1.1) abcjs: specifier: ^6.5.2 version: 6.5.2 ahooks: specifier: ^3.9.5 - version: 3.9.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 3.9.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -188,7 +194,7 @@ importers: version: 1.2.1 immer: specifier: ^10.1.3 - version: 10.1.3 + version: 10.2.0 js-audio-recorder: specifier: ^1.0.7 version: 1.0.7 @@ -197,7 +203,7 @@ importers: version: 3.0.5 js-yaml: specifier: ^4.1.0 - version: 4.1.0 + version: 4.1.1 jsonschema: specifier: ^1.5.0 version: 1.5.0 @@ -206,7 +212,7 @@ importers: version: 0.16.25 ky: specifier: ^1.12.0 - version: 1.12.0 + version: 1.14.0 lamejs: specifier: ^1.2.1 version: 1.2.1 @@ -233,10 +239,10 @@ importers: version: 1.0.0 next: specifier: ~15.5.6 - version: 15.5.6(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2) + version: 15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2) next-pwa: specifier: ^5.6.0 - version: 5.6.0(@babel/core@7.28.4)(@types/babel__core@7.20.5)(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2))(uglify-js@3.19.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + version: 5.6.0(@babel/core@7.28.5)(@types/babel__core@7.20.5)(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2))(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -260,10 +266,10 @@ importers: version: 19.1.1(react@19.1.1) react-easy-crop: specifier: ^5.5.3 - version: 5.5.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 5.5.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-hook-form: specifier: ^7.65.0 - version: 7.65.0(react@19.1.1) + version: 7.67.0(react@19.1.1) react-hotkeys-hook: specifier: ^4.6.2 version: 4.6.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -287,7 +293,7 @@ importers: version: 2.0.6(react@19.1.1) react-sortablejs: specifier: ^6.1.4 - version: 6.1.4(@types/sortablejs@1.15.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sortablejs@1.15.6) + version: 6.1.4(@types/sortablejs@1.15.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sortablejs@1.15.6) react-syntax-highlighter: specifier: ^15.6.6 version: 15.6.6(react@19.1.1) @@ -299,7 +305,7 @@ importers: version: 1.8.11(react-dom@19.1.1(react@19.1.1))(react@19.1.1) reactflow: specifier: ^11.11.4 - version: 11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) rehype-katex: specifier: ^7.0.1 version: 7.0.1 @@ -329,13 +335,13 @@ importers: version: 1.15.6 swr: specifier: ^2.3.6 - version: 2.3.6(react@19.1.1) + version: 2.3.7(react@19.1.1) tailwind-merge: specifier: ^2.6.0 version: 2.6.0 tldts: specifier: ^7.0.17 - version: 7.0.17 + version: 7.0.19 use-context-selector: specifier: ^2.0.0 version: 2.0.0(react@19.1.1)(scheduler@0.26.0) @@ -347,29 +353,29 @@ importers: version: 3.25.76 zundo: specifier: ^2.3.0 - version: 2.3.0(zustand@5.0.9(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1))) + version: 2.3.0(zustand@5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1))) zustand: specifier: ^5.0.9 - version: 5.0.9(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)) + version: 5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)) devDependencies: '@antfu/eslint-config': specifier: ^5.4.1 - version: 5.4.1(@eslint-react/eslint-plugin@1.53.1(eslint@9.38.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.4)(@vue/compiler-sfc@3.5.22)(eslint-plugin-react-hooks@5.2.0(eslint@9.38.0(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.24(eslint@9.38.0(jiti@1.21.7)))(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + version: 5.4.1(@eslint-react/eslint-plugin@1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.4)(@vue/compiler-sfc@3.5.25)(eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.24(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@babel/core': specifier: ^7.28.4 - version: 7.28.4 + version: 7.28.5 '@chromatic-com/storybook': specifier: ^4.1.1 - version: 4.1.1(storybook@9.1.13(@testing-library/dom@10.4.1)) + version: 4.1.3(storybook@9.1.13(@testing-library/dom@10.4.1)) '@eslint-react/eslint-plugin': specifier: ^1.53.1 - version: 1.53.1(eslint@9.38.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3) + version: 1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3) '@happy-dom/jest-environment': specifier: ^20.0.8 - version: 20.0.8(@jest/environment@29.7.0)(@jest/fake-timers@29.7.0)(@jest/types@29.6.3)(jest-mock@29.7.0)(jest-util@29.7.0) + version: 20.0.11(@jest/environment@29.7.0)(@jest/fake-timers@29.7.0)(@jest/types@29.6.3)(jest-mock@29.7.0)(jest-util@29.7.0) '@mdx-js/loader': specifier: ^3.1.1 - version: 3.1.1(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + version: 3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) '@mdx-js/react': specifier: ^3.1.1 version: 3.1.1(@types/react@19.1.17)(react@19.1.1) @@ -381,7 +387,7 @@ importers: version: 15.5.4 '@next/mdx': specifier: 15.5.4 - version: 15.5.4(@mdx-js/loader@3.1.1(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.1(@types/react@19.1.17)(react@19.1.1)) + version: 15.5.4(@mdx-js/loader@3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.1(@types/react@19.1.17)(react@19.1.1)) '@rgrove/parse-xml': specifier: ^4.2.0 version: 4.2.0 @@ -399,7 +405,7 @@ importers: version: 9.1.13(storybook@9.1.13(@testing-library/dom@10.4.1)) '@storybook/nextjs': specifier: 9.1.13 - version: 9.1.13(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2)(storybook@9.1.13(@testing-library/dom@10.4.1))(type-fest@4.2.0)(typescript@5.9.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + version: 9.1.13(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2)(storybook@9.1.13(@testing-library/dom@10.4.1))(type-fest@4.2.0)(typescript@5.9.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) '@storybook/react': specifier: 9.1.13 version: 9.1.13(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3) @@ -453,19 +459,19 @@ importers: version: 7.7.1 '@types/sortablejs': specifier: ^1.15.8 - version: 1.15.8 + version: 1.15.9 '@types/uuid': specifier: ^10.0.0 version: 10.0.0 autoprefixer: specifier: ^10.4.21 - version: 10.4.21(postcss@8.5.6) + version: 10.4.22(postcss@8.5.6) babel-loader: specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + version: 10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) bing-translate-api: specifier: ^4.1.0 - version: 4.1.0 + version: 4.2.0 code-inspector-plugin: specifier: 1.2.9 version: 1.2.9 @@ -474,25 +480,25 @@ importers: version: 10.1.0 eslint: specifier: ^9.38.0 - version: 9.38.0(jiti@1.21.7) + version: 9.39.1(jiti@1.21.7) eslint-plugin-oxlint: specifier: ^1.23.0 - version: 1.23.0 + version: 1.31.0 eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.38.0(jiti@1.21.7)) + version: 5.2.0(eslint@9.39.1(jiti@1.21.7)) eslint-plugin-react-refresh: specifier: ^0.4.24 - version: 0.4.24(eslint@9.38.0(jiti@1.21.7)) + version: 0.4.24(eslint@9.39.1(jiti@1.21.7)) eslint-plugin-sonarjs: specifier: ^3.0.5 - version: 3.0.5(eslint@9.38.0(jiti@1.21.7)) + version: 3.0.5(eslint@9.39.1(jiti@1.21.7)) eslint-plugin-storybook: specifier: ^9.1.13 - version: 9.1.13(eslint@9.38.0(jiti@1.21.7))(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3) + version: 9.1.16(eslint@9.39.1(jiti@1.21.7))(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3) eslint-plugin-tailwindcss: specifier: ^3.18.2 - version: 3.18.2(tailwindcss@3.4.18(yaml@2.8.1)) + version: 3.18.2(tailwindcss@3.4.18(yaml@2.8.2)) globals: specifier: ^15.15.0 version: 15.15.0 @@ -504,7 +510,7 @@ importers: version: 29.7.0(@types/node@18.15.0)(ts-node@10.9.2(@types/node@18.15.0)(typescript@5.9.3)) knip: specifier: ^5.66.1 - version: 5.66.2(@types/node@18.15.0)(typescript@5.9.3) + version: 5.71.0(@types/node@18.15.0)(typescript@5.9.3) lint-staged: specifier: ^15.5.2 version: 15.5.2 @@ -519,13 +525,13 @@ importers: version: 8.5.6 sass: specifier: ^1.93.2 - version: 1.93.2 + version: 1.94.2 storybook: specifier: 9.1.13 version: 9.1.13(@testing-library/dom@10.4.1) tailwindcss: specifier: ^3.4.18 - version: 3.4.18(yaml@2.8.1) + version: 3.4.18(yaml@2.8.2) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@18.15.0)(typescript@5.9.3) @@ -545,6 +551,80 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + '@amplitude/analytics-browser@2.31.3': + resolution: {integrity: sha512-jGViok5dVYi+4y/OUpH/0+urbba7KK6lmWLJx05TW68ME7lPrZSYO2B1NPzoe6Eym1Rzz6k3njGFR7dtTxcFSQ==} + + '@amplitude/analytics-client-common@2.4.16': + resolution: {integrity: sha512-qF7NAl6Qr6QXcWKnldGJfO0Kp1TYoy1xsmzEDnOYzOS96qngtvsZ8MuKya1lWdVACoofwQo82V0VhNZJKk/2YA==} + + '@amplitude/analytics-connector@1.6.4': + resolution: {integrity: sha512-SpIv0IQMNIq6SH3UqFGiaZyGSc7PBZwRdq7lvP0pBxW8i4Ny+8zwI0pV+VMfMHQwWY3wdIbWw5WQphNjpdq1/Q==} + + '@amplitude/analytics-core@2.33.0': + resolution: {integrity: sha512-56m0R12TjZ41D2YIghb/XNHSdL4CurAVyRT3L2FD+9DCFfbgjfT8xhDBnsZtA+aBkb6Yak1EGUojGBunfAm2/A==} + + '@amplitude/analytics-types@2.11.0': + resolution: {integrity: sha512-L1niBXYSWmbyHUE/GNuf6YBljbafaxWI3X5jjEIZDFCjQvdWO3DKalY1VPFUbhgYQgWw7+bC6I/AlUaporyfig==} + + '@amplitude/experiment-core@0.7.2': + resolution: {integrity: sha512-Wc2NWvgQ+bLJLeF0A9wBSPIaw0XuqqgkPKsoNFQrmS7r5Djd56um75In05tqmVntPJZRvGKU46pAp8o5tdf4mA==} + + '@amplitude/plugin-autocapture-browser@1.18.0': + resolution: {integrity: sha512-hBBZpghTEnl+XF8UZaGxe1xCbSjawdmOkJC0/tQF2k1FwlJS/rdWBGmPd8wH7iU4hd55pnSw28Kd2NL7q0zTcA==} + + '@amplitude/plugin-network-capture-browser@1.7.0': + resolution: {integrity: sha512-tlwkBL0tlc1OUTT2XYTjWx4mm6O0DSggKzkkDq+8DhW+ZFl9OfHMFIh/hDLJzxs1LTtX7CvFUfAVSDifJOs+NA==} + + '@amplitude/plugin-page-url-enrichment-browser@0.5.6': + resolution: {integrity: sha512-H6+tf0zYhvM+8oJsdC/kAbIzuxOY/0p+3HBmX4K+G4doo5nCGAB0DYTr6dqMp1GcPOZ09pKT41+DJ6vwSy4ypQ==} + + '@amplitude/plugin-page-view-tracking-browser@2.6.3': + resolution: {integrity: sha512-lLU4W2r5jXtfn/14cZKM9c9CQDxT7PVVlgm0susHJ3Kfsua9jJQuMHs4Zlg6rwByAtZi5nF4nYE5z0GF09gx0A==} + + '@amplitude/plugin-session-replay-browser@1.23.6': + resolution: {integrity: sha512-MPUVbN/tBTHvqKujqIlzd5mq5d3kpovC/XEVw80dgWUYwOwU7+39vKGc2NZV8iGi3kOtOzm2XTlcGOS2Gtjw3Q==} + + '@amplitude/plugin-web-vitals-browser@1.1.0': + resolution: {integrity: sha512-TA0X4Np4Wt5hkQ4+Ouhg6nm2xjDd9l03OV9N8Kbe1cqpr/sxvRwSpd+kp2eREbp6D7tHFFkKJA2iNtxbE5Y0cA==} + + '@amplitude/rrdom@2.0.0-alpha.33': + resolution: {integrity: sha512-uu+1w1RGEJ7QcGPwCC898YBR47DpNYOZTnQMY9/IgMzTXQ0+Hh1/JLsQfMnBBtAePhvCS0BlHd/qGD5w0taIcg==} + + '@amplitude/rrweb-packer@2.0.0-alpha.32': + resolution: {integrity: sha512-vYT0JFzle/FV9jIpEbuumCLh516az6ltAo7mrd06dlGo1tgos7bJbl3kcnvEXmDG7WWsKwip/Qprap7cZ4CmJw==} + + '@amplitude/rrweb-plugin-console-record@2.0.0-alpha.32': + resolution: {integrity: sha512-oJuBSNuBnqnrRCneW3b/pMirSz0Ubr2Ebz/t+zJhkGBgrTPNMviv8sSyyGuSn0kL4RAh/9QAG1H1hiYf9cuzgA==} + peerDependencies: + '@amplitude/rrweb': ^2.0.0-alpha.32 + + '@amplitude/rrweb-record@2.0.0-alpha.32': + resolution: {integrity: sha512-bs5ItsPfedVNiZyIzYgtey6S6qaU90XcP4/313dcvedzBk9o+eVjBG5DDbStJnwYnSj+lB+oAWw5uc9H9ghKjQ==} + + '@amplitude/rrweb-snapshot@2.0.0-alpha.33': + resolution: {integrity: sha512-06CgbRFS+cYDo1tUa+Fe8eo4QA9qmYv9Azio3UYlYxqJf4BtAYSL0eXuzVBuqt3ZXnQwzBlsUj/8QWKKySkO7A==} + + '@amplitude/rrweb-types@2.0.0-alpha.32': + resolution: {integrity: sha512-tDs8uizkG+UwE2GKjXh+gH8WhUz0C3y7WfTwrtWi1TnsVc00sXaKSUo5G2h4YF4PGK6dpnLgJBqTwrqCZ211AQ==} + + '@amplitude/rrweb-types@2.0.0-alpha.33': + resolution: {integrity: sha512-OTUqndbcuXDZczf99NUq2PqQWTZ4JHK7oF8YT7aOXh1pJVEWhfe6S+J0idHd3YFCy1TD9gtOcdnz5nDJN68Wnw==} + + '@amplitude/rrweb-utils@2.0.0-alpha.32': + resolution: {integrity: sha512-DCCQjuNACkIMkdY5/KBaEgL4znRHU694ClW3RIjqFXJ6j6pqGyjEhCqtlCes+XwdgwOQKnJGMNka3J9rmrSqHg==} + + '@amplitude/rrweb-utils@2.0.0-alpha.33': + resolution: {integrity: sha512-brK6csN0Tj1W5gYERFhamWEPeFLbz9nYokdaUtd8PL/Y0owWXNX11KGP4pMWvl/f1bElDU0vcu3uYAzM4YGLQw==} + + '@amplitude/rrweb@2.0.0-alpha.33': + resolution: {integrity: sha512-vMuk/3HzDWaUzBLFxKd7IpA8TEWjyPZBuLiLexMd/mOfTt/+JkVLsfXiJOyltJfR98LpmMTp1q51dtq357Dnfg==} + + '@amplitude/session-replay-browser@1.29.8': + resolution: {integrity: sha512-f/j1+xUxqK7ewz0OM04Q0m2N4Q+miCOfANe9jb9NAGfZdBu8IfNYswfjPiHdv0+ffXl5UovuyLhl1nV/znIZqA==} + + '@amplitude/targeting@0.2.0': + resolution: {integrity: sha512-/50ywTrC4hfcfJVBbh5DFbqMPPfaIOivZeb5Gb+OGM03QrA+lsUqdvtnKLNuWtceD4H6QQ2KFzPJ5aAJLyzVDA==} + '@antfu/eslint-config@5.4.1': resolution: {integrity: sha512-x7BiNkxJRlXXs8tIvg0CgMuNo5IZVWkGLMJotCtCtzWUHW78Pmm8PvtXhvLBbTc8683GGBK616MMztWLh4RNjA==} hasBin: true @@ -603,9 +683,6 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@antfu/utils@9.3.0': - resolution: {integrity: sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==} - '@apideck/better-ajv-errors@0.3.6': resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} @@ -616,16 +693,16 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.4': - resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.4': - resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -636,14 +713,14 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.3': - resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + '@babel/helper-create-class-features-plugin@7.28.5': + resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': - resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -657,8 +734,8 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.27.1': @@ -699,10 +776,6 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -719,18 +792,13 @@ packages: resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.4': - resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': - resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': + resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -897,8 +965,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.28.4': - resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} + '@babel/plugin-transform-block-scoping@7.28.5': + resolution: {integrity: sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -927,8 +995,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.28.0': - resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -963,8 +1031,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.27.1': - resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + '@babel/plugin-transform-exponentiation-operator@7.28.5': + resolution: {integrity: sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -999,8 +1067,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.27.1': - resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + '@babel/plugin-transform-logical-assignment-operators@7.28.5': + resolution: {integrity: sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1023,8 +1091,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.27.1': - resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + '@babel/plugin-transform-modules-systemjs@7.28.5': + resolution: {integrity: sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1077,8 +1145,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + '@babel/plugin-transform-optional-chaining@7.28.5': + resolution: {integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1149,8 +1217,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.28.3': - resolution: {integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==} + '@babel/plugin-transform-runtime@7.28.5': + resolution: {integrity: sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1185,8 +1253,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.28.0': - resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + '@babel/plugin-transform-typescript@7.28.5': + resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1215,8 +1283,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.28.3': - resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} + '@babel/preset-env@7.28.5': + resolution: {integrity: sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1226,14 +1294,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-react@7.27.1': - resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} + '@babel/preset-react@7.28.5': + resolution: {integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.27.1': - resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1246,12 +1314,8 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.4': - resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.4': - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} engines: {node: '>=6.9.0'} '@babel/types@7.28.5': @@ -1279,11 +1343,11 @@ packages: '@chevrotain/utils@11.0.3': resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} - '@chromatic-com/storybook@4.1.1': - resolution: {integrity: sha512-+Ib4cHtEjKl/Do+4LyU0U1FhLPbIU2Q/zgbOKHBCV+dTC4T3/vGzPqiGsgkdnZyTsK/zXg96LMPSPC4jjOiapg==} + '@chromatic-com/storybook@4.1.3': + resolution: {integrity: sha512-hc0HO9GAV9pxqDE6fTVOV5KeLpTiCfV8Jrpk5ogKLiIgeq2C+NPjpt74YnrZTjiK8E19fYcMP+2WY9ZtX7zHmw==} engines: {node: '>=20.0.0', yarn: '>=1.22.18'} peerDependencies: - storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 + storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 '@clack/core@0.5.0': resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} @@ -1317,11 +1381,11 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - '@emnapi/core@1.6.0': - resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} - '@emnapi/runtime@1.6.0': - resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -1506,6 +1570,10 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-react/ast@1.53.1': resolution: {integrity: sha512-qvUC99ewtriJp9quVEOvZ6+RHcsMLfVQ0OhZ4/LupZUDhjW7GiX1dxJsFaxHdJ9rLNLhQyLSPmbAToeqUrSruQ==} engines: {node: '>=18.18.0'} @@ -1540,8 +1608,8 @@ packages: resolution: {integrity: sha512-yzwopvPntcHU7mmDvWzRo1fb8QhjD8eDRRohD11rTV1u7nWO4QbJi0pOyugQakvte1/W11Y0Vr8Of0Ojk/A6zg==} engines: {node: '>=18.18.0'} - '@eslint/compat@1.4.0': - resolution: {integrity: sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==} + '@eslint/compat@1.4.1': + resolution: {integrity: sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.40 || 9 @@ -1553,28 +1621,28 @@ packages: resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.4.1': - resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.15.2': resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.16.0': - resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.38.0': - resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} + '@eslint/js@9.39.1': + resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/markdown@7.4.1': - resolution: {integrity: sha512-fhcQcylVqgb7GLPr2+6hlDQXK4J3d/fPY6qzk9/i7IYtQkIr15NKI5Zg39Dv2cV/bn5J0Znm69rmu9vJI/7Tlw==} + '@eslint/markdown@7.5.1': + resolution: {integrity: sha512-R8uZemG9dKTbru/DQRPblbJyXpObwKzo8rv1KYGGuPUPtjM4LXBYM9q5CIZAComzZupws3tWbDwam5AFpPLyJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -1585,6 +1653,10 @@ packages: resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@floating-ui/core@1.7.3': resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} @@ -1615,8 +1687,8 @@ packages: '@formatjs/intl-localematcher@0.5.10': resolution: {integrity: sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==} - '@happy-dom/jest-environment@20.0.8': - resolution: {integrity: sha512-e8/c1EW+vUF7MFTZZtPbWrD3rStPnx3X8M4pAaOU++x+1lsXr/bsdoLoHs6bQ2kEZyPRhate3sC6MnpVD/O/9A==} + '@happy-dom/jest-environment@20.0.11': + resolution: {integrity: sha512-gsd01XEvkP290xE29Se2hCzXh0V+9CoKfBZ1RsDPjWd80xmiYuVdpzrnxjAl3MvM5z/YPaMNQCIJizEdu7uWsg==} engines: {node: '>=20.0.0'} peerDependencies: '@jest/environment': '>=25.0.0' @@ -1661,8 +1733,8 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@3.0.2': - resolution: {integrity: sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==} + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} '@img/colour@1.0.0': resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} @@ -1674,8 +1746,8 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-darwin-arm64@0.34.4': - resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] @@ -1686,8 +1758,8 @@ packages: cpu: [x64] os: [darwin] - '@img/sharp-darwin-x64@0.34.4': - resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] @@ -1697,8 +1769,8 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.3': - resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] @@ -1707,8 +1779,8 @@ packages: cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.3': - resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] @@ -1717,8 +1789,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm64@1.2.3': - resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] @@ -1727,23 +1799,28 @@ packages: cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-arm@1.2.3': - resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.2.3': - resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-s390x@1.2.3': - resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] @@ -1752,8 +1829,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-libvips-linux-x64@1.2.3': - resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] @@ -1762,8 +1839,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': - resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] @@ -1772,8 +1849,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.2.3': - resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] @@ -1783,8 +1860,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-linux-arm64@0.34.4': - resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] @@ -1795,26 +1872,32 @@ packages: cpu: [arm] os: [linux] - '@img/sharp-linux-arm@0.34.4': - resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-ppc64@0.34.4': - resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-s390x@0.34.4': - resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] @@ -1825,8 +1908,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-linux-x64@0.34.4': - resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] @@ -1837,8 +1920,8 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.4': - resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] @@ -1849,8 +1932,8 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.4': - resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] @@ -1860,13 +1943,13 @@ packages: engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-wasm32@0.34.4': - resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.4': - resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] @@ -1877,8 +1960,8 @@ packages: cpu: [ia32] os: [win32] - '@img/sharp-win32-ia32@0.34.4': - resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] @@ -1889,8 +1972,8 @@ packages: cpu: [x64] os: [win32] - '@img/sharp-win32-x64@0.34.4': - resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -1903,10 +1986,6 @@ packages: resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -2152,8 +2231,8 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@napi-rs/wasm-runtime@1.0.7': - resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + '@napi-rs/wasm-runtime@1.1.0': + resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} '@neoconfetti/react@1.0.0': resolution: {integrity: sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==} @@ -2330,98 +2409,103 @@ packages: '@octokit/types@14.1.0': resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==} - '@oxc-resolver/binding-android-arm-eabi@11.11.0': - resolution: {integrity: sha512-aN0UJg1xr0N1dADQ135z4p3bP9AYAUN1Ey2VvLMK6IwWYIJGWpKT+cr1l3AiyBeLK8QZyFDb4IDU8LHgjO9TDQ==} + '@oxc-resolver/binding-android-arm-eabi@11.14.2': + resolution: {integrity: sha512-bTrdE4Z1JcGwPxBOaGbxRbpOHL8/xPVJTTq3/bAZO2euWX0X7uZ+XxsbC+5jUDMhLenqdFokgE1akHEU4xsh6A==} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.11.0': - resolution: {integrity: sha512-FckvvMclo8CSJqQjKpHueIIbKrg9L638NKWQTiJQaD8W9F61h8hTjF8+QFLlCHh6R9RcE5roVHdkkiBKHlB2Zw==} + '@oxc-resolver/binding-android-arm64@11.14.2': + resolution: {integrity: sha512-bL7/f6YGKUvt/wzpX7ZrHCf1QerotbSG+IIb278AklXuwr6yQdfQHt7KQ8hAWqSYpB2TAbPbAa9HE4wzVyxL9Q==} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.11.0': - resolution: {integrity: sha512-7ZcpgaXSBnwRHM1YR8Vazq7mCTtGdYRvM7k46CscA+oipCVqmI4LbW2wLsc6HVjqX+SM/KPOfFGoGjEgmQPFTQ==} + '@oxc-resolver/binding-darwin-arm64@11.14.2': + resolution: {integrity: sha512-0zhMhqHz/kC6/UzMC4D9mVBz3/M9UTorbaULfHjAW5b8SUC08H01lZ5fR3OzfDbJI0ByLfiQZmbovuR/pJ8Wzg==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.11.0': - resolution: {integrity: sha512-Wsd1JWORokMmOKrR4t4jxpwYEWG11+AHWu9bdzjCO5EIyi0AuNpPIAEcEFCP9FNd0h8c+VUYbMRU/GooD2zOIg==} + '@oxc-resolver/binding-darwin-x64@11.14.2': + resolution: {integrity: sha512-kRJBTCQnrGy1mjO+658yMrlGYWEKi6j4JvKt92PRCoeDX0vW4jvzgoJXzZXNxZL1pCY6jIdwsn9u53v4jwpR6g==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.11.0': - resolution: {integrity: sha512-YX+W10kHrMouu/+Y+rqJdCWO3dFBKM1DIils30PHsmXWp1v+ZZvhibaST2BP6zrWkWquZ8pMmsObD6N10lLgiA==} + '@oxc-resolver/binding-freebsd-x64@11.14.2': + resolution: {integrity: sha512-lpKiya7qPq5EAV5E16SJbxfhNYRCBZATGngn9mZxR2fMLDVbHISDIP2Br8eWA8M1FBJFsOGgBzxDo+42ySSNZQ==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.11.0': - resolution: {integrity: sha512-UAhlhVkW2ui98bClmEkDLKQz4XBSccxMahG7rMeX2RepS2QByAWxYFFThaNbHtBSB+B4Rc1hudkihq8grQkU3g==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.14.2': + resolution: {integrity: sha512-zRIf49IGs4cE9rwpVM3NxlHWquZpwQLebtc9dY9S+4+B+PSLIP95BrzdRfkspwzWC5DKZsOWpvGQjxQiLoUwGA==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.11.0': - resolution: {integrity: sha512-5pEliabSEiimXz/YyPxzyBST82q8PbM6BoEMS8kOyaDbEBuzTr7pWU1U0F7ILGBFjJmHaj3N7IAhQgeXdpdySg==} + '@oxc-resolver/binding-linux-arm-musleabihf@11.14.2': + resolution: {integrity: sha512-sF1fBrcfwoRkv1pR3Kp6D5MuBeHRPxYuzk9rhaun/50vq5nAMOaomkEm4hBbTSubfU86CoBIEbLUQ+1f7NvUVA==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.11.0': - resolution: {integrity: sha512-CiyufPFIOJrW/HovAMGsH0AbV7BSCb0oE0KDtt7z1+e+qsDo7HRlTSnqE3JbNuhJRg3Cz/j7qEYzgGqco9SE4Q==} + '@oxc-resolver/binding-linux-arm64-gnu@11.14.2': + resolution: {integrity: sha512-O8iTBqz6oxf1k93Rn6WMGGQYo2jV1K81hq4N/Nke3dHE25EIEg2RKQqMz1dFrvVb2RkvD7QaUTEevbx0Lq+4wQ==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-arm64-musl@11.11.0': - resolution: {integrity: sha512-w07MfGtDLZV0rISdXl2cGASxD/sRrrR93Qd4q27O2Hsky4MGbLw94trbzhmAkc7OKoJI0iDg1217i3jfxmVk1Q==} + '@oxc-resolver/binding-linux-arm64-musl@11.14.2': + resolution: {integrity: sha512-HOfzpS6eUxvdch9UlXCMx2kNJWMNBjUpVJhseqAKDB1dlrfCHgexeLyBX977GLXkq2BtNXKsY3KCryy1QhRSRw==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-ppc64-gnu@11.11.0': - resolution: {integrity: sha512-gzM+ZfIjfcCofwX/m1eLCoTT+3T70QLWaKDOW5Hf3+ddLlxMEVRIQtUoRsp0e/VFanr7u7VKS57TxhkRubseNg==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.14.2': + resolution: {integrity: sha512-0uLG6F2zljUseQAUmlpx/9IdKpiLsSirpmrr8/aGVfiEurIJzC/1lo2HQskkM7e0VVOkXg37AjHUDLE23Fi8SA==} cpu: [ppc64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-gnu@11.11.0': - resolution: {integrity: sha512-oCR0ImJQhIwmqwNShsRT0tGIgKF5/H4nhtIEkQAQ9bLzMgjtRqIrZ3DtGHqd7w58zhXWfIZdyPNF9IrSm+J/fQ==} + '@oxc-resolver/binding-linux-riscv64-gnu@11.14.2': + resolution: {integrity: sha512-Pdh0BH/E0YIK7Qg95IsAfQyU9rAoDoFh50R19zCTNfjSnwsoDMGHjmUc82udSfPo2YMnuxA+/+aglxmLQVSu2Q==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-musl@11.11.0': - resolution: {integrity: sha512-MjCEqsUzXMfWPfsEUX+UXttzXz6xiNU11r7sj00C5og/UCyqYw1OjrbC/B1f/dloDpTn0rd4xy6c/LTvVQl2tg==} + '@oxc-resolver/binding-linux-riscv64-musl@11.14.2': + resolution: {integrity: sha512-3DLQhJ2r53rCH5cudYFqD7nh+Z6ABvld3GjbiqHhT43GMIPw3JcHekC2QunLRNjRr1G544fo1HtjTJz9rCBpyg==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-s390x-gnu@11.11.0': - resolution: {integrity: sha512-4TaTX7gT3357vWQsTe3IfDtWyJNe0FejypQ4ngwxB3v1IVaW6KAUt0huSvx/tmj+YWxd3zzXdWd8AzW0jo6dpg==} + '@oxc-resolver/binding-linux-s390x-gnu@11.14.2': + resolution: {integrity: sha512-G5BnAOQ5f+RUG1cvlJ4BvV+P7iKLYBv67snqgcfwD5b2N4UwJj32bt4H5JfolocWy4x3qUjEDWTIjHdE+2uZ9w==} cpu: [s390x] os: [linux] - '@oxc-resolver/binding-linux-x64-gnu@11.11.0': - resolution: {integrity: sha512-ch1o3+tBra9vmrgXqrufVmYnvRPFlyUb7JWs/VXndBmyNSuP2KP+guAUrC0fr2aSGoOQOasAiZza7MTFU7Vrxg==} + '@oxc-resolver/binding-linux-x64-gnu@11.14.2': + resolution: {integrity: sha512-VirQAX2PqKrhWtQGsSDEKlPhbgh3ggjT1sWuxLk4iLFwtyA2tLEPXJNAsG0kfAS2+VSA8OyNq16wRpQlMPZ4yA==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-linux-x64-musl@11.11.0': - resolution: {integrity: sha512-llTdl2gJAqXaGV7iV1w5BVlqXACcoT1YD3o840pCQx1ZmKKAAz7ydPnTjYVdkGImXNWPOIWJixHW0ryDm4Mx7w==} + '@oxc-resolver/binding-linux-x64-musl@11.14.2': + resolution: {integrity: sha512-q4ORcwMkpzu4EhZyka/s2TuH2QklEHAr/mIQBXzu5BACeBJZIFkICp8qrq4XVnkEZ+XhSFTvBECqfMTT/4LSkA==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-wasm32-wasi@11.11.0': - resolution: {integrity: sha512-cROavohP0nX91NtIVVgOTugqoxlUSNxI9j7MD+B7fmD3gEFl8CVyTamR0/p6loDxLv51bQYTHRKn/ZYTd3ENzw==} + '@oxc-resolver/binding-openharmony-arm64@11.14.2': + resolution: {integrity: sha512-ZsMIpDCxSFpUM/TwOovX5vZUkV0IukPFnrKTGaeJRuTKXMcJxMiQGCYTwd6y684Y3j55QZqIMkVM9NdCGUX6Kw==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.14.2': + resolution: {integrity: sha512-Lvq5ZZNvSjT3Jq/buPFMtp55eNyGlEWsq30tN+yLOfODSo6T6yAJNs6+wXtqu9PiMj4xpVtgXypHtbQ1f+t7kw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.11.0': - resolution: {integrity: sha512-6amVs34yHmxE6Q3CtTPXnSvIYGqwQJ/lVVRYccLzg9smge3WJ1knyBV5jpKKayp0n316uPYzB4EgEbgcuRvrPw==} + '@oxc-resolver/binding-win32-arm64-msvc@11.14.2': + resolution: {integrity: sha512-7w7WHSLSSmkkYHH52QF7TrO0Z8eaIjRUrre5M56hSWRAZupCRzADZxBVMpDnHobZ8MAa2kvvDEfDbERuOK/avQ==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-ia32-msvc@11.11.0': - resolution: {integrity: sha512-v/IZ5s2/3auHUoi0t6Ea1CDsWxrE9BvgvbDcJ04QX+nEbmTBazWPZeLsH8vWkRAh8EUKCZHXxjQsPhEH5Yk5pQ==} + '@oxc-resolver/binding-win32-ia32-msvc@11.14.2': + resolution: {integrity: sha512-hIrdlWa6tzqyfuWrxUetURBWHttBS+NMbBrGhCupc54NCXFy2ArB+0JOOaLYiI2ShKL5a3uqB7EWxmjzOuDdPQ==} cpu: [ia32] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.11.0': - resolution: {integrity: sha512-qvm+IQ6r2q4HZitSV69O+OmvCD1y4pH7SbhR6lPwLsfZS5QRHS8V20VHxmG1jJzSPPw7S8Bb1rdNcxDSqc4bYA==} + '@oxc-resolver/binding-win32-x64-msvc@11.14.2': + resolution: {integrity: sha512-dP9aV6AZRRpg5mlg0eMuTROtttpQwj3AiegNJ/NNmMSjs+0+aLNcgkWRPhskK3vjTsthH4/+kKLpnQhSxdJkNg==} cpu: [x64] os: [win32] @@ -2507,10 +2591,6 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2664,6 +2744,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-primitive@2.1.4': + resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} + peerDependencies: + '@types/react': ~19.1.17 + '@types/react-dom': ~19.1.11 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-slot@1.2.3': resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: @@ -2673,6 +2766,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + peerDependencies: + '@types/react': ~19.1.17 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: @@ -2822,12 +2924,30 @@ packages: peerDependencies: rollup: ^1.20.0 || ^2.0.0 + '@rollup/plugin-replace@6.0.3': + resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@3.1.0': resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@sentry-internal/browser-utils@8.55.0': resolution: {integrity: sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==} engines: {node: '>=14.18'} @@ -2977,8 +3097,8 @@ packages: typescript: optional: true - '@stylistic/eslint-plugin@5.5.0': - resolution: {integrity: sha512-IeZF+8H0ns6prg4VrkhgL+yrvDXWDH2cKchrbh80ejG9dQgZWp10epHMbgRuQvgchLII/lfh6Xn3lu6+6L86Hw==} + '@stylistic/eslint-plugin@5.6.1': + resolution: {integrity: sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -3004,41 +3124,45 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tanstack/devtools-event-client@0.3.3': - resolution: {integrity: sha512-RfV+OPV/M3CGryYqTue684u10jUt55PEqeBOnOtCe6tAmHI9Iqyc8nHeDhWPEV9715gShuauFVaMc9RiUVNdwg==} + '@tanstack/devtools-event-client@0.3.5': + resolution: {integrity: sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==} engines: {node: '>=18'} - '@tanstack/form-core@1.24.3': - resolution: {integrity: sha512-e+HzSD49NWr4aIqJWtPPzmi+/phBJAP3nSPN8dvxwmJWqAxuB/cH138EcmCFf3+oA7j3BXvwvTY0I+8UweGPjQ==} + '@tanstack/form-core@1.27.0': + resolution: {integrity: sha512-QFEhg9/VcrwtpbcN7Qpl8JVVfEm2UJ+dzfDFGGMYub2J9jsgrp2HmaY7LSLlnkpTJlCIDxQiWDkiOFYQtK6yzw==} - '@tanstack/query-core@5.90.5': - resolution: {integrity: sha512-wLamYp7FaDq6ZnNehypKI5fNvxHPfTYylE0m/ZpuuzJfJqhR5Pxg9gvGBHZx4n7J+V5Rg5mZxHHTlv25Zt5u+w==} + '@tanstack/pacer@0.15.4': + resolution: {integrity: sha512-vGY+CWsFZeac3dELgB6UZ4c7OacwsLb8hvL2gLS6hTgy8Fl0Bm/aLokHaeDIP+q9F9HUZTnp360z9uv78eg8pg==} + engines: {node: '>=18'} - '@tanstack/query-devtools@5.90.1': - resolution: {integrity: sha512-GtINOPjPUH0OegJExZ70UahT9ykmAhmtNVcmtdnOZbxLwT7R5OmRztR5Ahe3/Cu7LArEmR6/588tAycuaWb1xQ==} + '@tanstack/query-core@5.90.11': + resolution: {integrity: sha512-f9z/nXhCgWDF4lHqgIE30jxLe4sYv15QodfdPDKYAk7nAEjNcndy4dHz3ezhdUaR23BpWa4I2EH4/DZ0//Uf8A==} - '@tanstack/react-form@1.23.7': - resolution: {integrity: sha512-p/j9Gi2+s135sOjj48RjM+6xZQr1FVpliQlETLYBEGmmmxWHgYYs2b62mTDSnuv7AqtuZhpQ+t0CRFVfbQLsFA==} + '@tanstack/query-devtools@5.91.1': + resolution: {integrity: sha512-l8bxjk6BMsCaVQH6NzQEE/bEgFy1hAs5qbgXl0xhzezlaQbPk6Mgz9BqEg2vTLPOHD8N4k+w/gdgCbEzecGyNg==} + + '@tanstack/react-form@1.27.0': + resolution: {integrity: sha512-7MBOtvjlUwkGpvA9TIOs3YdLoyfJWZYtxuAQIdkLDZ9HLrRaRbxWQIZ2H6sRVA35sPvx6uiQMunGHOPKip5AZA==} peerDependencies: - '@tanstack/react-start': ^1.130.10 + '@tanstack/react-start': '*' react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@tanstack/react-start': optional: true - '@tanstack/react-query-devtools@5.90.2': - resolution: {integrity: sha512-vAXJzZuBXtCQtrY3F/yUNJCV4obT/A/n81kb3+YqLbro5Z2+phdAbceO+deU3ywPw8B42oyJlp4FhO0SoivDFQ==} + '@tanstack/react-query-devtools@5.91.1': + resolution: {integrity: sha512-tRnJYwEbH0kAOuToy8Ew7bJw1lX3AjkkgSlf/vzb+NpnqmHPdWM+lA2DSdGQSLi1SU0PDRrrCI1vnZnci96CsQ==} peerDependencies: - '@tanstack/react-query': ^5.90.2 + '@tanstack/react-query': ^5.90.10 react: ^18 || ^19 - '@tanstack/react-query@5.90.5': - resolution: {integrity: sha512-pN+8UWpxZkEJ/Rnnj2v2Sxpx1WFlaa9L6a4UO89p6tTQbeo+m0MS8oYDjbggrR8QcTyjKoYWKS3xJQGr3ExT8Q==} + '@tanstack/react-query@5.90.11': + resolution: {integrity: sha512-3uyzz01D1fkTLXuxF3JfoJoHQMU2fxsfJwE+6N5hHy0dVNoZOvwKP8Z2k7k1KDeD54N20apcJnG75TBAStIrBA==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-store@0.7.7': - resolution: {integrity: sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==} + '@tanstack/react-store@0.8.0': + resolution: {integrity: sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3052,6 +3176,9 @@ packages: '@tanstack/store@0.7.7': resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} + '@tanstack/store@0.8.0': + resolution: {integrity: sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ==} + '@tanstack/virtual-core@3.13.12': resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} @@ -3084,8 +3211,8 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -3120,6 +3247,9 @@ packages: '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/css-font-loading-module@0.0.7': + resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==} + '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -3288,8 +3418,8 @@ packages: '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - '@types/lodash@4.17.20': - resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + '@types/lodash@4.17.21': + resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -3310,11 +3440,11 @@ packages: '@types/node@18.15.0': resolution: {integrity: sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==} - '@types/node@20.19.23': - resolution: {integrity: sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==} + '@types/node@20.19.25': + resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==} - '@types/papaparse@5.3.16': - resolution: {integrity: sha512-T3VuKMC2H0lgsjI9buTB3uuKj3EMD2eap1MOuEQuBQ44EnDx/IkGhU6EwiTf9zG3za4SKlmwKAImdDKdNnCsXg==} + '@types/papaparse@5.5.1': + resolution: {integrity: sha512-esEO+VISsLIyE+JZBmb89NzsYYbpwV8lmv2rPo6oX5y9KhBaIP7hhHgjuTut54qjdKVMufTEcrh5fUl9+58huw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -3351,8 +3481,8 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/sortablejs@1.15.8': - resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} + '@types/sortablejs@1.15.9': + resolution: {integrity: sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -3375,77 +3505,80 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.46.2': - resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} + '@types/zen-observable@0.8.3': + resolution: {integrity: sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==} + + '@typescript-eslint/eslint-plugin@8.48.1': + resolution: {integrity: sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.2 + '@typescript-eslint/parser': ^8.48.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.46.2': - resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} + '@typescript-eslint/parser@8.48.1': + resolution: {integrity: sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.46.2': - resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} + '@typescript-eslint/project-service@8.48.1': + resolution: {integrity: sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.46.2': - resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} + '@typescript-eslint/scope-manager@8.48.1': + resolution: {integrity: sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.2': - resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} + '@typescript-eslint/tsconfig-utils@8.48.1': + resolution: {integrity: sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.46.2': - resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} + '@typescript-eslint/type-utils@8.48.1': + resolution: {integrity: sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.46.2': - resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} + '@typescript-eslint/types@8.48.1': + resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.2': - resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} + '@typescript-eslint/typescript-estree@8.48.1': + resolution: {integrity: sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.2': - resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} + '@typescript-eslint/utils@8.48.1': + resolution: {integrity: sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.46.2': - resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} + '@typescript-eslint/visitor-keys@8.48.1': + resolution: {integrity: sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vitest/eslint-plugin@1.3.23': - resolution: {integrity: sha512-kp1vjoJTdVf8jWdzr/JpHIPfh3HMR6JBr2p7XuH4YNx0UXmV4XWdgzvCpAmH8yb39Gry31LULiuBcuhyc/OqkQ==} + '@vitest/eslint-plugin@1.5.1': + resolution: {integrity: sha512-t49CNERe/YadnLn90NTTKJLKzs99xBkXElcoUTLodG6j1G0Q7jy3mXqqiHd3N5aryG2KkgOg4UAoGwgwSrZqKQ==} engines: {node: '>=18'} peerDependencies: - eslint: '>= 8.57.0' - typescript: '>= 5.0.0' + eslint: '>=8.57.0' + typescript: '>=5.0.0' vitest: '*' peerDependenciesMeta: typescript: @@ -3476,20 +3609,20 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vue/compiler-core@3.5.22': - resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==} + '@vue/compiler-core@3.5.25': + resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} - '@vue/compiler-dom@3.5.22': - resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==} + '@vue/compiler-dom@3.5.25': + resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} - '@vue/compiler-sfc@3.5.22': - resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==} + '@vue/compiler-sfc@3.5.25': + resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==} - '@vue/compiler-ssr@3.5.22': - resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==} + '@vue/compiler-ssr@3.5.25': + resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==} - '@vue/shared@3.5.22': - resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} + '@vue/shared@3.5.25': + resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -3536,6 +3669,9 @@ packages: '@webassemblyjs/wast-printer@1.14.1': resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + '@xstate/fsm@1.6.5': + resolution: {integrity: sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==} + '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -3573,9 +3709,8 @@ packages: resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} engines: {node: '>=8.9'} - ahooks@3.9.5: - resolution: {integrity: sha512-TrjXie49Q8HuHKTa84Fm9A+famMDAG1+7a9S9Gq6RQ0h90Jgqmiq3CkObuRjWT/C4d6nRZCw35Y2k2fmybb5eA==} - engines: {node: '>=18'} + ahooks@3.9.6: + resolution: {integrity: sha512-Mr7f05swd5SmKlR9SZo5U6M0LsL4ErweLzpdgXjA1JPmnZ78Vr6wzx0jUtvoxrcqGKYnX0Yjc02iEASVxHFPjQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3608,8 +3743,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.1.1: - resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -3714,8 +3849,8 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + autoprefixer@10.4.22: + resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -3788,11 +3923,15 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.18: - resolution: {integrity: sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==} + baseline-browser-mapping@2.8.32: + resolution: {integrity: sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==} hasBin: true before-after-hook@3.0.2: @@ -3809,8 +3948,8 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bing-translate-api@4.1.0: - resolution: {integrity: sha512-oP2663Yd5MXX4kbB/3LdS9YgPiE+ls9+2iFZH2ZXigWhWyHT3R4m6aCup4TNJd3/U4gqHHnQoxTaIW7uOf4+vA==} + bing-translate-api@4.2.0: + resolution: {integrity: sha512-7a9yo1NbGcHPS8zXTdz8tCOymHZp2pvCuYOChCaXKjOX8EIwdV3SLd4D7RGIqZt1UhffypYBUcAV2gDcTgK0rA==} birecord@0.1.1: resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} @@ -3857,8 +3996,8 @@ packages: browserify-zlib@0.2.0: resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - browserslist@4.26.3: - resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3923,8 +4062,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001751: - resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} + caniuse-lite@1.0.30001757: + resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} canvas@3.2.0: resolution: {integrity: sha512-jk0GxrLtUEmW/TmFsk2WghvgHe8B0pxGilqCL21y8lHkPUGa6FTsnCNtHPOzT8O3y+N+m3espawV80bbBlgfTA==} @@ -4004,8 +4143,8 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chromatic@12.2.0: - resolution: {integrity: sha512-GswmBW9ZptAoTns1BMyjbm55Z7EsIJnUvYKdQqXIBZIKbGErmpA+p4c0BYA+nzw5B0M+rb3Iqp1IaH8TFwIQew==} + chromatic@13.3.4: + resolution: {integrity: sha512-TR5rvyH0ESXobBB3bV8jc87AEAFQC7/n+Eb4XWhJz6hW3YNxIQPVjcbgLv+a4oKHEl1dUBueWSoIQsOVGTd+RQ==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -4186,11 +4325,11 @@ packages: copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - core-js-compat@3.46.0: - resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} + core-js-compat@3.47.0: + resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} - core-js-pure@3.46.0: - resolution: {integrity: sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==} + core-js-pure@3.47.0: + resolution: {integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -4282,8 +4421,8 @@ packages: engines: {node: '>=4'} hasBin: true - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} cytoscape-cose-bilkent@4.1.0: resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} @@ -4459,9 +4598,6 @@ packages: decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - decode-formdata@0.9.0: - resolution: {integrity: sha512-q5uwOjR3Um5YD+ZWPOF/1sGHVW9A5rCrRwITQChRXlmPkxDFBqCm4jNTIVdGHNH9OnR+V9MoZVgRhsFb+ARbUw==} - decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} @@ -4533,9 +4669,6 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - devalue@5.4.1: - resolution: {integrity: sha512-YtoaOfsqjbZQKGIMRYDWKjUmSB4VJ/RElB+bXZawQAQYAo4xu08GKTMVlsZDTF6R2MbAgjcAQRPI5eIyRAT2OQ==} - devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -4591,8 +4724,8 @@ packages: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} - dompurify@3.1.7: - resolution: {integrity: sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==} + dompurify@3.2.7: + resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} dompurify@3.3.0: resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==} @@ -4624,8 +4757,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.237: - resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} + electron-to-chromium@1.5.263: + resolution: {integrity: sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==} elkjs@0.9.3: resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} @@ -4809,8 +4942,8 @@ packages: resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} - eslint-plugin-oxlint@1.23.0: - resolution: {integrity: sha512-YT/ObCQMluSHVEqDJPwrVLERkUUQnmcRYYQbB7h6t2P4243WE3Z1UmUcPy1Q6vSVP/U7vw5affptlGV2RizDuw==} + eslint-plugin-oxlint@1.31.0: + resolution: {integrity: sha512-yIUkBg9qZCL9DZVSvH3FklF5urG7LRboZD0/YLf/CvihPpcfBeMyH1onaG3+iKMCIRa/uwXgdRjB5MSOplFTVw==} eslint-plugin-perfectionist@4.15.1: resolution: {integrity: sha512-MHF0cBoOG0XyBf7G0EAFCuJJu4I18wy0zAoT1OHfx2o6EOx1EFTIzr2HGeuZa1kDcusoX0xJ9V7oZmaeFd773Q==} @@ -4908,12 +5041,12 @@ packages: peerDependencies: eslint: ^8.0.0 || ^9.0.0 - eslint-plugin-storybook@9.1.13: - resolution: {integrity: sha512-kPuhbtGDiJLB5OLZuwFZAxgzWakNDw64sJtXUPN8g0+VAeXfHyZEmsE28qIIETHxtal71lPKVm8QNnERaJHPJQ==} + eslint-plugin-storybook@9.1.16: + resolution: {integrity: sha512-I8f3DXniPxFbcptVgOjtIHNvW6sDu1O2d1zNsxLKmeAvEaRLus1ij8iFHCgkNzMthrU5U2F4Wdo/aaSpz5kHjA==} engines: {node: '>=20.0.0'} peerDependencies: eslint: '>=8' - storybook: ^9.1.13 + storybook: ^9.1.16 eslint-plugin-tailwindcss@3.18.2: resolution: {integrity: sha512-QbkMLDC/OkkjFQ1iz/5jkMdHfiMu/uwujUHLAJK5iwNHD8RTxVTlsUezE0toTZ6VhybNBsk+gYGPDq2agfeRNA==} @@ -4942,8 +5075,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-plugin-vue@10.5.1: - resolution: {integrity: sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==} + eslint-plugin-vue@10.6.2: + resolution: {integrity: sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -4984,8 +5117,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.38.0: - resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==} + eslint@9.39.1: + resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -5088,8 +5221,8 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -5144,6 +5277,9 @@ packages: picomatch: optional: true + fflate@0.4.8: + resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -5202,10 +5338,6 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - fork-ts-checker-webpack-plugin@8.0.0: resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} @@ -5222,8 +5354,8 @@ packages: engines: {node: '>=18.3.0'} hasBin: true - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -5285,8 +5417,8 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.12.0: - resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -5305,10 +5437,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -5321,8 +5449,8 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} globby@11.1.0: @@ -5353,8 +5481,8 @@ packages: hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - happy-dom@20.0.8: - resolution: {integrity: sha512-TlYaNQNtzsZ97rNMBAm8U+e2cUQXNithgfCizkDgc11lgmN4j9CKMhO3FPGKWQYPwwkFcPpoXYF/CqEPLgzfOg==} + happy-dom@20.0.11: + resolution: {integrity: sha512-QsCdAUHAmiDeKeaNojb1OHOPF7NjcWPBR7obdu3NwH2a/oyQaLg5d0aaCy/9My6CdPChYF07dvz5chaXBGaD4g==} engines: {node: '>=20.0.0'} has-flag@4.0.0: @@ -5459,8 +5587,8 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - html-webpack-plugin@5.6.4: - resolution: {integrity: sha512-V/PZeWsqhfpE27nKeX9EO2sbR+D17A+tLf6qU+ht66jdUsN0QLKJN27Z+1+gHrVMKgndBahes0PU6rRihDgHTw==} + html-webpack-plugin@5.6.5: + resolution: {integrity: sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==} engines: {node: '>=10.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -5513,9 +5641,15 @@ packages: peerDependencies: postcss: ^8.1.0 + idb-keyval@6.2.2: + resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} + idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + idb@8.0.0: + resolution: {integrity: sha512-l//qvlAKGmQO31Qn7xdzagVPPaHTxXx199MhrAFuVBTPqydcPYBWjkrbv4Y0ktB+GmWOiwHl237UUOrLmQxLvw==} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -5532,8 +5666,8 @@ packages: engines: {node: '>=16.x'} hasBin: true - immer@10.1.3: - resolution: {integrity: sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==} + immer@10.2.0: + resolution: {integrity: sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==} immutable@5.1.4: resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} @@ -5569,8 +5703,8 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} internmap@1.0.1: resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} @@ -5733,9 +5867,6 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.4: resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} @@ -5889,6 +6020,9 @@ packages: js-audio-recorder@1.0.7: resolution: {integrity: sha512-JiDODCElVHGrFyjGYwYyNi7zCbKk9va9C77w+zCPMmi4C6ix7zsX2h3ddHugmo4dOTOTCym9++b/wVW9nC0IaA==} + js-base64@3.7.8: + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} + js-cookie@3.0.5: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} @@ -5896,12 +6030,12 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsdoc-type-pratt-parser@4.1.0: @@ -5984,19 +6118,16 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - knip@5.66.2: - resolution: {integrity: sha512-5wvsdc17C5bMxjuGfN9KVS/tW5KIvzP1RClfpTMdLYm8IXIsfWsiHlFkTvZIca9skwoVDyTyXmbRq4w1Poim+A==} + knip@5.71.0: + resolution: {integrity: sha512-hwgdqEJ+7DNJ5jE8BCPu7b57TY7vUwP6MzWYgCgPpg6iPCee/jKPShDNIlFER2koti4oz5xF88VJbKCb4Wl71g==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: '@types/node': '>=18' typescript: '>=5.0.4 <7' - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - - ky@1.12.0: - resolution: {integrity: sha512-YRLmSUHCwOJRBMArtqMRLOmO7fewn3yOoui6aB8ERkRVXupa0UiaQaKbIXteMt4jUElhbdqTMsLFHs8APxxUoQ==} + ky@1.14.0: + resolution: {integrity: sha512-Rczb6FMM6JT0lvrOlP5WUOCB7s9XKxzwgErzhKlKde1bEV90FXplV1o87fpt4PU/asJFiqjYJxAJyzJhcrxOsQ==} engines: {node: '>=18'} lamejs@1.2.1: @@ -6117,9 +6248,6 @@ packages: lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6134,9 +6262,6 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -6225,8 +6350,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -6413,8 +6538,8 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} minimatch@3.1.2: @@ -6431,10 +6556,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -6444,8 +6565,8 @@ packages: mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} - monaco-editor@0.54.0: - resolution: {integrity: sha512-hx45SEUoLatgWxHKCmlLJH81xBo0uXP4sRkESUpmDQevfi+e7K1VuiSprK6UpQ8u4zOcKNiH0pMvHvlMWA/4cw==} + monaco-editor@0.55.1: + resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} @@ -6514,8 +6635,8 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.78.0: - resolution: {integrity: sha512-E2wEyrgX/CqvicaQYU3Ze1PFGjc4QYPGsjUrlYkqAE0WjHEZwgOsGMPMzkMse4LjJbDmaEuDX3CM036j5K2DSQ==} + node-abi@3.85.0: + resolution: {integrity: sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==} engines: {node: '>=10'} node-abort-controller@3.1.1: @@ -6533,8 +6654,8 @@ packages: peerDependencies: webpack: '>=5' - node-releases@2.0.25: - resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -6606,8 +6727,8 @@ packages: os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - oxc-resolver@11.11.0: - resolution: {integrity: sha512-vVeBJf77zBeqOA/LBCTO/pr0/ETHGSleCRsI5Kmsf2OsfB5opzhhZptt6VxkqjKWZH+eF1se88fYDG5DGRLjkg==} + oxc-resolver@11.14.2: + resolution: {integrity: sha512-M5fERQKcrCngMZNnk1gRaBbYcqpqXLgMcoqAo7Wpty+KH0I18i03oiy2peUsGJwFaKAEbmo+CtAyhXh08RZ1RA==} p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} @@ -6645,11 +6766,8 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - package-manager-detector@1.5.0: - resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -6726,10 +6844,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -6749,10 +6863,6 @@ packages: resolution: {integrity: sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==} engines: {node: '>=0.12'} - pbkdf2@3.1.5: - resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} - engines: {node: '>= 0.10'} - pdfjs-dist@4.4.168: resolution: {integrity: sha512-MbkAjpwka/dMHaCfQ75RY1FXX3IewBVu6NGZOcxerRFlaBiIkZmUoR0jotX5VUzYZEXAGzSFtknWs5xRKliXPA==} engines: {node: '>=18'} @@ -6908,8 +7018,8 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -7058,8 +7168,8 @@ packages: react: '>= 16.3.0' react-dom: '>= 16.3.0' - react-easy-crop@5.5.3: - resolution: {integrity: sha512-iKwFTnAsq+IVuyF6N0Q3zjRx9DG1NMySkwWxVfM/xAOeHYH1vhvM+V2kFiq5HOIQGWouITjfltCx54mbDpMpmA==} + react-easy-crop@5.5.6: + resolution: {integrity: sha512-Jw3/ozs8uXj3NpL511Suc4AHY+mLRO23rUgipXvNYKqezcFSYHxe4QXibBymkOoY6oOtLVMPO2HNPRHYvMPyTw==} peerDependencies: react: '>=16.4.0' react-dom: '>=16.4.0' @@ -7072,8 +7182,8 @@ packages: react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - react-hook-form@7.65.0: - resolution: {integrity: sha512-xtOzDz063WcXvGWaHgLNrNzlsdFgtUWcb32E6WFaGTd7kPZG3EeDusjdZfUsPwKCKVXy1ZlntifaHZ4l8pAsmw==} + react-hook-form@7.67.0: + resolution: {integrity: sha512-E55EOwKJHHIT/I6J9DmQbCWToAYSw9nN5R57MZw9rMtjh+YQreMDxRLfdjfxQbiJ3/qbg3Z02wGzBX4M+5fMtQ==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -7145,8 +7255,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.7.1: - resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} engines: {node: '>=10'} peerDependencies: '@types/react': ~19.1.17 @@ -7429,11 +7539,14 @@ packages: rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - sass-loader@16.0.5: - resolution: {integrity: sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==} + sass-loader@16.0.6: + resolution: {integrity: sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -7453,8 +7566,8 @@ packages: webpack: optional: true - sass@1.93.2: - resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} + sass@1.94.2: + resolution: {integrity: sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==} engines: {node: '>=14.0.0'} hasBin: true @@ -7513,8 +7626,8 @@ packages: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.34.4: - resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: @@ -7563,8 +7676,8 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} - smol-toml@1.4.2: - resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} + smol-toml@1.5.2: + resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} engines: {node: '>= 18'} sortablejs@1.15.6: @@ -7651,8 +7764,8 @@ packages: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} - string-ts@2.2.1: - resolution: {integrity: sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==} + string-ts@2.3.1: + resolution: {integrity: sha512-xSJq+BS52SaFFAVxuStmx6n5aYZU571uYUnUrPXkPFCfdHyZMMlbP2v2Wx5sNBnAVzq/2+0+mcBLBa3Xa5ubYw==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -7715,8 +7828,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-json-comments@5.0.2: - resolution: {integrity: sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g==} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} style-loader@3.3.4: @@ -7725,11 +7838,11 @@ packages: peerDependencies: webpack: ^5.0.0 - style-to-js@1.1.18: - resolution: {integrity: sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - style-to-object@1.0.11: - resolution: {integrity: sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow==} + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} @@ -7760,8 +7873,8 @@ packages: stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true @@ -7777,8 +7890,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - swr@2.3.6: - resolution: {integrity: sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==} + swr@2.3.7: + resolution: {integrity: sha512-ZEquQ82QvalqTxhBVv/DlAg2mbmUjF4UgpPg9wwk4ufb9rQnZXh1iKyyKBqV6bQGu1Ie7L1QwSYO07qFIa1p+g==} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -7786,8 +7899,8 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tabbable@6.3.0: + resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} tailwind-merge@2.6.0: resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} @@ -7832,8 +7945,8 @@ packages: uglify-js: optional: true - terser@5.44.0: - resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + terser@5.44.1: + resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true @@ -7858,8 +7971,9 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} @@ -7873,11 +7987,11 @@ packages: resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tldts-core@7.0.17: - resolution: {integrity: sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==} + tldts-core@7.0.19: + resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} - tldts@7.0.17: - resolution: {integrity: sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==} + tldts@7.0.19: + resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} hasBin: true tmpl@1.0.5: @@ -7946,8 +8060,8 @@ packages: '@swc/wasm': optional: true - ts-pattern@5.8.0: - resolution: {integrity: sha512-kIjN2qmWiHnhgr5DAkAafF9fwb0T5OhMVSWrm8XEdTFnX6+wfXwYOFjeF86UZ54vduqiR7BfqScFmXSzSaH8oA==} + ts-pattern@5.9.0: + resolution: {integrity: sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==} tsconfig-paths-webpack-plugin@4.2.0: resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} @@ -8078,8 +8192,8 @@ packages: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -8232,6 +8346,9 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + web-vitals@5.0.1: + resolution: {integrity: sha512-BsULPWaCKAAtNntUz0aJq1cu1wyuWmDzf4N6vYNMbYA6zzQAf2pzCYbyClf+Ui2MI54bt225AwugXIfL1W+Syg==} + webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} @@ -8262,8 +8379,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.102.1: - resolution: {integrity: sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==} + webpack@5.103.0: + resolution: {integrity: sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -8349,10 +8466,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} @@ -8403,16 +8516,16 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml-eslint-parser@1.3.0: - resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==} + yaml-eslint-parser@1.3.1: + resolution: {integrity: sha512-MdSgP9YA9QjtAO2+lt4O7V2bnH22LPnfeVLiQqjY3cOyn8dy/Ief8otjIe6SPPTK03nM7O3Yl0LTfWuF7l+9yw==} engines: {node: ^14.17.0 || >=16.0.0} yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} hasBin: true @@ -8436,15 +8549,21 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} + zen-observable-ts@1.1.0: + resolution: {integrity: sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==} + + zen-observable@0.8.15: + resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} + zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.12: - resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} + zod@4.1.13: + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} zrender@5.6.1: resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==} @@ -8496,50 +8615,188 @@ snapshots: '@alloc/quick-lru@5.2.0': {} - '@antfu/eslint-config@5.4.1(@eslint-react/eslint-plugin@1.53.1(eslint@9.38.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.4)(@vue/compiler-sfc@3.5.22)(eslint-plugin-react-hooks@5.2.0(eslint@9.38.0(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.24(eslint@9.38.0(jiti@1.21.7)))(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@amplitude/analytics-browser@2.31.3': + dependencies: + '@amplitude/analytics-core': 2.33.0 + '@amplitude/plugin-autocapture-browser': 1.18.0 + '@amplitude/plugin-network-capture-browser': 1.7.0 + '@amplitude/plugin-page-url-enrichment-browser': 0.5.6 + '@amplitude/plugin-page-view-tracking-browser': 2.6.3 + '@amplitude/plugin-web-vitals-browser': 1.1.0 + tslib: 2.8.1 + + '@amplitude/analytics-client-common@2.4.16': + dependencies: + '@amplitude/analytics-connector': 1.6.4 + '@amplitude/analytics-core': 2.33.0 + '@amplitude/analytics-types': 2.11.0 + tslib: 2.8.1 + + '@amplitude/analytics-connector@1.6.4': {} + + '@amplitude/analytics-core@2.33.0': + dependencies: + '@amplitude/analytics-connector': 1.6.4 + tslib: 2.8.1 + zen-observable-ts: 1.1.0 + + '@amplitude/analytics-types@2.11.0': {} + + '@amplitude/experiment-core@0.7.2': + dependencies: + js-base64: 3.7.8 + + '@amplitude/plugin-autocapture-browser@1.18.0': + dependencies: + '@amplitude/analytics-core': 2.33.0 + rxjs: 7.8.2 + tslib: 2.8.1 + + '@amplitude/plugin-network-capture-browser@1.7.0': + dependencies: + '@amplitude/analytics-core': 2.33.0 + tslib: 2.8.1 + + '@amplitude/plugin-page-url-enrichment-browser@0.5.6': + dependencies: + '@amplitude/analytics-core': 2.33.0 + tslib: 2.8.1 + + '@amplitude/plugin-page-view-tracking-browser@2.6.3': + dependencies: + '@amplitude/analytics-core': 2.33.0 + tslib: 2.8.1 + + '@amplitude/plugin-session-replay-browser@1.23.6(@amplitude/rrweb@2.0.0-alpha.33)(rollup@2.79.2)': + dependencies: + '@amplitude/analytics-client-common': 2.4.16 + '@amplitude/analytics-core': 2.33.0 + '@amplitude/analytics-types': 2.11.0 + '@amplitude/session-replay-browser': 1.29.8(@amplitude/rrweb@2.0.0-alpha.33)(rollup@2.79.2) + idb-keyval: 6.2.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@amplitude/rrweb' + - rollup + + '@amplitude/plugin-web-vitals-browser@1.1.0': + dependencies: + '@amplitude/analytics-core': 2.33.0 + tslib: 2.8.1 + web-vitals: 5.0.1 + + '@amplitude/rrdom@2.0.0-alpha.33': + dependencies: + '@amplitude/rrweb-snapshot': 2.0.0-alpha.33 + + '@amplitude/rrweb-packer@2.0.0-alpha.32': + dependencies: + '@amplitude/rrweb-types': 2.0.0-alpha.32 + fflate: 0.4.8 + + '@amplitude/rrweb-plugin-console-record@2.0.0-alpha.32(@amplitude/rrweb@2.0.0-alpha.33)': + dependencies: + '@amplitude/rrweb': 2.0.0-alpha.33 + + '@amplitude/rrweb-record@2.0.0-alpha.32': + dependencies: + '@amplitude/rrweb': 2.0.0-alpha.33 + '@amplitude/rrweb-types': 2.0.0-alpha.32 + + '@amplitude/rrweb-snapshot@2.0.0-alpha.33': + dependencies: + postcss: 8.5.6 + + '@amplitude/rrweb-types@2.0.0-alpha.32': {} + + '@amplitude/rrweb-types@2.0.0-alpha.33': {} + + '@amplitude/rrweb-utils@2.0.0-alpha.32': {} + + '@amplitude/rrweb-utils@2.0.0-alpha.33': {} + + '@amplitude/rrweb@2.0.0-alpha.33': + dependencies: + '@amplitude/rrdom': 2.0.0-alpha.33 + '@amplitude/rrweb-snapshot': 2.0.0-alpha.33 + '@amplitude/rrweb-types': 2.0.0-alpha.33 + '@amplitude/rrweb-utils': 2.0.0-alpha.33 + '@types/css-font-loading-module': 0.0.7 + '@xstate/fsm': 1.6.5 + base64-arraybuffer: 1.0.2 + mitt: 3.0.1 + + '@amplitude/session-replay-browser@1.29.8(@amplitude/rrweb@2.0.0-alpha.33)(rollup@2.79.2)': + dependencies: + '@amplitude/analytics-client-common': 2.4.16 + '@amplitude/analytics-core': 2.33.0 + '@amplitude/analytics-types': 2.11.0 + '@amplitude/rrweb-packer': 2.0.0-alpha.32 + '@amplitude/rrweb-plugin-console-record': 2.0.0-alpha.32(@amplitude/rrweb@2.0.0-alpha.33) + '@amplitude/rrweb-record': 2.0.0-alpha.32 + '@amplitude/rrweb-types': 2.0.0-alpha.32 + '@amplitude/rrweb-utils': 2.0.0-alpha.32 + '@amplitude/targeting': 0.2.0 + '@rollup/plugin-replace': 6.0.3(rollup@2.79.2) + idb: 8.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@amplitude/rrweb' + - rollup + + '@amplitude/targeting@0.2.0': + dependencies: + '@amplitude/analytics-client-common': 2.4.16 + '@amplitude/analytics-core': 2.33.0 + '@amplitude/analytics-types': 2.11.0 + '@amplitude/experiment-core': 0.7.2 + idb: 8.0.0 + tslib: 2.8.1 + + '@antfu/eslint-config@5.4.1(@eslint-react/eslint-plugin@1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.4)(@vue/compiler-sfc@3.5.25)(eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.24(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@antfu/install-pkg': 1.1.0 '@clack/prompts': 0.11.0 - '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.38.0(jiti@1.21.7)) - '@eslint/markdown': 7.4.1 - '@stylistic/eslint-plugin': 5.5.0(eslint@9.38.0(jiti@1.21.7)) - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@vitest/eslint-plugin': 1.3.23(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint/markdown': 7.5.1 + '@stylistic/eslint-plugin': 5.6.1(eslint@9.39.1(jiti@1.21.7)) + '@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@vitest/eslint-plugin': 1.5.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) ansis: 4.2.0 cac: 6.7.14 - eslint: 9.38.0(jiti@1.21.7) - eslint-config-flat-gitignore: 2.1.0(eslint@9.38.0(jiti@1.21.7)) + eslint: 9.39.1(jiti@1.21.7) + eslint-config-flat-gitignore: 2.1.0(eslint@9.39.1(jiti@1.21.7)) eslint-flat-config-utils: 2.1.4 - eslint-merge-processors: 2.0.0(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-antfu: 3.1.1(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-command: 3.3.1(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-import-lite: 0.3.0(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-jsdoc: 59.1.0(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-jsonc: 2.21.0(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-n: 17.23.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + eslint-merge-processors: 2.0.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-antfu: 3.1.1(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-command: 3.3.1(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-import-lite: 0.3.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint-plugin-jsdoc: 59.1.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-jsonc: 2.21.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-n: 17.23.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 4.15.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-pnpm: 1.3.0(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-regexp: 2.10.0(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-toml: 0.12.0(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-unicorn: 61.0.2(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-unused-imports: 4.3.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-vue: 10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.38.0(jiti@1.21.7)))(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7))(vue-eslint-parser@10.2.0(eslint@9.38.0(jiti@1.21.7))) - eslint-plugin-yml: 1.19.0(eslint@9.38.0(jiti@1.21.7)) - eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.22)(eslint@9.38.0(jiti@1.21.7)) - globals: 16.4.0 + eslint-plugin-perfectionist: 4.15.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint-plugin-pnpm: 1.3.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-regexp: 2.10.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-toml: 0.12.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-unicorn: 61.0.2(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-unused-imports: 4.3.0(@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-vue: 10.6.2(@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@1.21.7)))(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@1.21.7))) + eslint-plugin-yml: 1.19.0(eslint@9.39.1(jiti@1.21.7)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@1.21.7)) + globals: 16.5.0 jsonc-eslint-parser: 2.4.1 local-pkg: 1.1.2 parse-gitignore: 2.0.0 toml-eslint-parser: 0.10.0 - vue-eslint-parser: 10.2.0(eslint@9.38.0(jiti@1.21.7)) - yaml-eslint-parser: 1.3.0 + vue-eslint-parser: 10.2.0(eslint@9.39.1(jiti@1.21.7)) + yaml-eslint-parser: 1.3.1 optionalDependencies: - '@eslint-react/eslint-plugin': 1.53.1(eslint@9.38.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3) + '@eslint-react/eslint-plugin': 1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3) '@next/eslint-plugin-next': 15.5.4 - eslint-plugin-react-hooks: 5.2.0(eslint@9.38.0(jiti@1.21.7)) - eslint-plugin-react-refresh: 0.4.24(eslint@9.38.0(jiti@1.21.7)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@1.21.7)) + eslint-plugin-react-refresh: 0.4.24(eslint@9.39.1(jiti@1.21.7)) transitivePeerDependencies: - '@eslint/json' - '@vue/compiler-sfc' @@ -8549,10 +8806,8 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: - package-manager-detector: 1.5.0 - tinyexec: 1.0.1 - - '@antfu/utils@9.3.0': {} + package-manager-detector: 1.6.0 + tinyexec: 1.0.2 '@apideck/better-ajv-errors@0.3.6(ajv@8.17.1)': dependencies: @@ -8563,23 +8818,23 @@ snapshots: '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.4': {} + '@babel/compat-data@7.28.5': {} - '@babel/core@7.28.4': + '@babel/core@7.28.5': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -8589,49 +8844,49 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.3': + '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.4 + '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.26.3 + browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.4)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4)': + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.3 @@ -8642,64 +8897,62 @@ snapshots: '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.27.1': + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} @@ -8707,652 +8960,648 @@ snapshots: '@babel/helper-wrap-function@7.28.3': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.4 - - '@babel/parser@7.28.4': - dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.4)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.4)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.4)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.4)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.4)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.4)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.4)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) - '@babel/traverse': 7.28.4 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.28.4)': + '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4)': + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4)': + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) - '@babel/traverse': 7.28.4 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-exponentiation-operator@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4)': + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) - '@babel/traverse': 7.28.4 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/types': 7.28.4 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4)': + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.4)': + '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.28.3(@babel/core@7.28.4)': + '@babel/preset-env@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/compat-data': 7.28.4 - '@babel/core': 7.28.4 + '@babel/compat-data': 7.28.5 + '@babel/core': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) - '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.4) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.4) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) - core-js-compat: 3.46.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + core-js-compat: 3.47.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.4)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 esutils: 2.0.3 - '@babel/preset-react@7.27.1(@babel/core@7.28.4)': + '@babel/preset-react@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)': + '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color @@ -9361,26 +9610,21 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - '@babel/traverse@7.28.4': + '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.4': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -9407,10 +9651,10 @@ snapshots: '@chevrotain/utils@11.0.3': {} - '@chromatic-com/storybook@4.1.1(storybook@9.1.13(@testing-library/dom@10.4.1))': + '@chromatic-com/storybook@4.1.3(storybook@9.1.13(@testing-library/dom@10.4.1))': dependencies: '@neoconfetti/react': 1.0.0 - chromatic: 12.2.0 + chromatic: 13.3.4 filesize: 10.1.6 jsonfile: 6.2.0 storybook: 9.1.13(@testing-library/dom@10.4.1) @@ -9432,7 +9676,7 @@ snapshots: '@code-inspector/core@1.2.9': dependencies: - '@vue/compiler-dom': 3.5.22 + '@vue/compiler-dom': 3.5.25 chalk: 4.1.1 dotenv: 16.6.1 launch-ide: 1.2.0 @@ -9478,13 +9722,13 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} - '@emnapi/core@1.6.0': + '@emnapi/core@1.7.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.6.0': + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 optional: true @@ -9501,7 +9745,7 @@ snapshots: '@es-joy/jsdoccomment@0.50.2': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.48.1 comment-parser: 1.4.1 esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 @@ -9509,7 +9753,7 @@ snapshots: '@es-joy/jsdoccomment@0.58.0': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.48.1 comment-parser: 1.4.1 esquery: 1.6.0 jsdoc-type-pratt-parser: 5.4.0 @@ -9589,45 +9833,47 @@ snapshots: '@esbuild/win32-x64@0.25.0': optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.38.0(jiti@1.21.7))': + '@eslint-community/eslint-plugin-eslint-comments@4.5.0(eslint@9.39.1(jiti@1.21.7))': dependencies: escape-string-regexp: 4.0.0 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) ignore: 5.3.2 - '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@1.21.7))': dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@eslint-community/regexpp@4.12.2': {} + + '@eslint-react/ast@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-react/eff': 1.53.1 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - string-ts: 2.2.1 - ts-pattern: 5.8.0 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + string-ts: 2.3.1 + ts-pattern: 5.9.0 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/core@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@eslint-react/core@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) birecord: 0.1.1 - ts-pattern: 5.8.0 + ts-pattern: 5.9.0 transitivePeerDependencies: - eslint - supports-color @@ -9635,70 +9881,70 @@ snapshots: '@eslint-react/eff@1.53.1': {} - '@eslint-react/eslint-plugin@1.53.1(eslint@9.38.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3)': + '@eslint-react/eslint-plugin@1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3)': dependencies: '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) - eslint-plugin-react-debug: 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-react-dom: 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-react-hooks-extra: 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-react-naming-convention: 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-react-web-api: 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-react-x: 1.53.1(eslint@9.38.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3) + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + eslint-plugin-react-debug: 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint-plugin-react-dom: 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint-plugin-react-hooks-extra: 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint-plugin-react-naming-convention: 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint-plugin-react-web-api: 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint-plugin-react-x: 1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - ts-api-utils - '@eslint-react/kit@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@eslint-react/kit@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-react/eff': 1.53.1 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - ts-pattern: 5.8.0 - zod: 4.1.12 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + ts-pattern: 5.9.0 + zod: 4.1.13 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@eslint-react/shared@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - ts-pattern: 5.8.0 - zod: 4.1.12 + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + ts-pattern: 5.9.0 + zod: 4.1.13 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@eslint-react/var@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@eslint-react/eff': 1.53.1 - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - string-ts: 2.2.1 - ts-pattern: 5.8.0 + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + string-ts: 2.3.1 + ts-pattern: 5.9.0 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint/compat@1.4.0(eslint@9.38.0(jiti@1.21.7))': + '@eslint/compat@1.4.1(eslint@9.39.1(jiti@1.21.7))': dependencies: - '@eslint/core': 0.16.0 + '@eslint/core': 0.17.0 optionalDependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) '@eslint/config-array@0.21.1': dependencies: @@ -9708,19 +9954,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.1': + '@eslint/config-helpers@0.4.2': dependencies: - '@eslint/core': 0.16.0 + '@eslint/core': 0.17.0 '@eslint/core@0.15.2': dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.16.0': + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 debug: 4.4.3 @@ -9728,18 +9974,18 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.38.0': {} + '@eslint/js@9.39.1': {} - '@eslint/markdown@7.4.1': + '@eslint/markdown@7.5.1': dependencies: - '@eslint/core': 0.16.0 - '@eslint/plugin-kit': 0.3.4 + '@eslint/core': 0.17.0 + '@eslint/plugin-kit': 0.3.5 github-slugger: 2.0.0 mdast-util-from-markdown: 2.0.2 mdast-util-frontmatter: 2.0.1 @@ -9757,6 +10003,11 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 + '@eslint/plugin-kit@0.3.5': + dependencies: + '@eslint/core': 0.15.2 + levn: 0.4.1 + '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 @@ -9778,7 +10029,7 @@ snapshots: '@floating-ui/utils': 0.2.10 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - tabbable: 6.2.0 + tabbable: 6.3.0 '@floating-ui/react@0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: @@ -9786,7 +10037,7 @@ snapshots: '@floating-ui/utils': 0.2.10 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - tabbable: 6.2.0 + tabbable: 6.3.0 '@floating-ui/utils@0.2.10': {} @@ -9794,12 +10045,12 @@ snapshots: dependencies: tslib: 2.8.1 - '@happy-dom/jest-environment@20.0.8(@jest/environment@29.7.0)(@jest/fake-timers@29.7.0)(@jest/types@29.6.3)(jest-mock@29.7.0)(jest-util@29.7.0)': + '@happy-dom/jest-environment@20.0.11(@jest/environment@29.7.0)(@jest/fake-timers@29.7.0)(@jest/types@29.6.3)(jest-mock@29.7.0)(jest-util@29.7.0)': dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - happy-dom: 20.0.8 + happy-dom: 20.0.11 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -9816,9 +10067,9 @@ snapshots: dependencies: react: 19.1.1 - '@hookform/resolvers@3.10.0(react-hook-form@7.65.0(react@19.1.1))': + '@hookform/resolvers@3.10.0(react-hook-form@7.67.0(react@19.1.1))': dependencies: - react-hook-form: 7.65.0(react@19.1.1) + react-hook-form: 7.67.0(react@19.1.1) '@humanfs/core@0.19.1': {} @@ -9833,18 +10084,11 @@ snapshots: '@iconify/types@2.0.0': {} - '@iconify/utils@3.0.2': + '@iconify/utils@3.1.0': dependencies: '@antfu/install-pkg': 1.1.0 - '@antfu/utils': 9.3.0 '@iconify/types': 2.0.0 - debug: 4.4.3 - globals: 15.15.0 - kolorist: 1.8.0 - local-pkg: 1.1.2 mlly: 1.8.0 - transitivePeerDependencies: - - supports-color '@img/colour@1.0.0': optional: true @@ -9854,9 +10098,9 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-arm64@0.34.4': + '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true '@img/sharp-darwin-x64@0.33.5': @@ -9864,60 +10108,63 @@ snapshots: '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.34.4': + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - '@img/sharp-libvips-darwin-arm64@1.2.3': + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - '@img/sharp-libvips-darwin-x64@1.2.3': + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.2.3': + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true '@img/sharp-libvips-linux-arm@1.0.5': optional: true - '@img/sharp-libvips-linux-arm@1.2.3': + '@img/sharp-libvips-linux-arm@1.2.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.3': + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - '@img/sharp-libvips-linux-s390x@1.2.3': + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.2.3': + '@img/sharp-libvips-linux-x64@1.2.4': optional: true '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.3': + '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true '@img/sharp-linux-arm64@0.33.5': @@ -9925,9 +10172,9 @@ snapshots: '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm64@0.34.4': + '@img/sharp-linux-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true '@img/sharp-linux-arm@0.33.5': @@ -9935,14 +10182,19 @@ snapshots: '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-arm@0.34.4': + '@img/sharp-linux-arm@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.4 optional: true - '@img/sharp-linux-ppc64@0.34.4': + '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true '@img/sharp-linux-s390x@0.33.5': @@ -9950,9 +10202,9 @@ snapshots: '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-s390x@0.34.4': + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true '@img/sharp-linux-x64@0.33.5': @@ -9960,9 +10212,9 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linux-x64@0.34.4': + '@img/sharp-linux-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.4 optional: true '@img/sharp-linuxmusl-arm64@0.33.5': @@ -9970,9 +10222,9 @@ snapshots: '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.4': + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true '@img/sharp-linuxmusl-x64@0.33.5': @@ -9980,34 +10232,34 @@ snapshots: '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.4': + '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.6.0 + '@emnapi/runtime': 1.7.1 optional: true - '@img/sharp-wasm32@0.34.4': + '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.6.0 + '@emnapi/runtime': 1.7.1 optional: true - '@img/sharp-win32-arm64@0.34.4': + '@img/sharp-win32-arm64@0.34.5': optional: true '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-ia32@0.34.4': + '@img/sharp-win32-ia32@0.34.5': optional: true '@img/sharp-win32-x64@0.33.5': optional: true - '@img/sharp-win32-x64@0.34.4': + '@img/sharp-win32-x64@0.34.5': optional: true '@isaacs/balanced-match@4.0.1': {} @@ -10016,21 +10268,12 @@ snapshots: dependencies: '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 4.2.3 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} @@ -10170,7 +10413,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 @@ -10194,7 +10437,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 18.15.0 - '@types/yargs': 17.0.33 + '@types/yargs': 17.0.35 chalk: 4.1.2 '@jridgewell/gen-mapping@0.3.13': @@ -10481,12 +10724,12 @@ snapshots: lexical: 0.37.0 yjs: 13.6.27 - '@mdx-js/loader@3.1.1(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3))': + '@mdx-js/loader@3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))': dependencies: '@mdx-js/mdx': 3.1.1 source-map: 0.7.6 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) transitivePeerDependencies: - supports-color @@ -10534,17 +10777,17 @@ snapshots: dependencies: state-local: 1.0.7 - '@monaco-editor/react@4.7.0(monaco-editor@0.54.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@monaco-editor/react@4.7.0(monaco-editor@0.55.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@monaco-editor/loader': 1.5.0 - monaco-editor: 0.54.0 + monaco-editor: 0.55.1 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@napi-rs/wasm-runtime@1.0.7': + '@napi-rs/wasm-runtime@1.1.0': dependencies: - '@emnapi/core': 1.6.0 - '@emnapi/runtime': 1.6.0 + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.10.1 optional: true @@ -10563,11 +10806,11 @@ snapshots: dependencies: fast-glob: 3.3.1 - '@next/mdx@15.5.4(@mdx-js/loader@3.1.1(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.1(@types/react@19.1.17)(react@19.1.1))': + '@next/mdx@15.5.4(@mdx-js/loader@3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.1(@types/react@19.1.17)(react@19.1.1))': dependencies: source-map: 0.7.6 optionalDependencies: - '@mdx-js/loader': 3.1.1(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + '@mdx-js/loader': 3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) '@mdx-js/react': 3.1.1(@types/react@19.1.17)(react@19.1.1) '@next/swc-darwin-arm64@15.5.6': @@ -10697,63 +10940,66 @@ snapshots: dependencies: '@octokit/openapi-types': 25.1.0 - '@oxc-resolver/binding-android-arm-eabi@11.11.0': + '@oxc-resolver/binding-android-arm-eabi@11.14.2': optional: true - '@oxc-resolver/binding-android-arm64@11.11.0': + '@oxc-resolver/binding-android-arm64@11.14.2': optional: true - '@oxc-resolver/binding-darwin-arm64@11.11.0': + '@oxc-resolver/binding-darwin-arm64@11.14.2': optional: true - '@oxc-resolver/binding-darwin-x64@11.11.0': + '@oxc-resolver/binding-darwin-x64@11.14.2': optional: true - '@oxc-resolver/binding-freebsd-x64@11.11.0': + '@oxc-resolver/binding-freebsd-x64@11.14.2': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.11.0': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.14.2': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.11.0': + '@oxc-resolver/binding-linux-arm-musleabihf@11.14.2': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.11.0': + '@oxc-resolver/binding-linux-arm64-gnu@11.14.2': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.11.0': + '@oxc-resolver/binding-linux-arm64-musl@11.14.2': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.11.0': + '@oxc-resolver/binding-linux-ppc64-gnu@11.14.2': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.11.0': + '@oxc-resolver/binding-linux-riscv64-gnu@11.14.2': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.11.0': + '@oxc-resolver/binding-linux-riscv64-musl@11.14.2': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.11.0': + '@oxc-resolver/binding-linux-s390x-gnu@11.14.2': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.11.0': + '@oxc-resolver/binding-linux-x64-gnu@11.14.2': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.11.0': + '@oxc-resolver/binding-linux-x64-musl@11.14.2': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.11.0': + '@oxc-resolver/binding-openharmony-arm64@11.14.2': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.14.2': dependencies: - '@napi-rs/wasm-runtime': 1.0.7 + '@napi-rs/wasm-runtime': 1.1.0 optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.11.0': + '@oxc-resolver/binding-win32-arm64-msvc@11.14.2': optional: true - '@oxc-resolver/binding-win32-ia32-msvc@11.11.0': + '@oxc-resolver/binding-win32-ia32-msvc@11.14.2': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.11.0': + '@oxc-resolver/binding-win32-x64-msvc@11.14.2': optional: true '@parcel/watcher-android-arm64@2.5.1': @@ -10817,22 +11063,19 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true - '@pkgjs/parseargs@0.11.0': - optional: true - '@pkgr/core@0.2.9': {} - '@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.14.2)(type-fest@4.2.0)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.14.2)(type-fest@4.2.0)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))': dependencies: ansi-html: 0.0.9 - core-js-pure: 3.46.0 + core-js-pure: 3.47.0 error-stack-parser: 2.1.4 html-entities: 2.6.0 loader-utils: 2.0.4 react-refresh: 0.14.2 schema-utils: 4.3.3 source-map: 0.7.6 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) optionalDependencies: type-fest: 4.2.0 webpack-hot-middleware: 2.26.1 @@ -10872,7 +11115,7 @@ snapshots: aria-hidden: 1.2.6 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-remove-scroll: 2.7.1(@types/react@19.1.17)(react@19.1.1) + react-remove-scroll: 2.7.2(@types/react@19.1.17)(react@19.1.1) optionalDependencies: '@types/react': 19.1.17 '@types/react-dom': 19.1.11(@types/react@19.1.17) @@ -10943,6 +11186,15 @@ snapshots: '@types/react': 19.1.17 '@types/react-dom': 19.1.11(@types/react@19.1.17) + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@radix-ui/react-slot': 1.2.4(@types/react@19.1.17)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + optionalDependencies: + '@types/react': 19.1.17 + '@types/react-dom': 19.1.11(@types/react@19.1.17) + '@radix-ui/react-slot@1.2.3(@types/react@19.1.17)(react@19.1.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1) @@ -10950,6 +11202,13 @@ snapshots: optionalDependencies: '@types/react': 19.1.17 + '@radix-ui/react-slot@1.2.4(@types/react@19.1.17)(react@19.1.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1) + react: 19.1.1 + optionalDependencies: + '@types/react': 19.1.17 + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.17)(react@19.1.1)': dependencies: react: 19.1.1 @@ -11033,29 +11292,29 @@ snapshots: dependencies: react: 19.1.1 - '@reactflow/background@11.3.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@reactflow/background@11.3.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) classcat: 5.0.5 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - zustand: 4.5.7(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/controls@11.2.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@reactflow/controls@11.2.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) classcat: 5.0.5 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - zustand: 4.5.7(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/core@11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@reactflow/core@11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@types/d3': 7.4.3 '@types/d3-drag': 3.0.7 @@ -11067,14 +11326,14 @@ snapshots: d3-zoom: 3.0.0 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - zustand: 4.5.7(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/minimap@11.7.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@reactflow/minimap@11.7.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@types/d3-selection': 3.0.11 '@types/d3-zoom': 3.0.8 classcat: 5.0.5 @@ -11082,31 +11341,31 @@ snapshots: d3-zoom: 3.0.0 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - zustand: 4.5.7(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/node-resizer@2.2.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@reactflow/node-resizer@2.2.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) classcat: 5.0.5 d3-drag: 3.0.0 d3-selection: 3.0.0 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - zustand: 4.5.7(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/node-toolbar@1.3.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@reactflow/node-toolbar@1.3.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) classcat: 5.0.5 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - zustand: 4.5.7(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer @@ -11117,9 +11376,9 @@ snapshots: '@rgrove/parse-xml@4.2.0': {} - '@rollup/plugin-babel@5.3.1(@babel/core@7.28.4)(@types/babel__core@7.20.5)(rollup@2.79.2)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.28.5)(@types/babel__core@7.20.5)(rollup@2.79.2)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 '@rollup/pluginutils': 3.1.0(rollup@2.79.2) rollup: 2.79.2 @@ -11144,6 +11403,13 @@ snapshots: magic-string: 0.25.9 rollup: 2.79.2 + '@rollup/plugin-replace@6.0.3(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@2.79.2) + magic-string: 0.30.21 + optionalDependencies: + rollup: 2.79.2 + '@rollup/pluginutils@3.1.0(rollup@2.79.2)': dependencies: '@types/estree': 0.0.39 @@ -11151,6 +11417,14 @@ snapshots: picomatch: 2.3.1 rollup: 2.79.2 + '@rollup/pluginutils@5.3.0(rollup@2.79.2)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 2.79.2 + '@sentry-internal/browser-utils@8.55.0': dependencies: '@sentry/core': 8.55.0 @@ -11232,17 +11506,17 @@ snapshots: '@storybook/core-webpack': 9.1.13(storybook@9.1.13(@testing-library/dom@10.4.1)) case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.3 - css-loader: 6.11.0(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + css-loader: 6.11.0(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) - html-webpack-plugin: 5.6.4(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) - magic-string: 0.30.19 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) + html-webpack-plugin: 5.6.5(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) + magic-string: 0.30.21 storybook: 9.1.13(@testing-library/dom@10.4.1) - style-loader: 3.3.4(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) - terser-webpack-plugin: 5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + style-loader: 3.3.4(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) ts-dedent: 2.2.0 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) - webpack-dev-middleware: 6.1.3(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) + webpack-dev-middleware: 6.1.3(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -11271,48 +11545,48 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/nextjs@9.1.13(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2)(storybook@9.1.13(@testing-library/dom@10.4.1))(type-fest@4.2.0)(typescript@5.9.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3))': + '@storybook/nextjs@9.1.13(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2)(storybook@9.1.13(@testing-library/dom@10.4.1))(type-fest@4.2.0)(typescript@5.9.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))': dependencies: - '@babel/core': 7.28.4 - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) - '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.4) - '@babel/preset-env': 7.28.3(@babel/core@7.28.4) - '@babel/preset-react': 7.27.1(@babel/core@7.28.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5) + '@babel/preset-env': 7.28.5(@babel/core@7.28.5) + '@babel/preset-react': 7.28.5(@babel/core@7.28.5) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) '@babel/runtime': 7.28.4 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(react-refresh@0.14.2)(type-fest@4.2.0)(webpack-hot-middleware@2.26.1)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(react-refresh@0.14.2)(type-fest@4.2.0)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) '@storybook/builder-webpack5': 9.1.13(esbuild@0.25.0)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)(uglify-js@3.19.3) '@storybook/preset-react-webpack': 9.1.13(esbuild@0.25.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)(uglify-js@3.19.3) '@storybook/react': 9.1.13(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3) '@types/semver': 7.7.1 - babel-loader: 9.2.1(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) - css-loader: 6.11.0(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + babel-loader: 9.2.1(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) + css-loader: 6.11.0(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) image-size: 2.0.2 loader-utils: 3.3.1 - next: 15.5.6(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2) - node-polyfill-webpack-plugin: 2.0.1(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + next: 15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2) + node-polyfill-webpack-plugin: 2.0.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) postcss: 8.5.6 - postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) react-refresh: 0.14.2 resolve-url-loader: 5.0.0 - sass-loader: 16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + sass-loader: 16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) semver: 7.7.3 storybook: 9.1.13(@testing-library/dom@10.4.1) - style-loader: 3.3.4(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) - styled-jsx: 5.1.7(@babel/core@7.28.4)(react@19.1.1) + style-loader: 3.3.4(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) + styled-jsx: 5.1.7(@babel/core@7.28.5)(react@19.1.1) tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.2.0 optionalDependencies: typescript: 5.9.3 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) transitivePeerDependencies: - '@rspack/core' - '@swc/core' @@ -11334,10 +11608,10 @@ snapshots: '@storybook/preset-react-webpack@9.1.13(esbuild@0.25.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)(uglify-js@3.19.3)': dependencies: '@storybook/core-webpack': 9.1.13(storybook@9.1.13(@testing-library/dom@10.4.1)) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) '@types/semver': 7.7.1 find-up: 7.0.0 - magic-string: 0.30.19 + magic-string: 0.30.21 react: 19.1.1 react-docgen: 7.1.1 react-dom: 19.1.1(react@19.1.1) @@ -11345,7 +11619,7 @@ snapshots: semver: 7.7.3 storybook: 9.1.13(@testing-library/dom@10.4.1) tsconfig-paths: 4.2.0 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -11355,7 +11629,7 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))': dependencies: debug: 4.4.3 endent: 2.1.0 @@ -11365,7 +11639,7 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@5.9.3) tslib: 2.8.1 typescript: 5.9.3 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) transitivePeerDependencies: - supports-color @@ -11385,11 +11659,11 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@stylistic/eslint-plugin@5.5.0(eslint@9.38.0(jiti@1.21.7))': + '@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@1.21.7))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) - '@typescript-eslint/types': 8.46.2 - eslint: 9.38.0(jiti@1.21.7) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@typescript-eslint/types': 8.48.1 + eslint: 9.39.1(jiti@1.21.7) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -11416,46 +11690,50 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/typography@0.5.19(tailwindcss@3.4.18(yaml@2.8.1))': + '@tailwindcss/typography@0.5.19(tailwindcss@3.4.18(yaml@2.8.2))': dependencies: postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.18(yaml@2.8.1) + tailwindcss: 3.4.18(yaml@2.8.2) - '@tanstack/devtools-event-client@0.3.3': {} + '@tanstack/devtools-event-client@0.3.5': {} - '@tanstack/form-core@1.24.3': + '@tanstack/form-core@1.27.0': dependencies: - '@tanstack/devtools-event-client': 0.3.3 + '@tanstack/devtools-event-client': 0.3.5 + '@tanstack/pacer': 0.15.4 '@tanstack/store': 0.7.7 - '@tanstack/query-core@5.90.5': {} - - '@tanstack/query-devtools@5.90.1': {} - - '@tanstack/react-form@1.23.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@tanstack/pacer@0.15.4': dependencies: - '@tanstack/form-core': 1.24.3 - '@tanstack/react-store': 0.7.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - decode-formdata: 0.9.0 - devalue: 5.4.1 + '@tanstack/devtools-event-client': 0.3.5 + '@tanstack/store': 0.7.7 + + '@tanstack/query-core@5.90.11': {} + + '@tanstack/query-devtools@5.91.1': {} + + '@tanstack/react-form@1.27.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@tanstack/form-core': 1.27.0 + '@tanstack/react-store': 0.8.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 transitivePeerDependencies: - react-dom - '@tanstack/react-query-devtools@5.90.2(@tanstack/react-query@5.90.5(react@19.1.1))(react@19.1.1)': + '@tanstack/react-query-devtools@5.91.1(@tanstack/react-query@5.90.11(react@19.1.1))(react@19.1.1)': dependencies: - '@tanstack/query-devtools': 5.90.1 - '@tanstack/react-query': 5.90.5(react@19.1.1) + '@tanstack/query-devtools': 5.91.1 + '@tanstack/react-query': 5.90.11(react@19.1.1) react: 19.1.1 - '@tanstack/react-query@5.90.5(react@19.1.1)': + '@tanstack/react-query@5.90.11(react@19.1.1)': dependencies: - '@tanstack/query-core': 5.90.5 + '@tanstack/query-core': 5.90.11 react: 19.1.1 - '@tanstack/react-store@0.7.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@tanstack/react-store@0.8.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@tanstack/store': 0.7.7 + '@tanstack/store': 0.8.0 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) use-sync-external-store: 1.6.0(react@19.1.1) @@ -11468,6 +11746,8 @@ snapshots: '@tanstack/store@0.7.7': {} + '@tanstack/store@0.8.0': {} + '@tanstack/virtual-core@3.13.12': {} '@testing-library/dom@10.4.1': @@ -11504,7 +11784,7 @@ snapshots: dependencies: '@testing-library/dom': 10.4.1 - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -11521,24 +11801,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@types/cacheable-request@6.0.3': dependencies: @@ -11552,6 +11832,8 @@ snapshots: '@types/deep-eql': 4.0.2 assertion-error: 2.0.1 + '@types/css-font-loading-module@0.0.7': {} + '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -11747,9 +12029,9 @@ snapshots: '@types/lodash-es@4.17.12': dependencies: - '@types/lodash': 4.17.20 + '@types/lodash': 4.17.21 - '@types/lodash@4.17.20': {} + '@types/lodash@4.17.21': {} '@types/mdast@4.0.4': dependencies: @@ -11759,7 +12041,7 @@ snapshots: '@types/minimatch@6.0.0': dependencies: - minimatch: 10.0.3 + minimatch: 10.1.1 '@types/ms@2.1.0': {} @@ -11767,11 +12049,11 @@ snapshots: '@types/node@18.15.0': {} - '@types/node@20.19.23': + '@types/node@20.19.25': dependencies: undici-types: 6.21.0 - '@types/papaparse@5.3.16': + '@types/papaparse@5.5.1': dependencies: '@types/node': 18.15.0 @@ -11797,7 +12079,7 @@ snapshots: '@types/react@19.1.17': dependencies: - csstype: 3.1.3 + csstype: 3.2.3 '@types/resolve@1.17.1': dependencies: @@ -11811,7 +12093,7 @@ snapshots: '@types/semver@7.7.1': {} - '@types/sortablejs@1.15.8': {} + '@types/sortablejs@1.15.9': {} '@types/stack-utils@2.0.3': {} @@ -11827,19 +12109,21 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.33': + '@types/yargs@17.0.35': dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@types/zen-observable@0.8.3': {} + + '@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.2 - eslint: 9.38.0(jiti@1.21.7) + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.1 + eslint: 9.39.1(jiti@1.21.7) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -11848,89 +12132,88 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.48.1 debug: 4.4.3 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': + '@typescript-eslint/project-service@8.48.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.2': + '@typescript-eslint/scope-manager@8.48.1': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/visitor-keys': 8.48.1 - '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.48.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) debug: 4.4.3 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.2': {} + '@typescript-eslint/types@8.48.1': {} - '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/project-service': 8.48.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/visitor-keys': 8.48.1 debug: 4.4.3 - fast-glob: 3.3.3 - is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.3 + tinyglobby: 0.2.15 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/utils@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.2': + '@typescript-eslint/visitor-keys@8.48.1': dependencies: - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.48.1 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} - '@vitest/eslint-plugin@1.3.23(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3)': + '@vitest/eslint-plugin@1.5.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -11948,7 +12231,7 @@ snapshots: dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.19 + magic-string: 0.30.21 '@vitest/pretty-format@3.2.4': dependencies: @@ -11964,37 +12247,37 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vue/compiler-core@3.5.22': + '@vue/compiler-core@3.5.25': dependencies: - '@babel/parser': 7.28.4 - '@vue/shared': 3.5.22 + '@babel/parser': 7.28.5 + '@vue/shared': 3.5.25 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.22': + '@vue/compiler-dom@3.5.25': dependencies: - '@vue/compiler-core': 3.5.22 - '@vue/shared': 3.5.22 + '@vue/compiler-core': 3.5.25 + '@vue/shared': 3.5.25 - '@vue/compiler-sfc@3.5.22': + '@vue/compiler-sfc@3.5.25': dependencies: '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.22 - '@vue/compiler-dom': 3.5.22 - '@vue/compiler-ssr': 3.5.22 - '@vue/shared': 3.5.22 + '@vue/compiler-core': 3.5.25 + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.22': + '@vue/compiler-ssr@3.5.25': dependencies: - '@vue/compiler-dom': 3.5.22 - '@vue/shared': 3.5.22 + '@vue/compiler-dom': 3.5.25 + '@vue/shared': 3.5.25 - '@vue/shared@3.5.22': {} + '@vue/shared@3.5.25': {} '@webassemblyjs/ast@1.14.1': dependencies: @@ -12072,6 +12355,8 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 + '@xstate/fsm@1.6.5': {} + '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -12101,7 +12386,7 @@ snapshots: loader-utils: 2.0.4 regex-parser: 2.3.1 - ahooks@3.9.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + ahooks@3.9.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@babel/runtime': 7.28.4 '@types/js-cookie': 3.0.6 @@ -12147,7 +12432,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.1.1: + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -12224,50 +12509,50 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.22(postcss@8.5.6): dependencies: - browserslist: 4.26.3 - caniuse-lite: 1.0.30001751 - fraction.js: 4.3.7 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001757 + fraction.js: 5.3.4 normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 - babel-jest@29.7.0(@babel/core@7.28.4): + babel-jest@29.7.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.28.4) + babel-preset-jest: 29.6.3(@babel/core@7.28.5) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-loader@10.0.0(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) - babel-loader@8.4.1(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + babel-loader@8.4.1(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) - babel-loader@9.2.1(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + babel-loader@9.2.1(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) babel-plugin-istanbul@6.1.1: dependencies: @@ -12282,66 +12567,68 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: - '@babel/compat-data': 7.28.4 - '@babel/core': 7.28.4 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + '@babel/compat-data': 7.28.5 + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.4 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) - core-js-compat: 3.46.0 + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4): + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.4 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4): + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) - babel-preset-jest@29.6.3(@babel/core@7.28.4): + babel-preset-jest@29.6.3(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) bail@2.0.2: {} balanced-match@1.0.2: {} + base64-arraybuffer@1.0.2: {} + base64-js@1.5.1: {} - baseline-browser-mapping@2.8.18: {} + baseline-browser-mapping@2.8.32: {} before-after-hook@3.0.2: {} @@ -12353,7 +12640,7 @@ snapshots: binary-extensions@2.3.0: {} - bing-translate-api@4.1.0: + bing-translate-api@4.2.0: dependencies: got: 11.8.6 @@ -12426,13 +12713,13 @@ snapshots: dependencies: pako: 1.0.11 - browserslist@4.26.3: + browserslist@4.28.0: dependencies: - baseline-browser-mapping: 2.8.18 - caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.237 - node-releases: 2.0.25 - update-browserslist-db: 1.1.3(browserslist@4.26.3) + baseline-browser-mapping: 2.8.32 + caniuse-lite: 1.0.30001757 + electron-to-chromium: 1.5.263 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) bser@2.1.1: dependencies: @@ -12488,7 +12775,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001751: {} + caniuse-lite@1.0.30001757: {} canvas@3.2.0: dependencies: @@ -12573,7 +12860,7 @@ snapshots: chownr@1.1.4: optional: true - chromatic@12.2.0: {} + chromatic@13.3.4: {} chrome-trace-event@1.0.4: {} @@ -12607,10 +12894,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - clean-webpack-plugin@4.0.0(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + clean-webpack-plugin@4.0.0(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: del: 4.1.1 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) cli-cursor@5.0.0: dependencies: @@ -12642,7 +12929,7 @@ snapshots: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1) '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-id': 1.1.1(@types/react@19.1.17)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) transitivePeerDependencies: @@ -12725,11 +13012,11 @@ snapshots: dependencies: toggle-selection: 1.0.6 - core-js-compat@3.46.0: + core-js-compat@3.47.0: dependencies: - browserslist: 4.26.3 + browserslist: 4.28.0 - core-js-pure@3.46.0: {} + core-js-pure@3.47.0: {} core-util-is@1.0.3: {} @@ -12753,7 +13040,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 5.9.3 @@ -12836,7 +13123,7 @@ snapshots: crypto-random-string@2.0.0: {} - css-loader@6.11.0(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + css-loader@6.11.0(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -12847,7 +13134,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) css-select@4.3.0: dependencies: @@ -12863,7 +13150,7 @@ snapshots: cssesc@3.0.0: {} - csstype@3.1.3: {} + csstype@3.2.3: {} cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): dependencies: @@ -13059,8 +13346,6 @@ snapshots: decimal.js@10.6.0: {} - decode-formdata@0.9.0: {} - decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 @@ -13116,8 +13401,6 @@ snapshots: detect-node-es@1.1.0: {} - devalue@5.4.1: {} - devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -13168,7 +13451,9 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.1.7: {} + dompurify@3.2.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 dompurify@3.3.0: optionalDependencies: @@ -13205,7 +13490,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.237: {} + electron-to-chromium@1.5.263: {} elkjs@0.9.3: {} @@ -13323,67 +13608,67 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.38.0(jiti@1.21.7)): + eslint-compat-utils@0.5.1(eslint@9.39.1(jiti@1.21.7)): dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) semver: 7.7.3 - eslint-compat-utils@0.6.5(eslint@9.38.0(jiti@1.21.7)): + eslint-compat-utils@0.6.5(eslint@9.39.1(jiti@1.21.7)): dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) semver: 7.7.3 - eslint-config-flat-gitignore@2.1.0(eslint@9.38.0(jiti@1.21.7)): + eslint-config-flat-gitignore@2.1.0(eslint@9.39.1(jiti@1.21.7)): dependencies: - '@eslint/compat': 1.4.0(eslint@9.38.0(jiti@1.21.7)) - eslint: 9.38.0(jiti@1.21.7) + '@eslint/compat': 1.4.1(eslint@9.39.1(jiti@1.21.7)) + eslint: 9.39.1(jiti@1.21.7) eslint-flat-config-utils@2.1.4: dependencies: pathe: 2.0.3 - eslint-json-compat-utils@0.2.1(eslint@9.38.0(jiti@1.21.7))(jsonc-eslint-parser@2.4.1): + eslint-json-compat-utils@0.2.1(eslint@9.39.1(jiti@1.21.7))(jsonc-eslint-parser@2.4.1): dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) esquery: 1.6.0 jsonc-eslint-parser: 2.4.1 - eslint-merge-processors@2.0.0(eslint@9.38.0(jiti@1.21.7)): + eslint-merge-processors@2.0.0(eslint@9.39.1(jiti@1.21.7)): dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) - eslint-plugin-antfu@3.1.1(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-antfu@3.1.1(eslint@9.39.1(jiti@1.21.7)): dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) - eslint-plugin-command@3.3.1(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-command@3.3.1(eslint@9.39.1(jiti@1.21.7)): dependencies: '@es-joy/jsdoccomment': 0.50.2 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) - eslint-plugin-es-x@7.8.0(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-es-x@7.8.0(eslint@9.39.1(jiti@1.21.7)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) - '@eslint-community/regexpp': 4.12.1 - eslint: 9.38.0(jiti@1.21.7) - eslint-compat-utils: 0.5.1(eslint@9.38.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.2 + eslint: 9.39.1(jiti@1.21.7) + eslint-compat-utils: 0.5.1(eslint@9.39.1(jiti@1.21.7)) - eslint-plugin-import-lite@0.3.0(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + eslint-plugin-import-lite@0.3.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) - '@typescript-eslint/types': 8.46.2 - eslint: 9.38.0(jiti@1.21.7) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@typescript-eslint/types': 8.48.1 + eslint: 9.39.1(jiti@1.21.7) optionalDependencies: typescript: 5.9.3 - eslint-plugin-jsdoc@59.1.0(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-jsdoc@59.1.0(eslint@9.39.1(jiti@1.21.7)): dependencies: '@es-joy/jsdoccomment': 0.58.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) espree: 10.4.0 esquery: 1.6.0 object-deep-merge: 1.0.5 @@ -13393,13 +13678,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.21.0(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-jsonc@2.21.0(eslint@9.39.1(jiti@1.21.7)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) diff-sequences: 27.5.1 - eslint: 9.38.0(jiti@1.21.7) - eslint-compat-utils: 0.6.5(eslint@9.38.0(jiti@1.21.7)) - eslint-json-compat-utils: 0.2.1(eslint@9.38.0(jiti@1.21.7))(jsonc-eslint-parser@2.4.1) + eslint: 9.39.1(jiti@1.21.7) + eslint-compat-utils: 0.6.5(eslint@9.39.1(jiti@1.21.7)) + eslint-json-compat-utils: 0.2.1(eslint@9.39.1(jiti@1.21.7))(jsonc-eslint-parser@2.4.1) espree: 10.4.0 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.1 @@ -13408,13 +13693,13 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-n@17.23.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + eslint-plugin-n@17.23.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) enhanced-resolve: 5.18.3 - eslint: 9.38.0(jiti@1.21.7) - eslint-plugin-es-x: 7.8.0(eslint@9.38.0(jiti@1.21.7)) - get-tsconfig: 4.12.0 + eslint: 9.39.1(jiti@1.21.7) + eslint-plugin-es-x: 7.8.0(eslint@9.39.1(jiti@1.21.7)) + get-tsconfig: 4.13.0 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 @@ -13425,177 +13710,177 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-oxlint@1.23.0: + eslint-plugin-oxlint@1.31.0: dependencies: jsonc-parser: 3.3.1 - eslint-plugin-perfectionist@4.15.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + eslint-plugin-perfectionist@4.15.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-pnpm@1.3.0(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-pnpm@1.3.0(eslint@9.39.1(jiti@1.21.7)): dependencies: empathic: 2.0.0 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) jsonc-eslint-parser: 2.4.1 pathe: 2.0.3 pnpm-workspace-yaml: 1.3.0 tinyglobby: 0.2.15 - yaml-eslint-parser: 1.3.0 + yaml-eslint-parser: 1.3.1 - eslint-plugin-react-debug@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + eslint-plugin-react-debug@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) - string-ts: 2.2.1 - ts-pattern: 5.8.0 + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + string-ts: 2.3.1 + ts-pattern: 5.9.0 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + eslint-plugin-react-dom@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) compare-versions: 6.1.1 - eslint: 9.38.0(jiti@1.21.7) - string-ts: 2.2.1 - ts-pattern: 5.8.0 + eslint: 9.39.1(jiti@1.21.7) + string-ts: 2.3.1 + ts-pattern: 5.9.0 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + eslint-plugin-react-hooks-extra@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) - string-ts: 2.2.1 - ts-pattern: 5.8.0 + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + string-ts: 2.3.1 + ts-pattern: 5.9.0 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.2.0(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)): dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) - eslint-plugin-react-naming-convention@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + eslint-plugin-react-naming-convention@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) - string-ts: 2.2.1 - ts-pattern: 5.8.0 + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + string-ts: 2.3.1 + ts-pattern: 5.9.0 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-refresh@0.4.24(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-react-refresh@0.4.24(eslint@9.39.1(jiti@1.21.7)): dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) - eslint-plugin-react-web-api@1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + eslint-plugin-react-web-api@1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) - string-ts: 2.2.1 - ts-pattern: 5.8.0 + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) + string-ts: 2.3.1 + ts-pattern: 5.9.0 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.53.1(eslint@9.38.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3): + eslint-plugin-react-x@1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3): dependencies: - '@eslint-react/ast': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/core': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/ast': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/core': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) '@eslint-react/eff': 1.53.1 - '@eslint-react/kit': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/shared': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@eslint-react/var': 1.53.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/shared': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@eslint-react/var': 1.53.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.48.1 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.48.1 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) compare-versions: 6.1.1 - eslint: 9.38.0(jiti@1.21.7) - is-immutable-type: 5.0.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - string-ts: 2.2.1 - ts-pattern: 5.8.0 + eslint: 9.39.1(jiti@1.21.7) + is-immutable-type: 5.0.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + string-ts: 2.3.1 + ts-pattern: 5.9.0 optionalDependencies: ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-regexp@2.10.0(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-regexp@2.10.0(eslint@9.39.1(jiti@1.21.7)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.2 comment-parser: 1.4.1 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) jsdoc-type-pratt-parser: 4.8.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-sonarjs@3.0.5(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-sonarjs@3.0.5(eslint@9.39.1(jiti@1.21.7)): dependencies: '@eslint-community/regexpp': 4.12.1 builtin-modules: 3.3.0 bytes: 3.1.2 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) functional-red-black-tree: 1.0.1 jsx-ast-utils-x: 0.1.0 lodash.merge: 4.6.2 @@ -13604,44 +13889,44 @@ snapshots: semver: 7.7.2 typescript: 5.9.3 - eslint-plugin-storybook@9.1.13(eslint@9.38.0(jiti@1.21.7))(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3): + eslint-plugin-storybook@9.1.16(eslint@9.39.1(jiti@1.21.7))(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) storybook: 9.1.13(@testing-library/dom@10.4.1) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-tailwindcss@3.18.2(tailwindcss@3.4.18(yaml@2.8.1)): + eslint-plugin-tailwindcss@3.18.2(tailwindcss@3.4.18(yaml@2.8.2)): dependencies: fast-glob: 3.3.3 postcss: 8.5.6 - tailwindcss: 3.4.18(yaml@2.8.1) + tailwindcss: 3.4.18(yaml@2.8.2) - eslint-plugin-toml@0.12.0(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-toml@0.12.0(eslint@9.39.1(jiti@1.21.7)): dependencies: debug: 4.4.3 - eslint: 9.38.0(jiti@1.21.7) - eslint-compat-utils: 0.6.5(eslint@9.38.0(jiti@1.21.7)) + eslint: 9.39.1(jiti@1.21.7) + eslint-compat-utils: 0.6.5(eslint@9.39.1(jiti@1.21.7)) lodash: 4.17.21 toml-eslint-parser: 0.10.0 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@61.0.2(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-unicorn@61.0.2(eslint@9.39.1(jiti@1.21.7)): dependencies: - '@babel/helper-validator-identifier': 7.27.1 - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) + '@babel/helper-validator-identifier': 7.28.5 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) '@eslint/plugin-kit': 0.3.4 change-case: 5.4.4 ci-info: 4.3.1 clean-regexp: 1.0.0 - core-js-compat: 3.46.0 - eslint: 9.38.0(jiti@1.21.7) + core-js-compat: 3.47.0 + eslint: 9.39.1(jiti@1.21.7) esquery: 1.6.0 find-up-simple: 1.0.1 - globals: 16.4.0 + globals: 16.5.0 indent-string: 5.0.0 is-builtin-module: 5.0.0 jsesc: 3.1.0 @@ -13651,42 +13936,42 @@ snapshots: semver: 7.7.3 strip-indent: 4.1.1 - eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)): dependencies: - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-vue@10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.38.0(jiti@1.21.7)))(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3))(eslint@9.38.0(jiti@1.21.7))(vue-eslint-parser@10.2.0(eslint@9.38.0(jiti@1.21.7))): + eslint-plugin-vue@10.6.2(@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@1.21.7)))(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@1.21.7))): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) - eslint: 9.38.0(jiti@1.21.7) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + eslint: 9.39.1(jiti@1.21.7) natural-compare: 1.4.0 nth-check: 2.1.1 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.1.1 semver: 7.7.3 - vue-eslint-parser: 10.2.0(eslint@9.38.0(jiti@1.21.7)) + vue-eslint-parser: 10.2.0(eslint@9.39.1(jiti@1.21.7)) xml-name-validator: 4.0.0 optionalDependencies: - '@stylistic/eslint-plugin': 5.5.0(eslint@9.38.0(jiti@1.21.7)) - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) + '@stylistic/eslint-plugin': 5.6.1(eslint@9.39.1(jiti@1.21.7)) + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) - eslint-plugin-yml@1.19.0(eslint@9.38.0(jiti@1.21.7)): + eslint-plugin-yml@1.19.0(eslint@9.39.1(jiti@1.21.7)): dependencies: debug: 4.4.3 diff-sequences: 27.5.1 escape-string-regexp: 4.0.0 - eslint: 9.38.0(jiti@1.21.7) - eslint-compat-utils: 0.6.5(eslint@9.38.0(jiti@1.21.7)) + eslint: 9.39.1(jiti@1.21.7) + eslint-compat-utils: 0.6.5(eslint@9.39.1(jiti@1.21.7)) natural-compare: 1.4.0 - yaml-eslint-parser: 1.3.0 + yaml-eslint-parser: 1.3.1 transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.22)(eslint@9.38.0(jiti@1.21.7)): + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@1.21.7)): dependencies: - '@vue/compiler-sfc': 3.5.22 - eslint: 9.38.0(jiti@1.21.7) + '@vue/compiler-sfc': 3.5.25 + eslint: 9.39.1(jiti@1.21.7) eslint-scope@5.1.1: dependencies: @@ -13702,16 +13987,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.38.0(jiti@1.21.7): + eslint@9.39.1(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@1.21.7)) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.1 - '@eslint/core': 0.16.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.38.0 - '@eslint/plugin-kit': 0.3.4 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.1 + '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -13856,7 +14141,7 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - exsolve@1.0.7: {} + exsolve@1.0.8: {} extend@3.0.2: {} @@ -13912,6 +14197,8 @@ snapshots: optionalDependencies: picomatch: 4.0.3 + fflate@0.4.8: {} + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -13975,12 +14262,7 @@ snapshots: flatted@3.3.3: {} - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -13995,7 +14277,7 @@ snapshots: semver: 7.7.3 tapable: 2.3.0 typescript: 5.9.3 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) format@0.2.2: {} @@ -14003,7 +14285,7 @@ snapshots: dependencies: fd-package-json: 2.0.0 - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} fs-constants@1.0.0: optional: true @@ -14050,7 +14332,7 @@ snapshots: get-stream@8.0.1: {} - get-tsconfig@4.12.0: + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -14069,15 +14351,6 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -14091,7 +14364,7 @@ snapshots: globals@15.15.0: {} - globals@16.4.0: {} + globals@16.5.0: {} globby@11.1.0: dependencies: @@ -14136,9 +14409,9 @@ snapshots: hachure-fill@0.5.2: {} - happy-dom@20.0.8: + happy-dom@20.0.11: dependencies: - '@types/node': 20.19.23 + '@types/node': 20.19.25 '@types/whatwg-mimetype': 3.0.2 whatwg-mimetype: 3.0.0 @@ -14216,7 +14489,7 @@ snapshots: hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 parse5: 7.3.0 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 @@ -14239,7 +14512,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.18 + style-to-js: 1.1.21 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -14259,7 +14532,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.18 + style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 transitivePeerDependencies: @@ -14330,7 +14603,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.44.0 + terser: 5.44.1 html-parse-stringify@3.0.1: dependencies: @@ -14342,7 +14615,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.4(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + html-webpack-plugin@5.6.5(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -14350,7 +14623,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) htmlparser2@6.1.0: dependencies: @@ -14390,8 +14663,12 @@ snapshots: dependencies: postcss: 8.5.6 + idb-keyval@6.2.2: {} + idb@7.1.1: {} + idb@8.0.0: {} + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -14400,7 +14677,7 @@ snapshots: image-size@2.0.2: {} - immer@10.1.3: {} + immer@10.2.0: {} immutable@5.1.4: {} @@ -14430,7 +14707,7 @@ snapshots: ini@1.3.8: optional: true - inline-style-parser@0.2.4: {} + inline-style-parser@0.2.7: {} internmap@1.0.1: {} @@ -14490,10 +14767,10 @@ snapshots: is-hexadecimal@2.0.1: {} - is-immutable-type@5.0.1(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3): + is-immutable-type@5.0.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@1.21.7))(typescript@5.9.3) - eslint: 9.38.0(jiti@1.21.7) + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.1(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.9.3) ts-declaration-location: 1.0.7(typescript@5.9.3) typescript: 5.9.3 @@ -14538,8 +14815,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.28.4 - '@babel/parser': 7.28.4 + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -14548,8 +14825,8 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.4 - '@babel/parser': 7.28.4 + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.3 @@ -14575,12 +14852,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jake@10.9.4: dependencies: async: 3.2.6 @@ -14640,10 +14911,10 @@ snapshots: jest-config@29.7.0(@types/node@18.15.0)(ts-node@10.9.2(@types/node@18.15.0)(typescript@5.9.3)): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.4) + babel-jest: 29.7.0(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -14825,15 +15096,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.28.4 - '@babel/generator': 7.28.3 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) - '@babel/types': 7.28.4 + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/types': 7.28.5 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -14914,16 +15185,18 @@ snapshots: js-audio-recorder@1.0.7: {} + js-base64@3.7.8: {} + js-cookie@3.0.5: {} js-tokens@4.0.0: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -14984,26 +15257,24 @@ snapshots: kleur@3.0.3: {} - knip@5.66.2(@types/node@18.15.0)(typescript@5.9.3): + knip@5.71.0(@types/node@18.15.0)(typescript@5.9.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@types/node': 18.15.0 fast-glob: 3.3.3 formatly: 0.3.0 jiti: 2.6.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimist: 1.2.8 - oxc-resolver: 11.11.0 + oxc-resolver: 11.14.2 picocolors: 1.1.1 picomatch: 4.0.3 - smol-toml: 1.4.2 - strip-json-comments: 5.0.2 + smol-toml: 1.5.2 + strip-json-comments: 5.0.3 typescript: 5.9.3 - zod: 4.1.12 + zod: 4.1.13 - kolorist@1.8.0: {} - - ky@1.12.0: {} + ky@1.14.0: {} lamejs@1.2.1: dependencies: @@ -15056,7 +15327,7 @@ snapshots: micromatch: 4.0.8 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.8.1 + yaml: 2.8.2 transitivePeerDependencies: - supports-color @@ -15109,7 +15380,7 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.1.1 + ansi-escapes: 7.2.0 cli-cursor: 5.0.0 slice-ansi: 7.1.2 strip-ansi: 7.1.2 @@ -15134,8 +15405,6 @@ snapshots: fault: 1.0.4 highlight.js: 10.7.3 - lru-cache@10.4.3: {} - lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -15148,18 +15417,14 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - magic-string@0.30.19: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 source-map-js: 1.2.1 make-dir@3.1.0: @@ -15353,7 +15618,7 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.1 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -15394,7 +15659,7 @@ snapshots: mermaid@11.11.0: dependencies: '@braintree/sanitize-url': 7.1.1 - '@iconify/utils': 3.0.2 + '@iconify/utils': 3.1.0 '@mermaid-js/parser': 0.6.3 '@types/d3': 7.4.3 cytoscape: 3.33.1 @@ -15413,8 +15678,6 @@ snapshots: stylis: 4.3.6 ts-dedent: 2.2.0 uuid: 11.1.0 - transitivePeerDependencies: - - supports-color micromark-core-commonmark@2.0.3: dependencies: @@ -15731,7 +15994,7 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} - minimatch@10.0.3: + minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -15749,8 +16012,6 @@ snapshots: minimist@1.2.8: {} - minipass@7.1.2: {} - mitt@3.0.1: {} mkdirp-classic@0.5.3: @@ -15763,9 +16024,9 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 - monaco-editor@0.54.0: + monaco-editor@0.55.1: dependencies: - dompurify: 3.1.7 + dompurify: 3.2.7 marked: 14.0.0 mrmime@2.0.1: {} @@ -15791,14 +16052,14 @@ snapshots: neo-async@2.6.2: {} - next-pwa@5.6.0(@babel/core@7.28.4)(@types/babel__core@7.20.5)(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2))(uglify-js@3.19.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + next-pwa@5.6.0(@babel/core@7.28.5)(@types/babel__core@7.20.5)(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2))(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: - babel-loader: 8.4.1(@babel/core@7.28.4)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) - clean-webpack-plugin: 4.0.0(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) + clean-webpack-plugin: 4.0.0(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) globby: 11.1.0 - next: 15.5.6(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2) - terser-webpack-plugin: 5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) - workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + next: 15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2) + terser-webpack-plugin: 5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) + workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) workbox-window: 6.6.0 transitivePeerDependencies: - '@babel/core' @@ -15814,15 +16075,15 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - next@15.5.6(@babel/core@7.28.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.93.2): + next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2): dependencies: '@next/env': 15.5.6 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001751 + caniuse-lite: 1.0.30001757 postcss: 8.4.31 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.1.1) + styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.1.1) optionalDependencies: '@next/swc-darwin-arm64': 15.5.6 '@next/swc-darwin-x64': 15.5.6 @@ -15832,8 +16093,8 @@ snapshots: '@next/swc-linux-x64-musl': 15.5.6 '@next/swc-win32-arm64-msvc': 15.5.6 '@next/swc-win32-x64-msvc': 15.5.6 - sass: 1.93.2 - sharp: 0.34.4 + sass: 1.94.2 + sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -15843,7 +16104,7 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.78.0: + node-abi@3.85.0: dependencies: semver: 7.7.3 optional: true @@ -15855,7 +16116,7 @@ snapshots: node-int64@0.4.0: {} - node-polyfill-webpack-plugin@2.0.1(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + node-polyfill-webpack-plugin@2.0.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: assert: '@nolyfill/assert@1.0.26' browserify-zlib: 0.2.0 @@ -15882,9 +16143,9 @@ snapshots: url: 0.11.4 util: 0.12.5 vm-browserify: 1.1.2 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) - node-releases@2.0.25: {} + node-releases@2.0.27: {} normalize-path@3.0.0: {} @@ -15951,27 +16212,28 @@ snapshots: os-browserify@0.3.0: {} - oxc-resolver@11.11.0: + oxc-resolver@11.14.2: optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.11.0 - '@oxc-resolver/binding-android-arm64': 11.11.0 - '@oxc-resolver/binding-darwin-arm64': 11.11.0 - '@oxc-resolver/binding-darwin-x64': 11.11.0 - '@oxc-resolver/binding-freebsd-x64': 11.11.0 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.11.0 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.11.0 - '@oxc-resolver/binding-linux-arm64-gnu': 11.11.0 - '@oxc-resolver/binding-linux-arm64-musl': 11.11.0 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.11.0 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.11.0 - '@oxc-resolver/binding-linux-riscv64-musl': 11.11.0 - '@oxc-resolver/binding-linux-s390x-gnu': 11.11.0 - '@oxc-resolver/binding-linux-x64-gnu': 11.11.0 - '@oxc-resolver/binding-linux-x64-musl': 11.11.0 - '@oxc-resolver/binding-wasm32-wasi': 11.11.0 - '@oxc-resolver/binding-win32-arm64-msvc': 11.11.0 - '@oxc-resolver/binding-win32-ia32-msvc': 11.11.0 - '@oxc-resolver/binding-win32-x64-msvc': 11.11.0 + '@oxc-resolver/binding-android-arm-eabi': 11.14.2 + '@oxc-resolver/binding-android-arm64': 11.14.2 + '@oxc-resolver/binding-darwin-arm64': 11.14.2 + '@oxc-resolver/binding-darwin-x64': 11.14.2 + '@oxc-resolver/binding-freebsd-x64': 11.14.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.14.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.14.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.14.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.14.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.14.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.14.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.14.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.14.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.14.2 + '@oxc-resolver/binding-linux-x64-musl': 11.14.2 + '@oxc-resolver/binding-openharmony-arm64': 11.14.2 + '@oxc-resolver/binding-wasm32-wasi': 11.14.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.14.2 + '@oxc-resolver/binding-win32-ia32-msvc': 11.14.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.14.2 p-cancelable@2.1.1: {} @@ -15985,7 +16247,7 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 p-locate@4.1.0: dependencies: @@ -16003,9 +16265,7 @@ snapshots: p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} - - package-manager-detector@1.5.0: {} + package-manager-detector@1.6.0: {} pako@1.0.11: {} @@ -16025,7 +16285,7 @@ snapshots: asn1.js: 4.10.1 browserify-aes: 1.2.0 evp_bytestokey: 1.0.3 - pbkdf2: 3.1.5 + pbkdf2: 3.1.3 safe-buffer: 5.2.1 parse-entities@2.0.0: @@ -16089,11 +16349,6 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - path-type@4.0.0: {} path2d@0.2.2: @@ -16112,15 +16367,6 @@ snapshots: sha.js: 2.4.12 to-buffer: 1.2.2 - pbkdf2@3.1.5: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.3 - safe-buffer: 5.2.1 - sha.js: 2.4.12 - to-buffer: 1.2.2 - pdfjs-dist@4.4.168: optionalDependencies: canvas: 3.2.0 @@ -16165,14 +16411,14 @@ snapshots: pkg-types@2.3.0: dependencies: confbox: 0.2.2 - exsolve: 1.0.7 + exsolve: 1.0.8 pathe: 2.0.3 pluralize@8.0.0: {} pnpm-workspace-yaml@1.3.0: dependencies: - yaml: 2.8.1 + yaml: 2.8.2 points-on-curve@0.2.0: {} @@ -16200,22 +16446,22 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.5.6 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.1): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.6 - yaml: 2.8.1 + yaml: 2.8.2 - postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) transitivePeerDependencies: - typescript @@ -16227,13 +16473,13 @@ snapshots: dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 postcss-modules-scope@3.2.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-modules-values@4.0.0(postcss@8.5.6): dependencies: @@ -16255,7 +16501,7 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -16282,7 +16528,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.78.0 + node-abi: 3.85.0 pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 @@ -16407,9 +16653,9 @@ snapshots: react-docgen@7.1.1: dependencies: - '@babel/core': 7.28.4 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/core': 7.28.5 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 '@types/doctrine': 0.0.9 @@ -16432,7 +16678,7 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-easy-crop@5.5.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + react-easy-crop@5.5.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: normalize-wheel: 1.0.1 react: 19.1.1 @@ -16446,7 +16692,7 @@ snapshots: react-fast-compare@3.2.2: {} - react-hook-form@7.65.0(react@19.1.1): + react-hook-form@7.67.0(react@19.1.1): dependencies: react: 19.1.1 @@ -16479,7 +16725,7 @@ snapshots: devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 react: 19.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 @@ -16496,7 +16742,7 @@ snapshots: react-papaparse@4.4.0: dependencies: - '@types/papaparse': 5.3.16 + '@types/papaparse': 5.5.1 papaparse: 5.5.3 react-pdf-highlighter@8.0.0-rc.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1): @@ -16517,7 +16763,7 @@ snapshots: optionalDependencies: '@types/react': 19.1.17 - react-remove-scroll@2.7.1(@types/react@19.1.17)(react@19.1.1): + react-remove-scroll@2.7.2(@types/react@19.1.17)(react@19.1.1): dependencies: react: 19.1.1 react-remove-scroll-bar: 2.3.8(@types/react@19.1.17)(react@19.1.1) @@ -16541,9 +16787,9 @@ snapshots: prop-types: 15.8.1 react: 19.1.1 - react-sortablejs@6.1.4(@types/sortablejs@1.15.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sortablejs@1.15.6): + react-sortablejs@6.1.4(@types/sortablejs@1.15.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sortablejs@1.15.6): dependencies: - '@types/sortablejs': 1.15.8 + '@types/sortablejs': 1.15.9 classnames: 2.3.1 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) @@ -16586,14 +16832,14 @@ snapshots: react@19.1.1: {} - reactflow@11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + reactflow@11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@reactflow/background': 11.3.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@reactflow/controls': 11.2.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@reactflow/minimap': 11.7.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@reactflow/node-resizer': 2.2.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@reactflow/node-toolbar': 1.3.14(@types/react@19.1.17)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/background': 11.3.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/controls': 11.2.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/minimap': 11.7.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/node-resizer': 2.2.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/node-toolbar': 1.3.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) transitivePeerDependencies: @@ -16792,7 +17038,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -16883,7 +17129,7 @@ snapshots: jest-worker: 26.6.2 rollup: 2.79.2 serialize-javascript: 4.0.0 - terser: 5.44.0 + terser: 5.44.1 rollup@2.79.2: optionalDependencies: @@ -16902,16 +17148,20 @@ snapshots: rw@1.3.3: {} + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + safe-buffer@5.2.1: {} - sass-loader@16.0.5(sass@1.93.2)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + sass-loader@16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.93.2 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + sass: 1.94.2 + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) - sass@1.93.2: + sass@1.94.2: dependencies: chokidar: 4.0.3 immutable: 5.1.4 @@ -16996,34 +17246,36 @@ snapshots: '@img/sharp-win32-ia32': 0.33.5 '@img/sharp-win32-x64': 0.33.5 - sharp@0.34.4: + sharp@0.34.5: dependencies: '@img/colour': 1.0.0 detect-libc: 2.1.2 semver: 7.7.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.4 - '@img/sharp-darwin-x64': 0.34.4 - '@img/sharp-libvips-darwin-arm64': 1.2.3 - '@img/sharp-libvips-darwin-x64': 1.2.3 - '@img/sharp-libvips-linux-arm': 1.2.3 - '@img/sharp-libvips-linux-arm64': 1.2.3 - '@img/sharp-libvips-linux-ppc64': 1.2.3 - '@img/sharp-libvips-linux-s390x': 1.2.3 - '@img/sharp-libvips-linux-x64': 1.2.3 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 - '@img/sharp-libvips-linuxmusl-x64': 1.2.3 - '@img/sharp-linux-arm': 0.34.4 - '@img/sharp-linux-arm64': 0.34.4 - '@img/sharp-linux-ppc64': 0.34.4 - '@img/sharp-linux-s390x': 0.34.4 - '@img/sharp-linux-x64': 0.34.4 - '@img/sharp-linuxmusl-arm64': 0.34.4 - '@img/sharp-linuxmusl-x64': 0.34.4 - '@img/sharp-wasm32': 0.34.4 - '@img/sharp-win32-arm64': 0.34.4 - '@img/sharp-win32-ia32': 0.34.4 - '@img/sharp-win32-x64': 0.34.4 + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 optional: true shebang-command@2.0.0: @@ -17072,7 +17324,7 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - smol-toml@1.4.2: {} + smol-toml@1.5.2: {} sortablejs@1.15.6: {} @@ -17164,7 +17416,7 @@ snapshots: char-regex: 1.0.2 strip-ansi: 6.0.1 - string-ts@2.2.1: {} + string-ts@2.3.1: {} string-width@4.2.3: dependencies: @@ -17220,44 +17472,44 @@ snapshots: strip-json-comments@3.1.1: {} - strip-json-comments@5.0.2: {} + strip-json-comments@5.0.3: {} - style-loader@3.3.4(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + style-loader@3.3.4(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) - style-to-js@1.1.18: + style-to-js@1.1.21: dependencies: - style-to-object: 1.0.11 + style-to-object: 1.0.14 - style-to-object@1.0.11: + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.2.4 + inline-style-parser: 0.2.7 - styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.1.1): + styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.1.1): dependencies: client-only: 0.0.1 react: 19.1.1 optionalDependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 - styled-jsx@5.1.7(@babel/core@7.28.4)(react@19.1.1): + styled-jsx@5.1.7(@babel/core@7.28.5)(react@19.1.1): dependencies: client-only: 0.0.1 react: 19.1.1 optionalDependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 stylis@4.3.6: {} - sucrase@3.35.0: + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 - glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 + tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -17270,7 +17522,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swr@2.3.6(react@19.1.1): + swr@2.3.7(react@19.1.1): dependencies: dequal: 2.0.3 react: 19.1.1 @@ -17280,11 +17532,11 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tabbable@6.2.0: {} + tabbable@6.3.0: {} tailwind-merge@2.6.0: {} - tailwindcss@3.4.18(yaml@2.8.1): + tailwindcss@3.4.18(yaml@2.8.2): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -17303,11 +17555,11 @@ snapshots: postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.1) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 resolve: 1.22.11 - sucrase: 3.35.0 + sucrase: 3.35.1 transitivePeerDependencies: - tsx - yaml @@ -17340,19 +17592,19 @@ snapshots: type-fest: 0.16.0 unique-string: 2.0.0 - terser-webpack-plugin@5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + terser-webpack-plugin@5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.44.0 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + terser: 5.44.1 + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) optionalDependencies: esbuild: 0.25.0 uglify-js: 3.19.3 - terser@5.44.0: + terser@5.44.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -17381,7 +17633,7 @@ snapshots: tiny-invariant@1.3.3: {} - tinyexec@1.0.1: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: @@ -17392,11 +17644,11 @@ snapshots: tinyspy@4.0.4: {} - tldts-core@7.0.17: {} + tldts-core@7.0.19: {} - tldts@7.0.17: + tldts@7.0.19: dependencies: - tldts-core: 7.0.17 + tldts-core: 7.0.19 tmpl@1.0.5: {} @@ -17444,7 +17696,7 @@ snapshots: ts-node@10.9.2(@types/node@18.15.0)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 @@ -17459,7 +17711,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-pattern@5.8.0: {} + ts-pattern@5.9.0: {} tsconfig-paths-webpack-plugin@4.2.0: dependencies: @@ -17584,9 +17836,9 @@ snapshots: upath@1.2.0: {} - update-browserslist-db@1.1.3(browserslist@4.26.3): + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.26.3 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -17704,10 +17956,10 @@ snapshots: vscode-uri@3.0.8: {} - vue-eslint-parser@10.2.0(eslint@9.38.0(jiti@1.21.7)): + vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@1.21.7)): dependencies: debug: 4.4.3 - eslint: 9.38.0(jiti@1.21.7) + eslint: 9.39.1(jiti@1.21.7) eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -17729,6 +17981,8 @@ snapshots: web-namespaces@2.0.1: {} + web-vitals@5.0.1: {} + webidl-conversions@4.0.2: {} webpack-bundle-analyzer@4.10.1: @@ -17750,7 +18004,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@6.1.3(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + webpack-dev-middleware@6.1.3(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -17758,7 +18012,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) webpack-hot-middleware@2.26.1: dependencies: @@ -17775,7 +18029,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3): + webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -17785,7 +18039,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.26.3 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -17799,7 +18053,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -17833,10 +18087,10 @@ snapshots: workbox-build@6.6.0(@types/babel__core@7.20.5): dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) - '@babel/core': 7.28.4 - '@babel/preset-env': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/preset-env': 7.28.5(@babel/core@7.28.5) '@babel/runtime': 7.28.4 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.28.4)(@types/babel__core@7.20.5)(rollup@2.79.2) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.28.5)(@types/babel__core@7.20.5)(rollup@2.79.2) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2) '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -17929,12 +18183,12 @@ snapshots: workbox-sw@6.6.0: {} - workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.102.1(esbuild@0.25.0)(uglify-js@3.19.3)): + workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)): dependencies: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.102.1(esbuild@0.25.0)(uglify-js@3.19.3) + webpack: 5.103.0(esbuild@0.25.0)(uglify-js@3.19.3) webpack-sources: 1.4.3 workbox-build: 6.6.0(@types/babel__core@7.20.5) transitivePeerDependencies: @@ -17952,12 +18206,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 4.2.3 - strip-ansi: 7.1.2 - wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 @@ -17983,14 +18231,14 @@ snapshots: yallist@3.1.1: {} - yaml-eslint-parser@1.3.0: + yaml-eslint-parser@1.3.1: dependencies: eslint-visitor-keys: 3.4.3 - yaml: 2.8.1 + yaml: 2.8.2 yaml@1.10.2: {} - yaml@2.8.1: {} + yaml@2.8.2: {} yargs-parser@21.1.1: {} @@ -18012,32 +18260,39 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.2.1: {} + yocto-queue@1.2.2: {} + + zen-observable-ts@1.1.0: + dependencies: + '@types/zen-observable': 0.8.3 + zen-observable: 0.8.15 + + zen-observable@0.8.15: {} zod@3.25.76: {} - zod@4.1.12: {} + zod@4.1.13: {} zrender@5.6.1: dependencies: tslib: 2.3.0 - zundo@2.3.0(zustand@5.0.9(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1))): + zundo@2.3.0(zustand@5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1))): dependencies: - zustand: 5.0.9(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)) + zustand: 5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)) - zustand@4.5.7(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1): + zustand@4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1): dependencies: use-sync-external-store: 1.6.0(react@19.1.1) optionalDependencies: '@types/react': 19.1.17 - immer: 10.1.3 + immer: 10.2.0 react: 19.1.1 - zustand@5.0.9(@types/react@19.1.17)(immer@10.1.3)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)): + zustand@5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)): optionalDependencies: '@types/react': 19.1.17 - immer: 10.1.3 + immer: 10.2.0 react: 19.1.1 use-sync-external-store: 1.6.0(react@19.1.1) diff --git a/web/service/apps.ts b/web/service/apps.ts index 7a4cfb93ff..89001bffec 100644 --- a/web/service/apps.ts +++ b/web/service/apps.ts @@ -1,15 +1,14 @@ -import type { Fetcher } from 'swr' import { del, get, patch, post, put } from './base' import type { ApiKeysListResponse, AppDailyConversationsResponse, AppDailyEndUsersResponse, AppDailyMessagesResponse, AppDetailResponse, AppListResponse, AppStatisticsResponse, AppTemplatesResponse, AppTokenCostsResponse, AppVoicesListResponse, CreateApiKeyResponse, DSLImportMode, DSLImportResponse, GenerationIntroductionResponse, TracingConfig, TracingStatus, UpdateAppModelConfigResponse, UpdateAppSiteCodeResponse, UpdateOpenAIKeyResponse, ValidateOpenAIKeyResponse, WebhookTriggerResponse, WorkflowDailyConversationsResponse } from '@/models/app' import type { CommonResponse } from '@/models/common' import type { AppIconType, AppModeEnum, ModelConfig } from '@/types/app' import type { TracingProvider } from '@/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/type' -export const fetchAppList: Fetcher }> = ({ url, params }) => { +export const fetchAppList = ({ url, params }: { url: string; params?: Record }): Promise => { return get(url, { params }) } -export const fetchAppDetail: Fetcher = ({ url, id }) => { +export const fetchAppDetail = ({ url, id }: { url: string; id: string }): Promise => { return get(`${url}/${id}`) } @@ -18,24 +17,74 @@ export const fetchAppDetailDirect = async ({ url, id }: { url: string; id: strin return get(`${url}/${id}`) } -export const fetchAppTemplates: Fetcher = ({ url }) => { +export const fetchAppTemplates = ({ url }: { url: string }): Promise => { return get(url) } -export const createApp: Fetcher = ({ name, icon_type, icon, icon_background, mode, description, config }) => { +export const createApp = ({ + name, + icon_type, + icon, + icon_background, + mode, + description, + config, +}: { + name: string + icon_type?: AppIconType + icon?: string + icon_background?: string + mode: AppModeEnum + description?: string + config?: ModelConfig +}): Promise => { return post('apps', { body: { name, icon_type, icon, icon_background, mode, description, model_config: config } }) } -export const updateAppInfo: Fetcher = ({ appID, name, icon_type, icon, icon_background, description, use_icon_as_answer_icon, max_active_requests }) => { +export const updateAppInfo = ({ + appID, + name, + icon_type, + icon, + icon_background, + description, + use_icon_as_answer_icon, + max_active_requests, +}: { + appID: string + name: string + icon_type: AppIconType + icon: string + icon_background?: string + description: string + use_icon_as_answer_icon?: boolean + max_active_requests?: number | null +}): Promise => { const body = { name, icon_type, icon, icon_background, description, use_icon_as_answer_icon, max_active_requests } return put(`apps/${appID}`, { body }) } -export const copyApp: Fetcher = ({ appID, name, icon_type, icon, icon_background, mode, description }) => { +export const copyApp = ({ + appID, + name, + icon_type, + icon, + icon_background, + mode, + description, +}: { + appID: string + name: string + icon_type: AppIconType + icon: string + icon_background?: string | null + mode: AppModeEnum + description?: string +}): Promise => { return post(`apps/${appID}/copy`, { body: { name, icon_type, icon, icon_background, mode, description } }) } -export const exportAppConfig: Fetcher<{ data: string }, { appID: string; include?: boolean; workflowID?: string }> = ({ appID, include = false, workflowID }) => { +export const exportAppConfig = ({ appID, include = false, workflowID }: { appID: string; include?: boolean; workflowID?: string }): Promise<{ data: string }> => { const params = new URLSearchParams({ include_secret: include.toString(), }) @@ -44,126 +93,116 @@ export const exportAppConfig: Fetcher<{ data: string }, { appID: string; include return get<{ data: string }>(`apps/${appID}/export?${params.toString()}`) } -// TODO: delete -export const importApp: Fetcher = ({ data, name, description, icon_type, icon, icon_background }) => { - return post('apps/import', { body: { data, name, description, icon_type, icon, icon_background } }) -} - -// TODO: delete -export const importAppFromUrl: Fetcher = ({ url, name, description, icon, icon_background }) => { - return post('apps/import/url', { body: { url, name, description, icon, icon_background } }) -} - -export const importDSL: Fetcher = ({ mode, yaml_content, yaml_url, app_id, name, description, icon_type, icon, icon_background }) => { +export const importDSL = ({ mode, yaml_content, yaml_url, app_id, name, description, icon_type, icon, icon_background }: { mode: DSLImportMode; yaml_content?: string; yaml_url?: string; app_id?: string; name?: string; description?: string; icon_type?: AppIconType; icon?: string; icon_background?: string }): Promise => { return post('apps/imports', { body: { mode, yaml_content, yaml_url, app_id, name, description, icon, icon_type, icon_background } }) } -export const importDSLConfirm: Fetcher = ({ import_id }) => { +export const importDSLConfirm = ({ import_id }: { import_id: string }): Promise => { return post(`apps/imports/${import_id}/confirm`, { body: {} }) } -export const switchApp: Fetcher<{ new_app_id: string }, { appID: string; name: string; icon_type: AppIconType; icon: string; icon_background?: string | null }> = ({ appID, name, icon_type, icon, icon_background }) => { +export const switchApp = ({ appID, name, icon_type, icon, icon_background }: { appID: string; name: string; icon_type: AppIconType; icon: string; icon_background?: string | null }): Promise<{ new_app_id: string }> => { return post<{ new_app_id: string }>(`apps/${appID}/convert-to-workflow`, { body: { name, icon_type, icon, icon_background } }) } -export const deleteApp: Fetcher = (appID) => { +export const deleteApp = (appID: string): Promise => { return del(`apps/${appID}`) } -export const updateAppSiteStatus: Fetcher }> = ({ url, body }) => { +export const updateAppSiteStatus = ({ url, body }: { url: string; body: Record }): Promise => { return post(url, { body }) } -export const updateAppApiStatus: Fetcher }> = ({ url, body }) => { +export const updateAppApiStatus = ({ url, body }: { url: string; body: Record }): Promise => { return post(url, { body }) } // path: /apps/{appId}/rate-limit -export const updateAppRateLimit: Fetcher }> = ({ url, body }) => { +export const updateAppRateLimit = ({ url, body }: { url: string; body: Record }): Promise => { return post(url, { body }) } -export const updateAppSiteAccessToken: Fetcher = ({ url }) => { +export const updateAppSiteAccessToken = ({ url }: { url: string }): Promise => { return post(url) } -export const updateAppSiteConfig = ({ url, body }: { url: string; body: Record }) => { +export const updateAppSiteConfig = ({ url, body }: { url: string; body: Record }): Promise => { return post(url, { body }) } -export const getAppDailyMessages: Fetcher }> = ({ url, params }) => { +export const getAppDailyMessages = ({ url, params }: { url: string; params: Record }): Promise => { return get(url, { params }) } -export const getAppDailyConversations: Fetcher }> = ({ url, params }) => { +export const getAppDailyConversations = ({ url, params }: { url: string; params: Record }): Promise => { return get(url, { params }) } -export const getWorkflowDailyConversations: Fetcher }> = ({ url, params }) => { +export const getWorkflowDailyConversations = ({ url, params }: { url: string; params: Record }): Promise => { return get(url, { params }) } -export const getAppStatistics: Fetcher }> = ({ url, params }) => { +export const getAppStatistics = ({ url, params }: { url: string; params: Record }): Promise => { return get(url, { params }) } -export const getAppDailyEndUsers: Fetcher }> = ({ url, params }) => { +export const getAppDailyEndUsers = ({ url, params }: { url: string; params: Record }): Promise => { return get(url, { params }) } -export const getAppTokenCosts: Fetcher }> = ({ url, params }) => { +export const getAppTokenCosts = ({ url, params }: { url: string; params: Record }): Promise => { return get(url, { params }) } -export const updateAppModelConfig: Fetcher }> = ({ url, body }) => { +export const updateAppModelConfig = ({ url, body }: { url: string; body: Record }): Promise => { return post(url, { body }) } // For temp testing -export const fetchAppListNoMock: Fetcher }> = ({ url, params }) => { +export const fetchAppListNoMock = ({ url, params }: { url: string; params: Record }): Promise => { return get(url, params) } -export const fetchApiKeysList: Fetcher }> = ({ url, params }) => { +export const fetchApiKeysList = ({ url, params }: { url: string; params: Record }): Promise => { return get(url, params) } -export const delApikey: Fetcher }> = ({ url, params }) => { +export const delApikey = ({ url, params }: { url: string; params: Record }): Promise => { return del(url, params) } -export const createApikey: Fetcher }> = ({ url, body }) => { +export const createApikey = ({ url, body }: { url: string; body: Record }): Promise => { return post(url, body) } -export const validateOpenAIKey: Fetcher = ({ url, body }) => { +export const validateOpenAIKey = ({ url, body }: { url: string; body: { token: string } }): Promise => { return post(url, { body }) } -export const updateOpenAIKey: Fetcher = ({ url, body }) => { +export const updateOpenAIKey = ({ url, body }: { url: string; body: { token: string } }): Promise => { return post(url, { body }) } -export const generationIntroduction: Fetcher = ({ url, body }) => { +export const generationIntroduction = ({ url, body }: { url: string; body: { prompt_template: string } }): Promise => { return post(url, { body }) } -export const fetchAppVoices: Fetcher = ({ appId, language }) => { +export const fetchAppVoices = ({ appId, language }: { appId: string; language?: string }): Promise => { language = language || 'en-US' return get(`apps/${appId}/text-to-audio/voices?language=${language}`) } // Tracing -export const fetchTracingStatus: Fetcher = ({ appId }) => { - return get(`/apps/${appId}/trace`) +export const fetchTracingStatus = ({ appId }: { appId: string }): Promise => { + return get(`/apps/${appId}/trace`) } -export const updateTracingStatus: Fetcher }> = ({ appId, body }) => { - return post(`/apps/${appId}/trace`, { body }) +export const updateTracingStatus = ({ appId, body }: { appId: string; body: Record }): Promise => { + return post(`/apps/${appId}/trace`, { body }) } // Webhook Trigger -export const fetchWebhookUrl: Fetcher = ({ appId, nodeId }) => { +export const fetchWebhookUrl = ({ appId, nodeId }: { appId: string; nodeId: string }): Promise => { return get( `apps/${appId}/workflows/triggers/webhook`, { params: { node_id: nodeId } }, @@ -171,22 +210,22 @@ export const fetchWebhookUrl: Fetcher = ({ appId, provider }) => { - return get(`/apps/${appId}/trace-config`, { +export const fetchTracingConfig = ({ appId, provider }: { appId: string; provider: TracingProvider }): Promise => { + return get(`/apps/${appId}/trace-config`, { params: { tracing_provider: provider, }, }) } -export const addTracingConfig: Fetcher = ({ appId, body }) => { - return post(`/apps/${appId}/trace-config`, { body }) +export const addTracingConfig = ({ appId, body }: { appId: string; body: TracingConfig }): Promise => { + return post(`/apps/${appId}/trace-config`, { body }) } -export const updateTracingConfig: Fetcher = ({ appId, body }) => { - return patch(`/apps/${appId}/trace-config`, { body }) +export const updateTracingConfig = ({ appId, body }: { appId: string; body: TracingConfig }): Promise => { + return patch(`/apps/${appId}/trace-config`, { body }) } -export const removeTracingConfig: Fetcher = ({ appId, provider }) => { - return del(`/apps/${appId}/trace-config?tracing_provider=${provider}`) +export const removeTracingConfig = ({ appId, provider }: { appId: string; provider: TracingProvider }): Promise => { + return del(`/apps/${appId}/trace-config?tracing_provider=${provider}`) } diff --git a/web/service/demo/index.tsx b/web/service/demo/index.tsx index 5cbfa7c52a..b0b76bfcff 100644 --- a/web/service/demo/index.tsx +++ b/web/service/demo/index.tsx @@ -1,38 +1,85 @@ 'use client' import type { FC } from 'react' import React from 'react' -import useSWR, { useSWRConfig } from 'swr' -import { createApp, fetchAppDetail, fetchAppList, getAppDailyConversations, getAppDailyEndUsers, updateAppApiStatus, updateAppModelConfig, updateAppRateLimit, updateAppSiteAccessToken, updateAppSiteConfig, updateAppSiteStatus } from '../apps' +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' +import { createApp, updateAppApiStatus, updateAppModelConfig, updateAppRateLimit, updateAppSiteAccessToken, updateAppSiteConfig, updateAppSiteStatus } from '../apps' import Loading from '@/app/components/base/loading' import { AppModeEnum } from '@/types/app' +import { + useAppDailyConversations, + useAppDailyEndUsers, + useAppDetail, + useAppList, +} from '../use-apps' const Service: FC = () => { - const { data: appList, error: appListError } = useSWR({ url: '/apps', params: { page: 1 } }, fetchAppList) - const { data: firstApp, error: appDetailError } = useSWR({ url: '/apps', id: '1' }, fetchAppDetail) - const { data: updateAppSiteStatusRes, error: err1 } = useSWR({ url: '/apps', id: '1', body: { enable_site: false } }, updateAppSiteStatus) - const { data: updateAppApiStatusRes, error: err2 } = useSWR({ url: '/apps', id: '1', body: { enable_api: true } }, updateAppApiStatus) - const { data: updateAppRateLimitRes, error: err3 } = useSWR({ url: '/apps', id: '1', body: { api_rpm: 10, api_rph: 20 } }, updateAppRateLimit) - const { data: updateAppSiteCodeRes, error: err4 } = useSWR({ url: '/apps', id: '1', body: {} }, updateAppSiteAccessToken) - const { data: updateAppSiteConfigRes, error: err5 } = useSWR({ url: '/apps', id: '1', body: { title: 'title test', author: 'author test' } }, updateAppSiteConfig) - const { data: getAppDailyConversationsRes, error: err6 } = useSWR({ url: '/apps', id: '1', body: { start: '1', end: '2' } }, getAppDailyConversations) - const { data: getAppDailyEndUsersRes, error: err7 } = useSWR({ url: '/apps', id: '1', body: { start: '1', end: '2' } }, getAppDailyEndUsers) - const { data: updateAppModelConfigRes, error: err8 } = useSWR({ url: '/apps', id: '1', body: { model_id: 'gpt-100' } }, updateAppModelConfig) + const appId = '1' + const queryClient = useQueryClient() - const { mutate } = useSWRConfig() + const { data: appList, error: appListError, isLoading: isAppListLoading } = useAppList({ page: 1, limit: 30, name: '' }) + const { data: firstApp, error: appDetailError, isLoading: isAppDetailLoading } = useAppDetail(appId) - const handleCreateApp = async () => { - await createApp({ + const { data: updateAppSiteStatusRes, error: err1, isLoading: isUpdatingSiteStatus } = useQuery({ + queryKey: ['demo', 'updateAppSiteStatus', appId], + queryFn: () => updateAppSiteStatus({ url: '/apps', body: { enable_site: false } }), + }) + const { data: updateAppApiStatusRes, error: err2, isLoading: isUpdatingApiStatus } = useQuery({ + queryKey: ['demo', 'updateAppApiStatus', appId], + queryFn: () => updateAppApiStatus({ url: '/apps', body: { enable_api: true } }), + }) + const { data: updateAppRateLimitRes, error: err3, isLoading: isUpdatingRateLimit } = useQuery({ + queryKey: ['demo', 'updateAppRateLimit', appId], + queryFn: () => updateAppRateLimit({ url: '/apps', body: { api_rpm: 10, api_rph: 20 } }), + }) + const { data: updateAppSiteCodeRes, error: err4, isLoading: isUpdatingSiteCode } = useQuery({ + queryKey: ['demo', 'updateAppSiteAccessToken', appId], + queryFn: () => updateAppSiteAccessToken({ url: '/apps' }), + }) + const { data: updateAppSiteConfigRes, error: err5, isLoading: isUpdatingSiteConfig } = useQuery({ + queryKey: ['demo', 'updateAppSiteConfig', appId], + queryFn: () => updateAppSiteConfig({ url: '/apps', body: { title: 'title test', author: 'author test' } }), + }) + + const { data: getAppDailyConversationsRes, error: err6, isLoading: isConversationsLoading } = useAppDailyConversations(appId, { start: '1', end: '2' }) + const { data: getAppDailyEndUsersRes, error: err7, isLoading: isEndUsersLoading } = useAppDailyEndUsers(appId, { start: '1', end: '2' }) + + const { data: updateAppModelConfigRes, error: err8, isLoading: isUpdatingModelConfig } = useQuery({ + queryKey: ['demo', 'updateAppModelConfig', appId], + queryFn: () => updateAppModelConfig({ url: '/apps', body: { model_id: 'gpt-100' } }), + }) + + const { mutateAsync: mutateCreateApp } = useMutation({ + mutationKey: ['demo', 'createApp'], + mutationFn: () => createApp({ name: `new app${Math.round(Math.random() * 100)}`, mode: AppModeEnum.CHAT, - }) - // reload app list - mutate({ url: '/apps', params: { page: 1 } }) + }), + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: ['apps', 'list'], + }) + }, + }) + + const handleCreateApp = async () => { + await mutateCreateApp() } if (appListError || appDetailError || err1 || err2 || err3 || err4 || err5 || err6 || err7 || err8) - return {JSON.stringify(appListError)} + return {JSON.stringify(appListError ?? appDetailError ?? err1 ?? err2 ?? err3 ?? err4 ?? err5 ?? err6 ?? err7 ?? err8)} - if (!appList || !firstApp || !updateAppSiteStatusRes || !updateAppApiStatusRes || !updateAppRateLimitRes || !updateAppSiteCodeRes || !updateAppSiteConfigRes || !getAppDailyConversationsRes || !getAppDailyEndUsersRes || !updateAppModelConfigRes) + const isLoading = isAppListLoading + || isAppDetailLoading + || isUpdatingSiteStatus + || isUpdatingApiStatus + || isUpdatingRateLimit + || isUpdatingSiteCode + || isUpdatingSiteConfig + || isConversationsLoading + || isEndUsersLoading + || isUpdatingModelConfig + + if (isLoading || !appList || !firstApp || !updateAppSiteStatusRes || !updateAppApiStatusRes || !updateAppRateLimitRes || !updateAppSiteCodeRes || !updateAppSiteConfigRes || !getAppDailyConversationsRes || !getAppDailyEndUsersRes || !updateAppModelConfigRes) return return ( diff --git a/web/service/use-apps.ts b/web/service/use-apps.ts index 8a2df8db1d..cc408c5d1a 100644 --- a/web/service/use-apps.ts +++ b/web/service/use-apps.ts @@ -1,31 +1,63 @@ import { get, post } from './base' -import type { App } from '@/types/app' -import type { AppListResponse } from '@/models/app' +import type { + ApiKeysListResponse, + AppDailyConversationsResponse, + AppDailyEndUsersResponse, + AppDailyMessagesResponse, + AppListResponse, + AppStatisticsResponse, + AppTokenCostsResponse, + AppVoicesListResponse, + WorkflowDailyConversationsResponse, +} from '@/models/app' +import type { App, AppModeEnum } from '@/types/app' import { useInvalid } from './use-base' -import { useQuery } from '@tanstack/react-query' +import { + useInfiniteQuery, + useQuery, + useQueryClient, +} from '@tanstack/react-query' import type { GeneratorType } from '@/app/components/app/configuration/config/automatic/types' const NAME_SPACE = 'apps' -// TODO paging for list +type AppListParams = { + page?: number + limit?: number + name?: string + mode?: AppModeEnum | 'all' + tag_ids?: string[] + is_created_by_me?: boolean +} + +type DateRangeParams = { + start?: string + end?: string +} + +const normalizeAppListParams = (params: AppListParams) => { + const { + page = 1, + limit = 30, + name = '', + mode, + tag_ids, + is_created_by_me, + } = params + + return { + page, + limit, + name, + ...(mode && mode !== 'all' ? { mode } : {}), + ...(tag_ids?.length ? { tag_ids } : {}), + ...(is_created_by_me ? { is_created_by_me } : {}), + } +} + +const appListKey = (params: AppListParams) => [NAME_SPACE, 'list', params] + const useAppFullListKey = [NAME_SPACE, 'full-list'] -export const useAppFullList = () => { - return useQuery({ - queryKey: useAppFullListKey, - queryFn: () => get('/apps', { params: { page: 1, limit: 100 } }), - }) -} - -export const useInvalidateAppFullList = () => { - return useInvalid(useAppFullListKey) -} - -export const useAppDetail = (appID: string) => { - return useQuery({ - queryKey: [NAME_SPACE, 'detail', appID], - queryFn: () => get(`/apps/${appID}`), - }) -} export const useGenerateRuleTemplate = (type: GeneratorType, disabled?: boolean) => { return useQuery({ @@ -39,3 +71,142 @@ export const useGenerateRuleTemplate = (type: GeneratorType, disabled?: boolean) retry: 0, }) } + +export const useAppDetail = (appID: string) => { + return useQuery({ + queryKey: [NAME_SPACE, 'detail', appID], + queryFn: () => get(`/apps/${appID}`), + enabled: !!appID, + }) +} + +export const useAppList = (params: AppListParams, options?: { enabled?: boolean }) => { + const normalizedParams = normalizeAppListParams(params) + return useQuery({ + queryKey: appListKey(normalizedParams), + queryFn: () => get('/apps', { params: normalizedParams }), + ...options, + }) +} + +export const useAppFullList = () => { + return useQuery({ + queryKey: useAppFullListKey, + queryFn: () => get('/apps', { params: { page: 1, limit: 100, name: '' } }), + }) +} + +export const useInvalidateAppFullList = () => { + return useInvalid(useAppFullListKey) +} + +export const useInfiniteAppList = (params: AppListParams, options?: { enabled?: boolean }) => { + const normalizedParams = normalizeAppListParams(params) + return useInfiniteQuery({ + queryKey: appListKey(normalizedParams), + queryFn: ({ pageParam = normalizedParams.page }) => get('/apps', { params: { ...normalizedParams, page: pageParam } }), + getNextPageParam: lastPage => lastPage.has_more ? lastPage.page + 1 : undefined, + initialPageParam: normalizedParams.page, + ...options, + }) +} + +export const useInvalidateAppList = () => { + const queryClient = useQueryClient() + return () => { + queryClient.invalidateQueries({ + queryKey: [NAME_SPACE, 'list'], + }) + } +} + +const useAppStatisticsQuery = (metric: string, appId: string, params?: DateRangeParams) => { + return useQuery({ + queryKey: [NAME_SPACE, 'statistics', metric, appId, params], + queryFn: () => get(`/apps/${appId}/statistics/${metric}`, { params }), + enabled: !!appId, + }) +} + +const useWorkflowStatisticsQuery = (metric: string, appId: string, params?: DateRangeParams) => { + return useQuery({ + queryKey: [NAME_SPACE, 'workflow-statistics', metric, appId, params], + queryFn: () => get(`/apps/${appId}/workflow/statistics/${metric}`, { params }), + enabled: !!appId, + }) +} + +export const useAppDailyMessages = (appId: string, params?: DateRangeParams) => { + return useAppStatisticsQuery('daily-messages', appId, params) +} + +export const useAppDailyConversations = (appId: string, params?: DateRangeParams) => { + return useAppStatisticsQuery('daily-conversations', appId, params) +} + +export const useAppDailyEndUsers = (appId: string, params?: DateRangeParams) => { + return useAppStatisticsQuery('daily-end-users', appId, params) +} + +export const useAppAverageSessionInteractions = (appId: string, params?: DateRangeParams) => { + return useAppStatisticsQuery('average-session-interactions', appId, params) +} + +export const useAppAverageResponseTime = (appId: string, params?: DateRangeParams) => { + return useAppStatisticsQuery('average-response-time', appId, params) +} + +export const useAppTokensPerSecond = (appId: string, params?: DateRangeParams) => { + return useAppStatisticsQuery('tokens-per-second', appId, params) +} + +export const useAppSatisfactionRate = (appId: string, params?: DateRangeParams) => { + return useAppStatisticsQuery('user-satisfaction-rate', appId, params) +} + +export const useAppTokenCosts = (appId: string, params?: DateRangeParams) => { + return useAppStatisticsQuery('token-costs', appId, params) +} + +export const useWorkflowDailyConversations = (appId: string, params?: DateRangeParams) => { + return useWorkflowStatisticsQuery('daily-conversations', appId, params) +} + +export const useWorkflowDailyTerminals = (appId: string, params?: DateRangeParams) => { + return useWorkflowStatisticsQuery('daily-terminals', appId, params) +} + +export const useWorkflowTokenCosts = (appId: string, params?: DateRangeParams) => { + return useWorkflowStatisticsQuery('token-costs', appId, params) +} + +export const useWorkflowAverageInteractions = (appId: string, params?: DateRangeParams) => { + return useWorkflowStatisticsQuery('average-app-interactions', appId, params) +} + +export const useAppVoices = (appId?: string, language?: string) => { + return useQuery({ + queryKey: [NAME_SPACE, 'voices', appId, language || 'en-US'], + queryFn: () => get(`/apps/${appId}/text-to-audio/voices`, { params: { language: language || 'en-US' } }), + enabled: !!appId, + }) +} + +export const useAppApiKeys = (appId?: string, options?: { enabled?: boolean }) => { + return useQuery({ + queryKey: [NAME_SPACE, 'api-keys', appId], + queryFn: () => get(`/apps/${appId}/api-keys`), + enabled: !!appId && (options?.enabled ?? true), + }) +} + +export const useInvalidateAppApiKeys = () => { + const queryClient = useQueryClient() + return (appId?: string) => { + if (!appId) + return + queryClient.invalidateQueries({ + queryKey: [NAME_SPACE, 'api-keys', appId], + }) + } +}
{t('appApi.apiKeyModal.apiSecretKeyTips')}