diff --git a/.devcontainer/post_create_command.sh b/.devcontainer/post_create_command.sh index 39a653953e..2fef313f72 100755 --- a/.devcontainer/post_create_command.sh +++ b/.devcontainer/post_create_command.sh @@ -1,6 +1,6 @@ #!/bin/bash -npm add -g pnpm@10.15.0 +corepack enable cd web && pnpm install pipx install uv diff --git a/api/controllers/console/app/message.py b/api/controllers/console/app/message.py index f61ddb464a..05b668b803 100644 --- a/api/controllers/console/app/message.py +++ b/api/controllers/console/app/message.py @@ -3,6 +3,7 @@ import logging from flask_login import current_user from flask_restx import Resource, fields, marshal_with, reqparse from flask_restx.inputs import int_range +from sqlalchemy import exists, select from werkzeug.exceptions import Forbidden, InternalServerError, NotFound from controllers.console import api @@ -94,21 +95,18 @@ class ChatMessageListApi(Resource): .all() ) - has_more = False if len(history_messages) == args["limit"]: current_page_first_message = history_messages[-1] - rest_count = ( - db.session.query(Message) - .where( + + has_more = db.session.scalar( + select( + exists().where( Message.conversation_id == conversation.id, Message.created_at < current_page_first_message.created_at, Message.id != current_page_first_message.id, ) - .count() ) - - if rest_count > 0: - has_more = True + ) history_messages = list(reversed(history_messages)) diff --git a/api/controllers/web/__init__.py b/api/controllers/web/__init__.py index 56749a0e25..3b0a9e341a 100644 --- a/api/controllers/web/__init__.py +++ b/api/controllers/web/__init__.py @@ -1,19 +1,20 @@ from flask import Blueprint +from flask_restx import Namespace from libs.external_api import ExternalApi -from .files import FileApi -from .remote_files import RemoteFileInfoApi, RemoteFileUploadApi - bp = Blueprint("web", __name__, url_prefix="/api") -api = ExternalApi(bp) -# Files -api.add_resource(FileApi, "/files/upload") +api = ExternalApi( + bp, + version="1.0", + title="Web API", + description="Public APIs for web applications including file uploads, chat interactions, and app management", + doc="/docs", # Enable Swagger UI at /api/docs +) -# Remote files -api.add_resource(RemoteFileInfoApi, "/remote-files/") -api.add_resource(RemoteFileUploadApi, "/remote-files/upload") +# Create namespace +web_ns = Namespace("web", description="Web application API operations", path="/") from . import ( app, @@ -21,11 +22,15 @@ from . import ( completion, conversation, feature, + files, forgot_password, login, message, passport, + remote_files, saved_message, site, workflow, ) + +api.add_namespace(web_ns) diff --git a/api/controllers/web/feature.py b/api/controllers/web/feature.py index 478b3d2e31..cce3dae95d 100644 --- a/api/controllers/web/feature.py +++ b/api/controllers/web/feature.py @@ -1,12 +1,21 @@ from flask_restx import Resource -from controllers.web import api +from controllers.web import web_ns from services.feature_service import FeatureService +@web_ns.route("/system-features") class SystemFeatureApi(Resource): + @web_ns.doc("get_system_features") + @web_ns.doc(description="Get system feature flags and configuration") + @web_ns.doc(responses={200: "System features retrieved successfully", 500: "Internal server error"}) def get(self): + """Get system feature flags and configuration. + + Returns the current system feature flags and configuration + that control various functionalities across the platform. + + Returns: + dict: System feature configuration object + """ return FeatureService.get_system_features().model_dump() - - -api.add_resource(SystemFeatureApi, "/system-features") diff --git a/api/controllers/web/files.py b/api/controllers/web/files.py index b05e2a2e65..7508874fae 100644 --- a/api/controllers/web/files.py +++ b/api/controllers/web/files.py @@ -9,14 +9,50 @@ from controllers.common.errors import ( TooManyFilesError, UnsupportedFileTypeError, ) +from controllers.web import web_ns from controllers.web.wraps import WebApiResource -from fields.file_fields import file_fields +from fields.file_fields import build_file_model from services.file_service import FileService +@web_ns.route("/files/upload") class FileApi(WebApiResource): - @marshal_with(file_fields) + @web_ns.doc("upload_file") + @web_ns.doc(description="Upload a file for use in web applications") + @web_ns.doc( + responses={ + 201: "File uploaded successfully", + 400: "Bad request - invalid file or parameters", + 413: "File too large", + 415: "Unsupported file type", + } + ) + @marshal_with(build_file_model(web_ns)) def post(self, app_model, end_user): + """Upload a file for use in web applications. + + Accepts file uploads for use within web applications, supporting + multiple file types with automatic validation and storage. + + Args: + app_model: The associated application model + end_user: The end user uploading the file + + Form Parameters: + file: The file to upload (required) + source: Optional source type (datasets or None) + + Returns: + dict: File information including ID, URL, and metadata + int: HTTP status code 201 for success + + Raises: + NoFileUploadedError: No file provided in request + TooManyFilesError: Multiple files provided (only one allowed) + FilenameNotExistsError: File has no filename + FileTooLargeError: File exceeds size limit + UnsupportedFileTypeError: File type not supported + """ if "file" not in request.files: raise NoFileUploadedError() diff --git a/api/controllers/web/forgot_password.py b/api/controllers/web/forgot_password.py index b596d969a9..c743d0f52b 100644 --- a/api/controllers/web/forgot_password.py +++ b/api/controllers/web/forgot_password.py @@ -16,7 +16,7 @@ from controllers.console.auth.error import ( ) from controllers.console.error import EmailSendIpLimitError from controllers.console.wraps import email_password_login_enabled, only_edition_enterprise, setup_required -from controllers.web import api +from controllers.web import web_ns from extensions.ext_database import db from libs.helper import email, extract_remote_ip from libs.password import hash_password, valid_password @@ -24,10 +24,21 @@ from models.account import Account from services.account_service import AccountService +@web_ns.route("/forgot-password") class ForgotPasswordSendEmailApi(Resource): @only_edition_enterprise @setup_required @email_password_login_enabled + @web_ns.doc("send_forgot_password_email") + @web_ns.doc(description="Send password reset email") + @web_ns.doc( + responses={ + 200: "Password reset email sent successfully", + 400: "Bad request - invalid email format", + 404: "Account not found", + 429: "Too many requests - rate limit exceeded", + } + ) def post(self): parser = reqparse.RequestParser() parser.add_argument("email", type=email, required=True, location="json") @@ -54,10 +65,16 @@ class ForgotPasswordSendEmailApi(Resource): return {"result": "success", "data": token} +@web_ns.route("/forgot-password/validity") class ForgotPasswordCheckApi(Resource): @only_edition_enterprise @setup_required @email_password_login_enabled + @web_ns.doc("check_forgot_password_token") + @web_ns.doc(description="Verify password reset token validity") + @web_ns.doc( + responses={200: "Token is valid", 400: "Bad request - invalid token format", 401: "Invalid or expired token"} + ) def post(self): parser = reqparse.RequestParser() parser.add_argument("email", type=str, required=True, location="json") @@ -94,10 +111,21 @@ class ForgotPasswordCheckApi(Resource): return {"is_valid": True, "email": token_data.get("email"), "token": new_token} +@web_ns.route("/forgot-password/resets") class ForgotPasswordResetApi(Resource): @only_edition_enterprise @setup_required @email_password_login_enabled + @web_ns.doc("reset_password") + @web_ns.doc(description="Reset user password with verification token") + @web_ns.doc( + responses={ + 200: "Password reset successfully", + 400: "Bad request - invalid parameters or password mismatch", + 401: "Invalid or expired token", + 404: "Account not found", + } + ) def post(self): parser = reqparse.RequestParser() parser.add_argument("token", type=str, required=True, nullable=False, location="json") @@ -141,8 +169,3 @@ class ForgotPasswordResetApi(Resource): account.password = base64.b64encode(password_hashed).decode() account.password_salt = base64.b64encode(salt).decode() session.commit() - - -api.add_resource(ForgotPasswordSendEmailApi, "/forgot-password") -api.add_resource(ForgotPasswordCheckApi, "/forgot-password/validity") -api.add_resource(ForgotPasswordResetApi, "/forgot-password/resets") diff --git a/api/controllers/web/login.py b/api/controllers/web/login.py index 4f6ff5c1a4..d2b7c72baa 100644 --- a/api/controllers/web/login.py +++ b/api/controllers/web/login.py @@ -9,18 +9,30 @@ from controllers.console.auth.error import ( ) from controllers.console.error import AccountBannedError from controllers.console.wraps import only_edition_enterprise, setup_required -from controllers.web import api +from controllers.web import web_ns from libs.helper import email from libs.password import valid_password from services.account_service import AccountService from services.webapp_auth_service import WebAppAuthService +@web_ns.route("/login") class LoginApi(Resource): """Resource for web app email/password login.""" @setup_required @only_edition_enterprise + @web_ns.doc("web_app_login") + @web_ns.doc(description="Authenticate user for web application access") + @web_ns.doc( + responses={ + 200: "Authentication successful", + 400: "Bad request - invalid email or password format", + 401: "Authentication failed - email or password mismatch", + 403: "Account banned or login disabled", + 404: "Account not found", + } + ) def post(self): """Authenticate user and login.""" parser = reqparse.RequestParser() @@ -51,9 +63,19 @@ class LoginApi(Resource): # return {"result": "success"} +@web_ns.route("/email-code-login") class EmailCodeLoginSendEmailApi(Resource): @setup_required @only_edition_enterprise + @web_ns.doc("send_email_code_login") + @web_ns.doc(description="Send email verification code for login") + @web_ns.doc( + responses={ + 200: "Email code sent successfully", + 400: "Bad request - invalid email format", + 404: "Account not found", + } + ) def post(self): parser = reqparse.RequestParser() parser.add_argument("email", type=email, required=True, location="json") @@ -74,9 +96,20 @@ class EmailCodeLoginSendEmailApi(Resource): return {"result": "success", "data": token} +@web_ns.route("/email-code-login/validity") class EmailCodeLoginApi(Resource): @setup_required @only_edition_enterprise + @web_ns.doc("verify_email_code_login") + @web_ns.doc(description="Verify email code and complete login") + @web_ns.doc( + responses={ + 200: "Email code verified and login successful", + 400: "Bad request - invalid code or token", + 401: "Invalid token or expired code", + 404: "Account not found", + } + ) def post(self): parser = reqparse.RequestParser() parser.add_argument("email", type=str, required=True, location="json") @@ -104,9 +137,3 @@ class EmailCodeLoginApi(Resource): token = WebAppAuthService.login(account=account) AccountService.reset_login_error_rate_limit(args["email"]) return {"result": "success", "data": {"access_token": token}} - - -api.add_resource(LoginApi, "/login") -# api.add_resource(LogoutApi, "/logout") -api.add_resource(EmailCodeLoginSendEmailApi, "/email-code-login") -api.add_resource(EmailCodeLoginApi, "/email-code-login/validity") diff --git a/api/controllers/web/passport.py b/api/controllers/web/passport.py index 1ac20e6531..6f7105a724 100644 --- a/api/controllers/web/passport.py +++ b/api/controllers/web/passport.py @@ -7,7 +7,7 @@ from sqlalchemy import func, select from werkzeug.exceptions import NotFound, Unauthorized from configs import dify_config -from controllers.web import api +from controllers.web import web_ns from controllers.web.error import WebAppAuthRequiredError from extensions.ext_database import db from libs.passport import PassportService @@ -17,9 +17,19 @@ from services.feature_service import FeatureService from services.webapp_auth_service import WebAppAuthService, WebAppAuthType +@web_ns.route("/passport") class PassportResource(Resource): """Base resource for passport.""" + @web_ns.doc("get_passport") + @web_ns.doc(description="Get authentication passport for web application access") + @web_ns.doc( + responses={ + 200: "Passport retrieved successfully", + 401: "Unauthorized - missing app code or invalid authentication", + 404: "Application or user not found", + } + ) def get(self): system_features = FeatureService.get_system_features() app_code = request.headers.get("X-App-Code") @@ -94,9 +104,6 @@ class PassportResource(Resource): } -api.add_resource(PassportResource, "/passport") - - def decode_enterprise_webapp_user_id(jwt_token: str | None): """ Decode the enterprise user session from the Authorization header. diff --git a/api/controllers/web/remote_files.py b/api/controllers/web/remote_files.py index 930b9d96e9..ab20c7667c 100644 --- a/api/controllers/web/remote_files.py +++ b/api/controllers/web/remote_files.py @@ -10,16 +10,44 @@ from controllers.common.errors import ( RemoteFileUploadError, UnsupportedFileTypeError, ) +from controllers.web import web_ns from controllers.web.wraps import WebApiResource from core.file import helpers as file_helpers from core.helper import ssrf_proxy -from fields.file_fields import file_fields_with_signed_url, remote_file_info_fields +from fields.file_fields import build_file_with_signed_url_model, build_remote_file_info_model from services.file_service import FileService +@web_ns.route("/remote-files/") class RemoteFileInfoApi(WebApiResource): - @marshal_with(remote_file_info_fields) + @web_ns.doc("get_remote_file_info") + @web_ns.doc(description="Get information about a remote file") + @web_ns.doc( + responses={ + 200: "Remote file information retrieved successfully", + 400: "Bad request - invalid URL", + 404: "Remote file not found", + 500: "Failed to fetch remote file", + } + ) + @marshal_with(build_remote_file_info_model(web_ns)) def get(self, app_model, end_user, url): + """Get information about a remote file. + + Retrieves basic information about a file located at a remote URL, + including content type and content length. + + Args: + app_model: The associated application model + end_user: The end user making the request + url: URL-encoded path to the remote file + + Returns: + dict: Remote file information including type and length + + Raises: + HTTPException: If the remote file cannot be accessed + """ decoded_url = urllib.parse.unquote(url) resp = ssrf_proxy.head(decoded_url) if resp.status_code != httpx.codes.OK: @@ -32,9 +60,42 @@ class RemoteFileInfoApi(WebApiResource): } +@web_ns.route("/remote-files/upload") class RemoteFileUploadApi(WebApiResource): - @marshal_with(file_fields_with_signed_url) - def post(self, app_model, end_user): # Add app_model and end_user parameters + @web_ns.doc("upload_remote_file") + @web_ns.doc(description="Upload a file from a remote URL") + @web_ns.doc( + responses={ + 201: "Remote file uploaded successfully", + 400: "Bad request - invalid URL or parameters", + 413: "File too large", + 415: "Unsupported file type", + 500: "Failed to fetch remote file", + } + ) + @marshal_with(build_file_with_signed_url_model(web_ns)) + def post(self, app_model, end_user): + """Upload a file from a remote URL. + + Downloads a file from the provided remote URL and uploads it + to the platform storage for use in web applications. + + Args: + app_model: The associated application model + end_user: The end user making the request + + JSON Parameters: + url: The remote URL to download the file from (required) + + Returns: + dict: File information including ID, signed URL, and metadata + int: HTTP status code 201 for success + + Raises: + RemoteFileUploadError: Failed to fetch file from remote URL + FileTooLargeError: File exceeds size limit + UnsupportedFileTypeError: File type not supported + """ parser = reqparse.RequestParser() parser.add_argument("url", type=str, required=True, help="URL is required") args = parser.parse_args() diff --git a/api/models/model.py b/api/models/model.py index 19ffd4ab0e..e800bc9ace 100644 --- a/api/models/model.py +++ b/api/models/model.py @@ -9,7 +9,7 @@ from typing import TYPE_CHECKING, Any, Literal, Optional, cast import sqlalchemy as sa from flask import request from flask_login import UserMixin -from sqlalchemy import Float, Index, PrimaryKeyConstraint, String, func, text +from sqlalchemy import Float, Index, PrimaryKeyConstraint, String, exists, func, select, text from sqlalchemy.orm import Mapped, Session, mapped_column from configs import dify_config @@ -1554,7 +1554,7 @@ class ApiToken(Base): def generate_api_key(prefix, n): while True: result = prefix + generate_string(n) - if db.session.query(ApiToken).where(ApiToken.token == result).count() > 0: + if db.session.scalar(select(exists().where(ApiToken.token == result))): continue return result diff --git a/api/models/workflow.py b/api/models/workflow.py index 7843337192..842b227028 100644 --- a/api/models/workflow.py +++ b/api/models/workflow.py @@ -7,7 +7,7 @@ from typing import TYPE_CHECKING, Any, Optional, Union from uuid import uuid4 import sqlalchemy as sa -from sqlalchemy import DateTime, orm +from sqlalchemy import DateTime, exists, orm, select from core.file.constants import maybe_file_object from core.file.models import File @@ -336,12 +336,13 @@ class Workflow(Base): """ from models.tools import WorkflowToolProvider - return ( - db.session.query(WorkflowToolProvider) - .where(WorkflowToolProvider.tenant_id == self.tenant_id, WorkflowToolProvider.app_id == self.app_id) - .count() - > 0 + stmt = select( + exists().where( + WorkflowToolProvider.tenant_id == self.tenant_id, + WorkflowToolProvider.app_id == self.app_id, + ) ) + return db.session.execute(stmt).scalar_one() @property def environment_variables(self) -> Sequence[StringVariable | IntegerVariable | FloatVariable | SecretVariable]: @@ -921,7 +922,7 @@ def _naive_utc_datetime(): class WorkflowDraftVariable(Base): """`WorkflowDraftVariable` record variables and outputs generated during - debugging worfklow or chatflow. + debugging workflow or chatflow. IMPORTANT: This model maintains multiple invariant rules that must be preserved. Do not instantiate this class directly with the constructor. diff --git a/api/services/dataset_service.py b/api/services/dataset_service.py index 38d2013bed..c66fac1b87 100644 --- a/api/services/dataset_service.py +++ b/api/services/dataset_service.py @@ -9,7 +9,7 @@ from collections import Counter from typing import Any, Literal, Optional from flask_login import current_user -from sqlalchemy import func, select +from sqlalchemy import exists, func, select from sqlalchemy.orm import Session from werkzeug.exceptions import NotFound @@ -655,10 +655,8 @@ class DatasetService: @staticmethod def dataset_use_check(dataset_id) -> bool: - count = db.session.query(AppDatasetJoin).filter_by(dataset_id=dataset_id).count() - if count > 0: - return True - return False + stmt = select(exists().where(AppDatasetJoin.dataset_id == dataset_id)) + return db.session.execute(stmt).scalar_one() @staticmethod def check_dataset_permission(dataset, user): diff --git a/api/services/tools/builtin_tools_manage_service.py b/api/services/tools/builtin_tools_manage_service.py index a773d39cd9..fa57296718 100644 --- a/api/services/tools/builtin_tools_manage_service.py +++ b/api/services/tools/builtin_tools_manage_service.py @@ -5,6 +5,7 @@ from collections.abc import Mapping from pathlib import Path from typing import Any, Optional +from sqlalchemy import exists, select from sqlalchemy.orm import Session from configs import dify_config @@ -190,11 +191,14 @@ class BuiltinToolManageService: # update name if provided if name and name != db_provider.name: # check if the name is already used - if ( - session.query(BuiltinToolProvider) - .filter_by(tenant_id=tenant_id, provider=provider, name=name) - .count() - > 0 + if session.scalar( + select( + exists().where( + BuiltinToolProvider.tenant_id == tenant_id, + BuiltinToolProvider.provider == provider, + BuiltinToolProvider.name == name, + ) + ) ): raise ValueError(f"the credential name '{name}' is already used") @@ -246,11 +250,14 @@ class BuiltinToolManageService: ) else: # check if the name is already used - if ( - session.query(BuiltinToolProvider) - .filter_by(tenant_id=tenant_id, provider=provider, name=name) - .count() - > 0 + if session.scalar( + select( + exists().where( + BuiltinToolProvider.tenant_id == tenant_id, + BuiltinToolProvider.provider == provider, + BuiltinToolProvider.name == name, + ) + ) ): raise ValueError(f"the credential name '{name}' is already used") diff --git a/api/services/workflow_service.py b/api/services/workflow_service.py index 56d84af257..2295ed9c03 100644 --- a/api/services/workflow_service.py +++ b/api/services/workflow_service.py @@ -4,7 +4,7 @@ import uuid from collections.abc import Callable, Generator, Mapping, Sequence from typing import Any, Optional, cast -from sqlalchemy import select +from sqlalchemy import exists, select from sqlalchemy.orm import Session, sessionmaker from core.app.app_config.entities import VariableEntityType @@ -83,15 +83,14 @@ class WorkflowService: ) def is_workflow_exist(self, app_model: App) -> bool: - return ( - db.session.query(Workflow) - .where( + stmt = select( + exists().where( Workflow.tenant_id == app_model.tenant_id, Workflow.app_id == app_model.id, Workflow.version == Workflow.VERSION_DRAFT, ) - .count() - ) > 0 + ) + return db.session.execute(stmt).scalar_one() def get_draft_workflow(self, app_model: App) -> Optional[Workflow]: """ diff --git a/api/tasks/annotation/disable_annotation_reply_task.py b/api/tasks/annotation/disable_annotation_reply_task.py index c824059bf0..c0020b29ed 100644 --- a/api/tasks/annotation/disable_annotation_reply_task.py +++ b/api/tasks/annotation/disable_annotation_reply_task.py @@ -3,6 +3,7 @@ import time import click from celery import shared_task +from sqlalchemy import exists, select from core.rag.datasource.vdb.vector_factory import Vector from extensions.ext_database import db @@ -22,7 +23,7 @@ def disable_annotation_reply_task(job_id: str, app_id: str, tenant_id: str): start_at = time.perf_counter() # get app info app = db.session.query(App).where(App.id == app_id, App.tenant_id == tenant_id, App.status == "normal").first() - annotations_count = db.session.query(MessageAnnotation).where(MessageAnnotation.app_id == app_id).count() + annotations_exists = db.session.scalar(select(exists().where(MessageAnnotation.app_id == app_id))) if not app: logger.info(click.style(f"App not found: {app_id}", fg="red")) db.session.close() @@ -47,7 +48,7 @@ def disable_annotation_reply_task(job_id: str, app_id: str, tenant_id: str): ) try: - if annotations_count > 0: + if annotations_exists: vector = Vector(dataset, attributes=["doc_id", "annotation_id", "app_id"]) vector.delete() except Exception: diff --git a/web/app/components/datasets/hit-testing/components/chunk-detail-modal.tsx b/web/app/components/datasets/hit-testing/components/chunk-detail-modal.tsx index 4fd62bb22d..71c5edb21a 100644 --- a/web/app/components/datasets/hit-testing/components/chunk-detail-modal.tsx +++ b/web/app/components/datasets/hit-testing/components/chunk-detail-modal.tsx @@ -27,10 +27,11 @@ const ChunkDetailModal: FC = ({ }) => { const { t } = useTranslation() const { segment, score, child_chunks } = payload - const { position, content, sign_content, keywords, document } = segment + const { position, content, sign_content, keywords, document, answer } = segment const isParentChildRetrieval = !!(child_chunks && child_chunks.length > 0) const extension = document.name.split('.').slice(-1)[0] as FileAppearanceTypeEnum const heighClassName = isParentChildRetrieval ? 'h-[min(627px,_80vh)] overflow-y-auto' : 'h-[min(539px,_80vh)] overflow-y-auto' + const labelPrefix = isParentChildRetrieval ? t('datasetDocuments.segment.parentChunk') : t('datasetDocuments.segment.chunk') return ( = ({
@@ -57,11 +58,29 @@ const ChunkDetailModal: FC = ({
- + {!answer && ( + + )} + {answer && ( +
+
+
Q
+
+ {content} +
+
+
+
A
+
+ {answer} +
+
+
+ )} {!isParentChildRetrieval && keywords && keywords.length > 0 && (
{t(`${i18nPrefix}.keyword`)}
diff --git a/web/app/components/share/utils.ts b/web/app/components/share/utils.ts index 0c6457fb0c..3f5303dfcc 100644 --- a/web/app/components/share/utils.ts +++ b/web/app/components/share/utils.ts @@ -32,6 +32,7 @@ export const checkOrSetAccessToken = async (appCode?: string | null) => { [userId || 'DEFAULT']: res.access_token, } localStorage.setItem('token', JSON.stringify(accessTokenJson)) + localStorage.removeItem(CONVERSATION_ID_INFO) } } diff --git a/web/context/web-app-context.tsx b/web/context/web-app-context.tsx index deb7aea53c..0fe1b56b0a 100644 --- a/web/context/web-app-context.tsx +++ b/web/context/web-app-context.tsx @@ -11,6 +11,7 @@ import type { FC, PropsWithChildren } from 'react' import { useEffect } from 'react' import { useState } from 'react' import { create } from 'zustand' +import { useGlobalPublicStore } from './global-public-context' type WebAppStore = { shareCode: string | null @@ -56,6 +57,7 @@ const getShareCodeFromPathname = (pathname: string): string | null => { } const WebAppStoreProvider: FC = ({ children }) => { + const isGlobalPending = useGlobalPublicStore(s => s.isGlobalPending) const updateWebAppAccessMode = useWebAppStore(state => state.updateWebAppAccessMode) const updateShareCode = useWebAppStore(state => state.updateShareCode) const pathname = usePathname() @@ -69,7 +71,7 @@ const WebAppStoreProvider: FC = ({ children }) => { }, [shareCode, updateShareCode]) const { isFetching, data: accessModeResult } = useGetWebAppAccessModeByCode(shareCode) - const [isFetchingAccessToken, setIsFetchingAccessToken] = useState(false) + const [isFetchingAccessToken, setIsFetchingAccessToken] = useState(true) useEffect(() => { if (accessModeResult?.accessMode) { @@ -86,7 +88,7 @@ const WebAppStoreProvider: FC = ({ children }) => { } }, [accessModeResult, updateWebAppAccessMode, shareCode]) - if (isFetching || isFetchingAccessToken) { + if (isGlobalPending || isFetching || isFetchingAccessToken) { return
diff --git a/web/eslint.config.mjs b/web/eslint.config.mjs index 747c14ad67..99f85ab4cc 100644 --- a/web/eslint.config.mjs +++ b/web/eslint.config.mjs @@ -9,6 +9,7 @@ import tailwind from 'eslint-plugin-tailwindcss' import reactHooks from 'eslint-plugin-react-hooks' import sonar from 'eslint-plugin-sonarjs' import oxlint from 'eslint-plugin-oxlint' +import next from '@next/eslint-plugin-next' // import reactRefresh from 'eslint-plugin-react-refresh' @@ -63,12 +64,14 @@ export default combine( }), unicorn(), node(), - // use nextjs config will break @eslint/config-inspector - // use `ESLINT_CONFIG_INSPECTOR=true pnpx @eslint/config-inspector` to check the config - // ...process.env.ESLINT_CONFIG_INSPECTOR - // ? [] + // Next.js configuration { + plugins: { + '@next/next': next, + }, rules: { + ...next.configs.recommended.rules, + ...next.configs['core-web-vitals'].rules, // performance issue, and not used. '@next/next/no-html-link-for-pages': 'off', }, diff --git a/web/models/datasets.ts b/web/models/datasets.ts index 12ea4972ca..bc00bf3f78 100644 --- a/web/models/datasets.ts +++ b/web/models/datasets.ts @@ -545,6 +545,7 @@ export type Segment = { keywords: string[] hit_count: number index_node_hash: string + answer: string } export type Document = { diff --git a/web/package.json b/web/package.json index e1945d95ad..e579d688a3 100644 --- a/web/package.json +++ b/web/package.json @@ -25,7 +25,7 @@ "start": "cp -r .next/static .next/standalone/.next/static && cp -r public .next/standalone/public && cross-env PORT=$npm_config_port HOSTNAME=$npm_config_host node .next/standalone/server.js", "lint": "pnpx oxlint && pnpm eslint --cache --cache-location node_modules/.cache/eslint/.eslint-cache", "lint-only-show-error": "pnpx oxlint && pnpm eslint --cache --cache-location node_modules/.cache/eslint/.eslint-cache --quiet", - "fix": "next lint --fix", + "fix": "eslint --fix .", "eslint-fix": "eslint --cache --cache-location node_modules/.cache/eslint/.eslint-cache --fix", "eslint-fix-only-show-error": "eslint --cache --cache-location node_modules/.cache/eslint/.eslint-cache --fix --quiet", "eslint-complexity": "eslint --rule 'complexity: [error, {max: 15}]' --quiet", @@ -103,14 +103,14 @@ "mime": "^4.0.4", "mitt": "^3.0.1", "negotiator": "^0.6.3", - "next": "~15.3.5", + "next": "15.5.0", "next-themes": "^0.4.3", "pinyin-pro": "^3.25.0", "qrcode.react": "^4.2.0", "qs": "^6.13.0", - "react": "~19.1.0", + "react": "19.1.1", "react-18-input-autosize": "^3.0.0", - "react-dom": "~19.1.0", + "react-dom": "19.1.1", "react-easy-crop": "^5.1.0", "react-error-boundary": "^4.1.2", "react-headless-pagination": "^1.1.6", @@ -161,9 +161,9 @@ "@happy-dom/jest-environment": "^17.4.4", "@mdx-js/loader": "^3.1.0", "@mdx-js/react": "^3.1.0", - "@next/bundle-analyzer": "^15.4.1", - "@next/eslint-plugin-next": "~15.4.5", - "@next/mdx": "~15.3.5", + "@next/bundle-analyzer": "15.5.0", + "@next/eslint-plugin-next": "15.5.0", + "@next/mdx": "15.5.0", "@rgrove/parse-xml": "^4.1.0", "@storybook/addon-essentials": "8.5.0", "@storybook/addon-interactions": "8.5.0", @@ -185,8 +185,8 @@ "@types/negotiator": "^0.6.3", "@types/node": "18.15.0", "@types/qs": "^6.9.16", - "@types/react": "~19.1.8", - "@types/react-dom": "~19.1.6", + "@types/react": "19.1.11", + "@types/react-dom": "19.1.7", "@types/react-slider": "^1.3.6", "@types/react-syntax-highlighter": "^15.5.13", "@types/react-window": "^1.8.8", @@ -200,7 +200,7 @@ "code-inspector-plugin": "^0.18.1", "cross-env": "^7.0.3", "eslint": "^9.32.0", - "eslint-config-next": "~15.4.5", + "eslint-config-next": "15.5.0", "eslint-plugin-oxlint": "^1.6.0", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-react-refresh": "^0.4.19", @@ -223,8 +223,8 @@ "uglify-js": "^3.19.3" }, "resolutions": { - "@types/react": "~19.1.8", - "@types/react-dom": "~19.1.6", + "@types/react": "19.1.11", + "@types/react-dom": "19.1.7", "string-width": "4.2.3" }, "lint-staged": { diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 5bce1418a2..b3695a0b89 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -5,8 +5,8 @@ settings: excludeLinksFromLockfile: false overrides: - '@types/react': ~19.1.8 - '@types/react-dom': ~19.1.6 + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7 string-width: 4.2.3 '@eslint/plugin-kit@<0.3.4': 0.3.4 esbuild@<0.25.0: 0.25.0 @@ -62,19 +62,19 @@ importers: version: 1.3.1(eslint@9.32.0(jiti@1.21.7)) '@floating-ui/react': specifier: ^0.26.25 - version: 0.26.28(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@formatjs/intl-localematcher': specifier: ^0.5.6 version: 0.5.10 '@headlessui/react': specifier: 2.2.1 - version: 2.2.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.2.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@heroicons/react': specifier: ^2.0.16 - version: 2.2.0(react@19.1.0) + version: 2.2.0(react@19.1.1) '@hookform/resolvers': specifier: ^3.9.0 - version: 3.10.0(react-hook-form@7.60.0(react@19.1.0)) + version: 3.10.0(react-hook-form@7.60.0(react@19.1.1)) '@lexical/code': specifier: ^0.30.0 version: 0.30.0 @@ -86,7 +86,7 @@ importers: version: 0.30.0 '@lexical/react': specifier: ^0.30.0 - version: 0.30.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(yjs@13.6.27) + version: 0.30.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(yjs@13.6.27) '@lexical/selection': specifier: ^0.30.0 version: 0.30.0 @@ -98,7 +98,7 @@ importers: version: 0.30.0 '@monaco-editor/react': specifier: ^4.6.0 - version: 4.7.0(monaco-editor@0.52.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 4.7.0(monaco-editor@0.52.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@octokit/core': specifier: ^6.1.2 version: 6.1.6 @@ -107,10 +107,10 @@ importers: version: 6.1.8 '@remixicon/react': specifier: ^4.5.0 - version: 4.6.0(react@19.1.0) + version: 4.6.0(react@19.1.1) '@sentry/react': specifier: ^8.54.0 - version: 8.55.0(react@19.1.0) + version: 8.55.0(react@19.1.1) '@sentry/utils': specifier: ^8.54.0 version: 8.55.0 @@ -122,19 +122,19 @@ importers: version: 0.5.16(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@18.15.0)(typescript@5.8.3))) '@tanstack/react-form': specifier: ^1.3.3 - version: 1.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.14.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@tanstack/react-query': specifier: ^5.60.5 - version: 5.83.0(react@19.1.0) + version: 5.83.0(react@19.1.1) '@tanstack/react-query-devtools': specifier: ^5.60.5 - version: 5.83.0(@tanstack/react-query@5.83.0(react@19.1.0))(react@19.1.0) + version: 5.83.0(@tanstack/react-query@5.83.0(react@19.1.1))(react@19.1.1) abcjs: specifier: ^6.4.4 version: 6.5.1 ahooks: specifier: ^3.8.4 - version: 3.9.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 3.9.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) class-variance-authority: specifier: ^0.7.0 version: 0.7.1 @@ -146,7 +146,7 @@ importers: version: 2.1.1 cmdk: specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.1(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) copy-to-clipboard: specifier: ^3.3.3 version: 3.3.3 @@ -167,7 +167,7 @@ importers: version: 5.6.0 echarts-for-react: specifier: ^3.0.2 - version: 3.0.2(echarts@5.6.0)(react@19.1.0) + version: 3.0.2(echarts@5.6.0)(react@19.1.1) elkjs: specifier: ^0.9.3 version: 0.9.3 @@ -232,86 +232,86 @@ importers: specifier: ^0.6.3 version: 0.6.4 next: - specifier: ~15.3.5 - version: 15.3.5(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.89.2) + specifier: 15.5.0 + version: 15.5.0(@babel/core@7.28.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.89.2) next-themes: specifier: ^0.4.3 - version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) pinyin-pro: specifier: ^3.25.0 version: 3.26.0 qrcode.react: specifier: ^4.2.0 - version: 4.2.0(react@19.1.0) + version: 4.2.0(react@19.1.1) qs: specifier: ^6.13.0 version: 6.14.0 react: - specifier: ~19.1.0 - version: 19.1.0 + specifier: 19.1.1 + version: 19.1.1 react-18-input-autosize: specifier: ^3.0.0 - version: 3.0.0(react@19.1.0) + version: 3.0.0(react@19.1.1) react-dom: - specifier: ~19.1.0 - version: 19.1.0(react@19.1.0) + specifier: 19.1.1 + version: 19.1.1(react@19.1.1) react-easy-crop: specifier: ^5.1.0 - version: 5.5.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 5.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-error-boundary: specifier: ^4.1.2 - version: 4.1.2(react@19.1.0) + version: 4.1.2(react@19.1.1) react-headless-pagination: specifier: ^1.1.6 - version: 1.1.6(react@19.1.0) + version: 1.1.6(react@19.1.1) react-hook-form: specifier: ^7.53.1 - version: 7.60.0(react@19.1.0) + version: 7.60.0(react@19.1.1) react-hotkeys-hook: specifier: ^4.6.1 - version: 4.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 4.6.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-i18next: specifier: ^15.1.0 - version: 15.6.0(i18next@23.16.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 15.6.0(i18next@23.16.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.8.3) react-infinite-scroll-component: specifier: ^6.1.0 - version: 6.1.0(react@19.1.0) + version: 6.1.0(react@19.1.1) react-markdown: specifier: ^9.0.1 - version: 9.1.0(@types/react@19.1.8)(react@19.1.0) + version: 9.1.0(@types/react@19.1.11)(react@19.1.1) react-multi-email: specifier: ^1.0.25 - version: 1.0.25(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.0.25(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-papaparse: specifier: ^4.4.0 version: 4.4.0 react-pdf-highlighter: specifier: ^8.0.0-rc.0 - version: 8.0.0-rc.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 8.0.0-rc.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-slider: specifier: ^2.0.6 - version: 2.0.6(react@19.1.0) + 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.0(react@19.1.0))(react@19.1.0)(sortablejs@1.15.6) + 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) react-syntax-highlighter: specifier: ^15.6.1 - version: 15.6.1(react@19.1.0) + version: 15.6.1(react@19.1.1) react-textarea-autosize: specifier: ^8.5.8 - version: 8.5.9(@types/react@19.1.8)(react@19.1.0) + version: 8.5.9(@types/react@19.1.11)(react@19.1.1) react-tooltip: specifier: 5.8.3 - version: 5.8.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 5.8.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-window: specifier: ^1.8.10 - version: 1.8.11(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.8.11(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-window-infinite-loader: specifier: ^1.0.9 - version: 1.0.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.0.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1) reactflow: specifier: ^11.11.3 - version: 11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 11.11.4(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) recordrtc: specifier: ^5.6.2 version: 5.6.2 @@ -350,7 +350,7 @@ importers: version: 1.15.6 swr: specifier: ^2.3.0 - version: 2.3.4(react@19.1.0) + version: 2.3.4(react@19.1.1) tailwind-merge: specifier: ^2.5.4 version: 2.6.0 @@ -359,7 +359,7 @@ importers: version: 7.0.10 use-context-selector: specifier: ^2.0.0 - version: 2.0.0(react@19.1.0)(scheduler@0.23.2) + version: 2.0.0(react@19.1.1)(scheduler@0.23.2) uuid: specifier: ^10.0.0 version: 10.0.0 @@ -368,17 +368,17 @@ importers: version: 3.25.76 zundo: specifier: ^2.1.0 - version: 2.3.0(zustand@4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0)) + version: 2.3.0(zustand@4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1)) zustand: specifier: ^4.5.2 - version: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0) + version: 4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1) devDependencies: '@antfu/eslint-config': specifier: ^5.0.0 - version: 5.0.0(@eslint-react/eslint-plugin@1.52.3(eslint@9.32.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3))(@next/eslint-plugin-next@15.4.5)(@vue/compiler-sfc@3.5.17)(eslint-plugin-react-hooks@5.2.0(eslint@9.32.0(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.20(eslint@9.32.0(jiti@1.21.7)))(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) + version: 5.0.0(@eslint-react/eslint-plugin@1.52.3(eslint@9.32.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3))(@next/eslint-plugin-next@15.5.0)(@vue/compiler-sfc@3.5.17)(eslint-plugin-react-hooks@5.2.0(eslint@9.32.0(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.20(eslint@9.32.0(jiti@1.21.7)))(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) '@chromatic-com/storybook': specifier: ^3.1.0 - version: 3.2.7(react@19.1.0)(storybook@8.5.0) + version: 3.2.7(react@19.1.1)(storybook@8.5.0) '@eslint-react/eslint-plugin': specifier: ^1.15.0 version: 1.52.3(eslint@9.32.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3) @@ -399,28 +399,28 @@ importers: version: 3.1.0(acorn@8.15.0)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) '@mdx-js/react': specifier: ^3.1.0 - version: 3.1.0(@types/react@19.1.8)(react@19.1.0) + version: 3.1.0(@types/react@19.1.11)(react@19.1.1) '@next/bundle-analyzer': - specifier: ^15.4.1 - version: 15.4.1 + specifier: 15.5.0 + version: 15.5.0 '@next/eslint-plugin-next': - specifier: ~15.4.5 - version: 15.4.5 + specifier: 15.5.0 + version: 15.5.0 '@next/mdx': - specifier: ~15.3.5 - version: 15.3.5(@mdx-js/loader@3.1.0(acorn@8.15.0)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0)) + specifier: 15.5.0 + version: 15.5.0(@mdx-js/loader@3.1.0(acorn@8.15.0)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.0(@types/react@19.1.11)(react@19.1.1)) '@rgrove/parse-xml': specifier: ^4.1.0 version: 4.2.0 '@storybook/addon-essentials': specifier: 8.5.0 - version: 8.5.0(@types/react@19.1.8)(storybook@8.5.0) + version: 8.5.0(@types/react@19.1.11)(storybook@8.5.0) '@storybook/addon-interactions': specifier: 8.5.0 version: 8.5.0(storybook@8.5.0) '@storybook/addon-links': specifier: 8.5.0 - version: 8.5.0(react@19.1.0)(storybook@8.5.0) + version: 8.5.0(react@19.1.1)(storybook@8.5.0) '@storybook/addon-onboarding': specifier: 8.5.0 version: 8.5.0(storybook@8.5.0) @@ -429,13 +429,13 @@ importers: version: 8.5.0(storybook@8.5.0) '@storybook/blocks': specifier: 8.5.0 - version: 8.5.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0) + version: 8.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0) '@storybook/nextjs': specifier: 8.5.0 - version: 8.5.0(esbuild@0.25.0)(next@15.3.5(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.89.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.89.2)(storybook@8.5.0)(type-fest@2.19.0)(typescript@5.8.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) + version: 8.5.0(esbuild@0.25.0)(next@15.5.0(@babel/core@7.28.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.89.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.89.2)(storybook@8.5.0)(type-fest@2.19.0)(typescript@5.8.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) '@storybook/react': specifier: 8.5.0 - version: 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0)(typescript@5.8.3) + version: 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0)(typescript@5.8.3) '@storybook/test': specifier: 8.5.0 version: 8.5.0(storybook@8.5.0) @@ -447,7 +447,7 @@ importers: version: 6.6.3 '@testing-library/react': specifier: ^16.0.1 - version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@types/crypto-js': specifier: ^4.2.2 version: 4.2.2 @@ -473,11 +473,11 @@ importers: specifier: ^6.9.16 version: 6.14.0 '@types/react': - specifier: ~19.1.8 - version: 19.1.8 + specifier: 19.1.11 + version: 19.1.11 '@types/react-dom': - specifier: ~19.1.6 - version: 19.1.6(@types/react@19.1.8) + specifier: 19.1.7 + version: 19.1.7(@types/react@19.1.11) '@types/react-slider': specifier: ^1.3.6 version: 1.3.6 @@ -518,8 +518,8 @@ importers: specifier: ^9.32.0 version: 9.32.0(jiti@1.21.7) eslint-config-next: - specifier: ~15.4.5 - version: 15.4.5(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) + specifier: 15.5.0 + version: 15.5.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) eslint-plugin-oxlint: specifier: ^1.6.0 version: 1.6.0 @@ -2089,7 +2089,7 @@ packages: '@mdx-js/react@3.1.0': resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: '>=16' '@mermaid-js/parser@0.3.0': @@ -2108,17 +2108,17 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@next/bundle-analyzer@15.4.1': - resolution: {integrity: sha512-O5R3iPLR3/oQWFIXl+Mnd02IyhvWBterTlXcceIGw29QHWL/gjvyO0eIVEvrJPS7zzE6/NSu1TiSVgi8mxotlw==} + '@next/bundle-analyzer@15.5.0': + resolution: {integrity: sha512-6pSHKzl4lcxqgmdNGXeVShYBBJuJkgXIx8cP15XtdzPtFn/ZllDI8b/2OqtU0HDPcsq53yMq1hjUBze1GoSKXQ==} - '@next/env@15.3.5': - resolution: {integrity: sha512-7g06v8BUVtN2njAX/r8gheoVffhiKFVt4nx74Tt6G4Hqw9HCLYQVx/GkH2qHvPtAHZaUNZ0VXAa0pQP6v1wk7g==} + '@next/env@15.5.0': + resolution: {integrity: sha512-sDaprBAfzCQiOgo2pO+LhnV0Wt2wBgartjrr+dpcTORYVnnXD0gwhHhiiyIih9hQbq+JnbqH4odgcFWhqCGidw==} - '@next/eslint-plugin-next@15.4.5': - resolution: {integrity: sha512-YhbrlbEt0m4jJnXHMY/cCUDBAWgd5SaTa5mJjzOt82QwflAFfW/h3+COp2TfVSzhmscIZ5sg2WXt3MLziqCSCw==} + '@next/eslint-plugin-next@15.5.0': + resolution: {integrity: sha512-+k83U/fST66eQBjTltX2T9qUYd43ntAe+NZ5qeZVTQyTiFiHvTLtkpLKug4AnZAtuI/lwz5tl/4QDJymjVkybg==} - '@next/mdx@15.3.5': - resolution: {integrity: sha512-/2rRCgPKNp2ttQscU13auI+cYYACdPa80Okgi/1+NNJJeWn9yVxwGnqZc3SX30T889bZbLqcY4oUjqYGAygL4g==} + '@next/mdx@15.5.0': + resolution: {integrity: sha512-TxfWpIDHx9Xy/GgZwegrl+HxjzeQml0bTclxX72SqJLi83IhJaFiglQbfMTotB2hDRbxCGKpPYh0X20+r1Trtw==} peerDependencies: '@mdx-js/loader': '>=0.15.0' '@mdx-js/react': '>=0.15.0' @@ -2128,50 +2128,50 @@ packages: '@mdx-js/react': optional: true - '@next/swc-darwin-arm64@15.3.5': - resolution: {integrity: sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w==} + '@next/swc-darwin-arm64@15.5.0': + resolution: {integrity: sha512-v7Jj9iqC6enxIRBIScD/o0lH7QKvSxq2LM8UTyqJi+S2w2QzhMYjven4vgu/RzgsdtdbpkyCxBTzHl/gN5rTRg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.3.5': - resolution: {integrity: sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA==} + '@next/swc-darwin-x64@15.5.0': + resolution: {integrity: sha512-s2Nk6ec+pmYmAb/utawuURy7uvyYKDk+TRE5aqLRsdnj3AhwC9IKUBmhfnLmY/+P+DnwqpeXEFIKe9tlG0p6CA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.3.5': - resolution: {integrity: sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ==} + '@next/swc-linux-arm64-gnu@15.5.0': + resolution: {integrity: sha512-mGlPJMZReU4yP5fSHjOxiTYvZmwPSWn/eF/dcg21pwfmiUCKS1amFvf1F1RkLHPIMPfocxLViNWFvkvDB14Isg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.3.5': - resolution: {integrity: sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A==} + '@next/swc-linux-arm64-musl@15.5.0': + resolution: {integrity: sha512-biWqIOE17OW/6S34t1X8K/3vb1+svp5ji5QQT/IKR+VfM3B7GvlCwmz5XtlEan2ukOUf9tj2vJJBffaGH4fGRw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.3.5': - resolution: {integrity: sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A==} + '@next/swc-linux-x64-gnu@15.5.0': + resolution: {integrity: sha512-zPisT+obYypM/l6EZ0yRkK3LEuoZqHaSoYKj+5jiD9ESHwdr6QhnabnNxYkdy34uCigNlWIaCbjFmQ8FY5AlxA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.3.5': - resolution: {integrity: sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg==} + '@next/swc-linux-x64-musl@15.5.0': + resolution: {integrity: sha512-+t3+7GoU9IYmk+N+FHKBNFdahaReoAktdOpXHFIPOU1ixxtdge26NgQEEkJkCw2dHT9UwwK5zw4mAsURw4E8jA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.3.5': - resolution: {integrity: sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ==} + '@next/swc-win32-arm64-msvc@15.5.0': + resolution: {integrity: sha512-d8MrXKh0A+c9DLiy1BUFwtg3Hu90Lucj3k6iKTUdPOv42Ve2UiIG8HYi3UAb8kFVluXxEfdpCoPPCSODk5fDcw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.5': - resolution: {integrity: sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw==} + '@next/swc-win32-x64-msvc@15.5.0': + resolution: {integrity: sha512-Fe1tGHxOWEyQjmygWkkXSwhFcTJuimrNu52JEuwItrKJVV4iRjbWp9I7zZjwqtiNnQmxoEvoisn8wueFLrNpvQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2480,7 +2480,7 @@ packages: '@radix-ui/react-compose-refs@1.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2489,7 +2489,7 @@ packages: '@radix-ui/react-context@1.1.2': resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2498,8 +2498,8 @@ packages: '@radix-ui/react-dialog@1.1.14': resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} peerDependencies: - '@types/react': ~19.1.8 - '@types/react-dom': ~19.1.6 + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7 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: @@ -2511,8 +2511,8 @@ packages: '@radix-ui/react-dismissable-layer@1.1.10': resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} peerDependencies: - '@types/react': ~19.1.8 - '@types/react-dom': ~19.1.6 + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7 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: @@ -2524,7 +2524,7 @@ packages: '@radix-ui/react-focus-guards@1.1.2': resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2533,8 +2533,8 @@ packages: '@radix-ui/react-focus-scope@1.1.7': resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: - '@types/react': ~19.1.8 - '@types/react-dom': ~19.1.6 + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7 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: @@ -2546,7 +2546,7 @@ packages: '@radix-ui/react-id@1.1.1': resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2555,8 +2555,8 @@ packages: '@radix-ui/react-portal@1.1.9': resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: - '@types/react': ~19.1.8 - '@types/react-dom': ~19.1.6 + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7 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: @@ -2568,8 +2568,8 @@ packages: '@radix-ui/react-presence@1.1.4': resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} peerDependencies: - '@types/react': ~19.1.8 - '@types/react-dom': ~19.1.6 + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7 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: @@ -2581,8 +2581,8 @@ packages: '@radix-ui/react-primitive@2.1.3': resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: - '@types/react': ~19.1.8 - '@types/react-dom': ~19.1.6 + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7 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: @@ -2594,7 +2594,7 @@ packages: '@radix-ui/react-slot@1.2.3': resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2603,7 +2603,7 @@ packages: '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2612,7 +2612,7 @@ packages: '@radix-ui/react-use-controllable-state@1.2.2': resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2621,7 +2621,7 @@ packages: '@radix-ui/react-use-effect-event@0.0.2': resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2630,7 +2630,7 @@ packages: '@radix-ui/react-use-escape-keydown@1.1.1': resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -2639,7 +2639,7 @@ packages: '@radix-ui/react-use-layout-effect@1.1.1': resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -3001,9 +3001,6 @@ packages: '@svgdotjs/svg.js@3.2.4': resolution: {integrity: sha512-BjJ/7vWNowlX3Z8O4ywT58DqbNRyYlkk6Yz/D13aB7hGmfQTvGX4Tkgtm/ApYlu9M7lCQi15xUEidqMUmdMYwg==} - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} @@ -3086,8 +3083,8 @@ packages: engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 - '@types/react': ~19.1.8 - '@types/react-dom': ~19.1.6 + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7 react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: @@ -3327,10 +3324,10 @@ packages: '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} - '@types/react-dom@19.1.6': - resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==} + '@types/react-dom@19.1.7': + resolution: {integrity: sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 '@types/react-slider@1.3.6': resolution: {integrity: sha512-RS8XN5O159YQ6tu3tGZIQz1/9StMLTg/FCIPxwqh2gwVixJnlfIodtVx+fpXVMZHe7A58lAX1Q4XTgAGOQaCQg==} @@ -3344,8 +3341,8 @@ packages: '@types/react-window@1.8.8': resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} - '@types/react@19.1.8': - resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} + '@types/react@19.1.11': + resolution: {integrity: sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==} '@types/recordrtc@5.6.14': resolution: {integrity: sha512-Reiy1sl11xP0r6w8DW3iQjc1BgXFyNC7aDuutysIjpFoqyftbQps9xPA2FoBkfVXpJM61betgYPNt+v65zvMhA==} @@ -4018,10 +4015,6 @@ packages: builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -4876,8 +4869,8 @@ packages: peerDependencies: eslint: ^9.5.0 - eslint-config-next@15.4.5: - resolution: {integrity: sha512-IMijiXaZ43qFB+Gcpnb374ipTKD8JIyVNR+6VsifFQ/LHyx+A9wgcgSIhCX5PYSjwOoSYD5LtNHKlM5uc23eww==} + eslint-config-next@15.5.0: + resolution: {integrity: sha512-Yl4hlOdBqstAuHnlBfx2RimBzWQwysM2SJNu5EzYVa2qS2ItPs7lgxL0sJJDudEx5ZZHfWPZ/6U8+FtDFWs7/w==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' @@ -6609,13 +6602,13 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.3.5: - resolution: {integrity: sha512-RkazLBMMDJSJ4XZQ81kolSpwiCt907l0xcgcpF4xC2Vml6QVcPNXW0NQRwQ80FFtSn7UM52XN0anaw8TEJXaiw==} + next@15.5.0: + resolution: {integrity: sha512-N1lp9Hatw3a9XLt0307lGB4uTKsXDhyOKQo7uYMzX4i0nF/c27grcGXkLdb7VcT8QPYLBa8ouIyEoUQJ2OyeNQ==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 + '@playwright/test': ^1.51.1 babel-plugin-react-compiler: '*' react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 @@ -7154,10 +7147,10 @@ packages: peerDependencies: react: ^18.3.1 - react-dom@19.1.0: - resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + react-dom@19.1.1: + resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} peerDependencies: - react: ^19.1.0 + react: ^19.1.1 react-draggable@4.4.6: resolution: {integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==} @@ -7236,7 +7229,7 @@ packages: react-markdown@9.1.0: resolution: {integrity: sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: '>=18' react-multi-email@1.0.25: @@ -7263,7 +7256,7 @@ packages: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': @@ -7273,7 +7266,7 @@ packages: resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} engines: {node: '>=10'} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -7302,7 +7295,7 @@ packages: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -7343,8 +7336,8 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + react@19.1.1: + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} reactflow@11.11.4: @@ -7752,10 +7745,6 @@ packages: stream-http@3.2.0: resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -8184,7 +8173,7 @@ packages: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -8227,7 +8216,7 @@ packages: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -8499,7 +8488,7 @@ packages: resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} engines: {node: '>=12.7.0'} peerDependencies: - '@types/react': ~19.1.8 + '@types/react': 19.1.11 immer: '>=9.0.6' react: '>=16.8' peerDependenciesMeta: @@ -8524,7 +8513,7 @@ snapshots: '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 - '@antfu/eslint-config@5.0.0(@eslint-react/eslint-plugin@1.52.3(eslint@9.32.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3))(@next/eslint-plugin-next@15.4.5)(@vue/compiler-sfc@3.5.17)(eslint-plugin-react-hooks@5.2.0(eslint@9.32.0(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.20(eslint@9.32.0(jiti@1.21.7)))(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3)': + '@antfu/eslint-config@5.0.0(@eslint-react/eslint-plugin@1.52.3(eslint@9.32.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3))(@next/eslint-plugin-next@15.5.0)(@vue/compiler-sfc@3.5.17)(eslint-plugin-react-hooks@5.2.0(eslint@9.32.0(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.20(eslint@9.32.0(jiti@1.21.7)))(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@antfu/install-pkg': 1.1.0 '@clack/prompts': 0.11.0 @@ -8565,7 +8554,7 @@ snapshots: yaml-eslint-parser: 1.3.0 optionalDependencies: '@eslint-react/eslint-plugin': 1.52.3(eslint@9.32.0(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.8.3))(typescript@5.8.3) - '@next/eslint-plugin-next': 15.4.5 + '@next/eslint-plugin-next': 15.5.0 eslint-plugin-react-hooks: 5.2.0(eslint@9.32.0(jiti@1.21.7)) eslint-plugin-react-refresh: 0.4.20(eslint@9.32.0(jiti@1.21.7)) transitivePeerDependencies: @@ -9417,12 +9406,12 @@ snapshots: '@chevrotain/utils@11.0.3': {} - '@chromatic-com/storybook@3.2.7(react@19.1.0)(storybook@8.5.0)': + '@chromatic-com/storybook@3.2.7(react@19.1.1)(storybook@8.5.0)': dependencies: chromatic: 11.29.0 filesize: 10.1.6 jsonfile: 6.1.0 - react-confetti: 6.4.0(react@19.1.0) + react-confetti: 6.4.0(react@19.1.1) storybook: 8.5.0 strip-ansi: 7.1.0 transitivePeerDependencies: @@ -9738,18 +9727,18 @@ snapshots: '@floating-ui/core': 1.7.2 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react-dom@2.1.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@floating-ui/dom': 1.7.2 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - '@floating-ui/react@0.26.28(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react@0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@floating-ui/react-dom': 2.1.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@floating-ui/react-dom': 2.1.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@floating-ui/utils': 0.2.10 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) tabbable: 6.2.0 '@floating-ui/utils@0.2.10': {} @@ -9767,22 +9756,22 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - '@headlessui/react@2.2.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@headlessui/react@2.2.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@floating-ui/react': 0.26.28(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-aria/focus': 3.20.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-aria/interactions': 3.25.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/react-virtual': 3.13.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@floating-ui/react': 0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/focus': 3.20.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tanstack/react-virtual': 3.13.12(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) - '@heroicons/react@2.2.0(react@19.1.0)': + '@heroicons/react@2.2.0(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 - '@hookform/resolvers@3.10.0(react-hook-form@7.60.0(react@19.1.0))': + '@hookform/resolvers@3.10.0(react-hook-form@7.60.0(react@19.1.1))': dependencies: - react-hook-form: 7.60.0(react@19.1.0) + react-hook-form: 7.60.0(react@19.1.1) '@humanfs/core@0.19.1': {} @@ -10192,7 +10181,7 @@ snapshots: lexical: 0.30.0 prismjs: 1.30.0 - '@lexical/devtools-core@0.30.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@lexical/devtools-core@0.30.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@lexical/html': 0.30.0 '@lexical/link': 0.30.0 @@ -10200,8 +10189,8 @@ snapshots: '@lexical/table': 0.30.0 '@lexical/utils': 0.30.0 lexical: 0.30.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) '@lexical/dragon@0.30.0': dependencies: @@ -10264,9 +10253,9 @@ snapshots: '@lexical/utils': 0.30.0 lexical: 0.30.0 - '@lexical/react@0.30.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(yjs@13.6.27)': + '@lexical/react@0.30.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(yjs@13.6.27)': dependencies: - '@lexical/devtools-core': 0.30.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@lexical/devtools-core': 0.30.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@lexical/dragon': 0.30.0 '@lexical/hashtag': 0.30.0 '@lexical/history': 0.30.0 @@ -10282,9 +10271,9 @@ snapshots: '@lexical/utils': 0.30.0 '@lexical/yjs': 0.30.0(yjs@13.6.27) lexical: 0.30.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-error-boundary: 3.1.4(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-error-boundary: 3.1.4(react@19.1.1) transitivePeerDependencies: - yjs @@ -10379,17 +10368,17 @@ snapshots: - acorn - supports-color - '@mdx-js/react@3.1.0(@types/react@19.1.8)(react@18.3.1)': + '@mdx-js/react@3.1.0(@types/react@19.1.11)(react@18.3.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.1.8 + '@types/react': 19.1.11 react: 18.3.1 - '@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0)': + '@mdx-js/react@3.1.0(@types/react@19.1.11)(react@19.1.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.1.8 - react: 19.1.0 + '@types/react': 19.1.11 + react: 19.1.1 '@mermaid-js/parser@0.3.0': dependencies: @@ -10399,12 +10388,12 @@ snapshots: dependencies: state-local: 1.0.7 - '@monaco-editor/react@4.7.0(monaco-editor@0.52.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@monaco-editor/react@4.7.0(monaco-editor@0.52.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@monaco-editor/loader': 1.5.0 monaco-editor: 0.52.2 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) '@napi-rs/wasm-runtime@0.2.12': dependencies: @@ -10413,48 +10402,48 @@ snapshots: '@tybys/wasm-util': 0.10.0 optional: true - '@next/bundle-analyzer@15.4.1': + '@next/bundle-analyzer@15.5.0': dependencies: webpack-bundle-analyzer: 4.10.1 transitivePeerDependencies: - bufferutil - utf-8-validate - '@next/env@15.3.5': {} + '@next/env@15.5.0': {} - '@next/eslint-plugin-next@15.4.5': + '@next/eslint-plugin-next@15.5.0': dependencies: fast-glob: 3.3.1 - '@next/mdx@15.3.5(@mdx-js/loader@3.1.0(acorn@8.15.0)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.1.0))': + '@next/mdx@15.5.0(@mdx-js/loader@3.1.0(acorn@8.15.0)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.0(@types/react@19.1.11)(react@19.1.1))': dependencies: source-map: 0.7.4 optionalDependencies: '@mdx-js/loader': 3.1.0(acorn@8.15.0)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) - '@mdx-js/react': 3.1.0(@types/react@19.1.8)(react@19.1.0) + '@mdx-js/react': 3.1.0(@types/react@19.1.11)(react@19.1.1) - '@next/swc-darwin-arm64@15.3.5': + '@next/swc-darwin-arm64@15.5.0': optional: true - '@next/swc-darwin-x64@15.3.5': + '@next/swc-darwin-x64@15.5.0': optional: true - '@next/swc-linux-arm64-gnu@15.3.5': + '@next/swc-linux-arm64-gnu@15.5.0': optional: true - '@next/swc-linux-arm64-musl@15.3.5': + '@next/swc-linux-arm64-musl@15.5.0': optional: true - '@next/swc-linux-x64-gnu@15.3.5': + '@next/swc-linux-x64-gnu@15.5.0': optional: true - '@next/swc-linux-x64-musl@15.3.5': + '@next/swc-linux-x64-musl@15.5.0': optional: true - '@next/swc-win32-arm64-msvc@15.3.5': + '@next/swc-win32-arm64-msvc@15.5.0': optional: true - '@next/swc-win32-x64-msvc@15.3.5': + '@next/swc-win32-x64-msvc@15.5.0': optional: true '@nodelib/fs.scandir@2.1.5': @@ -10713,219 +10702,219 @@ snapshots: '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.11)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-context@1.1.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-context@1.1.2(@types/react@19.1.11)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-dialog@1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dialog@1.1.14(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.11)(react@19.1.1) aria-hidden: 1.2.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.11)(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7(@types/react@19.1.11) - '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7(@types/react@19.1.11) - '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.11)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7(@types/react@19.1.11) - '@radix-ui/react-id@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.1.11)(react@19.1.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7(@types/react@19.1.11) - '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7(@types/react@19.1.11) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7(@types/react@19.1.11) - '@radix-ui/react-slot@1.2.3(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-slot@1.2.3(@types/react@19.1.11)(react@19.1.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.11)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.11)(react@19.1.1)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.11)(react@19.1.1)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.11)(react@19.1.1)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.11)(react@19.1.1) + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.11)(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@react-aria/focus@3.20.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@react-aria/focus@3.20.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@react-aria/interactions': 3.25.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-aria/utils': 3.29.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@react-types/shared': 3.30.0(react@19.1.0) + '@react-aria/interactions': 3.25.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.30.0(react@19.1.1) '@swc/helpers': 0.5.17 clsx: 2.1.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - '@react-aria/interactions@3.25.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@react-aria/interactions@3.25.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@react-aria/ssr': 3.9.9(react@19.1.0) - '@react-aria/utils': 3.29.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-aria/ssr': 3.9.9(react@19.1.1) + '@react-aria/utils': 3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@react-stately/flags': 3.1.2 - '@react-types/shared': 3.30.0(react@19.1.0) + '@react-types/shared': 3.30.0(react@19.1.1) '@swc/helpers': 0.5.17 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - '@react-aria/ssr@3.9.9(react@19.1.0)': + '@react-aria/ssr@3.9.9(react@19.1.1)': dependencies: '@swc/helpers': 0.5.17 - react: 19.1.0 + react: 19.1.1 - '@react-aria/utils@3.29.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@react-aria/utils@3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@react-aria/ssr': 3.9.9(react@19.1.0) + '@react-aria/ssr': 3.9.9(react@19.1.1) '@react-stately/flags': 3.1.2 - '@react-stately/utils': 3.10.7(react@19.1.0) - '@react-types/shared': 3.30.0(react@19.1.0) + '@react-stately/utils': 3.10.7(react@19.1.1) + '@react-types/shared': 3.30.0(react@19.1.1) '@swc/helpers': 0.5.17 clsx: 2.1.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) '@react-stately/flags@3.1.2': dependencies: '@swc/helpers': 0.5.17 - '@react-stately/utils@3.10.7(react@19.1.0)': + '@react-stately/utils@3.10.7(react@19.1.1)': dependencies: '@swc/helpers': 0.5.17 - react: 19.1.0 + react: 19.1.1 - '@react-types/shared@3.30.0(react@19.1.0)': + '@react-types/shared@3.30.0(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 - '@reactflow/background@11.3.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@reactflow/background@11.3.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@reactflow/core': 11.11.4(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) classcat: 5.0.5 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - zustand: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/controls@11.2.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@reactflow/controls@11.2.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@reactflow/core': 11.11.4(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) classcat: 5.0.5 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - zustand: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/core@11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@reactflow/core@11.11.4(@types/react@19.1.11)(immer@9.0.21)(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 @@ -10935,55 +10924,55 @@ snapshots: d3-drag: 3.0.0 d3-selection: 3.0.0 d3-zoom: 3.0.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - zustand: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/minimap@11.7.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@reactflow/minimap@11.7.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@reactflow/core': 11.11.4(@types/react@19.1.11)(immer@9.0.21)(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 d3-selection: 3.0.0 d3-zoom: 3.0.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - zustand: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/node-resizer@2.2.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@reactflow/node-resizer@2.2.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@reactflow/core': 11.11.4(@types/react@19.1.11)(immer@9.0.21)(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.0 - react-dom: 19.1.0(react@19.1.0) - zustand: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@reactflow/node-toolbar@1.3.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@reactflow/node-toolbar@1.3.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@reactflow/core': 11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@reactflow/core': 11.11.4(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) classcat: 5.0.5 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - zustand: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + zustand: 4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1) transitivePeerDependencies: - '@types/react' - immer - '@remixicon/react@4.6.0(react@19.1.0)': + '@remixicon/react@4.6.0(react@19.1.1)': dependencies: - react: 19.1.0 + react: 19.1.1 '@rgrove/parse-xml@4.2.0': {} @@ -11019,12 +11008,12 @@ snapshots: '@sentry/core@8.55.0': {} - '@sentry/react@8.55.0(react@19.1.0)': + '@sentry/react@8.55.0(react@19.1.1)': dependencies: '@sentry/browser': 8.55.0 '@sentry/core': 8.55.0 hoist-non-react-statics: 3.3.2 - react: 19.1.0 + react: 19.1.1 '@sentry/utils@8.55.0': dependencies: @@ -11065,9 +11054,9 @@ snapshots: storybook: 8.5.0 ts-dedent: 2.2.0 - '@storybook/addon-docs@8.5.0(@types/react@19.1.8)(storybook@8.5.0)': + '@storybook/addon-docs@8.5.0(@types/react@19.1.11)(storybook@8.5.0)': dependencies: - '@mdx-js/react': 3.1.0(@types/react@19.1.8)(react@18.3.1) + '@mdx-js/react': 3.1.0(@types/react@19.1.11)(react@18.3.1) '@storybook/blocks': 8.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0) '@storybook/csf-plugin': 8.5.0(storybook@8.5.0) '@storybook/react-dom-shim': 8.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.0) @@ -11078,12 +11067,12 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.5.0(@types/react@19.1.8)(storybook@8.5.0)': + '@storybook/addon-essentials@8.5.0(@types/react@19.1.11)(storybook@8.5.0)': dependencies: '@storybook/addon-actions': 8.5.0(storybook@8.5.0) '@storybook/addon-backgrounds': 8.5.0(storybook@8.5.0) '@storybook/addon-controls': 8.5.0(storybook@8.5.0) - '@storybook/addon-docs': 8.5.0(@types/react@19.1.8)(storybook@8.5.0) + '@storybook/addon-docs': 8.5.0(@types/react@19.1.11)(storybook@8.5.0) '@storybook/addon-highlight': 8.5.0(storybook@8.5.0) '@storybook/addon-measure': 8.5.0(storybook@8.5.0) '@storybook/addon-outline': 8.5.0(storybook@8.5.0) @@ -11108,14 +11097,14 @@ snapshots: storybook: 8.5.0 ts-dedent: 2.2.0 - '@storybook/addon-links@8.5.0(react@19.1.0)(storybook@8.5.0)': + '@storybook/addon-links@8.5.0(react@19.1.1)(storybook@8.5.0)': dependencies: '@storybook/csf': 0.1.12 '@storybook/global': 5.0.0 storybook: 8.5.0 ts-dedent: 2.2.0 optionalDependencies: - react: 19.1.0 + react: 19.1.1 '@storybook/addon-measure@8.5.0(storybook@8.5.0)': dependencies: @@ -11157,15 +11146,15 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/blocks@8.5.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0)': + '@storybook/blocks@8.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0)': dependencies: '@storybook/csf': 0.1.12 - '@storybook/icons': 1.4.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@storybook/icons': 1.4.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) storybook: 8.5.0 ts-dedent: 2.2.0 optionalDependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) '@storybook/builder-webpack5@8.5.0(esbuild@0.25.0)(storybook@8.5.0)(typescript@5.8.3)(uglify-js@3.19.3)': dependencies: @@ -11246,10 +11235,10 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/icons@1.4.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@storybook/icons@1.4.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) '@storybook/instrumenter@8.5.0(storybook@8.5.0)': dependencies: @@ -11261,7 +11250,7 @@ snapshots: dependencies: storybook: 8.5.0 - '@storybook/nextjs@8.5.0(esbuild@0.25.0)(next@15.3.5(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.89.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.89.2)(storybook@8.5.0)(type-fest@2.19.0)(typescript@5.8.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3))': + '@storybook/nextjs@8.5.0(esbuild@0.25.0)(next@15.5.0(@babel/core@7.28.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.89.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.89.2)(storybook@8.5.0)(type-fest@2.19.0)(typescript@5.8.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) @@ -11278,8 +11267,8 @@ snapshots: '@babel/runtime': 7.27.6 '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-hot-middleware@2.26.1)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) '@storybook/builder-webpack5': 8.5.0(esbuild@0.25.0)(storybook@8.5.0)(typescript@5.8.3)(uglify-js@3.19.3) - '@storybook/preset-react-webpack': 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(esbuild@0.25.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0)(typescript@5.8.3)(uglify-js@3.19.3) - '@storybook/react': 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0)(typescript@5.8.3) + '@storybook/preset-react-webpack': 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(esbuild@0.25.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0)(typescript@5.8.3)(uglify-js@3.19.3) + '@storybook/react': 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0)(typescript@5.8.3) '@storybook/test': 8.5.0(storybook@8.5.0) '@types/semver': 7.7.0 babel-loader: 9.2.1(@babel/core@7.28.0)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) @@ -11287,20 +11276,20 @@ snapshots: find-up: 5.0.0 image-size: 1.2.1 loader-utils: 3.3.1 - next: 15.3.5(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.89.2) + next: 15.5.0(@babel/core@7.28.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.89.2) node-polyfill-webpack-plugin: 2.0.1(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) pnp-webpack-plugin: 1.7.0(typescript@5.8.3) postcss: 8.5.6 postcss-loader: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + 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: 14.2.1(sass@1.89.2)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) semver: 7.7.2 storybook: 8.5.0 style-loader: 3.3.4(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) - styled-jsx: 5.1.7(@babel/core@7.28.0)(react@19.1.0) + styled-jsx: 5.1.7(@babel/core@7.28.0)(react@19.1.1) ts-dedent: 2.2.0 tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.2.0 @@ -11326,17 +11315,17 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(esbuild@0.25.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0)(typescript@5.8.3)(uglify-js@3.19.3)': + '@storybook/preset-react-webpack@8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(esbuild@0.25.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0)(typescript@5.8.3)(uglify-js@3.19.3)': dependencies: '@storybook/core-webpack': 8.5.0(storybook@8.5.0) - '@storybook/react': 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0)(typescript@5.8.3) + '@storybook/react': 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0)(typescript@5.8.3) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.100.2(esbuild@0.25.0)(uglify-js@3.19.3)) '@types/semver': 7.7.0 find-up: 5.0.0 magic-string: 0.30.17 - react: 19.1.0 + react: 19.1.1 react-docgen: 7.1.1 - react-dom: 19.1.0(react@19.1.0) + react-dom: 19.1.1(react@19.1.1) resolve: 1.22.10 semver: 7.7.2 storybook: 8.5.0 @@ -11376,22 +11365,22 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 8.5.0 - '@storybook/react-dom-shim@8.5.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0)': + '@storybook/react-dom-shim@8.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0)': dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) storybook: 8.5.0 - '@storybook/react@8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0)(typescript@5.8.3)': + '@storybook/react@8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0)(typescript@5.8.3)': dependencies: '@storybook/components': 8.5.0(storybook@8.5.0) '@storybook/global': 5.0.0 '@storybook/manager-api': 8.5.0(storybook@8.5.0) '@storybook/preview-api': 8.5.0(storybook@8.5.0) - '@storybook/react-dom-shim': 8.5.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.5.0) + '@storybook/react-dom-shim': 8.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@8.5.0) '@storybook/theming': 8.5.0(storybook@8.5.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) storybook: 8.5.0 optionalDependencies: '@storybook/test': 8.5.0(storybook@8.5.0) @@ -11425,8 +11414,6 @@ snapshots: '@svgdotjs/svg.js@3.2.4': {} - '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 @@ -11455,39 +11442,39 @@ snapshots: '@tanstack/query-devtools@5.81.2': {} - '@tanstack/react-form@1.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-form@1.14.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/form-core': 1.14.0 - '@tanstack/react-store': 0.7.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-store': 0.7.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) decode-formdata: 0.9.0 devalue: 5.1.1 - react: 19.1.0 + react: 19.1.1 transitivePeerDependencies: - react-dom - '@tanstack/react-query-devtools@5.83.0(@tanstack/react-query@5.83.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-query-devtools@5.83.0(@tanstack/react-query@5.83.0(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/query-devtools': 5.81.2 - '@tanstack/react-query': 5.83.0(react@19.1.0) - react: 19.1.0 + '@tanstack/react-query': 5.83.0(react@19.1.1) + react: 19.1.1 - '@tanstack/react-query@5.83.0(react@19.1.0)': + '@tanstack/react-query@5.83.0(react@19.1.1)': dependencies: '@tanstack/query-core': 5.83.0 - react: 19.1.0 + react: 19.1.1 - '@tanstack/react-store@0.7.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-store@0.7.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/store': 0.7.2 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - use-sync-external-store: 1.5.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.1.1) - '@tanstack/react-virtual@3.13.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-virtual@3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@tanstack/virtual-core': 3.13.12 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) '@tanstack/store@0.7.2': {} @@ -11524,15 +11511,15 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@babel/runtime': 7.27.6 '@testing-library/dom': 10.4.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.1.11 + '@types/react-dom': 19.1.7(@types/react@19.1.11) '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: @@ -11795,28 +11782,28 @@ snapshots: '@types/qs@6.14.0': {} - '@types/react-dom@19.1.6(@types/react@19.1.8)': + '@types/react-dom@19.1.7(@types/react@19.1.11)': dependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 '@types/react-slider@1.3.6': dependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 '@types/react-syntax-highlighter@15.5.13': dependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 '@types/react-window-infinite-loader@1.0.9': dependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 '@types/react-window': 1.8.8 '@types/react-window@1.8.8': dependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - '@types/react@19.1.8': + '@types/react@19.1.11': dependencies: csstype: 3.1.3 @@ -12257,15 +12244,15 @@ snapshots: - supports-color optional: true - ahooks@3.9.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + ahooks@3.9.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@babel/runtime': 7.27.6 dayjs: 1.11.13 intersection-observer: 0.12.2 js-cookie: 3.0.5 lodash: 4.17.21 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) react-fast-compare: 3.2.2 resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 @@ -12591,10 +12578,6 @@ snapshots: builtin-status-codes@3.0.0: {} - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - bytes@3.1.2: {} cac@6.7.14: {} @@ -12776,14 +12759,14 @@ snapshots: clsx@2.1.1: {} - cmdk@1.1.1(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + cmdk@1.1.1(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-dialog': 1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-dialog': 1.1.14(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.11)(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.7(@types/react@19.1.11))(@types/react@19.1.11)(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: - '@types/react' - '@types/react-dom' @@ -13333,11 +13316,11 @@ snapshots: duplexer@0.1.2: {} - echarts-for-react@3.0.2(echarts@5.6.0)(react@19.1.0): + echarts-for-react@3.0.2(echarts@5.6.0)(react@19.1.1): dependencies: echarts: 5.6.0 fast-deep-equal: 3.1.3 - react: 19.1.0 + react: 19.1.1 size-sensor: 1.0.2 echarts@5.6.0: @@ -13484,9 +13467,9 @@ snapshots: '@eslint/compat': 1.3.1(eslint@9.32.0(jiti@1.21.7)) eslint: 9.32.0(jiti@1.21.7) - eslint-config-next@15.4.5(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3): + eslint-config-next@15.5.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3): dependencies: - '@next/eslint-plugin-next': 15.4.5 + '@next/eslint-plugin-next': 15.5.0 '@rushstack/eslint-patch': 1.12.0 '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@1.21.7))(typescript@5.8.3) @@ -15990,31 +15973,29 @@ snapshots: neo-async@2.6.2: {} - next-themes@0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next-themes@0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - next@15.3.5(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.89.2): + next@15.5.0(@babel/core@7.28.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.89.2): dependencies: - '@next/env': 15.3.5 - '@swc/counter': 0.1.3 + '@next/env': 15.5.0 '@swc/helpers': 0.5.15 - busboy: 1.6.0 caniuse-lite: 1.0.30001727 postcss: 8.4.31 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(@babel/core@7.28.0)(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + styled-jsx: 5.1.6(@babel/core@7.28.0)(react@19.1.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.3.5 - '@next/swc-darwin-x64': 15.3.5 - '@next/swc-linux-arm64-gnu': 15.3.5 - '@next/swc-linux-arm64-musl': 15.3.5 - '@next/swc-linux-x64-gnu': 15.3.5 - '@next/swc-linux-x64-musl': 15.3.5 - '@next/swc-win32-arm64-msvc': 15.3.5 - '@next/swc-win32-x64-msvc': 15.3.5 + '@next/swc-darwin-arm64': 15.5.0 + '@next/swc-darwin-x64': 15.5.0 + '@next/swc-linux-arm64-gnu': 15.5.0 + '@next/swc-linux-arm64-musl': 15.5.0 + '@next/swc-linux-x64-gnu': 15.5.0 + '@next/swc-linux-x64-musl': 15.5.0 + '@next/swc-win32-arm64-msvc': 15.5.0 + '@next/swc-win32-x64-msvc': 15.5.0 sass: 1.89.2 sharp: 0.34.3 transitivePeerDependencies: @@ -16501,9 +16482,9 @@ snapshots: pure-rand@6.1.0: {} - qrcode.react@4.2.0(react@19.1.0): + qrcode.react@4.2.0(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 qs@6.14.0: dependencies: @@ -16532,19 +16513,19 @@ snapshots: range-parser@1.2.1: {} - re-resizable@6.11.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + re-resizable@6.11.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - react-18-input-autosize@3.0.0(react@19.1.0): + react-18-input-autosize@3.0.0(react@19.1.1): dependencies: prop-types: 15.8.1 - react: 19.1.0 + react: 19.1.1 - react-confetti@6.4.0(react@19.1.0): + react-confetti@6.4.0(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 tween-functions: 1.2.0 react-docgen-typescript@2.4.0(typescript@5.8.3): @@ -16572,64 +16553,64 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-dom@19.1.0(react@19.1.0): + react-dom@19.1.1(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 scheduler: 0.26.0 - react-draggable@4.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-draggable@4.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: clsx: 1.2.1 prop-types: 15.8.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - react-easy-crop@5.5.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-easy-crop@5.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: normalize-wheel: 1.0.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) tslib: 2.8.1 - react-error-boundary@3.1.4(react@19.1.0): + react-error-boundary@3.1.4(react@19.1.1): dependencies: '@babel/runtime': 7.27.6 - react: 19.1.0 + react: 19.1.1 - react-error-boundary@4.1.2(react@19.1.0): + react-error-boundary@4.1.2(react@19.1.1): dependencies: '@babel/runtime': 7.27.6 - react: 19.1.0 + react: 19.1.1 react-fast-compare@3.2.2: {} - react-headless-pagination@1.1.6(react@19.1.0): + react-headless-pagination@1.1.6(react@19.1.1): dependencies: clsx: 2.1.1 - react: 19.1.0 + react: 19.1.1 - react-hook-form@7.60.0(react@19.1.0): + react-hook-form@7.60.0(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 - react-hotkeys-hook@4.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-hotkeys-hook@4.6.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - react-i18next@15.6.0(i18next@23.16.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + react-i18next@15.6.0(i18next@23.16.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.8.3): dependencies: '@babel/runtime': 7.27.6 html-parse-stringify: 3.0.1 i18next: 23.16.8 - react: 19.1.0 + react: 19.1.1 optionalDependencies: - react-dom: 19.1.0(react@19.1.0) + react-dom: 19.1.1(react@19.1.1) typescript: 5.8.3 - react-infinite-scroll-component@6.1.0(react@19.1.0): + react-infinite-scroll-component@6.1.0(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 throttle-debounce: 2.3.0 react-is@16.13.1: {} @@ -16638,16 +16619,16 @@ snapshots: react-is@18.3.1: {} - react-markdown@9.1.0(@types/react@19.1.8)(react@19.1.0): + react-markdown@9.1.0(@types/react@19.1.11)(react@19.1.1): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 19.1.8 + '@types/react': 19.1.11 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 - react: 19.1.0 + react: 19.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 unified: 11.0.5 @@ -16656,22 +16637,22 @@ snapshots: transitivePeerDependencies: - supports-color - react-multi-email@1.0.25(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-multi-email@1.0.25(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) react-papaparse@4.4.0: dependencies: '@types/papaparse': 5.3.16 papaparse: 5.5.3 - react-pdf-highlighter@8.0.0-rc.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-pdf-highlighter@8.0.0-rc.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: pdfjs-dist: 4.4.168 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-rnd: 10.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + react-rnd: 10.5.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) ts-debounce: 4.0.0 transitivePeerDependencies: - encoding @@ -16679,109 +16660,109 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.1.8)(react@19.1.0): + react-remove-scroll-bar@2.3.8(@types/react@19.1.11)(react@19.1.1): dependencies: - react: 19.1.0 - react-style-singleton: 2.2.3(@types/react@19.1.8)(react@19.1.0) + react: 19.1.1 + react-style-singleton: 2.2.3(@types/react@19.1.11)(react@19.1.1) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - react-remove-scroll@2.7.1(@types/react@19.1.8)(react@19.1.0): + react-remove-scroll@2.7.1(@types/react@19.1.11)(react@19.1.1): dependencies: - react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.1.8)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.1.8)(react@19.1.0) + react: 19.1.1 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.11)(react@19.1.1) + react-style-singleton: 2.2.3(@types/react@19.1.11)(react@19.1.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.1.8)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.1.8)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.1.11)(react@19.1.1) + use-sidecar: 1.1.3(@types/react@19.1.11)(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - react-rnd@10.5.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-rnd@10.5.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - re-resizable: 6.11.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-draggable: 4.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + re-resizable: 6.11.2(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) + react-draggable: 4.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) tslib: 2.6.2 - react-slider@2.0.6(react@19.1.0): + react-slider@2.0.6(react@19.1.1): dependencies: prop-types: 15.8.1 - react: 19.1.0 + react: 19.1.1 - react-sortablejs@6.1.4(@types/sortablejs@1.15.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sortablejs@1.15.6): + 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): dependencies: '@types/sortablejs': 1.15.8 classnames: 2.3.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) sortablejs: 1.15.6 tiny-invariant: 1.2.0 - react-style-singleton@2.2.3(@types/react@19.1.8)(react@19.1.0): + react-style-singleton@2.2.3(@types/react@19.1.11)(react@19.1.1): dependencies: get-nonce: 1.0.1 - react: 19.1.0 + react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - react-syntax-highlighter@15.6.1(react@19.1.0): + react-syntax-highlighter@15.6.1(react@19.1.1): dependencies: '@babel/runtime': 7.27.6 highlight.js: 10.7.3 highlightjs-vue: 1.0.0 lowlight: 1.20.0 prismjs: 1.30.0 - react: 19.1.0 + react: 19.1.1 refractor: 3.6.0 - react-textarea-autosize@8.5.9(@types/react@19.1.8)(react@19.1.0): + react-textarea-autosize@8.5.9(@types/react@19.1.11)(react@19.1.1): dependencies: '@babel/runtime': 7.27.6 - react: 19.1.0 - use-composed-ref: 1.4.0(@types/react@19.1.8)(react@19.1.0) - use-latest: 1.3.0(@types/react@19.1.8)(react@19.1.0) + react: 19.1.1 + use-composed-ref: 1.4.0(@types/react@19.1.11)(react@19.1.1) + use-latest: 1.3.0(@types/react@19.1.11)(react@19.1.1) transitivePeerDependencies: - '@types/react' - react-tooltip@5.8.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-tooltip@5.8.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@floating-ui/dom': 1.1.1 classnames: 2.5.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - react-window-infinite-loader@1.0.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-window-infinite-loader@1.0.10(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) - react-window@1.8.11(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-window@1.8.11(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@babel/runtime': 7.27.6 memoize-one: 5.2.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) react@18.3.1: dependencies: loose-envify: 1.4.0 - react@19.1.0: {} + react@19.1.1: {} - reactflow@11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + reactflow@11.11.4(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@reactflow/background': 11.3.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@reactflow/controls': 11.2.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@reactflow/core': 11.11.4(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@reactflow/minimap': 11.7.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@reactflow/node-resizer': 2.2.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@reactflow/node-toolbar': 1.3.14(@types/react@19.1.8)(immer@9.0.21)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@reactflow/background': 11.3.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/controls': 11.2.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/core': 11.11.4(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/minimap': 11.7.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/node-resizer': 2.2.14(@types/react@19.1.11)(immer@9.0.21)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@reactflow/node-toolbar': 1.3.14(@types/react@19.1.11)(immer@9.0.21)(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: - '@types/react' - immer @@ -17307,8 +17288,6 @@ snapshots: readable-stream: 3.6.2 xtend: 4.0.2 - streamsearch@1.1.0: {} - string-argv@0.3.2: {} string-length@4.0.2: @@ -17375,17 +17354,17 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(@babel/core@7.28.0)(react@19.1.0): + styled-jsx@5.1.6(@babel/core@7.28.0)(react@19.1.1): dependencies: client-only: 0.0.1 - react: 19.1.0 + react: 19.1.1 optionalDependencies: '@babel/core': 7.28.0 - styled-jsx@5.1.7(@babel/core@7.28.0)(react@19.1.0): + styled-jsx@5.1.7(@babel/core@7.28.0)(react@19.1.1): dependencies: client-only: 0.0.1 - react: 19.1.0 + react: 19.1.1 optionalDependencies: '@babel/core': 7.28.0 @@ -17411,11 +17390,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swr@2.3.4(react@19.1.0): + swr@2.3.4(react@19.1.1): dependencies: dequal: 2.0.3 - react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) + react: 19.1.1 + use-sync-external-store: 1.5.0(react@19.1.1) synckit@0.11.8: dependencies: @@ -17753,50 +17732,50 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 - use-callback-ref@1.3.3(@types/react@19.1.8)(react@19.1.0): + use-callback-ref@1.3.3(@types/react@19.1.11)(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - use-composed-ref@1.4.0(@types/react@19.1.8)(react@19.1.0): + use-composed-ref@1.4.0(@types/react@19.1.11)(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - use-context-selector@2.0.0(react@19.1.0)(scheduler@0.23.2): + use-context-selector@2.0.0(react@19.1.1)(scheduler@0.23.2): dependencies: - react: 19.1.0 + react: 19.1.1 scheduler: 0.23.2 - use-isomorphic-layout-effect@1.2.1(@types/react@19.1.8)(react@19.1.0): + use-isomorphic-layout-effect@1.2.1(@types/react@19.1.11)(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - use-latest@1.3.0(@types/react@19.1.8)(react@19.1.0): + use-latest@1.3.0(@types/react@19.1.11)(react@19.1.1): dependencies: - react: 19.1.0 - use-isomorphic-layout-effect: 1.2.1(@types/react@19.1.8)(react@19.1.0) + react: 19.1.1 + use-isomorphic-layout-effect: 1.2.1(@types/react@19.1.11)(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 - use-sidecar@1.1.3(@types/react@19.1.8)(react@19.1.0): + use-sidecar@1.1.3(@types/react@19.1.11)(react@19.1.1): dependencies: detect-node-es: 1.1.0 - react: 19.1.0 + react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 use-strict@1.0.1: {} - use-sync-external-store@1.5.0(react@19.1.0): + use-sync-external-store@1.5.0(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 util-deprecate@1.0.2: {} @@ -18067,16 +18046,16 @@ snapshots: dependencies: tslib: 2.3.0 - zundo@2.3.0(zustand@4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0)): + zundo@2.3.0(zustand@4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1)): dependencies: - zustand: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0) + zustand: 4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1) - zustand@4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.1.0): + zustand@4.5.7(@types/react@19.1.11)(immer@9.0.21)(react@19.1.1): dependencies: - use-sync-external-store: 1.5.0(react@19.1.0) + use-sync-external-store: 1.5.0(react@19.1.1) optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.1.11 immer: 9.0.21 - react: 19.1.0 + react: 19.1.1 zwitch@2.0.4: {} diff --git a/web/service/base.ts b/web/service/base.ts index aa6c77716f..33aebf9cfb 100644 --- a/web/service/base.ts +++ b/web/service/base.ts @@ -398,9 +398,7 @@ export const ssePost = async ( .then((res) => { if (!/^[23]\d{2}$/.test(String(res.status))) { if (res.status === 401) { - refreshAccessTokenOrRelogin(TIME_OUT).then(() => { - ssePost(url, fetchOptions, otherOptions) - }).catch(() => { + if (isPublicAPI) { res.json().then((data: any) => { if (isPublicAPI) { if (data.code === 'web_app_access_denied') @@ -417,7 +415,14 @@ export const ssePost = async ( } } }) - }) + } + else { + refreshAccessTokenOrRelogin(TIME_OUT).then(() => { + ssePost(url, fetchOptions, otherOptions) + }).catch((err) => { + console.error(err) + }) + } } else { res.json().then((data) => { diff --git a/web/service/use-share.ts b/web/service/use-share.ts index 63f18bf0e0..6845a2f3c7 100644 --- a/web/service/use-share.ts +++ b/web/service/use-share.ts @@ -1,20 +1,12 @@ -import { useGlobalPublicStore } from '@/context/global-public-context' -import { AccessMode } from '@/models/access-control' import { useQuery } from '@tanstack/react-query' import { fetchAppInfo, fetchAppMeta, fetchAppParams, getAppAccessModeByAppCode } from './share' const NAME_SPACE = 'webapp' export const useGetWebAppAccessModeByCode = (code: string | null) => { - const systemFeatures = useGlobalPublicStore(s => s.systemFeatures) return useQuery({ queryKey: [NAME_SPACE, 'appAccessMode', code], queryFn: () => { - if (systemFeatures.webapp_auth.enabled === false) { - return { - accessMode: AccessMode.PUBLIC, - } - } if (!code || code.length === 0) return Promise.reject(new Error('App code is required to get access mode'))